PySimultan 0.5.9__py3-none-any.whl → 0.5.9.1__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.9'
1
+ version = '0.5.9.1'
PySimultan2/__init__.py CHANGED
@@ -29,6 +29,7 @@ def setup_logging():
29
29
 
30
30
  logger = colorlog.getLogger('PySimultan')
31
31
  logger.addHandler(handler)
32
+ logger.setLevel('DEBUG')
32
33
 
33
34
  return logger
34
35
 
PySimultan2/data_model.py CHANGED
@@ -538,7 +538,7 @@ class DataModel:
538
538
 
539
539
  """
540
540
  Add a file as resource to the project which already exists in the project folder
541
- :param filename:
541
+ :param filename: path to the file or FileInfo object
542
542
  :param target_dir:
543
543
  :return:
544
544
  """
@@ -550,20 +550,12 @@ class DataModel:
550
550
 
551
551
  if target_dir is None:
552
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
553
 
559
- full_filename = os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)
554
+ if not filename.FullName.startswith(str(self.project.ProjectUnpackFolder)) and not os.path.exists(os.path.join(str(self.project.ProjectUnpackFolder), filename.Name)):
555
+ raise FileNotFoundError(f'File {filename} not found in project folder {self.project.ProjectUnpackFolder}')
560
556
 
561
- return next(
562
- (
563
- x for x in self.project_data_manager.AssetManager.Resources if x.CurrentFullPath == full_filename
564
- )
565
- , None
566
- )
557
+ key = self.project_data_manager.AssetManager.AddResourceEntry(filename)
558
+ return self.project_data_manager.AssetManager.GetResource(key)
567
559
 
568
560
  else:
569
561
  if isinstance(target_dir, str):
@@ -577,14 +569,8 @@ class DataModel:
577
569
  if not os.path.exists(os.path.join(target_dir.FullPath, filename.Name)):
578
570
  raise FileNotFoundError(f'File {filename} not found in project folder {target_dir.FullPath}')
579
571
 
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
-
572
+ key = self.project_data_manager.AssetManager.AddResourceEntry(os.path.join(target_dir.FullPath, filename.Name))
573
+ return self.project_data_manager.AssetManager.GetResource(key)
588
574
 
589
575
  def add_resource(self,
590
576
  filename: Union[str, FileInfo],
PySimultan2/files.py CHANGED
@@ -12,13 +12,14 @@ import tempfile
12
12
  from typing import List, Union, Optional
13
13
  import shutil
14
14
  import zipfile
15
+ from pathlib import Path
15
16
  # from System.IO import FileInfo # public FileInfo (string fileName);
16
17
 
17
18
  from SIMULTAN.Data.Assets import ResourceEntry, ResourceFileEntry, ContainedResourceFileEntry, Asset, ResourceDirectoryEntry
18
19
  from SIMULTAN.Data.Taxonomy import SimTaxonomyEntry, SimTaxonomyEntryReference, SimTaxonomy
19
20
  from SIMULTAN.Data.Components import SimComponent, ComponentMapping
20
21
 
21
- from System.IO import DirectoryInfo
22
+ from System.IO import DirectoryInfo as SystemDirectoryInfo
22
23
 
23
24
  # from .config import default_data_model
24
25
 
@@ -291,7 +292,6 @@ class FileInfo(object, metaclass=MetaMock):
291
292
  resource = data_model.add_resource_file(file_path)
292
293
 
293
294
  return cls(resource_entry=resource,
294
- data_model=data_model,
295
295
  *args,
296
296
  **kwargs)
297
297
 
@@ -526,6 +526,46 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
526
526
  def get_by_key(cls, key: int) -> Optional[DirectoryInfo]:
527
527
  return cls._cls_instances.get(key, None)
528
528
 
529
+ @classmethod
530
+ def from_existing_directory(cls,
531
+ directory_path: str,
532
+ add_files: bool = True,
533
+ add_sub_directories: bool = True,
534
+ *args,
535
+ **kwargs) -> DirectoryInfo:
536
+
537
+ data_model = kwargs.get('data_model', config.get_default_data_model())
538
+
539
+ if not directory_path.startswith(str(data_model.project.ProjectUnpackFolder)):
540
+ directory_path = os.path.join(str(data_model.project.ProjectUnpackFolder), directory_path)
541
+
542
+ res = data_model.project_data_manager.AssetManager.CreateResourceDirIn(os.path.basename(directory_path),
543
+ SystemDirectoryInfo(os.path.dirname(directory_path)),
544
+ '')
545
+
546
+ resource = data_model.project_data_manager.AssetManager.GetResource(res.Item1)
547
+
548
+ directory_info = cls(resource_entry=resource,
549
+ *args,
550
+ **kwargs)
551
+
552
+
553
+ if add_files:
554
+ directory_info.add_all_contained_files()
555
+
556
+ # for file in os.listdir(directory_path):
557
+ # file_path = os.path.join(directory_path, file)
558
+ # data_model.add_resource_file(file_path, target_dir=resource)
559
+
560
+ if add_sub_directories:
561
+ directory_info.add_all_contained_directories()
562
+
563
+ # for sub_dir in os.listdir(directory_path):
564
+ # sub_dir_path = os.path.join(directory_path, sub_dir)
565
+ # data_model.add_resource_directory(sub_dir_path, parent_directory=resource)
566
+
567
+ return directory_info
568
+
529
569
  def __init__(self,
530
570
  path: Optional[str] = None,
531
571
  helper_file: Optional[FileInfo] = None,
@@ -644,6 +684,31 @@ class DirectoryInfo(object, metaclass=DirectoryInfoMetaMock):
644
684
  return FileInfo(resource_entry=new_resource,
645
685
  data_model=self.data_model)
646
686
 
687
+ def add_all_contained_files(self):
688
+ for file in os.listdir(self.full_path):
689
+ full_filename = os.path.join(self.full_path, file)
690
+ if Path(full_filename).is_file():
691
+
692
+ if full_filename in (x.current_full_path for x in self.resource_entry.Children):
693
+ continue
694
+ else:
695
+ logger.info(f'Adding file: {full_filename} to resources')
696
+ FileInfo.from_existing_file(full_filename, data_model=self.data_model)
697
+
698
+ def add_all_contained_directories(self):
699
+ for file in os.listdir(self.full_path):
700
+ full_filename = os.path.join(self.full_path, file)
701
+ if Path(full_filename).is_dir():
702
+ if full_filename in (x.current_full_path for x in self.resource_entry.Children):
703
+ continue
704
+ else:
705
+ logger.info(f'Adding directory: {full_filename} to resources')
706
+ DirectoryInfo.from_existing_directory(full_filename, data_model=self.data_model)
707
+
708
+ for directory in self.sub_directories:
709
+ directory.add_all_contained_files()
710
+ directory.add_all_contained_directories()
711
+
647
712
  def add_tag(self, tag: SimTaxonomyEntry) -> None:
648
713
  add_tag_to_resource(self.resource_entry, tag)
649
714
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySimultan
3
- Version: 0.5.9
3
+ Version: 0.5.9.1
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,9 +1,9 @@
1
1
  PySimultan2/CHANGELOG.md,sha256=BBfCqgFQeigrlRQdHAksDz70-0fLKjzWkHbfFjJ2eDg,361
2
- PySimultan2/__about__.py,sha256=qqSUxPPY_oV00hMzjB1sl4cBwwVOu75QAU3g1azPtlc,19
3
- PySimultan2/__init__.py,sha256=PGVR1uhY01dF5tHyad-znURUZ_LVB95vsjId2BT0aJM,3245
4
- PySimultan2/data_model.py,sha256=7rf1IT6jLKkCkpH9Zmkdy-wpPQXwt7wWl_RFw4sl2Co,36503
2
+ PySimultan2/__about__.py,sha256=PQD8y6NqxgcQTWZ0_8DSXDPWyJXVggB0QOB-reyq7bY,21
3
+ PySimultan2/__init__.py,sha256=42YM_zQUXdEjbjmgBI0nWJWsr_G6zNe7TxfFmS37mJk,3275
4
+ PySimultan2/data_model.py,sha256=UcscVLbBaEu9UhV2iaGJnrqX51G5PyEQuoXrz41Hq9g,36126
5
5
  PySimultan2/default_types.py,sha256=K-Eka5BCKk8DT3HU5761Ym_-ZFmu1_Dro0zW0LVGoHA,27157
6
- PySimultan2/files.py,sha256=jvjGB_yLvJbXBhtxy7-l9nTK4voRiuimr-w8Cq7XtI0,23053
6
+ PySimultan2/files.py,sha256=qx3I9WVW3se2qbWfN9QYQXL8kV2jZjd7HZpRGANm3-U,26040
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.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,,
78
+ pysimultan-0.5.9.1.dist-info/METADATA,sha256=r7-W3hsJ4lhzjWrkvdGUonwCEu7rXALauh6621n73uM,6138
79
+ pysimultan-0.5.9.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
80
+ pysimultan-0.5.9.1.dist-info/licenses/LICENSE.txt,sha256=pmSr98k6N005KMojnZxzLGRuRlDjDx3PUrK1lFj53HA,1126
81
+ pysimultan-0.5.9.1.dist-info/RECORD,,