Skip to content

Commit 8c7caa1

Browse files
radoeringabn
authored andcommitted
version: fix allows for local and post releases according to PEP 440
1 parent 60453f4 commit 8c7caa1

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

src/poetry/core/semver/version.py

-6
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,6 @@ def allows(self, version: Version | None) -> bool:
8686
# allow weak equality to allow `3.0.0+local.1` for `3.0.0`
8787
if not _this.is_local() and _other.is_local():
8888
_other = _other.without_local()
89-
elif _this.is_local() and not _other.is_local():
90-
_this = _this.without_local()
91-
92-
# allow weak equality to allow `3.0.0-1` for `3.0.0`
93-
if not _this.is_postrelease() and _other.is_postrelease():
94-
_other = _other.without_postrelease()
9589

9690
return _this == _other
9791

tests/semver/test_version.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -122,25 +122,30 @@ def test_allows() -> None:
122122
assert not v.allows(Version.parse("1.3.3"))
123123
assert not v.allows(Version.parse("1.2.4"))
124124
assert not v.allows(Version.parse("1.2.3-dev"))
125+
assert not v.allows(Version.parse("1.2.3-1"))
126+
assert not v.allows(Version.parse("1.2.3-1+build"))
125127
assert v.allows(Version.parse("1.2.3+build"))
126-
assert v.allows(Version.parse("1.2.3-1"))
127-
assert v.allows(Version.parse("1.2.3-1+build"))
128128

129129

130130
def test_allows_with_local() -> None:
131131
v = Version.parse("1.2.3+build.1")
132132
assert v.allows(v)
133+
assert not v.allows(Version.parse("1.2.3"))
133134
assert not v.allows(Version.parse("1.3.3"))
134135
assert not v.allows(Version.parse("1.2.3-dev"))
135136
assert not v.allows(Version.parse("1.2.3+build.2"))
136-
assert v.allows(Version.parse("1.2.3-1"))
137-
assert v.allows(Version.parse("1.2.3-1+build.1"))
137+
# local version with a great number of segments will always compare as
138+
# greater than a local version with fewer segments
139+
assert not v.allows(Version.parse("1.2.3+build.1.0"))
140+
assert not v.allows(Version.parse("1.2.3-1"))
141+
assert not v.allows(Version.parse("1.2.3-1+build.1"))
138142

139143

140144
def test_allows_with_post() -> None:
141145
v = Version.parse("1.2.3-1")
142146
assert v.allows(v)
143147
assert not v.allows(Version.parse("1.2.3"))
148+
assert not v.allows(Version.parse("1.2.3-2"))
144149
assert not v.allows(Version.parse("2.2.3"))
145150
assert not v.allows(Version.parse("1.2.3-dev"))
146151
assert not v.allows(Version.parse("1.2.3+build.2"))
@@ -190,7 +195,12 @@ def test_allows_any() -> None:
190195
(
191196
Version.parse("1.2.3"),
192197
Version.parse("1.2.3.post0"),
193-
Version.parse("1.2.3.post0"),
198+
EmptyConstraint(),
199+
),
200+
(
201+
Version.parse("1.2.3"),
202+
Version.parse("1.2.3+local"),
203+
Version.parse("1.2.3+local"),
194204
),
195205
],
196206
)

0 commit comments

Comments
 (0)