Skip to content

Commit 61ca3c9

Browse files
committed
pypi: fix handling of invalid versions
fixes #273.
1 parent 1d55664 commit 61ca3c9

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

nvchecker/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# MIT licensed
22
# Copyright (c) 2013-2024 lilydjwg <[email protected]>, et al.
33

4-
__version__ = '2.15'
4+
__version__ = '2.15.1'

nvchecker_source/pypi.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
# MIT licensed
2-
# Copyright (c) 2013-2021 lilydjwg <[email protected]>, et al.
2+
# Copyright (c) 2013-2021,2023-2024 lilydjwg <[email protected]>, et al.
33

4-
from packaging.version import Version
4+
import structlog
5+
from packaging.version import Version, InvalidVersion
56

67
from nvchecker.api import RichResult
78

9+
logger = structlog.get_logger(logger_name=__name__)
10+
811
async def get_version(name, conf, *, cache, **kwargs):
912
ret = []
1013

@@ -16,7 +19,14 @@ async def get_version(name, conf, *, cache, **kwargs):
1619
data = await cache.get_json(url)
1720

1821
for version in data['releases'].keys():
19-
parsed_version = Version(version)
22+
try:
23+
parsed_version = Version(version)
24+
except InvalidVersion:
25+
if data['releases'][version]:
26+
# emit a warning if there is something under the invalid version
27+
# sympy has an empty "0.5.13-hg" version
28+
logger.warning('ignoring invalid version', version=version)
29+
continue
2030

2131
if not use_pre_release and parsed_version.is_prerelease:
2232
continue

tests/test_pypi.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,9 @@ async def test_pypi_list(get_version):
2626
"source": "pypi",
2727
"include_regex": "^1\\..*",
2828
}) == "1.26.18"
29+
30+
async def test_pypi_invalid_version(get_version):
31+
await get_version("sympy", {
32+
"source": "pypi",
33+
})
34+

0 commit comments

Comments
 (0)