diff --git a/packaging/tags.py b/packaging/tags.py index 5b6c5ffd0..5356d36de 100644 --- a/packaging/tags.py +++ b/packaging/tags.py @@ -398,9 +398,16 @@ def mac_platforms( compat_version = major_version, 0 binary_formats = _mac_binary_formats(compat_version, arch) for binary_format in binary_formats: - yield "macosx_{major}_{minor}_{binary_format}".format( - major=major_version, minor=0, binary_format=binary_format + yield "macosx_{major}_{binary_format}".format( + major=major_version, binary_format=binary_format ) + # Mac OS 11 and 12 seem to omit the minor version, we will keep + # them for backwards compatibility and avoid generating tags + # with it in the future + if version < (13, 0): + yield "macosx_{major}_{minor}_{binary_format}".format( + major=major_version, minor=0, binary_format=binary_format + ) if version >= (11, 0): # Mac OS 11 on x86_64 is compatible with binaries from previous releases. diff --git a/tests/test_tags.py b/tests/test_tags.py index 06cd3b4a2..5759c291e 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -311,6 +311,10 @@ def test_macos_11(self, major, minor): assert "macosx_11_3_x86_64" not in platforms assert "macosx_11_0_universal" in platforms assert "macosx_11_0_universal2" in platforms + assert "macosx_11_arm64" not in platforms + assert "macosx_11_x86_64" in platforms + assert "macosx_11_universal" in platforms + assert "macosx_11_universal2" in platforms # Mac OS "10.16" is the version number that binaries compiled against an old # (pre 11.0) SDK will see. It can also be enabled explicitly for a process # with the environment variable SYSTEM_VERSION_COMPAT=1. @@ -319,10 +323,15 @@ def test_macos_11(self, major, minor): assert "macosx_10_15_universal2" in platforms assert "macosx_10_4_x86_64" in platforms assert "macosx_10_3_x86_64" not in platforms + assert "macosx_10_x86_64" not in platforms + assert "macosx_10_universal2" not in platforms if major >= 12: assert "macosx_12_0_x86_64" in platforms assert "macosx_12_0_universal" in platforms assert "macosx_12_0_universal2" in platforms + assert "macosx_12_x86_64" in platforms + assert "macosx_12_universal" in platforms + assert "macosx_12_universal2" in platforms platforms = list(tags.mac_platforms((major, minor), "arm64")) assert "macosx_11_0_arm64" in platforms @@ -333,9 +342,16 @@ def test_macos_11(self, major, minor): assert "macosx_10_15_x86_64" not in platforms assert "macosx_10_4_x86_64" not in platforms assert "macosx_10_3_x86_64" not in platforms + assert "macosx_11_arm64" in platforms + assert "macosx_11_universal" not in platforms + assert "macosx_11_universal2" in platforms + assert "macosx_10_universal2" not in platforms + assert "macosx_10_x86_64" not in platforms if major >= 12: assert "macosx_12_0_arm64" in platforms assert "macosx_12_0_universal2" in platforms + assert "macosx_12_arm64" in platforms + assert "macosx_12_universal2" in platforms class TestManylinuxPlatform: @@ -1041,6 +1057,10 @@ def teardown_method(self): # Clear the version cache tags._glibc_version = [] + def test_interpreter_platform(self): + tag = sysconfig.get_platform().replace('-', '_').replace('.', '_') + assert tag in list(tags.platform_tags()) + @pytest.mark.parametrize( "name,expected", [("CPython", "cp"), ("PyPy", "pp"), ("Jython", "jy"), ("IronPython", "ip")],