Skip to content

Commit

Permalink
Use a dict instead of a set for extra_deps
Browse files Browse the repository at this point in the history
  • Loading branch information
BergLucas committed Aug 23, 2023
1 parent e7a8565 commit b243837
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/poetry/core/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ def configure_package(
package=package, group="dev", dependencies=config["dev-dependencies"]
)

extra_deps = set()
extra_deps = {}
extras = config.get("extras", {})
for extra_name, requirements in extras.items():
extra_name = canonicalize_name(extra_name)
Expand All @@ -201,13 +201,18 @@ def configure_package(
continue

if req_extras:
dep = dep.with_features((*dep.extras, *req_extras))
extra_deps.add(dep)
dep_extras = frozenset((*dep.extras, *req_extras))
dep_key = (dep.name, dep_extras)
if dep_key in extra_deps:
dep = extra_deps[dep_key]
else:
dep = dep.with_features(dep_extras)
extra_deps[dep_key] = dep

dep.in_extras.append(extra_name)
package.extras[extra_name].append(dep)

package.requires.extend(extra_deps)
package.requires.extend(extra_deps.values())

if "build" in config:
build = config["build"]
Expand Down

0 comments on commit b243837

Please sign in to comment.