PySimultan 0.4.19__tar.gz → 0.4.21__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. {pysimultan-0.4.19 → pysimultan-0.4.21}/PKG-INFO +7 -1
  2. {pysimultan-0.4.19 → pysimultan-0.4.21}/README.md +6 -0
  3. pysimultan-0.4.21/src/PySimultan2/__about__.py +1 -0
  4. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/default_types.py +19 -45
  5. pysimultan-0.4.21/src/PySimultan2/type_setter_lookup.py +62 -0
  6. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/utils.py +36 -36
  7. pysimultan-0.4.21/tests/resources/test_set_dictionary.simultan +0 -0
  8. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_dictionary.py +18 -0
  9. pysimultan-0.4.19/src/PySimultan2/__about__.py +0 -1
  10. pysimultan-0.4.19/tests/resources/test_set_dictionary.simultan +0 -0
  11. {pysimultan-0.4.19 → pysimultan-0.4.21}/.gitignore +0 -0
  12. {pysimultan-0.4.19 → pysimultan-0.4.21}/LICENSE.txt +0 -0
  13. {pysimultan-0.4.19 → pysimultan-0.4.21}/pyproject.toml +0 -0
  14. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/__init__.py +0 -0
  15. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/data_model.py +0 -0
  16. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/files.py +0 -0
  17. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/__init__.py +0 -0
  18. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/geometry_base.py +0 -0
  19. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/utils.py +0 -0
  20. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/multi_values.py +0 -0
  21. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/object_mapper.py +0 -0
  22. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  23. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  24. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/BruTile.dll +0 -0
  25. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  26. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  27. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  28. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  29. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  30. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  31. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  32. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  33. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  34. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  35. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Fluent.dll +0 -0
  36. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
  37. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
  38. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
  39. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  40. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  41. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  42. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  43. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  44. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  45. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  46. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  47. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  48. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  49. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  50. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  51. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  52. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  53. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  54. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  55. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  56. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  57. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  58. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  59. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  60. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  61. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  62. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  63. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  64. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  65. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  66. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  67. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  68. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  69. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  70. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  71. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  72. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  73. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.dll +0 -0
  74. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.dll +0 -0
  75. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
  76. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.xml +0 -0
  77. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  78. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Sprache.dll +0 -0
  79. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  80. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  81. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  82. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/__init__.py +0 -0
  83. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/assimp.dll +0 -0
  84. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  85. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/setup.bat +0 -0
  86. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/simultan_object.py +0 -0
  87. {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/taxonomy_maps.py +0 -0
  88. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/__init__.py +0 -0
  89. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/__init__.py +0 -0
  90. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_component.py +0 -0
  91. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  92. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_referenced_component.py +0 -0
  93. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_taxonomies.py +0 -0
  94. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/__init__.py +0 -0
  95. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  96. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_project.simultan +0 -0
  97. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  98. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example1.simultan +0 -0
  99. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example2.simultan +0 -0
  100. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example3.simultan +0 -0
  101. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  102. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  103. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/list_test.simultan +0 -0
  104. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example3.yml +0 -0
  105. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example4.yml +0 -0
  106. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  107. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  108. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  109. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  110. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  111. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5.simultan +0 -0
  112. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5_1.simultan +0 -0
  113. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5_orig.simultan +0 -0
  114. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/__init__.py +0 -0
  115. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/new_geometry_test.simultan +0 -0
  116. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file.yml +0 -0
  117. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file_load.simultan +0 -0
  118. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file_project.simultan +0 -0
  119. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  120. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_calc_static_zone_temperature.py +0 -0
  121. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_calculate_steady_state_temperature.py +0 -0
  122. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_circular_references.py +0 -0
  123. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_create_geometry.py +0 -0
  124. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_files.py +0 -0
  125. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_files_load.py +0 -0
  126. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_load_geometry.py +0 -0
  127. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_load_multi_values.py +0 -0
  128. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_new_dll.py +0 -0
  129. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_new_project_creation.py +0 -0
  130. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_numeric_map.py +0 -0
  131. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_pythonnet.py +0 -0
  132. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_register_class.py +0 -0
  133. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_attr_property.py +0 -0
  134. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_properties.py +0 -0
  135. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_taxonomie_maps.py +0 -0
  136. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_taxonomies.py +0 -0
  137. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_ui.py +0 -0
  138. {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/ui_minimal_example.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: PySimultan
3
- Version: 0.4.19
3
+ Version: 0.4.21
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
@@ -38,6 +38,9 @@ Description-Content-Type: text/markdown
38
38
 
39
39
  - [Installation](#installation)
40
40
  - [License](#license)
41
+ - [Usage](#usage)
42
+ - [FreeCAD support](#freecad-support)
43
+ - [Change Log](#change-log)
41
44
 
42
45
  ## Installation
43
46
 
@@ -82,5 +85,8 @@ C:\Program Files\FreeCAD
82
85
 
83
86
  # Change Log
84
87
 
88
+ ## [0.4.20] - 2024-07-01
89
+ - Fixed Bug in nested dictionary creation
90
+
85
91
  ## [0.4.19] - 2024-07-01
86
92
  - Refactored dictionaries
@@ -9,6 +9,9 @@
9
9
 
10
10
  - [Installation](#installation)
11
11
  - [License](#license)
12
+ - [Usage](#usage)
13
+ - [FreeCAD support](#freecad-support)
14
+ - [Change Log](#change-log)
12
15
 
13
16
  ## Installation
14
17
 
@@ -53,5 +56,8 @@ C:\Program Files\FreeCAD
53
56
 
54
57
  # Change Log
55
58
 
59
+ ## [0.4.20] - 2024-07-01
60
+ - Fixed Bug in nested dictionary creation
61
+
56
62
  ## [0.4.19] - 2024-07-01
57
63
  - Refactored dictionaries
@@ -0,0 +1 @@
1
+ version = '0.4.21'
@@ -307,27 +307,6 @@ class ComponentDictionary(SimultanObject):
307
307
  component_policy = 'subcomponent' # component add policy of the content/parameter/property, 'reference'
308
308
  # or 'subcomponent'
309
309
 
310
- type_setter_fcn_lookup_dict = {None: lambda x: None,
311
- SimComponent: set_property_to_sim_component,
312
- SimultanObject: set_property_to_sim_component,
313
- SimDoubleParameter: set_property_to_parameter,
314
- SimIntegerParameter: set_property_to_parameter,
315
- SimStringParameter: set_property_to_parameter,
316
- SimBoolParameter: set_property_to_parameter,
317
- SimEnumParameter: set_property_to_parameter,
318
- int: set_property_to_parameter,
319
- float: set_property_to_parameter,
320
- str: set_property_to_parameter,
321
- bool: set_property_to_parameter,
322
- FileInfo: set_property_to_file_info,
323
- list: set_property_to_list,
324
- tuple: set_property_to_list,
325
- set: set_property_to_list,
326
- dict: set_property_to_dict,
327
- ComponentList: set_property_to_list,
328
- np.ndarray: set_property_to_value_field,
329
- pd.DataFrame: set_property_to_value_field}
330
-
331
310
  _taxonomy_map = TaxonomyMap(taxonomy_name='Dictionaries',
332
311
  taxonomy_key='Dictionaries',
333
312
  taxonomy_entry_name='ComponentDict',
@@ -377,12 +356,15 @@ class ComponentDictionary(SimultanObject):
377
356
 
378
357
  if kwargs.get('check_dict', True) and comp_dict is not None and key in object.__getattribute__(self,
379
358
  '_dict').keys():
380
- return object.__getattribute__(self, '_dict')[key]
359
+ return object.__getattribute__(self, '_dict').get(key, None)
381
360
  else:
382
361
  # data_model = config.default_data_model
383
362
  # obj = get_component_taxonomy_entry(self._wrapped_obj, key)
384
363
  # if obj is not None:
385
364
  # val = get_obj_value(obj, data_model=self._data_model, object_mapper=self._object_mapper)
365
+ data_model = self._data_model
366
+ object_mapper = self._object_mapper
367
+ wrapped_obj = self._wrapped_obj
386
368
 
387
369
  if key in self._taxonomy_map.parameter_taxonomy_entry_dict.keys():
388
370
  text_or_key = self._taxonomy_map.parameter_taxonomy_entry_dict[key]
@@ -397,22 +379,22 @@ class ComponentDictionary(SimultanObject):
397
379
  text_or_key = content.text_or_key
398
380
 
399
381
  try:
400
- components = list(self._wrapped_obj.Components.Items)
382
+ components = list(wrapped_obj.Components.Items)
401
383
  val = next((get_obj_value(x.Component,
402
- data_model=self._data_model,
403
- object_mapper=self._object_mapper) for x in components if
384
+ data_model=data_model,
385
+ object_mapper=object_mapper) for x in components if
404
386
  x.Slot.SlotBase.Target.Key == text_or_key), None)
405
387
  if val is None:
406
- ref_components = list(self._wrapped_obj.ReferencedComponents.Items)
388
+ ref_components = list(wrapped_obj.ReferencedComponents.Items)
407
389
  val = next((get_obj_value(x.Target,
408
- data_model=self._data_model,
409
- object_mapper=self._object_mapper) for x in ref_components
390
+ data_model=data_model,
391
+ object_mapper=object_mapper) for x in ref_components
410
392
  if x.Slot.SlotBase.Target.Key == text_or_key), None)
411
393
  if val is None:
412
- parameters = list(self._wrapped_obj.Parameters.Items)
394
+ parameters = list(wrapped_obj.Parameters.Items)
413
395
  val = next((get_obj_value(x,
414
- data_model=self._data_model,
415
- object_mapper=self._object_mapper) for x in parameters if
396
+ data_model=data_model,
397
+ object_mapper=object_mapper) for x in parameters if
416
398
  x.NameTaxonomyEntry.TextOrKey == text_or_key), None)
417
399
 
418
400
  except Exception as e:
@@ -420,8 +402,8 @@ class ComponentDictionary(SimultanObject):
420
402
  raise ValueError(f'Could not get value for key {key} ({text_or_key}) in {self}:\n{e}')
421
403
 
422
404
  self._dict[key] = get_obj_value(val,
423
- data_model=self._data_model,
424
- object_mapper=self._object_mapper)
405
+ data_model=data_model,
406
+ object_mapper=object_mapper)
425
407
  return self._dict[key]
426
408
 
427
409
  def __setitem__(self, key, value):
@@ -467,21 +449,13 @@ class ComponentDictionary(SimultanObject):
467
449
  keep=[])
468
450
  return
469
451
 
470
- if isinstance(value, (list, tuple, set, ComponentList)):
471
- setter_fcn = set_property_to_list
472
- elif isinstance(value, SimultanObject):
473
- setter_fcn = set_property_to_sim_component
474
- else:
475
- setter_fcn = self.type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
452
+ from .type_setter_lookup import type_setter_fcn_lookup_dict
453
+ setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
476
454
 
477
455
  setter_fcn(*fcn_arg_list)
478
456
  item = self.__getitem__(key, check_dict=False)
479
457
 
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)
458
+ self._dict[key] = item
485
459
 
486
460
  def __delitem__(self, key):
487
461
  self[key] = None
@@ -512,7 +486,7 @@ class ComponentDictionary(SimultanObject):
512
486
  data_model=self._data_model,
513
487
  object_mapper=self._object_mapper)
514
488
  for ref_component in self._wrapped_obj.ReferencedComponents.Items:
515
- comp_dict[ref_component.Slot.SlotBase.Target.Name] = get_obj_value(ref_component.Target,
489
+ comp_dict[ref_component.Slot.SlotBase.Target.Key] = get_obj_value(ref_component.Target,
516
490
  data_model=self._data_model,
517
491
  object_mapper=self._object_mapper)
518
492
  for ref_asset in self._wrapped_obj.ReferencedAssets.Items:
@@ -0,0 +1,62 @@
1
+ import numpy as np
2
+ import pandas as pd
3
+
4
+ from .utils import (SimComponent, SimultanObject, SimDoubleParameter, SimIntegerParameter, SimStringParameter,
5
+ SimBoolParameter, SimEnumParameter, SimMultiValueField3D, SimMultiValueBigTable, FileInfo,
6
+ set_property_to_sim_component, set_property_to_parameter, set_property_to_value_field,
7
+ set_property_to_file_info, set_property_to_list, set_property_to_dict)
8
+
9
+ from .default_types import ComponentList, ComponentDictionary
10
+
11
+ from SIMULTAN.Data.Components import (ComponentWalker, SimComponent, SimBoolParameter, SimDoubleParameter,
12
+ SimEnumParameter, SimIntegerParameter, SimStringParameter, ComponentMapping,
13
+ SimSlot, SimComponentVisibility, SimChildComponentEntry, SimDefaultSlots,
14
+ SimParameterOperations, SimComponentReference)
15
+
16
+
17
+ lookup_dict = {None: lambda x: None,
18
+ SimComponent: set_property_to_sim_component,
19
+ SimultanObject: set_property_to_sim_component,
20
+ SimDoubleParameter: set_property_to_parameter,
21
+ SimIntegerParameter: set_property_to_parameter,
22
+ SimStringParameter: set_property_to_parameter,
23
+ SimBoolParameter: set_property_to_parameter,
24
+ SimEnumParameter: set_property_to_parameter,
25
+ SimMultiValueField3D: set_property_to_value_field,
26
+ SimMultiValueBigTable: set_property_to_value_field,
27
+ int: set_property_to_parameter,
28
+ float: set_property_to_parameter,
29
+ str: set_property_to_parameter,
30
+ bool: set_property_to_parameter,
31
+ FileInfo: set_property_to_file_info,
32
+ list: set_property_to_list,
33
+ tuple: set_property_to_list,
34
+ set: set_property_to_list,
35
+ dict: set_property_to_dict,
36
+ ComponentDictionary: set_property_to_dict,
37
+ ComponentList: set_property_to_list,
38
+ np.ndarray: set_property_to_value_field,
39
+ pd.DataFrame: set_property_to_value_field}
40
+
41
+
42
+ class TypeSetterFcnLookupDict(object):
43
+
44
+ def __getitem__(self, item: type):
45
+ if item in lookup_dict:
46
+ return lookup_dict[item]
47
+ elif SimultanObject in item.__bases__:
48
+ return set_property_to_sim_component
49
+ else:
50
+ return None
51
+
52
+ def get(self,
53
+ item: type,
54
+ default=None):
55
+ val = self.__getitem__(item)
56
+ if val is None:
57
+ return default
58
+ else:
59
+ return val
60
+
61
+
62
+ type_setter_fcn_lookup_dict = TypeSetterFcnLookupDict()
@@ -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:
@@ -1281,7 +1313,6 @@ def set_property_to_dict(value: dict,
1281
1313
  slot_extension=slot_extension,
1282
1314
  slot=slot)
1283
1315
 
1284
-
1285
1316
  def add_properties(prop_name: str,
1286
1317
  text_or_key: str,
1287
1318
  content: Content,
@@ -1302,30 +1333,6 @@ def add_properties(prop_name: str,
1302
1333
 
1303
1334
  from .default_types import ComponentList, ComponentDictionary
1304
1335
 
1305
- type_setter_fcn_lookup_dict = {None: lambda x: None,
1306
- SimComponent: set_property_to_sim_component,
1307
- SimultanObject: set_property_to_sim_component,
1308
- SimDoubleParameter: set_property_to_parameter,
1309
- SimIntegerParameter: set_property_to_parameter,
1310
- SimStringParameter: set_property_to_parameter,
1311
- SimBoolParameter: set_property_to_parameter,
1312
- SimEnumParameter: set_property_to_parameter,
1313
- SimMultiValueField3D: set_property_to_value_field,
1314
- SimMultiValueBigTable: set_property_to_value_field,
1315
- int: set_property_to_parameter,
1316
- float: set_property_to_parameter,
1317
- str: set_property_to_parameter,
1318
- bool: set_property_to_parameter,
1319
- FileInfo: set_property_to_file_info,
1320
- list: set_property_to_list,
1321
- tuple: set_property_to_list,
1322
- set: set_property_to_list,
1323
- dict: set_property_to_dict,
1324
- ComponentDictionary: set_property_to_dict,
1325
- ComponentList: set_property_to_list,
1326
- np.ndarray: set_property_to_value_field,
1327
- pd.DataFrame: set_property_to_value_field}
1328
-
1329
1336
  class Empty:
1330
1337
  pass
1331
1338
 
@@ -1381,15 +1388,8 @@ def add_properties(prop_name: str,
1381
1388
  if isinstance(value, UnresolvedObject):
1382
1389
  return
1383
1390
 
1384
- if isinstance(value, (list, tuple, set, ComponentList)):
1385
- setter_fcn = set_property_to_list
1386
- elif isinstance(value, SimultanObject):
1387
- setter_fcn = set_property_to_sim_component
1388
- elif isinstance(value, dict):
1389
- setter_fcn = set_property_to_dict
1390
- else:
1391
- setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
1392
-
1391
+ from .type_setter_lookup import type_setter_fcn_lookup_dict
1392
+ setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
1393
1393
  setter_fcn(*fcn_arg_list)
1394
1394
 
1395
1395
  setx.__taxonomy__ = taxonomy
@@ -80,6 +80,18 @@ def test_set_dictionary_param(component):
80
80
  other_component_4 = mapped_cls_2(name='other_component_4',
81
81
  mapped_property=None)
82
82
 
83
+ new_test = mapped_cls_1(name='test_component_2',
84
+ mapped_property={'val_a': 1,
85
+ 'val_b': 2.0,
86
+ 'val_c': 'test',
87
+ 'val_d': True,
88
+ 'val_e': [other_component, other_component_2, other_component_3],
89
+ 'val_f': {'a': other_component_2, 'b': other_component_3},
90
+ 'val_g': None,
91
+ 'val_h': other_component,
92
+ 'val_i': other_component_4,
93
+ })
94
+
83
95
  test_dict = {'val_a': 1,
84
96
  'val_b': 2.0,
85
97
  'val_c': 'test',
@@ -88,10 +100,16 @@ def test_set_dictionary_param(component):
88
100
  'val_f': {'a': other_component_2, 'b': other_component_3},
89
101
  'val_g': None,
90
102
  'val_h': other_component,
103
+ 'val_i': 5,
104
+ 'val_j': new_test
91
105
  }
106
+
92
107
  component.mapped_property = test_dict
93
108
  component.mapped_property['val_a'] = 222
94
109
 
110
+ assert component.mapped_property['val_j'].mapped_property['val_a'] == 1
111
+ component.mapped_property['val_j'].mapped_property._generate_internal_dict()
112
+
95
113
  component.mapped_property['val_i'] = other_component_4
96
114
 
97
115
  print(component.mapped_property)
@@ -1 +0,0 @@
1
- version = '0.4.19'
File without changes
File without changes
File without changes