diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-09-03 23:28:11 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-09-03 23:28:11 +0200 |
commit | d0b2057fdb02668f8562f97a1a1e4925e5c11bfe (patch) | |
tree | 7bb2179437a2ba69c4b8ea2924c6cbcb7e2faef7 /fastimport | |
parent | 800760bbff11de9e7b3ad8949486fc6ef11e95ce (diff) | |
download | python-fastimport-git-d0b2057fdb02668f8562f97a1a1e4925e5c11bfe.tar.gz |
Split python-fastimport into its own separate package.
Diffstat (limited to 'fastimport')
-rw-r--r-- | fastimport/dates.py | 2 | ||||
-rw-r--r-- | fastimport/errors.py | 63 | ||||
-rw-r--r-- | fastimport/processor.py | 2 | ||||
-rw-r--r-- | fastimport/tests/test_commands.py | 2 | ||||
-rw-r--r-- | fastimport/tests/test_errors.py | 2 |
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, ) |