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

so_magic.so_master.SoMaster.command()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
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