Skip to content

Commit a8beb7a

Browse files
authored
Merge pull request jazzband#1981 from dragly/fix-all-extras
🐛 Fix collecting deps for all extras in multiple input packages
2 parents e0afb79 + 7caff1a commit a8beb7a

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

piptools/scripts/compile.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ def cli(
205205
).format(", ".join(DEFAULT_REQUIREMENTS_FILES))
206206
)
207207

208+
if all_extras and extras:
209+
msg = "--extra has no effect when used with --all-extras"
210+
raise click.BadParameter(msg)
211+
208212
if not output_file:
209213
# An output file must be provided for stdin
210214
if src_files == ("-",):
@@ -372,10 +376,7 @@ def cli(
372376
if not only_build_deps:
373377
constraints.extend(metadata.requirements)
374378
if all_extras:
375-
if extras:
376-
msg = "--extra has no effect when used with --all-extras"
377-
raise click.BadParameter(msg)
378-
extras = metadata.extras
379+
extras += metadata.extras
379380
if build_deps_targets:
380381
constraints.extend(metadata.build_requirements)
381382
else:

tests/test_cli_compile.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3002,6 +3002,40 @@ def test_cli_compile_strip_extras(runner, make_package, make_sdist, tmpdir):
30023002
assert "[more]" not in out.stderr
30033003

30043004

3005+
def test_cli_compile_all_extras_with_multiple_packages(
3006+
runner, make_package, make_sdist, tmpdir
3007+
):
3008+
"""
3009+
Assures that ``--all-extras`` works when multiple sources are specified.
3010+
"""
3011+
test_package_1 = make_package(
3012+
"test_package_1",
3013+
version="0.1",
3014+
extras_require={"more": []},
3015+
)
3016+
test_package_2 = make_package(
3017+
"test_package_2",
3018+
version="0.1",
3019+
extras_require={"more": []},
3020+
)
3021+
3022+
out = runner.invoke(
3023+
cli,
3024+
[
3025+
"--all-extras",
3026+
"--output-file",
3027+
"requirements.txt",
3028+
str(test_package_1 / "setup.py"),
3029+
str(test_package_2 / "setup.py"),
3030+
],
3031+
)
3032+
3033+
assert out.exit_code == 0, out
3034+
assert "--all-extras" in out.stderr
3035+
assert f"test_package_1{os.path.sep}0.1{os.path.sep}setup.py" in out.stderr
3036+
assert f"test_package_2{os.path.sep}0.1{os.path.sep}setup.py" in out.stderr
3037+
3038+
30053039
@pytest.mark.parametrize(
30063040
("package_specs", "constraints", "existing_reqs", "expected_reqs"),
30073041
(

0 commit comments

Comments
 (0)