summaryrefslogtreecommitdiff
path: root/fastimport
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-09-03 23:28:11 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-09-03 23:28:11 +0200
commitd0b2057fdb02668f8562f97a1a1e4925e5c11bfe (patch)
tree7bb2179437a2ba69c4b8ea2924c6cbcb7e2faef7 /fastimport
parent800760bbff11de9e7b3ad8949486fc6ef11e95ce (diff)
downloadpython-fastimport-git-d0b2057fdb02668f8562f97a1a1e4925e5c11bfe.tar.gz
Split python-fastimport into its own separate package.
Diffstat (limited to 'fastimport')
-rw-r--r--fastimport/dates.py2
-rw-r--r--fastimport/errors.py63
-rw-r--r--fastimport/processor.py2
-rw-r--r--fastimport/tests/test_commands.py2
-rw-r--r--fastimport/tests/test_errors.py2
5 files changed, 63 insertions, 8 deletions
diff --git a/fastimport/dates.py b/fastimport/dates.py
index 510ab85..ba484ef 100644
--- a/fastimport/dates.py
+++ b/fastimport/dates.py
@@ -25,7 +25,7 @@ Each routine returns timestamp,timezone where
import time
-from bzrlib.plugins.fastimport.fastimport import errors
+from fastimport import errors
def parse_raw(s, lineno=0):
diff --git a/fastimport/errors.py b/fastimport/errors.py
index 9a71d77..f2d5d88 100644
--- a/fastimport/errors.py
+++ b/fastimport/errors.py
@@ -16,18 +16,73 @@
"""Exception classes for fastimport"""
-from bzrlib import errors as bzr_errors
-
-
# Prefix to messages to show location information
_LOCATION_FMT = "line %(lineno)d: "
+# ImportError is heavily based on BzrError
-class ImportError(bzr_errors.BzrError):
+class ImportError(StandardError):
"""The base exception class for all import processing exceptions."""
_fmt = "Unknown Import Error"
+ def __init__(self, msg=None, **kwds):
+ StandardError.__init__(self)
+ if msg is not None:
+ self._preformatted_string = msg
+ else:
+ self._preformatted_string = None
+ for key, value in kwds.items():
+ setattr(self, key, value)
+
+ def _format(self):
+ s = getattr(self, '_preformatted_string', None)
+ if s is not None:
+ # contains a preformatted message
+ return s
+ try:
+ fmt = self._fmt
+ if fmt:
+ d = dict(self.__dict__)
+ s = fmt % d
+ # __str__() should always return a 'str' object
+ # never a 'unicode' object.
+ return s
+ except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
+ return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
+ % (self.__class__.__name__,
+ self.__dict__,
+ getattr(self, '_fmt', None),
+ e)
+
+ def __unicode__(self):
+ u = self._format()
+ if isinstance(u, str):
+ # Try decoding the str using the default encoding.
+ u = unicode(u)
+ elif not isinstance(u, unicode):
+ # Try to make a unicode object from it, because __unicode__ must
+ # return a unicode object.
+ u = unicode(u)
+ return u
+
+ def __str__(self):
+ s = self._format()
+ if isinstance(s, unicode):
+ s = s.encode('utf8')
+ else:
+ # __str__ must return a str.
+ s = str(s)
+ return s
+
+ def __repr__(self):
+ return '%s(%s)' % (self.__class__.__name__, str(self))
+
+ def __eq__(self, other):
+ if self.__class__ is not other.__class__:
+ return NotImplemented
+ return self.__dict__ == other.__dict__
+
class ParsingError(ImportError):
"""The base exception class for all import processing exceptions."""
diff --git a/fastimport/processor.py b/fastimport/processor.py
index 74f7183..7811a20 100644
--- a/fastimport/processor.py
+++ b/fastimport/processor.py
@@ -35,7 +35,7 @@ import errors
class ImportProcessor(object):
"""Base class for import processors.
-
+
Subclasses should override the pre_*, post_* and *_handler
methods as appropriate.
"""
diff --git a/fastimport/tests/test_commands.py b/fastimport/tests/test_commands.py
index 6efa4ce..ab44856 100644
--- a/fastimport/tests/test_commands.py
+++ b/fastimport/tests/test_commands.py
@@ -18,7 +18,7 @@
from testtools import TestCase
-from bzrlib.plugins.fastimport.fastimport import (
+from fastimport import (
commands,
)
diff --git a/fastimport/tests/test_errors.py b/fastimport/tests/test_errors.py
index e3b807c..2b6b69d 100644
--- a/fastimport/tests/test_errors.py
+++ b/fastimport/tests/test_errors.py
@@ -18,7 +18,7 @@
from testtools import TestCase
-from bzrlib.plugins.fastimport.fastimport import (
+from fastimport import (
errors,
)