commit: eef89beeb23c6c539944b9f09d038fa821912667 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Sun Dec 28 16:54:10 2014 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Tue Dec 30 21:42:26 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=eef89bee
gkeys/exception.py: Initial creation of GkeyException classes Mostly copied, modified from PortageException code. --- gkeys/gkeys/exception.py | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/gkeys/gkeys/exception.py b/gkeys/gkeys/exception.py new file mode 100644 index 0000000..21a2e97 --- /dev/null +++ b/gkeys/gkeys/exception.py @@ -0,0 +1,78 @@ +# Copyright 1998-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + + +import sys + + +if sys.version_info[0] >= 3: + # pylint: disable=W0622 + basestring = str + + def _unicode_encode(s, encoding='utf_8', errors='backslashreplace'): + if isinstance(s, str): + s = s.encode(encoding, errors) + return s + + def _unicode_decode(s, encoding='utf_8', errors='replace'): + if isinstance(s, bytes): + s = str(s, encoding=encoding, errors=errors) + return s + +else: + + def _unicode_encode(s, encoding='utf_8', errors='backslashreplace'): + if isinstance(s, unicode): + s = s.encode(encoding, errors) + return s + + def _unicode_decode(s, encoding='utf_8', errors='replace'): + if isinstance(s, bytes): + s = unicode(s, encoding=encoding, errors=errors) + return s + + +class GkeysException(Exception): + if sys.version_info[0] >= 3: + def __init__(self, value): + self.value = value[:] + + def __str__(self): + if isinstance(self.value, str): + return self.value + else: + return repr(self.value) + else: + def __init__(self, value): + self.value = value[:] + if isinstance(self.value, basestring): + self.value = _unicode_decode(self.value, + encoding='utf_8', errors='replace') + + def __unicode__(self): + if isinstance(self.value, unicode): + return self.value + else: + return _unicode_decode(repr(self.value), + encoding='utf_8', errors='replace') + + def __str__(self): + if isinstance(self.value, unicode): + return _unicode_encode(self.value, + encoding='utf_8', errors='backslashreplace') + else: + return repr(self.value) + + +class UpdateDbError(GkeysException): + '''%s + + Please Run: 'gkeys refresh-key -C {foo}' + on all installed keyring categories + Then continue with normal gkey operations.''' + def __init__(self, value): + doc = self.__doc__ % (value) + GkeysException.__init__(self, doc) + + +