fmu-manipulation-toolbox 1.8.4.3b0__tar.gz → 1.9rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/PKG-INFO +1 -1
  2. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/README.md +8 -3
  3. fmu_manipulation_toolbox-1.9rc1/fmu_manipulation_toolbox/__version__.py +1 -0
  4. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/assembly.py +20 -11
  5. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/container.py +365 -170
  6. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/operations.py +129 -92
  7. fmu_manipulation_toolbox-1.9rc1/fmu_manipulation_toolbox/resources/darwin64/container.dylib +0 -0
  8. fmu_manipulation_toolbox-1.9rc1/fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
  9. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/win32/client_sm.dll +0 -0
  10. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/win32/server_sm.exe +0 -0
  11. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/win64/client_sm.dll +0 -0
  12. fmu_manipulation_toolbox-1.9rc1/fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
  13. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/win64/server_sm.exe +0 -0
  14. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/split.py +33 -9
  15. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/PKG-INFO +1 -1
  16. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/SOURCES.txt +1 -0
  17. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/setup.py +1 -0
  18. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/tests/test_suite.py +18 -0
  19. fmu_manipulation_toolbox-1.8.4.3b0/fmu_manipulation_toolbox/__version__.py +0 -1
  20. fmu_manipulation_toolbox-1.8.4.3b0/fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
  21. fmu_manipulation_toolbox-1.8.4.3b0/fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
  22. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/LICENSE.txt +0 -0
  23. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/__init__.py +0 -0
  24. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/__main__.py +0 -0
  25. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/checker.py +0 -0
  26. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/gui.py +0 -0
  27. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/gui_style.py +0 -0
  28. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/help.py +0 -0
  29. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-checked-disabled.png +0 -0
  30. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-checked-hover.png +0 -0
  31. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-checked.png +0 -0
  32. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-unchecked-disabled.png +0 -0
  33. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-unchecked-hover.png +0 -0
  34. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/checkbox-unchecked.png +0 -0
  35. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/container.png +0 -0
  36. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/drop_fmu.png +0 -0
  37. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Annotation.xsd +0 -0
  38. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2AttributeGroups.xsd +0 -0
  39. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ModelDescription.xsd +0 -0
  40. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ScalarVariable.xsd +0 -0
  41. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Type.xsd +0 -0
  42. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Unit.xsd +0 -0
  43. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2VariableDependency.xsd +0 -0
  44. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Annotation.xsd +0 -0
  45. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3AttributeGroups.xsd +0 -0
  46. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3BuildDescription.xsd +0 -0
  47. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3InterfaceType.xsd +0 -0
  48. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3LayeredStandardManifest.xsd +0 -0
  49. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3ModelDescription.xsd +0 -0
  50. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Terminal.xsd +0 -0
  51. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3TerminalsAndIcons.xsd +0 -0
  52. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Type.xsd +0 -0
  53. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Unit.xsd +0 -0
  54. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Variable.xsd +0 -0
  55. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmi-3.0/fmi3VariableDependency.xsd +0 -0
  56. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmu.png +0 -0
  57. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/fmu_manipulation_toolbox.png +0 -0
  58. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/help.png +0 -0
  59. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/icon-round.png +0 -0
  60. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/icon.png +0 -0
  61. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/icon_fmu.png +0 -0
  62. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/license.txt +0 -0
  63. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/linux32/client_sm.so +0 -0
  64. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/linux32/server_sm +0 -0
  65. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/linux64/client_sm.so +0 -0
  66. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/linux64/server_sm +0 -0
  67. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/mask.png +0 -0
  68. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/resources/model.png +0 -0
  69. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox/version.py +0 -0
  70. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/dependency_links.txt +0 -0
  71. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/entry_points.txt +0 -0
  72. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/requires.txt +0 -0
  73. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/fmu_manipulation_toolbox.egg-info/top_level.txt +0 -0
  74. {fmu_manipulation_toolbox-1.8.4.3b0 → fmu_manipulation_toolbox-1.9rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu_manipulation_toolbox
3
- Version: 1.8.4.3b0
3
+ Version: 1.9rc1
4
4
  Summary: FMU Manipulation Toolbox is a python application for modifying Functional Mock-up Units (FMUs) without recompilation or bundling them into FMU Containers
5
5
  Home-page: https://github.com/grouperenault/fmu_manipulation_toolbox/
6
6
  Author: Nicolas.LAURENT@Renault.com
@@ -131,24 +131,29 @@ optional arguments:
131
131
  ### FMU Containers
132
132
 
133
133
  ```
134
- usage: fmucontainer [-h] [-fmu-directory FMU_DIRECTORY] -container filename.{csv|json|ssp},[:step_size] [-debug]
135
- [-no-auto-input] [-no-auto-output] [-auto-parameter] [-no-auto-link] [-mt] [-profile] [-dump-json]
134
+ usage: fmucontainer [-h] [-fmu-directory FMU_DIRECTORY] [-fmi FMI_VERSION]
135
+ -container filename.{csv|json|ssp},[:step_size] [-debug] [-no-auto-input] [-no-auto-output]
136
+ [-auto-parameter] [-auto-local] [-no-auto-link] [-mt] [-profile] [-sequential] [-dump-json]
136
137
 
137
138
  Generate FMU from FMU's
138
139
 
139
- optional arguments:
140
+ options:
140
141
  -h, -help
141
142
  -fmu-directory FMU_DIRECTORY Directory containing initial FMU’s and used to generate containers. If not defined,
142
143
  current directory is used. (default: .)
144
+ -fmi FMI_VERSION Define version of FMI to be used for container interface.Only '2' or '3' is
145
+ supported. (default: 2)
143
146
  -container filename.{csv|json|ssp},[:step_size]
144
147
  Description of the container to create. (default: [])
145
148
  -debug Add lot of useful log during the process. (default: False)
146
149
  -no-auto-input Create ONLY explicit input. (default: True)
147
150
  -no-auto-output Create ONLY explicit output. (default: True)
148
151
  -auto-parameter Expose parameters of the embedded fmu's. (default: False)
152
+ -auto-local Expose local variables of the embedded fmu's. (default: False)
149
153
  -no-auto-link Create ONLY explicit links. (default: True)
150
154
  -mt Enable Multi-Threaded mode for the generated container. (default: False)
151
155
  -profile Enable Profiling mode for the generated container. (default: False)
156
+ -sequential Use sequential mode to schedule embedded fmu's. (default: False)
152
157
  -dump-json Dump a JSON file for each container. (default: False)
153
158
  ```
154
159
 
@@ -37,7 +37,7 @@ class Connection:
37
37
 
38
38
 
39
39
  class AssemblyNode:
40
- def __init__(self, name: Optional[str], step_size: float = None, mt=False, profiling=False,
40
+ def __init__(self, name: Optional[str], step_size: float = None, mt=False, profiling=False, sequential=False,
41
41
  auto_link=True, auto_input=True, auto_output=True, auto_parameter=False, auto_local=False):
42
42
  self.name = name
43
43
  if step_size:
@@ -50,6 +50,7 @@ class AssemblyNode:
50
50
  self.step_size = None
51
51
  self.mt = mt
52
52
  self.profiling = profiling
53
+ self.sequential = sequential
53
54
  self.auto_link = auto_link
54
55
  self.auto_input = auto_input
55
56
  self.auto_output = auto_output
@@ -100,12 +101,13 @@ class AssemblyNode:
100
101
  def add_start_value(self, fmu_filename: str, port_name: str, value: str):
101
102
  self.start_values[Port(fmu_filename, port_name)] = value
102
103
 
103
- def make_fmu(self, fmu_directory: Path, debug=False, description_pathname=None):
104
+ def make_fmu(self, fmu_directory: Path, debug=False, description_pathname=None, fmi_version=2):
104
105
  for node in self.children.values():
105
106
  node.make_fmu(fmu_directory, debug=debug)
106
107
 
107
108
  identifier = str(Path(self.name).stem)
108
- container = FMUContainer(identifier, fmu_directory, description_pathname=description_pathname)
109
+ container = FMUContainer(identifier, fmu_directory, description_pathname=description_pathname,
110
+ fmi_version=fmi_version)
109
111
 
110
112
  for fmu_name in self.fmu_names_list:
111
113
  container.get_fmu(fmu_name)
@@ -138,7 +140,8 @@ class AssemblyNode:
138
140
  for link_rule in wired.rule_link:
139
141
  self.add_link(link_rule[0], link_rule[1], link_rule[2], link_rule[3])
140
142
 
141
- container.make_fmu(self.name, self.step_size, mt=self.mt, profiling=self.profiling, debug=debug)
143
+ container.make_fmu(self.name, self.step_size, mt=self.mt, profiling=self.profiling, sequential=self.sequential,
144
+ debug=debug)
142
145
 
143
146
  for node in self.children.values():
144
147
  logger.info(f"Deleting transient FMU Container '{node.name}'")
@@ -216,7 +219,7 @@ class AssemblyError(Exception):
216
219
 
217
220
 
218
221
  class Assembly:
219
- def __init__(self, filename: str, step_size=None, auto_link=True, auto_input=True, debug=False,
222
+ def __init__(self, filename: str, step_size=None, auto_link=True, auto_input=True, debug=False, sequential=False,
220
223
  auto_output=True, mt=False, profiling=False, fmu_directory: Path = Path("."), auto_parameter=False,
221
224
  auto_local=False):
222
225
  self.filename = Path(filename)
@@ -228,6 +231,7 @@ class Assembly:
228
231
  self.default_auto_parameter = auto_parameter
229
232
  self.default_auto_local = auto_local
230
233
  self.default_mt = mt
234
+ self.default_sequential = sequential
231
235
  self.default_profiling = profiling
232
236
  self.fmu_directory = fmu_directory
233
237
  self.transient_filenames: List[Path] = []
@@ -238,7 +242,7 @@ class Assembly:
238
242
 
239
243
  self.input_pathname = fmu_directory / self.filename
240
244
  self.description_pathname = self.input_pathname # For inclusion in FMU
241
- self.root = None
245
+ self.root: Optional[AssemblyNode] = None
242
246
  self.read()
243
247
 
244
248
  def add_transient_file(self, filename: str):
@@ -283,8 +287,9 @@ class Assembly:
283
287
  name = str(self.filename.with_suffix(".fmu"))
284
288
  self.root = AssemblyNode(name, step_size=self.default_step_size, auto_link=self.default_auto_link,
285
289
  mt=self.default_mt, profiling=self.default_profiling,
286
- auto_input=self.default_auto_input, auto_output=self.default_auto_output,
287
- auto_parameter=self.default_auto_parameter, auto_local=self.default_auto_local)
290
+ sequential=self.default_sequential, auto_input=self.default_auto_input,
291
+ auto_output=self.default_auto_output, auto_parameter=self.default_auto_parameter,
292
+ auto_local=self.default_auto_local)
288
293
 
289
294
  with open(self.input_pathname) as file:
290
295
  reader = csv.reader(file, delimiter=';')
@@ -385,6 +390,7 @@ class Assembly:
385
390
  name = data.get("name", None) # 1
386
391
  mt = data.get("mt", self.default_mt) # 2
387
392
  profiling = data.get("profiling", self.default_profiling) # 3
393
+ sequential = data.get("sequential", self.default_sequential) # 3b
388
394
  auto_link = data.get("auto_link", self.default_auto_link) # 4
389
395
  auto_input = data.get("auto_input", self.default_auto_input) # 5
390
396
  auto_output = data.get("auto_output", self.default_auto_output) # 6
@@ -393,11 +399,12 @@ class Assembly:
393
399
  step_size = data.get("step_size", self.default_step_size) # 7
394
400
 
395
401
  node = AssemblyNode(name, step_size=step_size, auto_link=auto_link, mt=mt, profiling=profiling,
402
+ sequential=sequential,
396
403
  auto_input=auto_input, auto_output=auto_output, auto_parameter=auto_parameter,
397
404
  auto_local=auto_local)
398
405
 
399
406
  for key, value in data.items():
400
- if key in ('name', 'step_size', 'auto_link', 'auto_input', 'auto_output', 'mt', 'profiling',
407
+ if key in ('name', 'step_size', 'auto_link', 'auto_input', 'auto_output', 'mt', 'profiling', 'sequential',
401
408
  'auto_parameter', 'auto_local'):
402
409
  continue # Already read
403
410
 
@@ -455,6 +462,7 @@ class Assembly:
455
462
  json_node["name"] = node.name # 1
456
463
  json_node["mt"] = node.mt # 2
457
464
  json_node["profiling"] = node.profiling # 3
465
+ json_node["sequential"] = node.sequential # 3b
458
466
  json_node["auto_link"] = node.auto_link # 4
459
467
  json_node["auto_input"] = node.auto_input # 5
460
468
  json_node["auto_output"] = node.auto_output # 6
@@ -510,8 +518,9 @@ class Assembly:
510
518
  self.root = sdd.parse(self.description_pathname)
511
519
  self.root.name = str(self.filename.with_suffix(".fmu"))
512
520
 
513
- def make_fmu(self, dump_json=False):
514
- self.root.make_fmu(self.fmu_directory, debug=self.debug, description_pathname=self.description_pathname)
521
+ def make_fmu(self, dump_json=False, fmi_version=2):
522
+ self.root.make_fmu(self.fmu_directory, debug=self.debug, description_pathname=self.description_pathname,
523
+ fmi_version=fmi_version)
515
524
  if dump_json:
516
525
  dump_file = Path(self.input_pathname.stem + "-dump").with_suffix(".json")
517
526
  logger.info(f"Dump Json '{dump_file}'")