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)
+
+
+

Reply via email to