|
@@ 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') |