PySimultan 0.4.19__tar.gz → 0.4.21__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pysimultan-0.4.19 → pysimultan-0.4.21}/PKG-INFO +7 -1
- {pysimultan-0.4.19 → pysimultan-0.4.21}/README.md +6 -0
- pysimultan-0.4.21/src/PySimultan2/__about__.py +1 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/default_types.py +19 -45
- pysimultan-0.4.21/src/PySimultan2/type_setter_lookup.py +62 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/utils.py +36 -36
- pysimultan-0.4.21/tests/resources/test_set_dictionary.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_dictionary.py +18 -0
- pysimultan-0.4.19/src/PySimultan2/__about__.py +0 -1
- pysimultan-0.4.19/tests/resources/test_set_dictionary.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/.gitignore +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/LICENSE.txt +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/pyproject.toml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/data_model.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/files.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/geometry_base.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/geometry/utils.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/multi_values.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/object_mapper.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/AssimpNet.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/AvalonDock.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/BruTile.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ClosedXML.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.dll.config +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.runtimeconfig.json +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ControlzEx.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DotSpatial.Projections.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ExcelNumberFormat.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Fluent.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.dll.config +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/GeometryViewer.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.Core.Wpf.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/MathNet.Numerics.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.AspNetCore.Authorization.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Primitives.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.Shell.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Newtonsoft.Json.Bson.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Newtonsoft.Json.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll.config +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.DataTransferLibrary.dll.config +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Lang.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Lang.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Plugins.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.Plugins.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.UI.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.UI.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.D3DCompiler.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.DXGI.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct2D1.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct3D11.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Direct3D9.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.Mathematics.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SharpDX.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.dll.config +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SitePlanner.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Sprache.Calc.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Sprache.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/System.Data.OleDb.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/System.Net.Http.Formatting.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/XAMLMarkupExtensions.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/assimp.dll +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/defaultsettings.xml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/setup.bat +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/simultan_object.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/taxonomy_maps.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_component.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_component_with_taxonomy_slot.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_referenced_component.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_taxonomies.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/change_references_example.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_project.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_test_excel.xlsx +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example1.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example2.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example3.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example4_reference_list.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example_extend_1.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/list_test.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example3.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example4.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_create_typed_component.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_create_typed_component_with_slots.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_extend.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_update_references.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_reference_list.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5_1.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/U5_orig.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/__init__.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/new_geometry_test.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file.yml +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file_load.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_file_project.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_multi_value_big_table_load.simultan +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_calc_static_zone_temperature.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_calculate_steady_state_temperature.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_circular_references.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_create_geometry.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_files.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_files_load.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_load_geometry.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_load_multi_values.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_new_dll.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_new_project_creation.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_numeric_map.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_pythonnet.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_register_class.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_attr_property.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_set_properties.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_taxonomie_maps.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_taxonomies.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/test_ui.py +0 -0
- {pysimultan-0.4.19 → pysimultan-0.4.21}/tests/ui_minimal_example.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: PySimultan
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.21
|
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
|
@@ -38,6 +38,9 @@ Description-Content-Type: text/markdown
|
|
38
38
|
|
39
39
|
- [Installation](#installation)
|
40
40
|
- [License](#license)
|
41
|
+
- [Usage](#usage)
|
42
|
+
- [FreeCAD support](#freecad-support)
|
43
|
+
- [Change Log](#change-log)
|
41
44
|
|
42
45
|
## Installation
|
43
46
|
|
@@ -82,5 +85,8 @@ C:\Program Files\FreeCAD
|
|
82
85
|
|
83
86
|
# Change Log
|
84
87
|
|
88
|
+
## [0.4.20] - 2024-07-01
|
89
|
+
- Fixed Bug in nested dictionary creation
|
90
|
+
|
85
91
|
## [0.4.19] - 2024-07-01
|
86
92
|
- Refactored dictionaries
|
@@ -9,6 +9,9 @@
|
|
9
9
|
|
10
10
|
- [Installation](#installation)
|
11
11
|
- [License](#license)
|
12
|
+
- [Usage](#usage)
|
13
|
+
- [FreeCAD support](#freecad-support)
|
14
|
+
- [Change Log](#change-log)
|
12
15
|
|
13
16
|
## Installation
|
14
17
|
|
@@ -53,5 +56,8 @@ C:\Program Files\FreeCAD
|
|
53
56
|
|
54
57
|
# Change Log
|
55
58
|
|
59
|
+
## [0.4.20] - 2024-07-01
|
60
|
+
- Fixed Bug in nested dictionary creation
|
61
|
+
|
56
62
|
## [0.4.19] - 2024-07-01
|
57
63
|
- Refactored dictionaries
|
@@ -0,0 +1 @@
|
|
1
|
+
version = '0.4.21'
|
@@ -307,27 +307,6 @@ class ComponentDictionary(SimultanObject):
|
|
307
307
|
component_policy = 'subcomponent' # component add policy of the content/parameter/property, 'reference'
|
308
308
|
# or 'subcomponent'
|
309
309
|
|
310
|
-
type_setter_fcn_lookup_dict = {None: lambda x: None,
|
311
|
-
SimComponent: set_property_to_sim_component,
|
312
|
-
SimultanObject: set_property_to_sim_component,
|
313
|
-
SimDoubleParameter: set_property_to_parameter,
|
314
|
-
SimIntegerParameter: set_property_to_parameter,
|
315
|
-
SimStringParameter: set_property_to_parameter,
|
316
|
-
SimBoolParameter: set_property_to_parameter,
|
317
|
-
SimEnumParameter: set_property_to_parameter,
|
318
|
-
int: set_property_to_parameter,
|
319
|
-
float: set_property_to_parameter,
|
320
|
-
str: set_property_to_parameter,
|
321
|
-
bool: set_property_to_parameter,
|
322
|
-
FileInfo: set_property_to_file_info,
|
323
|
-
list: set_property_to_list,
|
324
|
-
tuple: set_property_to_list,
|
325
|
-
set: set_property_to_list,
|
326
|
-
dict: set_property_to_dict,
|
327
|
-
ComponentList: set_property_to_list,
|
328
|
-
np.ndarray: set_property_to_value_field,
|
329
|
-
pd.DataFrame: set_property_to_value_field}
|
330
|
-
|
331
310
|
_taxonomy_map = TaxonomyMap(taxonomy_name='Dictionaries',
|
332
311
|
taxonomy_key='Dictionaries',
|
333
312
|
taxonomy_entry_name='ComponentDict',
|
@@ -377,12 +356,15 @@ class ComponentDictionary(SimultanObject):
|
|
377
356
|
|
378
357
|
if kwargs.get('check_dict', True) and comp_dict is not None and key in object.__getattribute__(self,
|
379
358
|
'_dict').keys():
|
380
|
-
return object.__getattribute__(self, '_dict')
|
359
|
+
return object.__getattribute__(self, '_dict').get(key, None)
|
381
360
|
else:
|
382
361
|
# data_model = config.default_data_model
|
383
362
|
# obj = get_component_taxonomy_entry(self._wrapped_obj, key)
|
384
363
|
# if obj is not None:
|
385
364
|
# val = get_obj_value(obj, data_model=self._data_model, object_mapper=self._object_mapper)
|
365
|
+
data_model = self._data_model
|
366
|
+
object_mapper = self._object_mapper
|
367
|
+
wrapped_obj = self._wrapped_obj
|
386
368
|
|
387
369
|
if key in self._taxonomy_map.parameter_taxonomy_entry_dict.keys():
|
388
370
|
text_or_key = self._taxonomy_map.parameter_taxonomy_entry_dict[key]
|
@@ -397,22 +379,22 @@ class ComponentDictionary(SimultanObject):
|
|
397
379
|
text_or_key = content.text_or_key
|
398
380
|
|
399
381
|
try:
|
400
|
-
components = list(
|
382
|
+
components = list(wrapped_obj.Components.Items)
|
401
383
|
val = next((get_obj_value(x.Component,
|
402
|
-
data_model=
|
403
|
-
object_mapper=
|
384
|
+
data_model=data_model,
|
385
|
+
object_mapper=object_mapper) for x in components if
|
404
386
|
x.Slot.SlotBase.Target.Key == text_or_key), None)
|
405
387
|
if val is None:
|
406
|
-
ref_components = list(
|
388
|
+
ref_components = list(wrapped_obj.ReferencedComponents.Items)
|
407
389
|
val = next((get_obj_value(x.Target,
|
408
|
-
data_model=
|
409
|
-
object_mapper=
|
390
|
+
data_model=data_model,
|
391
|
+
object_mapper=object_mapper) for x in ref_components
|
410
392
|
if x.Slot.SlotBase.Target.Key == text_or_key), None)
|
411
393
|
if val is None:
|
412
|
-
parameters = list(
|
394
|
+
parameters = list(wrapped_obj.Parameters.Items)
|
413
395
|
val = next((get_obj_value(x,
|
414
|
-
data_model=
|
415
|
-
object_mapper=
|
396
|
+
data_model=data_model,
|
397
|
+
object_mapper=object_mapper) for x in parameters if
|
416
398
|
x.NameTaxonomyEntry.TextOrKey == text_or_key), None)
|
417
399
|
|
418
400
|
except Exception as e:
|
@@ -420,8 +402,8 @@ class ComponentDictionary(SimultanObject):
|
|
420
402
|
raise ValueError(f'Could not get value for key {key} ({text_or_key}) in {self}:\n{e}')
|
421
403
|
|
422
404
|
self._dict[key] = get_obj_value(val,
|
423
|
-
data_model=
|
424
|
-
object_mapper=
|
405
|
+
data_model=data_model,
|
406
|
+
object_mapper=object_mapper)
|
425
407
|
return self._dict[key]
|
426
408
|
|
427
409
|
def __setitem__(self, key, value):
|
@@ -467,21 +449,13 @@ class ComponentDictionary(SimultanObject):
|
|
467
449
|
keep=[])
|
468
450
|
return
|
469
451
|
|
470
|
-
|
471
|
-
|
472
|
-
elif isinstance(value, SimultanObject):
|
473
|
-
setter_fcn = set_property_to_sim_component
|
474
|
-
else:
|
475
|
-
setter_fcn = self.type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
|
452
|
+
from .type_setter_lookup import type_setter_fcn_lookup_dict
|
453
|
+
setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
|
476
454
|
|
477
455
|
setter_fcn(*fcn_arg_list)
|
478
456
|
item = self.__getitem__(key, check_dict=False)
|
479
457
|
|
480
|
-
|
481
|
-
#
|
482
|
-
# if isinstance(value, ):
|
483
|
-
|
484
|
-
self._dict[key] = self.__getitem__(key, check_dict=False)
|
458
|
+
self._dict[key] = item
|
485
459
|
|
486
460
|
def __delitem__(self, key):
|
487
461
|
self[key] = None
|
@@ -512,7 +486,7 @@ class ComponentDictionary(SimultanObject):
|
|
512
486
|
data_model=self._data_model,
|
513
487
|
object_mapper=self._object_mapper)
|
514
488
|
for ref_component in self._wrapped_obj.ReferencedComponents.Items:
|
515
|
-
comp_dict[ref_component.Slot.SlotBase.Target.
|
489
|
+
comp_dict[ref_component.Slot.SlotBase.Target.Key] = get_obj_value(ref_component.Target,
|
516
490
|
data_model=self._data_model,
|
517
491
|
object_mapper=self._object_mapper)
|
518
492
|
for ref_asset in self._wrapped_obj.ReferencedAssets.Items:
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import numpy as np
|
2
|
+
import pandas as pd
|
3
|
+
|
4
|
+
from .utils import (SimComponent, SimultanObject, SimDoubleParameter, SimIntegerParameter, SimStringParameter,
|
5
|
+
SimBoolParameter, SimEnumParameter, SimMultiValueField3D, SimMultiValueBigTable, FileInfo,
|
6
|
+
set_property_to_sim_component, set_property_to_parameter, set_property_to_value_field,
|
7
|
+
set_property_to_file_info, set_property_to_list, set_property_to_dict)
|
8
|
+
|
9
|
+
from .default_types import ComponentList, ComponentDictionary
|
10
|
+
|
11
|
+
from SIMULTAN.Data.Components import (ComponentWalker, SimComponent, SimBoolParameter, SimDoubleParameter,
|
12
|
+
SimEnumParameter, SimIntegerParameter, SimStringParameter, ComponentMapping,
|
13
|
+
SimSlot, SimComponentVisibility, SimChildComponentEntry, SimDefaultSlots,
|
14
|
+
SimParameterOperations, SimComponentReference)
|
15
|
+
|
16
|
+
|
17
|
+
lookup_dict = {None: lambda x: None,
|
18
|
+
SimComponent: set_property_to_sim_component,
|
19
|
+
SimultanObject: set_property_to_sim_component,
|
20
|
+
SimDoubleParameter: set_property_to_parameter,
|
21
|
+
SimIntegerParameter: set_property_to_parameter,
|
22
|
+
SimStringParameter: set_property_to_parameter,
|
23
|
+
SimBoolParameter: set_property_to_parameter,
|
24
|
+
SimEnumParameter: set_property_to_parameter,
|
25
|
+
SimMultiValueField3D: set_property_to_value_field,
|
26
|
+
SimMultiValueBigTable: set_property_to_value_field,
|
27
|
+
int: set_property_to_parameter,
|
28
|
+
float: set_property_to_parameter,
|
29
|
+
str: set_property_to_parameter,
|
30
|
+
bool: set_property_to_parameter,
|
31
|
+
FileInfo: set_property_to_file_info,
|
32
|
+
list: set_property_to_list,
|
33
|
+
tuple: set_property_to_list,
|
34
|
+
set: set_property_to_list,
|
35
|
+
dict: set_property_to_dict,
|
36
|
+
ComponentDictionary: set_property_to_dict,
|
37
|
+
ComponentList: set_property_to_list,
|
38
|
+
np.ndarray: set_property_to_value_field,
|
39
|
+
pd.DataFrame: set_property_to_value_field}
|
40
|
+
|
41
|
+
|
42
|
+
class TypeSetterFcnLookupDict(object):
|
43
|
+
|
44
|
+
def __getitem__(self, item: type):
|
45
|
+
if item in lookup_dict:
|
46
|
+
return lookup_dict[item]
|
47
|
+
elif SimultanObject in item.__bases__:
|
48
|
+
return set_property_to_sim_component
|
49
|
+
else:
|
50
|
+
return None
|
51
|
+
|
52
|
+
def get(self,
|
53
|
+
item: type,
|
54
|
+
default=None):
|
55
|
+
val = self.__getitem__(item)
|
56
|
+
if val is None:
|
57
|
+
return default
|
58
|
+
else:
|
59
|
+
return val
|
60
|
+
|
61
|
+
|
62
|
+
type_setter_fcn_lookup_dict = TypeSetterFcnLookupDict()
|
@@ -1,10 +1,16 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import sys
|
4
|
+
import traceback
|
5
|
+
|
3
6
|
from enum import Enum
|
4
7
|
from weakref import WeakSet
|
5
8
|
import numpy as np
|
6
9
|
import pandas as pd
|
7
10
|
from typing import List as TypeList, Union, Optional, Type, Any, TYPE_CHECKING
|
11
|
+
|
12
|
+
from System import ArgumentException, NotSupportedException
|
13
|
+
|
8
14
|
from SIMULTAN.Data.Components import (ComponentWalker, SimComponent, SimBoolParameter, SimDoubleParameter,
|
9
15
|
SimEnumParameter, SimIntegerParameter, SimStringParameter, ComponentMapping,
|
10
16
|
SimSlot, SimComponentVisibility, SimChildComponentEntry, SimDefaultSlots,
|
@@ -417,8 +423,31 @@ def add_sub_component(comp: SimComponent,
|
|
417
423
|
new_slot = SimSlot(sub_comp.Slots[0].Target, str(slot_extension))
|
418
424
|
|
419
425
|
entry = SimChildComponentEntry(new_slot, sub_comp)
|
426
|
+
|
427
|
+
error = None
|
428
|
+
new_slot_extension = 0
|
429
|
+
|
420
430
|
if entry not in comp.Components.Items:
|
421
|
-
|
431
|
+
try:
|
432
|
+
comp.Components.InsertItem(len(comp.Components.Items), entry)
|
433
|
+
except (ArgumentException, NotSupportedException) as e:
|
434
|
+
error = e
|
435
|
+
|
436
|
+
while error is not None and new_slot_extension < 100:
|
437
|
+
try:
|
438
|
+
try:
|
439
|
+
slot_extension += 1
|
440
|
+
if slot_extension > 1000:
|
441
|
+
break
|
442
|
+
except Exception as e:
|
443
|
+
new_slot_extension += 1
|
444
|
+
slot_extension = slot_extension + f'_{new_slot_extension}'
|
445
|
+
new_slot = SimSlot(sub_comp.Slots[0].Target, str(slot_extension))
|
446
|
+
entry = SimChildComponentEntry(new_slot, sub_comp)
|
447
|
+
comp.Components.InsertItem(len(comp.Components.Items), entry)
|
448
|
+
error = None
|
449
|
+
except (ArgumentException, NotSupportedException) as e:
|
450
|
+
error = e
|
422
451
|
return True
|
423
452
|
|
424
453
|
|
@@ -727,7 +756,8 @@ type_convert_dict = {SimComponent: get_sim_component_value,
|
|
727
756
|
SimEnumParameter: get_parameter_value,
|
728
757
|
ResourceEntry: get_resource_entry_value,
|
729
758
|
ContainedResourceFileEntry: get_resource_entry_value,
|
730
|
-
LinkedResourceFileEntry: get_resource_entry_value
|
759
|
+
LinkedResourceFileEntry: get_resource_entry_value
|
760
|
+
}
|
731
761
|
|
732
762
|
|
733
763
|
def get_obj_value(obj: Union[SimComponent, SimDoubleParameter, SimIntegerParameter, SimStringParameter,
|
@@ -738,6 +768,8 @@ def get_obj_value(obj: Union[SimComponent, SimDoubleParameter, SimIntegerParamet
|
|
738
768
|
|
739
769
|
if obj is None:
|
740
770
|
return
|
771
|
+
elif isinstance(obj, (int, float, str)):
|
772
|
+
return obj
|
741
773
|
elif type(obj) in type_convert_dict.keys():
|
742
774
|
return type_convert_dict[type(obj)](obj, data_model=data_model, object_mapper=object_mapper)
|
743
775
|
else:
|
@@ -1281,7 +1313,6 @@ def set_property_to_dict(value: dict,
|
|
1281
1313
|
slot_extension=slot_extension,
|
1282
1314
|
slot=slot)
|
1283
1315
|
|
1284
|
-
|
1285
1316
|
def add_properties(prop_name: str,
|
1286
1317
|
text_or_key: str,
|
1287
1318
|
content: Content,
|
@@ -1302,30 +1333,6 @@ def add_properties(prop_name: str,
|
|
1302
1333
|
|
1303
1334
|
from .default_types import ComponentList, ComponentDictionary
|
1304
1335
|
|
1305
|
-
type_setter_fcn_lookup_dict = {None: lambda x: None,
|
1306
|
-
SimComponent: set_property_to_sim_component,
|
1307
|
-
SimultanObject: set_property_to_sim_component,
|
1308
|
-
SimDoubleParameter: set_property_to_parameter,
|
1309
|
-
SimIntegerParameter: set_property_to_parameter,
|
1310
|
-
SimStringParameter: set_property_to_parameter,
|
1311
|
-
SimBoolParameter: set_property_to_parameter,
|
1312
|
-
SimEnumParameter: set_property_to_parameter,
|
1313
|
-
SimMultiValueField3D: set_property_to_value_field,
|
1314
|
-
SimMultiValueBigTable: set_property_to_value_field,
|
1315
|
-
int: set_property_to_parameter,
|
1316
|
-
float: set_property_to_parameter,
|
1317
|
-
str: set_property_to_parameter,
|
1318
|
-
bool: set_property_to_parameter,
|
1319
|
-
FileInfo: set_property_to_file_info,
|
1320
|
-
list: set_property_to_list,
|
1321
|
-
tuple: set_property_to_list,
|
1322
|
-
set: set_property_to_list,
|
1323
|
-
dict: set_property_to_dict,
|
1324
|
-
ComponentDictionary: set_property_to_dict,
|
1325
|
-
ComponentList: set_property_to_list,
|
1326
|
-
np.ndarray: set_property_to_value_field,
|
1327
|
-
pd.DataFrame: set_property_to_value_field}
|
1328
|
-
|
1329
1336
|
class Empty:
|
1330
1337
|
pass
|
1331
1338
|
|
@@ -1381,15 +1388,8 @@ def add_properties(prop_name: str,
|
|
1381
1388
|
if isinstance(value, UnresolvedObject):
|
1382
1389
|
return
|
1383
1390
|
|
1384
|
-
|
1385
|
-
|
1386
|
-
elif isinstance(value, SimultanObject):
|
1387
|
-
setter_fcn = set_property_to_sim_component
|
1388
|
-
elif isinstance(value, dict):
|
1389
|
-
setter_fcn = set_property_to_dict
|
1390
|
-
else:
|
1391
|
-
setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
|
1392
|
-
|
1391
|
+
from .type_setter_lookup import type_setter_fcn_lookup_dict
|
1392
|
+
setter_fcn = type_setter_fcn_lookup_dict.get(type(value), set_property_to_unknown_type)
|
1393
1393
|
setter_fcn(*fcn_arg_list)
|
1394
1394
|
|
1395
1395
|
setx.__taxonomy__ = taxonomy
|
Binary file
|
@@ -80,6 +80,18 @@ def test_set_dictionary_param(component):
|
|
80
80
|
other_component_4 = mapped_cls_2(name='other_component_4',
|
81
81
|
mapped_property=None)
|
82
82
|
|
83
|
+
new_test = mapped_cls_1(name='test_component_2',
|
84
|
+
mapped_property={'val_a': 1,
|
85
|
+
'val_b': 2.0,
|
86
|
+
'val_c': 'test',
|
87
|
+
'val_d': True,
|
88
|
+
'val_e': [other_component, other_component_2, other_component_3],
|
89
|
+
'val_f': {'a': other_component_2, 'b': other_component_3},
|
90
|
+
'val_g': None,
|
91
|
+
'val_h': other_component,
|
92
|
+
'val_i': other_component_4,
|
93
|
+
})
|
94
|
+
|
83
95
|
test_dict = {'val_a': 1,
|
84
96
|
'val_b': 2.0,
|
85
97
|
'val_c': 'test',
|
@@ -88,10 +100,16 @@ def test_set_dictionary_param(component):
|
|
88
100
|
'val_f': {'a': other_component_2, 'b': other_component_3},
|
89
101
|
'val_g': None,
|
90
102
|
'val_h': other_component,
|
103
|
+
'val_i': 5,
|
104
|
+
'val_j': new_test
|
91
105
|
}
|
106
|
+
|
92
107
|
component.mapped_property = test_dict
|
93
108
|
component.mapped_property['val_a'] = 222
|
94
109
|
|
110
|
+
assert component.mapped_property['val_j'].mapped_property['val_a'] == 1
|
111
|
+
component.mapped_property['val_j'].mapped_property._generate_internal_dict()
|
112
|
+
|
95
113
|
component.mapped_property['val_i'] = other_component_4
|
96
114
|
|
97
115
|
print(component.mapped_property)
|
@@ -1 +0,0 @@
|
|
1
|
-
version = '0.4.19'
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/ComponentBuilder.dll.config
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Cyotek.Drawing.BitmapFont.dll
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DocumentFormat.OpenXml.dll
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/DotSpatial.Projections.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.Wpf.dll
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/HelixToolkit.SharpDX.Core.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.AspNetCore.Metadata.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Extensions.Options.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.WindowsAPICodePack.dll
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/Microsoft.Xaml.Behaviors.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/SIMULTAN.AutoUpdate.Client.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/src/PySimultan2/resources/System.Net.Http.Formatting.dll
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_component_with_taxonomy_slot.py
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/create_referenced_component.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_project.simultan
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/empty_test_excel.xlsx
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/example_extend_1.simultan
RENAMED
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example3.yml
RENAMED
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example4.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_example_extend.yml
RENAMED
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/readme_examples/resources/template_reference_list.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pysimultan-0.4.19 → pysimultan-0.4.21}/tests/resources/test_multi_value_big_table_load.simultan
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|