PySimultan 0.5.4__tar.gz → 0.5.5__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
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