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 +1 -1
- PySimultan2/files.py +24 -4
- PySimultan2/utils.py +8 -1
- pysimultan-0.5.6.dist-info/METADATA +173 -0
- {pysimultan-0.5.4.dist-info → pysimultan-0.5.6.dist-info}/RECORD +7 -7
- pysimultan-0.5.4.dist-info/METADATA +0 -91
- {pysimultan-0.5.4.dist-info → pysimultan-0.5.6.dist-info}/WHEEL +0 -0
- {pysimultan-0.5.4.dist-info → pysimultan-0.5.6.dist-info}/licenses/LICENSE.txt +0 -0
PySimultan2/__about__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
version = '0.5.
|
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.
|
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 =
|
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
|
+
[](https://pypi.org/project/pysimultan)
|
32
|
+
[](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=
|
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=
|
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=
|
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.
|
79
|
-
pysimultan-0.5.
|
80
|
-
pysimultan-0.5.
|
81
|
-
pysimultan-0.5.
|
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
|
-
[](https://pypi.org/project/pysimultan-api)
|
32
|
-
[](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
|
File without changes
|
File without changes
|