diff --git a/Support-passing-the-same-key-multiple-times-in-confi.patch b/Support-passing-the-same-key-multiple-times-in-confi.patch new file mode 100644 index 0000000..0496d4e --- /dev/null +++ b/Support-passing-the-same-key-multiple-times-in-confi.patch @@ -0,0 +1,76 @@ +From d498b3997167865a42f4c663eac518cae3a0daeb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Filipe=20La=C3=ADns?= +Date: Fri, 17 Mar 2023 21:23:19 +0000 +Subject: [PATCH] Support passing the same key multiple times in + --config-settings (#11853) + +(cherry picked from commit 1268487cbab1b2ffab881b5961c0476e655b6c88) +--- + news/11681.feature.rst | 4 ++++ + src/pip/_internal/cli/cmdoptions.py | 8 +++++++- + tests/unit/test_pyproject_config.py | 15 ++++++++++++--- + 3 files changed, 23 insertions(+), 4 deletions(-) + create mode 100644 news/11681.feature.rst + +diff --git a/news/11681.feature.rst b/news/11681.feature.rst +new file mode 100644 +index 000000000..a0d918b19 +--- /dev/null ++++ b/news/11681.feature.rst +@@ -0,0 +1,4 @@ ++The ``--config-settings``/``-C`` option now supports using the same key multiple ++times. When the same key is specified multiple times, all values are passed to ++the build backend as a list, as opposed to the previous behavior where pip would ++only pass the last value is the same key was used multiple times. +diff --git a/src/pip/_internal/cli/cmdoptions.py b/src/pip/_internal/cli/cmdoptions.py +index b4e2560de..4179f98a5 100644 +--- a/src/pip/_internal/cli/cmdoptions.py ++++ b/src/pip/_internal/cli/cmdoptions.py +@@ -803,7 +803,13 @@ def _handle_config_settings( + if dest is None: + dest = {} + setattr(parser.values, option.dest, dest) +- dest[key] = val ++ if key in dest: ++ if isinstance(dest[key], list): ++ dest[key].append(val) ++ else: ++ dest[key] = [dest[key], val] ++ else: ++ dest[key] = val + + + config_settings: Callable[..., Option] = partial( +diff --git a/tests/unit/test_pyproject_config.py b/tests/unit/test_pyproject_config.py +index 9937f3880..c7e469560 100644 +--- a/tests/unit/test_pyproject_config.py ++++ b/tests/unit/test_pyproject_config.py +@@ -1,3 +1,5 @@ ++from typing import Dict, List ++ + import pytest + + from pip._internal.commands import create_command +@@ -36,9 +38,16 @@ def test_set_config_empty_value() -> None: + assert options.config_settings == {"x": ""} + + +-def test_replace_config_value() -> None: ++@pytest.mark.parametrize( ++ ("passed", "expected"), ++ [ ++ (["x=hello", "x=world"], {"x": ["hello", "world"]}), ++ (["x=hello", "x=world", "x=other"], {"x": ["hello", "world", "other"]}), ++ ], ++) ++def test_multiple_config_values(passed: List[str], expected: Dict[str, str]) -> None: + i = create_command("install") + options, _ = i.parse_args( +- ["xxx", "--config-settings", "x=hello", "--config-settings", "x=world"] ++ ["xxx", *(f"--config-settings={option}" for option in passed)] + ) +- assert options.config_settings == {"x": "world"} ++ assert options.config_settings == expected +-- +2.40.1 + diff --git a/python-pip.spec b/python-pip.spec index 08aedb1..8a0640f 100644 --- a/python-pip.spec +++ b/python-pip.spec @@ -21,7 +21,7 @@ Name: python-%{srcname} Version: %{base_version}%{?prerel:~%{prerel}} -Release: 2%{?dist} +Release: 3%{?dist} Summary: A tool for installing and managing Python packages # We bundle a lot of libraries with pip, which itself is under MIT license. @@ -90,6 +90,13 @@ Patch: nowarn-pip._internal.main.patch # Upstream issue: https://github.com/pypa/packaging/issues/368 Patch: no-version-warning.patch +# Support passing the same key multiple times in --config-settings +# This is needed for pyproject-rpm-macros to have consistent behavior across +# Fedora releases. +# Based on: +# https://github.com/pypa/pip/commit/1268487cbab1b2ffab881b5961c0476e655b6c88 +Patch: Support-passing-the-same-key-multiple-times-in-confi.patch + # Downstream only patch # Users might have local installations of pip from using # `pip install --user --upgrade pip` on older/newer versions. @@ -390,6 +397,9 @@ pytest_k='not completion' %{python_wheel_dir}/%{python_wheel_name} %changelog +* Tue May 30 2023 Maxwell G - 22.3.1-3 +- Backport patch to support passing the same key multiple times in --config-settings + * Fri Jan 20 2023 Fedora Release Engineering - 22.3.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild