summaryrefslogtreecommitdiff
path: root/src/leap/mx/vendor/pgpy/types.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/mx/vendor/pgpy/types.py')
-rw-r--r--src/leap/mx/vendor/pgpy/types.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/leap/mx/vendor/pgpy/types.py b/src/leap/mx/vendor/pgpy/types.py
index b549434..af03e31 100644
--- a/src/leap/mx/vendor/pgpy/types.py
+++ b/src/leap/mx/vendor/pgpy/types.py
@@ -38,12 +38,25 @@ __all__ = ['Armorable',
'Fingerprint',
'SorteDeque']
+# XXX port of six's with_metaclass in 1.10.0, see PGPy/issues/217
+
+def with_metaclass(meta, *bases):
+ """Create a base class with a metaclass."""
+ # This requires a bit of explanation: the basic idea is to make a dummy
+ # metaclass for one level of class instantiation that replaces itself with
+ # the actual metaclass.
+ class metaclass(meta):
+
+ def __new__(cls, name, this_bases, d):
+ return meta(name, bases, d)
+ return type.__new__(metaclass, 'temporary_class', (), {})
+
if six.PY2:
FileNotFoundError = IOError
re.ASCII = 0
-class Armorable(six.with_metaclass(abc.ABCMeta)):
+class Armorable(with_metaclass(abc.ABCMeta)):
__crc24_init__ = 0x0B704CE
__crc24_poly__ = 0x1864CFB
@@ -241,7 +254,7 @@ class ParentRef(object):
self._parent = None
-class PGPObject(six.with_metaclass(abc.ABCMeta, object)):
+class PGPObject(with_metaclass(abc.ABCMeta, object)):
__metaclass__ = abc.ABCMeta
@staticmethod
@@ -543,7 +556,7 @@ class MetaDispatchable(abc.ABCMeta):
return obj
-class Dispatchable(six.with_metaclass(MetaDispatchable, PGPObject)):
+class Dispatchable(with_metaclass(MetaDispatchable, PGPObject)):
__metaclass__ = MetaDispatchable
@abc.abstractproperty