PySimultan 0.4.1__tar.gz → 0.4.3__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. {pysimultan-0.4.1 → pysimultan-0.4.3}/PKG-INFO +1 -1
  2. pysimultan-0.4.3/src/PySimultan2/__about__.py +1 -0
  3. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/__init__.py +6 -0
  4. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/data_model.py +3 -3
  5. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/default_types.py +6 -5
  6. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/files.py +4 -4
  7. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/geometry/geometry_base.py +4 -4
  8. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/object_mapper.py +25 -16
  9. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/simultan_object.py +13 -9
  10. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/utils.py +17 -13
  11. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_calculate_steady_state_temperature.py +2 -2
  12. pysimultan-0.4.1/src/PySimultan2/__about__.py +0 -1
  13. {pysimultan-0.4.1 → pysimultan-0.4.3}/.gitignore +0 -0
  14. {pysimultan-0.4.1 → pysimultan-0.4.3}/LICENSE.txt +0 -0
  15. {pysimultan-0.4.1 → pysimultan-0.4.3}/README.md +0 -0
  16. {pysimultan-0.4.1 → pysimultan-0.4.3}/pyproject.toml +0 -0
  17. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/geometry/__init__.py +0 -0
  18. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/geometry/utils.py +0 -0
  19. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/multi_values.py +0 -0
  20. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  21. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  22. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/BruTile.dll +0 -0
  23. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  24. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  25. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  26. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  27. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  28. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  29. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  30. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  31. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  32. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  33. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Fluent.dll +0 -0
  34. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
  35. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
  36. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
  37. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  38. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  39. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  40. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  41. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  42. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  43. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  44. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  45. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  46. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  47. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  48. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  49. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  50. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  51. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  52. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  53. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  54. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  55. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  56. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  57. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  58. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  59. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  60. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  61. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  62. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  63. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  64. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  65. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  66. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  67. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  68. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  69. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  70. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  71. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SharpDX.dll +0 -0
  72. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SitePlanner.dll +0 -0
  73. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
  74. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/SitePlanner.xml +0 -0
  75. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  76. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/Sprache.dll +0 -0
  77. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  78. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  79. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  80. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/__init__.py +0 -0
  81. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/assimp.dll +0 -0
  82. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  83. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/resources/setup.bat +0 -0
  84. {pysimultan-0.4.1 → pysimultan-0.4.3}/src/PySimultan2/taxonomy_maps.py +0 -0
  85. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/__init__.py +0 -0
  86. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/__init__.py +0 -0
  87. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/create_component.py +0 -0
  88. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  89. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/create_referenced_component.py +0 -0
  90. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/create_taxonomies.py +0 -0
  91. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/__init__.py +0 -0
  92. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  93. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/empty_project.simultan +0 -0
  94. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  95. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/example1.simultan +0 -0
  96. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/example2.simultan +0 -0
  97. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/example3.simultan +0 -0
  98. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  99. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  100. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/list_test.simultan +0 -0
  101. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example3.yml +0 -0
  102. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example4.yml +0 -0
  103. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  104. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  105. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  106. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  107. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  108. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/U5.simultan +0 -0
  109. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/U5_1.simultan +0 -0
  110. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/U5_orig.simultan +0 -0
  111. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/__init__.py +0 -0
  112. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/new_geometry_test.simultan +0 -0
  113. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/test_file.yml +0 -0
  114. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/test_file_load.simultan +0 -0
  115. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/test_file_project.simultan +0 -0
  116. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  117. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_calc_static_zone_temperature.py +0 -0
  118. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_circular_references.py +0 -0
  119. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_create_geometry.py +0 -0
  120. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_files.py +0 -0
  121. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_files_load.py +0 -0
  122. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_load_geometry.py +0 -0
  123. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_load_multi_values.py +0 -0
  124. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_new_dll.py +0 -0
  125. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_new_project_creation.py +0 -0
  126. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_numeric_map.py +0 -0
  127. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_pythonnet.py +0 -0
  128. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_register_class.py +0 -0
  129. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_set_attr_property.py +0 -0
  130. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_set_dictionary.py +0 -0
  131. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_set_properties.py +0 -0
  132. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_taxonomie_maps.py +0 -0
  133. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_taxonomies.py +0 -0
  134. {pysimultan-0.4.1 → pysimultan-0.4.3}/tests/test_ui.py +0 -0
  135. {pysimultan-0.4.1 → pysimultan-0.4.3}/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.1
3
+ Version: 0.4.3
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.3'
@@ -91,6 +91,12 @@ class Config:
91
91
  def get_default_mapper(self, *args, **kwargs):
92
92
  return self._default_mapper
93
93
 
94
+ def set_default_data_model(self, data_model):
95
+ self._default_data_model = data_model
96
+
97
+ def set_default_mapper(self, mapper):
98
+ self._default_mapper = mapper
99
+
94
100
 
95
101
  config = Config()
96
102
 
@@ -119,7 +119,7 @@ class DataModel:
119
119
  def __new__(cls, *args, **kwargs):
120
120
 
121
121
  instance = super().__new__(cls)
122
- config.default_data_model = instance
122
+ config.set_default_data_model(instance)
123
123
  try:
124
124
  data_models.add(instance)
125
125
  except Exception as e:
@@ -378,8 +378,8 @@ class DataModel:
378
378
  data_models = WeakSet()
379
379
  data_models_dict = WeakValueDictionary()
380
380
 
381
- if config.default_data_model is self:
382
- config.default_data_model = None
381
+ if config.get_default_data_model() is self:
382
+ config.set_default_data_model(None)
383
383
 
384
384
  del self
385
385
 
@@ -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):
@@ -20,7 +20,7 @@ from SIMULTAN.Data.Components import SimComponent, ComponentMapping
20
20
 
21
21
  # from .config import default_data_model
22
22
 
23
- from . import config
23
+ from . import config, logger
24
24
 
25
25
  from typing import TYPE_CHECKING
26
26
  if TYPE_CHECKING:
@@ -197,7 +197,7 @@ class FileInfo(object, metaclass=MetaMock):
197
197
  :return: FileInfo
198
198
  """
199
199
 
200
- data_model = kwargs.get('data_model', config.default_data_model)
200
+ data_model = kwargs.get('data_model', config.get_default_data_model())
201
201
  resource = create_asset_from_string(filename, content, *args, **kwargs)
202
202
 
203
203
  file_info = cls(resource_entry=resource,
@@ -241,8 +241,8 @@ class FileInfo(object, metaclass=MetaMock):
241
241
  def resource_entry(self) -> Union[ResourceFileEntry, ContainedResourceFileEntry, None]:
242
242
  if self._resource_entry is None:
243
243
  if self.data_model is None:
244
- logger.warning(f'No data model provided. Using default data model: {config.default_data_model.id}.')
245
- self.data_model = config.default_data_model
244
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
245
+ self.data_model = config.get_default_data_model()
246
246
  if self.data_model is not None:
247
247
  self.resource_entry = self.data_model.add_resource(self.file_path)
248
248
  return self._resource_entry
@@ -63,7 +63,7 @@ class BaseGeometry(object, metaclass=MetaMock):
63
63
  def __init__(self, *args, **kwargs):
64
64
  self._wrapped_object: Union[Vertex, Edge, Face, Volume, EdgeLoop, Layer] = kwargs.get('wrapped_object', None)
65
65
  self._geometry_model: Optional[GeometryModel] = kwargs.get('geometry_model', None)
66
- self._object_mapper = kwargs.get('object_mapper', config.default_mapper)
66
+ self._object_mapper = kwargs.get('object_mapper', config.get_default_mapper())
67
67
  self._data_model = kwargs.get('data_model', None)
68
68
 
69
69
  @property
@@ -537,7 +537,7 @@ class GeometryModel(object, metaclass=MetaMock):
537
537
  @classmethod
538
538
  def create_simultan_instance(cls, *args, **kwargs):
539
539
 
540
- data_model: DataModel = kwargs.get('data_model', config.default_data_model)
540
+ data_model: DataModel = kwargs.get('data_model', config.get_default_data_model())
541
541
  name: str = kwargs.get('name', 'GeometryModel')
542
542
 
543
543
  new_geo_model, resource = data_model.create_new_geometry_model(name=name)
@@ -549,8 +549,8 @@ class GeometryModel(object, metaclass=MetaMock):
549
549
 
550
550
  def __init__(self, *args, **kwargs):
551
551
  self._wrapped_object: NetGeometryModel = kwargs.get('wrapped_object', None)
552
- self._object_mapper = kwargs.get('object_mapper', config.default_mapper)
553
- self._data_model = kwargs.get('data_model', config.default_data_model)
552
+ self._object_mapper = kwargs.get('object_mapper', config.get_default_mapper())
553
+ self._data_model = kwargs.get('data_model', config.get_default_data_model())
554
554
 
555
555
  @property
556
556
  def name(self):
@@ -29,10 +29,12 @@ class PythonMapper(object):
29
29
 
30
30
  def __new__(cls, *args, **kwargs):
31
31
  instance = super(PythonMapper, cls).__new__(cls)
32
- config.default_mapper = instance
32
+ config.set_default_mapper(instance)
33
33
  return instance
34
34
 
35
35
  def __init__(self, *args, **kwargs):
36
+
37
+ self.name = kwargs.get('name', 'PythonMapper')
36
38
  self.registered_classes = default_registered_classes # dict with all registered classes: {taxonomy: class}
37
39
  self.mapped_classes = default_mapped_classes # dict with all mapped classes: {taxonomy: class}
38
40
  self.taxonomy_maps = default_taxonomy_maps # dict with all taxonomie maps: {taxonomy: taxonomie_map}
@@ -136,20 +138,14 @@ class PythonMapper(object):
136
138
  typed_data.append(typed_object)
137
139
  return typed_data
138
140
 
139
- # @lru_cache(maxsize=500)
140
- def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
141
+ def create_python_geometry_object(self, component, data_model=None, *args, **kwargs):
141
142
 
142
143
  if component is None:
143
144
  return None
144
145
 
145
146
  if data_model is None:
146
- logger.warning(f'No data model provided. Using default data model: {config.default_data_model.id}.')
147
- data_model = config.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
147
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
148
+ data_model = config.get_default_data_model()
153
149
 
154
150
  if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
155
151
  if isinstance(component, Layer):
@@ -157,7 +153,22 @@ class PythonMapper(object):
157
153
  else:
158
154
  geometry_model = component.Layer.Model.Model
159
155
  cls = self.registered_geometry_classes[type(component)]
160
- return create_python_geometry(cls, component, data_model_id, self, geometry_model)
156
+ return create_python_geometry(cls, component, data_model, self, geometry_model)
157
+ else:
158
+ self.create_python_object(component, data_model, *args, **kwargs)
159
+
160
+ # @lru_cache(maxsize=500)
161
+ def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
162
+
163
+ if component is None:
164
+ return None
165
+
166
+ if data_model is None:
167
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
168
+ data_model = config.get_default_data_model()
169
+
170
+ if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
171
+ self.create_python_geometry_object(component, data_model, *args, **kwargs)
161
172
 
162
173
  if cls is None:
163
174
  c_slots = [x.Target.Key for x in component.Slots.Items]
@@ -181,10 +192,8 @@ class PythonMapper(object):
181
192
  else:
182
193
  return create_python_object(component,
183
194
  cls,
184
- data_model_id=data_model_id,
185
195
  object_mapper=self,
186
196
  data_model=data_model,
187
-
188
197
  *args,
189
198
  **kwargs)
190
199
 
@@ -219,8 +228,8 @@ class PythonMapper(object):
219
228
  cls._cls_instances = WeakSet()
220
229
  cls.__property_cache__ = {}
221
230
 
222
- if config.default_mapper is self:
223
- config.default_mapper = None
231
+ if config.get_default_mapper() is self:
232
+ config.set_default_mapper(None)
224
233
 
225
234
  def copy(self):
226
235
  new_mapper = PythonMapper()
@@ -231,4 +240,4 @@ class PythonMapper(object):
231
240
 
232
241
 
233
242
  if config.get_default_mapper() is None:
234
- config._default_mapper = PythonMapper()
243
+ config.set_default_mapper(PythonMapper())
@@ -68,10 +68,10 @@ class MetaMock(type):
68
68
  data_model = list(data_models.data)[0]()
69
69
  kwargs['data_model'] = data_model
70
70
  else:
71
- if config.default_data_model is not None:
71
+ if config.get_default_data_model() is not None:
72
72
  logger.warning(
73
- f'No data model provided. Using default data model: {config.default_data_model.id}.')
74
- data_model = config.default_data_model
73
+ f'No data model provided. Using default data model: {config.get_default_data_model().id}')
74
+ data_model = config.get_default_data_model()
75
75
  kwargs['data_model'] = data_model
76
76
  else:
77
77
  raise TypeError((f'Error creating new instance of class {cls.__name__}:\n'
@@ -154,8 +154,8 @@ class SimultanObject(object, metaclass=MetaMock):
154
154
 
155
155
  self._wrapped_obj: Union[SimComponent, None] = kwargs.get('wrapped_obj', None)
156
156
  self.__obj_init__ = kwargs.get('__obj_init__', False)
157
- self._data_model: Union[DataModel, None] = kwargs.get('data_model', config.default_data_model)
158
- self._object_mapper: Union[PythonMapper, None] = kwargs.get('object_mapper', config.default_mapper)
157
+ self._data_model: Union[DataModel, None] = kwargs.get('data_model', config.get_default_data_model())
158
+ self._object_mapper: Union[PythonMapper, None] = kwargs.get('object_mapper', config.get_default_mapper())
159
159
  self.name = kwargs.get('name', None)
160
160
 
161
161
  self.__property_cache__ = {}
@@ -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,
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from . import config
4
3
  from enum import Enum
5
4
  from weakref import WeakSet
6
5
  import numpy as np
@@ -65,14 +64,19 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
65
64
  :param cls: class of the python object
66
65
  :param args: additional arguments
67
66
  :param kwargs: additional keyword arguments
67
+ :param data_model: DataModel
68
+ :param object_mapper: PythonMapper
69
+
70
+ :return: SimultanObject
68
71
  :return:
69
72
  """
70
73
 
71
74
  from .default_types import ComponentList, ComponentDictionary
72
75
 
73
- if kwargs.get('data_model_id', None) is None:
74
- from .data_model import data_models
75
- 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()
76
80
 
77
81
  if wrapped_obj is None:
78
82
  return None
@@ -104,7 +108,7 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
104
108
  obj.__obj_init__ = True
105
109
  obj.__property_cache__ = dict()
106
110
  obj._wrapped_obj = wrapped_obj
107
- obj._data_model = kwargs.get('data_model', None)
111
+ obj._data_model = data_model
108
112
  obj._object_mapper = kwargs.get('object_mapper', None)
109
113
  obj.component_policy = kwargs.get('component_policy', 'subcomponent')
110
114
 
@@ -227,7 +231,7 @@ def get_default_slot(default_type: Union[SimTaxonomyEntryReference, SimTaxonomyE
227
231
  :return:
228
232
  """
229
233
 
230
- default_taxonomy_entry = SimDefaultSlotKeys.GetDefaultSlot(config.default_data_model.project_data_manager.Taxonomies,
234
+ default_taxonomy_entry = SimDefaultSlotKeys.GetDefaultSlot(config.get_default_data_model().project_data_manager.Taxonomies,
231
235
  SimDefaultSlotKeys.Undefined)
232
236
 
233
237
  if default_type is SimTaxonomyEntryReference:
@@ -604,7 +608,7 @@ def create_simultan_component_for_taxonomy(cls, *args, **kwargs) -> SimComponent
604
608
 
605
609
  data_model = kwargs.get('data_model', None)
606
610
  if data_model is None:
607
- data_model = config.default_data_model
611
+ data_model = config.get_default_data_model()
608
612
 
609
613
  # simultan_taxonomy = cls._taxonomy_map.get_or_create_simultan_taxonomy(data_model=data_model)
610
614
  # tayonomy_entry = cls._taxonomy_map.get_or_create_simultan_taxonomy_entry(data_model=data_model)
@@ -679,7 +683,7 @@ def get_property(prop_name: Optional[str] = None,
679
683
  data_model = component._data_model
680
684
  object_mapper = component._object_mapper
681
685
  else:
682
- data_model = config.default_data_model
686
+ data_model = config.get_default_data_model()
683
687
  obj = get_component_taxonomy_entry(wrapped_obj, text_or_key)
684
688
 
685
689
  return get_obj_value(obj, data_model=data_model, object_mapper=object_mapper)
@@ -877,7 +881,7 @@ def create_mapped_python_object(value: SimComponent,
877
881
  """
878
882
 
879
883
  if object_mapper is None:
880
- object_mapper = config.default_mapper
884
+ object_mapper = config.get_default_mapper()
881
885
 
882
886
  # logger.debug(f'Creating mapped python object for {value}.')
883
887
  if type(value) in object_mapper.registered_classes.values():
@@ -973,13 +977,13 @@ def set_property_to_list(value: Union[list, tuple, set, ComponentList],
973
977
 
974
978
  if 'ComponentList' in [x.Target.Key for x in component.Slots]:
975
979
  if not hasattr(component, '_object_mapper'):
976
- mapper = config.default_mapper
980
+ mapper = config.get_default_mapper()
977
981
  component._object_mapper = mapper
978
982
  else:
979
983
  mapper = component._object_mapper
980
984
 
981
985
  if not hasattr(component, '_data_model'):
982
- data_model = config.default_data_model
986
+ data_model = config.get_default_data_model()
983
987
  component._data_model = data_model
984
988
  else:
985
989
  data_model = component._data_model
@@ -1240,13 +1244,13 @@ def set_property_to_dict(value: dict,
1240
1244
 
1241
1245
  if 'ComponentDictionary' in [x.Target.Key for x in component.Slots]:
1242
1246
  if not hasattr(component, '_object_mapper'):
1243
- mapper = config.default_mapper
1247
+ mapper = config.get_default_mapper()
1244
1248
  component._object_mapper = mapper
1245
1249
  else:
1246
1250
  mapper = component._object_mapper
1247
1251
 
1248
1252
  if not hasattr(component, '_data_model'):
1249
- data_model = config.default_data_model
1253
+ data_model = config.get_default_data_model()
1250
1254
  component._data_model = data_model
1251
1255
  else:
1252
1256
  data_model = component._data_model
@@ -582,12 +582,12 @@ def test_loaded_model(project_name=None):
582
582
 
583
583
  from PySimultan2.src.PySimultan2 import config
584
584
 
585
- config.default_data_model
585
+ config.get_default_data_model()
586
586
 
587
587
 
588
588
  if __name__ == '__main__':
589
589
 
590
- for i in range(10):
590
+ for i in range(3):
591
591
  print(f'Iteration {i}')
592
592
  create_model()
593
593
  sleep(1)
@@ -1 +0,0 @@
1
- version = '0.4.1'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes