PySimultan 0.4.2__tar.gz → 0.4.6__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. {pysimultan-0.4.2 → pysimultan-0.4.6}/PKG-INFO +1 -1
  2. pysimultan-0.4.6/src/PySimultan2/__about__.py +1 -0
  3. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/__init__.py +12 -6
  4. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/default_types.py +6 -5
  5. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/object_mapper.py +26 -18
  6. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/simultan_object.py +8 -4
  7. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/utils.py +9 -4
  8. pysimultan-0.4.6/tests/resources/new_test_file.txt +1 -0
  9. pysimultan-0.4.6/tests/resources/new_test_file2.txt +1 -0
  10. pysimultan-0.4.2/src/PySimultan2/__about__.py +0 -1
  11. {pysimultan-0.4.2 → pysimultan-0.4.6}/.gitignore +0 -0
  12. {pysimultan-0.4.2 → pysimultan-0.4.6}/LICENSE.txt +0 -0
  13. {pysimultan-0.4.2 → pysimultan-0.4.6}/README.md +0 -0
  14. {pysimultan-0.4.2 → pysimultan-0.4.6}/pyproject.toml +0 -0
  15. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/data_model.py +0 -0
  16. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/files.py +0 -0
  17. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/geometry/__init__.py +0 -0
  18. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/geometry/geometry_base.py +0 -0
  19. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/geometry/utils.py +0 -0
  20. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/multi_values.py +0 -0
  21. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  22. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  23. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/BruTile.dll +0 -0
  24. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  25. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  26. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  27. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  28. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  29. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  30. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  31. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  32. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  33. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  34. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Fluent.dll +0 -0
  35. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
  36. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
  37. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
  38. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  39. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  40. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  41. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  42. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  43. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  44. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  45. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  46. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  47. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  48. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  49. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  50. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  51. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  52. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  53. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  54. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  55. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  56. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  57. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  58. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  59. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  60. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  61. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  62. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  63. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  64. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  65. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  66. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  67. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  68. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  69. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  70. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  71. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  72. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SharpDX.dll +0 -0
  73. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SitePlanner.dll +0 -0
  74. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
  75. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/SitePlanner.xml +0 -0
  76. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  77. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/Sprache.dll +0 -0
  78. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  79. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  80. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  81. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/__init__.py +0 -0
  82. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/assimp.dll +0 -0
  83. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  84. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/resources/setup.bat +0 -0
  85. {pysimultan-0.4.2 → pysimultan-0.4.6}/src/PySimultan2/taxonomy_maps.py +0 -0
  86. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/__init__.py +0 -0
  87. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/__init__.py +0 -0
  88. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/create_component.py +0 -0
  89. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  90. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/create_referenced_component.py +0 -0
  91. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/create_taxonomies.py +0 -0
  92. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/__init__.py +0 -0
  93. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  94. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/empty_project.simultan +0 -0
  95. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  96. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/example1.simultan +0 -0
  97. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/example2.simultan +0 -0
  98. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/example3.simultan +0 -0
  99. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  100. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  101. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/list_test.simultan +0 -0
  102. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example3.yml +0 -0
  103. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example4.yml +0 -0
  104. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  105. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  106. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  107. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  108. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  109. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/U5.simultan +0 -0
  110. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/U5_1.simultan +0 -0
  111. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/U5_orig.simultan +0 -0
  112. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/__init__.py +0 -0
  113. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/new_geometry_test.simultan +0 -0
  114. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/test_file.yml +0 -0
  115. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/test_file_load.simultan +0 -0
  116. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/test_file_project.simultan +0 -0
  117. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  118. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_calc_static_zone_temperature.py +0 -0
  119. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_calculate_steady_state_temperature.py +0 -0
  120. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_circular_references.py +0 -0
  121. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_create_geometry.py +0 -0
  122. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_files.py +0 -0
  123. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_files_load.py +0 -0
  124. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_load_geometry.py +0 -0
  125. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_load_multi_values.py +0 -0
  126. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_new_dll.py +0 -0
  127. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_new_project_creation.py +0 -0
  128. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_numeric_map.py +0 -0
  129. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_pythonnet.py +0 -0
  130. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_register_class.py +0 -0
  131. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_set_attr_property.py +0 -0
  132. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_set_dictionary.py +0 -0
  133. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_set_properties.py +0 -0
  134. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_taxonomie_maps.py +0 -0
  135. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_taxonomies.py +0 -0
  136. {pysimultan-0.4.2 → pysimultan-0.4.6}/tests/test_ui.py +0 -0
  137. {pysimultan-0.4.2 → pysimultan-0.4.6}/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.2
3
+ Version: 0.4.6
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
@@ -0,0 +1 @@
1
+ version = '0.4.6'
@@ -1,8 +1,12 @@
1
1
  import os
2
2
  import sys
3
3
  import colorlog
4
- # from .config import *
5
- from ruamel.yaml import YAML, yaml_object, add_representer
4
+ from ruamel.yaml import YAML, add_representer
5
+
6
+ from typing import TYPE_CHECKING
7
+ if TYPE_CHECKING:
8
+ from .data_model import DataModel
9
+ from .object_mapper import PythonMapper
6
10
 
7
11
  def setup_logging():
8
12
  handler = colorlog.StreamHandler()
@@ -85,16 +89,18 @@ class Config:
85
89
  self._default_mapper = None
86
90
  self.logger = logger
87
91
 
88
- def get_default_data_model(self, *args, **kwargs):
92
+ def get_default_data_model(self, *args, **kwargs) -> 'DataModel':
89
93
  return self._default_data_model
90
94
 
91
- def get_default_mapper(self, *args, **kwargs):
95
+ def get_default_mapper(self, *args, **kwargs) -> 'PythonMapper':
92
96
  return self._default_mapper
93
97
 
94
- def set_default_data_model(self, data_model):
98
+ def set_default_data_model(self, data_model: 'DataModel'):
99
+ self.logger.debug(f'set_default_data_model: {id(data_model)}')
95
100
  self._default_data_model = data_model
96
101
 
97
- def set_default_mapper(self, mapper):
102
+ def set_default_mapper(self, mapper: 'PythonMapper'):
103
+ self.logger.debug(f'set_default_mapper: {id(mapper)}')
98
104
  self._default_mapper = mapper
99
105
 
100
106
 
@@ -117,7 +117,7 @@ class ComponentList(SimultanObject):
117
117
  [all_components[i] for i in np.argsort(indices)]]
118
118
  except TypeError as e:
119
119
  logger.warning(f'Could not sort list {all_components}:\n{e}')
120
- return [self._object_mapper.create_python_object(x) for x in all_components]
120
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model) for x in all_components]
121
121
  except Exception as e:
122
122
  logger.error(f'Could not get data from list {self}:\n{e}')
123
123
  return []
@@ -249,11 +249,12 @@ class ComponentList(SimultanObject):
249
249
  if isinstance(i, slice):
250
250
  if self._object_mapper is None:
251
251
  return self.__class__(self.data[i])
252
- return [self._object_mapper.create_python_object(x) for x in self.__class__(self.data[i])]
252
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model)
253
+ for x in self.__class__(self.data[i])]
253
254
  else:
254
255
  if self._object_mapper is None:
255
256
  return self.data[i]
256
- return self._object_mapper.create_python_object(self.data[i])
257
+ return self._object_mapper.create_python_object(self.data[i], data_model=self._data_model)
257
258
 
258
259
  def __repr__(self):
259
260
  return f'List {self.name}: ' + repr(list(self.data))
@@ -278,13 +279,13 @@ class ComponentList(SimultanObject):
278
279
  return None
279
280
 
280
281
  if self._wrapped_obj.Parent is not None:
281
- return self._object_mapper.create_python_object(self._wrapped_obj.Parent)
282
+ return self._object_mapper.create_python_object(self._wrapped_obj.Parent, data_model=self._data_model)
282
283
  else:
283
284
  return None
284
285
 
285
286
  @property
286
287
  def referenced_by(self):
287
- return set([self._object_mapper.create_python_object(x.Target) for x in self._wrapped_obj.ReferencedBy if
288
+ return set([self._object_mapper.create_python_object(x.Target, data_model=self._data_model) for x in self._wrapped_obj.ReferencedBy if
288
289
  x.Target != self._wrapped_obj])
289
290
 
290
291
  def clear(self):
@@ -1,9 +1,7 @@
1
+ from copy import copy
1
2
  from collections import UserList
2
- from weakref import WeakSet
3
- from typing import Type
4
3
  from colorlog import getLogger
5
4
 
6
- from . import config
7
5
  from .data_model import data_models
8
6
  from .utils import *
9
7
  from .default_types import ComponentList, component_list_map, ComponentDictionary, component_dict_map
@@ -33,9 +31,12 @@ class PythonMapper(object):
33
31
  return instance
34
32
 
35
33
  def __init__(self, *args, **kwargs):
36
- self.registered_classes = default_registered_classes # dict with all registered classes: {taxonomy: class}
37
- self.mapped_classes = default_mapped_classes # dict with all mapped classes: {taxonomy: class}
38
- self.taxonomy_maps = default_taxonomy_maps # dict with all taxonomie maps: {taxonomy: taxonomie_map}
34
+
35
+ self.name = kwargs.get('name', 'PythonMapper')
36
+ self.registered_classes = copy(
37
+ default_registered_classes) # dict with all registered classes: {taxonomy: class}
38
+ self.mapped_classes = copy(default_mapped_classes) # dict with all mapped classes: {taxonomy: class}
39
+ self.taxonomy_maps = copy(default_taxonomy_maps) # dict with all taxonomie maps: {taxonomy: taxonomie_map}
39
40
 
40
41
  self.registered_geometry_classes = {Layer: SimultanLayer,
41
42
  Vertex: SimultanVertex,
@@ -136,8 +137,7 @@ class PythonMapper(object):
136
137
  typed_data.append(typed_object)
137
138
  return typed_data
138
139
 
139
- # @lru_cache(maxsize=500)
140
- def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
140
+ def create_python_geometry_object(self, component, data_model=None, *args, **kwargs):
141
141
 
142
142
  if component is None:
143
143
  return None
@@ -145,11 +145,6 @@ class PythonMapper(object):
145
145
  if data_model is None:
146
146
  logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
147
147
  data_model = config.get_default_data_model()
148
- data_model_id = data_model.id
149
- # data_model_id = list(data_models)[0].id
150
- # data_model = list(data_models)[0]
151
- else:
152
- data_model_id = data_model.id
153
148
 
154
149
  if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
155
150
  if isinstance(component, Layer):
@@ -157,7 +152,22 @@ class PythonMapper(object):
157
152
  else:
158
153
  geometry_model = component.Layer.Model.Model
159
154
  cls = self.registered_geometry_classes[type(component)]
160
- return create_python_geometry(cls, component, data_model_id, self, geometry_model)
155
+ return create_python_geometry(cls, component, data_model, self, geometry_model)
156
+ else:
157
+ self.create_python_object(component, data_model, *args, **kwargs)
158
+
159
+ # @lru_cache(maxsize=500)
160
+ def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
161
+
162
+ if component is None:
163
+ return None
164
+
165
+ if data_model is None:
166
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
167
+ data_model = config.get_default_data_model()
168
+
169
+ if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
170
+ self.create_python_geometry_object(component, data_model, *args, **kwargs)
161
171
 
162
172
  if cls is None:
163
173
  c_slots = [x.Target.Key for x in component.Slots.Items]
@@ -181,10 +191,8 @@ class PythonMapper(object):
181
191
  else:
182
192
  return create_python_object(component,
183
193
  cls,
184
- data_model_id=data_model_id,
185
194
  object_mapper=self,
186
195
  data_model=data_model,
187
-
188
196
  *args,
189
197
  **kwargs)
190
198
 
@@ -211,7 +219,7 @@ class PythonMapper(object):
211
219
 
212
220
  return prop_dict
213
221
 
214
- def clear(self):
222
+ def clear(self, remove_from_default=False):
215
223
  for cls in self.registered_classes.values():
216
224
  cls._cls_instances = WeakSet()
217
225
 
@@ -219,7 +227,7 @@ class PythonMapper(object):
219
227
  cls._cls_instances = WeakSet()
220
228
  cls.__property_cache__ = {}
221
229
 
222
- if config.get_default_mapper() is self:
230
+ if remove_from_default and config.get_default_mapper() is self:
223
231
  config.set_default_mapper(None)
224
232
 
225
233
  def copy(self):
@@ -223,7 +223,7 @@ class SimultanObject(object, metaclass=MetaMock):
223
223
  return None
224
224
 
225
225
  if self._wrapped_obj.Parent is not None:
226
- return self._object_mapper.create_python_object(self._wrapped_obj.Parent)
226
+ return self._object_mapper.create_python_object(self._wrapped_obj.Parent, data_model=self._data_model)
227
227
  else:
228
228
  return None
229
229
 
@@ -239,7 +239,8 @@ class SimultanObject(object, metaclass=MetaMock):
239
239
 
240
240
  @property
241
241
  def referenced_by(self) -> set['SimultanObject']:
242
- return set([self._object_mapper.create_python_object(x.Target) for x in self._wrapped_obj.ReferencedBy if
242
+ return set([self._object_mapper.create_python_object(x.Target, data_model=self._data_model)
243
+ for x in self._wrapped_obj.ReferencedBy if
243
244
  x.Target != self._wrapped_obj])
244
245
 
245
246
  @property
@@ -259,14 +260,17 @@ class SimultanObject(object, metaclass=MetaMock):
259
260
  def get_subcomponents(self) -> dict[[str, str], Union['SimultanObject', SimComponent]]:
260
261
  subcomponents = {}
261
262
  for comp in self._wrapped_obj.Components:
262
- subcomponents[(comp.Slot.SlotBase.Target.Key, comp.Slot.SlotExtension)] = self._object_mapper.create_python_object(comp.Component)
263
+ subcomponents[(comp.Slot.SlotBase.Target.Key,
264
+ comp.Slot.SlotExtension)] = self._object_mapper.create_python_object(comp.Component,
265
+ data_model=self._data_model)
263
266
  return subcomponents
264
267
 
265
268
  def get_subcomponent_list(self) -> list[Union['SimultanObject', SimComponent]]:
266
269
  return list(self.get_subcomponents().values())
267
270
 
268
271
  def get_referenced_components(self) -> list['SimultanObject']:
269
- return [self._object_mapper.create_python_object(x) for x in self._wrapped_obj.ReferencedComponents]
272
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model)
273
+ for x in self._wrapped_obj.ReferencedComponents]
270
274
 
271
275
  def add_taxonomy_entry_reference(self,
272
276
  taxonomy_entry_reference: SimTaxonomyEntryReference,
@@ -64,14 +64,19 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
64
64
  :param cls: class of the python object
65
65
  :param args: additional arguments
66
66
  :param kwargs: additional keyword arguments
67
+ :param data_model: DataModel
68
+ :param object_mapper: PythonMapper
69
+
70
+ :return: SimultanObject
67
71
  :return:
68
72
  """
69
73
 
70
74
  from .default_types import ComponentList, ComponentDictionary
71
75
 
72
- if kwargs.get('data_model_id', None) is None:
73
- from .data_model import data_models
74
- kwargs['data_model_id'] = list(data_models)[0].id
76
+ data_model = kwargs.get('data_model', None)
77
+
78
+ if data_model is None:
79
+ data_model = config.get_default_data_model()
75
80
 
76
81
  if wrapped_obj is None:
77
82
  return None
@@ -103,7 +108,7 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
103
108
  obj.__obj_init__ = True
104
109
  obj.__property_cache__ = dict()
105
110
  obj._wrapped_obj = wrapped_obj
106
- obj._data_model = kwargs.get('data_model', None)
111
+ obj._data_model = data_model
107
112
  obj._object_mapper = kwargs.get('object_mapper', None)
108
113
  obj.component_policy = kwargs.get('component_policy', 'subcomponent')
109
114
 
@@ -0,0 +1 @@
1
+ This is the content of the file.
@@ -0,0 +1 @@
1
+ This is the content of the file 2.
@@ -1 +0,0 @@
1
- version = '0.4.2'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes