From 896ec52bb1a1f9489cf531bd245c0f6b4c2e2773 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 28 Sep 2017 18:39:46 +0200 Subject: [bug] fix incompatibility with six==1.11.0 add the version of with_metaclass found in six==1.10.0 See https://github.com/SecurityInnovation/PGPy/issues/217 - Resolves: #8672 --- src/leap/mx/vendor/pgpy/types.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src') 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 -- cgit v1.2.3