From 83406cbf264d04bfc2a4e151cecf04f787ed734d Mon Sep 17 00:00:00 2001 From: Andy Kluger Date: Tue, 28 Sep 2021 15:54:09 -0400 Subject: [PATCH] Parse each comma-separated --extra argument to pip-compile as multiple entries (#1493) --- piptools/scripts/compile.py | 3 +++ tests/test_cli_compile.py | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index 0c29eb090..0a2e828f1 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -1,3 +1,4 @@ +import itertools import os import shlex import sys @@ -422,6 +423,8 @@ def cli( ) ) + extras = tuple(itertools.chain.from_iterable(ex.split(",") for ex in extras)) + if extras and not setup_file_found: msg = "--extra has effect only with setup.py and PEP-517 input formats" raise click.BadParameter(msg) diff --git a/tests/test_cli_compile.py b/tests/test_cli_compile.py index 159b1af5a..bb15877b4 100644 --- a/tests/test_cli_compile.py +++ b/tests/test_cli_compile.py @@ -1933,9 +1933,16 @@ def test_one_extra(fake_dists, runner, make_module, fname, content): @pytest.mark.network +@pytest.mark.parametrize( + "extra_opts", + ( + pytest.param(("--extra", "dev", "--extra", "test"), id="singular"), + pytest.param(("--extra", "dev,test"), id="comma-separated"), + ), +) @pytest.mark.parametrize(("fname", "content"), METADATA_TEST_CASES) @pytest.mark.xfail(is_pypy, reason="https://github.com/jazzband/pip-tools/issues/1375") -def test_multiple_extras(fake_dists, runner, make_module, fname, content): +def test_multiple_extras(fake_dists, runner, make_module, fname, content, extra_opts): """ Test passing multiple `--extra` params. """ @@ -1944,10 +1951,7 @@ def test_multiple_extras(fake_dists, runner, make_module, fname, content): cli, [ "-n", - "--extra", - "dev", - "--extra", - "test", + *extra_opts, "--find-links", fake_dists, meta_path,