1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00

fix merge_config_settings

This commit is contained in:
q0w 2023-03-20 16:32:42 +03:00
parent d41b266bc4
commit 146b000308
2 changed files with 11 additions and 8 deletions

View file

@ -14,7 +14,6 @@ import stat
import sys
import sysconfig
import urllib.parse
from collections import defaultdict
from io import StringIO
from itertools import filterfalse, tee, zip_longest
from types import TracebackType
@ -746,11 +745,14 @@ def merge_config_settings(
reqs_settings: Dict[str, Union[str, List[str]]],
cli_settings: Dict[str, Union[str, List[str]]],
) -> Dict[str, Union[str, List[str]]]:
dd = defaultdict(list)
dd: Dict[str, Union[str, List[str]]] = {}
for d in (reqs_settings, cli_settings):
for k, v in d.items():
if isinstance(v, list):
dd[k].extend(v)
if k in dd:
if isinstance(dd[k], list):
dd[k].append(v)
else:
dd[k] = [dd[k], v]
else:
dd[k].append(v)
return dict(dd)
dd[k] = v
return dd

View file

@ -192,7 +192,8 @@ def test_merge_cli_reqs_config_settings(script: PipTestEnvironment) -> None:
{"pyproject.toml": PYPROJECT_TOML, "backend/dummy_backend.py": BACKEND_SRC},
)
script.scratch_path.joinpath("reqs.txt").write_text(
'foo --config-settings "FOO=HELLO" --config-settings "FOO=BAR"'
'foo --config-settings "FOO=HELLO" --config-settings "FOO=BAR" '
'--config-settings "BAZ=BAR"'
)
script.pip(
"install",
@ -207,4 +208,4 @@ def test_merge_cli_reqs_config_settings(script: PipTestEnvironment) -> None:
script.assert_installed(foo="1.0")
config = script.site_packages_path / "config.json"
with open(config, "rb") as f:
assert json.load(f) == {"FOO": ["HELLO", "BAR", "FOOBAR"]}
assert json.load(f) == {"FOO": ["HELLO", "BAR", "FOOBAR"], "BAZ": "BAR"}