Skip to content

Commit e1ee4b8

Browse files
committed
tags: accept mac tags without minor versions
Signed-off-by: Filipe Laíns <lains@riseup.net>
1 parent 2bd5da3 commit e1ee4b8

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

packaging/tags.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,16 @@ def mac_platforms(
398398
compat_version = major_version, 0
399399
binary_formats = _mac_binary_formats(compat_version, arch)
400400
for binary_format in binary_formats:
401-
yield "macosx_{major}_{minor}_{binary_format}".format(
402-
major=major_version, minor=0, binary_format=binary_format
401+
yield "macosx_{major}_{binary_format}".format(
402+
major=major_version, binary_format=binary_format
403403
)
404+
# Mac OS 11 and 12 seem to omit the minor version, we will keep
405+
# them for backwards compatibility and avoid generating tags
406+
# with it in the future
407+
if major_version <= 12:
408+
yield "macosx_{major}_{minor}_{binary_format}".format(
409+
major=major_version, minor=0, binary_format=binary_format
410+
)
404411

405412
if version >= (11, 0):
406413
# Mac OS 11 on x86_64 is compatible with binaries from previous releases.

tests/test_tags.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,14 +303,20 @@ def test_mac_platforms(self):
303303

304304
assert not list(tags.mac_platforms((10, 0), "x86_64"))
305305

306-
@pytest.mark.parametrize("major,minor", [(11, 0), (11, 3), (12, 0), (12, 3)])
306+
@pytest.mark.parametrize(
307+
"major,minor", [(11, 0), (11, 3), (12, 0), (12, 3), (13, 0)]
308+
)
307309
def test_macos_11(self, major, minor):
308310
platforms = list(tags.mac_platforms((major, minor), "x86_64"))
309311
assert "macosx_11_0_arm64" not in platforms
310312
assert "macosx_11_0_x86_64" in platforms
311313
assert "macosx_11_3_x86_64" not in platforms
312314
assert "macosx_11_0_universal" in platforms
313315
assert "macosx_11_0_universal2" in platforms
316+
assert "macosx_11_arm64" not in platforms
317+
assert "macosx_11_x86_64" in platforms
318+
assert "macosx_11_universal" in platforms
319+
assert "macosx_11_universal2" in platforms
314320
# Mac OS "10.16" is the version number that binaries compiled against an old
315321
# (pre 11.0) SDK will see. It can also be enabled explicitly for a process
316322
# with the environment variable SYSTEM_VERSION_COMPAT=1.
@@ -319,10 +325,22 @@ def test_macos_11(self, major, minor):
319325
assert "macosx_10_15_universal2" in platforms
320326
assert "macosx_10_4_x86_64" in platforms
321327
assert "macosx_10_3_x86_64" not in platforms
328+
assert "macosx_10_x86_64" not in platforms
329+
assert "macosx_10_universal2" not in platforms
322330
if major >= 12:
323331
assert "macosx_12_0_x86_64" in platforms
324332
assert "macosx_12_0_universal" in platforms
325333
assert "macosx_12_0_universal2" in platforms
334+
assert "macosx_12_x86_64" in platforms
335+
assert "macosx_12_universal" in platforms
336+
assert "macosx_12_universal2" in platforms
337+
if major >= 13:
338+
assert "macosx_13_0_x86_64" not in platforms
339+
assert "macosx_13_0_universal" not in platforms
340+
assert "macosx_13_0_universal2" not in platforms
341+
assert "macosx_13_x86_64" in platforms
342+
assert "macosx_13_universal" in platforms
343+
assert "macosx_13_universal2" in platforms
326344

327345
platforms = list(tags.mac_platforms((major, minor), "arm64"))
328346
assert "macosx_11_0_arm64" in platforms
@@ -333,9 +351,21 @@ def test_macos_11(self, major, minor):
333351
assert "macosx_10_15_x86_64" not in platforms
334352
assert "macosx_10_4_x86_64" not in platforms
335353
assert "macosx_10_3_x86_64" not in platforms
354+
assert "macosx_11_arm64" in platforms
355+
assert "macosx_11_universal" not in platforms
356+
assert "macosx_11_universal2" in platforms
357+
assert "macosx_10_universal2" not in platforms
358+
assert "macosx_10_x86_64" not in platforms
336359
if major >= 12:
337360
assert "macosx_12_0_arm64" in platforms
338361
assert "macosx_12_0_universal2" in platforms
362+
assert "macosx_12_arm64" in platforms
363+
assert "macosx_12_universal2" in platforms
364+
if major >= 13:
365+
assert "macosx_13_0_arm64" not in platforms
366+
assert "macosx_13_0_universal2" not in platforms
367+
assert "macosx_13_arm64" in platforms
368+
assert "macosx_13_universal2" in platforms
339369

340370

341371
class TestManylinuxPlatform:
@@ -1041,6 +1071,10 @@ def teardown_method(self):
10411071
# Clear the version cache
10421072
tags._glibc_version = []
10431073

1074+
def test_interpreter_platform(self):
1075+
tag = sysconfig.get_platform().replace("-", "_").replace(".", "_")
1076+
assert tag in list(tags.platform_tags())
1077+
10441078
@pytest.mark.parametrize(
10451079
"name,expected",
10461080
[("CPython", "cp"), ("PyPy", "pp"), ("Jython", "jy"), ("IronPython", "ip")],

0 commit comments

Comments
 (0)