Code Duplication    Length = 16-16 lines in 2 locations

src/green_magic/data/command_factories.py 2 locations

@@ 165-180 (lines=16) @@
162
        return self._state
163
164
165
class DataManagerCommandFactory(AbstractCommandFactory, ABC):
166
167
    subclasses = {}
168
169
    @classmethod
170
    def register_as_subclass(cls, factory_type):
171
        def wrapper(subclass):
172
            cls.subclasses[factory_type] = subclass
173
            return subclass
174
        return wrapper
175
176
    @classmethod
177
    def create(cls, factory_type, *args, **kwargs):
178
        if factory_type not in cls.subclasses:
179
            raise ValueError('Bad "Factory type" \'{}\''.format(factory_type))
180
        return cls.subclasses[factory_type](*args, **kwargs)
181
182
183
@DataManagerCommandFactory.register_as_subclass('select_variables')
@@ 67-82 (lines=16) @@
64
    def construct(self, *args, **kwargs) -> Command:
65
        raise NotImplementedError
66
67
class BaseCommandFactory(AbstractCommandFactory, ABC):
68
69
    subclasses = {}
70
71
    @classmethod
72
    def register_as_subclass(cls, factory_type):
73
        def wrapper(subclass):
74
            cls.subclasses[factory_type] = subclass
75
            return subclass
76
        return wrapper
77
78
    @classmethod
79
    def create(cls, factory_type, *args, **kwargs):
80
        if factory_type not in cls.subclasses:
81
            raise ValueError('Bad "Factory type" \'{}\''.format(factory_type))
82
        return cls.subclasses[factory_type](*args, **kwargs)
83
84
85
@BaseCommandFactory.register_as_subclass('generic')