math-spec-mapping 0.3.1__py3-none-any.whl → 0.3.3__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- math_spec_mapping/Classes/Block.py +2 -0
- math_spec_mapping/Classes/State.py +3 -1
- math_spec_mapping/Convenience/__init__.py +2 -1
- math_spec_mapping/Convenience/documentation.py +1 -1
- math_spec_mapping/Convenience/starter.py +271 -0
- math_spec_mapping/Load/boundary_actions.py +3 -1
- math_spec_mapping/Load/entities.py +5 -1
- math_spec_mapping/Load/parameters.py +3 -1
- math_spec_mapping/Load/states.py +1 -1
- math_spec_mapping/Load/type.py +2 -1
- math_spec_mapping/Reports/markdown.py +13 -9
- math_spec_mapping/__init__.py +1 -0
- math_spec_mapping/schema.schema.json +2 -1
- {math_spec_mapping-0.3.1.dist-info → math_spec_mapping-0.3.3.dist-info}/METADATA +1 -1
- {math_spec_mapping-0.3.1.dist-info → math_spec_mapping-0.3.3.dist-info}/RECORD +18 -18
- {math_spec_mapping-0.3.1.dist-info → math_spec_mapping-0.3.3.dist-info}/LICENSE +0 -0
- {math_spec_mapping-0.3.1.dist-info → math_spec_mapping-0.3.3.dist-info}/WHEEL +0 -0
- {math_spec_mapping-0.3.1.dist-info → math_spec_mapping-0.3.3.dist-info}/top_level.txt +0 -0
@@ -83,6 +83,7 @@ class Block:
|
|
83
83
|
updates = self.all_updates
|
84
84
|
else:
|
85
85
|
return "\n", {}
|
86
|
+
updates = sorted(updates, key=lambda x: x[0].name + "-" + x[1].name)
|
86
87
|
|
87
88
|
out = "\n"
|
88
89
|
out += 'subgraph SVS["State Variables"]\n'
|
@@ -90,6 +91,7 @@ class Block:
|
|
90
91
|
# Render the entities
|
91
92
|
entity_mapping = {}
|
92
93
|
entities = set([x[0] for x in updates])
|
94
|
+
entities = sorted(entities, key=lambda x: x.name)
|
93
95
|
for i, x in enumerate(entities):
|
94
96
|
entity_mapping[x.name] = "EE{}".format(i)
|
95
97
|
out += '{}[("{}")]'.format(entity_mapping[x.name], x.name)
|
@@ -31,7 +31,9 @@ class State:
|
|
31
31
|
# Check variable name not repeated
|
32
32
|
assert (
|
33
33
|
var.name not in self.variable_map
|
34
|
-
), "Variable name {} is already present in variables!".format(
|
34
|
+
), "Variable name {} is already present in variables for the state of {}!".format(
|
35
|
+
key, self.name
|
36
|
+
)
|
35
37
|
|
36
38
|
self.variable_map[key] = var
|
37
39
|
|
@@ -1 +1,2 @@
|
|
1
|
-
from .documentation import write_top_level_json_description
|
1
|
+
# from .documentation import write_top_level_json_description
|
2
|
+
from .starter import remove_dummy_repo_components
|
@@ -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)
|
@@ -42,7 +42,9 @@ def convert_boundary_action(data: Dict, ms: Dict) -> BoundaryAction:
|
|
42
42
|
for name in data["called_by"]:
|
43
43
|
assert (
|
44
44
|
name in ms["Entities"]
|
45
|
-
), "{} entity not in entities dictionary".format(
|
45
|
+
), "{} entity not in entities dictionary which is referenced in called_by for {}".format(
|
46
|
+
name, data["name"]
|
47
|
+
)
|
46
48
|
data["called_by"] = [ms["Entities"][x] for x in data["called_by"]]
|
47
49
|
|
48
50
|
data["codomain"] = tuple(ms["Spaces"][x] for x in data["codomain"])
|
@@ -25,7 +25,11 @@ def convert_entity(data: Dict, ms: Dict) -> Entity:
|
|
25
25
|
# Assert that the state is in the math spec and assign it here
|
26
26
|
if data["state"]:
|
27
27
|
name = data["state"]
|
28
|
-
assert
|
28
|
+
assert (
|
29
|
+
name in ms["State"]
|
30
|
+
), "{} state not in states dictionary for the entity of {}".format(
|
31
|
+
name, data["name"]
|
32
|
+
)
|
29
33
|
data["state"] = ms["State"][name]
|
30
34
|
|
31
35
|
# Build the state object
|
@@ -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
|
math_spec_mapping/Load/states.py
CHANGED
@@ -25,7 +25,7 @@ def convert_state(ms, data: Dict) -> State:
|
|
25
25
|
new_variables = []
|
26
26
|
for var in data["variables"]:
|
27
27
|
check_json_keys(var, "State Variable")
|
28
|
-
assert var["type"] in ms["Types"], "Type not in ms"
|
28
|
+
assert var["type"] in ms["Types"], "Type {} not in ms".format(var["name"])
|
29
29
|
var["type"] = ms["Types"][var["type"]]
|
30
30
|
if "metadata" not in var:
|
31
31
|
var["metadata"] = {}
|
math_spec_mapping/Load/type.py
CHANGED
@@ -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:
|
@@ -225,7 +225,7 @@ def write_policy_markdown_report(ms, path, policy, add_metadata=True):
|
|
225
225
|
out += "\n"
|
226
226
|
|
227
227
|
out += "## Parameters Used\n"
|
228
|
-
for i, x in enumerate(policy.parameters_used):
|
228
|
+
for i, x in enumerate(sorted(policy.parameters_used, key=lambda x: x)):
|
229
229
|
out += "{}. [[{}]]".format(i + 1, x)
|
230
230
|
out += "\n"
|
231
231
|
|
@@ -427,7 +427,7 @@ def write_wiring_markdown_report(ms, path, wiring, add_metadata=True):
|
|
427
427
|
out += "\n"
|
428
428
|
|
429
429
|
out += "## All Blocks\n"
|
430
|
-
for i, x in enumerate(wiring.components_full()):
|
430
|
+
for i, x in enumerate(sorted(wiring.components_full(), key=lambda x: x.name)):
|
431
431
|
out += "{}. [[{}]]".format(i + 1, x.name)
|
432
432
|
out += "\n"
|
433
433
|
|
@@ -452,13 +452,13 @@ def write_wiring_markdown_report(ms, path, wiring, add_metadata=True):
|
|
452
452
|
out += "\n"
|
453
453
|
|
454
454
|
out += "## All Spaces Used\n"
|
455
|
-
for i, x in enumerate(wiring.all_spaces_used):
|
455
|
+
for i, x in enumerate(sorted(wiring.all_spaces_used, key=lambda x: x.name)):
|
456
456
|
out += "{}. [[{}]]".format(i + 1, x.name)
|
457
457
|
out += "\n"
|
458
458
|
out += "\n"
|
459
459
|
|
460
460
|
out += "## Parameters Used\n"
|
461
|
-
for i, x in enumerate(wiring.parameters_used):
|
461
|
+
for i, x in enumerate(sorted(wiring.parameters_used, key=lambda x: x)):
|
462
462
|
out += "{}. [[{}]]".format(i + 1, x)
|
463
463
|
out += "\n"
|
464
464
|
out += "\n"
|
@@ -477,7 +477,9 @@ def write_wiring_markdown_report(ms, path, wiring, add_metadata=True):
|
|
477
477
|
|
478
478
|
out += "## All State Updates\n"
|
479
479
|
|
480
|
-
for i, x in enumerate(
|
480
|
+
for i, x in enumerate(
|
481
|
+
sorted(wiring.all_updates, key=lambda x: x[0].name + "-" + x[1].name)
|
482
|
+
):
|
481
483
|
out += "{}. [[{}]].[[{}|{}]]".format(
|
482
484
|
i + 1,
|
483
485
|
x[0].name,
|
@@ -536,7 +538,7 @@ def write_stateful_metrics_markdown_report(ms, path, metric, add_metadata=True):
|
|
536
538
|
out += "Domain: {}\n\n".format(metric.domain)
|
537
539
|
|
538
540
|
out += "## Parameters Used\n"
|
539
|
-
for i, x in enumerate(metric.parameters_used):
|
541
|
+
for i, x in enumerate(sorted(metric.parameters_used, key=lambda x: x.name)):
|
540
542
|
out += "{}. [[{}]]".format(i + 1, x)
|
541
543
|
out += "\n"
|
542
544
|
out += "\n"
|
@@ -575,7 +577,7 @@ def write_metrics_markdown_report(ms, path, metric, add_metadata=True):
|
|
575
577
|
out += "\n\n"
|
576
578
|
|
577
579
|
out += "## Parameters Used\n"
|
578
|
-
for i, x in enumerate(metric.parameters_used):
|
580
|
+
for i, x in enumerate(sorted(metric.parameters_used, key=lambda x: x.name)):
|
579
581
|
out += "{}. [[{}]]".format(i + 1, x)
|
580
582
|
var = ms.parameters.parameter_map[x]
|
581
583
|
if var.symbol:
|
@@ -585,7 +587,7 @@ def write_metrics_markdown_report(ms, path, metric, add_metadata=True):
|
|
585
587
|
|
586
588
|
out += "## Variables Used\n"
|
587
589
|
for i, x in enumerate(metric.variables_used):
|
588
|
-
out += "{}. {}.{}".format(i + 1, x[0], x[1])
|
590
|
+
out += "{}. [[{}]].[[{}-{}|{}]]".format(i + 1, x[0], x[0], x[1], x[1])
|
589
591
|
var = ms.state[x[0]].variable_map[x[1]]
|
590
592
|
if var.symbol:
|
591
593
|
out += " , symbol: {}".format(var.symbol)
|
@@ -683,6 +685,7 @@ def write_wiring_display_markdown_report(ms, path, wiring, add_metadata=True):
|
|
683
685
|
out += "## Unique Components Used\n"
|
684
686
|
components = [set(x.components_full()) for x in wirings]
|
685
687
|
components = set().union(*components)
|
688
|
+
components = sorted(components, key=lambda x: x.name)
|
686
689
|
for i, x in enumerate(components):
|
687
690
|
out += "{}. [[{}]]".format(i + 1, x.name)
|
688
691
|
out += "\n"
|
@@ -706,8 +709,9 @@ def write_wiring_display_markdown_report(ms, path, wiring, add_metadata=True):
|
|
706
709
|
|
707
710
|
parameters = [set(x.parameters_used) for x in wirings]
|
708
711
|
parameters = set().union(*parameters)
|
712
|
+
parameters = sorted(parameters, key=lambda x: x)
|
709
713
|
out += "## Unique Parameters Used\n"
|
710
|
-
for i, x in enumerate(parameters):
|
714
|
+
for i, x in enumerate(sorted(parameters, key=lambda x: x.name)):
|
711
715
|
out += "{}. [[{}]]".format(i + 1, x)
|
712
716
|
out += "\n"
|
713
717
|
out += "\n"
|
math_spec_mapping/__init__.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
math_spec_mapping/__init__.py,sha256=
|
1
|
+
math_spec_mapping/__init__.py,sha256=CzT9KycdX5nuiUzDFmLXVeAIr8v8UKGbXsEQF8vjl1c,961
|
2
2
|
math_spec_mapping/schema.py,sha256=6mrRqzEnTTSXjb19xJ63MBp0KjKH0s7i6TfT4MkAY9k,233
|
3
|
-
math_spec_mapping/schema.schema.json,sha256=
|
3
|
+
math_spec_mapping/schema.schema.json,sha256=5_DiubQzPo8koyx5PKFh_zIINyjtrhGWG_7N73s9b1Q,29400
|
4
4
|
math_spec_mapping/Classes/ActionTransmissionChannel.py,sha256=zWMo5QsgPh5WGIWXl-xOrZNMXYJXmK6Vejw1dQvi0og,246
|
5
|
-
math_spec_mapping/Classes/Block.py,sha256=
|
5
|
+
math_spec_mapping/Classes/Block.py,sha256=OsWM1ZAi6ZvavDhMFJi_H7w8ZF9LqJIKR3ZLTXnts9w,17437
|
6
6
|
math_spec_mapping/Classes/BoundaryAction.py,sha256=AOENCqCEfpjotnHhzUj_F2SOP0SGpkN1tNPr8Mtl6Tc,476
|
7
7
|
math_spec_mapping/Classes/ControlAction.py,sha256=ysqpgANwdizVdwqtgZmnxXMpCqrzmVEF_6YT0M3l4Ho,526
|
8
8
|
math_spec_mapping/Classes/Entity.py,sha256=fA0-b128_OHHxfCg4pzqyQV083EYev1HlVpy86S5igg,1226
|
@@ -12,39 +12,39 @@ math_spec_mapping/Classes/Metric.py,sha256=AhPgYppOP6q49xvR8S9STxQsXUKJlTWx7wI1L
|
|
12
12
|
math_spec_mapping/Classes/Parameter.py,sha256=ZuJ_w0sChvRElJ4sOnXZ2EV4Ell2xXFulKLjVOpgz2E,1237
|
13
13
|
math_spec_mapping/Classes/Policy.py,sha256=fzV85tB3QScjiYGfhw_dyQt9L1BYYfTyTIQQcxeT8ac,530
|
14
14
|
math_spec_mapping/Classes/Space.py,sha256=QsahxoUfRsDWQLBL683KnGx72MAmRxv7CDE7TMgCG-E,472
|
15
|
-
math_spec_mapping/Classes/State.py,sha256=
|
15
|
+
math_spec_mapping/Classes/State.py,sha256=U40DoF2qlx_k9gvqQiP1S3C9ZLk3cW_-jmJn71TiCxg,1599
|
16
16
|
math_spec_mapping/Classes/StateUpdateTransmissionChannel.py,sha256=3hBLvD1lE64PkwqksBXAfFWv7foOZzGQLAFQWy42tOA,257
|
17
17
|
math_spec_mapping/Classes/StatefulMetric.py,sha256=UCis1BJ7fsajHHxFF05ZiyDean2D4s4a95uYYW1Mjq4,749
|
18
18
|
math_spec_mapping/Classes/Type.py,sha256=2KFY8d3cv1PzJJ7SSMHJf1zcfQ3ZbqxotK2KgTaLZdM,289
|
19
19
|
math_spec_mapping/Classes/__init__.py,sha256=0zxgOqns_9JybD74HKMVh6aw8ij8WVbfQ4Q_1uWzof0,761
|
20
|
-
math_spec_mapping/Convenience/__init__.py,sha256
|
21
|
-
math_spec_mapping/Convenience/documentation.py,sha256=
|
22
|
-
math_spec_mapping/Convenience/starter.py,sha256=
|
20
|
+
math_spec_mapping/Convenience/__init__.py,sha256=z2W-E5Wg1CNEkDI5UqH3qIVBqp-3A1e63f3u9fA-N7w,112
|
21
|
+
math_spec_mapping/Convenience/documentation.py,sha256=1ziWVJznbCUxeAAt03nAdEYtMlXNo5TeedHfgs0vSBU,1625
|
22
|
+
math_spec_mapping/Convenience/starter.py,sha256=Pv0b5pHnv5Bxk3PkY8O9Nv62z2C_gxj5xcf8G9r4Pkw,11010
|
23
23
|
math_spec_mapping/Load/__init__.py,sha256=_ga5nHi7U5rY5lCF36_XI9Qmybq4P8R4m5I5mmjLBk8,33
|
24
24
|
math_spec_mapping/Load/action_transmission_channel.py,sha256=9Wer7g2s5SSOcUYuZ0PqSKUVVnW3EvGQJZNXJTwW__0,2561
|
25
|
-
math_spec_mapping/Load/boundary_actions.py,sha256=
|
25
|
+
math_spec_mapping/Load/boundary_actions.py,sha256=mKX4hUHlX4xoJzm-6W3W3AjWRC9RNiEWb0al7lN0DBs,2142
|
26
26
|
math_spec_mapping/Load/control_actions.py,sha256=4E57s730W4tX5SaKXKaAvet37r8Bwt-g8Kk6EanF4TU,2042
|
27
27
|
math_spec_mapping/Load/displays.py,sha256=ooHWT_OryzEkp7F3LcGywwdLMRJLxuyPK82zJ3gcyN0,414
|
28
|
-
math_spec_mapping/Load/entities.py,sha256=
|
28
|
+
math_spec_mapping/Load/entities.py,sha256=Ds7VQY_govWEn1vSHYVrLa8IadSNyOQzaCK18JPYPKk,1289
|
29
29
|
math_spec_mapping/Load/general.py,sha256=2q6aGKxXhebiHHTZhtACvM4nWIkTben0o5rXuvfv2Vw,4463
|
30
30
|
math_spec_mapping/Load/implementations.py,sha256=SGKZ_YXeNpJUTnw5fajQTXji7S2bNQo8sh-7YcIO6pk,395
|
31
31
|
math_spec_mapping/Load/load.py,sha256=CLprDhJpbwm9RAzKM2Ghwr8eqBu0a-wvGDOCMmc01YE,2484
|
32
32
|
math_spec_mapping/Load/mechanism.py,sha256=JBy-QpB4W0Z2OcNiakONjD4_RtEgxlFKtLXfDqfhR-0,2037
|
33
33
|
math_spec_mapping/Load/metrics.py,sha256=EyCFEgHpyffBPKaqISdIeTyqUtPtu2xoS0gZjh-6i3U,3434
|
34
|
-
math_spec_mapping/Load/parameters.py,sha256=
|
34
|
+
math_spec_mapping/Load/parameters.py,sha256=W4utm7to3s2fo4z3XgLH0TM1agaIad1qfM2I-lLMua4,1393
|
35
35
|
math_spec_mapping/Load/policy.py,sha256=HvlhGHGJTweVs7DOI2HSL_2_diECr8ukDUmzoFLQELo,2444
|
36
36
|
math_spec_mapping/Load/spaces.py,sha256=7zgGA57Te7T4hfuCCDElffiidWgn1lKm5E14e1yjt8M,1116
|
37
37
|
math_spec_mapping/Load/state_update_transmission_channels.py,sha256=FJWp5n4HdtHAfof5BUQ6BnRakljatL2h8dWCapaVSc0,2238
|
38
38
|
math_spec_mapping/Load/stateful_metrics.py,sha256=uGSTc6x6lld5xptgSUMHrO0Vg0QDRIL14C6zTg33S8o,1977
|
39
|
-
math_spec_mapping/Load/states.py,sha256=
|
40
|
-
math_spec_mapping/Load/type.py,sha256=
|
39
|
+
math_spec_mapping/Load/states.py,sha256=WTLvonzrUQWDVnkF9OPzHeyImrxoMPmonEl5O9O6Pxg,1313
|
40
|
+
math_spec_mapping/Load/type.py,sha256=z6cBdBNjWed7cRyA0Bj7Jd5PmtemVVh07n3mWFj_5U4,4356
|
41
41
|
math_spec_mapping/Load/wiring.py,sha256=1dR94U5N1W_WI5rL6lYBltH25ZvApB2pIpq9r5Opkug,3083
|
42
42
|
math_spec_mapping/Reports/__init__.py,sha256=W27I6S9Ro1hWeHmnxIokCA06awB__eYey7PvKD4Hc1s,933
|
43
43
|
math_spec_mapping/Reports/boundary_actions.py,sha256=45BPp4QjWdD-3E9ZWwqgj_nI2-YdcI2ZZ19_Qv_K7Qk,1410
|
44
44
|
math_spec_mapping/Reports/control_actions.py,sha256=NksekZKIPFSIkubttFstKFthc5AU9B9PWRLSl9j1wWs,1216
|
45
45
|
math_spec_mapping/Reports/general.py,sha256=WOOn6Wlb8M4fsdN49FlKLwOka6vJPQ9aCUy88TL2ki0,1610
|
46
46
|
math_spec_mapping/Reports/html.py,sha256=tqydmwFWz_1Bg_J_avG4t9LtE-DUGbOKAPNuwg6lgRI,9007
|
47
|
-
math_spec_mapping/Reports/markdown.py,sha256=
|
47
|
+
math_spec_mapping/Reports/markdown.py,sha256=K1amcJrAs4dNv9mN8NeC8U97RtWGJrRmJfEkZlAn_jA,22881
|
48
48
|
math_spec_mapping/Reports/mechanisms.py,sha256=d2Rxt3JBYvqAOAYUynl0buYVoXEHrO8EGq7GK6hK8NA,1322
|
49
49
|
math_spec_mapping/Reports/node_map.py,sha256=FdSMDQG16NX6n9sZcH-T5xwsvgjrV9OqBHc9J_VlNK0,3129
|
50
50
|
math_spec_mapping/Reports/parameters.py,sha256=yizNG4lNGrgrlzYYcHMGfXKDFlPw4PMDYshDqZ3YARs,535
|
@@ -53,8 +53,8 @@ math_spec_mapping/Reports/spaces.py,sha256=-76hR5wQBv4lsG000ypBJ-OprjsNjI-rNRMYd
|
|
53
53
|
math_spec_mapping/Reports/state.py,sha256=RkqfSonar74KVC8PpA9GgI2xaHX6BrkNdAuWMZlYQfI,2321
|
54
54
|
math_spec_mapping/Reports/tables.py,sha256=O0CNuqh3LMECq5uLjBOoxMUk5hUvkUK660FNnwWUxDY,1505
|
55
55
|
math_spec_mapping/Reports/wiring.py,sha256=u9SvKWy6T-WJUEgFI6-zgZanoOaTTs_2YwmEceDLsV8,1618
|
56
|
-
math_spec_mapping-0.3.
|
57
|
-
math_spec_mapping-0.3.
|
58
|
-
math_spec_mapping-0.3.
|
59
|
-
math_spec_mapping-0.3.
|
60
|
-
math_spec_mapping-0.3.
|
56
|
+
math_spec_mapping-0.3.3.dist-info/LICENSE,sha256=ObyEzSw8kgCaFbEfpu1zP4TrcAKLA0xhqHMZZfyh7N0,1069
|
57
|
+
math_spec_mapping-0.3.3.dist-info/METADATA,sha256=M8t5087vsXIk7Xw-SROeZa8xWRuuMs2lkaqswl0_srU,6012
|
58
|
+
math_spec_mapping-0.3.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
59
|
+
math_spec_mapping-0.3.3.dist-info/top_level.txt,sha256=AImhn9wgazkdV0a9vfiphtQR8uGe2nq-ZIOp-6yUk9o,18
|
60
|
+
math_spec_mapping-0.3.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|