From 6f5870787a6491dd26686f1a8c37e7d7ae3bcddb Mon Sep 17 00:00:00 2001 From: Jean-Christophe Morin Date: Sat, 8 Feb 2025 16:00:24 -0500 Subject: [PATCH] Exclude yanked PyPI releases Signed-off-by: Jean-Christophe Morin --- nvchecker_source/pypi.py | 4 ++++ tests/test_pypi.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/nvchecker_source/pypi.py b/nvchecker_source/pypi.py index 8cf0435..8028af0 100644 --- a/nvchecker_source/pypi.py +++ b/nvchecker_source/pypi.py @@ -19,6 +19,10 @@ async def get_version(name, conf, *, cache, **kwargs): data = await cache.get_json(url) for version in data['releases'].keys(): + # Skip versions that are marked as yanked. + if len(data['releases'][version]) != 0 and data['releases'][version][0]['yanked']: + continue + try: parsed_version = Version(version) except InvalidVersion: diff --git a/tests/test_pypi.py b/tests/test_pypi.py index 1d6643c..d5a5d8a 100644 --- a/tests/test_pypi.py +++ b/tests/test_pypi.py @@ -32,3 +32,8 @@ async def test_pypi_invalid_version(get_version): "source": "pypi", }) +async def test_pypi_yanked_version(get_version): + assert await get_version("urllib3", { + "source": "pypi", + "include_regex": "^(1\\..*)|(2\\.0\\.[0,1])", + }) == "1.26.20"