PySimultan 0.5.4__tar.gz → 0.5.5__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 (144) hide show
  1. {pysimultan-0.5.4 → pysimultan-0.5.5}/PKG-INFO +1 -1
  2. pysimultan-0.5.5/src/PySimultan2/__about__.py +1 -0
  3. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/files.py +24 -4
  4. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/utils.py +8 -1
  5. pysimultan-0.5.5/tests/test_directory_and_files.py +154 -0
  6. pysimultan-0.5.4/src/PySimultan2/__about__.py +0 -1
  7. pysimultan-0.5.4/tests/test_directory_and_files.py +0 -63
  8. pysimultan-0.5.4/tests/test_empty_file.txt +0 -0
  9. {pysimultan-0.5.4 → pysimultan-0.5.5}/.gitignore +0 -0
  10. {pysimultan-0.5.4 → pysimultan-0.5.5}/LICENSE.txt +0 -0
  11. {pysimultan-0.5.4 → pysimultan-0.5.5}/README.md +0 -0
  12. {pysimultan-0.5.4 → pysimultan-0.5.5}/pyproject.toml +0 -0
  13. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/CHANGELOG.md +0 -0
  14. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/__init__.py +0 -0
  15. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/data_model.py +0 -0
  16. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/default_types.py +0 -0
  17. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/geometry/__init__.py +0 -0
  18. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/geometry/geometry_base.py +0 -0
  19. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/geometry/utils.py +0 -0
  20. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/multi_values.py +0 -0
  21. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/object_mapper.py +0 -0
  22. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  23. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  24. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/BruTile.dll +0 -0
  25. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  26. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  27. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  28. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  29. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  30. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  31. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  32. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  33. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  34. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  35. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Fluent.dll +0 -0
  36. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  37. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  38. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  39. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  40. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  41. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  42. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  43. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  44. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  45. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  46. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  47. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  48. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  49. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  50. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  51. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  52. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
  53. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
  54. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
  55. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
  56. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  57. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  58. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
  59. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
  60. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  61. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  62. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  63. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  64. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  65. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  66. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  67. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  68. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  69. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  70. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/SharpDX.dll +0 -0
  71. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  72. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/Sprache.dll +0 -0
  73. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/System.Collections.Immutable.dll +0 -0
  74. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  75. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  76. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/System.Reflection.Metadata.dll +0 -0
  77. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/System.Reflection.MetadataLoadContext.dll +0 -0
  78. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  79. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/__init__.py +0 -0
  80. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/assimp.dll +0 -0
  81. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/componentmanager.user +0 -0
  82. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  83. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/resources/setup.bat +0 -0
  84. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/simultan_object.py +0 -0
  85. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/taxonomy_maps.py +0 -0
  86. {pysimultan-0.5.4 → pysimultan-0.5.5}/src/PySimultan2/type_setter_lookup.py +0 -0
  87. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/__init__.py +0 -0
  88. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/__init__.py +0 -0
  89. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/create_component.py +0 -0
  90. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  91. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/create_referenced_component.py +0 -0
  92. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/create_taxonomies.py +0 -0
  93. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/__init__.py +0 -0
  94. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/change_references_example.simultan +0 -0
  95. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/empty_project.simultan +0 -0
  96. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  97. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/example1.simultan +0 -0
  98. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/example2.simultan +0 -0
  99. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/example3.simultan +0 -0
  100. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
  101. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
  102. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/list_test.simultan +0 -0
  103. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example3.yml +0 -0
  104. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example4.yml +0 -0
  105. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  106. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  107. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  108. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  109. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  110. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/U5.simultan +0 -0
  111. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/U5_1.simultan +0 -0
  112. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/U5_orig.simultan +0 -0
  113. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/__init__.py +0 -0
  114. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/new_geometry_test.simultan +0 -0
  115. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/new_test_file.txt +0 -0
  116. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/new_test_file2.txt +0 -0
  117. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_file.yml +0 -0
  118. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_file_load.simultan +0 -0
  119. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_file_project.simultan +0 -0
  120. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
  121. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_parameter_reference_project.simultan +0 -0
  122. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/resources/test_set_dictionary.simultan +0 -0
  123. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_calc_static_zone_temperature.py +0 -0
  124. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_calculate_steady_state_temperature.py +0 -0
  125. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_circular_references.py +0 -0
  126. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_create_geometry.py +0 -0
  127. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_files.py +0 -0
  128. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_files_load.py +0 -0
  129. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_load_geometry.py +0 -0
  130. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_load_multi_values.py +0 -0
  131. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_new_dll.py +0 -0
  132. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_new_project_creation.py +0 -0
  133. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_numeric_map.py +0 -0
  134. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_parameter_reference.py +0 -0
  135. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_pythonnet.py +0 -0
  136. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_register_class.py +0 -0
  137. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_register_decorator.py +0 -0
  138. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_set_attr_property.py +0 -0
  139. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_set_dictionary.py +0 -0
  140. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_set_properties.py +0 -0
  141. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_taxonomie_maps.py +0 -0
  142. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_taxonomies.py +0 -0
  143. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/test_ui.py +0 -0
  144. {pysimultan-0.5.4 → pysimultan-0.5.5}/tests/ui_minimal_example.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: PySimultan
3
- Version: 0.5.4
3
+ Version: 0.5.5
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.5.5'
@@ -129,7 +129,7 @@ def create_asset_from_string(filename: str,
129
129
 
130
130
  if target_dir is not None:
131
131
  if isinstance(target_dir, DirectoryInfo):
132
- target_dir = target_dir.current_full_path
132
+ target_dir = target_dir.full_path
133
133
 
134
134
  resource = data_model.add_resource(filepath,
135
135
  target_dir=target_dir)
@@ -324,6 +324,11 @@ class FileInfo(object, metaclass=MetaMock):
324
324
  except Exception as e:
325
325
  return None
326
326
 
327
+ @property
328
+ def directory(self) -> DirectoryInfo:
329
+ return DirectoryInfo(resource_entry=self.resource_entry.Parent,
330
+ data_model=self.data_model)
331
+
327
332
  @property
328
333
  def resource_entry(self) -> Union[ResourceFileEntry, ContainedResourceFileEntry, None]:
329
334
  if self._resource_entry is None:
@@ -505,14 +510,18 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
505
510
 
506
511
  def __init__(self,
507
512
  path: Optional[str] = None,
513
+ helper_file: Optional[FileInfo] = None,
514
+ resource_entry: Optional[ResourceDirectoryEntry] = None,
508
515
  *args,
509
516
  **kwargs):
510
517
 
511
518
  self._resource_entry: Optional[ResourceDirectoryEntry] = None
519
+ self._helper_file: Optional[FileInfo] = None
512
520
  self.data_model: Optional[DataModel] = kwargs.get('data_model', None)
513
521
  self.path: str = path
514
522
 
515
- self.resource_entry = kwargs.get('resource_entry', None)
523
+ self.resource_entry = resource_entry
524
+ self.helper_file = helper_file
516
525
 
517
526
  @property
518
527
  def tags(self) -> List[SimTaxonomyEntry]:
@@ -526,6 +535,17 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
526
535
  def relative_path(self) -> str:
527
536
  return self.resource_entry.CurrentRelativePath
528
537
 
538
+ @property
539
+ def helper_file(self) -> Optional[FileInfo]:
540
+ if self._helper_file is None:
541
+ self._helper_file = self.add_file('__dir_helper_file__')
542
+
543
+ return self._helper_file
544
+
545
+ @helper_file.setter
546
+ def helper_file(self, value):
547
+ self._helper_file = value
548
+
529
549
  @property
530
550
  def resource_entry(self) -> Optional[ResourceDirectoryEntry]:
531
551
  if self._resource_entry is None:
@@ -578,7 +598,7 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
578
598
  (
579
599
  ResourceFileEntry,
580
600
  ContainedResourceFileEntry)
581
- )
601
+ ) and entry.Name != '__dir_helper_file__'
582
602
  ]
583
603
 
584
604
  @property
@@ -610,4 +630,4 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
610
630
  add_tag_to_resource(self.resource_entry, tag)
611
631
 
612
632
  def __repr__(self):
613
- return f'DirectoryInfo(key:{self.key}, hash: {hash(self)}; {self.full_path};)'
633
+ return f'DirectoryInfo(key:{self.key}, hash: {hash(self)}; {self.full_path})'
@@ -770,6 +770,13 @@ def get_resource_entry_value(obj: ResourceEntry,
770
770
  data_model: DataModel = None,
771
771
  object_mapper: PythonMapper = None) -> Union[FileInfo, DirectoryInfo]:
772
772
  if isinstance(obj, (ResourceFileEntry, ContainedResourceFileEntry, LinkedResourceFileEntry)):
773
+
774
+ if obj.Name == '__dir_helper_file__':
775
+ return DirectoryInfo(file_path=obj.Parent.CurrentFullPath,
776
+ resource_entry=obj.Parent,
777
+ helper_file=obj,
778
+ data_model=data_model)
779
+
773
780
  return FileInfo(file_path=obj.File.FullPath,
774
781
  resource_entry=obj,
775
782
  data_model=data_model)
@@ -1203,7 +1210,7 @@ def set_property_to_directory_info(value: DirectoryInfo,
1203
1210
  ref_asset_idx = None
1204
1211
 
1205
1212
  add_asset_to_component(component._wrapped_obj,
1206
- value.resource_entry,
1213
+ value.helper_file.resource_entry,
1207
1214
  '0',
1208
1215
  tag=taxonomy_entry)
1209
1216
 
@@ -0,0 +1,154 @@
1
+ import os
2
+ from PySimultan2.src.PySimultan2 import DataModel, TaxonomyMap, Content, PythonMapper
3
+ from PySimultan2.src.PySimultan2.files import FileInfo, DirectoryInfo
4
+
5
+
6
+ project_dir = os.environ.get('PROJECT_DIR', '/simultan_projects')
7
+ if not os.path.exists(project_dir):
8
+ os.makedirs(project_dir)
9
+
10
+
11
+ def test_files_and_directory_creation():
12
+ new_data_model = DataModel.create_new_project(project_path=os.path.join(project_dir, 'test_dir_files.simultan'),
13
+ user_name='admin',
14
+ password='admin')
15
+
16
+ print(new_data_model.file_directories)
17
+
18
+
19
+ new_directory_info = DirectoryInfo(path='directory_info_dir',
20
+ data_model=new_data_model)
21
+
22
+ print(new_data_model.file_directories)
23
+
24
+ print(new_directory_info.resource_entry)
25
+ print(new_directory_info.parent)
26
+
27
+ new_file1 = new_directory_info.add_file('test_add_file.txt', 'This is a test file')
28
+ new_file2 = new_directory_info.add_file('test_add_file2.txt')
29
+
30
+ sub_directory_info = new_directory_info.add_sub_directory('sub_dir')
31
+ print(sub_directory_info.parent)
32
+
33
+ print(new_directory_info.sub_directories)
34
+
35
+
36
+ new_directory = new_data_model.create_resource_directory('test_dir')
37
+ new_directory2 = new_data_model.create_resource_directory('test_dir2')
38
+ new_directory4 = new_data_model.create_resource_directory('test_dir3')
39
+
40
+ new_data_model.add_empty_resource(filename=os.path.join(new_directory.CurrentFullPath, 'test_empty_file.txt'))
41
+
42
+ new_data_model.add_empty_resource(filename='test_empty_file2.txt',
43
+ target_dir=new_directory)
44
+
45
+ new_file_info0 = FileInfo.from_string(filename='test_file.txt',
46
+ content='This is a test file',
47
+ data_model=new_data_model)
48
+
49
+ new_file_info = FileInfo.from_string(filename='test_file.txt',
50
+ content='This is a test file',
51
+ target_dir=new_directory,
52
+ data_model=new_data_model)
53
+
54
+ new_file_info2 = FileInfo.from_string(filename='test_file2.txt',
55
+ content='This is a test file 2',
56
+ target_dir=new_directory2.current_full_path,
57
+ data_model=new_data_model)
58
+
59
+ # create just a file in the directory
60
+ with open(os.path.join(new_directory2.current_full_path, 'not_contained_test_file3.txt'), 'w') as f:
61
+ f.write('This is a test file 3')
62
+
63
+
64
+ new_data_model.save()
65
+ new_data_model.cleanup()
66
+
67
+
68
+ def create_mapper():
69
+ mapper = PythonMapper()
70
+
71
+ class TestComponent(object):
72
+ def __init__(self, *args, **kwargs):
73
+ self.file = kwargs.get('file')
74
+ self.directory = kwargs.get('directory')
75
+ self.param_1 = kwargs.get('param_1')
76
+ self.param_2 = kwargs.get('param_2')
77
+
78
+ content0 = Content(text_or_key='file', # text or key of the content/parameter/property
79
+ property_name='file', # name of the generated property
80
+ type='file', # type of the content/parameter/property
81
+ unit=None, # unit of the content/parameter/property
82
+ documentation='file_value to test')
83
+
84
+ content1 = Content(text_or_key='directory', # text or key of the content/parameter/property
85
+ property_name='directory', # name of the generated property
86
+ type='file', # type of the content/parameter/property
87
+ unit=None, # unit of the content/parameter/property
88
+ documentation='file_value_2 to test')
89
+
90
+ content2 = Content(text_or_key='param_1', # text or key of the content/parameter/property
91
+ property_name='param_1', # name of the generated property
92
+ type=None, # type of the content/parameter/property
93
+ unit=None, # unit of the content/parameter/property
94
+ documentation='param_1 to test')
95
+
96
+ content3 = Content(text_or_key='param_2', # text or key of the content/parameter/property
97
+ property_name='param_2', # name of the generated property
98
+ type=None, # type of the content/parameter/property
99
+ unit=None, # unit of the content/parameter/property
100
+ documentation='param_2 to test')
101
+
102
+ test_component_map = TaxonomyMap(taxonomy_name='PySimultan',
103
+ taxonomy_key='Test',
104
+ taxonomy_entry_name='test_component',
105
+ taxonomy_entry_key='test_component',
106
+ content=[content0, content1, content2, content3],
107
+ )
108
+
109
+ mapper.register(test_component_map.taxonomy_entry_key, TestComponent, taxonomy_map=test_component_map)
110
+
111
+ return mapper
112
+
113
+
114
+ def test_component_with_directory():
115
+
116
+ new_data_model = DataModel.create_new_project(project_path=os.path.join(project_dir, 'test_dir_component.simultan'),
117
+ user_name='admin',
118
+ password='admin')
119
+
120
+ mapper = create_mapper()
121
+ mapped_test_component_cls = mapper.get_mapped_class('test_component')
122
+
123
+ new_component = mapped_test_component_cls(file=FileInfo.from_string(filename='test_file.txt',
124
+ content='This is a test file',
125
+ data_model=new_data_model),
126
+ directory=DirectoryInfo(path='test_dir',
127
+ data_model=new_data_model),
128
+ param_1='param_1_value',
129
+ param_2=2)
130
+
131
+ print(new_component.directory)
132
+
133
+ new_data_model.save()
134
+ new_data_model.cleanup()
135
+ mapper.clear()
136
+
137
+
138
+ def test_load_component_with_directory():
139
+ new_data_model = DataModel(project_path=os.path.join(project_dir, 'test_dir_component.simultan'))
140
+
141
+ mapper = create_mapper()
142
+ typed_data = new_data_model.get_typed_data(mapper=mapper)
143
+ mapped_test_component_cls = mapper.get_mapped_class('test_component')
144
+
145
+ assert isinstance(mapped_test_component_cls.cls_instances[0].directory, DirectoryInfo)
146
+
147
+ new_data_model.cleanup()
148
+ mapper.clear()
149
+
150
+
151
+ if __name__ == '__main__':
152
+ # test_files_and_directory_creation()
153
+ test_component_with_directory()
154
+ test_load_component_with_directory()
@@ -1 +0,0 @@
1
- version = '0.5.4'
@@ -1,63 +0,0 @@
1
- import os
2
- from PySimultan2.src.PySimultan2 import DataModel
3
- from PySimultan2.src.PySimultan2.files import FileInfo, DirectoryInfo
4
-
5
-
6
- project_dir = os.environ.get('PROJECT_DIR', '/simultan_projects')
7
- if not os.path.exists(project_dir):
8
- os.makedirs(project_dir)
9
-
10
- new_data_model = DataModel.create_new_project(project_path=os.path.join(project_dir, 'test_dir_files.simultan'),
11
- user_name='admin',
12
- password='admin')
13
-
14
- print(new_data_model.file_directories)
15
-
16
-
17
- new_directory_info = DirectoryInfo(path='directory_info_dir',
18
- data_model=new_data_model)
19
-
20
- print(new_data_model.file_directories)
21
-
22
- print(new_directory_info.resource_entry)
23
- print(new_directory_info.parent)
24
-
25
- new_file1 = new_directory_info.add_file('test_add_file.txt', 'This is a test file')
26
- new_file2 = new_directory_info.add_file('test_add_file2.txt')
27
-
28
- sub_directory_info = new_directory_info.add_sub_directory('sub_dir')
29
- print(sub_directory_info.parent)
30
-
31
- print(new_directory_info.sub_directories)
32
-
33
-
34
- new_directory = new_data_model.create_resource_directory('test_dir')
35
- new_directory2 = new_data_model.create_resource_directory('test_dir2')
36
- new_directory4 = new_data_model.create_resource_directory('test_dir3')
37
-
38
- new_data_model.add_empty_resource(filename=os.path.join(new_directory.CurrentFullPath, 'test_empty_file.txt'))
39
-
40
- new_data_model.add_empty_resource(filename='test_empty_file2.txt',
41
- target_dir=new_directory)
42
-
43
- new_file_info0 = FileInfo.from_string(filename='test_file.txt',
44
- content='This is a test file',
45
- data_model=new_data_model)
46
-
47
- new_file_info = FileInfo.from_string(filename='test_file.txt',
48
- content='This is a test file',
49
- target_dir=new_directory,
50
- data_model=new_data_model)
51
-
52
- new_file_info2 = FileInfo.from_string(filename='test_file2.txt',
53
- content='This is a test file 2',
54
- target_dir=new_directory2.current_full_path,
55
- data_model=new_data_model)
56
-
57
- # create just a file in the directory
58
- with open(os.path.join(new_directory2.current_full_path, 'not_contained_test_file3.txt'), 'w') as f:
59
- f.write('This is a test file 3')
60
-
61
-
62
- new_data_model.save()
63
- new_data_model.cleanup()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes