From 9a25e2efc734a6b34ebab665c1b16c26a3a1b28c Mon Sep 17 00:00:00 2001 From: jeroen_decroos Date: Tue, 21 Jan 2020 19:12:38 +0100 Subject: [PATCH] #257: save list in memory to avoid reusing exhausted iterator --- packaging/tags.py | 3 +-- tests/test_tags.py | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packaging/tags.py b/packaging/tags.py index 20512aaf..1c1430a4 100644 --- a/packaging/tags.py +++ b/packaging/tags.py @@ -328,8 +328,7 @@ def compatible_tags( """ if not python_version: python_version = sys.version_info[:2] - if not platforms: - platforms = _platform_tags() + platforms = list(platforms or _platform_tags()) for version in _py_interpreter_range(python_version): for platform_ in platforms: yield Tag(version, "none", platform_) diff --git a/tests/test_tags.py b/tests/test_tags.py index 1eacf686..1c05969f 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -923,12 +923,15 @@ def test_default_interpreter(self): ] def test_default_platforms(self, monkeypatch): - monkeypatch.setattr(tags, "_platform_tags", lambda: ["plat"]) + monkeypatch.setattr(tags, "_platform_tags", lambda: iter(["plat", "plat2"])) result = list(tags.compatible_tags((3, 1), "cp31")) assert result == [ tags.Tag("py31", "none", "plat"), + tags.Tag("py31", "none", "plat2"), tags.Tag("py3", "none", "plat"), + tags.Tag("py3", "none", "plat2"), tags.Tag("py30", "none", "plat"), + tags.Tag("py30", "none", "plat2"), tags.Tag("cp31", "none", "any"), tags.Tag("py31", "none", "any"), tags.Tag("py3", "none", "any"),