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
bbab400ba6
commit
9d160aac76
|
@ -27,6 +27,7 @@ from typing import (
|
|||
Iterable,
|
||||
Iterator,
|
||||
List,
|
||||
Mapping,
|
||||
Optional,
|
||||
TextIO,
|
||||
Tuple,
|
||||
|
@ -742,17 +743,25 @@ class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller):
|
|||
|
||||
|
||||
def merge_config_settings(
|
||||
reqs_settings: Dict[str, Union[str, List[str]]],
|
||||
cli_settings: Dict[str, Union[str, List[str]]],
|
||||
reqs_settings: Mapping[str, Union[str, List[str]]],
|
||||
cli_settings: Mapping[str, Union[str, List[str]]],
|
||||
) -> Dict[str, Union[str, List[str]]]:
|
||||
dd: Dict[str, Union[str, List[str]]] = {}
|
||||
for d in (reqs_settings, cli_settings):
|
||||
for k, v in d.items():
|
||||
if k in dd:
|
||||
if isinstance(dd[k], list):
|
||||
dd[k].append(v)
|
||||
value = dd[k]
|
||||
if isinstance(value, list):
|
||||
if isinstance(v, list):
|
||||
value.extend(v)
|
||||
else:
|
||||
value.append(v)
|
||||
else:
|
||||
dd[k] = [dd[k], v]
|
||||
if isinstance(v, str):
|
||||
value = [value, v]
|
||||
else:
|
||||
value = [value, *v]
|
||||
dd[k] = value
|
||||
else:
|
||||
dd[k] = v
|
||||
return dd
|
||||
|
|
|
@ -204,11 +204,16 @@ def test_merge_cli_reqs_config_settings(script: PipTestEnvironment) -> None:
|
|||
"reqs.txt",
|
||||
"--config-settings",
|
||||
"FOO=FOOBAR",
|
||||
"--config-settings",
|
||||
"FOO=BARFOO",
|
||||
)
|
||||
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"], "BAZ": "BAR"}
|
||||
assert json.load(f) == {
|
||||
"FOO": ["HELLO", "BAR", "FOOBAR", "BARFOO"],
|
||||
"BAZ": "BAR",
|
||||
}
|
||||
|
||||
|
||||
def test_cli_config_settings_reqs(script: PipTestEnvironment) -> None:
|
||||
|
|
Loading…
Reference in a new issue