PySimultan 0.5.8__py3-none-any.whl → 0.5.9__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
PySimultan2/__about__.py CHANGED
@@ -1 +1 @@
1
- version = '0.5.8'
1
+ version = '0.5.9'
PySimultan2/data_model.py CHANGED
@@ -532,6 +532,60 @@ class DataModel:
532
532
  )
533
533
  )
534
534
 
535
+ def add_resource_file(self,
536
+ filename: Union[str, FileInfo, PythonFileInfo],
537
+ target_dir: Union[ResourceDirectoryEntry, FileInfo, str] = None) -> ResourceEntry:
538
+
539
+ """
540
+ Add a file as resource to the project which already exists in the project folder
541
+ :param filename:
542
+ :param target_dir:
543
+ :return:
544
+ """
545
+
546
+ if isinstance(filename, str):
547
+ filename = FileInfo(filename)
548
+ elif isinstance(filename, PythonFileInfo):
549
+ filename = FileInfo(filename.full_path)
550
+
551
+ if target_dir is None:
552
+ # check if file is already in project folder
553
+ if not os.path.exists(os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)):
554
+ raise FileNotFoundError(f'File {filename} not found in project folder {self.project.ProjectUnpackFolder}')
555
+
556
+ self.project.AddResourceFile(FileInfo(str(filename)),
557
+ self.project_data_manager)
558
+
559
+ full_filename = os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)
560
+
561
+ return next(
562
+ (
563
+ x for x in self.project_data_manager.AssetManager.Resources if x.CurrentFullPath == full_filename
564
+ )
565
+ , None
566
+ )
567
+
568
+ else:
569
+ if isinstance(target_dir, str):
570
+ target_dir = DirectoryInfo(target_dir)
571
+ elif isinstance(target_dir, ResourceDirectoryEntry):
572
+ target_dir = DirectoryInfo(target_dir.CurrentFullPath)
573
+ elif isinstance(target_dir, FileInfo):
574
+ pass
575
+
576
+ # check if file is already in project folder
577
+ if not os.path.exists(os.path.join(target_dir.FullPath, filename.Name)):
578
+ raise FileNotFoundError(f'File {filename} not found in project folder {target_dir.FullPath}')
579
+
580
+ self.project.AddResourceFile(
581
+ FileInfo(os.path.join(target_dir.FullPath, filename.Name)),
582
+ self.project_data_manager)
583
+
584
+ # get added resource
585
+ return next((x for x in self.project_data_manager.AssetManager.Resources if
586
+ x.CurrentFullPath == os.path.join(target_dir.FullPath, filename.Name)), None)
587
+
588
+
535
589
  def add_resource(self,
536
590
  filename: Union[str, FileInfo],
537
591
  target_dir: Optional[Union[DirectoryInfo, ResourceDirectoryEntry, str]] = None,
PySimultan2/files.py CHANGED
@@ -281,6 +281,21 @@ class FileInfo(object, metaclass=MetaMock):
281
281
  file_info.write_content(content)
282
282
  return file_info
283
283
 
284
+ @classmethod
285
+ def from_existing_file(cls,
286
+ file_path: str,
287
+ *args,
288
+ **kwargs) -> FileInfo:
289
+
290
+ data_model = kwargs.get('data_model', config.get_default_data_model())
291
+ resource = data_model.add_resource_file(file_path)
292
+
293
+ return cls(resource_entry=resource,
294
+ data_model=data_model,
295
+ *args,
296
+ **kwargs)
297
+
298
+
284
299
  def __init__(self, file_path=None, *args, **kwargs):
285
300
  """
286
301
  Custom file info object to be used with the with statement. This object is used to open a file and close it
@@ -475,7 +490,10 @@ class FileInfo(object, metaclass=MetaMock):
475
490
  :return: None
476
491
  """
477
492
  if self.resource_entry is not None:
493
+ if self.resource_entry.Key in self._cls_instances:
494
+ del self._cls_instances[self.resource_entry.Key]
478
495
  self.data_model.delete_resource(self.resource_entry)
496
+
479
497
  os.remove(self.file_path)
480
498
 
481
499
  def to_json(self) -> dict:
@@ -1,11 +1,12 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: PySimultan
3
- Version: 0.5.8
3
+ Version: 0.5.9
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
7
7
  Author-email: Bühler Maximilian <maximilian.buehler@tuwien.ac.at>
8
- License: MIT
8
+ License-Expression: MIT
9
+ License-File: LICENSE.txt
9
10
  Classifier: Development Status :: 4 - Beta
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3.8
@@ -166,6 +167,9 @@ print(instances[0].param_1)
166
167
 
167
168
  # Change Log
168
169
 
170
+ ## [0.5.8] - 2024-12-17
171
+ - Added FileInfo.from_existing_file method to create FileInfo object from existing file in ProjectUnpackFolder
172
+
169
173
  ## [0.5.7] - 2024-12-09
170
174
  - Added support for different taxonomy for content
171
175
  - Added support for numpy np.float32, np.float64 and np.int32, np.int64
@@ -1,9 +1,9 @@
1
1
  PySimultan2/CHANGELOG.md,sha256=BBfCqgFQeigrlRQdHAksDz70-0fLKjzWkHbfFjJ2eDg,361
2
- PySimultan2/__about__.py,sha256=I4Xkc80vf8gODt5O1ySRQPAixhhRNGFEyH4DQhuHlco,19
2
+ PySimultan2/__about__.py,sha256=qqSUxPPY_oV00hMzjB1sl4cBwwVOu75QAU3g1azPtlc,19
3
3
  PySimultan2/__init__.py,sha256=PGVR1uhY01dF5tHyad-znURUZ_LVB95vsjId2BT0aJM,3245
4
- PySimultan2/data_model.py,sha256=YYtfcR6jvGztng6Be8Vw9FQ02cPkl8ATHTZMoIu1ABQ,34140
4
+ PySimultan2/data_model.py,sha256=7rf1IT6jLKkCkpH9Zmkdy-wpPQXwt7wWl_RFw4sl2Co,36503
5
5
  PySimultan2/default_types.py,sha256=K-Eka5BCKk8DT3HU5761Ym_-ZFmu1_Dro0zW0LVGoHA,27157
6
- PySimultan2/files.py,sha256=BCETl4M8qedw7Bjt8QXvY6Rl3U6Lou36XqPY2ST1o9Q,22447
6
+ PySimultan2/files.py,sha256=jvjGB_yLvJbXBhtxy7-l9nTK4voRiuimr-w8Cq7XtI0,23053
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
@@ -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.8.dist-info/METADATA,sha256=MRNoaabziaKiIp2bEk0MBnDiFGyiEtyWWesmdgIf3V4,5963
79
- pysimultan-0.5.8.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
80
- pysimultan-0.5.8.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
- pysimultan-0.5.8.dist-info/RECORD,,
78
+ pysimultan-0.5.9.dist-info/METADATA,sha256=WyBbt76L0Bt4PjMpNYG_baQKQzFZtNBZqu5e2_iKpdc,6136
79
+ pysimultan-0.5.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
80
+ pysimultan-0.5.9.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
+ pysimultan-0.5.9.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.26.3
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any