Commit bf0dbc07 by David Hotham Committed by Bjorn Neergaard

remove package.package stutter

parent a7fef27e
...@@ -491,42 +491,47 @@ class Provider: ...@@ -491,42 +491,47 @@ class Provider:
for dep in dependencies for dep in dependencies
] ]
def complete_package(self, package: DependencyPackage) -> DependencyPackage: def complete_package(
if package.package.is_root(): self, dependency_package: DependencyPackage
package = package.clone() ) -> DependencyPackage:
requires = package.package.all_requires package = dependency_package.package
elif not package.package.is_root() and package.package.source_type not in { dependency = dependency_package.dependency
if package.is_root():
dependency_package = dependency_package.clone()
package = dependency_package.package
dependency = dependency_package.dependency
requires = package.all_requires
elif package.source_type not in {
"directory", "directory",
"file", "file",
"url", "url",
"git", "git",
}: }:
try: try:
package = DependencyPackage( dependency_package = DependencyPackage(
package.dependency, dependency,
self._pool.package( self._pool.package(
package.package.name, package.name,
package.package.version.text, package.version.text,
extras=list(package.dependency.extras), extras=list(dependency.extras),
repository=package.dependency.source_name, repository=dependency.source_name,
), ),
) )
except PackageNotFound as e: except PackageNotFound as e:
try: try:
package = next( dependency_package = next(
DependencyPackage( DependencyPackage(dependency, pkg)
package.dependency, for pkg in self.search_for_installed_packages(dependency)
pkg,
)
for pkg in self.search_for_installed_packages(
package.dependency
)
) )
except StopIteration: except StopIteration:
raise e from e raise e from e
requires = package.package.requires
package = dependency_package.package
dependency = dependency_package.dependency
requires = package.requires
else: else:
requires = package.package.requires requires = package.requires
if self._load_deferred: if self._load_deferred:
# Retrieving constraints for deferred dependencies # Retrieving constraints for deferred dependencies
...@@ -540,16 +545,20 @@ class Provider: ...@@ -540,16 +545,20 @@ class Provider:
# If some extras/features were required, we need to # If some extras/features were required, we need to
# add a special dependency representing the base package # add a special dependency representing the base package
# to the current package # to the current package
if package.dependency.extras: if dependency.extras:
for extra in package.dependency.extras: for extra in dependency.extras:
extra = safe_extra(extra) extra = safe_extra(extra)
if extra not in package.package.extras: if extra not in package.extras:
continue continue
optional_dependencies += [d.name for d in package.package.extras[extra]] optional_dependencies += [d.name for d in package.extras[extra]]
package = package.with_features(list(package.dependency.extras)) dependency_package = dependency_package.with_features(
_dependencies.append(package.package.without_features().to_dependency()) list(dependency.extras)
)
package = dependency_package.package
dependency = dependency_package.dependency
_dependencies.append(package.without_features().to_dependency())
for dep in requires: for dep in requires:
if not self._python_constraint.allows_any(dep.python_constraint): if not self._python_constraint.allows_any(dep.python_constraint):
...@@ -561,12 +570,12 @@ class Provider: ...@@ -561,12 +570,12 @@ class Provider:
if self._env and not dep.marker.validate(self._env.marker_env): if self._env and not dep.marker.validate(self._env.marker_env):
continue continue
if not package.package.is_root() and ( if not package.is_root() and (
(dep.is_optional() and dep.name not in optional_dependencies) (dep.is_optional() and dep.name not in optional_dependencies)
or ( or (
dep.in_extras dep.in_extras
and not set(dep.in_extras).intersection( and not set(dep.in_extras).intersection(
{safe_extra(extra) for extra in package.dependency.extras} {safe_extra(extra) for extra in dependency.extras}
) )
) )
): ):
...@@ -574,7 +583,9 @@ class Provider: ...@@ -574,7 +583,9 @@ class Provider:
_dependencies.append(dep) _dependencies.append(dep)
dependencies = self._get_dependencies_with_overrides(_dependencies, package) dependencies = self._get_dependencies_with_overrides(
_dependencies, dependency_package
)
# Searching for duplicate dependencies # Searching for duplicate dependencies
# #
...@@ -730,9 +741,11 @@ class Provider: ...@@ -730,9 +741,11 @@ class Provider:
for dep in deps: for dep in deps:
if not overrides_marker_intersection.intersect(dep.marker).is_empty(): if not overrides_marker_intersection.intersect(dep.marker).is_empty():
current_overrides = self._overrides.copy() current_overrides = self._overrides.copy()
package_overrides = current_overrides.get(package, {}).copy() package_overrides = current_overrides.get(
dependency_package, {}
).copy()
package_overrides.update({dep.name: dep}) package_overrides.update({dep.name: dep})
current_overrides.update({package: package_overrides}) current_overrides.update({dependency_package: package_overrides})
overrides.append(current_overrides) overrides.append(current_overrides)
if overrides: if overrides:
...@@ -741,9 +754,9 @@ class Provider: ...@@ -741,9 +754,9 @@ class Provider:
# Modifying dependencies as needed # Modifying dependencies as needed
clean_dependencies = [] clean_dependencies = []
for dep in dependencies: for dep in dependencies:
if not package.dependency.transitive_marker.without_extras().is_any(): if not dependency.transitive_marker.without_extras().is_any():
marker_intersection = ( marker_intersection = (
package.dependency.transitive_marker.without_extras().intersect( dependency.transitive_marker.without_extras().intersect(
dep.marker.without_extras() dep.marker.without_extras()
) )
) )
...@@ -755,9 +768,9 @@ class Provider: ...@@ -755,9 +768,9 @@ class Provider:
dep.transitive_marker = marker_intersection dep.transitive_marker = marker_intersection
if not package.dependency.python_constraint.is_any(): if not dependency.python_constraint.is_any():
python_constraint_intersection = dep.python_constraint.intersect( python_constraint_intersection = dep.python_constraint.intersect(
package.dependency.python_constraint dependency.python_constraint
) )
if python_constraint_intersection.is_empty(): if python_constraint_intersection.is_empty():
# This dependency is not needed under current python constraint. # This dependency is not needed under current python constraint.
...@@ -766,14 +779,13 @@ class Provider: ...@@ -766,14 +779,13 @@ class Provider:
clean_dependencies.append(dep) clean_dependencies.append(dep)
package = DependencyPackage( package = package.with_dependency_groups([], only=True)
package.dependency, package.package.with_dependency_groups([], only=True) dependency_package = DependencyPackage(dependency, package)
)
for dep in clean_dependencies: for dep in clean_dependencies:
package.package.add_dependency(dep) package.add_dependency(dep)
return package return dependency_package
def debug(self, message: str, depth: int = 0) -> None: def debug(self, message: str, depth: int = 0) -> None:
if not (self._io.is_very_verbose() or self._io.is_debug()): if not (self._io.is_very_verbose() or self._io.is_debug()):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment