PySimultan 0.5.9__py3-none-any.whl → 0.5.9.1__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.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,,