From 5de4c923add9226bbe98a0223809ef28adeff134 Mon Sep 17 00:00:00 2001 From: Zgardan Date: Wed, 30 Apr 2025 14:27:39 +0200 Subject: [PATCH 1/3] fix: keep the dependencies metadata when creating the temporary toml --- src/kapla/projects/kproject.py | 58 ++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/src/kapla/projects/kproject.py b/src/kapla/projects/kproject.py index a78ec75..d3a6859 100644 --- a/src/kapla/projects/kproject.py +++ b/src/kapla/projects/kproject.py @@ -25,6 +25,7 @@ from kapla.specs.common import BuildSystem from kapla.specs.kproject import KProjectSpec +from kapla.specs.lock import LockedPackage from kapla.specs.pyproject import ( DEFAULT_BUILD_SYSTEM, Dependency, @@ -240,12 +241,30 @@ def _process_secondary_dependencies( for dep_name in local_dependencies: locked_package = self.repo.packages_lock.packages.get(dep_name) - if locked_package and locked_package.dependencies: - visited: Set[str] = set() - for secondary_dep in locked_package.dependencies: - self._process_dependency_tree( - secondary_dep, visited, dependencies, constraints, lock_versions - ) + if locked_package is None or locked_package.dependencies is None: + continue + visited: Set[str] = set() + for ( + secondary_dep, + dep_meta_or_version, + ) in locked_package.dependencies.items(): + self._process_dependency_tree( + secondary_dep, + visited, + dependencies, + constraints, + lock_versions, + self._create_dependency_meta(dep_meta_or_version), + ) + + def _create_dependency_meta( + self, dep_meta_or_version: Union[str, Dict[str, Any]] + ) -> None | DependencyMeta: + return ( + None + if isinstance(dep_meta_or_version, str) + else DependencyMeta(**dep_meta_or_version) + ) def _process_dependency_tree( self, @@ -254,25 +273,36 @@ def _process_dependency_tree( dependencies: Dict[str, Dependency], constraints: Union[DefaultDict[str, str], Dict[str, str]], lock_versions: bool, + dep_meta: Optional[DependencyMeta] = None, ) -> None: """Process a dependency and its subdependencies recursively.""" if dep_name in visited: return visited.add(dep_name) - self._lock_and_store_dependencies( - lock_versions, dependencies, constraints, dep_name - ) + dep = dep_name if dep_meta is None else {dep_name: dep_meta} + + self._lock_and_store_dependencies(lock_versions, dependencies, constraints, dep) if not self.repo: return locked_package = self.repo.packages_lock.packages.get(dep_name) - if locked_package and locked_package.dependencies: - for sub_dep in locked_package.dependencies: - self._process_dependency_tree( - sub_dep, visited, dependencies, constraints, lock_versions - ) + if locked_package is None or locked_package.dependencies is None: + return + + for ( + sub_dep_name, + sub_dep_meta_or_version, + ) in locked_package.dependencies.items(): + self._process_dependency_tree( + sub_dep_name, + visited, + dependencies, + constraints, + lock_versions, + self._create_dependency_meta(sub_dep_meta_or_version), + ) def _process_extras_and_groups( self, From 61f942e41d7017e21898b6e72bdefcfa3df38fe7 Mon Sep 17 00:00:00 2001 From: Zgardan Date: Wed, 30 Apr 2025 14:37:49 +0200 Subject: [PATCH 2/3] remove unused import --- src/kapla/projects/kproject.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/kapla/projects/kproject.py b/src/kapla/projects/kproject.py index d3a6859..b89f769 100644 --- a/src/kapla/projects/kproject.py +++ b/src/kapla/projects/kproject.py @@ -25,7 +25,6 @@ from kapla.specs.common import BuildSystem from kapla.specs.kproject import KProjectSpec -from kapla.specs.lock import LockedPackage from kapla.specs.pyproject import ( DEFAULT_BUILD_SYSTEM, Dependency, From a0d0f98e7fa6fe714383491e8f86be5d2ba672a4 Mon Sep 17 00:00:00 2001 From: Zgardan Date: Wed, 30 Apr 2025 14:38:39 +0200 Subject: [PATCH 3/3] chore: bump project's version --- src/kapla/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kapla/__init__.py b/src/kapla/__init__.py index 571d8cc..eab0e9c 100644 --- a/src/kapla/__init__.py +++ b/src/kapla/__init__.py @@ -1 +1 @@ -__version__ = "0.33.0" +__version__ = "0.34.0"