fmu-manipulation-toolbox 1.9rc0__py3-none-any.whl → 1.9rc1__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.
- fmu_manipulation_toolbox/__version__.py +1 -1
- fmu_manipulation_toolbox/assembly.py +7 -5
- fmu_manipulation_toolbox/container.py +355 -154
- fmu_manipulation_toolbox/operations.py +129 -92
- fmu_manipulation_toolbox/resources/darwin64/container.dylib +0 -0
- fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
- fmu_manipulation_toolbox/resources/win32/client_sm.dll +0 -0
- fmu_manipulation_toolbox/resources/win32/server_sm.exe +0 -0
- fmu_manipulation_toolbox/resources/win64/client_sm.dll +0 -0
- fmu_manipulation_toolbox/resources/win64/container.dll +0 -0
- fmu_manipulation_toolbox/resources/win64/server_sm.exe +0 -0
- fmu_manipulation_toolbox/split.py +8 -0
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/METADATA +1 -1
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/RECORD +18 -17
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/WHEEL +0 -0
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/entry_points.txt +0 -0
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/licenses/LICENSE.txt +0 -0
- {fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/top_level.txt +0 -0
|
@@ -16,7 +16,9 @@ class FMU:
|
|
|
16
16
|
modelDescription.xml file."""
|
|
17
17
|
|
|
18
18
|
FMI2_TYPES = ('Real', 'Integer', 'String', 'Boolean', 'Enumeration')
|
|
19
|
-
FMI3_TYPES = ('Float64'
|
|
19
|
+
FMI3_TYPES = ('Float64', 'Float32',
|
|
20
|
+
'Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32', 'Int64', 'UInt64',
|
|
21
|
+
'String', 'Boolean', 'Enumeration')
|
|
20
22
|
|
|
21
23
|
def __init__(self, fmu_filename):
|
|
22
24
|
self.fmu_filename = fmu_filename
|
|
@@ -51,6 +53,56 @@ class FMU:
|
|
|
51
53
|
manipulation.manipulate(self.descriptor_filename, apply_on)
|
|
52
54
|
|
|
53
55
|
|
|
56
|
+
class FMUPort:
|
|
57
|
+
def __init__(self):
|
|
58
|
+
self.fmi_type = None
|
|
59
|
+
self.attrs_list: List[Dict] = []
|
|
60
|
+
|
|
61
|
+
def dict_level(self, nb):
|
|
62
|
+
return " ".join([f'{key}="{value}"' for key, value in self.attrs_list[nb].items()])
|
|
63
|
+
|
|
64
|
+
def write_xml(self, fmi_version: int, file):
|
|
65
|
+
if fmi_version == 2:
|
|
66
|
+
print(f" <ScalarVariable {self.dict_level(0)}>", file=file)
|
|
67
|
+
print(f" <{self.fmi_type} {self.dict_level(1)}/>", file=file)
|
|
68
|
+
print(f" </ScalarVariable>", file=file)
|
|
69
|
+
elif fmi_version == 3:
|
|
70
|
+
print(f" <{self.fmi_type} {self.dict_level(0)}/>", file=file)
|
|
71
|
+
else:
|
|
72
|
+
raise FMUError(f"FMUPort writing: unsupported FMI version {fmi_version}")
|
|
73
|
+
|
|
74
|
+
def __contains__(self, item):
|
|
75
|
+
for attrs in self.attrs_list:
|
|
76
|
+
if item in attrs:
|
|
77
|
+
return True
|
|
78
|
+
return False
|
|
79
|
+
|
|
80
|
+
def __getitem__(self, item):
|
|
81
|
+
for attrs in self.attrs_list:
|
|
82
|
+
if item in attrs:
|
|
83
|
+
return attrs[item]
|
|
84
|
+
raise KeyError
|
|
85
|
+
|
|
86
|
+
def __setitem__(self, key, value):
|
|
87
|
+
for attrs in self.attrs_list:
|
|
88
|
+
if key in attrs:
|
|
89
|
+
attrs[key] = value
|
|
90
|
+
return
|
|
91
|
+
raise KeyError
|
|
92
|
+
|
|
93
|
+
def get(self, item, default_value):
|
|
94
|
+
try:
|
|
95
|
+
return self[item]
|
|
96
|
+
except KeyError:
|
|
97
|
+
return default_value
|
|
98
|
+
|
|
99
|
+
def push_attrs(self, attrs):
|
|
100
|
+
self.attrs_list.append(attrs)
|
|
101
|
+
|
|
102
|
+
def is_ready(self):
|
|
103
|
+
return self.fmi_type is not None
|
|
104
|
+
|
|
105
|
+
|
|
54
106
|
class FMUError(Exception):
|
|
55
107
|
def __init__(self, reason):
|
|
56
108
|
self.reason = reason
|
|
@@ -73,8 +125,10 @@ class Manipulation:
|
|
|
73
125
|
self.operation.set_fmu(fmu)
|
|
74
126
|
self.fmu = fmu
|
|
75
127
|
|
|
76
|
-
self.current_port:
|
|
77
|
-
|
|
128
|
+
self.current_port: Optional[FMUPort] = None
|
|
129
|
+
|
|
130
|
+
self.current_port_number: int = 0
|
|
131
|
+
self.port_translation: List[Optional[int]] = []
|
|
78
132
|
self.port_names_list: List[str] = []
|
|
79
133
|
self.apply_on = None
|
|
80
134
|
|
|
@@ -85,48 +139,58 @@ class Manipulation:
|
|
|
85
139
|
else:
|
|
86
140
|
return value
|
|
87
141
|
|
|
88
|
-
def
|
|
89
|
-
causality =
|
|
90
|
-
port_name =
|
|
142
|
+
def handle_port(self):
|
|
143
|
+
causality = self.current_port.get('causality', 'local')
|
|
144
|
+
port_name = self.current_port['name']
|
|
91
145
|
if not self.apply_on or causality in self.apply_on:
|
|
92
|
-
if self.operation.
|
|
146
|
+
if self.operation.port_attrs(self.current_port):
|
|
93
147
|
self.remove_port(port_name)
|
|
94
148
|
else:
|
|
95
149
|
self.keep_port(port_name)
|
|
96
150
|
else: # Keep ScalarVariable as it is.
|
|
97
151
|
self.keep_port(port_name)
|
|
98
152
|
|
|
99
|
-
|
|
100
153
|
def start_element(self, name, attrs):
|
|
101
154
|
if self.skip_until:
|
|
102
155
|
return
|
|
103
156
|
try:
|
|
104
|
-
if name == 'ScalarVariable':
|
|
105
|
-
self.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
self.
|
|
157
|
+
if name == 'ScalarVariable': # FMI 2.0 only
|
|
158
|
+
self.current_port = FMUPort()
|
|
159
|
+
self.current_port.push_attrs(attrs)
|
|
160
|
+
elif self.fmu.fmi_version == 2 and name in self.fmu.FMI2_TYPES:
|
|
161
|
+
self.current_port.fmi_type = name
|
|
162
|
+
self.current_port.push_attrs(attrs)
|
|
163
|
+
elif self.fmu.fmi_version == 3 and name in self.fmu.FMI3_TYPES:
|
|
164
|
+
self.current_port = FMUPort()
|
|
165
|
+
self.current_port.fmi_type = name
|
|
166
|
+
self.current_port.push_attrs(attrs)
|
|
109
167
|
elif name == 'CoSimulation':
|
|
110
168
|
self.operation.cosimulation_attrs(attrs)
|
|
111
169
|
elif name == 'DefaultExperiment':
|
|
112
170
|
self.operation.experiment_attrs(attrs)
|
|
113
171
|
elif name == 'fmiModelDescription':
|
|
172
|
+
self.fmu.fmi_version = int(float(attrs["fmiVersion"]))
|
|
114
173
|
self.operation.fmi_attrs(attrs)
|
|
115
174
|
elif name == 'Unknown':
|
|
116
175
|
self.unknown_attrs(attrs)
|
|
117
|
-
|
|
118
|
-
|
|
176
|
+
|
|
177
|
+
if self.current_port and self.current_port.is_ready():
|
|
178
|
+
self.handle_port()
|
|
119
179
|
|
|
120
180
|
except ManipulationSkipTag:
|
|
121
181
|
self.skip_until = name
|
|
122
182
|
return
|
|
123
183
|
|
|
124
|
-
if
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
else:
|
|
129
|
-
|
|
184
|
+
if self.current_port:
|
|
185
|
+
if self.current_port.is_ready():
|
|
186
|
+
self.current_port.write_xml(self.fmu.fmi_version, self.out)
|
|
187
|
+
self.current_port = None
|
|
188
|
+
else: # re-copy tags
|
|
189
|
+
if attrs:
|
|
190
|
+
attrs_list = [f'{key}="{self.escape(value)}"' for (key, value) in attrs.items()]
|
|
191
|
+
print(f"<{name}", " ".join(attrs_list), ">", end='', file=self.out)
|
|
192
|
+
else:
|
|
193
|
+
print(f"<{name}>", end='', file=self.out)
|
|
130
194
|
|
|
131
195
|
def end_element(self, name):
|
|
132
196
|
if self.skip_until:
|
|
@@ -134,7 +198,8 @@ class Manipulation:
|
|
|
134
198
|
self.skip_until = None
|
|
135
199
|
return
|
|
136
200
|
else:
|
|
137
|
-
|
|
201
|
+
if name not in FMU.FMI3_TYPES and name not in FMU.FMI2_TYPES and not name == "ScalarVariable":
|
|
202
|
+
print(f"</{name}>", end='', file=self.out)
|
|
138
203
|
|
|
139
204
|
def char_data(self, data):
|
|
140
205
|
if not self.skip_until:
|
|
@@ -147,8 +212,8 @@ class Manipulation:
|
|
|
147
212
|
|
|
148
213
|
def keep_port(self, name):
|
|
149
214
|
self.port_names_list.append(name)
|
|
150
|
-
self.
|
|
151
|
-
self.port_translation.append(self.
|
|
215
|
+
self.current_port_number += 1
|
|
216
|
+
self.port_translation.append(self.current_port_number)
|
|
152
217
|
|
|
153
218
|
def unknown_attrs(self, attrs):
|
|
154
219
|
index = int(attrs['index']) - 1
|
|
@@ -181,31 +246,19 @@ class OperationAbstract:
|
|
|
181
246
|
def fmi_attrs(self, attrs):
|
|
182
247
|
pass
|
|
183
248
|
|
|
184
|
-
def scalar_attrs(self, attrs) -> int:
|
|
185
|
-
""" return 0 to keep port, otherwise remove it"""
|
|
186
|
-
return 0
|
|
187
|
-
|
|
188
249
|
def cosimulation_attrs(self, attrs):
|
|
189
250
|
pass
|
|
190
251
|
|
|
191
252
|
def experiment_attrs(self, attrs):
|
|
192
253
|
pass
|
|
193
254
|
|
|
194
|
-
def
|
|
195
|
-
|
|
255
|
+
def port_attrs(self, fmu_port) -> int:
|
|
256
|
+
""" return 0 to keep port, otherwise remove it"""
|
|
257
|
+
return 0
|
|
196
258
|
|
|
197
259
|
def closure(self):
|
|
198
260
|
pass
|
|
199
261
|
|
|
200
|
-
@staticmethod
|
|
201
|
-
def scalar_get_causality(attrs) -> str:
|
|
202
|
-
try:
|
|
203
|
-
causality = attrs['causality']
|
|
204
|
-
except KeyError:
|
|
205
|
-
causality = 'local' # Default value according to FMI Specifications.
|
|
206
|
-
|
|
207
|
-
return causality
|
|
208
|
-
|
|
209
262
|
|
|
210
263
|
class OperationSaveNamesToCSV(OperationAbstract):
|
|
211
264
|
def __repr__(self):
|
|
@@ -217,48 +270,29 @@ class OperationSaveNamesToCSV(OperationAbstract):
|
|
|
217
270
|
self.writer = csv.writer(self.csvfile, delimiter=';', quotechar="'", quoting=csv.QUOTE_MINIMAL)
|
|
218
271
|
self.writer.writerow(['name', 'newName', 'valueReference', 'causality', 'variability', 'scalarType',
|
|
219
272
|
'startValue'])
|
|
220
|
-
self.name = None
|
|
221
|
-
self.vr = None
|
|
222
|
-
self.variability = None
|
|
223
|
-
self.causality = None
|
|
224
|
-
|
|
225
|
-
def reset(self):
|
|
226
|
-
self.name = None
|
|
227
|
-
self.vr = None
|
|
228
|
-
self.variability = None
|
|
229
|
-
self.causality = None
|
|
230
273
|
|
|
231
274
|
def closure(self):
|
|
232
275
|
self.csvfile.close()
|
|
233
276
|
|
|
234
|
-
def
|
|
235
|
-
self.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
self.variability = 'continuous' # Default value according to FMI Specifications.
|
|
277
|
+
def port_attrs(self, fmu_port: FMUPort) -> int:
|
|
278
|
+
self.writer.writerow([fmu_port["name"],
|
|
279
|
+
fmu_port["name"],
|
|
280
|
+
fmu_port["valueReference"],
|
|
281
|
+
fmu_port.get("causality", "local"),
|
|
282
|
+
fmu_port.get("variability", "continuous"),
|
|
283
|
+
fmu_port.fmi_type,
|
|
284
|
+
fmu_port.get("start", "")])
|
|
243
285
|
|
|
244
286
|
return 0
|
|
245
287
|
|
|
246
|
-
def scalar_type(self, type_name, attrs):
|
|
247
|
-
if "start" in attrs:
|
|
248
|
-
start = attrs["start"]
|
|
249
|
-
else:
|
|
250
|
-
start = ""
|
|
251
|
-
self.writer.writerow([self.name, self.name, self.vr, self.causality, self.variability, type_name, start])
|
|
252
|
-
self.reset()
|
|
253
|
-
|
|
254
288
|
|
|
255
289
|
class OperationStripTopLevel(OperationAbstract):
|
|
256
290
|
def __repr__(self):
|
|
257
291
|
return "Remove Top Level Bus"
|
|
258
292
|
|
|
259
|
-
def
|
|
260
|
-
new_name =
|
|
261
|
-
|
|
293
|
+
def port_attrs(self, fmu_port):
|
|
294
|
+
new_name = fmu_port['name'].split('.', 1)[-1]
|
|
295
|
+
fmu_port['name'] = new_name
|
|
262
296
|
return 0
|
|
263
297
|
|
|
264
298
|
|
|
@@ -266,9 +300,9 @@ class OperationMergeTopLevel(OperationAbstract):
|
|
|
266
300
|
def __repr__(self):
|
|
267
301
|
return "Merge Top Level Bus with signal names"
|
|
268
302
|
|
|
269
|
-
def
|
|
270
|
-
old =
|
|
271
|
-
|
|
303
|
+
def port_attrs(self, fmu_port):
|
|
304
|
+
old = fmu_port['name']
|
|
305
|
+
fmu_port['name'] = old.replace('.', '_', 1)
|
|
272
306
|
return 0
|
|
273
307
|
|
|
274
308
|
|
|
@@ -279,27 +313,26 @@ class OperationRenameFromCSV(OperationAbstract):
|
|
|
279
313
|
def __init__(self, csv_filename):
|
|
280
314
|
self.csv_filename = csv_filename
|
|
281
315
|
self.translations = {}
|
|
282
|
-
|
|
283
|
-
self.port_translation = []
|
|
316
|
+
|
|
284
317
|
try:
|
|
285
318
|
with open(csv_filename, newline='') as csvfile:
|
|
286
319
|
reader = csv.reader(csvfile, delimiter=';', quotechar="'")
|
|
287
320
|
for row in reader:
|
|
288
321
|
self.translations[row[0]] = row[1]
|
|
289
322
|
except FileNotFoundError:
|
|
290
|
-
raise
|
|
323
|
+
raise OperationError(f"file '{csv_filename}' is not found")
|
|
291
324
|
except KeyError:
|
|
292
|
-
raise
|
|
325
|
+
raise OperationError(f"file '{csv_filename}' should contain two columns")
|
|
293
326
|
|
|
294
|
-
def
|
|
295
|
-
name =
|
|
327
|
+
def port_attrs(self, fmu_port):
|
|
328
|
+
name = fmu_port['name']
|
|
296
329
|
try:
|
|
297
|
-
new_name = self.translations[
|
|
330
|
+
new_name = self.translations[fmu_port['name']]
|
|
298
331
|
except KeyError:
|
|
299
332
|
new_name = name # if port is not in CSV file, keep old name
|
|
300
333
|
|
|
301
334
|
if new_name:
|
|
302
|
-
|
|
335
|
+
fmu_port['name'] = new_name
|
|
303
336
|
return 0
|
|
304
337
|
else:
|
|
305
338
|
# we want to delete this name!
|
|
@@ -313,6 +346,10 @@ class OperationAddRemotingWinAbstract(OperationAbstract):
|
|
|
313
346
|
def __repr__(self):
|
|
314
347
|
return f"Add '{self.bitness_to}' remoting on '{self.bitness_from}' FMU"
|
|
315
348
|
|
|
349
|
+
def fmi_attrs(self, attrs):
|
|
350
|
+
if not attrs["fmi_version"] == "2.0":
|
|
351
|
+
raise OperationError(f"Adding remoting is only available for FMI-2.0")
|
|
352
|
+
|
|
316
353
|
def cosimulation_attrs(self, attrs):
|
|
317
354
|
fmu_bin = {
|
|
318
355
|
"win32": os.path.join(self.fmu.tmp_directory, "binaries", f"win32"),
|
|
@@ -320,7 +357,7 @@ class OperationAddRemotingWinAbstract(OperationAbstract):
|
|
|
320
357
|
}
|
|
321
358
|
|
|
322
359
|
if not os.path.isdir(fmu_bin[self.bitness_from]):
|
|
323
|
-
raise
|
|
360
|
+
raise OperationError(f"{self.bitness_from} interface does not exist")
|
|
324
361
|
|
|
325
362
|
if os.path.isdir(fmu_bin[self.bitness_to]):
|
|
326
363
|
print(f"INFO: {self.bitness_to} already exists. Add front-end.")
|
|
@@ -368,11 +405,11 @@ class OperationRemoveRegexp(OperationAbstract):
|
|
|
368
405
|
def __init__(self, regex_string):
|
|
369
406
|
self.regex_string = regex_string
|
|
370
407
|
self.regex = re.compile(regex_string)
|
|
371
|
-
self.
|
|
408
|
+
self.current_port_number = 0
|
|
372
409
|
self.port_translation = []
|
|
373
410
|
|
|
374
|
-
def
|
|
375
|
-
name =
|
|
411
|
+
def port_attrs(self, fmu_port):
|
|
412
|
+
name = fmu_port['name']
|
|
376
413
|
if self.regex.match(name):
|
|
377
414
|
return 1 # Remove port
|
|
378
415
|
else:
|
|
@@ -387,8 +424,8 @@ class OperationKeepOnlyRegexp(OperationAbstract):
|
|
|
387
424
|
self.regex_string = regex_string
|
|
388
425
|
self.regex = re.compile(regex_string)
|
|
389
426
|
|
|
390
|
-
def
|
|
391
|
-
name =
|
|
427
|
+
def port_attrs(self, fmu_port):
|
|
428
|
+
name = fmu_port['name']
|
|
392
429
|
if self.regex.match(name):
|
|
393
430
|
return 0
|
|
394
431
|
else:
|
|
@@ -429,8 +466,8 @@ class OperationSummary(OperationAbstract):
|
|
|
429
466
|
print(f"| - {k} = {v}")
|
|
430
467
|
print(f"|")
|
|
431
468
|
|
|
432
|
-
def
|
|
433
|
-
causality =
|
|
469
|
+
def port_attrs(self, fmu_port) -> int:
|
|
470
|
+
causality = fmu_port.get("causality", "local")
|
|
434
471
|
|
|
435
472
|
try:
|
|
436
473
|
self.nb_port_per_causality[causality] += 1
|
|
@@ -487,17 +524,17 @@ class OperationTrimUntil(OperationAbstract):
|
|
|
487
524
|
def __repr__(self):
|
|
488
525
|
return f"Trim names until (and including) '{self.separator}'"
|
|
489
526
|
|
|
490
|
-
def
|
|
491
|
-
name =
|
|
527
|
+
def port_attrs(self, fmu_port) -> int:
|
|
528
|
+
name = fmu_port['name']
|
|
492
529
|
try:
|
|
493
|
-
|
|
530
|
+
fmu_port['name'] = name[name.index(self.separator)+len(self.separator):-1]
|
|
494
531
|
except KeyError:
|
|
495
532
|
pass # no separator
|
|
496
533
|
|
|
497
534
|
return 0
|
|
498
535
|
|
|
499
536
|
|
|
500
|
-
class
|
|
537
|
+
class OperationError(Exception):
|
|
501
538
|
def __init__(self, reason):
|
|
502
539
|
self.reason = reason
|
|
503
540
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -198,7 +198,15 @@ class FMUSplitterDescription:
|
|
|
198
198
|
self.config["candidate_fmu"] = []
|
|
199
199
|
|
|
200
200
|
for i in range(nb_fmu):
|
|
201
|
+
# format is
|
|
202
|
+
# filename.fmu
|
|
203
|
+
# or
|
|
204
|
+
# filename.fmu fmi_version
|
|
201
205
|
fmu_filename = self.get_line(file)
|
|
206
|
+
if ' ' in fmu_filename:
|
|
207
|
+
fmu_filename = fmu_filename.split(' ')[0]
|
|
208
|
+
# fmi version is not needed for further operations
|
|
209
|
+
|
|
202
210
|
base_directory = "/".join(txt_filename.split("/")[0:-1])
|
|
203
211
|
|
|
204
212
|
directory = f"{base_directory}/{fmu_filename}"
|
{fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmu_manipulation_toolbox
|
|
3
|
-
Version: 1.
|
|
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
|
{fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/RECORD
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
fmu_manipulation_toolbox/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
2
|
fmu_manipulation_toolbox/__main__.py,sha256=mAzrtkil506DS0F3g3CEbHdtZsZotzntcNhIn_lNJkw,344
|
|
3
|
-
fmu_manipulation_toolbox/__version__.py,sha256=
|
|
4
|
-
fmu_manipulation_toolbox/assembly.py,sha256=
|
|
3
|
+
fmu_manipulation_toolbox/__version__.py,sha256=hYFpHuopEP58yzpI84myHNi5TvdMTGgMf2b3lGAPyRY,12
|
|
4
|
+
fmu_manipulation_toolbox/assembly.py,sha256=cz8Z6zO3tWfNEj62ZEvU5pMv4byXs-F6Ri21YxLAYFs,26528
|
|
5
5
|
fmu_manipulation_toolbox/checker.py,sha256=836wCri6aEl0M6_xHPZ94JRngFjsy8Ee-_t8bzclxBs,2332
|
|
6
|
-
fmu_manipulation_toolbox/container.py,sha256=
|
|
6
|
+
fmu_manipulation_toolbox/container.py,sha256=M8jL2WhjKqZ8pHSSSplys9eqTjGvubcAz0ggsH8nYpI,40556
|
|
7
7
|
fmu_manipulation_toolbox/gui.py,sha256=tVTPLbGZlD5P0WYqaD5B4crG2nHjBGe73yAJrzRXpYE,29218
|
|
8
8
|
fmu_manipulation_toolbox/gui_style.py,sha256=uzEruJumnC5Vf2cfHXVa_c-SHAQoTvDWemro3-b9Mpc,6492
|
|
9
9
|
fmu_manipulation_toolbox/help.py,sha256=aklKiLrsE0adSzQ5uoEB1sBDmI6s4l231gavu4XxxzA,5856
|
|
10
|
-
fmu_manipulation_toolbox/operations.py,sha256
|
|
11
|
-
fmu_manipulation_toolbox/split.py,sha256=
|
|
10
|
+
fmu_manipulation_toolbox/operations.py,sha256=-oOHWLm15XbiVgIM8rbOinO2haqyH-5VF6WpFGGVxNg,18174
|
|
11
|
+
fmu_manipulation_toolbox/split.py,sha256=NVkfdTRR0jj_VOdgtxHQoKptkAg5TFVUA7nUx3_o9Pg,13336
|
|
12
12
|
fmu_manipulation_toolbox/version.py,sha256=OhBLkZ1-nhC77kyvffPNAf6m8OZe1bYTnNf_PWs1NvM,392
|
|
13
13
|
fmu_manipulation_toolbox/resources/checkbox-checked-disabled.png,sha256=FWIuyrXlaNLLePHfXj7j9ca5rT8Hgr14KCe1EqTCZyk,2288
|
|
14
14
|
fmu_manipulation_toolbox/resources/checkbox-checked-hover.png,sha256=KNlV-d_aJNTTvUVXKGT9DBY30sIs2LwocLJrFKNKv8k,2419
|
|
@@ -27,6 +27,7 @@ fmu_manipulation_toolbox/resources/icon_fmu.png,sha256=EuygB2xcoM2WAfKKdyKG_UvTL
|
|
|
27
27
|
fmu_manipulation_toolbox/resources/license.txt,sha256=5ODuU8g8pIkK-NMWXu_rjZ6k7gM7b-N2rmg87-2Kmqw,1583
|
|
28
28
|
fmu_manipulation_toolbox/resources/mask.png,sha256=px1U4hQGL0AmZ4BQPknOVREpMpTSejbah3ntkpqAzFA,3008
|
|
29
29
|
fmu_manipulation_toolbox/resources/model.png,sha256=EAf_HnZJe8zYGZygerG1MMt2U-tMMZlifzXPj4_iORA,208788
|
|
30
|
+
fmu_manipulation_toolbox/resources/darwin64/container.dylib,sha256=9L9N8rXVI6sYEDZAQdDymX6Z0GmFwj3_GhrtiBh1pTM,144760
|
|
30
31
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Annotation.xsd,sha256=OGfyJtaJntKypX5KDpuZ-nV1oYLZ6HV16pkpKOmYox4,2731
|
|
31
32
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2AttributeGroups.xsd,sha256=HwyV7LBse-PQSv4z1xjmtzPU3Hjnv4mluq9YdSBNHMQ,3704
|
|
32
33
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ModelDescription.xsd,sha256=JM4j_9q-pc40XYHb28jfT3iV3aYM5JLqD5aRjO72K1E,18939
|
|
@@ -49,16 +50,16 @@ fmu_manipulation_toolbox/resources/fmi-3.0/fmi3VariableDependency.xsd,sha256=YQS
|
|
|
49
50
|
fmu_manipulation_toolbox/resources/linux32/client_sm.so,sha256=xVdY2zy13pa2DcvFiweSNpp7E6DiONqeoBdlcJHrW_k,35940
|
|
50
51
|
fmu_manipulation_toolbox/resources/linux32/server_sm,sha256=1TLGqNPyM5UVOrCfzNqWyF6ClLksY3EiY3CSsrnp6c0,22836
|
|
51
52
|
fmu_manipulation_toolbox/resources/linux64/client_sm.so,sha256=EhY1XHo1YcQn6yqZ7wk5okqtZyp0MrcCsGcudqE-aIM,37000
|
|
52
|
-
fmu_manipulation_toolbox/resources/linux64/container.so,sha256=
|
|
53
|
+
fmu_manipulation_toolbox/resources/linux64/container.so,sha256=b1BizAi-7Ag0vHBk_HjiXhBWpMnkV4Cju2FGMYqCQ7w,131144
|
|
53
54
|
fmu_manipulation_toolbox/resources/linux64/server_sm,sha256=ulfoPvmaYe9nInYcVEyj7mD9zDzGk56OUoWx1mPKLiE,22768
|
|
54
|
-
fmu_manipulation_toolbox/resources/win32/client_sm.dll,sha256=
|
|
55
|
-
fmu_manipulation_toolbox/resources/win32/server_sm.exe,sha256=
|
|
56
|
-
fmu_manipulation_toolbox/resources/win64/client_sm.dll,sha256=
|
|
57
|
-
fmu_manipulation_toolbox/resources/win64/container.dll,sha256=
|
|
58
|
-
fmu_manipulation_toolbox/resources/win64/server_sm.exe,sha256=
|
|
59
|
-
fmu_manipulation_toolbox-1.
|
|
60
|
-
fmu_manipulation_toolbox-1.
|
|
61
|
-
fmu_manipulation_toolbox-1.
|
|
62
|
-
fmu_manipulation_toolbox-1.
|
|
63
|
-
fmu_manipulation_toolbox-1.
|
|
64
|
-
fmu_manipulation_toolbox-1.
|
|
55
|
+
fmu_manipulation_toolbox/resources/win32/client_sm.dll,sha256=HkGkuf0HTsBQSCWeiTDYb2kANc2CjsjhVo9Qk8KLLl0,17920
|
|
56
|
+
fmu_manipulation_toolbox/resources/win32/server_sm.exe,sha256=2vrLiRdBoBUSckrSJhvt9F_hJowYv7_qVo0weKVeXBc,15872
|
|
57
|
+
fmu_manipulation_toolbox/resources/win64/client_sm.dll,sha256=df4rfG-SyW0EClifv8PDYqzhKMOvzwZnanaS_8lDxC8,22016
|
|
58
|
+
fmu_manipulation_toolbox/resources/win64/container.dll,sha256=TOJIEULG8TF2vdHbfi2Adwt1NnuLsEbMvchZhzO0P6s,93696
|
|
59
|
+
fmu_manipulation_toolbox/resources/win64/server_sm.exe,sha256=PFueL3UzAVwSz8QBmysbY4Mr9G2lVcjdrFYEyWuTDRU,19968
|
|
60
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/licenses/LICENSE.txt,sha256=c_862mzyk6ownO3Gt6cVs0-53IXLi_-ZEQFNDVabESw,1285
|
|
61
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/METADATA,sha256=595mII6g6nVb5iilo-HAvp95-TSS_8yl-95y_vicFrs,1156
|
|
62
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
63
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/entry_points.txt,sha256=HjOZkflbI1IuSY8BpOZre20m24M4GDQGCJfPIa7NrlY,264
|
|
64
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/top_level.txt,sha256=9D_h-5BMjSqf9z-XFkbJL_bMppR2XNYW3WNuPkXou0k,25
|
|
65
|
+
fmu_manipulation_toolbox-1.9rc1.dist-info/RECORD,,
|
{fmu_manipulation_toolbox-1.9rc0.dist-info → fmu_manipulation_toolbox-1.9rc1.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|