From 2c44ab963d6c521d3b4397c9144393cfb7df525a Mon Sep 17 00:00:00 2001 From: bsakaguchi Date: Mon, 15 Sep 2025 02:21:31 +0700 Subject: [PATCH] Trying to construct modelspace --- modelspace/ModelSpace.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/modelspace/ModelSpace.py b/modelspace/ModelSpace.py index d4b9c4e..5387ef1 100644 --- a/modelspace/ModelSpace.py +++ b/modelspace/ModelSpace.py @@ -21,25 +21,21 @@ class ModelSpace: self.selector = ModelPackageSelector(self.repo.model_sub_repo, set(self.installed_packages)) self.temp_installed_resources = self.installed_resources + self.temp_files_pending = SetsDict() + self.temp_file_conflicts = SetsDict() def _reset_selector(self): self.selector = ModelPackageSelector(self.repo.model_sub_repo, set(self.installed_packages)) self.temp_installed_resources = self.installed_resources + self.temp_files_pending = SetsDict() + self.temp_file_conflicts = SetsDict() - def check_for_file_conflicts(self, path: str | list[str]) -> list: - # TODO - raise NotImplemented - # conflicts = [] - # if not isinstance(path, list): path = [path] - # for p in path: - # fullpath = Path(self.path) / p - # if fullpath.exists() or p in self.temp['pending_files'].index: conflicts.append(p) - # return conflicts - - - - + def check_for_file_conflicts(self, pkg_id, path: str): + path = Path(path) + self.temp_files_pending.add(pkg_id, path) + if path.exists() or path in self.temp_files_pending.index: + self.temp_file_conflicts.add(pkg_id, path) def get_dest_dir(self, package: ModelPackage, no_lineage = False): type_subdir = self.layout.get(package.package_type, None) @@ -80,7 +76,11 @@ class ModelSpace: for file in package.files: files.add(package.uuid, Path(self.get_dest_dir(package, self.layout.no_lineage)) / file) - for file in files.index: self.check_for_file_conflicts(file) + for pkg_id in files.keys: + for file in files.by_key(pkg_id): + self.check_for_file_conflicts(pkg_id, file) + + if len(self.temp_file_conflicts.index) != 0: raise RuntimeError("File conflicts detected") # TODO run copier