math-spec-mapping 0.3.9.1__tar.gz → 0.3.11__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {math_spec_mapping-0.3.9.1/src/math_spec_mapping.egg-info → math_spec_mapping-0.3.11}/PKG-INFO +1 -1
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/pyproject.toml +1 -1
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/MathSpec.py +59 -2
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Metric.py +1 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/metrics.py +11 -1
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/spaces.py +4 -2
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11/src/math_spec_mapping.egg-info}/PKG-INFO +1 -1
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/LICENSE +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/README.md +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/setup.cfg +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/ActionTransmissionChannel.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Block.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/BoundaryAction.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/ControlAction.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Entity.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Mechanism.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Parameter.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Policy.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Space.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/State.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/StateUpdateTransmissionChannel.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/StatefulMetric.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Type.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/__init__.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Convenience/__init__.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Convenience/documentation.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Convenience/starter.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/__init__.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/action_transmission_channel.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/boundary_actions.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/control_actions.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/displays.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/entities.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/general.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/implementations.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/load.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/mechanism.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/parameters.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/policy.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/state_update_transmission_channels.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/stateful_metrics.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/states.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/type.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/wiring.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/__init__.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/boundary_actions.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/control_actions.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/general.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/html.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/markdown.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/mechanisms.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/node_map.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/parameters.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/policies.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/spaces.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/state.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/tables.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/wiring.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/__init__.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/schema.py +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/schema.schema.json +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/SOURCES.txt +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/dependency_links.txt +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/requires.txt +0 -0
- {math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/top_level.txt +0 -0
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/MathSpec.py
RENAMED
@@ -8,6 +8,7 @@ import os
|
|
8
8
|
from copy import deepcopy
|
9
9
|
import shutil
|
10
10
|
import pandas as pd
|
11
|
+
from inspect import signature, getsource
|
11
12
|
|
12
13
|
|
13
14
|
class MathSpec:
|
@@ -47,6 +48,7 @@ class MathSpec:
|
|
47
48
|
self._build_functional_parameters()
|
48
49
|
self._build_parameter_types()
|
49
50
|
self._crawl_spaces()
|
51
|
+
self._set_source_code()
|
50
52
|
|
51
53
|
def _check_dictionary_names(self):
|
52
54
|
for key in self.boundary_actions:
|
@@ -765,6 +767,15 @@ using .Spaces: generate_space_type
|
|
765
767
|
def build_implementation(self, params):
|
766
768
|
return MathSpecImplementation(self, params)
|
767
769
|
|
770
|
+
def _set_source_code(self):
|
771
|
+
if "python" not in self.implementations:
|
772
|
+
self.source_code = None
|
773
|
+
return
|
774
|
+
self.source_code = deepcopy(self.implementations["python"])
|
775
|
+
for x in self.source_code:
|
776
|
+
for y in self.source_code[x]:
|
777
|
+
self.source_code[x][y] = getsource(self.source_code[x][y])
|
778
|
+
|
768
779
|
|
769
780
|
class MathSpecImplementation:
|
770
781
|
def __init__(self, ms: MathSpec, params):
|
@@ -775,8 +786,10 @@ class MathSpecImplementation:
|
|
775
786
|
self.policies = self.load_policies()
|
776
787
|
self.mechanisms = self.load_mechanisms()
|
777
788
|
self.stateful_metrics = self.load_stateful_metrics()
|
789
|
+
self.metrics = self.load_metrics()
|
778
790
|
self.load_wiring()
|
779
791
|
self.load_components()
|
792
|
+
self.load_source_files()
|
780
793
|
|
781
794
|
def load_control_actions(self):
|
782
795
|
control_actions = {}
|
@@ -951,6 +964,22 @@ class MathSpecImplementation:
|
|
951
964
|
|
952
965
|
return stateful_metrics
|
953
966
|
|
967
|
+
def load_metrics(self):
|
968
|
+
metrics = {}
|
969
|
+
|
970
|
+
for m in self.ms.metrics:
|
971
|
+
m = self.ms.metrics[m]
|
972
|
+
if "python" not in m.implementations:
|
973
|
+
print(
|
974
|
+
"No python implementation for {}. To fix this, go to Implementations/Python/Metrics and add {}".format(
|
975
|
+
m.name, m.name
|
976
|
+
)
|
977
|
+
)
|
978
|
+
else:
|
979
|
+
metrics[m.name] = m.implementations["python"]
|
980
|
+
|
981
|
+
return metrics
|
982
|
+
|
954
983
|
def load_wiring(
|
955
984
|
self,
|
956
985
|
):
|
@@ -1026,15 +1055,30 @@ class MathSpecImplementation:
|
|
1026
1055
|
state = deepcopy(state)
|
1027
1056
|
params = deepcopy(params)
|
1028
1057
|
state["Stateful Metrics"] = self.stateful_metrics
|
1058
|
+
state["Metrics"] = self.metrics
|
1029
1059
|
if state_preperation_functions:
|
1030
1060
|
for f in state_preperation_functions:
|
1031
|
-
|
1061
|
+
if len(signature(f).parameters) == 1:
|
1062
|
+
state = f(state)
|
1063
|
+
elif len(signature(f).parameters) == 2:
|
1064
|
+
state = f(state, params)
|
1065
|
+
else:
|
1066
|
+
assert (
|
1067
|
+
False
|
1068
|
+
), "Incorrect number of parameters for the state preperation function"
|
1032
1069
|
assert (
|
1033
1070
|
state is not None
|
1034
1071
|
), "A state must be returned from the state preperation functions"
|
1035
1072
|
if parameter_preperation_functions:
|
1036
1073
|
for f in parameter_preperation_functions:
|
1037
|
-
|
1074
|
+
if len(signature(f).parameters) == 1:
|
1075
|
+
params = f(params)
|
1076
|
+
elif len(signature(f).parameters) == 2:
|
1077
|
+
params = f(params, state)
|
1078
|
+
else:
|
1079
|
+
assert (
|
1080
|
+
False
|
1081
|
+
), "Incorrect number of parameters for the state preperation function"
|
1038
1082
|
assert (
|
1039
1083
|
params is not None
|
1040
1084
|
), "A parameter set must be returned from the parameter preperation functions"
|
@@ -1052,3 +1096,16 @@ class MathSpecImplementation:
|
|
1052
1096
|
for block in blocks:
|
1053
1097
|
self.components[block](state, params, [])
|
1054
1098
|
return state
|
1099
|
+
|
1100
|
+
def load_source_files(self):
|
1101
|
+
self.source_files = {}
|
1102
|
+
for key in self.components:
|
1103
|
+
self.source_files[key] = getsource(self.components[key])
|
1104
|
+
|
1105
|
+
def print_source_code_files(self, keys=None):
|
1106
|
+
if not keys:
|
1107
|
+
keys = list(self.source_files.keys())
|
1108
|
+
for key in keys:
|
1109
|
+
print("-" * 20 + key + "-" * 20)
|
1110
|
+
print(self.source_files[key])
|
1111
|
+
print("\n\n\n")
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/metrics.py
RENAMED
@@ -50,6 +50,14 @@ def convert_metric(ms, data: Dict, stateful_metrics_map) -> Metric:
|
|
50
50
|
for x in data["metrics_used"]
|
51
51
|
)
|
52
52
|
|
53
|
+
data["implementations"] = {}
|
54
|
+
if "python" in ms["Implementations"]:
|
55
|
+
if "metrics" in ms["Implementations"]["python"]:
|
56
|
+
if data["name"] in ms["Implementations"]["python"]["metrics"]:
|
57
|
+
data["implementations"]["python"] = ms["Implementations"]["python"][
|
58
|
+
"metrics"
|
59
|
+
][data["name"]]
|
60
|
+
|
53
61
|
# Build the metric object
|
54
62
|
return Metric(data)
|
55
63
|
|
@@ -91,7 +99,9 @@ def load_metrics(ms: Dict, json: Dict, stateful_metrics_map) -> None:
|
|
91
99
|
for z in y["metrics_used"]:
|
92
100
|
assert (
|
93
101
|
z in ms["Metrics"] or z in names or z in stateful_metrics_map
|
94
|
-
), "{} is not defined in the spec".format(
|
102
|
+
), "{} is not defined in the spec, but it is referenced in {}".format(
|
103
|
+
z, y["name"]
|
104
|
+
)
|
95
105
|
assert len(metrics) == 0, "There are circular references"
|
96
106
|
|
97
107
|
# Load the metrics into the policies
|
@@ -13,8 +13,10 @@ def convert_space(ms, data: Dict) -> Space:
|
|
13
13
|
data = data.copy()
|
14
14
|
|
15
15
|
for x in data["schema"]:
|
16
|
-
assert
|
17
|
-
data["schema"][x]
|
16
|
+
assert (
|
17
|
+
data["schema"][x] in ms["Types"]
|
18
|
+
), "Type {} not in ms for space {} at attribute {}".format(
|
19
|
+
data["schema"][x], data["name"], x
|
18
20
|
)
|
19
21
|
data["schema"][x] = ms["Types"][data["schema"][x]]
|
20
22
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Block.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Entity.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Mechanism.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Parameter.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Policy.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Space.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/State.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/Type.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Classes/__init__.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Convenience/__init__.py
RENAMED
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Convenience/starter.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/control_actions.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/displays.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/entities.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/general.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/implementations.py
RENAMED
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/mechanism.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Load/parameters.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/general.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/html.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/markdown.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/mechanisms.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/node_map.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/parameters.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/policies.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/spaces.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/state.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/tables.py
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/Reports/wiring.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping/schema.schema.json
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/requires.txt
RENAMED
File without changes
|
{math_spec_mapping-0.3.9.1 → math_spec_mapping-0.3.11}/src/math_spec_mapping.egg-info/top_level.txt
RENAMED
File without changes
|