Skip to content

Commit 0b4793a

Browse files
authored
Fix: Fix version scheme, by avoiding version jump on pre-releases (#674)
1 parent 7a2cebf commit 0b4793a

File tree

4 files changed

+52
-2
lines changed

4 files changed

+52
-2
lines changed

pontos/version/_calculator.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,18 @@ def next_major_version(cls, current_version: Version) -> Version:
9797
"1.2.3" will return "2.0.0"
9898
"1.2.3.dev1" will return "2.0.0"
9999
"1.2.3-alpha1" will return "2.0.0"
100+
"0.5.0-a1" will return "0.5.0"
101+
"0.5.0.dev1" will return "0.5.0"
100102
"""
103+
if (
104+
(current_version.is_pre_release or current_version.is_dev_release)
105+
and current_version.patch == 0
106+
and current_version.minor == 0
107+
):
108+
return cls.version_from_string(
109+
f"{current_version.major}.{current_version.minor}."
110+
f"{current_version.patch}"
111+
)
101112
return cls.version_from_string(f"{current_version.major + 1}.0.0")
102113

103114
@classmethod
@@ -109,7 +120,16 @@ def next_minor_version(cls, current_version: Version) -> Version:
109120
"1.2.3" will return "1.3.0"
110121
"1.2.3.dev1" will return "1.3.0"
111122
"1.2.3-alpha1" will return "1.3.0"
123+
"1.0.0-a1" will return "1.0.0"
124+
"1.0.0.dev1" will return "1.0.0"
112125
"""
126+
if (
127+
current_version.is_pre_release or current_version.is_dev_release
128+
) and current_version.patch == 0:
129+
return cls.version_from_string(
130+
f"{current_version.major}.{current_version.minor}."
131+
f"{current_version.patch}"
132+
)
113133
return cls.version_from_string(
114134
f"{current_version.major}.{current_version.minor + 1}.0"
115135
)

pontos/version/schemes/_semantic.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,16 @@ def is_dev_release(self) -> bool:
8989
@property
9090
def is_alpha_release(self) -> bool:
9191
"""Whether this version is a alpha release."""
92-
return self.pre is not None and self.pre[0] == "alpha"
92+
return self.pre is not None and (
93+
self.pre[0] == "alpha" or self.pre[0] == "a"
94+
)
9395

9496
@property
9597
def is_beta_release(self) -> bool:
9698
"""Whether this version is a beta release."""
97-
return self.pre is not None and self.pre[0] == "beta"
99+
return self.pre is not None and (
100+
self.pre[0] == "beta" or self.pre[0] == "b"
101+
)
98102

99103
@property
100104
def is_release_candidate(self) -> bool:

tests/version/schemes/test_pep440.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ def test_next_minor_version(self):
168168
"22.4.1",
169169
"22.4.1.dev1",
170170
"22.4.1.dev3",
171+
"1.0.0a1",
172+
"1.1.0a1",
173+
"1.0.0.dev1",
174+
"1.1.0.dev1",
171175
]
172176
assert_versions = [
173177
"0.1.0",
@@ -180,6 +184,10 @@ def test_next_minor_version(self):
180184
"22.5.0",
181185
"22.5.0",
182186
"22.5.0",
187+
"1.0.0",
188+
"1.1.0",
189+
"1.0.0",
190+
"1.1.0",
183191
]
184192

185193
for current_version, assert_version in zip(
@@ -206,6 +214,8 @@ def test_next_major_version(self):
206214
"22.4.1",
207215
"22.4.1.dev1",
208216
"22.4.1.dev3",
217+
"1.0.0a1",
218+
"1.0.0.dev1",
209219
]
210220
assert_versions = [
211221
"1.0.0",
@@ -218,6 +228,8 @@ def test_next_major_version(self):
218228
"23.0.0",
219229
"23.0.0",
220230
"23.0.0",
231+
"1.0.0",
232+
"1.0.0",
221233
]
222234

223235
for current_version, assert_version in zip(

tests/version/schemes/test_semantic.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ def test_next_minor_version(self):
172172
"22.4.1",
173173
"22.4.1-dev1",
174174
"22.4.1-dev3",
175+
"1.0.0-a1",
176+
"1.1.0-alpha1",
177+
"1.0.0-dev1",
178+
"1.1.0-dev1",
175179
]
176180
assert_versions = [
177181
"0.1.0",
@@ -184,6 +188,10 @@ def test_next_minor_version(self):
184188
"22.5.0",
185189
"22.5.0",
186190
"22.5.0",
191+
"1.0.0",
192+
"1.1.0",
193+
"1.0.0",
194+
"1.1.0",
187195
]
188196

189197
for current_version, assert_version in zip(
@@ -210,6 +218,9 @@ def test_next_major_version(self):
210218
"22.4.1",
211219
"22.4.1-dev1",
212220
"22.4.1-dev3",
221+
"1.0.0-a1",
222+
"1.0.0-beta1",
223+
"1.0.0-dev1",
213224
]
214225
assert_versions = [
215226
"1.0.0",
@@ -222,6 +233,9 @@ def test_next_major_version(self):
222233
"23.0.0",
223234
"23.0.0",
224235
"23.0.0",
236+
"1.0.0",
237+
"1.0.0",
238+
"1.0.0",
225239
]
226240

227241
for current_version, assert_version in zip(

0 commit comments

Comments
 (0)