PySimultan 0.4.19__py3-none-any.whl → 0.4.20__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- PySimultan2/__about__.py +1 -1
- PySimultan2/default_types.py +17 -18
- PySimultan2/utils.py +34 -2
- {pysimultan-0.4.19.dist-info → pysimultan-0.4.20.dist-info}/METADATA +4 -1
- {pysimultan-0.4.19.dist-info → pysimultan-0.4.20.dist-info}/RECORD +7 -7
- {pysimultan-0.4.19.dist-info → pysimultan-0.4.20.dist-info}/WHEEL +0 -0
- {pysimultan-0.4.19.dist-info → pysimultan-0.4.20.dist-info}/licenses/LICENSE.txt +0 -0
PySimultan2/__about__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
version = '0.4.
|
1
|
+
version = '0.4.20'
|
PySimultan2/default_types.py
CHANGED
@@ -377,12 +377,15 @@ class ComponentDictionary(SimultanObject):
|
|
377
377
|
|
378
378
|
if kwargs.get('check_dict', True) and comp_dict is not None and key in object.__getattribute__(self,
|
379
379
|
'_dict').keys():
|
380
|
-
return object.__getattribute__(self, '_dict')
|
380
|
+
return object.__getattribute__(self, '_dict').get(key, None)
|
381
381
|
else:
|
382
382
|
# data_model = config.default_data_model
|
383
383
|
# obj = get_component_taxonomy_entry(self._wrapped_obj, key)
|
384
384
|
# if obj is not None:
|
385
385
|
# val = get_obj_value(obj, data_model=self._data_model, object_mapper=self._object_mapper)
|
386
|
+
data_model = self._data_model
|
387
|
+
object_mapper = self._object_mapper
|
388
|
+
wrapped_obj = self._wrapped_obj
|
386
389
|
|
387
390
|
if key in self._taxonomy_map.parameter_taxonomy_entry_dict.keys():
|
388
391
|
text_or_key = self._taxonomy_map.parameter_taxonomy_entry_dict[key]
|
@@ -397,22 +400,22 @@ class ComponentDictionary(SimultanObject):
|
|
397
400
|
text_or_key = content.text_or_key
|
398
401
|
|
399
402
|
try:
|
400
|
-
components = list(
|
403
|
+
components = list(wrapped_obj.Components.Items)
|
401
404
|
val = next((get_obj_value(x.Component,
|
402
|
-
data_model=
|
403
|
-
object_mapper=
|
405
|
+
data_model=data_model,
|
406
|
+
object_mapper=object_mapper) for x in components if
|
404
407
|
x.Slot.SlotBase.Target.Key == text_or_key), None)
|
405
408
|
if val is None:
|
406
|
-
ref_components = list(
|
409
|
+
ref_components = list(wrapped_obj.ReferencedComponents.Items)
|
407
410
|
val = next((get_obj_value(x.Target,
|
408
|
-
data_model=
|
409
|
-
object_mapper=
|
411
|
+
data_model=data_model,
|
412
|
+
object_mapper=object_mapper) for x in ref_components
|
410
413
|
if x.Slot.SlotBase.Target.Key == text_or_key), None)
|
411
414
|
if val is None:
|
412
|
-
parameters = list(
|
415
|
+
parameters = list(wrapped_obj.Parameters.Items)
|
413
416
|
val = next((get_obj_value(x,
|
414
|
-
data_model=
|
415
|
-
object_mapper=
|
417
|
+
data_model=data_model,
|
418
|
+
object_mapper=object_mapper) for x in parameters if
|
416
419
|
x.NameTaxonomyEntry.TextOrKey == text_or_key), None)
|
417
420
|
|
418
421
|
except Exception as e:
|
@@ -420,8 +423,8 @@ class ComponentDictionary(SimultanObject):
|
|
420
423
|
raise ValueError(f'Could not get value for key {key} ({text_or_key}) in {self}:\n{e}')
|
421
424
|
|
422
425
|
self._dict[key] = get_obj_value(val,
|
423
|
-
data_model=
|
424
|
-
object_mapper=
|
426
|
+
data_model=data_model,
|
427
|
+
object_mapper=object_mapper)
|
425
428
|
return self._dict[key]
|
426
429
|
|
427
430
|
def __setitem__(self, key, value):
|
@@ -477,11 +480,7 @@ class ComponentDictionary(SimultanObject):
|
|
477
480
|
setter_fcn(*fcn_arg_list)
|
478
481
|
item = self.__getitem__(key, check_dict=False)
|
479
482
|
|
480
|
-
|
481
|
-
#
|
482
|
-
# if isinstance(value, ):
|
483
|
-
|
484
|
-
self._dict[key] = self.__getitem__(key, check_dict=False)
|
483
|
+
self._dict[key] = item
|
485
484
|
|
486
485
|
def __delitem__(self, key):
|
487
486
|
self[key] = None
|
@@ -512,7 +511,7 @@ class ComponentDictionary(SimultanObject):
|
|
512
511
|
data_model=self._data_model,
|
513
512
|
object_mapper=self._object_mapper)
|
514
513
|
for ref_component in self._wrapped_obj.ReferencedComponents.Items:
|
515
|
-
comp_dict[ref_component.Slot.SlotBase.Target.
|
514
|
+
comp_dict[ref_component.Slot.SlotBase.Target.Key] = get_obj_value(ref_component.Target,
|
516
515
|
data_model=self._data_model,
|
517
516
|
object_mapper=self._object_mapper)
|
518
517
|
for ref_asset in self._wrapped_obj.ReferencedAssets.Items:
|
PySimultan2/utils.py
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import sys
|
4
|
+
import traceback
|
5
|
+
|
3
6
|
from enum import Enum
|
4
7
|
from weakref import WeakSet
|
5
8
|
import numpy as np
|
6
9
|
import pandas as pd
|
7
10
|
from typing import List as TypeList, Union, Optional, Type, Any, TYPE_CHECKING
|
11
|
+
|
12
|
+
from System import ArgumentException, NotSupportedException
|
13
|
+
|
8
14
|
from SIMULTAN.Data.Components import (ComponentWalker, SimComponent, SimBoolParameter, SimDoubleParameter,
|
9
15
|
SimEnumParameter, SimIntegerParameter, SimStringParameter, ComponentMapping,
|
10
16
|
SimSlot, SimComponentVisibility, SimChildComponentEntry, SimDefaultSlots,
|
@@ -417,8 +423,31 @@ def add_sub_component(comp: SimComponent,
|
|
417
423
|
new_slot = SimSlot(sub_comp.Slots[0].Target, str(slot_extension))
|
418
424
|
|
419
425
|
entry = SimChildComponentEntry(new_slot, sub_comp)
|
426
|
+
|
427
|
+
error = None
|
428
|
+
new_slot_extension = 0
|
429
|
+
|
420
430
|
if entry not in comp.Components.Items:
|
421
|
-
|
431
|
+
try:
|
432
|
+
comp.Components.InsertItem(len(comp.Components.Items), entry)
|
433
|
+
except (ArgumentException, NotSupportedException) as e:
|
434
|
+
error = e
|
435
|
+
|
436
|
+
while error is not None and new_slot_extension < 100:
|
437
|
+
try:
|
438
|
+
try:
|
439
|
+
slot_extension += 1
|
440
|
+
if slot_extension > 1000:
|
441
|
+
break
|
442
|
+
except Exception as e:
|
443
|
+
new_slot_extension += 1
|
444
|
+
slot_extension = slot_extension + f'_{new_slot_extension}'
|
445
|
+
new_slot = SimSlot(sub_comp.Slots[0].Target, str(slot_extension))
|
446
|
+
entry = SimChildComponentEntry(new_slot, sub_comp)
|
447
|
+
comp.Components.InsertItem(len(comp.Components.Items), entry)
|
448
|
+
error = None
|
449
|
+
except (ArgumentException, NotSupportedException) as e:
|
450
|
+
error = e
|
422
451
|
return True
|
423
452
|
|
424
453
|
|
@@ -727,7 +756,8 @@ type_convert_dict = {SimComponent: get_sim_component_value,
|
|
727
756
|
SimEnumParameter: get_parameter_value,
|
728
757
|
ResourceEntry: get_resource_entry_value,
|
729
758
|
ContainedResourceFileEntry: get_resource_entry_value,
|
730
|
-
LinkedResourceFileEntry: get_resource_entry_value
|
759
|
+
LinkedResourceFileEntry: get_resource_entry_value
|
760
|
+
}
|
731
761
|
|
732
762
|
|
733
763
|
def get_obj_value(obj: Union[SimComponent, SimDoubleParameter, SimIntegerParameter, SimStringParameter,
|
@@ -738,6 +768,8 @@ def get_obj_value(obj: Union[SimComponent, SimDoubleParameter, SimIntegerParamet
|
|
738
768
|
|
739
769
|
if obj is None:
|
740
770
|
return
|
771
|
+
elif isinstance(obj, (int, float, str)):
|
772
|
+
return obj
|
741
773
|
elif type(obj) in type_convert_dict.keys():
|
742
774
|
return type_convert_dict[type(obj)](obj, data_model=data_model, object_mapper=object_mapper)
|
743
775
|
else:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: PySimultan
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.20
|
4
4
|
Project-URL: Documentation, https://github.com/Bühler Maximilian/PySimultan2#readme
|
5
5
|
Project-URL: Issues, https://github.com/Bühler Maximilian/PySimultan2/issues
|
6
6
|
Project-URL: Source, https://github.com/Bühler Maximilian/PySimultan2
|
@@ -82,5 +82,8 @@ C:\Program Files\FreeCAD
|
|
82
82
|
|
83
83
|
# Change Log
|
84
84
|
|
85
|
+
## [0.4.20] - 2024-07-01
|
86
|
+
- Fixed Bug in nested dictionary creation
|
87
|
+
|
85
88
|
## [0.4.19] - 2024-07-01
|
86
89
|
- Refactored dictionaries
|
@@ -1,13 +1,13 @@
|
|
1
|
-
PySimultan2/__about__.py,sha256=
|
1
|
+
PySimultan2/__about__.py,sha256=5LZKy2_Q7Bsu50daCLBwex_Hb1mMwOUMiteIDt5jRXI,20
|
2
2
|
PySimultan2/__init__.py,sha256=cabTN1Oz8xtFM31ouBKg5lwLqW5vtexDP669PYyNLnA,3224
|
3
3
|
PySimultan2/data_model.py,sha256=xosu5TAfgsrxwyhd6SfHFp4Wvo1_YtxdHsSuZmuNVJU,27022
|
4
|
-
PySimultan2/default_types.py,sha256=
|
4
|
+
PySimultan2/default_types.py,sha256=MvZuU7qQW-ybRIT5Fl5yKdyidXhTQjFZuUq2W8hvEI4,25504
|
5
5
|
PySimultan2/files.py,sha256=8F1QC9nTsTSrCpu5vGx1xGx-7UgkDwoICXau_5j7UzI,12725
|
6
6
|
PySimultan2/multi_values.py,sha256=ZFXlTLuZo32x7_7diYAp2XEjp5uwgHLgNOzN7v74-5I,13650
|
7
7
|
PySimultan2/object_mapper.py,sha256=yYVGeIzkdYvNMqW_kz9NwVxi6IJWGAqLS8CrYzW2oEg,13210
|
8
8
|
PySimultan2/simultan_object.py,sha256=P047pfjgScysBMIsW7Co63VlzXGnLqGwxjyAEVLh8kg,16917
|
9
9
|
PySimultan2/taxonomy_maps.py,sha256=YXOE-vUan2vLQyk96W728Vw5elBvIwH56tTuRBYeUyQ,8420
|
10
|
-
PySimultan2/utils.py,sha256=
|
10
|
+
PySimultan2/utils.py,sha256=NOetVGG51-JTCrTTXMMmUz2pZpAGmvuojtoXd1UmLtA,63716
|
11
11
|
PySimultan2/geometry/__init__.py,sha256=nJolTD1i5J8qUkOQa-r3D20aq3Co3sN31Xc0n4wJpJo,248
|
12
12
|
PySimultan2/geometry/geometry_base.py,sha256=nbb9U2W3vFviVLxISLHRi2CVyLEM-3zIKvoZ1uSYs_8,23420
|
13
13
|
PySimultan2/geometry/utils.py,sha256=J25YsK8sso_UL7xRusItQZvyjtvxdOsSPelBQYFABhY,8519
|
@@ -75,7 +75,7 @@ PySimultan2/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
75
75
|
PySimultan2/resources/assimp.dll,sha256=HwfDwXqoPDTFRyoQpA3qmgZoUdFtziJkV5fNtktEZEU,6081536
|
76
76
|
PySimultan2/resources/defaultsettings.xml,sha256=s6Tk1tubLz5UYqXZWpD42EDHzedemRY1nEneoIVcUfg,392
|
77
77
|
PySimultan2/resources/setup.bat,sha256=fjvvYfVM6TalS-QTSiKAbAId5nTsk8kGGo06ba-wWaY,32
|
78
|
-
pysimultan-0.4.
|
79
|
-
pysimultan-0.4.
|
80
|
-
pysimultan-0.4.
|
81
|
-
pysimultan-0.4.
|
78
|
+
pysimultan-0.4.20.dist-info/METADATA,sha256=TlRBXFruRV99PRNlQ_BOu8m4VeW3bgFu6-7Ufy-fjao,2619
|
79
|
+
pysimultan-0.4.20.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
80
|
+
pysimultan-0.4.20.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
|
81
|
+
pysimultan-0.4.20.dist-info/RECORD,,
|
File without changes
|
File without changes
|