fmu-manipulation-toolbox 1.8.4.3b0__py3-none-any.whl → 1.9__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/__init__.py +0 -1
- fmu_manipulation_toolbox/__main__.py +1 -1
- fmu_manipulation_toolbox/__version__.py +1 -1
- fmu_manipulation_toolbox/assembly.py +21 -12
- fmu_manipulation_toolbox/checker.py +11 -8
- fmu_manipulation_toolbox/cli/__init__.py +0 -0
- fmu_manipulation_toolbox/cli/fmucontainer.py +105 -0
- fmu_manipulation_toolbox/cli/fmusplit.py +48 -0
- fmu_manipulation_toolbox/cli/fmutool.py +127 -0
- fmu_manipulation_toolbox/cli/utils.py +36 -0
- fmu_manipulation_toolbox/container.py +534 -247
- fmu_manipulation_toolbox/gui.py +47 -55
- fmu_manipulation_toolbox/gui_style.py +8 -0
- fmu_manipulation_toolbox/help.py +3 -0
- fmu_manipulation_toolbox/operations.py +251 -179
- fmu_manipulation_toolbox/remoting.py +107 -0
- fmu_manipulation_toolbox/resources/darwin64/container.dylib +0 -0
- fmu_manipulation_toolbox/resources/linux32/client_sm.so +0 -0
- fmu_manipulation_toolbox/resources/linux32/server_sm +0 -0
- fmu_manipulation_toolbox/resources/linux64/client_sm.so +0 -0
- fmu_manipulation_toolbox/resources/linux64/container.so +0 -0
- fmu_manipulation_toolbox/resources/linux64/server_sm +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 +67 -34
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/METADATA +1 -1
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/RECORD +34 -27
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/WHEEL +0 -0
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/entry_points.txt +0 -0
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/licenses/LICENSE.txt +0 -0
- {fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import shutil
|
|
3
|
+
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from .operations import OperationAbstract, OperationError
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger("fmu_manipulation_toolbox")
|
|
8
|
+
|
|
9
|
+
class OperationAddRemotingWinAbstract(OperationAbstract):
|
|
10
|
+
bitness_from = None
|
|
11
|
+
bitness_to = None
|
|
12
|
+
|
|
13
|
+
def __repr__(self):
|
|
14
|
+
return f"Add '{self.bitness_to}' remoting on '{self.bitness_from}' FMU"
|
|
15
|
+
|
|
16
|
+
def __init__(self):
|
|
17
|
+
self.vr = {
|
|
18
|
+
"Real": [],
|
|
19
|
+
"Integer": [],
|
|
20
|
+
"Boolean": []
|
|
21
|
+
}
|
|
22
|
+
self.nb_input = 0
|
|
23
|
+
self.nb_output = 0
|
|
24
|
+
|
|
25
|
+
def fmi_attrs(self, attrs):
|
|
26
|
+
if not attrs["fmiVersion"] == "2.0":
|
|
27
|
+
raise OperationError(f"Adding remoting is only available for FMI-2.0")
|
|
28
|
+
|
|
29
|
+
def cosimulation_attrs(self, attrs):
|
|
30
|
+
fmu_bin = {
|
|
31
|
+
"win32": Path(self.fmu.tmp_directory) / "binaries" / "win32",
|
|
32
|
+
"win64": Path(self.fmu.tmp_directory) / "binaries" / "win64",
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if not fmu_bin[self.bitness_from].is_dir():
|
|
36
|
+
raise OperationError(f"{self.bitness_from} interface does not exist")
|
|
37
|
+
|
|
38
|
+
if fmu_bin[self.bitness_to].is_dir():
|
|
39
|
+
logger.info(f"{self.bitness_to} already exists. Add front-end.")
|
|
40
|
+
shutil.move(fmu_bin[self.bitness_to] / Path(attrs['modelIdentifier']).with_suffix(".dll"),
|
|
41
|
+
fmu_bin[self.bitness_to] / Path(attrs['modelIdentifier']).with_suffix("-remoted.dll"))
|
|
42
|
+
else:
|
|
43
|
+
fmu_bin[self.bitness_to].mkdir()
|
|
44
|
+
|
|
45
|
+
to_path = Path(__file__).parent / "resources" / self.bitness_to
|
|
46
|
+
try:
|
|
47
|
+
shutil.copyfile(to_path / "client_sm.dll",
|
|
48
|
+
fmu_bin[self.bitness_to] / Path(attrs['modelIdentifier']).with_suffix(".dll"))
|
|
49
|
+
except FileNotFoundError as e:
|
|
50
|
+
logger.critical(f"Cannot add remoting client: {e}")
|
|
51
|
+
|
|
52
|
+
from_path = Path(__file__).parent / "resources" / self.bitness_from
|
|
53
|
+
try:
|
|
54
|
+
shutil.copyfile(from_path / "server_sm.exe",
|
|
55
|
+
fmu_bin[self.bitness_from] / "server_sm.exe")
|
|
56
|
+
except FileNotFoundError as e:
|
|
57
|
+
logger.critical(f"Cannot add remoting server: {e}")
|
|
58
|
+
|
|
59
|
+
shutil.copyfile(Path(__file__).parent / "resources" / "license.txt",
|
|
60
|
+
fmu_bin[self.bitness_to] / "license.txt")
|
|
61
|
+
|
|
62
|
+
def port_attrs(self, fmu_port) -> int:
|
|
63
|
+
vr = int(fmu_port["valueReference"])
|
|
64
|
+
causality = fmu_port.get("causality", "local")
|
|
65
|
+
try:
|
|
66
|
+
self.vr[fmu_port.fmi_type].append(vr)
|
|
67
|
+
if causality in ("input", "parameter"):
|
|
68
|
+
self.nb_input += 1
|
|
69
|
+
else:
|
|
70
|
+
self.nb_output += 1
|
|
71
|
+
except KeyError:
|
|
72
|
+
logger.error(f"Type '{fmu_port.fmi_type}' is not supported by remoting.")
|
|
73
|
+
|
|
74
|
+
return 0
|
|
75
|
+
|
|
76
|
+
def closure(self):
|
|
77
|
+
target_dir = Path(self.fmu.tmp_directory) / "resources"
|
|
78
|
+
if not target_dir.is_dir():
|
|
79
|
+
target_dir.mkdir()
|
|
80
|
+
|
|
81
|
+
logger.info(f"Remoting nb input port: {self.nb_input}")
|
|
82
|
+
logger.info(f"Remoting nb output port: {self.nb_output}")
|
|
83
|
+
with open(target_dir/ "remoting_table.txt", "wt") as file:
|
|
84
|
+
for fmi_type in ('Real', 'Integer', 'Boolean'):
|
|
85
|
+
print(len(self.vr[fmi_type]), file=file)
|
|
86
|
+
for fmi_type in ('Real', 'Integer', 'Boolean'):
|
|
87
|
+
for vr in sorted(self.vr[fmi_type]):
|
|
88
|
+
print(vr, file=file)
|
|
89
|
+
|
|
90
|
+
class OperationAddRemotingWin64(OperationAddRemotingWinAbstract):
|
|
91
|
+
bitness_from = "win32"
|
|
92
|
+
bitness_to = "win64"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class OperationAddFrontendWin32(OperationAddRemotingWinAbstract):
|
|
96
|
+
bitness_from = "win32"
|
|
97
|
+
bitness_to = "win32"
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class OperationAddFrontendWin64(OperationAddRemotingWinAbstract):
|
|
101
|
+
bitness_from = "win64"
|
|
102
|
+
bitness_to = "win64"
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class OperationAddRemotingWin32(OperationAddRemotingWinAbstract):
|
|
106
|
+
bitness_from = "win64"
|
|
107
|
+
bitness_to = "win32"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
|
@@ -40,6 +42,7 @@ class FMUSplitter:
|
|
|
40
42
|
def __init__(self, fmu_filename: str):
|
|
41
43
|
self.fmu_filename = Path(fmu_filename)
|
|
42
44
|
self.directory = self.fmu_filename.with_suffix(".dir")
|
|
45
|
+
self.zip = None # to handle error
|
|
43
46
|
self.zip = zipfile.ZipFile(self.fmu_filename)
|
|
44
47
|
self.filenames_list = self.zip.namelist()
|
|
45
48
|
self.dir_set = self.get_dir_set()
|
|
@@ -58,13 +61,14 @@ class FMUSplitter:
|
|
|
58
61
|
return dir_set
|
|
59
62
|
|
|
60
63
|
def __del__(self):
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
if self.zip is not None:
|
|
65
|
+
logger.debug("Closing zip file")
|
|
66
|
+
self.zip.close()
|
|
63
67
|
|
|
64
68
|
def split_fmu(self):
|
|
65
69
|
logger.info(f"Splitting...")
|
|
66
70
|
config = self._split_fmu(fmu_filename=str(self.fmu_filename), relative_path="")
|
|
67
|
-
config_filename = self.directory / self.fmu_filename.with_suffix(".json")
|
|
71
|
+
config_filename = self.directory / self.fmu_filename.with_suffix(".json").name
|
|
68
72
|
with open(config_filename, "w") as file:
|
|
69
73
|
json.dump(config, file, indent=2)
|
|
70
74
|
logger.info(f"Container definition saved to '{config_filename}'")
|
|
@@ -75,7 +79,7 @@ class FMUSplitter:
|
|
|
75
79
|
if txt_filename in self.filenames_list:
|
|
76
80
|
description = FMUSplitterDescription(self.zip)
|
|
77
81
|
config = description.parse_txt_file(txt_filename)
|
|
78
|
-
config["name"] = fmu_filename
|
|
82
|
+
config["name"] = Path(fmu_filename).name
|
|
79
83
|
for i, fmu_filename in enumerate(config["candidate_fmu"]):
|
|
80
84
|
directory = f"{relative_path}resources/{i:02x}/"
|
|
81
85
|
if directory not in self.dir_set:
|
|
@@ -107,16 +111,10 @@ class FMUSplitter:
|
|
|
107
111
|
fmu_file.writestr(file[len(directory):], data)
|
|
108
112
|
logger.info(f"FMU Extraction of '{filename}'")
|
|
109
113
|
|
|
110
|
-
|
|
111
114
|
class FMUSplitterDescription:
|
|
112
115
|
def __init__(self, zip):
|
|
113
116
|
self.zip = zip
|
|
114
|
-
self.links: Dict[str, Dict[int, FMUSplitterLink]] = {
|
|
115
|
-
"Real": {},
|
|
116
|
-
"Integer": {},
|
|
117
|
-
"Boolean": {},
|
|
118
|
-
"String": {}
|
|
119
|
-
}
|
|
117
|
+
self.links: Dict[str, Dict[int, FMUSplitterLink]] = dict((el, {}) for el in EmbeddedFMUPort.ALL_TYPES)
|
|
120
118
|
self.vr_to_name: Dict[str, Dict[str, Dict[int, Dict[str, str]]]] = {} # name, fmi_type, vr <-> {name, causality}
|
|
121
119
|
self.config: Dict[str, Any] = {
|
|
122
120
|
"auto_input": False,
|
|
@@ -129,9 +127,11 @@ class FMUSplitterDescription:
|
|
|
129
127
|
|
|
130
128
|
# used for modelDescription.xml parsing
|
|
131
129
|
self.current_fmu_filename = None
|
|
130
|
+
self.current_fmi_version = None
|
|
132
131
|
self.current_vr = None
|
|
133
132
|
self.current_name = None
|
|
134
133
|
self.current_causality = None
|
|
134
|
+
self.supported_fmi_types: Tuple[str] = tuple()
|
|
135
135
|
|
|
136
136
|
@staticmethod
|
|
137
137
|
def get_line(file):
|
|
@@ -141,14 +141,23 @@ class FMUSplitterDescription:
|
|
|
141
141
|
return line
|
|
142
142
|
raise StopIteration
|
|
143
143
|
|
|
144
|
-
def start_element(self,
|
|
145
|
-
if
|
|
144
|
+
def start_element(self, tag, attrs):
|
|
145
|
+
if tag == "fmiModelDescription":
|
|
146
|
+
self.current_fmi_version = attrs["fmiVersion"]
|
|
147
|
+
elif tag == "ScalarVariable":
|
|
146
148
|
self.current_name = attrs["name"]
|
|
147
149
|
self.current_vr = int(attrs["valueReference"])
|
|
148
150
|
self.current_causality = attrs["causality"]
|
|
149
|
-
elif
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
elif self.current_fmi_version == "2.0" and tag in EmbeddedFMUPort.FMI_TO_CONTAINER[2]:
|
|
152
|
+
fmi_type = EmbeddedFMUPort.FMI_TO_CONTAINER[2][tag]
|
|
153
|
+
self.vr_to_name[self.current_fmu_filename][fmi_type][self.current_vr] = {
|
|
154
|
+
"name": self.current_name,
|
|
155
|
+
"causality": self.current_causality}
|
|
156
|
+
elif self.current_fmi_version == "3.0" and tag in EmbeddedFMUPort.FMI_TO_CONTAINER[3]:
|
|
157
|
+
fmi_type = EmbeddedFMUPort.FMI_TO_CONTAINER[3][tag]
|
|
158
|
+
self.vr_to_name[self.current_fmu_filename][fmi_type][int(attrs["valueReference"])] = {
|
|
159
|
+
"name": attrs["name"],
|
|
160
|
+
"causality": attrs["causality"]}
|
|
152
161
|
else:
|
|
153
162
|
self.current_vr = None
|
|
154
163
|
self.current_name = None
|
|
@@ -161,14 +170,10 @@ class FMUSplitterDescription:
|
|
|
161
170
|
else:
|
|
162
171
|
filename = f"{directory}/modelDescription.xml"
|
|
163
172
|
|
|
164
|
-
self.vr_to_name[fmu_filename] = {
|
|
165
|
-
"Real": {},
|
|
166
|
-
"Integer": {},
|
|
167
|
-
"Boolean": {},
|
|
168
|
-
"String": {}
|
|
169
|
-
}
|
|
173
|
+
self.vr_to_name[fmu_filename] = dict((el, {}) for el in EmbeddedFMUPort.ALL_TYPES)
|
|
170
174
|
parser = xml.parsers.expat.ParserCreate()
|
|
171
175
|
self.current_fmu_filename = fmu_filename
|
|
176
|
+
self.current_fmi_version = None
|
|
172
177
|
self.current_vr = None
|
|
173
178
|
self.current_name = None
|
|
174
179
|
self.current_causality = None
|
|
@@ -178,20 +183,45 @@ class FMUSplitterDescription:
|
|
|
178
183
|
parser.ParseFile(file)
|
|
179
184
|
|
|
180
185
|
def parse_txt_file_header(self, file, txt_filename):
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
flags = self.get_line(file).split(" ")
|
|
187
|
+
if len(flags) == 1:
|
|
188
|
+
self.supported_fmi_types = ("Real", "Integer", "Boolean", "String")
|
|
189
|
+
self.config["mt"] = flags[0] == "1"
|
|
190
|
+
self.config["profiling"] = self.get_line(file) == "1"
|
|
191
|
+
self.config["sequential"] = False
|
|
192
|
+
elif len(flags) == 3:
|
|
193
|
+
self.supported_fmi_types = EmbeddedFMUPort.ALL_TYPES
|
|
194
|
+
self.config["mt"] = flags[0] == "1"
|
|
195
|
+
self.config["profiling"] = flags[1] == "1"
|
|
196
|
+
self.config["sequential"] = flags[2] == "1"
|
|
197
|
+
else:
|
|
198
|
+
raise FMUSplitterError(f"Cannot interpret flags '{flags}'")
|
|
199
|
+
|
|
183
200
|
self.config["step_size"] = float(self.get_line(file))
|
|
184
201
|
nb_fmu = int(self.get_line(file))
|
|
185
202
|
logger.debug(f"Number of FMUs: {nb_fmu}")
|
|
186
203
|
self.config["candidate_fmu"] = []
|
|
187
204
|
|
|
188
205
|
for i in range(nb_fmu):
|
|
206
|
+
# format is
|
|
207
|
+
# filename.fmu
|
|
208
|
+
# or
|
|
209
|
+
# filename.fmu fmi_version
|
|
189
210
|
fmu_filename = self.get_line(file)
|
|
211
|
+
if ' ' in fmu_filename:
|
|
212
|
+
fmu_filename = fmu_filename.split(' ')[0]
|
|
213
|
+
# fmi version is not needed for further operations
|
|
214
|
+
|
|
190
215
|
base_directory = "/".join(txt_filename.split("/")[0:-1])
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
216
|
+
|
|
217
|
+
directory = f"{base_directory}/{fmu_filename}"
|
|
218
|
+
if f"{directory}/modelDescription.xml" not in self.zip.namelist():
|
|
219
|
+
directory = f"{base_directory}/{i:02x}"
|
|
220
|
+
if f"{directory}/modelDescription.xml" not in self.zip.namelist():
|
|
221
|
+
print(self.zip.namelist())
|
|
222
|
+
raise FMUSplitterError(f"Cannot find in FMU directory in {directory}.")
|
|
223
|
+
|
|
224
|
+
self.parse_model_description(directory, fmu_filename)
|
|
195
225
|
self.config["candidate_fmu"].append(fmu_filename)
|
|
196
226
|
_library = self.get_line(file)
|
|
197
227
|
_uuid = self.get_line(file)
|
|
@@ -217,7 +247,7 @@ class FMUSplitterDescription:
|
|
|
217
247
|
logger.debug(f"Adding container port {causality}: {definition}")
|
|
218
248
|
|
|
219
249
|
def parse_txt_file_ports(self, file):
|
|
220
|
-
for fmi_type in
|
|
250
|
+
for fmi_type in self.supported_fmi_types:
|
|
221
251
|
nb_port_variables = self.get_line(file).split(" ")[0]
|
|
222
252
|
for i in range(int(nb_port_variables)):
|
|
223
253
|
tokens = self.get_line(file).split(" ")
|
|
@@ -236,15 +266,14 @@ class FMUSplitterDescription:
|
|
|
236
266
|
def parse_txt_file(self, txt_filename: str):
|
|
237
267
|
self.parse_model_description(str(Path(txt_filename).parent.parent), ".")
|
|
238
268
|
logger.debug(f"Parsing container file '{txt_filename}'")
|
|
239
|
-
|
|
240
269
|
with (self.zip.open(txt_filename) as file):
|
|
241
270
|
self.parse_txt_file_header(file, txt_filename)
|
|
242
271
|
self.parse_txt_file_ports(file)
|
|
243
272
|
|
|
244
|
-
|
|
245
273
|
for fmu_filename in self.config["candidate_fmu"]:
|
|
246
274
|
# Inputs per FMUs
|
|
247
|
-
|
|
275
|
+
|
|
276
|
+
for fmi_type in self.supported_fmi_types:
|
|
248
277
|
nb_input = int(self.get_line(file))
|
|
249
278
|
for i in range(nb_input):
|
|
250
279
|
local, vr = self.get_line(file).split(" ")
|
|
@@ -256,7 +285,7 @@ class FMUSplitterDescription:
|
|
|
256
285
|
link.to_port.append(FMUSplitterPort(fmu_filename,
|
|
257
286
|
self.vr_to_name[fmu_filename][fmi_type][int(vr)]["name"]))
|
|
258
287
|
|
|
259
|
-
for fmi_type in
|
|
288
|
+
for fmi_type in self.supported_fmi_types:
|
|
260
289
|
nb_start = int(self.get_line(file))
|
|
261
290
|
for i in range(nb_start):
|
|
262
291
|
tokens = self.get_line(file).split(" ")
|
|
@@ -270,7 +299,7 @@ class FMUSplitterDescription:
|
|
|
270
299
|
self.config["start"] = [start_definition]
|
|
271
300
|
|
|
272
301
|
# Output per FMUs
|
|
273
|
-
for fmi_type in
|
|
302
|
+
for fmi_type in self.supported_fmi_types:
|
|
274
303
|
nb_output = int(self.get_line(file))
|
|
275
304
|
|
|
276
305
|
for i in range(nb_output):
|
|
@@ -282,6 +311,10 @@ class FMUSplitterDescription:
|
|
|
282
311
|
self.links[fmi_type][local] = link
|
|
283
312
|
link.from_port = FMUSplitterPort(fmu_filename,
|
|
284
313
|
self.vr_to_name[fmu_filename][fmi_type][int(vr)]["name"])
|
|
314
|
+
#conversion
|
|
315
|
+
nb_conversion = int(self.get_line(file))
|
|
316
|
+
for i in range(nb_conversion):
|
|
317
|
+
self.get_line(file)
|
|
285
318
|
|
|
286
319
|
logger.debug("End of parsing.")
|
|
287
320
|
|
{fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.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.9
|
|
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.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/RECORD
RENAMED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
fmu_manipulation_toolbox/__init__.py,sha256=
|
|
2
|
-
fmu_manipulation_toolbox/__main__.py,sha256=
|
|
3
|
-
fmu_manipulation_toolbox/__version__.py,sha256=
|
|
4
|
-
fmu_manipulation_toolbox/assembly.py,sha256=
|
|
5
|
-
fmu_manipulation_toolbox/checker.py,sha256=
|
|
6
|
-
fmu_manipulation_toolbox/container.py,sha256=
|
|
7
|
-
fmu_manipulation_toolbox/gui.py,sha256=
|
|
8
|
-
fmu_manipulation_toolbox/gui_style.py,sha256=
|
|
9
|
-
fmu_manipulation_toolbox/help.py,sha256=
|
|
10
|
-
fmu_manipulation_toolbox/operations.py,sha256=
|
|
11
|
-
fmu_manipulation_toolbox/
|
|
1
|
+
fmu_manipulation_toolbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
fmu_manipulation_toolbox/__main__.py,sha256=FpG0ITBz5q-AvIbXplVh_1g1zla5souFGtpiDdECxEw,352
|
|
3
|
+
fmu_manipulation_toolbox/__version__.py,sha256=RpjnZ-g4XsDa0uZToxk2ez_E9cmR3N2SrOqy0awR3so,7
|
|
4
|
+
fmu_manipulation_toolbox/assembly.py,sha256=XQ_1sB6K1Dk2mnNe-E3_6Opoeub7F9Qaln0EUDzsop8,26553
|
|
5
|
+
fmu_manipulation_toolbox/checker.py,sha256=jw1omfrMMIMHlIpHXpWBcQgIiS9hnHe5T9CZ5KlbVGs,2422
|
|
6
|
+
fmu_manipulation_toolbox/container.py,sha256=Ed6JsWM2oMs-jyGyKmrHHebNuG4qwiGLYtx0BREIiBE,45710
|
|
7
|
+
fmu_manipulation_toolbox/gui.py,sha256=ax-IbGO7GyBG0Mb5okN588CKQDfMxoF1uZtD1_CYnjc,29199
|
|
8
|
+
fmu_manipulation_toolbox/gui_style.py,sha256=s6WdrnNd_lCMWhuBf5LKK8wrfLXCU7pFTLUfvqkJVno,6633
|
|
9
|
+
fmu_manipulation_toolbox/help.py,sha256=j8xmnCrwQpaW-SZ8hSqA1dlTXgaqzQWc4Yr3RH_oqck,6012
|
|
10
|
+
fmu_manipulation_toolbox/operations.py,sha256=VQvFXRHF48e-ZLqoG8nbz61iB5lX6qAkqZHQ0m0lUPw,20577
|
|
11
|
+
fmu_manipulation_toolbox/remoting.py,sha256=N25MDFkIcEWe9CIT1M4L9kea3j-8E7i2I1VOI6zIAdw,3876
|
|
12
|
+
fmu_manipulation_toolbox/split.py,sha256=yFaW6yhvFjOXpRynWzitR7o7uSrxb-RxeFzmQNxUFHI,14147
|
|
12
13
|
fmu_manipulation_toolbox/version.py,sha256=OhBLkZ1-nhC77kyvffPNAf6m8OZe1bYTnNf_PWs1NvM,392
|
|
14
|
+
fmu_manipulation_toolbox/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
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
|
+
fmu_manipulation_toolbox/cli/utils.py,sha256=gNhdlFYSSNSb0fovzS0crnxgmqqKXe0KtoZZFhRKhfg,1375
|
|
13
19
|
fmu_manipulation_toolbox/resources/checkbox-checked-disabled.png,sha256=FWIuyrXlaNLLePHfXj7j9ca5rT8Hgr14KCe1EqTCZyk,2288
|
|
14
20
|
fmu_manipulation_toolbox/resources/checkbox-checked-hover.png,sha256=KNlV-d_aJNTTvUVXKGT9DBY30sIs2LwocLJrFKNKv8k,2419
|
|
15
21
|
fmu_manipulation_toolbox/resources/checkbox-checked.png,sha256=gzyFqvRFsZixVh6ZlV4SMWUKzglY1rSn7SvJUKMVvtk,2411
|
|
@@ -27,6 +33,7 @@ fmu_manipulation_toolbox/resources/icon_fmu.png,sha256=EuygB2xcoM2WAfKKdyKG_UvTL
|
|
|
27
33
|
fmu_manipulation_toolbox/resources/license.txt,sha256=5ODuU8g8pIkK-NMWXu_rjZ6k7gM7b-N2rmg87-2Kmqw,1583
|
|
28
34
|
fmu_manipulation_toolbox/resources/mask.png,sha256=px1U4hQGL0AmZ4BQPknOVREpMpTSejbah3ntkpqAzFA,3008
|
|
29
35
|
fmu_manipulation_toolbox/resources/model.png,sha256=EAf_HnZJe8zYGZygerG1MMt2U-tMMZlifzXPj4_iORA,208788
|
|
36
|
+
fmu_manipulation_toolbox/resources/darwin64/container.dylib,sha256=omGiU38-2Zh6pyvPjySKDQ5TNDRVS2lkNDIf8BjHD8A,161560
|
|
30
37
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2Annotation.xsd,sha256=OGfyJtaJntKypX5KDpuZ-nV1oYLZ6HV16pkpKOmYox4,2731
|
|
31
38
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2AttributeGroups.xsd,sha256=HwyV7LBse-PQSv4z1xjmtzPU3Hjnv4mluq9YdSBNHMQ,3704
|
|
32
39
|
fmu_manipulation_toolbox/resources/fmi-2.0/fmi2ModelDescription.xsd,sha256=JM4j_9q-pc40XYHb28jfT3iV3aYM5JLqD5aRjO72K1E,18939
|
|
@@ -46,19 +53,19 @@ fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Type.xsd,sha256=TaHRoUBIFtmdEwBKB
|
|
|
46
53
|
fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Unit.xsd,sha256=CK_F2t5LfyQ6eSNJ8soTFMVK9DU8vD2WiMi2MQvjB0g,3746
|
|
47
54
|
fmu_manipulation_toolbox/resources/fmi-3.0/fmi3Variable.xsd,sha256=3YU-3q1-c-namz7sMe5cxnmOVOJsRSmfWR02PKv3xaU,19171
|
|
48
55
|
fmu_manipulation_toolbox/resources/fmi-3.0/fmi3VariableDependency.xsd,sha256=YQSBwXt4IsDlyegY8bX-qQHGSfE5TipTPfo2g2yqq1c,3082
|
|
49
|
-
fmu_manipulation_toolbox/resources/linux32/client_sm.so,sha256=
|
|
50
|
-
fmu_manipulation_toolbox/resources/linux32/server_sm,sha256=
|
|
51
|
-
fmu_manipulation_toolbox/resources/linux64/client_sm.so,sha256=
|
|
52
|
-
fmu_manipulation_toolbox/resources/linux64/container.so,sha256=
|
|
53
|
-
fmu_manipulation_toolbox/resources/linux64/server_sm,sha256=
|
|
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.
|
|
56
|
+
fmu_manipulation_toolbox/resources/linux32/client_sm.so,sha256=ad_Fo62_Vt4P3DmROhS3B4N-jBD5jQZHYBq20wTL1_U,34756
|
|
57
|
+
fmu_manipulation_toolbox/resources/linux32/server_sm,sha256=gzKU0BTeaRkvhTMQtHHj3K8uYFyEdyGGn_mZy_jG9xo,21304
|
|
58
|
+
fmu_manipulation_toolbox/resources/linux64/client_sm.so,sha256=JHMekdWhn2RPUDqfH3U7WB8SM1WyGl-0UbaVE-Fh-Aw,32592
|
|
59
|
+
fmu_manipulation_toolbox/resources/linux64/container.so,sha256=3wwgP8xYumKzmaGH761f3D_mkVbUCntOE_UgGUtahyg,135520
|
|
60
|
+
fmu_manipulation_toolbox/resources/linux64/server_sm,sha256=MZn6vITN2qpBHYt_RaK2VnFFp00hk8fTALBHmXPtLwc,22608
|
|
61
|
+
fmu_manipulation_toolbox/resources/win32/client_sm.dll,sha256=WcieLopqhHu3fIXZo_k71FMgroylR5pRWs9qGdoVzCc,17920
|
|
62
|
+
fmu_manipulation_toolbox/resources/win32/server_sm.exe,sha256=wqKQrr5m6DsdNk5rKFRKwgyTDOySlPX_jMMhdyywMsQ,15360
|
|
63
|
+
fmu_manipulation_toolbox/resources/win64/client_sm.dll,sha256=uOTC5yGOtSheSGcWmBEWXhwyrJMJpoKgtTNEo8WJVC0,21504
|
|
64
|
+
fmu_manipulation_toolbox/resources/win64/container.dll,sha256=YG2zagCEmzrtGbbNCYir5N-pm5hxPdZft9cZPVMQuWI,98816
|
|
65
|
+
fmu_manipulation_toolbox/resources/win64/server_sm.exe,sha256=SikJSqTwrq7HMKITP3ksFi2j0ZqCIqgOMdPMsHi5L8w,18432
|
|
66
|
+
fmu_manipulation_toolbox-1.9.dist-info/licenses/LICENSE.txt,sha256=c_862mzyk6ownO3Gt6cVs0-53IXLi_-ZEQFNDVabESw,1285
|
|
67
|
+
fmu_manipulation_toolbox-1.9.dist-info/METADATA,sha256=8Ls_kJpVghQrFyyDEGHeyc6aKD0LlHKd7rJDAsWbTxk,1153
|
|
68
|
+
fmu_manipulation_toolbox-1.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
69
|
+
fmu_manipulation_toolbox-1.9.dist-info/entry_points.txt,sha256=HjOZkflbI1IuSY8BpOZre20m24M4GDQGCJfPIa7NrlY,264
|
|
70
|
+
fmu_manipulation_toolbox-1.9.dist-info/top_level.txt,sha256=9D_h-5BMjSqf9z-XFkbJL_bMppR2XNYW3WNuPkXou0k,25
|
|
71
|
+
fmu_manipulation_toolbox-1.9.dist-info/RECORD,,
|
{fmu_manipulation_toolbox-1.8.4.3b0.dist-info → fmu_manipulation_toolbox-1.9.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|