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 CHANGED
@@ -1 +1 @@
1
- version = '0.4.19'
1
+ version = '0.4.20'
@@ -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')[key]
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(self._wrapped_obj.Components.Items)
403
+ components = list(wrapped_obj.Components.Items)
401
404
  val = next((get_obj_value(x.Component,
402
- data_model=self._data_model,
403
- object_mapper=self._object_mapper) for x in components if
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(self._wrapped_obj.ReferencedComponents.Items)
409
+ ref_components = list(wrapped_obj.ReferencedComponents.Items)
407
410
  val = next((get_obj_value(x.Target,
408
- data_model=self._data_model,
409
- object_mapper=self._object_mapper) for x in ref_components
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(self._wrapped_obj.Parameters.Items)
415
+ parameters = list(wrapped_obj.Parameters.Items)
413
416
  val = next((get_obj_value(x,
414
- data_model=self._data_model,
415
- object_mapper=self._object_mapper) for x in parameters if
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=self._data_model,
424
- object_mapper=self._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
- # self._object_mapper.create_python_object(self._wrapped_obj)
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.Name] = get_obj_value(ref_component.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
- comp.Components.InsertItem(len(comp.Components.Items), entry)
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.19
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=Z9VH1opxusXUHCDJeWUusEwptfCLQBbFMXR9ph5aJS4,20
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=hE_JyKcykL3bSqpeEj-zSA04oLJ6UnsGR17SfdjkXNo,25578
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=qhF46rCHmI96Hdp9sdHAAkUJtaQxoG6YJu7Hx5IM4Go,62569
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.19.dist-info/METADATA,sha256=1uJ2SKZAtUEgv2A_EB35HQMeh0jCfA1AM0PW8EMGW1w,2551
79
- pysimultan-0.4.19.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
80
- pysimultan-0.4.19.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
- pysimultan-0.4.19.dist-info/RECORD,,
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,,