From 2951b42afdf75d3cdffd865a2639aafff873414e Mon Sep 17 00:00:00 2001 From: David Hotham Date: Wed, 25 May 2022 20:17:47 +0100 Subject: [PATCH] exporting packages with features --- src/poetry/packages/locker.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/poetry/packages/locker.py b/src/poetry/packages/locker.py index acf77d0e1b0..7ff91f2e45d 100644 --- a/src/poetry/packages/locker.py +++ b/src/poetry/packages/locker.py @@ -261,18 +261,22 @@ def __walk_dependencies( if not locked_package: raise RuntimeError(f"Dependency walk failed at {requirement}") + if requirement.extras: + locked_package = locked_package.with_features(requirement.extras) + # create dependency from locked package to retain dependency metadata # if this is not done, we can end-up with incorrect nested dependencies constraint = requirement.constraint marker = requirement.marker - extras = requirement.extras requirement = locked_package.to_dependency() requirement.marker = requirement.marker.intersect(marker) requirement.set_constraint(constraint) for require in locked_package.requires: - if require.in_extras and extras.isdisjoint(require.in_extras): + if require.in_extras and locked_package.features.isdisjoint( + require.in_extras + ): continue require = deepcopy(require) @@ -369,9 +373,6 @@ def get_project_dependency_packages( project_requires=selected, locked_packages=repository.packages, ): - for extra in dependency.extras: - package.requires_extras.append(extra) - yield DependencyPackage(dependency=dependency, package=package) def set_lock_data(self, root: Package, packages: list[Package]) -> bool: