PySimultan 0.5.7__tar.gz → 0.5.9__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 (143) hide show
  1. {pysimultan-0.5.7 → pysimultan-0.5.9}/PKG-INFO +11 -3
  2. {pysimultan-0.5.7 → pysimultan-0.5.9}/README.md +7 -0
  3. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/CHANGELOG.md +3 -0
  4. pysimultan-0.5.9/src/PySimultan2/__about__.py +1 -0
  5. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/data_model.py +54 -0
  6. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/files.py +18 -0
  7. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/geometry/geometry_base.py +12 -0
  8. pysimultan-0.5.9/tests/resources/test_file_project.simultan +0 -0
  9. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_files.py +41 -2
  10. pysimultan-0.5.7/src/PySimultan2/__about__.py +0 -1
  11. pysimultan-0.5.7/tests/resources/test_file.yml +0 -1
  12. pysimultan-0.5.7/tests/resources/test_file_project.simultan +0 -0
  13. pysimultan-0.5.7/tests/resources/test_set_dictionary.simultan +0 -0
  14. {pysimultan-0.5.7 → pysimultan-0.5.9}/.gitignore +0 -0
  15. {pysimultan-0.5.7 → pysimultan-0.5.9}/LICENSE.txt +0 -0
  16. {pysimultan-0.5.7 → pysimultan-0.5.9}/pyproject.toml +0 -0
  17. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/__init__.py +0 -0
  18. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/default_types.py +0 -0
  19. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/geometry/__init__.py +0 -0
  20. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/geometry/utils.py +0 -0
  21. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/multi_values.py +0 -0
  22. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/object_mapper.py +0 -0
  23. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  24. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  25. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/BruTile.dll +0 -0
  26. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  27. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  28. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  29. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  30. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  31. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  32. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  33. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  34. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  35. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  36. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Fluent.dll +0 -0
  37. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  38. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  39. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  40. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  41. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  42. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  43. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  44. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  45. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  46. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  47. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  48. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  49. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  50. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  51. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  52. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  53. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  54. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  55. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  56. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  57. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  58. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  59. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  60. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  61. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  62. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  63. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  64. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  65. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  66. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  67. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  68. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  69. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  70. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  71. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/SharpDX.dll +0 -0
  72. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  73. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/Sprache.dll +0 -0
  74. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/System.Collections.Immutable.dll +0 -0
  75. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  76. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  77. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/System.Reflection.Metadata.dll +0 -0
  78. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/System.Reflection.MetadataLoadContext.dll +0 -0
  79. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  80. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/__init__.py +0 -0
  81. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/assimp.dll +0 -0
  82. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/componentmanager.user +0 -0
  83. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  84. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/resources/setup.bat +0 -0
  85. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/simultan_object.py +0 -0
  86. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/taxonomy_maps.py +0 -0
  87. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/type_setter_lookup.py +0 -0
  88. {pysimultan-0.5.7 → pysimultan-0.5.9}/src/PySimultan2/utils.py +0 -0
  89. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/__init__.py +0 -0
  90. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/__init__.py +0 -0
  91. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/create_component.py +0 -0
  92. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  93. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/create_referenced_component.py +0 -0
  94. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/create_taxonomies.py +0 -0
  95. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/__init__.py +0 -0
  96. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  97. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/empty_project.simultan +0 -0
  98. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  99. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/example1.simultan +0 -0
  100. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/example2.simultan +0 -0
  101. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/example3.simultan +0 -0
  102. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  103. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  104. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/list_test.simultan +0 -0
  105. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example3.yml +0 -0
  106. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example4.yml +0 -0
  107. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  108. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  109. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  110. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  111. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  112. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/U5.simultan +0 -0
  113. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/U5_1.simultan +0 -0
  114. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/U5_orig.simultan +0 -0
  115. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/__init__.py +0 -0
  116. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/new_geometry_test.simultan +0 -0
  117. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/new_test_file.txt +0 -0
  118. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/new_test_file2.txt +0 -0
  119. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/test_file_load.simultan +0 -0
  120. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  121. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/resources/test_parameter_reference_project.simultan +0 -0
  122. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_calc_static_zone_temperature.py +0 -0
  123. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_calculate_steady_state_temperature.py +0 -0
  124. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_circular_references.py +0 -0
  125. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_create_geometry.py +0 -0
  126. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_directory_and_files.py +0 -0
  127. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_files_load.py +0 -0
  128. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_load_geometry.py +0 -0
  129. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_load_multi_values.py +0 -0
  130. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_new_dll.py +0 -0
  131. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_new_project_creation.py +0 -0
  132. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_numeric_map.py +0 -0
  133. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_parameter_reference.py +0 -0
  134. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_pythonnet.py +0 -0
  135. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_register_class.py +0 -0
  136. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_register_decorator.py +0 -0
  137. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_set_attr_property.py +0 -0
  138. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_set_dictionary.py +0 -0
  139. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_set_properties.py +0 -0
  140. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_taxonomie_maps.py +0 -0
  141. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_taxonomies.py +0 -0
  142. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/test_ui.py +0 -0
  143. {pysimultan-0.5.7 → pysimultan-0.5.9}/tests/ui_minimal_example.py +0 -0
@@ -1,11 +1,12 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: PySimultan
3
- Version: 0.5.7
3
+ Version: 0.5.9
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
7
7
  Author-email: Bühler Maximilian <maximilian.buehler@tuwien.ac.at>
8
- License: MIT
8
+ License-Expression: MIT
9
+ License-File: LICENSE.txt
9
10
  Classifier: Development Status :: 4 - Beta
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3.8
@@ -166,6 +167,13 @@ print(instances[0].param_1)
166
167
 
167
168
  # Change Log
168
169
 
170
+ ## [0.5.8] - 2024-12-17
171
+ - Added FileInfo.from_existing_file method to create FileInfo object from existing file in ProjectUnpackFolder
172
+
173
+ ## [0.5.7] - 2024-12-09
174
+ - Added support for different taxonomy for content
175
+ - Added support for numpy np.float32, np.float64 and np.int32, np.int64
176
+
169
177
  ## [0.4.20] - 2024-07-01
170
178
  - Fixed Bug in nested dictionary creation
171
179
 
@@ -138,6 +138,13 @@ print(instances[0].param_1)
138
138
 
139
139
  # Change Log
140
140
 
141
+ ## [0.5.8] - 2024-12-17
142
+ - Added FileInfo.from_existing_file method to create FileInfo object from existing file in ProjectUnpackFolder
143
+
144
+ ## [0.5.7] - 2024-12-09
145
+ - Added support for different taxonomy for content
146
+ - Added support for numpy np.float32, np.float64 and np.int32, np.int64
147
+
141
148
  ## [0.4.20] - 2024-07-01
142
149
  - Fixed Bug in nested dictionary creation
143
150
 
@@ -1,3 +1,6 @@
1
+ Version 0.5.7 (11.12.2024)
2
+ - Added get_orientation_to_volume method to SimultanFace which returns the orientation of the face to the volume
3
+
1
4
  Version 0.5.3 (01.12.2024)
2
5
  - Added support for directories (Assets and FileInfo)
3
6
 
@@ -0,0 +1 @@
1
+ version = '0.5.9'
@@ -532,6 +532,60 @@ class DataModel:
532
532
  )
533
533
  )
534
534
 
535
+ def add_resource_file(self,
536
+ filename: Union[str, FileInfo, PythonFileInfo],
537
+ target_dir: Union[ResourceDirectoryEntry, FileInfo, str] = None) -> ResourceEntry:
538
+
539
+ """
540
+ Add a file as resource to the project which already exists in the project folder
541
+ :param filename:
542
+ :param target_dir:
543
+ :return:
544
+ """
545
+
546
+ if isinstance(filename, str):
547
+ filename = FileInfo(filename)
548
+ elif isinstance(filename, PythonFileInfo):
549
+ filename = FileInfo(filename.full_path)
550
+
551
+ if target_dir is None:
552
+ # check if file is already in project folder
553
+ if not os.path.exists(os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)):
554
+ raise FileNotFoundError(f'File {filename} not found in project folder {self.project.ProjectUnpackFolder}')
555
+
556
+ self.project.AddResourceFile(FileInfo(str(filename)),
557
+ self.project_data_manager)
558
+
559
+ full_filename = os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)
560
+
561
+ return next(
562
+ (
563
+ x for x in self.project_data_manager.AssetManager.Resources if x.CurrentFullPath == full_filename
564
+ )
565
+ , None
566
+ )
567
+
568
+ else:
569
+ if isinstance(target_dir, str):
570
+ target_dir = DirectoryInfo(target_dir)
571
+ elif isinstance(target_dir, ResourceDirectoryEntry):
572
+ target_dir = DirectoryInfo(target_dir.CurrentFullPath)
573
+ elif isinstance(target_dir, FileInfo):
574
+ pass
575
+
576
+ # check if file is already in project folder
577
+ if not os.path.exists(os.path.join(target_dir.FullPath, filename.Name)):
578
+ raise FileNotFoundError(f'File {filename} not found in project folder {target_dir.FullPath}')
579
+
580
+ self.project.AddResourceFile(
581
+ FileInfo(os.path.join(target_dir.FullPath, filename.Name)),
582
+ self.project_data_manager)
583
+
584
+ # get added resource
585
+ return next((x for x in self.project_data_manager.AssetManager.Resources if
586
+ x.CurrentFullPath == os.path.join(target_dir.FullPath, filename.Name)), None)
587
+
588
+
535
589
  def add_resource(self,
536
590
  filename: Union[str, FileInfo],
537
591
  target_dir: Optional[Union[DirectoryInfo, ResourceDirectoryEntry, str]] = None,
@@ -281,6 +281,21 @@ class FileInfo(object, metaclass=MetaMock):
281
281
  file_info.write_content(content)
282
282
  return file_info
283
283
 
284
+ @classmethod
285
+ def from_existing_file(cls,
286
+ file_path: str,
287
+ *args,
288
+ **kwargs) -> FileInfo:
289
+
290
+ data_model = kwargs.get('data_model', config.get_default_data_model())
291
+ resource = data_model.add_resource_file(file_path)
292
+
293
+ return cls(resource_entry=resource,
294
+ data_model=data_model,
295
+ *args,
296
+ **kwargs)
297
+
298
+
284
299
  def __init__(self, file_path=None, *args, **kwargs):
285
300
  """
286
301
  Custom file info object to be used with the with statement. This object is used to open a file and close it
@@ -475,7 +490,10 @@ class FileInfo(object, metaclass=MetaMock):
475
490
  :return: None
476
491
  """
477
492
  if self.resource_entry is not None:
493
+ if self.resource_entry.Key in self._cls_instances:
494
+ del self._cls_instances[self.resource_entry.Key]
478
495
  self.data_model.delete_resource(self.resource_entry)
496
+
479
497
  os.remove(self.file_path)
480
498
 
481
499
  def to_json(self) -> dict:
@@ -471,6 +471,18 @@ class SimultanFace(ExtendedBaseGeometry):
471
471
 
472
472
  return vertices, triangles
473
473
 
474
+ def get_orientation_to_volume(self, volume: 'SimultanVolume') -> Optional[GeometricOrientation]:
475
+
476
+ p_face = next((x for x in volume._wrapped_object.Faces if x.Face.Id is self._wrapped_object.Id), None)
477
+
478
+ if p_face is None or p_face.Orientation == GeometricOrientation.Undefined:
479
+ return None
480
+
481
+ mul_1 = 1 if self.orientation == GeometricOrientation.Forward else -1
482
+ mul_2 = 1 if p_face.Orientation == GeometricOrientation.Forward else -1
483
+
484
+ return GeometricOrientation.Forward if mul_1 * mul_2 == 1 else GeometricOrientation.Backward
485
+
474
486
  def __repr__(self):
475
487
  return f"SimultanFace {self.id} ({self.boundary.id}, {[x.id for x in self.holes]})"
476
488
 
@@ -1,4 +1,3 @@
1
- import io
2
1
  import os
3
2
 
4
3
  from PySimultan2.data_model import DataModel
@@ -97,12 +96,52 @@ def test_set_file():
97
96
  test_component = mapped_test_component_cls(name='test_component',
98
97
  file_value_2=file_info)
99
98
 
99
+ return mapper
100
+
101
+
102
+ def test_add_resource_in_directory(mapper):
103
+
104
+ file_path = os.path.join(str(data_model.project.ProjectUnpackFolder), 'already_exising.txt')
105
+
106
+ with open(file_path, 'w') as f:
107
+ f.write('This is the content of the already existing file.')
108
+
109
+ file_info = FileInfo(file_path=file_path)
110
+ mapped_test_component_cls = mapper.get_mapped_class('TestComponent')
111
+ test_component = mapped_test_component_cls(name='test_component 2',
112
+ file_value_2=file_info)
113
+
114
+ def test_add_resource_file():
115
+ file_path = os.path.join(str(data_model.project.ProjectUnpackFolder), 'already_exising_2.txt')
116
+
117
+ with open(file_path, 'w') as f:
118
+ f.write('This is the content of the already existing file 2.')
119
+
120
+ file = data_model.add_resource_file(file_path)
121
+ print(file)
122
+
123
+ file_path = os.path.join(str(data_model.project.ProjectUnpackFolder), 'already_exising_3.txt')
124
+
125
+ with open(file_path, 'w') as f:
126
+ f.write('This is the content of the already existing file 3.')
127
+
128
+ file_info = FileInfo.from_existing_file(file_path=file_path,
129
+ data_model=data_model)
130
+
131
+ mapped_test_component_cls = mapper.get_mapped_class('TestComponent')
132
+ test_component3 = mapped_test_component_cls(name='test_component 3',
133
+ file_value_2=file_info)
134
+
135
+
136
+
100
137
 
101
138
  if __name__ == '__main__':
102
139
  new_resource = test_create_resource()
103
140
  test_create_resource_from_string()
104
141
  test_add_resource_to_component(new_resource)
105
- test_set_file()
142
+ mapper = test_set_file()
143
+ test_add_resource_in_directory(mapper)
144
+ test_add_resource_file()
106
145
  data_model.save()
107
146
 
108
147
  data_model.cleanup()
@@ -1 +0,0 @@
1
- version = '0.5.7'
@@ -1 +0,0 @@
1
- ardgadfb
File without changes
File without changes
File without changes
File without changes
File without changes