Code Duplication    Length = 16-16 lines in 2 locations

src/green_magic/data/command_factories.py 2 locations

@@ 56-71 (lines=16) @@
53
    def construct(self, *args, **kwargs) -> Command:
54
        raise NotImplementedError
55
56
class BaseCommandFactory(AbstractCommandFactory, ABC):
57
58
    subclasses = {}
59
60
    @classmethod
61
    def register_as_subclass(cls, factory_type):
62
        def wrapper(subclass):
63
            cls.subclasses[factory_type] = subclass
64
            return subclass
65
        return wrapper
66
67
    @classmethod
68
    def create(cls, factory_type, *args, **kwargs):
69
        if factory_type not in cls.subclasses:
70
            raise ValueError('Bad "Factory type" \'{}\''.format(factory_type))
71
        return cls.subclasses[factory_type](*args, **kwargs)
72
73
74
@BaseCommandFactory.register_as_subclass('generic')
@@ 147-162 (lines=16) @@
144
        return self._state
145
146
147
class DataManagerCommandFactory(AbstractCommandFactory, ABC):
148
149
    subclasses = {}
150
151
    @classmethod
152
    def register_as_subclass(cls, factory_type):
153
        def wrapper(subclass):
154
            cls.subclasses[factory_type] = subclass
155
            return subclass
156
        return wrapper
157
158
    @classmethod
159
    def create(cls, factory_type, *args, **kwargs):
160
        if factory_type not in cls.subclasses:
161
            raise ValueError('Bad "Factory type" \'{}\''.format(factory_type))
162
        return cls.subclasses[factory_type](*args, **kwargs)
163
164
#### Register command factories
165
@DataManagerCommandFactory.register_as_subclass('select_variables')