fmu-manipulation-toolbox 1.9rc7__py3-none-any.whl → 1.9rc9__py3-none-any.whl

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 (22) hide show
  1. fmu_manipulation_toolbox/__version__.py +1 -1
  2. fmu_manipulation_toolbox/cli/fmucontainer.py +8 -6
  3. fmu_manipulation_toolbox/cli/fmusplit.py +8 -5
  4. fmu_manipulation_toolbox/cli/fmutool.py +6 -3
  5. fmu_manipulation_toolbox/help.py +3 -0
  6. fmu_manipulation_toolbox/operations.py +91 -24
  7. fmu_manipulation_toolbox/resources/darwin64/container.dylib +0 -0
  8. fmu_manipulation_toolbox/resources/linux32/client_sm.so +0 -0
  9. fmu_manipulation_toolbox/resources/linux64/client_sm.so +0 -0
  10. fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
  11. fmu_manipulation_toolbox/resources/win32/client_sm.dll +0 -0
  12. fmu_manipulation_toolbox/resources/win32/server_sm.exe +0 -0
  13. fmu_manipulation_toolbox/resources/win64/client_sm.dll +0 -0
  14. fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
  15. fmu_manipulation_toolbox/resources/win64/server_sm.exe +0 -0
  16. fmu_manipulation_toolbox/split.py +8 -3
  17. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/METADATA +1 -1
  18. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/RECORD +22 -22
  19. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/WHEEL +0 -0
  20. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/entry_points.txt +0 -0
  21. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/licenses/LICENSE.txt +0 -0
  22. {fmu_manipulation_toolbox-1.9rc7.dist-info → fmu_manipulation_toolbox-1.9rc9.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
1
- 'V1.9-rc7'
1
+ 'V1.9-rc9'
@@ -1,6 +1,8 @@
1
1
  import argparse
2
2
  import logging
3
+ import sys
3
4
 
5
+ from typing import *
4
6
  from pathlib import Path
5
7
 
6
8
  from .utils import setup_logger, make_wide
@@ -9,7 +11,7 @@ from ..container import FMUContainerError
9
11
  from ..version import __version__ as version
10
12
 
11
13
 
12
- def fmucontainer():
14
+ def fmucontainer(command_options: Sequence[str]):
13
15
  logger = setup_logger()
14
16
 
15
17
  logger.info(f"FMUContainer version {version}")
@@ -63,7 +65,7 @@ def fmucontainer():
63
65
  parser.add_argument("-dump-json", action="store_true", dest="dump", default=False,
64
66
  help="Dump a JSON file for each container.")
65
67
 
66
- config = parser.parse_args()
68
+ config = parser.parse_args(command_options)
67
69
 
68
70
  if config.debug:
69
71
  logger.setLevel(logging.DEBUG)
@@ -88,16 +90,16 @@ def fmucontainer():
88
90
  auto_parameter=config.auto_parameter)
89
91
  except FileNotFoundError as e:
90
92
  logger.fatal(f"Cannot read file: {e}")
91
- continue
93
+ sys.exit(-1)
92
94
  except (FMUContainerError, AssemblyError) as e:
93
95
  logger.fatal(f"{filename}: {e}")
94
- continue
96
+ sys.exit(-2)
95
97
 
96
98
  try:
97
99
  assembly.make_fmu(dump_json=config.dump, fmi_version=int(config.fmi_version))
98
100
  except FMUContainerError as e:
99
101
  logger.fatal(f"{filename}: {e}")
100
- continue
102
+ sys.exit(-3)
101
103
 
102
104
  if __name__ == "__main__":
103
- fmucontainer()
105
+ fmucontainer(sys.argv[1:])
@@ -1,12 +1,15 @@
1
1
  import argparse
2
2
  import logging
3
+ import sys
4
+
5
+ from typing import *
3
6
 
4
7
  from .utils import setup_logger, make_wide
5
8
  from ..split import FMUSplitter, FMUSplitterError
6
9
  from ..version import __version__ as version
7
10
 
8
11
 
9
- def fmusplit():
12
+ def fmusplit(command_options: Sequence[str]):
10
13
  logger = setup_logger()
11
14
 
12
15
  logger.info(f"FMUSplit version {version}")
@@ -24,7 +27,7 @@ def fmusplit():
24
27
  metavar="filename.fmu", required=True,
25
28
  help="Description of the FMU container to split.")
26
29
 
27
- config = parser.parse_args()
30
+ config = parser.parse_args(command_options)
28
31
 
29
32
  if config.debug:
30
33
  logger.setLevel(logging.DEBUG)
@@ -35,11 +38,11 @@ def fmusplit():
35
38
  splitter.split_fmu()
36
39
  except FMUSplitterError as e:
37
40
  logger.fatal(f"{fmu_filename}: {e}")
38
- continue
41
+ sys.exit(-1)
39
42
  except FileNotFoundError as e:
40
43
  logger.fatal(f"Cannot read file: {e}")
41
- continue
44
+ sys.exit(-2)
42
45
 
43
46
 
44
47
  if __name__ == "__main__":
45
- fmusplit()
48
+ fmusplit(sys.argv[1:])
@@ -1,6 +1,8 @@
1
1
  import argparse
2
2
  import sys
3
3
 
4
+ from typing import *
5
+
4
6
  from .utils import setup_logger, make_wide
5
7
  from ..operations import (OperationSummary, OperationError, OperationRemoveRegexp,
6
8
  OperationRemoveSources, OperationTrimUntil, OperationKeepOnlyRegexp, OperationMergeTopLevel,
@@ -12,7 +14,7 @@ from ..version import __version__ as version
12
14
  from ..help import Help
13
15
 
14
16
 
15
- def fmutool():
17
+ def fmutool(command_options: Sequence[str]):
16
18
  logger = setup_logger()
17
19
 
18
20
  logger.info(f"FMU Manipulation Toolbox version {version}")
@@ -64,11 +66,12 @@ def fmutool():
64
66
  add_option('-only-parameters', action='append_const', dest='apply_on', const='parameter')
65
67
  add_option('-only-inputs', action='append_const', dest='apply_on', const='input')
66
68
  add_option('-only-outputs', action='append_const', dest='apply_on', const='output')
69
+ add_option('-only-locals', action='append_const', dest='apply_on', const='local')
67
70
  # Checker
68
71
  add_option('-summary', action='append_const', dest='operations_list', const=OperationSummary())
69
72
  add_option('-check', action='append_const', dest='operations_list', const=[checker() for checker in checker_list])
70
73
 
71
- cli_options = parser.parse_args()
74
+ cli_options = parser.parse_args(command_options)
72
75
  # handle the "no operation" use case
73
76
  if not cli_options.operations_list:
74
77
  cli_options.operations_list = []
@@ -121,4 +124,4 @@ def fmutool():
121
124
  logger.info(f"INFO Modified FMU is not saved. If necessary use '-output' option.")
122
125
 
123
126
  if __name__ == "__main__":
124
- fmutool()
127
+ fmutool(sys.argv[1:])
@@ -73,6 +73,9 @@ class Help:
73
73
  '-only-outputs': "apply operation only on ports with causality = 'output'. This "
74
74
  "option is available from version 1.3.",
75
75
 
76
+ '-only-locals': "apply operation only on ports with causality = 'local'. This "
77
+ "option is available from version 1.9.",
78
+
76
79
  '-summary': "display useful information regarding the FMU.",
77
80
 
78
81
  '-check': "performs some check of FMU and display Errors or Warnings. This is useful to avoid later "
@@ -112,6 +112,8 @@ class FMUError(Exception):
112
112
 
113
113
  class Manipulation:
114
114
  """Parse modelDescription.xml file and create a modified version"""
115
+ TAGS_MODEL_STRUCTURE = ("InitialUnknowns", "Derivatives", "Outputs")
116
+
115
117
  def __init__(self, operation, fmu):
116
118
  self.output_filename = tempfile.mktemp()
117
119
  self.out = None
@@ -120,7 +122,14 @@ class Manipulation:
120
122
  self.parser.StartElementHandler = self.start_element
121
123
  self.parser.EndElementHandler = self.end_element
122
124
  self.parser.CharacterDataHandler = self.char_data
125
+
126
+ # used for filter
123
127
  self.skip_until: Optional[str] = None
128
+
129
+ # used to remove empty sections
130
+ self.delayed_tag = None
131
+ self.delayed_tag_open = False
132
+
124
133
  self.operation.set_fmu(fmu)
125
134
  self.fmu = fmu
126
135
 
@@ -155,6 +164,7 @@ class Manipulation:
155
164
  def start_element(self, name, attrs):
156
165
  if self.skip_until:
157
166
  return
167
+
158
168
  try:
159
169
  if name == 'ScalarVariable': # FMI 2.0 only
160
170
  self.current_port = FMUPort()
@@ -176,7 +186,7 @@ class Manipulation:
176
186
  self.operation.fmi_attrs(attrs)
177
187
  elif name == 'Unknown': # FMI-2.0 only
178
188
  self.unknown_attrs(attrs)
179
- elif name == 'Output' or name == "ContinuousStateDerivative" or "InitialUnknown":
189
+ elif name == 'Output' or name == "ContinuousStateDerivative" or "InitialUnknown": # FMI-3.0 only
180
190
  self.handle_structure(attrs)
181
191
 
182
192
  except ManipulationSkipTag:
@@ -184,11 +194,19 @@ class Manipulation:
184
194
  return
185
195
 
186
196
  if self.current_port is None:
197
+ if self.delayed_tag and not self.delayed_tag_open:
198
+ print(f"<{self.delayed_tag}>", end='', file=self.out)
199
+ self.delayed_tag_open = True
200
+
187
201
  if attrs:
188
202
  attrs_list = [f'{key}="{self.escape(value)}"' for (key, value) in attrs.items()]
189
203
  print(f"<{name}", " ".join(attrs_list), ">", end='', file=self.out)
190
204
  else:
191
- print(f"<{name}>", end='', file=self.out)
205
+ if name in self.TAGS_MODEL_STRUCTURE:
206
+ self.delayed_tag = name
207
+ self.delayed_tag_open = False
208
+ else:
209
+ print(f"<{name}>", end='', file=self.out)
192
210
 
193
211
  def end_element(self, name):
194
212
  if self.skip_until:
@@ -205,7 +223,14 @@ class Manipulation:
205
223
  self.current_port = None
206
224
 
207
225
  elif self.current_port is None:
208
- print(f"</{name}>", end='', file=self.out)
226
+ if self.delayed_tag and name == self.delayed_tag:
227
+ if self.delayed_tag_open:
228
+ print(f"</{self.delayed_tag}>", end='', file=self.out)
229
+ else:
230
+ logger.debug(f"Remove tag <{self.delayed_tag}> from modelDescription.xml")
231
+ self.delayed_tag = None
232
+ else:
233
+ print(f"</{name}>", end='', file=self.out)
209
234
 
210
235
  def char_data(self, data):
211
236
  if not self.skip_until:
@@ -223,33 +248,71 @@ class Manipulation:
223
248
  self.port_translation.append(self.current_port_number)
224
249
 
225
250
  def unknown_attrs(self, attrs):
226
- index = int(attrs['index']) - 1
227
- new_index = self.port_translation[index]
228
- if new_index:
229
- attrs['index'] = self.port_translation[int(attrs['index']) - 1]
251
+ index = int(attrs['index'])
252
+ new_index = self.port_translation[index-1]
253
+ if new_index is not None:
254
+ attrs['index'] = str(new_index)
255
+ if attrs.get('dependencies', ""):
256
+ if 'dependenciesKind' in attrs:
257
+ new_dependencies = []
258
+ new_kinds = []
259
+ for dependency, kind in zip(attrs['dependencies'].split(' '), attrs['dependenciesKind'].split(' ')):
260
+ new_dependency = self.port_translation[int(dependency)-1]
261
+ if new_dependency is not None:
262
+ new_dependencies.append(str(new_dependency))
263
+ new_kinds.append(kind)
264
+ if new_dependencies:
265
+ attrs['dependencies'] = " ".join(new_dependencies)
266
+ attrs['dependenciesKind'] = " ".join(new_kinds)
267
+ else:
268
+ attrs.pop('dependencies')
269
+ attrs.pop('dependenciesKind')
270
+ else:
271
+ new_dependencies = []
272
+ for dependency in attrs['dependencies'].split(' '):
273
+ new_dependency = self.port_translation[int(dependency)-1]
274
+ if new_dependency is not None:
275
+ new_dependencies.append(str(new_dependency))
276
+ if new_dependencies:
277
+ attrs['dependencies'] = " ".join(new_dependencies)
278
+ else:
279
+ attrs.pop('dependencies')
230
280
  else:
231
- logger.warning(f"Removed port '{self.port_names_list[index]}' is involved in dependencies tree.")
281
+ logger.warning(f"Removed port '{self.port_names_list[index-1]}' is involved in dependencies tree.")
232
282
  raise ManipulationSkipTag
233
283
 
234
284
  def handle_structure(self, attrs):
235
285
  try:
236
286
  vr = attrs['valueReference']
237
287
  if vr in self.port_removed_vr:
288
+ logger.warning(f"Removed port vr={vr} is involved in dependencies tree.")
238
289
  raise ManipulationSkipTag
239
290
  except KeyError:
240
291
  return
241
292
 
242
- try:
243
- dependencies = attrs['dependencies']
244
- new_dependencies = []
245
- for dependency in dependencies.split(" "):
246
- if dependency in self.port_removed_vr:
247
- logger.warning(f"Removed port 'vr={dependency}' was involved in dependencies tree.")
293
+ if attrs.get('dependencies', ""):
294
+ if 'dependenciesKind' in attrs:
295
+ new_dependencies = []
296
+ new_kinds = []
297
+ for dependency, kind in zip(attrs['dependencies'].split(' '), attrs['dependenciesKind'].split(' ')):
298
+ if dependency not in self.port_removed_vr:
299
+ new_dependencies.append(dependency)
300
+ new_kinds.append(kind)
301
+ if new_dependencies:
302
+ attrs['dependencies'] = " ".join(new_dependencies)
303
+ attrs['dependenciesKind'] = " ".join(new_kinds)
248
304
  else:
249
- new_dependencies.append(dependency)
250
- attrs['dependencies'] = " ".join(new_dependencies)
251
- except KeyError:
252
- return
305
+ attrs.pop('dependencies')
306
+ attrs.pop('dependenciesKind')
307
+ else:
308
+ new_dependencies = []
309
+ for dependency in attrs['dependencies'].split(' '):
310
+ if dependency not in self.port_removed_vr:
311
+ new_dependencies.append(dependency)
312
+ if new_dependencies:
313
+ attrs['dependencies'] = " ".join(new_dependencies)
314
+ else:
315
+ attrs.pop('dependencies')
253
316
 
254
317
  def manipulate(self, descriptor_filename, apply_on=None):
255
318
  self.apply_on = apply_on
@@ -416,8 +479,8 @@ class OperationSummary(OperationAbstract):
416
479
  hash_md5.update(chunk)
417
480
  digest = hash_md5.hexdigest()
418
481
  logger.info(f"| MD5Sum = {digest}")
419
-
420
- logger.info(f"|\n| FMI properties: ")
482
+ logger.info(f"|")
483
+ logger.info(f"| FMI properties: ")
421
484
  for (k, v) in attrs.items():
422
485
  logger.info(f"| - {k} = {v}")
423
486
  logger.info(f"|")
@@ -457,21 +520,25 @@ class OperationSummary(OperationAbstract):
457
520
 
458
521
  resource_dir = os.path.join(self.fmu.tmp_directory, "resources")
459
522
  if os.path.isdir(resource_dir):
460
- logger.info("|\n| Embedded resources:")
523
+ logger.info("|")
524
+ logger.info("| Embedded resources:")
461
525
  for resource in os.listdir(resource_dir):
462
526
  logger.info(f"| - {resource}")
463
527
 
464
528
  extra_dir = os.path.join(self.fmu.tmp_directory, "extra")
465
529
  if os.path.isdir(extra_dir):
466
- logger.info("|\n| Additional (meta-)data:")
530
+ logger.info("|")
531
+ logger.info("| Additional (meta-)data:")
467
532
  for extra in os.listdir(extra_dir):
468
533
  logger.info(f"| - {extra}")
469
534
 
470
- logger.info("|\n| Number of ports")
535
+ logger.info("|")
536
+ logger.info("| Number of ports")
471
537
  for causality, nb_ports in self.nb_port_per_causality.items():
472
538
  logger.info(f"| {causality} : {nb_ports}")
473
539
 
474
- logger.info("|\n| [End of report]")
540
+ logger.info("|")
541
+ logger.info("| [End of report]")
475
542
 
476
543
 
477
544
  class OperationRemoveSources(OperationAbstract):
@@ -6,6 +6,8 @@ import xml.parsers.expat
6
6
  from typing import *
7
7
  from pathlib import Path
8
8
 
9
+ from .container import EmbeddedFMUPort
10
+
9
11
  logger = logging.getLogger("fmu_manipulation_toolbox")
10
12
 
11
13
 
@@ -66,7 +68,7 @@ class FMUSplitter:
66
68
  def split_fmu(self):
67
69
  logger.info(f"Splitting...")
68
70
  config = self._split_fmu(fmu_filename=str(self.fmu_filename), relative_path="")
69
- config_filename = self.directory / self.fmu_filename.with_suffix(".json")
71
+ config_filename = self.directory / self.fmu_filename.with_suffix(".json").name
70
72
  with open(config_filename, "w") as file:
71
73
  json.dump(config, file, indent=2)
72
74
  logger.info(f"Container definition saved to '{config_filename}'")
@@ -77,7 +79,7 @@ class FMUSplitter:
77
79
  if txt_filename in self.filenames_list:
78
80
  description = FMUSplitterDescription(self.zip)
79
81
  config = description.parse_txt_file(txt_filename)
80
- config["name"] = fmu_filename
82
+ config["name"] = Path(fmu_filename).name
81
83
  for i, fmu_filename in enumerate(config["candidate_fmu"]):
82
84
  directory = f"{relative_path}resources/{i:02x}/"
83
85
  if directory not in self.dir_set:
@@ -134,6 +136,7 @@ class FMUSplitterDescription:
134
136
  self.current_vr = None
135
137
  self.current_name = None
136
138
  self.current_causality = None
139
+ self.supported_fmi_types: Tuple[str] = ()
137
140
 
138
141
  @staticmethod
139
142
  def get_line(file):
@@ -182,10 +185,12 @@ class FMUSplitterDescription:
182
185
  def parse_txt_file_header(self, file, txt_filename):
183
186
  flags = self.get_line(file).split(" ")
184
187
  if len(flags) == 1:
188
+ self.supported_fmi_types = ("Real", "Integer", "Boolean", "String")
185
189
  self.config["mt"] = flags[0] == "1"
186
190
  self.config["profiling"] = self.get_line(file) == "1"
187
191
  self.config["sequential"] = False
188
192
  elif len(flags) == 3:
193
+ self.supported_fmi_types = EmbeddedFMUPort.ALL_TYPES
189
194
  self.config["mt"] = flags[0] == "1"
190
195
  self.config["profiling"] = flags[1] == "1"
191
196
  self.config["sequential"] = flags[2] == "1"
@@ -242,7 +247,7 @@ class FMUSplitterDescription:
242
247
  logger.debug(f"Adding container port {causality}: {definition}")
243
248
 
244
249
  def parse_txt_file_ports(self, file):
245
- for fmi_type in ("Real", "Integer", "Boolean", "String"):
250
+ for fmi_type in self.supported_fmi_types:
246
251
  nb_port_variables = self.get_line(file).split(" ")[0]
247
252
  for i in range(int(nb_port_variables)):
248
253
  tokens = self.get_line(file).split(" ")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmu_manipulation_toolbox
3
- Version: 1.9rc7
3
+ Version: 1.9rc9
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
@@ -1,20 +1,20 @@
1
1
  fmu_manipulation_toolbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  fmu_manipulation_toolbox/__main__.py,sha256=FpG0ITBz5q-AvIbXplVh_1g1zla5souFGtpiDdECxEw,352
3
- fmu_manipulation_toolbox/__version__.py,sha256=R7smX8GS97dJQQkbyMyuJlII_VKNOhykVYnb42E_LKw,11
3
+ fmu_manipulation_toolbox/__version__.py,sha256=a17zC1vWGKiyRqtqXxKoo5DItHBYHj480oIEWpgEdNw,11
4
4
  fmu_manipulation_toolbox/assembly.py,sha256=XQ_1sB6K1Dk2mnNe-E3_6Opoeub7F9Qaln0EUDzsop8,26553
5
5
  fmu_manipulation_toolbox/checker.py,sha256=jw1omfrMMIMHlIpHXpWBcQgIiS9hnHe5T9CZ5KlbVGs,2422
6
6
  fmu_manipulation_toolbox/container.py,sha256=Ed6JsWM2oMs-jyGyKmrHHebNuG4qwiGLYtx0BREIiBE,45710
7
7
  fmu_manipulation_toolbox/gui.py,sha256=ax-IbGO7GyBG0Mb5okN588CKQDfMxoF1uZtD1_CYnjc,29199
8
8
  fmu_manipulation_toolbox/gui_style.py,sha256=s6WdrnNd_lCMWhuBf5LKK8wrfLXCU7pFTLUfvqkJVno,6633
9
- fmu_manipulation_toolbox/help.py,sha256=aklKiLrsE0adSzQ5uoEB1sBDmI6s4l231gavu4XxxzA,5856
10
- fmu_manipulation_toolbox/operations.py,sha256=WayxcpnVRpvxGOXx2I5Vh9ThVbj6IRW6Vr8qKfqck8Y,17348
9
+ fmu_manipulation_toolbox/help.py,sha256=j8xmnCrwQpaW-SZ8hSqA1dlTXgaqzQWc4Yr3RH_oqck,6012
10
+ fmu_manipulation_toolbox/operations.py,sha256=VQvFXRHF48e-ZLqoG8nbz61iB5lX6qAkqZHQ0m0lUPw,20577
11
11
  fmu_manipulation_toolbox/remoting.py,sha256=N25MDFkIcEWe9CIT1M4L9kea3j-8E7i2I1VOI6zIAdw,3876
12
- fmu_manipulation_toolbox/split.py,sha256=NVkfdTRR0jj_VOdgtxHQoKptkAg5TFVUA7nUx3_o9Pg,13336
12
+ fmu_manipulation_toolbox/split.py,sha256=ONl1T37xJypF45GH3sZC6gKMSQ83xEl4xAWDSEOJsao,13571
13
13
  fmu_manipulation_toolbox/version.py,sha256=OhBLkZ1-nhC77kyvffPNAf6m8OZe1bYTnNf_PWs1NvM,392
14
14
  fmu_manipulation_toolbox/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- fmu_manipulation_toolbox/cli/fmucontainer.py,sha256=bxiOcVwHHLQaVtTga77t_UdE6duPX1kTXef53LyPqbA,4738
16
- fmu_manipulation_toolbox/cli/fmusplit.py,sha256=QSMHZJlNOYbaPgI6Z9QHr95mrC3PuXDeUXR2sHm73HU,1636
17
- fmu_manipulation_toolbox/cli/fmutool.py,sha256=nCXcTZxBcgnZIe_oRYqKLdB6z_ZryXyIOpsaP6Tptak,5921
15
+ fmu_manipulation_toolbox/cli/fmucontainer.py,sha256=6UaSSY6UGGlOfIh_CTG-Gk3ZPSd88Pi2cFCuzb87eks,4839
16
+ fmu_manipulation_toolbox/cli/fmusplit.py,sha256=VMDYjmvIsjPHJINZaOt1Zy8D0so6d99285LbS8v-Tro,1734
17
+ fmu_manipulation_toolbox/cli/fmutool.py,sha256=QRe6xQxQMD8FtEzoT5421Bq0YasgdIwOd9Too5TX5zg,6086
18
18
  fmu_manipulation_toolbox/cli/utils.py,sha256=gNhdlFYSSNSb0fovzS0crnxgmqqKXe0KtoZZFhRKhfg,1375
19
19
  fmu_manipulation_toolbox/resources/checkbox-checked-disabled.png,sha256=FWIuyrXlaNLLePHfXj7j9ca5rT8Hgr14KCe1EqTCZyk,2288
20
20
  fmu_manipulation_toolbox/resources/checkbox-checked-hover.png,sha256=KNlV-d_aJNTTvUVXKGT9DBY30sIs2LwocLJrFKNKv8k,2419
@@ -33,7 +33,7 @@ fmu_manipulation_toolbox/resources/icon_fmu.png,sha256=EuygB2xcoM2WAfKKdyKG_UvTL
33
33
  fmu_manipulation_toolbox/resources/license.txt,sha256=5ODuU8g8pIkK-NMWXu_rjZ6k7gM7b-N2rmg87-2Kmqw,1583
34
34
  fmu_manipulation_toolbox/resources/mask.png,sha256=px1U4hQGL0AmZ4BQPknOVREpMpTSejbah3ntkpqAzFA,3008
35
35
  fmu_manipulation_toolbox/resources/model.png,sha256=EAf_HnZJe8zYGZygerG1MMt2U-tMMZlifzXPj4_iORA,208788
36
- fmu_manipulation_toolbox/resources/darwin64/container.dylib,sha256=G_Q-Nyb4f_eOYWuBawtCCnXvBl4duwh826fGoG95-Cs,161560
36
+ fmu_manipulation_toolbox/resources/darwin64/container.dylib,sha256=5LphcmCaBa76MIq8WoA5FwhLNgu3LxmcaWa49dGQ11I,161560
37
37
  fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Annotation.xsd,sha256=OGfyJtaJntKypX5KDpuZ-nV1oYLZ6HV16pkpKOmYox4,2731
38
38
  fmu_manipulation_toolbox/resources/fmi-2.0/fmi2AttributeGroups.xsd,sha256=HwyV7LBse-PQSv4z1xjmtzPU3Hjnv4mluq9YdSBNHMQ,3704
39
39
  fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ModelDescription.xsd,sha256=JM4j_9q-pc40XYHb28jfT3iV3aYM5JLqD5aRjO72K1E,18939
@@ -53,19 +53,19 @@ fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Type.xsd,sha256=TaHRoUBIFtmdEwBKB
53
53
  fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Unit.xsd,sha256=CK_F2t5LfyQ6eSNJ8soTFMVK9DU8vD2WiMi2MQvjB0g,3746
54
54
  fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Variable.xsd,sha256=3YU-3q1-c-namz7sMe5cxnmOVOJsRSmfWR02PKv3xaU,19171
55
55
  fmu_manipulation_toolbox/resources/fmi-3.0/fmi3VariableDependency.xsd,sha256=YQSBwXt4IsDlyegY8bX-qQHGSfE5TipTPfo2g2yqq1c,3082
56
- fmu_manipulation_toolbox/resources/linux32/client_sm.so,sha256=UapKWBFpTV9F-ehbBijh7Q1SeylBjVOhUVKJ3wVXPsE,34756
56
+ fmu_manipulation_toolbox/resources/linux32/client_sm.so,sha256=9-lH-dE6QqWg_FNxsFcF9zismk2Qq3PXNWSOqE2pBMk,34756
57
57
  fmu_manipulation_toolbox/resources/linux32/server_sm,sha256=gzKU0BTeaRkvhTMQtHHj3K8uYFyEdyGGn_mZy_jG9xo,21304
58
- fmu_manipulation_toolbox/resources/linux64/client_sm.so,sha256=IIqzR9WmMZUpRbwcCXyMHJnx920zvdO1wrWuAlrfyUE,32592
59
- fmu_manipulation_toolbox/resources/linux64/container.so,sha256=i0HjYarS79uDaPzhOd3bY7vjqVR_cSL89fo6hepb184,135520
58
+ fmu_manipulation_toolbox/resources/linux64/client_sm.so,sha256=p4zIi1YKQ_81oA6IaMOkKZGwkG-POi4vGj4TKemoHuY,32592
59
+ fmu_manipulation_toolbox/resources/linux64/container.so,sha256=nqZspiOIdn1DwHdCEPJiEybE1JyeO2wTGGQacMYUXqM,135520
60
60
  fmu_manipulation_toolbox/resources/linux64/server_sm,sha256=MZn6vITN2qpBHYt_RaK2VnFFp00hk8fTALBHmXPtLwc,22608
61
- fmu_manipulation_toolbox/resources/win32/client_sm.dll,sha256=UYr8gstiVAOcOaZSPXdMV0qBLreUFHEBaAPISTLlfJA,17920
62
- fmu_manipulation_toolbox/resources/win32/server_sm.exe,sha256=YEVu547ZwrORLAsryjaWgII9iqgg2zxPEM61J--Dm1M,15360
63
- fmu_manipulation_toolbox/resources/win64/client_sm.dll,sha256=4W3Giq_aJf2GUPcLUXmjRiop02VtSySywFgtKVJ-NSU,21504
64
- fmu_manipulation_toolbox/resources/win64/container.dll,sha256=r8hdfh4T9de8tvrG7Xlz0cJi1_XzdGuly7LCIdFagZk,98816
65
- fmu_manipulation_toolbox/resources/win64/server_sm.exe,sha256=2PibjuEn-6MIwh4Wl7yD7mZ1ikSjzBsh36Ne5CGPqfQ,18432
66
- fmu_manipulation_toolbox-1.9rc7.dist-info/licenses/LICENSE.txt,sha256=c_862mzyk6ownO3Gt6cVs0-53IXLi_-ZEQFNDVabESw,1285
67
- fmu_manipulation_toolbox-1.9rc7.dist-info/METADATA,sha256=f8pnsoOG3D6mbzbycL5kF7XMlxyqWoK9Uk1jTyttbdg,1156
68
- fmu_manipulation_toolbox-1.9rc7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
69
- fmu_manipulation_toolbox-1.9rc7.dist-info/entry_points.txt,sha256=HjOZkflbI1IuSY8BpOZre20m24M4GDQGCJfPIa7NrlY,264
70
- fmu_manipulation_toolbox-1.9rc7.dist-info/top_level.txt,sha256=9D_h-5BMjSqf9z-XFkbJL_bMppR2XNYW3WNuPkXou0k,25
71
- fmu_manipulation_toolbox-1.9rc7.dist-info/RECORD,,
61
+ fmu_manipulation_toolbox/resources/win32/client_sm.dll,sha256=E0TqeuNbYeV3tp0S5PFMIK6ipTN4TCWeaUKAbTcHbnE,17920
62
+ fmu_manipulation_toolbox/resources/win32/server_sm.exe,sha256=otceaiC_nRbGCtlExCBl8IlqHd4KMsRTPdVhHMx-jic,15360
63
+ fmu_manipulation_toolbox/resources/win64/client_sm.dll,sha256=3DfTRKHVfwNvcOFjJbpe7T4Jm_wcenQ9x81hJQw2xwk,21504
64
+ fmu_manipulation_toolbox/resources/win64/container.dll,sha256=iy0XO-TUcD27VLiKejB9kJTdBUUt0oh9J-kt1A_u_FI,98816
65
+ fmu_manipulation_toolbox/resources/win64/server_sm.exe,sha256=_61NOrYKKUa0B_wZhogr47x8-1ppUCcaOsYRkrZ31Hc,18432
66
+ fmu_manipulation_toolbox-1.9rc9.dist-info/licenses/LICENSE.txt,sha256=c_862mzyk6ownO3Gt6cVs0-53IXLi_-ZEQFNDVabESw,1285
67
+ fmu_manipulation_toolbox-1.9rc9.dist-info/METADATA,sha256=m0zac5QSzdnCaQKDSXMt8bPm--ReqaBXPxNVkhOOQ3U,1156
68
+ fmu_manipulation_toolbox-1.9rc9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
69
+ fmu_manipulation_toolbox-1.9rc9.dist-info/entry_points.txt,sha256=HjOZkflbI1IuSY8BpOZre20m24M4GDQGCJfPIa7NrlY,264
70
+ fmu_manipulation_toolbox-1.9rc9.dist-info/top_level.txt,sha256=9D_h-5BMjSqf9z-XFkbJL_bMppR2XNYW3WNuPkXou0k,25
71
+ fmu_manipulation_toolbox-1.9rc9.dist-info/RECORD,,