pypi: support list options
This commit is contained in:
parent
2a63ddef7a
commit
8397cbbce0
|
@ -570,6 +570,8 @@ pypi
|
|||
use_pre_release
|
||||
Whether to accept pre release. Default is false.
|
||||
|
||||
This source supports :ref:`list options`.
|
||||
|
||||
.. note::
|
||||
An additional dependency "packaging" is required.
|
||||
You can use ``pip install 'nvchecker[pypi]'``.
|
||||
|
|
|
@ -6,6 +6,8 @@ from packaging.version import Version
|
|||
from nvchecker.api import RichResult
|
||||
|
||||
async def get_version(name, conf, *, cache, **kwargs):
|
||||
ret = []
|
||||
|
||||
package = conf.get('pypi') or name
|
||||
use_pre_release = conf.get('use_pre_release', False)
|
||||
|
||||
|
@ -13,14 +15,15 @@ async def get_version(name, conf, *, cache, **kwargs):
|
|||
|
||||
data = await cache.get_json(url)
|
||||
|
||||
if use_pre_release:
|
||||
version = sorted(
|
||||
data['releases'].keys(),
|
||||
key = Version,
|
||||
)[-1]
|
||||
else:
|
||||
version = data['info']['version']
|
||||
return RichResult(
|
||||
version = version,
|
||||
url = f'https://pypi.org/project/{package}/{version}/',
|
||||
)
|
||||
for version in data['releases'].keys():
|
||||
parsed_version = Version(version)
|
||||
|
||||
if not use_pre_release and parsed_version.is_prerelease:
|
||||
continue
|
||||
|
||||
ret.append(RichResult(
|
||||
version = version,
|
||||
url = f'https://pypi.org/project/{package}/{version}/',
|
||||
))
|
||||
|
||||
return ret
|
||||
|
|
|
@ -20,3 +20,9 @@ async def test_pypi_pre_release(get_version):
|
|||
"source": "pypi",
|
||||
"use_pre_release": 1,
|
||||
}) == "1.0.1a1"
|
||||
|
||||
async def test_pypi_list(get_version):
|
||||
assert await get_version("urllib3", {
|
||||
"source": "pypi",
|
||||
"include_regex": "^1\\..*",
|
||||
}) == "1.26.18"
|
||||
|
|
Loading…
Reference in New Issue