PySimultan 0.4.18__tar.gz → 0.4.19__tar.gz

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.
Files changed (136) hide show
  1. {pysimultan-0.4.18 → pysimultan-0.4.19}/PKG-INFO +7 -1
  2. {pysimultan-0.4.18 → pysimultan-0.4.19}/README.md +6 -0
  3. pysimultan-0.4.19/src/PySimultan2/__about__.py +1 -0
  4. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/default_types.py +47 -6
  5. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/taxonomy_maps.py +8 -0
  6. pysimultan-0.4.19/tests/resources/test_set_dictionary.simultan +0 -0
  7. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_set_dictionary.py +62 -5
  8. pysimultan-0.4.18/src/PySimultan2/__about__.py +0 -1
  9. {pysimultan-0.4.18 → pysimultan-0.4.19}/.gitignore +0 -0
  10. {pysimultan-0.4.18 → pysimultan-0.4.19}/LICENSE.txt +0 -0
  11. {pysimultan-0.4.18 → pysimultan-0.4.19}/pyproject.toml +0 -0
  12. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/__init__.py +0 -0
  13. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/data_model.py +0 -0
  14. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/files.py +0 -0
  15. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/geometry/__init__.py +0 -0
  16. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/geometry/geometry_base.py +0 -0
  17. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/geometry/utils.py +0 -0
  18. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/multi_values.py +0 -0
  19. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/object_mapper.py +0 -0
  20. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  21. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  22. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/BruTile.dll +0 -0
  23. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  24. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  25. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  26. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  27. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  28. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  29. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  30. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  31. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  32. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  33. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Fluent.dll +0 -0
  34. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
  35. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
  36. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
  37. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  38. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  39. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  40. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  41. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  42. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  43. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  44. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  45. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  46. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  47. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  48. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  49. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  50. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  51. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  52. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  53. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  54. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  55. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  56. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  57. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  58. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  59. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  60. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  61. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  62. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  63. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  64. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  65. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  66. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  67. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  68. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  69. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  70. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  71. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SharpDX.dll +0 -0
  72. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SitePlanner.dll +0 -0
  73. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
  74. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/SitePlanner.xml +0 -0
  75. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  76. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/Sprache.dll +0 -0
  77. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  78. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  79. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  80. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/__init__.py +0 -0
  81. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/assimp.dll +0 -0
  82. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  83. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/resources/setup.bat +0 -0
  84. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/simultan_object.py +0 -0
  85. {pysimultan-0.4.18 → pysimultan-0.4.19}/src/PySimultan2/utils.py +0 -0
  86. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/__init__.py +0 -0
  87. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/__init__.py +0 -0
  88. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/create_component.py +0 -0
  89. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  90. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/create_referenced_component.py +0 -0
  91. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/create_taxonomies.py +0 -0
  92. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/__init__.py +0 -0
  93. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  94. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/empty_project.simultan +0 -0
  95. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  96. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/example1.simultan +0 -0
  97. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/example2.simultan +0 -0
  98. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/example3.simultan +0 -0
  99. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  100. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  101. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/list_test.simultan +0 -0
  102. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example3.yml +0 -0
  103. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example4.yml +0 -0
  104. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  105. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  106. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  107. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  108. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  109. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/U5.simultan +0 -0
  110. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/U5_1.simultan +0 -0
  111. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/U5_orig.simultan +0 -0
  112. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/__init__.py +0 -0
  113. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/new_geometry_test.simultan +0 -0
  114. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/test_file.yml +0 -0
  115. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/test_file_load.simultan +0 -0
  116. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/test_file_project.simultan +0 -0
  117. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  118. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_calc_static_zone_temperature.py +0 -0
  119. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_calculate_steady_state_temperature.py +0 -0
  120. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_circular_references.py +0 -0
  121. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_create_geometry.py +0 -0
  122. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_files.py +0 -0
  123. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_files_load.py +0 -0
  124. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_load_geometry.py +0 -0
  125. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_load_multi_values.py +0 -0
  126. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_new_dll.py +0 -0
  127. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_new_project_creation.py +0 -0
  128. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_numeric_map.py +0 -0
  129. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_pythonnet.py +0 -0
  130. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_register_class.py +0 -0
  131. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_set_attr_property.py +0 -0
  132. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_set_properties.py +0 -0
  133. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_taxonomie_maps.py +0 -0
  134. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_taxonomies.py +0 -0
  135. {pysimultan-0.4.18 → pysimultan-0.4.19}/tests/test_ui.py +0 -0
  136. {pysimultan-0.4.18 → pysimultan-0.4.19}/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.18
3
+ Version: 0.4.19
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
@@ -78,3 +78,9 @@ C:\Program Files\FreeCAD
78
78
 
79
79
 
80
80
  ```
81
+
82
+
83
+ # Change Log
84
+
85
+ ## [0.4.19] - 2024-07-01
86
+ - Refactored dictionaries
@@ -49,3 +49,9 @@ C:\Program Files\FreeCAD
49
49
 
50
50
 
51
51
  ```
52
+
53
+
54
+ # Change Log
55
+
56
+ ## [0.4.19] - 2024-07-01
57
+ - Refactored dictionaries
@@ -0,0 +1 @@
1
+ version = '0.4.19'
@@ -341,6 +341,9 @@ class ComponentDictionary(SimultanObject):
341
341
  super().__init__(*args, **kwargs)
342
342
  self.component_policy = kwargs.get('component_policy', 'subcomponent') # component add policy of the content/parameter/property, 'reference' or 'subcomponent'
343
343
 
344
+ def __load_init__(self, *args, **kwargs):
345
+ self._dict = {}
346
+
344
347
  @classmethod
345
348
  def create_from_values(cls,
346
349
  values: dict[str, Any],
@@ -377,10 +380,48 @@ class ComponentDictionary(SimultanObject):
377
380
  return object.__getattribute__(self, '_dict')[key]
378
381
  else:
379
382
  # data_model = config.default_data_model
380
- obj = get_component_taxonomy_entry(self._wrapped_obj, key)
381
- if obj is not None:
382
- val = get_obj_value(obj, data_model=self._data_model, object_mapper=self._object_mapper)
383
- self._dict[key] = val
383
+ # obj = get_component_taxonomy_entry(self._wrapped_obj, key)
384
+ # if obj is not None:
385
+ # val = get_obj_value(obj, data_model=self._data_model, object_mapper=self._object_mapper)
386
+
387
+ if key in self._taxonomy_map.parameter_taxonomy_entry_dict.keys():
388
+ text_or_key = self._taxonomy_map.parameter_taxonomy_entry_dict[key]
389
+ else:
390
+ content = Content(text_or_key=f'__dict_key__{key}',
391
+ property_name=key,
392
+ type=None,
393
+ unit=None,
394
+ documentation=f'Property {key} in ComponentDictionary',
395
+ component_policy=self.component_policy)
396
+ self._taxonomy_map.add_content(content)
397
+ text_or_key = content.text_or_key
398
+
399
+ try:
400
+ components = list(self._wrapped_obj.Components.Items)
401
+ val = next((get_obj_value(x.Component,
402
+ data_model=self._data_model,
403
+ object_mapper=self._object_mapper) for x in components if
404
+ x.Slot.SlotBase.Target.Key == text_or_key), None)
405
+ if val is None:
406
+ ref_components = list(self._wrapped_obj.ReferencedComponents.Items)
407
+ val = next((get_obj_value(x.Target,
408
+ data_model=self._data_model,
409
+ object_mapper=self._object_mapper) for x in ref_components
410
+ if x.Slot.SlotBase.Target.Key == text_or_key), None)
411
+ if val is None:
412
+ parameters = list(self._wrapped_obj.Parameters.Items)
413
+ val = next((get_obj_value(x,
414
+ data_model=self._data_model,
415
+ object_mapper=self._object_mapper) for x in parameters if
416
+ x.NameTaxonomyEntry.TextOrKey == text_or_key), None)
417
+
418
+ except Exception as e:
419
+ logger.error(f'Could not get value for key {key} ({text_or_key}) in {self}:\n{e}')
420
+ raise ValueError(f'Could not get value for key {key} ({text_or_key}) in {self}:\n{e}')
421
+
422
+ self._dict[key] = get_obj_value(val,
423
+ data_model=self._data_model,
424
+ object_mapper=self._object_mapper)
384
425
  return self._dict[key]
385
426
 
386
427
  def __setitem__(self, key, value):
@@ -391,7 +432,7 @@ class ComponentDictionary(SimultanObject):
391
432
  if key in self._taxonomy_map.content_dict.keys():
392
433
  content = self._taxonomy_map.content_dict[key]
393
434
  else:
394
- content = Content(text_or_key=key,
435
+ content = Content(text_or_key=f'__dict_key__{key}',
395
436
  property_name=key,
396
437
  type=None,
397
438
  unit=None,
@@ -399,7 +440,6 @@ class ComponentDictionary(SimultanObject):
399
440
  component_policy=self.component_policy)
400
441
  self._taxonomy_map.add_content(content)
401
442
  taxonomy_entry = content.get_taxonomie_entry(self._data_model)
402
-
403
443
  component_idx, ref_component_idx, parameter_idx, ref_asset_idx = get_param_indices(self._wrapped_obj,
404
444
  taxonomy_entry)
405
445
 
@@ -425,6 +465,7 @@ class ComponentDictionary(SimultanObject):
425
465
  ref_component_idx=ref_component_idx,
426
466
  parameter_idx=parameter_idx,
427
467
  keep=[])
468
+ return
428
469
 
429
470
  if isinstance(value, (list, tuple, set, ComponentList)):
430
471
  setter_fcn = set_property_to_list
@@ -87,6 +87,7 @@ class TaxonomyMap(object):
87
87
 
88
88
  self._content = []
89
89
  self._content_dict = {}
90
+ self._parameter_taxonomy_entry_dict = {}
90
91
 
91
92
  self.taxonomy_name = kwargs.get('taxonomy_name', kwargs.get('taxonomy_key', None))
92
93
  self.taxonomy_key = kwargs.get('taxonomy_key', None)
@@ -124,6 +125,13 @@ class TaxonomyMap(object):
124
125
  self._content_dict[content.text_or_key] = content
125
126
  return self._content_dict
126
127
 
128
+ @property
129
+ def parameter_taxonomy_entry_dict(self):
130
+ if not self._parameter_taxonomy_entry_dict:
131
+ for content in self._content:
132
+ self._parameter_taxonomy_entry_dict[content.property_name] = content.text_or_key
133
+ return self._parameter_taxonomy_entry_dict
134
+
127
135
  def write(self, filename=None):
128
136
  if filename is not None:
129
137
  with open(filename, mode='w') as f:
@@ -1,6 +1,6 @@
1
- from PySimultan2.data_model import DataModel
2
- from PySimultan2.object_mapper import PythonMapper
3
- from PySimultan2.taxonomy_maps import TaxonomyMap, Content
1
+ from PySimultan2.src.PySimultan2.data_model import DataModel
2
+ from PySimultan2.src.PySimultan2.object_mapper import PythonMapper
3
+ from PySimultan2.src.PySimultan2.taxonomy_maps import TaxonomyMap, Content
4
4
 
5
5
  import resources
6
6
 
@@ -70,19 +70,76 @@ component = mapped_cls_1(name='test_component',
70
70
 
71
71
 
72
72
  def test_set_dictionary_param(component):
73
+
74
+ other_component = mapped_cls_2(name='other_component',
75
+ mapped_property=None)
76
+ other_component_2 = mapped_cls_2(name='other_component_2',
77
+ mapped_property=None)
78
+ other_component_3 = mapped_cls_2(name='other_component_3',
79
+ mapped_property=None)
80
+ other_component_4 = mapped_cls_2(name='other_component_4',
81
+ mapped_property=None)
82
+
73
83
  test_dict = {'val_a': 1,
74
84
  'val_b': 2.0,
75
- 'val_c': 'test'}
85
+ 'val_c': 'test',
86
+ 'val_d': True,
87
+ 'val_e': [other_component, other_component_2, other_component_3],
88
+ 'val_f': {'a': other_component_2, 'b': other_component_3},
89
+ 'val_g': None,
90
+ 'val_h': other_component,
91
+ }
76
92
  component.mapped_property = test_dict
77
-
78
93
  component.mapped_property['val_a'] = 222
79
94
 
95
+ component.mapped_property['val_i'] = other_component_4
96
+
80
97
  print(component.mapped_property)
81
98
 
82
99
 
100
+ def load_data_model(data_model: DataModel):
101
+ data_model = DataModel(project_path=project_path,
102
+ user_name='admin',
103
+ password='admin')
104
+ typed_data = data_model.get_typed_data(mapper=mapper,
105
+ create_all=True)
106
+
107
+ TestComponent = mapper.get_mapped_class('TestComponent')
108
+ test_component = TestComponent.cls_instances[0]
109
+
110
+ TestComponent2 = mapper.get_mapped_class('TestComponent2')
111
+ other_component = next(x for x in TestComponent2.cls_instances if x.name == 'other_component')
112
+ other_component_2 = next(x for x in TestComponent2.cls_instances if x.name == 'other_component_2')
113
+ other_component_3 = next(x for x in TestComponent2.cls_instances if x.name == 'other_component_3')
114
+ other_component_4 = next(x for x in TestComponent2.cls_instances if x.name == 'other_component_4')
115
+
116
+ assert test_component.mapped_property['val_a'] == 222
117
+ assert test_component.mapped_property['val_b'] == 2.0
118
+ assert test_component.mapped_property['val_c'] == 'test'
119
+ assert test_component.mapped_property['val_d'] is True
120
+ assert test_component.mapped_property['val_g'] is None
121
+ assert test_component.mapped_property['val_h'] == other_component
122
+ assert len(test_component.mapped_property['val_e']) == 3
123
+ assert test_component.mapped_property['val_e'][0] == other_component
124
+ assert test_component.mapped_property['val_e'][1] == other_component_2
125
+ assert test_component.mapped_property['val_e'][2] == other_component_3
126
+ assert test_component.mapped_property['val_f']['a'] == other_component_2
127
+ assert test_component.mapped_property['val_f']['b'] == other_component_3
128
+ assert test_component.mapped_property['val_i'] == other_component_4
129
+
130
+ return data_model
131
+
132
+
83
133
  if __name__ == '__main__':
84
134
  test_set_dictionary_param(component)
85
135
  data_model.save()
136
+ mapper.clear()
137
+ data_model.cleanup()
138
+ data_model = DataModel(project_path=project_path,
139
+ user_name='admin',
140
+ password='admin')
141
+ load_data_model(data_model)
142
+
86
143
 
87
144
  data_model.cleanup()
88
145
  print('Test passed')
@@ -1 +0,0 @@
1
- version = '0.4.18'
File without changes
File without changes
File without changes