PySimultan 0.6.0.7__tar.gz → 0.6.0.8__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 (219) hide show
  1. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/PKG-INFO +1 -1
  2. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/CHANGELOG.md +3 -0
  3. pysimultan-0.6.0.8/src/PySimultan2/__about__.py +1 -0
  4. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/data_model.py +35 -1
  5. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/files.py +107 -11
  6. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/utils.py +4 -2
  7. pysimultan-0.6.0.7/src/PySimultan2/__about__.py +0 -1
  8. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/.gitignore +0 -0
  9. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/LICENSE.txt +0 -0
  10. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/README.md +0 -0
  11. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/pyproject.toml +0 -0
  12. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/__init__.py +0 -0
  13. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/default_types.py +0 -0
  14. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/geometry/__init__.py +0 -0
  15. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/geometry/geometry_base.py +0 -0
  16. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/geometry/utils.py +0 -0
  17. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/multi_values.py +0 -0
  18. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/object_mapper.py +0 -0
  19. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/AssimpNet.dll +0 -0
  20. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/AvalonDock.dll +0 -0
  21. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/BruTile.dll +0 -0
  22. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ClosedXML.dll +0 -0
  23. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
  24. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
  25. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
  26. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
  27. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ControlzEx.dll +0 -0
  28. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
  29. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
  30. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
  31. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
  32. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Fluent.dll +0 -0
  33. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
  34. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
  35. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
  36. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
  37. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
  38. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
  39. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
  40. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  41. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
  42. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
  43. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
  44. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
  45. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
  46. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
  47. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
  48. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
  49. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Python.Runtime.dll +0 -0
  50. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
  51. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
  52. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
  53. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
  54. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
  55. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
  56. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
  57. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
  58. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
  59. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
  60. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
  61. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
  62. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/SharpDX.dll +0 -0
  63. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
  64. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/Sprache.dll +0 -0
  65. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/System.Collections.Immutable.dll +0 -0
  66. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
  67. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
  68. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/System.Reflection.Metadata.dll +0 -0
  69. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/System.Reflection.MetadataLoadContext.dll +0 -0
  70. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
  71. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/__init__.py +0 -0
  72. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/assimp.dll +0 -0
  73. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/componentmanager.user +0 -0
  74. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/defaultsettings.xml +0 -0
  75. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/resources/setup.bat +0 -0
  76. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/simultan_object.py +0 -0
  77. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/taxonomy_maps.py +0 -0
  78. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/type_setter_lookup.py +0 -0
  79. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/Assets/__init__.pyi +0 -0
  80. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/Components/__init__.pyi +0 -0
  81. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/FlowNetworks/__init__.pyi +0 -0
  82. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/Geometry/__init__.pyi +0 -0
  83. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/MultiValues/__init__.pyi +0 -0
  84. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/SimMath/__init__.pyi +0 -0
  85. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/SimNetworks/__init__.pyi +0 -0
  86. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/SitePlanner/__init__.pyi +0 -0
  87. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/Taxonomy/__init__.pyi +0 -0
  88. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/Users/__init__.pyi +0 -0
  89. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/ValueMappings/__init__.pyi +0 -0
  90. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Data/__init__.pyi +0 -0
  91. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/DataMapping/__init__.pyi +0 -0
  92. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Excel/__init__.pyi +0 -0
  93. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Exceptions/__init__.pyi +0 -0
  94. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Exchange/SimNetworkConnectors/__init__.pyi +0 -0
  95. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Exchange/__init__.pyi +0 -0
  96. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Projects/ManagedFiles/__init__.pyi +0 -0
  97. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Projects/__init__.pyi +0 -0
  98. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/CODXF/__init__.pyi +0 -0
  99. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/CSV/__init__.pyi +0 -0
  100. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/DXF/__init__.pyi +0 -0
  101. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/Geometry/__init__.pyi +0 -0
  102. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/JSON/__init__.pyi +0 -0
  103. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/METADXF/__init__.pyi +0 -0
  104. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/PADXF/__init__.pyi +0 -0
  105. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/PPATH/__init__.pyi +0 -0
  106. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/Projects/__init__.pyi +0 -0
  107. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/SIMLINKS/__init__.pyi +0 -0
  108. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/SPDXF/__init__.pyi +0 -0
  109. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/SimGeo/__init__.pyi +0 -0
  110. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/TXDXF/__init__.pyi +0 -0
  111. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/XMI/__init__.pyi +0 -0
  112. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Serializer/__init__.pyi +0 -0
  113. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/BackgroundWork/__init__.pyi +0 -0
  114. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/Collections/__init__.pyi +0 -0
  115. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/ElevationProvider/__init__.pyi +0 -0
  116. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/Files/__init__.pyi +0 -0
  117. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/Randomize/__init__.pyi +0 -0
  118. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/Streams/__init__.pyi +0 -0
  119. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/UndoRedo/__init__.pyi +0 -0
  120. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/SIMULTAN/Utils/__init__.pyi +0 -0
  121. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Buffers/Binary/__init__.pyi +0 -0
  122. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Buffers/Text/__init__.pyi +0 -0
  123. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Buffers/__init__.pyi +0 -0
  124. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/CodeDom/Compiler/__init__.pyi +0 -0
  125. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Collections/Concurrent/__init__.pyi +0 -0
  126. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Collections/Generic/__init__.pyi +0 -0
  127. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Collections/ObjectModel/__init__.pyi +0 -0
  128. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Collections/Specialized/__init__.pyi +0 -0
  129. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Collections/__init__.pyi +0 -0
  130. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/ComponentModel/__init__.pyi +0 -0
  131. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Configuration/Assemblies/__init__.pyi +0 -0
  132. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Diagnostics/CodeAnalysis/__init__.pyi +0 -0
  133. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Diagnostics/Contracts/__init__.pyi +0 -0
  134. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Diagnostics/SymbolStore/__init__.pyi +0 -0
  135. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Diagnostics/Tracing/__init__.pyi +0 -0
  136. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Diagnostics/__init__.pyi +0 -0
  137. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Globalization/__init__.pyi +0 -0
  138. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/IO/Enumeration/__init__.pyi +0 -0
  139. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/IO/__init__.pyi +0 -0
  140. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Linq/Expressions/__init__.pyi +0 -0
  141. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Net/__init__.pyi +0 -0
  142. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Numerics/__init__.pyi +0 -0
  143. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Reflection/Emit/__init__.pyi +0 -0
  144. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Reflection/Metadata/__init__.pyi +0 -0
  145. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Reflection/__init__.pyi +0 -0
  146. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Resources/__init__.pyi +0 -0
  147. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/CompilerServices/__init__.pyi +0 -0
  148. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/ConstrainedExecution/__init__.pyi +0 -0
  149. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/ExceptionServices/__init__.pyi +0 -0
  150. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/InteropServices/ComTypes/__init__.pyi +0 -0
  151. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/InteropServices/Marshalling/__init__.pyi +0 -0
  152. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/InteropServices/ObjectiveC/__init__.pyi +0 -0
  153. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/InteropServices/__init__.pyi +0 -0
  154. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Intrinsics/Arm/__init__.pyi +0 -0
  155. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Intrinsics/Wasm/__init__.pyi +0 -0
  156. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Intrinsics/X86/__init__.pyi +0 -0
  157. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Intrinsics/__init__.pyi +0 -0
  158. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Loader/__init__.pyi +0 -0
  159. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Remoting/__init__.pyi +0 -0
  160. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Serialization/__init__.pyi +0 -0
  161. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/Versioning/__init__.pyi +0 -0
  162. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Runtime/__init__.pyi +0 -0
  163. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Security/Cryptography/__init__.pyi +0 -0
  164. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Security/Permissions/__init__.pyi +0 -0
  165. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Security/Principal/__init__.pyi +0 -0
  166. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Security/__init__.pyi +0 -0
  167. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Text/Unicode/__init__.pyi +0 -0
  168. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Text/__init__.pyi +0 -0
  169. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Threading/Tasks/Sources/__init__.pyi +0 -0
  170. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Threading/Tasks/__init__.pyi +0 -0
  171. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Threading/__init__.pyi +0 -0
  172. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Xml/Schema/__init__.pyi +0 -0
  173. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Xml/Serialization/__init__.pyi +0 -0
  174. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Xml/XPath/__init__.pyi +0 -0
  175. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/Xml/__init__.pyi +0 -0
  176. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/src/PySimultan2/typings/System/__init__.pyi +0 -0
  177. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/RoomAcoustics_V02.py +0 -0
  178. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/__init__.py +0 -0
  179. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/__init__.py +0 -0
  180. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/create_component.py +0 -0
  181. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
  182. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/create_referenced_component.py +0 -0
  183. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/create_taxonomies.py +0 -0
  184. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/__init__.py +0 -0
  185. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
  186. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example3.yml +0 -0
  187. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example4.yml +0 -0
  188. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
  189. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
  190. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example_extend.yml +0 -0
  191. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
  192. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/readme_examples/resources/template_reference_list.yml +0 -0
  193. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/resources/__init__.py +0 -0
  194. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/resources/new_test_file.txt +0 -0
  195. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/resources/new_test_file2.txt +0 -0
  196. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_calc_static_zone_temperature.py +0 -0
  197. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_calculate_steady_state_temperature.py +0 -0
  198. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_circular_references.py +0 -0
  199. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_create_geometry.py +0 -0
  200. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_default_component.py +0 -0
  201. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_directory_and_files.py +0 -0
  202. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_files.py +0 -0
  203. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_files_load.py +0 -0
  204. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_load_geometry.py +0 -0
  205. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_load_multi_values.py +0 -0
  206. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_new_dll.py +0 -0
  207. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_new_project_creation.py +0 -0
  208. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_numeric_map.py +0 -0
  209. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_parameter_reference.py +0 -0
  210. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_pythonnet.py +0 -0
  211. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_register_class.py +0 -0
  212. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_register_decorator.py +0 -0
  213. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_set_attr_property.py +0 -0
  214. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_set_dictionary.py +0 -0
  215. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_set_properties.py +0 -0
  216. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_taxonomie_maps.py +0 -0
  217. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_taxonomies.py +0 -0
  218. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/test_ui.py +0 -0
  219. {pysimultan-0.6.0.7 → pysimultan-0.6.0.8}/tests/ui_minimal_example.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySimultan
3
- Version: 0.6.0.7
3
+ Version: 0.6.0.8
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
@@ -1,3 +1,6 @@
1
+ Version 0.6.0.7 (16.02.2024)
2
+ - Fixed Asset creation and deletion bugs
3
+
1
4
  Version 0.6.0.3 (23.01.2024)
2
5
  - Added sub_classes and super_classes to SimultanObject
3
6
 
@@ -0,0 +1 @@
1
+ version = '0.6.0.8'
@@ -655,6 +655,18 @@ class DataModel:
655
655
  logger.error(f'Error while adding resource {filename} to project {self.project_path}: {e}')
656
656
  raise e
657
657
 
658
+ def get_resource(self, key: Union[str, int, SystemFileInfo, DirectoryInfo]):
659
+
660
+ if isinstance(key, (int, SystemFileInfo, DirectoryInfo)):
661
+ return self.project_data_manager.AssetManager.GetResource(key)
662
+ elif isinstance(key, str):
663
+ if os.path.isfile(key):
664
+ return self.project_data_manager.AssetManager.GetResource(SystemFileInfo(key))
665
+ elif os.path.isdir(key):
666
+ return self.project_data_manager.AssetManager.GetResource(DirectoryInfo(key))
667
+ else:
668
+ return None
669
+
658
670
  def delete_resource(self, resource: Union[ResourceEntry, SystemFileInfo, ContainedResourceFileEntry]):
659
671
  """
660
672
  Delete a resource from the project and the project folder
@@ -678,9 +690,31 @@ class DataModel:
678
690
  parent_directory: DirectoryInfo=None,
679
691
  collision_name_format: str = '{0} ({1})') -> ResourceEntry:
680
692
 
693
+ # check if directory already exists
681
694
  if parent_directory is None:
682
- new_directory = self.project.CreateResourceDirIn(name, None, collision_name_format)
695
+ full_path = os.path.join(self.project.ProjectUnpackFolder.FullPath, name)
683
696
  else:
697
+ full_path = os.path.join(parent_directory.FullPath, name)
698
+
699
+ def get_existing(full_file_path: str):
700
+ new_directory = self.project_data_manager.AssetManager.GetResource(DirectoryInfo(full_path))
701
+ if new_directory is None:
702
+ res = self.project_data_manager.AssetManager.CreateResourceDirIn(os.path.basename(full_path),
703
+ DirectoryInfo(
704
+ os.path.dirname(
705
+ full_path)),
706
+ '0')
707
+
708
+ new_directory = self.project_data_manager.AssetManager.GetResource(res.Item1)
709
+ return new_directory
710
+
711
+ if os.path.exists(full_path):
712
+ new_directory = get_existing(full_path)
713
+ return new_directory
714
+
715
+ if parent_directory is None:
716
+ new_directory = self.project.CreateResourceDirIn(name, None, collision_name_format)
717
+ if parent_directory is not None:
684
718
  new_directory = self.project.CreateResourceDirIn(name, parent_directory, collision_name_format)
685
719
 
686
720
  return new_directory
@@ -3,10 +3,12 @@ This module contains classes and functions to handle files and directories.
3
3
  """
4
4
  from __future__ import annotations
5
5
  from datetime import datetime
6
+ import glob
6
7
 
7
8
  import contextlib
8
9
  import os
9
10
  import io
11
+ import re
10
12
  import shutil
11
13
  import tempfile
12
14
  from typing import List, Union, Optional
@@ -124,6 +126,13 @@ def create_asset_from_string(filename: str,
124
126
  :param tag: Tag to be added to the asset.
125
127
  :return: ResourceFileEntry
126
128
  """
129
+
130
+ # check if file already exists
131
+ if target_dir is not None:
132
+ if isinstance(target_dir, DirectoryInfo):
133
+ target_dir = target_dir.full_path
134
+
135
+
127
136
  with tempdir() as dirpath:
128
137
  filepath = os.path.join(dirpath, filename)
129
138
  with open(filepath, 'w') as f:
@@ -290,11 +299,30 @@ class FileInfo(object, metaclass=MetaMock):
290
299
  """
291
300
 
292
301
  data_model = kwargs.get('data_model', config.get_default_data_model())
293
- resource = create_asset_from_string(filename,
294
- content,
295
- target_dir=target_dir,
296
- *args,
297
- **kwargs)
302
+
303
+ if target_dir is not None:
304
+ full_path = os.path.join(target_dir.full_path, filename)
305
+ else:
306
+ full_path = os.path.join(data_model.project.ProjectUnpackFolder, filename)
307
+
308
+
309
+
310
+
311
+ if os.path.isfile(full_path):
312
+ # check if resource entry exists
313
+ resource = data_model.get_resource(full_path)
314
+ if resource is None:
315
+ resource = create_asset_from_string(filename,
316
+ content,
317
+ target_dir=target_dir,
318
+ *args,
319
+ **kwargs)
320
+ else:
321
+ resource = create_asset_from_string(filename,
322
+ content,
323
+ target_dir=target_dir,
324
+ *args,
325
+ **kwargs)
298
326
 
299
327
  file_info = cls(resource_entry=resource,
300
328
  data_model=data_model)
@@ -332,6 +360,7 @@ class FileInfo(object, metaclass=MetaMock):
332
360
  :param kwargs:
333
361
  """
334
362
  # do custom stuff here
363
+ self.deleted = False
335
364
  self._resource_entry: Union[ResourceFileEntry, ContainedResourceFileEntry, None] = None
336
365
 
337
366
  if file_path is not None:
@@ -365,7 +394,7 @@ class FileInfo(object, metaclass=MetaMock):
365
394
 
366
395
  @property
367
396
  def resource_entry(self) -> Union[ResourceFileEntry, ContainedResourceFileEntry, None]:
368
- if self._resource_entry is None:
397
+ if self._resource_entry is None and not self.deleted:
369
398
  if self.data_model is None:
370
399
  logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
371
400
  self.data_model = config.get_default_data_model()
@@ -453,7 +482,10 @@ class FileInfo(object, metaclass=MetaMock):
453
482
  self.file_obj.close()
454
483
 
455
484
  def __repr__(self):
456
- return f'FileInfo({self.file_path})'
485
+ if not self.deleted:
486
+ return f'FileInfo({self.file_path})'
487
+ else:
488
+ return f'FileInfo({self.file_path}) (deleted)'
457
489
 
458
490
  def move(self, new_directory_path: Union[str, DirectoryInfo]) -> FileInfo:
459
491
 
@@ -533,7 +565,11 @@ class FileInfo(object, metaclass=MetaMock):
533
565
  del self._cls_instances[self.resource_entry.Key]
534
566
  self.data_model.delete_resource(self.resource_entry)
535
567
 
536
- os.remove(self.file_path)
568
+ try:
569
+ os.remove(self.file_path)
570
+ except FileNotFoundError:
571
+ pass
572
+ self.deleted = True
537
573
 
538
574
  def to_json(self) -> dict:
539
575
 
@@ -613,6 +649,8 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
613
649
  *args,
614
650
  **kwargs):
615
651
 
652
+ self.deleted = False
653
+
616
654
  self._resource_entry: Optional[ResourceDirectoryEntry] = None
617
655
  self._helper_file: Optional[FileInfo] = None
618
656
  self.data_model: Optional[DataModel] = kwargs.get('data_model', None)
@@ -635,7 +673,7 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
635
673
 
636
674
  @property
637
675
  def helper_file(self) -> Optional[FileInfo]:
638
- if self._helper_file is None or not isinstance(self._helper_file, FileInfo):
676
+ if (self._helper_file is None or not isinstance(self._helper_file, FileInfo)) and not self.deleted:
639
677
  self._helper_file = self.add_file('__dir_helper_file__')
640
678
 
641
679
  return self._helper_file
@@ -646,7 +684,7 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
646
684
 
647
685
  @property
648
686
  def resource_entry(self) -> Optional[ResourceDirectoryEntry]:
649
- if self._resource_entry is None:
687
+ if self._resource_entry is None and not self.deleted:
650
688
  if self.data_model is None:
651
689
  logger.warning(
652
690
  f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
@@ -795,5 +833,63 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
795
833
  def add_tag(self, tag: SimTaxonomyEntry) -> None:
796
834
  add_tag_to_resource(self.resource_entry, tag)
797
835
 
836
+ def delete(self):
837
+
838
+ for file in self.files:
839
+ file.delete()
840
+
841
+ # delete helper file
842
+ if self.helper_file is not None:
843
+ self.helper_file.delete()
844
+
845
+ if self.resource_entry is not None:
846
+ if self.resource_entry.Key in self._cls_instances:
847
+ del self._cls_instances[self.resource_entry.Key]
848
+ self.data_model.delete_resource(self.resource_entry)
849
+
850
+ shutil.rmtree(self.full_path)
851
+ self.deleted = True
852
+
853
+ def delete_files(self,
854
+ pattern: Optional[str] = None,
855
+ recursive: bool = False) -> None:
856
+ """
857
+ Delete files by pattern.
858
+ :param pattern: Pattern to match files. Default is None. if None, all files are deleted.
859
+ :param recursive: If True, delete files recursively.
860
+ :return:
861
+ """
862
+
863
+ if pattern:
864
+ matching = glob.glob(self.full_path + f'/{pattern}', recursive=recursive)
865
+
866
+ for file in self.files:
867
+ if pattern is None or file.file_path in matching:
868
+ logger.debug(f'Deleting file: {file.filename}')
869
+ file.delete()
870
+
871
+ if recursive:
872
+ for sub_dir in self.sub_directories:
873
+ sub_dir.delete_files(pattern=pattern, recursive=recursive)
874
+
875
+ def delete_subdirectories(self,
876
+ pattern: Optional[str] = None,
877
+ recursive: bool = False) -> None:
878
+
879
+ """
880
+ Delete subdirectories by pattern.
881
+ :param pattern: Regex pattern to match subdirectories. Default is None. If None, all subdirectories are deleted.
882
+ :param recursive: If True, delete subdirectories recursively.
883
+ :return:
884
+ """
885
+
886
+ for sub_dir in self.sub_directories:
887
+ if pattern is None or re.match(pattern, sub_dir.relative_path):
888
+ logger.debug(f'Deleting subdirectory: {sub_dir.relative_path}')
889
+ sub_dir.delete()
890
+
798
891
  def __repr__(self):
799
- return f'DirectoryInfo(key:{self.key}, hash: {hash(self)}; {self.full_path})'
892
+ if not self.deleted:
893
+ return f'DirectoryInfo(key:{self.key}, hash: {hash(self)}; {self.full_path})'
894
+ else:
895
+ return f'(Deleted) DirectoryInfo(key:{self.key}, hash: {hash(self)}; {self.full_path}) (deleted)'
@@ -181,7 +181,7 @@ def get_or_create_taxonomy_entry(name: str,
181
181
  if key in taxonomy_entries.keys():
182
182
  return taxonomy_entries[key]
183
183
  if create:
184
- new_sim_taxonomy_entry = SimTaxonomyEntry(key, name, description)
184
+ new_sim_taxonomy_entry = SimTaxonomyEntry(key, name, description, None)
185
185
  if sim_taxonomy is not None:
186
186
  sim_taxonomy.Entries.Add(new_sim_taxonomy_entry)
187
187
  return new_sim_taxonomy_entry
@@ -1132,7 +1132,9 @@ def set_property_to_sim_component(value: Union[SimComponent, SimultanObject, lis
1132
1132
  else:
1133
1133
  component._wrapped_obj.Components.RemoveItem(component_idx)
1134
1134
  if ref_component_idx is not None:
1135
- if wrapped_obj.Id.Equals(component._wrapped_obj.ReferencedComponents.Items[ref_component_idx].Target.Id):
1135
+ if component._wrapped_obj.ReferencedComponents.Items[ref_component_idx].Target is None:
1136
+ component._wrapped_obj.ReferencedComponents.RemoveItem(ref_component_idx)
1137
+ elif wrapped_obj.Id.Equals(component._wrapped_obj.ReferencedComponents.Items[ref_component_idx].Target.Id):
1136
1138
  return
1137
1139
  else:
1138
1140
  component._wrapped_obj.ReferencedComponents.RemoveItem(ref_component_idx)
@@ -1 +0,0 @@
1
- version = '0.6.0.7'
File without changes
File without changes
File without changes