Passed
Push — master ( 812b05...176334 )
by Konstantinos
02:19 queued 01:50
created

so_magic.data.backend.engine_specs.EngineTabularMutator.register_as_subclass()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
import attr
2
3
# from so_magic.data.interfaces import TabularRetriever, TabularIterator, TabularMutator
4
from so_magic.utils import SubclassRegistry
5
6
7
class EngineTabularRetriever(metaclass=SubclassRegistry): pass
8
9
10
class EngineTabularIterator(metaclass=SubclassRegistry): pass
11
12
13
class EngineTabularMutator(metaclass=SubclassRegistry): pass
14
15
16
@attr.s
17
class EngineSpecifications:
18
    name_abbreviation = attr.ib(init=True)
19
    name = attr.ib(init=True, default=attr.Factory(lambda self: self.name_abbreviation, takes_self=True))
20
21
    def __call__(self, *args, **kwargs):
22
        engine = args[0]
23
        engine.retriever = EngineTabularRetriever.subclasses[self.name_abbreviation]
24
        engine.iterator = EngineTabularIterator.subclasses[self.name_abbreviation]
25
        engine.mutator = EngineTabularMutator.subclasses[self.name_abbreviation]
26
27
    @classmethod
28
    def from_dict(cls, a_dict):
29
        return EngineSpecifications(a_dict['id'], a_dict.get('name', a_dict['id']))
30