math-spec-mapping 0.3.10__py3-none-any.whl → 0.3.12__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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):
@@ -778,6 +789,7 @@ class MathSpecImplementation:
778
789
  self.metrics = self.load_metrics()
779
790
  self.load_wiring()
780
791
  self.load_components()
792
+ self.load_source_files()
781
793
 
782
794
  def load_control_actions(self):
783
795
  control_actions = {}
@@ -1046,13 +1058,27 @@ class MathSpecImplementation:
1046
1058
  state["Metrics"] = self.metrics
1047
1059
  if state_preperation_functions:
1048
1060
  for f in state_preperation_functions:
1049
- state = f(state)
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"
1050
1069
  assert (
1051
1070
  state is not None
1052
1071
  ), "A state must be returned from the state preperation functions"
1053
1072
  if parameter_preperation_functions:
1054
1073
  for f in parameter_preperation_functions:
1055
- params = f(params)
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"
1056
1082
  assert (
1057
1083
  params is not None
1058
1084
  ), "A parameter set must be returned from the parameter preperation functions"
@@ -1070,3 +1096,16 @@ class MathSpecImplementation:
1070
1096
  for block in blocks:
1071
1097
  self.components[block](state, params, [])
1072
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")
@@ -15,7 +15,9 @@ def write_out_params(ms: MathSpec, params: List[str]) -> str:
15
15
  return out
16
16
 
17
17
 
18
- def write_parameter_table_markdown(ms, initial_values=None, links=False):
18
+ def write_parameter_table_markdown(
19
+ ms, initial_values=None, links=False, compress_arrays=False
20
+ ):
19
21
  if initial_values:
20
22
  table = """| Name | Description | Parameter Class | Symbol | Domain | Initial Value |
21
23
  | --- | --- | --- | --- | --- | --- |
@@ -43,7 +45,16 @@ def write_parameter_table_markdown(ms, initial_values=None, links=False):
43
45
  table += "{}".format(tv)
44
46
  table += "|"
45
47
  if initial_values:
46
- table += " {} |".format(initial_values[var.name])
48
+ if compress_arrays:
49
+ iv = initial_values[var.name]
50
+ if type(iv) == list:
51
+ if len(iv) > 4:
52
+ iv = "[{}, {}, ... , {}, {}]".format(
53
+ iv[0], iv[1], iv[-2], iv[-1]
54
+ )
55
+ table += " {} |".format(iv)
56
+ else:
57
+ table += " {} |".format(initial_values[var.name])
47
58
 
48
59
  table += "\n"
49
60
 
@@ -33,7 +33,9 @@ def write_state_variable_table(target_state, links=False):
33
33
  return table
34
34
 
35
35
 
36
- def write_state_variable_table_markdown(target_state, initial_values=None, links=False):
36
+ def write_state_variable_table_markdown(
37
+ target_state, initial_values=None, links=False, compress_arrays=False
38
+ ):
37
39
  if initial_values:
38
40
  table = """| Name | Description | Type | Symbol | Domain | Initial Value |
39
41
  | --- | --- | --- | --- | --- | --- |
@@ -62,18 +64,32 @@ def write_state_variable_table_markdown(target_state, initial_values=None, links
62
64
  table += "{}".format(tv)
63
65
  table += "|"
64
66
  if initial_values:
65
- table += " {} |".format(initial_values[var.name])
67
+ if compress_arrays:
68
+ iv = initial_values[var.name]
69
+ if type(iv) == list:
70
+ if len(iv) > 4:
71
+ iv = "[{}, {}, ... , {}, {}]".format(
72
+ iv[0], iv[1], iv[-2], iv[-1]
73
+ )
74
+ table += " {} |".format(iv)
75
+ else:
76
+ table += " {} |".format(initial_values[var.name])
66
77
 
67
78
  table += "\n"
68
79
 
69
80
  return table
70
81
 
71
82
 
72
- def write_initial_state_variables_tables(ms, initial_values, links=False):
83
+ def write_initial_state_variables_tables(
84
+ ms, initial_values, links=False, compress_arrays=False
85
+ ):
73
86
  out = "### Global State"
74
87
  out += "\n\n"
75
88
  out += write_state_variable_table_markdown(
76
- ms.state["Global State"], initial_values=initial_values, links=links
89
+ ms.state["Global State"],
90
+ initial_values=initial_values,
91
+ links=links,
92
+ compress_arrays=compress_arrays,
77
93
  )
78
94
  out += "\n"
79
95
  for x in ms.state:
@@ -82,7 +98,9 @@ def write_initial_state_variables_tables(ms, initial_values, links=False):
82
98
 
83
99
  out += "### {}".format(x)
84
100
  out += "\n\n"
85
- out += write_state_variable_table_markdown(ms.state[x], links=links)
101
+ out += write_state_variable_table_markdown(
102
+ ms.state[x], links=links, compress_arrays=compress_arrays
103
+ )
86
104
  out += "\n"
87
105
 
88
106
  return out
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: math-spec-mapping
3
- Version: 0.3.10
3
+ Version: 0.3.12
4
4
  Summary: A library for easy mapping of mathematical specifications.
5
5
  Author-email: Sean McOwen <Sean@Block.Science>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -6,7 +6,7 @@ math_spec_mapping/Classes/Block.py,sha256=cGtIhNgRfoDZ0O3SxeXcNzNlHcdXIB89sT2uaZ
6
6
  math_spec_mapping/Classes/BoundaryAction.py,sha256=_rFvEZ4LNxmlM59js4SuQ9n5CgVmITw4YWKs0-q0r-4,560
7
7
  math_spec_mapping/Classes/ControlAction.py,sha256=4AzMSA8fbnUf-fGlvMJXHJFbz32G1h1QVWf2yzrXrLA,493
8
8
  math_spec_mapping/Classes/Entity.py,sha256=fA0-b128_OHHxfCg4pzqyQV083EYev1HlVpy86S5igg,1226
9
- math_spec_mapping/Classes/MathSpec.py,sha256=8gU1EgVuiHjI7olVXJiPgFQlDUF2sEcjmGZ2cQv86k0,40475
9
+ math_spec_mapping/Classes/MathSpec.py,sha256=MnQQQMAk8VojjTzao56MBN3rvO_fexQrkh5SAGmWpP8,42033
10
10
  math_spec_mapping/Classes/Mechanism.py,sha256=2sLm3wYBIeTQaMBcsJ9btqIWsbS895Ra8NY6Y9_G_Dg,379
11
11
  math_spec_mapping/Classes/Metric.py,sha256=iQhH4g8Z60QlM22nPX9ytGmidOsZSiSs0KjqwmsScwU,636
12
12
  math_spec_mapping/Classes/Parameter.py,sha256=ZuJ_w0sChvRElJ4sOnXZ2EV4Ell2xXFulKLjVOpgz2E,1237
@@ -47,14 +47,14 @@ math_spec_mapping/Reports/html.py,sha256=zRo67S81pIRK_sttuFy8Y06qllen_K0lNS1qeHQ
47
47
  math_spec_mapping/Reports/markdown.py,sha256=SdhgOMpMBnGKWDG0cimk-LI_UqjQDPy87IxTb-PrBQ0,22866
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
- math_spec_mapping/Reports/parameters.py,sha256=T73OKY3dWufeYEb6jSxGQH6GH4PSZLMmZcaV1m8qUn0,1553
50
+ math_spec_mapping/Reports/parameters.py,sha256=-ucL71lolqU0xvV7yb0sXl4pFMRl5tXNWdoBfUjLOaQ,1944
51
51
  math_spec_mapping/Reports/policies.py,sha256=EuBzBsTM6QSS_GHFcAyhGgWvDDZwRuKe7Eos9nX13ho,1814
52
52
  math_spec_mapping/Reports/spaces.py,sha256=-76hR5wQBv4lsG000ypBJ-OprjsNjI-rNRMYdtsYnjQ,579
53
- math_spec_mapping/Reports/state.py,sha256=EPiHz3cDCEPHnVjuFruVKaGJ2SclUfGUFvvOukiHPNg,3110
53
+ math_spec_mapping/Reports/state.py,sha256=QYeCvX5cHeZBrbvMeDsTqJcUDTuDFJSLvPbasjLspk8,3643
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.10.dist-info/LICENSE,sha256=ObyEzSw8kgCaFbEfpu1zP4TrcAKLA0xhqHMZZfyh7N0,1069
57
- math_spec_mapping-0.3.10.dist-info/METADATA,sha256=GeiDgMZu2pfRgBwMMI1hG4dioScjJ0C3qH8AhN9Ewm4,6501
58
- math_spec_mapping-0.3.10.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
59
- math_spec_mapping-0.3.10.dist-info/top_level.txt,sha256=AImhn9wgazkdV0a9vfiphtQR8uGe2nq-ZIOp-6yUk9o,18
60
- math_spec_mapping-0.3.10.dist-info/RECORD,,
56
+ math_spec_mapping-0.3.12.dist-info/LICENSE,sha256=ObyEzSw8kgCaFbEfpu1zP4TrcAKLA0xhqHMZZfyh7N0,1069
57
+ math_spec_mapping-0.3.12.dist-info/METADATA,sha256=0vIDBOENySVkVAwdDuRbtZ84uOKAEwWLj9qwaR6-Mh8,6501
58
+ math_spec_mapping-0.3.12.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
59
+ math_spec_mapping-0.3.12.dist-info/top_level.txt,sha256=AImhn9wgazkdV0a9vfiphtQR8uGe2nq-ZIOp-6yUk9o,18
60
+ math_spec_mapping-0.3.12.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5