22
33from typing import TYPE_CHECKING
44
5+ from packaging .utils import canonicalize_name
56from poetry .core .semver .util import constraint_regions
67from poetry .core .version .markers import AnyMarker
78from poetry .core .version .markers import SingleMarker
1415 from collections .abc import Iterator
1516 from collections .abc import Sequence
1617
18+ from packaging .utils import NormalizedName
1719 from poetry .core .packages .dependency import Dependency
1820 from poetry .core .packages .package import Package
1921 from poetry .core .version .markers import BaseMarker
@@ -51,7 +53,7 @@ def get_project_dependency_packages(
5153 locker : Locker ,
5254 project_requires : list [Dependency ],
5355 project_python_marker : BaseMarker | None = None ,
54- extras : bool | Sequence [str ] | None = None ,
56+ extras : bool | Sequence [NormalizedName ] | None = None ,
5557) -> Iterator [DependencyPackage ]:
5658 # Apply the project python marker to all requirements.
5759 if project_python_marker is not None :
@@ -68,10 +70,16 @@ def get_project_dependency_packages(
6870 extra_package_names : set [str ] | None = None
6971
7072 if extras is not True :
73+ locked_extras = {
74+ canonicalize_name (extra ): [
75+ canonicalize_name (dependency ) for dependency in dependencies
76+ ]
77+ for extra , dependencies in locker .lock_data .get ("extras" , {}).items ()
78+ }
7179 extra_package_names = set (
7280 get_extra_package_names (
7381 repository .packages ,
74- locker . lock_data . get ( "extras" , {}),
82+ locked_extras , # type: ignore[arg-type]
7583 extras or (),
7684 )
7785 )
0 commit comments