Skip to content

Commit 1f15dab

Browse files
authored
Python 3.14 installer is for macOS 10.15 and later (python#269)
1 parent ac54a77 commit 1f15dab

File tree

2 files changed

+52
-6
lines changed

2 files changed

+52
-6
lines changed

add_to_pydotorg.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ def run_cmd(
8181

8282
# Update this list when new release managers are added.
8383
release_to_sigstore_identity_and_oidc_issuer = {
84-
"3.8": ("[email protected]", github_oidc_provider),
8584
"3.9": ("[email protected]", github_oidc_provider),
8685
"3.10": ("[email protected]", google_oidc_provider),
8786
"3.11": ("[email protected]", google_oidc_provider),
@@ -91,10 +90,19 @@ def run_cmd(
9190
}
9291

9392

93+
def macos_universal2_description(version: tuple[int, int, int]) -> str:
94+
if version >= (3, 14):
95+
return "for macOS 10.15 and later"
96+
elif version >= (3, 12, 6):
97+
return "for macOS 10.13 and later"
98+
else:
99+
return "for macOS 10.9 and later"
100+
101+
94102
def get_file_descriptions(
95103
release: str,
96104
) -> list[tuple[re.Pattern[str], tuple[str, str, bool, str]]]:
97-
v = minor_version_tuple(release)
105+
v = base_version_tuple(release)
98106
rx = re.compile
99107
# value is (file "name", OS slug, download button, file "description").
100108
# OS=None means no ReleaseFile object. Only one matching *file* (not regex)
@@ -125,13 +133,13 @@ def get_file_descriptions(
125133
),
126134
(
127135
rx(r"-amd64\.exe$"),
128-
("Windows installer (64-bit)", "windows", v >= (3, 9), "Recommended"),
136+
("Windows installer (64-bit)", "windows", True, "Recommended"),
129137
),
130138
(
131139
rx(r"-embed-win32\.zip$"),
132140
("Windows embeddable package (32-bit)", "windows", False, ""),
133141
),
134-
(rx(r"\.exe$"), ("Windows installer (32-bit)", "windows", v < (3, 9), "")),
142+
(rx(r"\.exe$"), ("Windows installer (32-bit)", "windows", False, "")),
135143
(
136144
rx(r"-macosx10\.5(_rev\d)?\.(dm|pk)g$"),
137145
(
@@ -165,7 +173,7 @@ def get_file_descriptions(
165173
"macOS 64-bit universal2 installer",
166174
"macos",
167175
True,
168-
f"for macOS {'10.13' if v >= (3, 12, 6) else '10.9'} and later",
176+
macos_universal2_description(v),
169177
),
170178
),
171179
(
@@ -211,6 +219,12 @@ def base_version(release: str) -> str:
211219
return ".".join(m.groups()[:3])
212220

213221

222+
def base_version_tuple(release: str) -> tuple[int, int, int]:
223+
m = tag_cre.match(release)
224+
assert m is not None, f"Invalid release: {release}"
225+
return int(m.groups()[0]), int(m.groups()[1]), int(m.groups()[2])
226+
227+
214228
def minor_version(release: str) -> str:
215229
m = tag_cre.match(release)
216230
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 10.15 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 10.15 and later",
189221
),
190222
(
191223
"python-3.14.0b3-x86_64-linux-android.tar.gz",

0 commit comments

Comments
 (0)