Skip to content

Commit 566ac16

Browse files
committed
Avoid impossible impossible minversion requirement
Fixes: tox-dev#2414
1 parent f7f5d68 commit 566ac16

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

docs/changelog/2414.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Avoid impossible minversion version requirements. - by :user:`ssbarnea`.

src/tox/provision.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ def provision(state: State) -> int | bool:
7575

7676
def add_tox_requires_min_version(requires: list[Requirement]) -> list[Requirement]:
7777
min_version: Version = state.conf.core["min_version"]
78+
# If own version can be a development one or a pre-release, we need to only use its base_version for
79+
# requirements, or pip will never be able to find a version that is compatible with the requirement.
80+
if min_version.is_devrelease or min_version.is_prerelease:
81+
# Earliest possible pre-release number for current base version
82+
min_version = Version(f"{min_version.base_version}a0")
7883
requires.append(Requirement(f"tox >= {min_version.public}"))
7984
return requires
8085

tests/test_provision.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import pytest
1414
from filelock import FileLock
1515
from packaging.requirements import Requirement
16+
from packaging.version import Version
1617

1718
from tox import __version__
1819
from tox.pytest import Index, IndexServer, MonkeyPatch, TempPathFactory, ToxProjectCreator
@@ -188,5 +189,7 @@ def test_provision_no_recreate_json(tox_project: ToxProjectCreator) -> None:
188189
assert msg in result.out
189190
with (project.path / "out.json").open() as file_handler:
190191
requires = json.load(file_handler)
191-
version = __version__.split("+")[0]
192+
# __version__ could be something like 4.0.0rc1.dev1+... so we still
193+
# need to sanitize it to keep the base and add "a0"
194+
version = f"{Version(__version__).base_version}a0"
192195
assert requires == {"minversion": version, "requires": ["p", f"tox>={version}"]}

whitelist.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
0rc1
12
0x3
23
10ms
34
1s
45
2s
56
5s
7+
a0
68
abi
79
addinivalue
810
addnodes
@@ -48,9 +50,11 @@ dep
4850
deps
4951
desc
5052
dest
53+
dev1
5154
devenv
5255
devnull
5356
devpi
57+
devrelease
5458
dirname
5559
distinfo
5660
distlib
@@ -152,6 +156,7 @@ pos
152156
posargs
153157
posix
154158
prepend
159+
prerelease
155160
prereleases
156161
prj
157162
prog

0 commit comments

Comments
 (0)