py2/3: provide fallback if six is missing.

Change-Id: I3a65268367f3c2fb81429fdd90039f90c1864109
Reviewed-on: https://forge.frm2.tum.de/review/17770
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
Enrico Faulhaber 2018-04-19 10:21:20 +02:00
parent b3f63b779b
commit 95ba534180

View File

@ -30,7 +30,25 @@ import time
import types
import inspect
import six # for py2/3 compat
try:
from six import add_metaclass # for py2/3 compat
except ImportError:
# copied from six v1.10.0
def add_metaclass(metaclass):
"""Class decorator for creating a class with a metaclass."""
def wrapper(cls):
orig_vars = cls.__dict__.copy()
slots = orig_vars.get('__slots__')
if slots is not None:
if isinstance(slots, str):
slots = [slots]
for slots_var in slots:
orig_vars.pop(slots_var)
orig_vars.pop('__dict__', None)
orig_vars.pop('__weakref__', None)
return metaclass(cls.__name__, cls.__bases__, orig_vars)
return wrapper
from secop.lib import formatExtendedStack, mkthread
from secop.lib.parsing import format_time
@ -293,7 +311,7 @@ class ModuleMeta(type):
# if you want to 'update from the hardware', call self.read_<pname>
# the return value of this method will be used as the new cached value and
# be returned.
@six.add_metaclass(ModuleMeta)
@add_metaclass(ModuleMeta)
class Module(object):
"""Basic Module, doesn't do much"""
# static properties, definitions in derived classes should overwrite earlier ones.