math-spec-mapping 0.3.0__tar.gz → 0.3.2__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {math-spec-mapping-0.3.0/src/math_spec_mapping.egg-info → math_spec_mapping-0.3.2}/PKG-INFO +1 -1
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/pyproject.toml +1 -1
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/MathSpec.py +40 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/State.py +1 -0
- math_spec_mapping-0.3.2/src/math_spec_mapping/Convenience/__init__.py +2 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Convenience/documentation.py +1 -1
- math_spec_mapping-0.3.2/src/math_spec_mapping/Convenience/starter.py +271 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/metrics.py +6 -2
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/parameters.py +3 -1
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/states.py +2 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/type.py +5 -1
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/html.py +4 -1
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/markdown.py +55 -5
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/state.py +2 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/__init__.py +1 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/schema.schema.json +8 -4
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2/src/math_spec_mapping.egg-info}/PKG-INFO +1 -1
- math-spec-mapping-0.3.0/src/math_spec_mapping/Convenience/__init__.py +0 -1
- math-spec-mapping-0.3.0/src/math_spec_mapping/Convenience/starter.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/LICENSE +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/README.md +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/setup.cfg +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/ActionTransmissionChannel.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Block.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/BoundaryAction.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/ControlAction.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Entity.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Mechanism.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Metric.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Parameter.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Policy.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Space.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/StateUpdateTransmissionChannel.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/StatefulMetric.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Type.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/__init__.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/__init__.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/action_transmission_channel.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/boundary_actions.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/control_actions.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/displays.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/entities.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/general.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/implementations.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/load.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/mechanism.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/policy.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/spaces.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/state_update_transmission_channels.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/stateful_metrics.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/wiring.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/__init__.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/boundary_actions.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/control_actions.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/general.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/mechanisms.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/node_map.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/parameters.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/policies.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/spaces.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/tables.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/wiring.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/schema.py +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/SOURCES.txt +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/dependency_links.txt +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/requires.txt +0 -0
- {math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/top_level.txt +0 -0
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/MathSpec.py
RENAMED
@@ -6,6 +6,7 @@ from .ControlAction import ControlAction
|
|
6
6
|
from .BoundaryAction import BoundaryAction
|
7
7
|
import os
|
8
8
|
from copy import deepcopy
|
9
|
+
import shutil
|
9
10
|
|
10
11
|
|
11
12
|
class MathSpec:
|
@@ -603,6 +604,45 @@ class MathSpec:
|
|
603
604
|
with open(path, "w") as f:
|
604
605
|
f.write(out)
|
605
606
|
|
607
|
+
def metaprogramming_julia_types(self, model_directory, overwrite=False):
|
608
|
+
path = model_directory + "/types.jl"
|
609
|
+
if not overwrite:
|
610
|
+
assert "types.jl" not in os.listdir(
|
611
|
+
model_directory
|
612
|
+
), "The types file is already written, either delete it or switch to overwrite mode"
|
613
|
+
|
614
|
+
shutil.copyfile("src/TypeMappings/types.jl", path)
|
615
|
+
|
616
|
+
def metaprogramming_julia_spaces(
|
617
|
+
self, model_directory, cadCAD_path, overwrite=False
|
618
|
+
):
|
619
|
+
path = model_directory + "/spaces.jl"
|
620
|
+
if not overwrite:
|
621
|
+
assert "spaces.jl" not in os.listdir(
|
622
|
+
model_directory
|
623
|
+
), "The spaces file is already written, either delete it or switch to overwrite mode"
|
624
|
+
|
625
|
+
out = """include("{}")
|
626
|
+
include("types.jl")
|
627
|
+
using .Spaces: generate_space_type
|
628
|
+
|
629
|
+
""".format(
|
630
|
+
cadCAD_path
|
631
|
+
)
|
632
|
+
|
633
|
+
for space in self.spaces:
|
634
|
+
name = self.spaces[space].name
|
635
|
+
schema = self.spaces[space].schema
|
636
|
+
schema = ["{}={}".format(x, schema[x].original_type_name) for x in schema]
|
637
|
+
if len(schema) >= 1:
|
638
|
+
schema = ", ".join(schema) + ","
|
639
|
+
out += 'generate_space_type(({}), "{}")'.format(schema, name)
|
640
|
+
out += "\n"
|
641
|
+
# out += "{} = Spaces.{}".format(name, name)
|
642
|
+
|
643
|
+
with open(path, "w") as f:
|
644
|
+
f.write(out)
|
645
|
+
|
606
646
|
def build_implementation(self, params):
|
607
647
|
return MathSpecImplementation(self, params)
|
608
648
|
|
@@ -0,0 +1,271 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
|
4
|
+
def remove_dummy_repo_components(path):
|
5
|
+
|
6
|
+
directory_folders = os.listdir(path)
|
7
|
+
|
8
|
+
if "StatefulMetrics" in directory_folders:
|
9
|
+
path2 = path + "/StatefulMetrics"
|
10
|
+
contents = os.listdir(path2)
|
11
|
+
if "Dummy.py" in contents:
|
12
|
+
os.remove(path2 + "/Dummy.py")
|
13
|
+
if "__init__.py" in contents:
|
14
|
+
with open(path2 + "/__init__.py", "r") as f:
|
15
|
+
contents = f.read()
|
16
|
+
contents = contents.replace(
|
17
|
+
"from .Dummy import dummy_stateful_metrics\n", ""
|
18
|
+
)
|
19
|
+
contents = contents.replace(
|
20
|
+
"stateful_metrics.extend(dummy_stateful_metrics)\n", ""
|
21
|
+
)
|
22
|
+
contents = contents.replace(
|
23
|
+
"stateful_metrics.extend(dummy_stateful_metrics)", ""
|
24
|
+
)
|
25
|
+
with open(path2 + "/__init__.py", "w") as f:
|
26
|
+
f.write(contents)
|
27
|
+
|
28
|
+
if "Metrics" in directory_folders:
|
29
|
+
path2 = path + "/Metrics"
|
30
|
+
contents = os.listdir(path2)
|
31
|
+
if "Dummy.py" in contents:
|
32
|
+
os.remove(path2 + "/Dummy.py")
|
33
|
+
if "__init__.py" in contents:
|
34
|
+
with open(path2 + "/__init__.py", "r") as f:
|
35
|
+
contents = f.read()
|
36
|
+
contents = contents.replace("from .Dummy import metrics_x\n", "")
|
37
|
+
contents = contents.replace("metrics.extend(metrics_x)\n", "")
|
38
|
+
contents = contents.replace("metrics.extend(metrics_x)", "")
|
39
|
+
with open(path2 + "/__init__.py", "w") as f:
|
40
|
+
f.write(contents)
|
41
|
+
|
42
|
+
"""if "Displays" in directory_folders:
|
43
|
+
path2 = path + "/Displays"
|
44
|
+
contents = os.listdir(path2)
|
45
|
+
if "Dummy.py" in contents:
|
46
|
+
os.remove(path2 + "/Dummy.py")
|
47
|
+
if "__init__.py" in contents:
|
48
|
+
with open(path2 + "/__init__.py", "r") as f:
|
49
|
+
contents = f.read()
|
50
|
+
contents = contents.replace("from .Dummy import metrics_x\n", "")
|
51
|
+
contents = contents.replace("metrics.extend(metrics_x)\n", "")
|
52
|
+
contents = contents.replace("metrics.extend(metrics_x)", "")
|
53
|
+
with open(path2 + "/__init__.py", "w") as f:
|
54
|
+
f.write(contents)"""
|
55
|
+
|
56
|
+
if "Wiring" in directory_folders:
|
57
|
+
path2 = path + "/Wiring"
|
58
|
+
contents = os.listdir(path2)
|
59
|
+
if "Dummy.py" in contents:
|
60
|
+
os.remove(path2 + "/Dummy.py")
|
61
|
+
if "__init__.py" in contents:
|
62
|
+
with open(path2 + "/__init__.py", "r") as f:
|
63
|
+
contents = f.read()
|
64
|
+
contents = contents.replace("from .Dummy import dummy_wiring\n", "")
|
65
|
+
contents = contents.replace("wiring.extend(dummy_wiring)\n", "")
|
66
|
+
contents = contents.replace("wiring.extend(dummy_wiring)", "")
|
67
|
+
with open(path2 + "/__init__.py", "w") as f:
|
68
|
+
f.write(contents)
|
69
|
+
|
70
|
+
if "Mechanisms" in directory_folders:
|
71
|
+
path2 = path + "/Mechanisms"
|
72
|
+
contents = os.listdir(path2)
|
73
|
+
if "Dummy.py" in contents:
|
74
|
+
os.remove(path2 + "/Dummy.py")
|
75
|
+
if "__init__.py" in contents:
|
76
|
+
with open(path2 + "/__init__.py", "r") as f:
|
77
|
+
contents = f.read()
|
78
|
+
contents = contents.replace("from .Dummy import dummy_mechanisms\n", "")
|
79
|
+
contents = contents.replace("mechanism.extend(dummy_mechanisms)\n", "")
|
80
|
+
contents = contents.replace("mechanism.extend(dummy_mechanisms)", "")
|
81
|
+
with open(path2 + "/__init__.py", "w") as f:
|
82
|
+
f.write(contents)
|
83
|
+
|
84
|
+
if "Policies" in directory_folders:
|
85
|
+
path2 = path + "/Policies"
|
86
|
+
contents = os.listdir(path2)
|
87
|
+
if "Dummy.py" in contents:
|
88
|
+
os.remove(path2 + "/Dummy.py")
|
89
|
+
if "__init__.py" in contents:
|
90
|
+
with open(path2 + "/__init__.py", "r") as f:
|
91
|
+
contents = f.read()
|
92
|
+
contents = contents.replace("from .Dummy import dummy_policies\n", "")
|
93
|
+
contents = contents.replace("policies.extend(dummy_policies)\n", "")
|
94
|
+
contents = contents.replace("policies.extend(dummy_policies)", "")
|
95
|
+
with open(path2 + "/__init__.py", "w") as f:
|
96
|
+
f.write(contents)
|
97
|
+
|
98
|
+
if "BoundaryActions" in directory_folders:
|
99
|
+
path2 = path + "/BoundaryActions"
|
100
|
+
contents = os.listdir(path2)
|
101
|
+
if "Dummy.py" in contents:
|
102
|
+
os.remove(path2 + "/Dummy.py")
|
103
|
+
if "__init__.py" in contents:
|
104
|
+
with open(path2 + "/__init__.py", "r") as f:
|
105
|
+
contents = f.read()
|
106
|
+
contents = contents.replace(
|
107
|
+
"from .Dummy import dummy_boundary_action\n", ""
|
108
|
+
)
|
109
|
+
contents = contents.replace("dummy_boundary_action,\n", "")
|
110
|
+
contents = contents.replace("dummy_boundary_action,", "")
|
111
|
+
contents = contents.replace("dummy_boundary_action", "")
|
112
|
+
with open(path2 + "/__init__.py", "w") as f:
|
113
|
+
f.write(contents)
|
114
|
+
|
115
|
+
if "ControlActions" in directory_folders:
|
116
|
+
path2 = path + "/ControlActions"
|
117
|
+
contents = os.listdir(path2)
|
118
|
+
if "Dummy.py" in contents:
|
119
|
+
os.remove(path2 + "/Dummy.py")
|
120
|
+
if "__init__.py" in contents:
|
121
|
+
with open(path2 + "/__init__.py", "r") as f:
|
122
|
+
contents = f.read()
|
123
|
+
contents = contents.replace(
|
124
|
+
"from .Dummy import dummy_control_action\n", ""
|
125
|
+
)
|
126
|
+
contents = contents.replace("dummy_control_action,\n", "")
|
127
|
+
contents = contents.replace("dummy_control_action,", "")
|
128
|
+
contents = contents.replace("dummy_control_action", "")
|
129
|
+
with open(path2 + "/__init__.py", "w") as f:
|
130
|
+
f.write(contents)
|
131
|
+
if "Entities" in directory_folders:
|
132
|
+
path2 = path + "/Entities"
|
133
|
+
contents = os.listdir(path2)
|
134
|
+
if "Dummy.py" in contents:
|
135
|
+
os.remove(path2 + "/Dummy.py")
|
136
|
+
if "__init__.py" in contents:
|
137
|
+
with open(path2 + "/__init__.py", "r") as f:
|
138
|
+
contents = f.read()
|
139
|
+
contents = contents.replace("from .Dummy import dummy_entity\n", "")
|
140
|
+
contents = contents.replace("dummy_entity, ", "")
|
141
|
+
contents = contents.replace("dummy_entity,", "")
|
142
|
+
contents = contents.replace("dummy_entity", "")
|
143
|
+
with open(path2 + "/__init__.py", "w") as f:
|
144
|
+
f.write(contents)
|
145
|
+
if "State" in directory_folders:
|
146
|
+
path2 = path + "/State"
|
147
|
+
contents = os.listdir(path2)
|
148
|
+
if "Dummy.py" in contents:
|
149
|
+
os.remove(path2 + "/Dummy.py")
|
150
|
+
if "__init__.py" in contents:
|
151
|
+
with open(path2 + "/__init__.py", "r") as f:
|
152
|
+
contents = f.read()
|
153
|
+
contents = contents.replace("from .Dummy import dummy_state\n", "")
|
154
|
+
contents = contents.replace("dummy_state, ", "")
|
155
|
+
contents = contents.replace("dummy_state,", "")
|
156
|
+
contents = contents.replace("dummy_state", "")
|
157
|
+
with open(path2 + "/__init__.py", "w") as f:
|
158
|
+
f.write(contents)
|
159
|
+
|
160
|
+
if "Parameters" in directory_folders:
|
161
|
+
path2 = path + "/Parameters"
|
162
|
+
contents = os.listdir(path2)
|
163
|
+
if "Dummy.py" in contents:
|
164
|
+
os.remove(path2 + "/Dummy.py")
|
165
|
+
if "__init__.py" in contents:
|
166
|
+
with open(path2 + "/__init__.py", "r") as f:
|
167
|
+
contents = f.read()
|
168
|
+
contents = contents.replace(
|
169
|
+
"from .Dummy import dummy_parameter_sets", ""
|
170
|
+
)
|
171
|
+
contents = contents.replace(
|
172
|
+
"parameters.extend(dummy_parameter_sets)", ""
|
173
|
+
)
|
174
|
+
|
175
|
+
with open(path2 + "/__init__.py", "w") as f:
|
176
|
+
f.write(contents)
|
177
|
+
|
178
|
+
if "Spaces" in directory_folders:
|
179
|
+
path2 = path + "/Spaces"
|
180
|
+
contents = os.listdir(path2)
|
181
|
+
if "Dummy.py" in contents:
|
182
|
+
os.remove(path2 + "/Dummy.py")
|
183
|
+
if "__init__.py" in contents:
|
184
|
+
with open(path2 + "/__init__.py", "r") as f:
|
185
|
+
contents = f.read()
|
186
|
+
contents = contents.replace("from .Dummy import dummy_spaces\n", "")
|
187
|
+
contents = contents.replace("spaces.extend(dummy_spaces)", "")
|
188
|
+
|
189
|
+
with open(path2 + "/__init__.py", "w") as f:
|
190
|
+
f.write(contents)
|
191
|
+
|
192
|
+
if "Types" in directory_folders:
|
193
|
+
path2 = path + "/Types"
|
194
|
+
contents = os.listdir(path2)
|
195
|
+
if "Dummy.py" in contents:
|
196
|
+
os.remove(path2 + "/Dummy.py")
|
197
|
+
if "__init__.py" in contents:
|
198
|
+
with open(path2 + "/__init__.py", "r") as f:
|
199
|
+
contents = f.read()
|
200
|
+
contents = contents.replace(
|
201
|
+
"from .Dummy import DummyCompoundType, DummyType1, DummyType2\n", ""
|
202
|
+
)
|
203
|
+
contents = contents.replace(
|
204
|
+
""" DummyType1,
|
205
|
+
DummyType2,
|
206
|
+
DummyCompoundType,""",
|
207
|
+
"",
|
208
|
+
)
|
209
|
+
contents = contents.replace(
|
210
|
+
""" DummyType1,
|
211
|
+
DummyType2,
|
212
|
+
DummyCompoundType""",
|
213
|
+
"",
|
214
|
+
)
|
215
|
+
|
216
|
+
with open(path2 + "/__init__.py", "w") as f:
|
217
|
+
f.write(contents)
|
218
|
+
|
219
|
+
if "TypeMappings" in directory_folders:
|
220
|
+
path2 = path + "/TypeMappings"
|
221
|
+
contents = os.listdir(path2)
|
222
|
+
|
223
|
+
if "types.py" in contents:
|
224
|
+
with open(path2 + "/types.py", "r") as f:
|
225
|
+
contents = f.read()
|
226
|
+
contents = contents.replace(
|
227
|
+
""" "DummyType1": str,
|
228
|
+
"DummyType2": int,
|
229
|
+
"DummyCompoundType": {"A": "Dummy Type 1", "B": "Dummy Type 2"},""",
|
230
|
+
"",
|
231
|
+
)
|
232
|
+
|
233
|
+
with open(path2 + "/types.py", "w") as f:
|
234
|
+
f.write(contents)
|
235
|
+
|
236
|
+
if "TypeMappings" in directory_folders:
|
237
|
+
path2 = path + "/TypeMappings"
|
238
|
+
contents = os.listdir(path2)
|
239
|
+
|
240
|
+
if "types.py" in contents:
|
241
|
+
with open(path2 + "/types.jl", "r") as f:
|
242
|
+
contents = f.read()
|
243
|
+
contents = contents.replace(
|
244
|
+
"""const DummyType1 = String
|
245
|
+
const DummyType2 = Integer
|
246
|
+
struct DummyCompoundType
|
247
|
+
A::DummyType1
|
248
|
+
B::DummyType2
|
249
|
+
end""",
|
250
|
+
"",
|
251
|
+
)
|
252
|
+
|
253
|
+
with open(path2 + "/types.jl", "w") as f:
|
254
|
+
f.write(contents)
|
255
|
+
|
256
|
+
if "TypeMappings" in directory_folders:
|
257
|
+
path2 = path + "/TypeMappings"
|
258
|
+
contents = os.listdir(path2)
|
259
|
+
|
260
|
+
if "types.py" in contents:
|
261
|
+
with open(path2 + "/types.ts", "r") as f:
|
262
|
+
contents = f.read()
|
263
|
+
contents = contents.replace(
|
264
|
+
"""type DummyType1 = string
|
265
|
+
type DummyType2 = number
|
266
|
+
type DummyCompoundType = {"A": DummyType1, "B": DummyType2}""",
|
267
|
+
"",
|
268
|
+
)
|
269
|
+
|
270
|
+
with open(path2 + "/types.ts", "w") as f:
|
271
|
+
f.write(contents)
|
@@ -100,5 +100,9 @@ def load_metrics(ms: Dict, json: Dict, stateful_metrics_map) -> None:
|
|
100
100
|
hold = policy.metrics_used[:]
|
101
101
|
policy.metrics_used = []
|
102
102
|
for x in hold:
|
103
|
-
assert
|
104
|
-
|
103
|
+
assert (
|
104
|
+
x in ms["Metrics"] or x in stateful_metrics_map
|
105
|
+
), "{} not a valid metric or stateful metric".format(x)
|
106
|
+
policy.metrics_used.append(
|
107
|
+
ms["Metrics"][x] if x in ms["Metrics"] else stateful_metrics_map[x]
|
108
|
+
)
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/parameters.py
RENAMED
@@ -18,7 +18,9 @@ def convert_parameter_set(ms, data: Dict) -> ParameterSet:
|
|
18
18
|
if "metadata" not in param:
|
19
19
|
param["metadata"] = {}
|
20
20
|
check_json_keys(param, "Parameter")
|
21
|
-
assert param["variable_type"] in ms["Types"], "Type not in ms"
|
21
|
+
assert param["variable_type"] in ms["Types"], "Type of {} not in ms".format(
|
22
|
+
param["variable_type"]
|
23
|
+
)
|
22
24
|
param["variable_type"] = ms["Types"][param["variable_type"]]
|
23
25
|
new_parameters.append(Parameter(param))
|
24
26
|
data["parameters"] = new_parameters
|
@@ -27,6 +27,8 @@ def convert_state(ms, data: Dict) -> State:
|
|
27
27
|
check_json_keys(var, "State Variable")
|
28
28
|
assert var["type"] in ms["Types"], "Type not in ms"
|
29
29
|
var["type"] = ms["Types"][var["type"]]
|
30
|
+
if "metadata" not in var:
|
31
|
+
var["metadata"] = {}
|
30
32
|
new_variables.append(StateVariable(var))
|
31
33
|
data["variables"] = new_variables
|
32
34
|
|
@@ -71,7 +71,8 @@ def load_typescript_type_key(path):
|
|
71
71
|
type_definitions = [x for x in type_definitions if len(x) > 0]
|
72
72
|
hold = type_definitions[:]
|
73
73
|
type_definitions = []
|
74
|
-
|
74
|
+
if len(hold) > 0:
|
75
|
+
type_definitions.append(hold.pop(0))
|
75
76
|
while len(hold) > 0:
|
76
77
|
curr = hold.pop(0)
|
77
78
|
if "type" in curr or "interface" in curr:
|
@@ -111,6 +112,9 @@ def load_julia_type_key(path):
|
|
111
112
|
elif x.startswith("struct"):
|
112
113
|
name = name[7:]
|
113
114
|
name = name[: name.index("\n")].strip()
|
115
|
+
if x.startswith("const"):
|
116
|
+
name = name[6:]
|
117
|
+
name = name[: name.index("=")].strip()
|
114
118
|
else:
|
115
119
|
assert False
|
116
120
|
|
@@ -152,7 +152,10 @@ cssclasses:
|
|
152
152
|
else:
|
153
153
|
out += symbol2 + name + "\n"
|
154
154
|
for var in ms.state[name].variable_map.keys():
|
155
|
-
|
155
|
+
if linking:
|
156
|
+
out += symbol3 + "[[{}-{}\|{}]]".format(name, var, var) + "\n"
|
157
|
+
else:
|
158
|
+
out += symbol3 + var + "\n"
|
156
159
|
|
157
160
|
out += symbol1 + "**Stateful Metrics**\n"
|
158
161
|
for name in ms.stateful_metrics.keys():
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/markdown.py
RENAMED
@@ -145,7 +145,7 @@ def write_boundary_action_markdown_report(ms, path, boundary_action, add_metadat
|
|
145
145
|
out += "\n"
|
146
146
|
out += "\n"
|
147
147
|
|
148
|
-
out += "## Constraints"
|
148
|
+
out += "## Constraints\n"
|
149
149
|
for i, x in enumerate(boundary_action.constraints):
|
150
150
|
out += "{}. {}".format(i + 1, x)
|
151
151
|
out += "\n"
|
@@ -179,6 +179,8 @@ def write_policy_markdown_report(ms, path, policy, add_metadata=True):
|
|
179
179
|
policy = ms.policies[policy]
|
180
180
|
if "Policies" not in os.listdir(path):
|
181
181
|
os.makedirs(path + "/Policies")
|
182
|
+
|
183
|
+
out = ""
|
182
184
|
if add_metadata:
|
183
185
|
metadata = policy.metadata
|
184
186
|
if len(metadata) > 0:
|
@@ -188,7 +190,7 @@ def write_policy_markdown_report(ms, path, policy, add_metadata=True):
|
|
188
190
|
""".format(
|
189
191
|
"\n".join(["{}: {}".format(x, metadata[x]) for x in metadata])
|
190
192
|
)
|
191
|
-
|
193
|
+
|
192
194
|
out += "## Description"
|
193
195
|
out += "\n"
|
194
196
|
out += "\n"
|
@@ -292,7 +294,9 @@ def write_mechanism_markdown_report(ms, path, mechanism, add_metadata=True):
|
|
292
294
|
out += "\n\n"
|
293
295
|
out += "## Updates\n\n"
|
294
296
|
for i, x in enumerate(mechanism.updates):
|
295
|
-
out += "{}. [[{}]].{}".format(
|
297
|
+
out += "{}. [[{}]].[[{}|{}]]".format(
|
298
|
+
i + 1, x[0].name, x[0].state.name + "-" + x[1].name, x[1].name
|
299
|
+
)
|
296
300
|
out += "\n"
|
297
301
|
|
298
302
|
with open("{}/Mechanisms/{}.md".format(path, mechanism.label), "w") as f:
|
@@ -472,8 +476,14 @@ def write_wiring_markdown_report(ms, path, wiring, add_metadata=True):
|
|
472
476
|
out += "\n"
|
473
477
|
|
474
478
|
out += "## All State Updates\n"
|
479
|
+
|
475
480
|
for i, x in enumerate(wiring.all_updates):
|
476
|
-
out += "{}. [[{}]].{}".format(
|
481
|
+
out += "{}. [[{}]].[[{}|{}]]".format(
|
482
|
+
i + 1,
|
483
|
+
x[0].name,
|
484
|
+
ms.entities[x[0].name].state.name + "-" + x[1].name,
|
485
|
+
x[1].name,
|
486
|
+
)
|
477
487
|
out += "\n"
|
478
488
|
out += "\n"
|
479
489
|
|
@@ -575,7 +585,7 @@ def write_metrics_markdown_report(ms, path, metric, add_metadata=True):
|
|
575
585
|
|
576
586
|
out += "## Variables Used\n"
|
577
587
|
for i, x in enumerate(metric.variables_used):
|
578
|
-
out += "{}. {}.{}".format(i + 1, x[0], x[1])
|
588
|
+
out += "{}. [[{}]].[[{}-{}|{}]]".format(i + 1, x[0], x[0], x[1], x[1])
|
579
589
|
var = ms.state[x[0]].variable_map[x[1]]
|
580
590
|
if var.symbol:
|
581
591
|
out += " , symbol: {}".format(var.symbol)
|
@@ -608,6 +618,45 @@ def write_displays_markdown_reports(ms, path, add_metadata=True):
|
|
608
618
|
)
|
609
619
|
|
610
620
|
|
621
|
+
def write_state_variables_markdown_reports(ms, path, state, add_metadata=True):
|
622
|
+
if "State Variables" not in os.listdir(path):
|
623
|
+
os.makedirs(path + "/State Variables")
|
624
|
+
state = ms.state[state]
|
625
|
+
for variable in state.variables:
|
626
|
+
out = ""
|
627
|
+
if add_metadata:
|
628
|
+
metadata = variable.metadata
|
629
|
+
if len(metadata) > 0:
|
630
|
+
out += """---
|
631
|
+
{}
|
632
|
+
---
|
633
|
+
""".format(
|
634
|
+
"\n".join(["{}: {}".format(x, metadata[x]) for x in metadata])
|
635
|
+
)
|
636
|
+
out += "Description: "
|
637
|
+
out += variable.description
|
638
|
+
out += "\n\n"
|
639
|
+
out += "Type: [["
|
640
|
+
out += variable.type.name
|
641
|
+
out += "]]\n\n"
|
642
|
+
out += "Symbol: "
|
643
|
+
if variable.symbol:
|
644
|
+
out += variable.symbol
|
645
|
+
out += "\n\n"
|
646
|
+
out += "Domain: "
|
647
|
+
if variable.domain:
|
648
|
+
out += variable.domain
|
649
|
+
out += "\n\n"
|
650
|
+
|
651
|
+
with open(
|
652
|
+
"{}/State Variables/{}.md".format(
|
653
|
+
path, "{}-{}".format(state.name, variable.name)
|
654
|
+
),
|
655
|
+
"w",
|
656
|
+
) as f:
|
657
|
+
f.write(out)
|
658
|
+
|
659
|
+
|
611
660
|
def write_wiring_display_markdown_report(ms, path, wiring, add_metadata=True):
|
612
661
|
wirings = [ms.wiring[w] for w in wiring["components"]]
|
613
662
|
out = ""
|
@@ -696,6 +745,7 @@ def write_all_markdown_reports(ms, path, clear_folders=False):
|
|
696
745
|
states = list(ms.state.keys())
|
697
746
|
for x in states:
|
698
747
|
write_state_markdown_report(ms, path, x)
|
748
|
+
write_state_variables_markdown_reports(ms, path, x)
|
699
749
|
|
700
750
|
# Write types
|
701
751
|
for t in ms.types.values():
|
@@ -51,6 +51,8 @@ def write_state_variable_table_markdown(target_state, links=False):
|
|
51
51
|
if tv:
|
52
52
|
if links and i == 2:
|
53
53
|
table += "[[{}]]".format(tv)
|
54
|
+
elif links and i == 0:
|
55
|
+
table += "[[{}-{}\|{}]]".format(target_state.name, tv, tv)
|
54
56
|
else:
|
55
57
|
table += "{}".format(tv)
|
56
58
|
table += "|"
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/schema.schema.json
RENAMED
@@ -360,7 +360,8 @@
|
|
360
360
|
"type": "string"
|
361
361
|
},
|
362
362
|
"description": "All metrics used in implementation of policies"
|
363
|
-
}
|
363
|
+
},
|
364
|
+
"metadata": {"type": "object"}
|
364
365
|
},
|
365
366
|
"required": [
|
366
367
|
"codomain",
|
@@ -390,7 +391,8 @@
|
|
390
391
|
"logic": {
|
391
392
|
"type": "string",
|
392
393
|
"description": "Any logic associated with the implementation"
|
393
|
-
}
|
394
|
+
},
|
395
|
+
"metadata": {"type": "object"}
|
394
396
|
},
|
395
397
|
"required": [
|
396
398
|
"description",
|
@@ -561,7 +563,8 @@
|
|
561
563
|
"domain": {
|
562
564
|
"type": ["string","null"],
|
563
565
|
"description": "The mathematical domain of the parameter (optional)"
|
564
|
-
}
|
566
|
+
},
|
567
|
+
"metadata": {"type": "object"}
|
565
568
|
},
|
566
569
|
"required": [
|
567
570
|
"description",
|
@@ -690,7 +693,8 @@
|
|
690
693
|
"items": {
|
691
694
|
"type": "integer"
|
692
695
|
}
|
693
|
-
}
|
696
|
+
},
|
697
|
+
"metadata": {"type": "object"}
|
694
698
|
},
|
695
699
|
"required": [
|
696
700
|
"components",
|
@@ -1 +0,0 @@
|
|
1
|
-
from .documentation import write_top_level_json_description
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/BoundaryAction.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/ControlAction.py
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Mechanism.py
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/Parameter.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/StatefulMetric.py
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Classes/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/boundary_actions.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/control_actions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/implementations.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Load/stateful_metrics.py
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/__init__.py
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/control_actions.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/general.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/mechanisms.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/node_map.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/parameters.py
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping/Reports/policies.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/requires.txt
RENAMED
File without changes
|
{math-spec-mapping-0.3.0 → math_spec_mapping-0.3.2}/src/math_spec_mapping.egg-info/top_level.txt
RENAMED
File without changes
|