Skip to content

Commit 398bcbd

Browse files
committed
Python 3.14 universal2 is for macOS 11 and later
1 parent ac54a77 commit 398bcbd

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

add_to_pydotorg.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,19 @@ def run_cmd(
9191
}
9292

9393

94+
def macos_universal2_description(version: tuple[int, int, int]) -> str:
95+
if version >= (3, 14):
96+
return "for macOS 11 and later"
97+
elif version >= (3, 12, 6):
98+
return "for macOS 10.13 and later"
99+
else:
100+
return "for macOS 10.9 and later"
101+
102+
94103
def get_file_descriptions(
95104
release: str,
96105
) -> list[tuple[re.Pattern[str], tuple[str, str, bool, str]]]:
97-
v = minor_version_tuple(release)
106+
v = base_version_tuple(release)
98107
rx = re.compile
99108
# value is (file "name", OS slug, download button, file "description").
100109
# OS=None means no ReleaseFile object. Only one matching *file* (not regex)
@@ -165,7 +174,7 @@ def get_file_descriptions(
165174
"macOS 64-bit universal2 installer",
166175
"macos",
167176
True,
168-
f"for macOS {'10.13' if v >= (3, 12, 6) else '10.9'} and later",
177+
macos_universal2_description(v),
169178
),
170179
),
171180
(
@@ -211,6 +220,12 @@ def base_version(release: str) -> str:
211220
return ".".join(m.groups()[:3])
212221

213222

223+
def base_version_tuple(release: str) -> tuple[int, int, int]:
224+
m = tag_cre.match(release)
225+
assert m is not None, f"Invalid release: {release}"
226+
return int(m.groups()[0]), int(m.groups()[1]), int(m.groups()[2])
227+
228+
214229
def minor_version(release: str) -> str:
215230
m = tag_cre.match(release)
216231
assert m is not None, f"Invalid release: {release}"

tests/test_add_to_pydotorg.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,19 @@ def test_base_version(release: str, expected: str) -> None:
9090
assert add_to_pydotorg.base_version(release) == expected
9191

9292

93+
@pytest.mark.parametrize(
94+
["release", "expected"],
95+
[
96+
("3.9.0a0", (3, 9, 0)),
97+
("3.10.0b3", (3, 10, 0)),
98+
("3.11.0rc2", (3, 11, 0)),
99+
("3.12.15", (3, 12, 15)),
100+
],
101+
)
102+
def test_base_version_tuple(release: str, expected: tuple[int, int, int]) -> None:
103+
assert add_to_pydotorg.base_version_tuple(release) == expected
104+
105+
93106
@pytest.mark.parametrize(
94107
["release", "expected"],
95108
[
@@ -116,6 +129,25 @@ def test_minor_version_tuple(release: str, expected: tuple[int, int]) -> None:
116129
assert add_to_pydotorg.minor_version_tuple(release) == expected
117130

118131

132+
@pytest.mark.parametrize(
133+
["release", "expected"],
134+
[
135+
((3, 9, 0), "for macOS 10.9 and later"),
136+
((3, 10, 0), "for macOS 10.9 and later"),
137+
((3, 11, 0), "for macOS 10.9 and later"),
138+
((3, 12, 0), "for macOS 10.9 and later"),
139+
((3, 12, 5), "for macOS 10.9 and later"),
140+
((3, 12, 6), "for macOS 10.13 and later"),
141+
((3, 13, 0), "for macOS 10.13 and later"),
142+
((3, 14, 0), "for macOS 11 and later"),
143+
],
144+
)
145+
def test_macos_universal2_description(
146+
release: tuple[int, int, int], expected: str
147+
) -> None:
148+
assert add_to_pydotorg.macos_universal2_description(release) == expected
149+
150+
119151
def test_list_files(fs: FakeFilesystem) -> None:
120152
# Arrange
121153
fake_ftp_root = "/fake_ftp_root"
@@ -185,7 +217,7 @@ def test_list_files(fs: FakeFilesystem) -> None:
185217
"macOS 64-bit universal2 installer",
186218
"macos",
187219
True,
188-
"for macOS 10.13 and later",
220+
"for macOS 11 and later",
189221
),
190222
(
191223
"python-3.14.0b3-x86_64-linux-android.tar.gz",

0 commit comments

Comments
 (0)