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

so_magic.data.init_data_manager()   A

Complexity

Conditions 3

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 11
nop 1
dl 0
loc 18
rs 9.85
c 0
b 0
f 0
1
from .data_manager import DataManager
2
from .features.phi import PhiFunctionRegistrator
3
from .features import FeatureManager
4
from .command_factories import DataManagerCommandFactory
5
6
from .built_in_commands import encode_nominal_subsets_command
7
from .built_in_data_manager_commands import select_variables_command
8
from .pd_commands import data_manager_commands, arbitrary_commands
9
10
11
def init_data_manager(a_backend):
12
    # Initialize DataManager instance and DataManagerCommandFactory
13
    my_data_manager = DataManager(a_backend, type('PhiFunction', (PhiFunctionRegistrator,), {}), FeatureManager([]))
14
    mega_cmd_factory = DataManagerCommandFactory(my_data_manager)
15
    mega_cmd_factory.attach(my_data_manager.commands_manager.command.accumulator)
16
17
    # Build backend-agnostic, built-in engine commands
18
    my_data_manager.backend.engine.dec()(encode_nominal_subsets_command)
19
    mega_cmd_factory.build_command_prototype()(select_variables_command)
20
21
    # Build backend-dependent (eg dependent on pandas) client engine commands
22
    for arbitrary_cmd in arbitrary_commands:
23
        my_data_manager.backend.engine.dec()(arbitrary_cmd)
24
25
    for data_manager_cmd in data_manager_commands:
26
        mega_cmd_factory.build_command_prototype()(data_manager_cmd)
27
28
    return my_data_manager
29