mirror of https://github.com/pypa/pip
Filter out build requirements that require an extra to be used
There is no mechanism provided for build requirements to have extras. It should be acceptable to enforce that any "optional" packages that are supposed to be conditionally installed based on the presence of an extra should not be installed in a build environment.
This commit is contained in:
parent
1d41abbb43
commit
611e9253ff
|
@ -175,8 +175,10 @@ class BuildEnvironment:
|
|||
)
|
||||
for req_str in reqs:
|
||||
req = Requirement(req_str)
|
||||
if req.marker is not None and not req.marker.evaluate():
|
||||
continue # FIXME: Consider extras?
|
||||
# We're explicitly evaluating with an empty extra value, since build
|
||||
# environments are not provided any mechanism to select specific extras.
|
||||
if req.marker is not None and not req.marker.evaluate({"extra": ""}):
|
||||
continue
|
||||
dist = env.get_distribution(req.name)
|
||||
if not dist:
|
||||
missing.add(req_str)
|
||||
|
|
|
@ -178,6 +178,7 @@ def test_build_env_requirements_check(script: PipTestEnvironment) -> None:
|
|||
[
|
||||
"bar==2.0; python_version < '3.0'",
|
||||
"bar==3.0; python_version >= '3.0'",
|
||||
"foo==4.0; extra == 'dev'",
|
||||
],
|
||||
)
|
||||
assert r == (set(), set()), repr(r)
|
||||
|
|
Loading…
Reference in New Issue