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:
parent
d41b266bc4
commit
146b000308
2 changed files with 11 additions and 8 deletions
|
@ -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
|
||||
|
|
|
@ -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"}
|
||||
|
|
Loading…
Reference in a new issue