Skip to content

Commit f8db472

Browse files
austinzhradoering
authored andcommitted
change config to requests.max-retries
1 parent 8b1df4b commit f8db472

File tree

9 files changed

+32
-16
lines changed

9 files changed

+32
-16
lines changed

docs/configuration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,13 +273,13 @@ values, usage instructions and warnings.
273273

274274
Use parallel execution when using the new (`>=1.1.0`) installer.
275275

276-
### `installer.max-retries`
276+
### `requests.max-retries`
277277

278278
**Type**: `int`
279279

280280
**Default**: `0`
281281

282-
**Environment Variable**: `POETRY_INSTALLER_MAX_RETRIES`
282+
**Environment Variable**: `POETRY_REQUESTS_MAX_RETRIES`
283283

284284
*Introduced in 1.9.0*
285285

src/poetry/config/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,12 @@ class Config:
127127
"experimental": {
128128
"system-git-client": False,
129129
},
130+
"requests": {
131+
"max-retries": 0,
132+
},
130133
"installer": {
131134
"parallel": True,
132135
"max-workers": None,
133-
"max-retries": 0,
134136
"no-binary": None,
135137
"only-binary": None,
136138
},
@@ -319,7 +321,7 @@ def _get_normalizer(name: str) -> Callable[[str], Any]:
319321

320322
if name in {
321323
"installer.max-workers",
322-
"installer.max-retries",
324+
"requests.max-retries",
323325
}:
324326
return int_normalizer
325327

src/poetry/console/commands/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ def unique_config_values(self) -> dict[str, tuple[Any, Any]]:
7474
"virtualenvs.prefer-active-python": (boolean_validator, boolean_normalizer),
7575
"virtualenvs.prompt": (str, str),
7676
"experimental.system-git-client": (boolean_validator, boolean_normalizer),
77+
"requests.max-retries": (lambda val: int(val) >= 0, int_normalizer),
7778
"installer.parallel": (boolean_validator, boolean_normalizer),
7879
"installer.max-workers": (lambda val: int(val) > 0, int_normalizer),
79-
"installer.max-retries": (lambda val: int(val) >= 0, int_normalizer),
8080
"installer.no-binary": (
8181
PackageFilterPolicy.validator,
8282
PackageFilterPolicy.normalize,

src/poetry/installation/executor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def __init__(
8989
# Cache whether decorated output is supported.
9090
# https://github.com/python-poetry/cleo/issues/423
9191
self._decorated_output: bool = self._io.output.is_decorated()
92-
self._max_retries = config.get("installer.max-retries", 0)
92+
self._max_retries = config.get("requests.max-retries", 0)
9393

9494
@property
9595
def installations_count(self) -> int:

src/poetry/packages/direct_origin.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from poetry.core.packages.utils.link import Link
99

10+
from poetry.config.config import Config
1011
from poetry.inspection.info import PackageInfo
1112
from poetry.inspection.info import PackageInfoError
1213
from poetry.utils.authenticator import get_default_authenticator
@@ -57,6 +58,8 @@ def _get_package_from_git(
5758
class DirectOrigin:
5859
def __init__(self, artifact_cache: ArtifactCache) -> None:
5960
self._artifact_cache = artifact_cache
61+
config = Config.create()
62+
self._max_retries = config.get("requests.max-retries", 0)
6063
self._authenticator = get_default_authenticator()
6164

6265
@classmethod
@@ -77,7 +80,9 @@ def get_package_from_directory(cls, directory: Path) -> Package:
7780
return PackageInfo.from_directory(path=directory).to_package(root_dir=directory)
7881

7982
def _download_file(self, url: str, dest: Path) -> None:
80-
download_file(url, dest, session=self._authenticator)
83+
download_file(
84+
url, dest, session=self._authenticator, max_retries=self._max_retries
85+
)
8186

8287
def get_package_from_url(self, url: str) -> Package:
8388
link = Link(url)

src/poetry/repositories/http_repository.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def __init__(
6666
self.get_page = functools.lru_cache(maxsize=None)(self._get_page)
6767

6868
self._lazy_wheel = config.get("solver.lazy-wheel", True)
69+
self._max_retries = config.get("requests.max-retries", 0)
6970
# We are tracking if a domain supports range requests or not to avoid
7071
# unnecessary requests.
7172
# ATTENTION: A domain might support range requests only for some files, so the
@@ -95,7 +96,11 @@ def _download(
9596
self, url: str, dest: Path, *, raise_accepts_ranges: bool = False
9697
) -> None:
9798
return download_file(
98-
url, dest, session=self.session, raise_accepts_ranges=raise_accepts_ranges
99+
url,
100+
dest,
101+
session=self.session,
102+
raise_accepts_ranges=raise_accepts_ranges,
103+
max_retries=self._max_retries,
99104
)
100105

101106
@contextmanager

tests/config/test_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def get_options_based_on_normalizer(normalizer: Normalizer) -> Iterator[str]:
3838
[
3939
("installer.parallel", True),
4040
("virtualenvs.create", True),
41-
("installer.max-retries", 0),
41+
("requests.max-retries", 0),
4242
],
4343
)
4444
def test_config_get_default_value(config: Config, name: str, value: bool) -> None:

tests/console/commands/test_config.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ def test_list_displays_default_value_if_not_set(
5555
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
5656
expected = f"""cache-dir = {cache_dir}
5757
experimental.system-git-client = false
58-
installer.max-retries = 0
5958
installer.max-workers = null
6059
installer.no-binary = null
6160
installer.only-binary = null
6261
installer.parallel = true
6362
keyring.enabled = true
63+
requests.max-retries = 0
6464
solver.lazy-wheel = true
6565
virtualenvs.create = true
6666
virtualenvs.in-project = null
@@ -88,12 +88,12 @@ def test_list_displays_set_get_setting(
8888
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
8989
expected = f"""cache-dir = {cache_dir}
9090
experimental.system-git-client = false
91-
installer.max-retries = 0
9291
installer.max-workers = null
9392
installer.no-binary = null
9493
installer.only-binary = null
9594
installer.parallel = true
9695
keyring.enabled = true
96+
requests.max-retries = 0
9797
solver.lazy-wheel = true
9898
virtualenvs.create = false
9999
virtualenvs.in-project = null
@@ -142,12 +142,12 @@ def test_unset_setting(
142142
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
143143
expected = f"""cache-dir = {cache_dir}
144144
experimental.system-git-client = false
145-
installer.max-retries = 0
146145
installer.max-workers = null
147146
installer.no-binary = null
148147
installer.only-binary = null
149148
installer.parallel = true
150149
keyring.enabled = true
150+
requests.max-retries = 0
151151
solver.lazy-wheel = true
152152
virtualenvs.create = true
153153
virtualenvs.in-project = null
@@ -174,12 +174,12 @@ def test_unset_repo_setting(
174174
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
175175
expected = f"""cache-dir = {cache_dir}
176176
experimental.system-git-client = false
177-
installer.max-retries = 0
178177
installer.max-workers = null
179178
installer.no-binary = null
180179
installer.only-binary = null
181180
installer.parallel = true
182181
keyring.enabled = true
182+
requests.max-retries = 0
183183
solver.lazy-wheel = true
184184
virtualenvs.create = true
185185
virtualenvs.in-project = null
@@ -304,12 +304,12 @@ def test_list_displays_set_get_local_setting(
304304
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
305305
expected = f"""cache-dir = {cache_dir}
306306
experimental.system-git-client = false
307-
installer.max-retries = 0
308307
installer.max-workers = null
309308
installer.no-binary = null
310309
installer.only-binary = null
311310
installer.parallel = true
312311
keyring.enabled = true
312+
requests.max-retries = 0
313313
solver.lazy-wheel = true
314314
virtualenvs.create = false
315315
virtualenvs.in-project = null
@@ -344,13 +344,13 @@ def test_list_must_not_display_sources_from_pyproject_toml(
344344
venv_path = json.dumps(os.path.join("{cache-dir}", "virtualenvs"))
345345
expected = f"""cache-dir = {cache_dir}
346346
experimental.system-git-client = false
347-
installer.max-retries = 0
348347
installer.max-workers = null
349348
installer.no-binary = null
350349
installer.only-binary = null
351350
installer.parallel = true
352351
keyring.enabled = true
353352
repositories.foo.url = "https://foo.bar/simple/"
353+
requests.max-retries = 0
354354
solver.lazy-wheel = true
355355
virtualenvs.create = true
356356
virtualenvs.in-project = null

tests/repositories/test_http_repository.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,11 @@ def test_get_info_from_wheel(
8080
else:
8181
mock_metadata_from_wheel_url.assert_not_called()
8282
mock_download.assert_called_once_with(
83-
url, mocker.ANY, session=repo.session, raise_accepts_ranges=lazy_wheel
83+
url,
84+
mocker.ANY,
85+
session=repo.session,
86+
raise_accepts_ranges=lazy_wheel,
87+
max_retries=0,
8488
)
8589
if lazy_wheel:
8690
assert repo._supports_range_requests[domain] is False

0 commit comments

Comments
 (0)