PySimultan 0.4.1__py3-none-any.whl → 0.4.3__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.4.1'
1
+ version = '0.4.3'
PySimultan2/__init__.py CHANGED
@@ -91,6 +91,12 @@ class Config:
91
91
  def get_default_mapper(self, *args, **kwargs):
92
92
  return self._default_mapper
93
93
 
94
+ def set_default_data_model(self, data_model):
95
+ self._default_data_model = data_model
96
+
97
+ def set_default_mapper(self, mapper):
98
+ self._default_mapper = mapper
99
+
94
100
 
95
101
  config = Config()
96
102
 
PySimultan2/data_model.py CHANGED
@@ -119,7 +119,7 @@ class DataModel:
119
119
  def __new__(cls, *args, **kwargs):
120
120
 
121
121
  instance = super().__new__(cls)
122
- config.default_data_model = instance
122
+ config.set_default_data_model(instance)
123
123
  try:
124
124
  data_models.add(instance)
125
125
  except Exception as e:
@@ -378,8 +378,8 @@ class DataModel:
378
378
  data_models = WeakSet()
379
379
  data_models_dict = WeakValueDictionary()
380
380
 
381
- if config.default_data_model is self:
382
- config.default_data_model = None
381
+ if config.get_default_data_model() is self:
382
+ config.set_default_data_model(None)
383
383
 
384
384
  del self
385
385
 
@@ -117,7 +117,7 @@ class ComponentList(SimultanObject):
117
117
  [all_components[i] for i in np.argsort(indices)]]
118
118
  except TypeError as e:
119
119
  logger.warning(f'Could not sort list {all_components}:\n{e}')
120
- return [self._object_mapper.create_python_object(x) for x in all_components]
120
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model) for x in all_components]
121
121
  except Exception as e:
122
122
  logger.error(f'Could not get data from list {self}:\n{e}')
123
123
  return []
@@ -249,11 +249,12 @@ class ComponentList(SimultanObject):
249
249
  if isinstance(i, slice):
250
250
  if self._object_mapper is None:
251
251
  return self.__class__(self.data[i])
252
- return [self._object_mapper.create_python_object(x) for x in self.__class__(self.data[i])]
252
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model)
253
+ for x in self.__class__(self.data[i])]
253
254
  else:
254
255
  if self._object_mapper is None:
255
256
  return self.data[i]
256
- return self._object_mapper.create_python_object(self.data[i])
257
+ return self._object_mapper.create_python_object(self.data[i], data_model=self._data_model)
257
258
 
258
259
  def __repr__(self):
259
260
  return f'List {self.name}: ' + repr(list(self.data))
@@ -278,13 +279,13 @@ class ComponentList(SimultanObject):
278
279
  return None
279
280
 
280
281
  if self._wrapped_obj.Parent is not None:
281
- return self._object_mapper.create_python_object(self._wrapped_obj.Parent)
282
+ return self._object_mapper.create_python_object(self._wrapped_obj.Parent, data_model=self._data_model)
282
283
  else:
283
284
  return None
284
285
 
285
286
  @property
286
287
  def referenced_by(self):
287
- return set([self._object_mapper.create_python_object(x.Target) for x in self._wrapped_obj.ReferencedBy if
288
+ return set([self._object_mapper.create_python_object(x.Target, data_model=self._data_model) for x in self._wrapped_obj.ReferencedBy if
288
289
  x.Target != self._wrapped_obj])
289
290
 
290
291
  def clear(self):
PySimultan2/files.py CHANGED
@@ -20,7 +20,7 @@ from SIMULTAN.Data.Components import SimComponent, ComponentMapping
20
20
 
21
21
  # from .config import default_data_model
22
22
 
23
- from . import config
23
+ from . import config, logger
24
24
 
25
25
  from typing import TYPE_CHECKING
26
26
  if TYPE_CHECKING:
@@ -197,7 +197,7 @@ class FileInfo(object, metaclass=MetaMock):
197
197
  :return: FileInfo
198
198
  """
199
199
 
200
- data_model = kwargs.get('data_model', config.default_data_model)
200
+ data_model = kwargs.get('data_model', config.get_default_data_model())
201
201
  resource = create_asset_from_string(filename, content, *args, **kwargs)
202
202
 
203
203
  file_info = cls(resource_entry=resource,
@@ -241,8 +241,8 @@ class FileInfo(object, metaclass=MetaMock):
241
241
  def resource_entry(self) -> Union[ResourceFileEntry, ContainedResourceFileEntry, None]:
242
242
  if self._resource_entry is None:
243
243
  if self.data_model is None:
244
- logger.warning(f'No data model provided. Using default data model: {config.default_data_model.id}.')
245
- self.data_model = config.default_data_model
244
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
245
+ self.data_model = config.get_default_data_model()
246
246
  if self.data_model is not None:
247
247
  self.resource_entry = self.data_model.add_resource(self.file_path)
248
248
  return self._resource_entry
@@ -63,7 +63,7 @@ class BaseGeometry(object, metaclass=MetaMock):
63
63
  def __init__(self, *args, **kwargs):
64
64
  self._wrapped_object: Union[Vertex, Edge, Face, Volume, EdgeLoop, Layer] = kwargs.get('wrapped_object', None)
65
65
  self._geometry_model: Optional[GeometryModel] = kwargs.get('geometry_model', None)
66
- self._object_mapper = kwargs.get('object_mapper', config.default_mapper)
66
+ self._object_mapper = kwargs.get('object_mapper', config.get_default_mapper())
67
67
  self._data_model = kwargs.get('data_model', None)
68
68
 
69
69
  @property
@@ -537,7 +537,7 @@ class GeometryModel(object, metaclass=MetaMock):
537
537
  @classmethod
538
538
  def create_simultan_instance(cls, *args, **kwargs):
539
539
 
540
- data_model: DataModel = kwargs.get('data_model', config.default_data_model)
540
+ data_model: DataModel = kwargs.get('data_model', config.get_default_data_model())
541
541
  name: str = kwargs.get('name', 'GeometryModel')
542
542
 
543
543
  new_geo_model, resource = data_model.create_new_geometry_model(name=name)
@@ -549,8 +549,8 @@ class GeometryModel(object, metaclass=MetaMock):
549
549
 
550
550
  def __init__(self, *args, **kwargs):
551
551
  self._wrapped_object: NetGeometryModel = kwargs.get('wrapped_object', None)
552
- self._object_mapper = kwargs.get('object_mapper', config.default_mapper)
553
- self._data_model = kwargs.get('data_model', config.default_data_model)
552
+ self._object_mapper = kwargs.get('object_mapper', config.get_default_mapper())
553
+ self._data_model = kwargs.get('data_model', config.get_default_data_model())
554
554
 
555
555
  @property
556
556
  def name(self):
@@ -29,10 +29,12 @@ class PythonMapper(object):
29
29
 
30
30
  def __new__(cls, *args, **kwargs):
31
31
  instance = super(PythonMapper, cls).__new__(cls)
32
- config.default_mapper = instance
32
+ config.set_default_mapper(instance)
33
33
  return instance
34
34
 
35
35
  def __init__(self, *args, **kwargs):
36
+
37
+ self.name = kwargs.get('name', 'PythonMapper')
36
38
  self.registered_classes = default_registered_classes # dict with all registered classes: {taxonomy: class}
37
39
  self.mapped_classes = default_mapped_classes # dict with all mapped classes: {taxonomy: class}
38
40
  self.taxonomy_maps = default_taxonomy_maps # dict with all taxonomie maps: {taxonomy: taxonomie_map}
@@ -136,20 +138,14 @@ class PythonMapper(object):
136
138
  typed_data.append(typed_object)
137
139
  return typed_data
138
140
 
139
- # @lru_cache(maxsize=500)
140
- def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
141
+ def create_python_geometry_object(self, component, data_model=None, *args, **kwargs):
141
142
 
142
143
  if component is None:
143
144
  return None
144
145
 
145
146
  if data_model is None:
146
- logger.warning(f'No data model provided. Using default data model: {config.default_data_model.id}.')
147
- data_model = config.default_data_model
148
- data_model_id = data_model.id
149
- # data_model_id = list(data_models)[0].id
150
- # data_model = list(data_models)[0]
151
- else:
152
- data_model_id = data_model.id
147
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
148
+ data_model = config.get_default_data_model()
153
149
 
154
150
  if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
155
151
  if isinstance(component, Layer):
@@ -157,7 +153,22 @@ class PythonMapper(object):
157
153
  else:
158
154
  geometry_model = component.Layer.Model.Model
159
155
  cls = self.registered_geometry_classes[type(component)]
160
- return create_python_geometry(cls, component, data_model_id, self, geometry_model)
156
+ return create_python_geometry(cls, component, data_model, self, geometry_model)
157
+ else:
158
+ self.create_python_object(component, data_model, *args, **kwargs)
159
+
160
+ # @lru_cache(maxsize=500)
161
+ def create_python_object(self, component, cls=None, data_model=None, *args, **kwargs):
162
+
163
+ if component is None:
164
+ return None
165
+
166
+ if data_model is None:
167
+ logger.warning(f'No data model provided. Using default data model: {config.get_default_data_model().id}.')
168
+ data_model = config.get_default_data_model()
169
+
170
+ if isinstance(component, (Layer, Vertex, Edge, PEdge, Face, Volume, EdgeLoop)):
171
+ self.create_python_geometry_object(component, data_model, *args, **kwargs)
161
172
 
162
173
  if cls is None:
163
174
  c_slots = [x.Target.Key for x in component.Slots.Items]
@@ -181,10 +192,8 @@ class PythonMapper(object):
181
192
  else:
182
193
  return create_python_object(component,
183
194
  cls,
184
- data_model_id=data_model_id,
185
195
  object_mapper=self,
186
196
  data_model=data_model,
187
-
188
197
  *args,
189
198
  **kwargs)
190
199
 
@@ -219,8 +228,8 @@ class PythonMapper(object):
219
228
  cls._cls_instances = WeakSet()
220
229
  cls.__property_cache__ = {}
221
230
 
222
- if config.default_mapper is self:
223
- config.default_mapper = None
231
+ if config.get_default_mapper() is self:
232
+ config.set_default_mapper(None)
224
233
 
225
234
  def copy(self):
226
235
  new_mapper = PythonMapper()
@@ -231,4 +240,4 @@ class PythonMapper(object):
231
240
 
232
241
 
233
242
  if config.get_default_mapper() is None:
234
- config._default_mapper = PythonMapper()
243
+ config.set_default_mapper(PythonMapper())
@@ -68,10 +68,10 @@ class MetaMock(type):
68
68
  data_model = list(data_models.data)[0]()
69
69
  kwargs['data_model'] = data_model
70
70
  else:
71
- if config.default_data_model is not None:
71
+ if config.get_default_data_model() is not None:
72
72
  logger.warning(
73
- f'No data model provided. Using default data model: {config.default_data_model.id}.')
74
- data_model = config.default_data_model
73
+ f'No data model provided. Using default data model: {config.get_default_data_model().id}')
74
+ data_model = config.get_default_data_model()
75
75
  kwargs['data_model'] = data_model
76
76
  else:
77
77
  raise TypeError((f'Error creating new instance of class {cls.__name__}:\n'
@@ -154,8 +154,8 @@ class SimultanObject(object, metaclass=MetaMock):
154
154
 
155
155
  self._wrapped_obj: Union[SimComponent, None] = kwargs.get('wrapped_obj', None)
156
156
  self.__obj_init__ = kwargs.get('__obj_init__', False)
157
- self._data_model: Union[DataModel, None] = kwargs.get('data_model', config.default_data_model)
158
- self._object_mapper: Union[PythonMapper, None] = kwargs.get('object_mapper', config.default_mapper)
157
+ self._data_model: Union[DataModel, None] = kwargs.get('data_model', config.get_default_data_model())
158
+ self._object_mapper: Union[PythonMapper, None] = kwargs.get('object_mapper', config.get_default_mapper())
159
159
  self.name = kwargs.get('name', None)
160
160
 
161
161
  self.__property_cache__ = {}
@@ -223,7 +223,7 @@ class SimultanObject(object, metaclass=MetaMock):
223
223
  return None
224
224
 
225
225
  if self._wrapped_obj.Parent is not None:
226
- return self._object_mapper.create_python_object(self._wrapped_obj.Parent)
226
+ return self._object_mapper.create_python_object(self._wrapped_obj.Parent, data_model=self._data_model)
227
227
  else:
228
228
  return None
229
229
 
@@ -239,7 +239,8 @@ class SimultanObject(object, metaclass=MetaMock):
239
239
 
240
240
  @property
241
241
  def referenced_by(self) -> set['SimultanObject']:
242
- return set([self._object_mapper.create_python_object(x.Target) for x in self._wrapped_obj.ReferencedBy if
242
+ return set([self._object_mapper.create_python_object(x.Target, data_model=self._data_model)
243
+ for x in self._wrapped_obj.ReferencedBy if
243
244
  x.Target != self._wrapped_obj])
244
245
 
245
246
  @property
@@ -259,14 +260,17 @@ class SimultanObject(object, metaclass=MetaMock):
259
260
  def get_subcomponents(self) -> dict[[str, str], Union['SimultanObject', SimComponent]]:
260
261
  subcomponents = {}
261
262
  for comp in self._wrapped_obj.Components:
262
- subcomponents[(comp.Slot.SlotBase.Target.Key, comp.Slot.SlotExtension)] = self._object_mapper.create_python_object(comp.Component)
263
+ subcomponents[(comp.Slot.SlotBase.Target.Key,
264
+ comp.Slot.SlotExtension)] = self._object_mapper.create_python_object(comp.Component,
265
+ data_model=self._data_model)
263
266
  return subcomponents
264
267
 
265
268
  def get_subcomponent_list(self) -> list[Union['SimultanObject', SimComponent]]:
266
269
  return list(self.get_subcomponents().values())
267
270
 
268
271
  def get_referenced_components(self) -> list['SimultanObject']:
269
- return [self._object_mapper.create_python_object(x) for x in self._wrapped_obj.ReferencedComponents]
272
+ return [self._object_mapper.create_python_object(x, data_model=self._data_model)
273
+ for x in self._wrapped_obj.ReferencedComponents]
270
274
 
271
275
  def add_taxonomy_entry_reference(self,
272
276
  taxonomy_entry_reference: SimTaxonomyEntryReference,
PySimultan2/utils.py CHANGED
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from . import config
4
3
  from enum import Enum
5
4
  from weakref import WeakSet
6
5
  import numpy as np
@@ -65,14 +64,19 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
65
64
  :param cls: class of the python object
66
65
  :param args: additional arguments
67
66
  :param kwargs: additional keyword arguments
67
+ :param data_model: DataModel
68
+ :param object_mapper: PythonMapper
69
+
70
+ :return: SimultanObject
68
71
  :return:
69
72
  """
70
73
 
71
74
  from .default_types import ComponentList, ComponentDictionary
72
75
 
73
- if kwargs.get('data_model_id', None) is None:
74
- from .data_model import data_models
75
- kwargs['data_model_id'] = list(data_models)[0].id
76
+ data_model = kwargs.get('data_model', None)
77
+
78
+ if data_model is None:
79
+ data_model = config.get_default_data_model()
76
80
 
77
81
  if wrapped_obj is None:
78
82
  return None
@@ -104,7 +108,7 @@ def create_python_object(wrapped_obj: SimComponent, cls: Type[SimultanObject], *
104
108
  obj.__obj_init__ = True
105
109
  obj.__property_cache__ = dict()
106
110
  obj._wrapped_obj = wrapped_obj
107
- obj._data_model = kwargs.get('data_model', None)
111
+ obj._data_model = data_model
108
112
  obj._object_mapper = kwargs.get('object_mapper', None)
109
113
  obj.component_policy = kwargs.get('component_policy', 'subcomponent')
110
114
 
@@ -227,7 +231,7 @@ def get_default_slot(default_type: Union[SimTaxonomyEntryReference, SimTaxonomyE
227
231
  :return:
228
232
  """
229
233
 
230
- default_taxonomy_entry = SimDefaultSlotKeys.GetDefaultSlot(config.default_data_model.project_data_manager.Taxonomies,
234
+ default_taxonomy_entry = SimDefaultSlotKeys.GetDefaultSlot(config.get_default_data_model().project_data_manager.Taxonomies,
231
235
  SimDefaultSlotKeys.Undefined)
232
236
 
233
237
  if default_type is SimTaxonomyEntryReference:
@@ -604,7 +608,7 @@ def create_simultan_component_for_taxonomy(cls, *args, **kwargs) -> SimComponent
604
608
 
605
609
  data_model = kwargs.get('data_model', None)
606
610
  if data_model is None:
607
- data_model = config.default_data_model
611
+ data_model = config.get_default_data_model()
608
612
 
609
613
  # simultan_taxonomy = cls._taxonomy_map.get_or_create_simultan_taxonomy(data_model=data_model)
610
614
  # tayonomy_entry = cls._taxonomy_map.get_or_create_simultan_taxonomy_entry(data_model=data_model)
@@ -679,7 +683,7 @@ def get_property(prop_name: Optional[str] = None,
679
683
  data_model = component._data_model
680
684
  object_mapper = component._object_mapper
681
685
  else:
682
- data_model = config.default_data_model
686
+ data_model = config.get_default_data_model()
683
687
  obj = get_component_taxonomy_entry(wrapped_obj, text_or_key)
684
688
 
685
689
  return get_obj_value(obj, data_model=data_model, object_mapper=object_mapper)
@@ -877,7 +881,7 @@ def create_mapped_python_object(value: SimComponent,
877
881
  """
878
882
 
879
883
  if object_mapper is None:
880
- object_mapper = config.default_mapper
884
+ object_mapper = config.get_default_mapper()
881
885
 
882
886
  # logger.debug(f'Creating mapped python object for {value}.')
883
887
  if type(value) in object_mapper.registered_classes.values():
@@ -973,13 +977,13 @@ def set_property_to_list(value: Union[list, tuple, set, ComponentList],
973
977
 
974
978
  if 'ComponentList' in [x.Target.Key for x in component.Slots]:
975
979
  if not hasattr(component, '_object_mapper'):
976
- mapper = config.default_mapper
980
+ mapper = config.get_default_mapper()
977
981
  component._object_mapper = mapper
978
982
  else:
979
983
  mapper = component._object_mapper
980
984
 
981
985
  if not hasattr(component, '_data_model'):
982
- data_model = config.default_data_model
986
+ data_model = config.get_default_data_model()
983
987
  component._data_model = data_model
984
988
  else:
985
989
  data_model = component._data_model
@@ -1240,13 +1244,13 @@ def set_property_to_dict(value: dict,
1240
1244
 
1241
1245
  if 'ComponentDictionary' in [x.Target.Key for x in component.Slots]:
1242
1246
  if not hasattr(component, '_object_mapper'):
1243
- mapper = config.default_mapper
1247
+ mapper = config.get_default_mapper()
1244
1248
  component._object_mapper = mapper
1245
1249
  else:
1246
1250
  mapper = component._object_mapper
1247
1251
 
1248
1252
  if not hasattr(component, '_data_model'):
1249
- data_model = config.default_data_model
1253
+ data_model = config.get_default_data_model()
1250
1254
  component._data_model = data_model
1251
1255
  else:
1252
1256
  data_model = component._data_model
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: PySimultan
3
- Version: 0.4.1
3
+ Version: 0.4.3
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,15 +1,15 @@
1
- PySimultan2/__about__.py,sha256=L2Offsg-6m5gCNnCgevSz7hv6G-kIe1QidASLbohFtk,19
2
- PySimultan2/__init__.py,sha256=00tn7bPM8yncDR41VxBYm5_gVy6i7ZdzpRJoop2pbLc,2692
3
- PySimultan2/data_model.py,sha256=FBYw5yz4lNGgbpnuCnkkwBEkSxI3bv9eE4vumoxCeLU,26956
4
- PySimultan2/default_types.py,sha256=GGAnuOCwF7YSt6tPDMr6houAILWyRsAhMfb9Y_Rpetk,22946
5
- PySimultan2/files.py,sha256=97lRYzKP9hEqP0vKRUbYdd4WSRkgVQ-mJhSJuP_CYSY,12631
1
+ PySimultan2/__about__.py,sha256=l1cddhN_DochM-HfCX27Wng2U2p8iuhA7C5-Wd08cIA,19
2
+ PySimultan2/__init__.py,sha256=2pdrZP8ECaVRlaCfwzFblht_30JfenzyQ2rEt-QldeU,2876
3
+ PySimultan2/data_model.py,sha256=m9q3P5SfxYXdmwdQuPoTazHZAJ1xwazixFtdetJ2Dgk,26968
4
+ PySimultan2/default_types.py,sha256=v_4awsUURLbu4Sfw7J_7BoQKirXbKdU9s7-wqgA4nNE,23112
5
+ PySimultan2/files.py,sha256=gx3BA6WYjNVplqqes7jkPopp6O50pgLvantXgmitx54,12657
6
6
  PySimultan2/multi_values.py,sha256=ZFXlTLuZo32x7_7diYAp2XEjp5uwgHLgNOzN7v74-5I,13650
7
- PySimultan2/object_mapper.py,sha256=FvZR6qEB_dbsaH6V3EE9JgZdTgRTEvbYus01xp6wt9k,9676
8
- PySimultan2/simultan_object.py,sha256=nK28YKOMAQfRJZGwjgbI9sFtJBb84kEaTIwGzWBiAqw,16900
7
+ PySimultan2/object_mapper.py,sha256=UUP8oZNkCG68DpizNJlcj14nrPTKMiq5oWAmA_XO1AY,10116
8
+ PySimultan2/simultan_object.py,sha256=Plr9nwgRmKzdkTO7l8ksWekEow9pT-MgjjAfLlChgDI,17208
9
9
  PySimultan2/taxonomy_maps.py,sha256=aU9zUJph7QcInIZq0W-Vqoy4DYr0CEs-VsXwPMK_cxU,7976
10
- PySimultan2/utils.py,sha256=w806h9aKT3T8Qn178qpXvuzaNpoNGzQVKORhtt3VGBM,62456
10
+ PySimultan2/utils.py,sha256=J3T7KDfONFeLWBulXmGMCaaOu5sfkDSHmI92JWO8dW4,62553
11
11
  PySimultan2/geometry/__init__.py,sha256=nJolTD1i5J8qUkOQa-r3D20aq3Co3sN31Xc0n4wJpJo,248
12
- PySimultan2/geometry/geometry_base.py,sha256=HMz4jZk9Himd5zXZw642kX80bs5TcZNzAE4lPTIRwas,23393
12
+ PySimultan2/geometry/geometry_base.py,sha256=jOTNMISGLRjUUjVfPZ64A2Fp4oinv42polIct9bgIY4,23417
13
13
  PySimultan2/geometry/utils.py,sha256=J25YsK8sso_UL7xRusItQZvyjtvxdOsSPelBQYFABhY,8519
14
14
  PySimultan2/resources/AssimpNet.dll,sha256=x8uwMHPRmEH9fDQihfEQLUdblM1u7RP-CCnUjOpXcLo,205312
15
15
  PySimultan2/resources/AvalonDock.dll,sha256=9tCcw7cpaVq0bh1H2sfcxb8EWhySmgujPs89lAqIPZs,500224
@@ -75,7 +75,7 @@ PySimultan2/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
75
75
  PySimultan2/resources/assimp.dll,sha256=HwfDwXqoPDTFRyoQpA3qmgZoUdFtziJkV5fNtktEZEU,6081536
76
76
  PySimultan2/resources/defaultsettings.xml,sha256=s6Tk1tubLz5UYqXZWpD42EDHzedemRY1nEneoIVcUfg,392
77
77
  PySimultan2/resources/setup.bat,sha256=fjvvYfVM6TalS-QTSiKAbAId5nTsk8kGGo06ba-wWaY,32
78
- pysimultan-0.4.1.dist-info/METADATA,sha256=J3X6HkTS9PHazoL50e2K-cugM3v3-7dRXjPe-oEVnRM,1657
79
- pysimultan-0.4.1.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
80
- pysimultan-0.4.1.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
- pysimultan-0.4.1.dist-info/RECORD,,
78
+ pysimultan-0.4.3.dist-info/METADATA,sha256=Pf9TmV9HU7TQg3_pk6bdKxPs_zXZjppZpgEvOCwUMAk,1657
79
+ pysimultan-0.4.3.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
80
+ pysimultan-0.4.3.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
+ pysimultan-0.4.3.dist-info/RECORD,,