PySimultan 0.4.8__tar.gz → 0.4.10__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. {pysimultan-0.4.8 → pysimultan-0.4.10}/PKG-INFO +32 -2
  2. pysimultan-0.4.10/README.md +51 -0
  3. pysimultan-0.4.10/src/PySimultan2/__about__.py +1 -0
  4. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/data_model.py +4 -0
  5. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/object_mapper.py +61 -30
  6. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_calculate_steady_state_temperature.py +3 -0
  7. pysimultan-0.4.8/README.md +0 -21
  8. pysimultan-0.4.8/src/PySimultan2/__about__.py +0 -1
  9. {pysimultan-0.4.8 → pysimultan-0.4.10}/.gitignore +0 -0
  10. {pysimultan-0.4.8 → pysimultan-0.4.10}/LICENSE.txt +0 -0
  11. {pysimultan-0.4.8 → pysimultan-0.4.10}/pyproject.toml +0 -0
  12. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/__init__.py +0 -0
  13. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/default_types.py +0 -0
  14. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/files.py +0 -0
  15. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/geometry/__init__.py +0 -0
  16. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/geometry/geometry_base.py +0 -0
  17. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/geometry/utils.py +0 -0
  18. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/multi_values.py +0 -0
  19. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  20. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  21. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/BruTile.dll +0 -0
  22. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  23. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  24. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  25. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  26. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  27. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  28. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  29. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  30. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  31. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  32. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Fluent.dll +0 -0
  33. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
  34. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
  35. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
  36. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  37. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  38. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  39. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  40. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  41. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  42. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  43. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  44. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  45. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  46. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  47. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  48. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  49. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  50. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  51. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  52. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  53. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  54. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  55. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  56. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  57. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  58. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  59. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  60. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  61. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  62. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  63. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  64. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  65. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  66. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  67. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  68. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  69. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  70. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SharpDX.dll +0 -0
  71. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SitePlanner.dll +0 -0
  72. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
  73. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/SitePlanner.xml +0 -0
  74. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  75. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/Sprache.dll +0 -0
  76. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  77. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  78. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  79. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/__init__.py +0 -0
  80. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/assimp.dll +0 -0
  81. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  82. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/resources/setup.bat +0 -0
  83. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/simultan_object.py +0 -0
  84. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/taxonomy_maps.py +0 -0
  85. {pysimultan-0.4.8 → pysimultan-0.4.10}/src/PySimultan2/utils.py +0 -0
  86. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/__init__.py +0 -0
  87. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/__init__.py +0 -0
  88. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/create_component.py +0 -0
  89. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  90. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/create_referenced_component.py +0 -0
  91. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/create_taxonomies.py +0 -0
  92. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/__init__.py +0 -0
  93. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  94. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/empty_project.simultan +0 -0
  95. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  96. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/example1.simultan +0 -0
  97. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/example2.simultan +0 -0
  98. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/example3.simultan +0 -0
  99. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  100. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  101. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/list_test.simultan +0 -0
  102. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example3.yml +0 -0
  103. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example4.yml +0 -0
  104. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  105. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  106. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  107. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  108. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  109. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/U5.simultan +0 -0
  110. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/U5_1.simultan +0 -0
  111. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/U5_orig.simultan +0 -0
  112. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/__init__.py +0 -0
  113. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/new_geometry_test.simultan +0 -0
  114. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/test_file.yml +0 -0
  115. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/test_file_load.simultan +0 -0
  116. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/test_file_project.simultan +0 -0
  117. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  118. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_calc_static_zone_temperature.py +0 -0
  119. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_circular_references.py +0 -0
  120. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_create_geometry.py +0 -0
  121. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_files.py +0 -0
  122. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_files_load.py +0 -0
  123. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_load_geometry.py +0 -0
  124. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_load_multi_values.py +0 -0
  125. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_new_dll.py +0 -0
  126. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_new_project_creation.py +0 -0
  127. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_numeric_map.py +0 -0
  128. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_pythonnet.py +0 -0
  129. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_register_class.py +0 -0
  130. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_set_attr_property.py +0 -0
  131. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_set_dictionary.py +0 -0
  132. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_set_properties.py +0 -0
  133. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_taxonomie_maps.py +0 -0
  134. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_taxonomies.py +0 -0
  135. {pysimultan-0.4.8 → pysimultan-0.4.10}/tests/test_ui.py +0 -0
  136. {pysimultan-0.4.8 → pysimultan-0.4.10}/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.8
3
+ Version: 0.4.10
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
@@ -42,9 +42,39 @@ Description-Content-Type: text/markdown
42
42
  ## Installation
43
43
 
44
44
  ```console
45
- pip install pysimultan-api
45
+ pip install PySimultan
46
46
  ```
47
47
 
48
48
  ## License
49
49
 
50
50
  `pysimultan-api` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
51
+
52
+
53
+ ### Usage
54
+
55
+ ```python
56
+ from PySimultan2 import DataModel, Content, TaxonomyMap, PythonMapper
57
+ ```
58
+
59
+
60
+ ## FreeCAD support
61
+
62
+ PySimultanUI looks for a FreeCAD version in C:\Program Files\FreeCAD. If you don't have FreeCAD installed, you can
63
+ download it from the FreeCAD website or use the FreeCAD version provided in the FreeCAD-Bundle repository.
64
+ Go to https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds and download the latest version
65
+ of FreeCAD for your OS. The version must be compiled with the same python version you are using (e.g. py311).
66
+
67
+ Extract the zip file to C:\Program Files\FreeCAD
68
+
69
+ The directory structure should look like this:
70
+
71
+ ```
72
+ C:\Program Files\FreeCAD
73
+ │ ...
74
+ │ FreeCAD_weekly-builds-37730-conda-Windows-x86_64-py311
75
+ │ │ bin
76
+ │ │ lib
77
+ │ │ ...
78
+
79
+
80
+ ```
@@ -0,0 +1,51 @@
1
+ # pysimultan_api
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
4
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
5
+
6
+ -----
7
+
8
+ ## Table of Contents
9
+
10
+ - [Installation](#installation)
11
+ - [License](#license)
12
+
13
+ ## Installation
14
+
15
+ ```console
16
+ pip install PySimultan
17
+ ```
18
+
19
+ ## License
20
+
21
+ `pysimultan-api` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
22
+
23
+
24
+ ### Usage
25
+
26
+ ```python
27
+ from PySimultan2 import DataModel, Content, TaxonomyMap, PythonMapper
28
+ ```
29
+
30
+
31
+ ## FreeCAD support
32
+
33
+ PySimultanUI looks for a FreeCAD version in C:\Program Files\FreeCAD. If you don't have FreeCAD installed, you can
34
+ download it from the FreeCAD website or use the FreeCAD version provided in the FreeCAD-Bundle repository.
35
+ Go to https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds and download the latest version
36
+ of FreeCAD for your OS. The version must be compiled with the same python version you are using (e.g. py311).
37
+
38
+ Extract the zip file to C:\Program Files\FreeCAD
39
+
40
+ The directory structure should look like this:
41
+
42
+ ```
43
+ C:\Program Files\FreeCAD
44
+ │ ...
45
+ │ FreeCAD_weekly-builds-37730-conda-Windows-x86_64-py311
46
+ │ │ bin
47
+ │ │ lib
48
+ │ │ ...
49
+
50
+
51
+ ```
@@ -0,0 +1 @@
1
+ version = '0.4.10'
@@ -674,6 +674,10 @@ class DataModel:
674
674
  sim_taxonomy: SimTaxonomy = None) -> SimTaxonomyEntry:
675
675
  return get_or_create_taxonomy_entry(name, key, description, sim_taxonomy, data_model=self, create=True)
676
676
 
677
+ def get_root_components(self, mapper: 'PythonMapper'):
678
+ mapper.current_data_model = self
679
+ return mapper.get_typed_data(self, component_list=self.data.Items, create_all=False)
680
+
677
681
  def __del__(self):
678
682
  self.cleanup()
679
683
 
@@ -1,9 +1,12 @@
1
+ from typing import Optional, Type, TYPE_CHECKING, Union
1
2
  from copy import copy
2
3
  from collections import UserList
3
4
  from colorlog import getLogger
5
+ from weakref import WeakSet
4
6
 
7
+ from . import config
5
8
  from .data_model import data_models
6
- from .utils import *
9
+ from .utils import create_python_object, add_properties
7
10
  from .default_types import ComponentList, component_list_map, ComponentDictionary, component_dict_map
8
11
 
9
12
  from .simultan_object import SimultanObject
@@ -16,6 +19,9 @@ from .geometry.geometry_base import (SimultanLayer, SimultanVertex, SimultanEdge
16
19
 
17
20
  from .taxonomy_maps import TaxonomyMap, Content
18
21
 
22
+ if TYPE_CHECKING:
23
+ from .data_model import DataModel
24
+
19
25
  logger = getLogger('PySimultan')
20
26
 
21
27
  default_registered_classes = {'ComponentList': ComponentList,
@@ -50,7 +56,7 @@ class PythonMapper(object):
50
56
  EdgeLoop: SimultanEdgeLoop}
51
57
 
52
58
  self.re_register = False
53
- self.load_undefined = True
59
+ self.load_undefined = False
54
60
 
55
61
  def register(self, taxonomy, cls, taxonomy_map=None):
56
62
  if not self.re_register and taxonomy in self.registered_classes.keys():
@@ -145,7 +151,8 @@ class PythonMapper(object):
145
151
 
146
152
  for component in component_list:
147
153
  typed_object = self.create_python_object(component, data_model=data_model)
148
- typed_data.append(typed_object)
154
+ if typed_object is not None:
155
+ typed_data.append(typed_object)
149
156
  return typed_data
150
157
 
151
158
  def create_python_geometry_object(self, component, data_model=None, *args, **kwargs):
@@ -167,9 +174,11 @@ class PythonMapper(object):
167
174
  else:
168
175
  self.create_python_object(component, data_model, *args, **kwargs)
169
176
 
170
- # @lru_cache(maxsize=500)
171
- def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
172
-
177
+ def get_mapped_class_from_component(self,
178
+ component,
179
+ data_model: Optional['DataModel'] = None,
180
+ *args,
181
+ **kwargs) -> Optional[Type[SimultanObject]]:
173
182
  if component is None:
174
183
  return None
175
184
 
@@ -182,33 +191,54 @@ class PythonMapper(object):
182
191
  ):
183
192
  self.create_python_geometry_object(component, data_model, *args, **kwargs)
184
193
 
185
- if cls is None:
186
- c_slots = [x.Target.Key for x in component.Slots.Items]
187
- c_slot = list(set(c_slots) & set(self.registered_classes.keys()))
188
- if len(c_slot) == 0:
189
- if c_slots[0] not in self.registered_classes.keys() and self.load_undefined:
190
-
191
- def new_init(self, *args, **kwargs):
192
- pass
194
+ c_slots = [x.Target.Key for x in component.Slots.Items]
195
+ c_slot = list(set(c_slots) & set(self.registered_classes.keys()))
196
+ if len(c_slot) == 0:
197
+ if c_slots[0] not in self.registered_classes.keys() and self.load_undefined:
198
+
199
+ def new_init(self, *args, **kwargs):
200
+ """
201
+ Init method for undefined classes
202
+ :param self:
203
+ :param args:
204
+ :param kwargs:
205
+ :return:
206
+ """
207
+ pass
208
+
209
+ new_cls = type(c_slots[0],
210
+ (object,),
211
+ {'__init__': new_init}
212
+ )
213
+
214
+ self.register(c_slots[0], new_cls)
215
+ c_slot = [c_slots[0]]
216
+ self.undefined_registered_classes[c_slot[0]] = new_cls
217
+ # self.create_mapped_class(c_slot[0], self.registered_classes[c_slot[0]])
218
+ elif c_slots[0] not in self.registered_classes.keys() and not self.load_undefined:
219
+ logger.debug(f'Component {component} has no registered taxonomy: {c_slots}')
220
+ return
221
+ elif len(c_slot) > 1:
222
+ num_superclasses = [len(self.registered_classes[x].__mro__) for x in c_slot]
223
+ c_slot = [c_slot[num_superclasses.index(max(num_superclasses))]]
224
+
225
+ if c_slot[0] not in self.mapped_classes.keys():
226
+ self.create_mapped_class(c_slot[0], self.registered_classes[c_slot[0]])
227
+
228
+ cls = self.mapped_classes[c_slot[0]]
229
+
230
+ return cls
193
231
 
194
- new_cls = type(c_slots[0],
195
- (object,),
196
- {'__init__': new_init}
197
- )
198
-
199
- self.register(c_slots[0], new_cls)
200
- c_slot = [c_slots[0]]
201
- self.undefined_registered_classes[c_slot[0]] = new_cls
202
- # self.create_mapped_class(c_slot[0], self.registered_classes[c_slot[0]])
203
- elif len(c_slot) > 1:
204
- num_superclasses = [len(self.registered_classes[x].__mro__) for x in c_slot]
205
- c_slot = [c_slot[num_superclasses.index(max(num_superclasses))]]
206
- # raise Warning(f'Component {component} has more than one registered taxonomy: {c_slot}')
232
+ # @lru_cache(maxsize=500)
233
+ def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs) -> Optional[SimultanObject]:
207
234
 
208
- if c_slot[0] not in self.mapped_classes.keys():
209
- self.create_mapped_class(c_slot[0], self.registered_classes[c_slot[0]])
235
+ if cls is None:
236
+ cls = self.get_mapped_class_from_component(component,
237
+ data_model,
238
+ *args, **kwargs)
210
239
 
211
- cls = self.mapped_classes[c_slot[0]]
240
+ if cls is None:
241
+ return None
212
242
 
213
243
  if component is not None and component.Id in cls._cls_instances_dict.keys():
214
244
  return cls._cls_instances_dict[component.Id]
@@ -259,6 +289,7 @@ class PythonMapper(object):
259
289
  new_mapper.registered_classes = self.registered_classes
260
290
  new_mapper.taxonomy_maps = self.taxonomy_maps
261
291
  new_mapper.registered_geometry_classes = self.registered_geometry_classes
292
+ new_mapper.load_undefined = self.load_undefined
262
293
  return new_mapper
263
294
 
264
295
 
@@ -564,6 +564,9 @@ def test_loaded_model(project_name=None):
564
564
  user_name='admin',
565
565
  password='admin')
566
566
 
567
+ # mapper.load_undefined = False
568
+ mapper.load_undefined = True
569
+
567
570
  typed_data = data_model.get_typed_data(mapper=mapper,
568
571
  create_all=True)
569
572
 
@@ -1,21 +0,0 @@
1
- # pysimultan_api
2
-
3
- [![PyPI - Version](https://img.shields.io/pypi/v/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
4
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
5
-
6
- -----
7
-
8
- ## Table of Contents
9
-
10
- - [Installation](#installation)
11
- - [License](#license)
12
-
13
- ## Installation
14
-
15
- ```console
16
- pip install pysimultan-api
17
- ```
18
-
19
- ## License
20
-
21
- `pysimultan-api` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
@@ -1 +0,0 @@
1
- version = '0.4.8'
File without changes
File without changes
File without changes
File without changes