77from textwrap import dedent
88
99from cpp_dev .common .version import SemanticVersionWithOptionalParts
10- from cpp_dev .dependency .provider import DependencyProvider
10+ from cpp_dev .dependency .provider import Dependency , DependencyProvider
1111from cpp_dev .dependency .specifier import DependencySpecifier
1212from cpp_dev .dependency .types import DependencySpecifierParts , VersionSpecBound , VersionSpecBoundOperand
1313
14- from .config import DependencyType , ProjectConfig , create_project_config , load_project_config , update_dependencies
14+ from .config import (
15+ DependencyType ,
16+ ProjectConfig ,
17+ create_project_config ,
18+ load_project_config ,
19+ store_project_config ,
20+ update_dependencies ,
21+ )
1522from .lockfile import create_initial_lock_file
1623from .path_composition import compose_include_file , compose_source_file
1724
@@ -37,6 +44,9 @@ def add_package_dependency(self, deps: list[DependencySpecifier], dep_type: Depe
3744 refined_deps = _refine_package_dependencies (self ._dependency_provider , deps )
3845 project_config = load_project_config (self .project_dir )
3946 update_dependencies (project_config , refined_deps , dep_type )
47+ dependency_hull = _obtain_dependency_hull (project_config , self ._dependency_provider )
48+
49+ store_project_config (self .project_dir , project_config )
4050
4151
4252def setup_project (
@@ -173,3 +183,10 @@ def _refine_package_dependencies(
173183 DependencySpecifier .from_parts (DependencySpecifierParts (repository , dep .name , version_spec ))
174184 )
175185 return updated_deps
186+
187+
188+ def _obtain_dependency_hull (project_config : ProjectConfig , dep_provider : DependencyProvider ) -> list [Dependency ]:
189+ """Obtain the dependency hull for the given project configuration."""
190+ return dep_provider .collect_dependency_hull (
191+ project_config .dependencies + project_config .dev_dependencies + project_config .cpd_dependencies
192+ )
0 commit comments