From b1e99a33854b977e655756fea4092595bccf21e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20La=C3=ADns?= Date: Wed, 9 Nov 2022 17:43:32 +0000 Subject: [PATCH] tags: add interpreter_tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Filipe LaĆ­ns --- packaging/tags.py | 17 ++++++++++------- tests/test_tags.py | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packaging/tags.py b/packaging/tags.py index a0e1ea23a..2c4fb3903 100644 --- a/packaging/tags.py +++ b/packaging/tags.py @@ -480,6 +480,15 @@ def interpreter_version(*, warn: bool = False) -> str: return version +def interpreter_tag(*, warn: bool = False) -> Optional[str]: + interp_name = interpreter_name() + if interp_name == "pp": + return "pp3" + elif interp_name == "cp": + return "cp" + interpreter_version(warn=warn) + return None + + def _version_nodot(version: PythonVersion) -> str: return "".join(map(str, version)) @@ -498,10 +507,4 @@ def sys_tags(*, warn: bool = False) -> Iterator[Tag]: else: yield from generic_tags() - if interp_name == "pp": - interp = "pp3" - elif interp_name == "cp": - interp = "cp" + interpreter_version(warn=warn) - else: - interp = None - yield from compatible_tags(interpreter=interp) + yield from compatible_tags(interpreter=interpreter_tag(warn=warn)) diff --git a/tests/test_tags.py b/tests/test_tags.py index 39515e8d1..84acfc61d 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -166,6 +166,21 @@ def test_sys_version_info(self, version_info, version_str, monkeypatch): assert tags.interpreter_version() == version_str +class TestInterpreterTag: + def test_interpreter_tag_cpython(self, monkeypatch): + monkeypatch.setattr(tags, "interpreter_name", lambda: "cp") + monkeypatch.setattr(tags, "interpreter_version", lambda **kwargs: "311") + assert tags.interpreter_tag() == "cp311" + + def test_interpreter_tag_pypy(self, monkeypatch): + monkeypatch.setattr(tags, "interpreter_name", lambda: "pp") + assert tags.interpreter_tag() == "pp3" + + def test_interpreter_tag_unknown(self, monkeypatch): + monkeypatch.setattr(tags, "interpreter_name", lambda: "unknown") + assert tags.interpreter_tag() is None + + class TestMacOSPlatforms: @pytest.mark.parametrize( "arch, is_32bit, expected",