Passed
Push — release-staging ( f66c6e...bcf37a )
by Konstantinos
01:35
created

so_magic.so_master.SoMaster.create()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 2
dl 0
loc 5
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
18
        cmd.args = [file_path]
19
        cmd.execute()
20
        self._last_path = file_path
21
        return self._data_manager.backend.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.backend.datapoints_manager.datapoints
30
31
    @property
32
    def dataset(self):
33
        datapoints_id = id(self._data_manager.backend.datapoints_manager.datapoints)
34
        if datapoints_id not in self._datasets:
35
            self._datasets[datapoints_id] = self._dataset_constructor(
36
                self._data_manager.backend.datapoints_manager.datapoints,
37
                self._last_path,
38
            )
39
        return self._datasets[datapoints_id]
40