Passed
Push — mpeta ( b3f7e8...55fafe )
by Konstantinos
03:43
created

so_magic.so_master   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 37
dl 0
loc 48
rs 10
c 0
b 0
f 0
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A SoMaster.datapoints() 0 3 1
A SoMaster.map() 0 3 1
A SoMaster.load_data() 0 6 1
A SoMaster.command() 0 3 1
A SoMaster.dataset() 0 9 2
A SoMaster.commands_decorators() 0 3 1
1
import attr
2
3
4
@attr.s
5
class SoMaster:
6
    _data_manager = attr.ib(init=True)
7
    _dataset_constructor = attr.ib(init=True)
8
    _magic_map_manager_constructor = attr.ib(init=True)
9
10
    _map_manager = attr.ib(init=False, default=attr.Factory(lambda self: self._magic_map_manager_constructor(self),
11
                                                            takes_self=True))
12
    _last_path = attr.ib(init=False, default='')
13
14
    _datasets = attr.ib(init=False, default={})
15
16
    def load_data(self, file_path):
17
        cmd = self._data_manager.command.observations_command
18
        cmd.args = [file_path]
19
        cmd.execute()
20
        self._last_path = file_path
21
        return self._data_manager.engine.datapoints_manager.datapoints
22
23
    @property
24
    def map(self):
25
        return self._map_manager
26
27
    @property
28
    def datapoints(self):
29
        return self._data_manager.engine.datapoints_manager.datapoints
30
31
    @property
32
    def commands_decorators(self):
33
        return self._data_manager.commands_manager.decorators
34
35
    @property
36
    def command(self):
37
        return self._data_manager.command
38
39
    @property
40
    def dataset(self):
41
        datapoints_id = id(self._data_manager.engine.datapoints_manager.datapoints)
42
        if datapoints_id not in self._datasets:
43
            self._datasets[datapoints_id] = self._dataset_constructor(
44
                self._data_manager.engine.datapoints_manager.datapoints,
45
                self._last_path,
46
            )
47
        return self._datasets[datapoints_id]
48