PySimultan 0.5.4__py3-none-any.whl → 0.5.6__py3-none-any.whl

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.
PySimultan2/__about__.py CHANGED
@@ -1 +1 @@
1
- version = '0.5.4'
1
+ version = '0.5.6'
PySimultan2/files.py CHANGED
@@ -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})'
PySimultan2/utils.py CHANGED
@@ -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,173 @@
1
+ Metadata-Version: 2.3
2
+ Name: PySimultan
3
+ Version: 0.5.6
4
+ Project-URL: Documentation, https://github.com/Bühler Maximilian/PySimultan2#readme
5
+ Project-URL: Issues, https://github.com/Bühler Maximilian/PySimultan2/issues
6
+ Project-URL: Source, https://github.com/Bühler Maximilian/PySimultan2
7
+ Author-email: Bühler Maximilian <maximilian.buehler@tuwien.ac.at>
8
+ License: MIT
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Programming Language :: Python
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: Implementation :: CPython
17
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
18
+ Requires-Python: >=3.8
19
+ Requires-Dist: colorlog
20
+ Requires-Dist: numpy
21
+ Requires-Dist: pandas
22
+ Requires-Dist: pyarrow
23
+ Requires-Dist: pythonnet
24
+ Requires-Dist: ruamel-yaml
25
+ Requires-Dist: six
26
+ Requires-Dist: tqdm
27
+ Description-Content-Type: text/markdown
28
+
29
+ # pysimultan
30
+
31
+ [![PyPI - Version](https://img.shields.io/pypi/v/pysimultan.svg)](https://pypi.org/project/pysimultan)
32
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pysimultan.svg)](https://pypi.org/project/pysimultan)
33
+
34
+ PySimultan is a Python library designed to facilitate the creation, manipulation, and management of SIMULTAN data models, taxonomies, and templates. It provides a structured way to define and interact with complex data structures, making it particularly useful for applications that require detailed data organization and templating.
35
+ Key Features:
36
+ - Data Models: Create and manage data SIMULTAN models with ease.
37
+ - Taxonomies: Define and use taxonomies to categorize and structure data.
38
+ - File and Directory Management: Handle files and directories within the data models.
39
+ - Mapping of Python objects to SIMULTAN data models: Map Python objects to SIMULTAN data models for easy data creation and manipulation.
40
+ - Simple integration in existing Python projects: Easily integrate PySimultan into existing Python projects to enhance data management capabilities.
41
+
42
+
43
+ -----
44
+
45
+ ## Table of Contents
46
+
47
+ - [Installation](#installation)
48
+ - [License](#license)
49
+ - [Usage](#usage)
50
+ - [Change Log](#change-log)
51
+
52
+ ## Installation
53
+
54
+ ```console
55
+ pip install PySimultan
56
+ ```
57
+
58
+ ## License
59
+
60
+ `PySimultan` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
61
+
62
+
63
+ # Usage
64
+
65
+ ### Data Models
66
+
67
+ Create a new data model:
68
+ ```python
69
+ from PySimultan2 import DataModel
70
+
71
+ # Create a new data model
72
+ data_model = DataModel.create_new_project(project_path='my_project.simultan',
73
+ user_name='admin',
74
+ password='admin')
75
+ ```
76
+
77
+ Load an existing data model:
78
+ ```python
79
+ from PySimultan2 import DataModel
80
+
81
+ # Load an existing data model
82
+ data_model = DataModel(project_path='my_project.simultan',
83
+ user_name='admin',
84
+ password='admin')
85
+ ```
86
+
87
+ save the data model:
88
+ ```python
89
+ data_model.save()
90
+ ```
91
+
92
+ close and cleanup the data model:
93
+ ```python
94
+ data_model.cleanup()
95
+ ```
96
+
97
+
98
+ ### Mapping python to SIMULTAN
99
+
100
+ #### Create a mapped class:
101
+ ```python
102
+ from PySimultan2 import DataModel, TaxonomyMap, Content, PythonMapper
103
+
104
+ mapper = PythonMapper()
105
+
106
+ class TestComponent(object):
107
+ def __init__(self, *args, **kwargs):
108
+ self.param_1 = kwargs.get('param_1')
109
+ self.param_2 = kwargs.get('param_2')
110
+
111
+ content0 = Content(text_or_key='param_1', # text or key of the content/parameter/property
112
+ property_name='param_1', # name of the generated property
113
+ type=None, # type of the content/parameter/property
114
+ unit=None, # unit of the content/parameter/property
115
+ documentation='param_1 to test')
116
+
117
+ content1 = Content(text_or_key='param_2', # text or key of the content/parameter/property
118
+ property_name='param_2', # name of the generated property
119
+ type=None, # type of the content/parameter/property
120
+ unit=None, # unit of the content/parameter/property
121
+ documentation='param_2 to test')
122
+
123
+ test_component_map = TaxonomyMap(taxonomy_name='PySimultan',
124
+ taxonomy_key='Test',
125
+ taxonomy_entry_name='test_component',
126
+ taxonomy_entry_key='test_component',
127
+ content=[content0, content1],
128
+ )
129
+
130
+ mapper.register(test_component_map.taxonomy_entry_key, TestComponent, taxonomy_map=test_component_map)
131
+ ```
132
+
133
+ #### Create an instance of the mapped class:
134
+ ```python
135
+ # get the mapped class
136
+ mapped_test_component_cls = mapper.get_mapped_class('test_component')
137
+
138
+ # create an instance of the mapped class
139
+ mapped_test_component = mapped_test_component_cls(param_1='value1',
140
+ param_2='value2',
141
+ data_model=data_model)
142
+
143
+ # save the data_model
144
+ data_model.save()
145
+
146
+ # cleanup the data_model
147
+ data_model.cleanup()
148
+ ```
149
+
150
+ #### Load an instance of the mapped class:
151
+ ```python
152
+ # load the data_model
153
+ data_model = DataModel(project_path='my_project.simultan',
154
+ user_name='admin',
155
+ password='admin')
156
+
157
+ # get the mapped class
158
+ mapped_test_component_cls = mapper.get_mapped_class('test_component')
159
+
160
+ # get the instances of the mapped class
161
+ instances = mapped_test_component_cls.cls_instaces
162
+
163
+ print(instances[0].param_1)
164
+ ```
165
+
166
+
167
+ # Change Log
168
+
169
+ ## [0.4.20] - 2024-07-01
170
+ - Fixed Bug in nested dictionary creation
171
+
172
+ ## [0.4.19] - 2024-07-01
173
+ - Refactored dictionaries
@@ -1,15 +1,15 @@
1
1
  PySimultan2/CHANGELOG.md,sha256=LeVHBC6dGDwDwgXipNrwgvgews9QkyjsqtYa_jiLMm0,217
2
- PySimultan2/__about__.py,sha256=N_0JaEMS7tHfCVPCoxXAr5ZZHHSVV9O6Uipd_gj4y00,19
2
+ PySimultan2/__about__.py,sha256=ahwIJXU28jCG9DVuIM_KtpxcsovPdHHik2HOD6G7DgQ,19
3
3
  PySimultan2/__init__.py,sha256=PGVR1uhY01dF5tHyad-znURUZ_LVB95vsjId2BT0aJM,3245
4
4
  PySimultan2/data_model.py,sha256=YYtfcR6jvGztng6Be8Vw9FQ02cPkl8ATHTZMoIu1ABQ,34140
5
5
  PySimultan2/default_types.py,sha256=K-Eka5BCKk8DT3HU5761Ym_-ZFmu1_Dro0zW0LVGoHA,27157
6
- PySimultan2/files.py,sha256=j3mGpu63h4BCDzyAZSfOIeylLysIUas3ac1MAeRhLXY,21709
6
+ PySimultan2/files.py,sha256=BCETl4M8qedw7Bjt8QXvY6Rl3U6Lou36XqPY2ST1o9Q,22447
7
7
  PySimultan2/multi_values.py,sha256=ZFXlTLuZo32x7_7diYAp2XEjp5uwgHLgNOzN7v74-5I,13650
8
8
  PySimultan2/object_mapper.py,sha256=_SQye38NmIr4m_-X9CuvUJnVDBmjmUDdPH2bnaxpzKY,18546
9
9
  PySimultan2/simultan_object.py,sha256=akaSUZZWIVfwx1wT5EdOgRR2UeShUthX-LE2Uk6w8CQ,19058
10
10
  PySimultan2/taxonomy_maps.py,sha256=abMB2RSKEaliW-Ewegq-Inq9npHeOD1VVrMYoKJAlC0,8762
11
11
  PySimultan2/type_setter_lookup.py,sha256=px92E-BlnvY-11F-F7L7cOwbE1_L8FQVqi-23nJi5j4,3518
12
- PySimultan2/utils.py,sha256=2rVCg6rX4kI3H4ziOm4ki-akTBJJlBr1n_6-mGSes5M,66388
12
+ PySimultan2/utils.py,sha256=TOrMMTh6n63VgjEGVX6j67_jhUx4ImFI39X61g0OegQ,66692
13
13
  PySimultan2/geometry/__init__.py,sha256=nJolTD1i5J8qUkOQa-r3D20aq3Co3sN31Xc0n4wJpJo,248
14
14
  PySimultan2/geometry/geometry_base.py,sha256=nbb9U2W3vFviVLxISLHRi2CVyLEM-3zIKvoZ1uSYs_8,23420
15
15
  PySimultan2/geometry/utils.py,sha256=J25YsK8sso_UL7xRusItQZvyjtvxdOsSPelBQYFABhY,8519
@@ -75,7 +75,7 @@ PySimultan2/resources/assimp.dll,sha256=HwfDwXqoPDTFRyoQpA3qmgZoUdFtziJkV5fNtktE
75
75
  PySimultan2/resources/componentmanager.user,sha256=hrzr1US4pqkFnLHXcvPkvrgGd7QvlxaV8mhS6fuikEs,760
76
76
  PySimultan2/resources/defaultsettings.xml,sha256=s6Tk1tubLz5UYqXZWpD42EDHzedemRY1nEneoIVcUfg,392
77
77
  PySimultan2/resources/setup.bat,sha256=fjvvYfVM6TalS-QTSiKAbAId5nTsk8kGGo06ba-wWaY,32
78
- pysimultan-0.5.4.dist-info/METADATA,sha256=rpPIvUKiZc-IY9kSfDo9wPpGJY5Hd0A31UXgbmnQ6kM,2665
79
- pysimultan-0.5.4.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
80
- pysimultan-0.5.4.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
- pysimultan-0.5.4.dist-info/RECORD,,
78
+ pysimultan-0.5.6.dist-info/METADATA,sha256=MblBIAKHvlsGbA3u5BVv5rycD0yqSqph_B4nNyEyfOA,5815
79
+ pysimultan-0.5.6.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
80
+ pysimultan-0.5.6.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
+ pysimultan-0.5.6.dist-info/RECORD,,
@@ -1,91 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: PySimultan
3
- Version: 0.5.4
4
- Project-URL: Documentation, https://github.com/Bühler Maximilian/PySimultan2#readme
5
- Project-URL: Issues, https://github.com/Bühler Maximilian/PySimultan2/issues
6
- Project-URL: Source, https://github.com/Bühler Maximilian/PySimultan2
7
- Author-email: Bühler Maximilian <maximilian.buehler@tuwien.ac.at>
8
- License: MIT
9
- Classifier: Development Status :: 4 - Beta
10
- Classifier: Programming Language :: Python
11
- Classifier: Programming Language :: Python :: 3.8
12
- Classifier: Programming Language :: Python :: 3.9
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: Programming Language :: Python :: 3.12
16
- Classifier: Programming Language :: Python :: Implementation :: CPython
17
- Classifier: Programming Language :: Python :: Implementation :: PyPy
18
- Requires-Python: >=3.8
19
- Requires-Dist: colorlog
20
- Requires-Dist: numpy
21
- Requires-Dist: pandas
22
- Requires-Dist: pyarrow
23
- Requires-Dist: pythonnet
24
- Requires-Dist: ruamel-yaml
25
- Requires-Dist: six
26
- Requires-Dist: tqdm
27
- Description-Content-Type: text/markdown
28
-
29
- # pysimultan_api
30
-
31
- [![PyPI - Version](https://img.shields.io/pypi/v/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
32
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pysimultan-api.svg)](https://pypi.org/project/pysimultan-api)
33
-
34
- -----
35
-
36
- ## Table of Contents
37
-
38
- - [Installation](#installation)
39
- - [License](#license)
40
- - [Usage](#usage)
41
- - [FreeCAD support](#freecad-support)
42
- - [Change Log](#change-log)
43
-
44
- ## Installation
45
-
46
- ```console
47
- pip install PySimultan
48
- ```
49
-
50
- ## License
51
-
52
- `pysimultan-api` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
53
-
54
-
55
- ### Usage
56
-
57
- ```python
58
- from PySimultan2 import DataModel, Content, TaxonomyMap, PythonMapper
59
- ```
60
-
61
-
62
- ## FreeCAD support
63
-
64
- PySimultanUI looks for a FreeCAD version in C:\Program Files\FreeCAD. If you don't have FreeCAD installed, you can
65
- download it from the FreeCAD website or use the FreeCAD version provided in the FreeCAD-Bundle repository.
66
- Go to https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds and download the latest version
67
- of FreeCAD for your OS. The version must be compiled with the same python version you are using (e.g. py311).
68
-
69
- Extract the zip file to C:\Program Files\FreeCAD
70
-
71
- The directory structure should look like this:
72
-
73
- ```
74
- C:\Program Files\FreeCAD
75
- │ ...
76
- │ FreeCAD_weekly-builds-37730-conda-Windows-x86_64-py311
77
- │ │ bin
78
- │ │ lib
79
- │ │ ...
80
-
81
-
82
- ```
83
-
84
-
85
- # Change Log
86
-
87
- ## [0.4.20] - 2024-07-01
88
- - Fixed Bug in nested dictionary creation
89
-
90
- ## [0.4.19] - 2024-07-01
91
- - Refactored dictionaries