fmu-manipulation-toolbox 1.8.4__tar.gz → 1.8.4.1__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 (61) hide show
  1. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/PKG-INFO +1 -1
  2. fmu_manipulation_toolbox-1.8.4.1/fmu_manipulation_toolbox/__version__.py +1 -0
  3. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/fmu_container.py +5 -5
  4. fmu_manipulation_toolbox-1.8.4.1/fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
  5. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/win32/client_sm.dll +0 -0
  6. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/win32/server_sm.exe +0 -0
  7. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/win64/client_sm.dll +0 -0
  8. fmu_manipulation_toolbox-1.8.4.1/fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
  9. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/win64/server_sm.exe +0 -0
  10. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/PKG-INFO +1 -1
  11. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/tests/test_suite.py +36 -0
  12. fmu_manipulation_toolbox-1.8.4/fmu_manipulation_toolbox/__version__.py +0 -1
  13. fmu_manipulation_toolbox-1.8.4/fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
  14. fmu_manipulation_toolbox-1.8.4/fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
  15. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/LICENSE.txt +0 -0
  16. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/README.md +0 -0
  17. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/__init__.py +0 -0
  18. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/__main__.py +0 -0
  19. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/assembly.py +0 -0
  20. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/checker.py +0 -0
  21. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/cli.py +0 -0
  22. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/fmu_operations.py +0 -0
  23. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/gui.py +0 -0
  24. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/gui_style.py +0 -0
  25. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/help.py +0 -0
  26. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-checked-disabled.png +0 -0
  27. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-checked-hover.png +0 -0
  28. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-checked.png +0 -0
  29. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-unchecked-disabled.png +0 -0
  30. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-unchecked-hover.png +0 -0
  31. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/checkbox-unchecked.png +0 -0
  32. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/container.png +0 -0
  33. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/drop_fmu.png +0 -0
  34. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Annotation.xsd +0 -0
  35. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2AttributeGroups.xsd +0 -0
  36. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ModelDescription.xsd +0 -0
  37. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ScalarVariable.xsd +0 -0
  38. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Type.xsd +0 -0
  39. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Unit.xsd +0 -0
  40. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmi-2.0/fmi2VariableDependency.xsd +0 -0
  41. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmu.png +0 -0
  42. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/fmu_manipulation_toolbox.png +0 -0
  43. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/help.png +0 -0
  44. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/icon-round.png +0 -0
  45. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/icon.png +0 -0
  46. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/icon_fmu.png +0 -0
  47. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/license.txt +0 -0
  48. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/linux32/client_sm.so +0 -0
  49. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/linux32/server_sm +0 -0
  50. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/linux64/client_sm.so +0 -0
  51. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/linux64/server_sm +0 -0
  52. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/mask.png +0 -0
  53. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/resources/model.png +0 -0
  54. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox/version.py +0 -0
  55. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/SOURCES.txt +0 -0
  56. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/dependency_links.txt +0 -0
  57. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/entry_points.txt +0 -0
  58. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/requires.txt +0 -0
  59. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/fmu_manipulation_toolbox.egg-info/top_level.txt +0 -0
  60. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/setup.cfg +0 -0
  61. {fmu_manipulation_toolbox-1.8.4 → fmu_manipulation_toolbox-1.8.4.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu_manipulation_toolbox
3
- Version: 1.8.4
3
+ Version: 1.8.4.1
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
@@ -146,7 +146,7 @@ class ContainerPort:
146
146
  return f"Port {self.fmu.name}/{self.port.name}"
147
147
 
148
148
  def __hash__(self):
149
- return hash(f"{self}")
149
+ return hash(str(self))
150
150
 
151
151
  def __eq__(self, other):
152
152
  return str(self) == str(other)
@@ -266,7 +266,7 @@ class FMUContainer:
266
266
 
267
267
  try:
268
268
  fmu = EmbeddedFMU(self.fmu_directory / fmu_filename)
269
- self.involved_fmu[fmu_filename] = fmu
269
+ self.involved_fmu[fmu.name] = fmu
270
270
  self.execution_order.append(fmu)
271
271
  if not fmu.fmi_version == "2.0":
272
272
  raise FMUContainerError("Only FMI-2.0 is supported by FMUContainer")
@@ -663,7 +663,7 @@ class FMUContainer:
663
663
  nb += len(self.execution_order)
664
664
  print(f"{nb} {nb+nb_input_link}", file=txt_file)
665
665
  for profiling_port, _ in enumerate(self.execution_order):
666
- print(f"{profiling_port} -2 {profiling_port}", file=txt_file)
666
+ print(f"{profiling_port} 1 -2 {profiling_port}", file=txt_file)
667
667
  else:
668
668
  print(f"{nb} {nb+nb_input_link}", file=txt_file)
669
669
  for input_port in inputs_per_type[type_name]:
@@ -727,9 +727,9 @@ class FMUContainer:
727
727
  binary_directory.mkdir(exist_ok=True)
728
728
  shutil.copy(library_filename, binary_directory / f"{self.identifier}.dll")
729
729
 
730
- for fmu in self.involved_fmu.values():
730
+ for i, fmu in enumerate(self.involved_fmu.values()):
731
731
  shutil.copytree(self.long_path(fmu.fmu.tmp_directory),
732
- self.long_path(resources_directory / fmu.name), dirs_exist_ok=True)
732
+ self.long_path(resources_directory / f"{i:02x}"), dirs_exist_ok=True)
733
733
  return resources_directory
734
734
 
735
735
  def make_fmu_package(self, base_directory: Path, fmu_filename: Path):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu_manipulation_toolbox
3
- Version: 1.8.4
3
+ Version: 1.8.4.1
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
@@ -17,6 +17,13 @@ class FMUManipulationToolboxTestSuite(unittest.TestCase):
17
17
  with open(filename1, mode="rt", newline=None) as a, open(filename2, mode="rt", newline=None) as b:
18
18
  self.assertTrue(all(lineA == lineB for lineA, lineB in zip(a, b)))
19
19
 
20
+ def assert_identical_files_but_guid(self, filename1, filename2):
21
+ with open(filename1, mode="rt", newline=None) as a, open(filename2, mode="rt", newline=None) as b:
22
+ for lineA, lineB in zip(a, b):
23
+ if not "guid" in lineA and not lineA == lineB:
24
+ return False
25
+ return True
26
+
20
27
  def assert_names_match_ref(self, fmu_filename):
21
28
  fmu = FMU(fmu_filename)
22
29
  csv_filename = Path(fmu_filename).with_suffix(".csv")
@@ -65,6 +72,19 @@ class FMUManipulationToolboxTestSuite(unittest.TestCase):
65
72
  self.assert_identical_files("containers/bouncing_ball/REF-bouncing.json",
66
73
  "containers/bouncing_ball/bouncing.json")
67
74
 
75
+ def test_container_bouncing_ball_profiling(self):
76
+ assembly = Assembly("bouncing-profiling.csv", fmu_directory=Path("containers/bouncing_ball"), profiling=True,
77
+ debug=True)
78
+ assembly.write_json("bouncing-profiling.json")
79
+ assembly.make_fmu()
80
+ self.assert_identical_files("containers/bouncing_ball/REF-container-profiling.txt",
81
+ "containers/bouncing_ball/bouncing-profiling/resources/container.txt")
82
+ self.assert_identical_files("containers/bouncing_ball/REF-bouncing-profiling.json",
83
+ "containers/bouncing_ball/bouncing-profiling.json")
84
+ self.assert_identical_files_but_guid("containers/bouncing_ball/REF-modelDescription-profiling.xml",
85
+ "containers/bouncing_ball/bouncing-profiling/modelDescription.xml")
86
+
87
+
68
88
  def test_container_ssp(self):
69
89
  assembly = Assembly("bouncing.ssp", fmu_directory=Path("containers/ssp"))
70
90
  assembly.make_fmu(dump_json=True)
@@ -77,6 +97,14 @@ class FMUManipulationToolboxTestSuite(unittest.TestCase):
77
97
  self.assert_identical_files("containers/arch/REF-flat-dump.json",
78
98
  "containers/arch/flat-dump.json")
79
99
 
100
+ def test_container_subdir_flat(self):
101
+ container = FMUContainer("sub.fmu", fmu_directory=Path("containers/arch"))
102
+ container.get_fmu("subdir/gain2.fmu")
103
+ container.get_fmu("integrate.fmu")
104
+ container.get_fmu("sine.fmu")
105
+ container.add_implicit_rule()
106
+ container.make_fmu("sub.fmu", step_size=0.5)
107
+
80
108
  def test_container_json_hierarchical(self):
81
109
  assembly = Assembly("hierarchical.json", fmu_directory=Path("containers/arch"))
82
110
  assembly.make_fmu(dump_json=True)
@@ -89,6 +117,14 @@ class FMUManipulationToolboxTestSuite(unittest.TestCase):
89
117
  self.assert_identical_files("containers/arch/REF-reversed-dump.json",
90
118
  "containers/arch/reversed-dump.json")
91
119
 
120
+ def test_container_start(self):
121
+ assembly = Assembly("slx.json", fmu_directory=Path("containers/start"), debug=True)
122
+ assembly.make_fmu()
123
+ self.assert_identical_files("containers/start/REF-container.txt",
124
+ "containers/start/container-slx/resources/container.txt")
125
+ self.assert_identical_files_but_guid("containers/start/REF-modelDescription.xml",
126
+ "containers/start/container-slx/modelDescription.xml")
127
+
92
128
  def test_container_move(self):
93
129
  #bb = Assembly("bouncing.csv", fmu_directory=Path("containers/bouncing_ball"))
94
130
  #links = bb.root.get_fmu_connections("bb_position.fmu")