pypi: use_pre_release support

Signed-off-by: Bruce Zhang <zttt183525594@gmail.com>
This commit is contained in:
Bruce Zhang 2018-12-29 23:35:23 +08:00 committed by lilydjwg
parent 22c7b5db20
commit 2e55a7db60
2 changed files with 25 additions and 9 deletions

View File

@ -1,15 +1,25 @@
# MIT licensed
# Copyright (c) 2013-2017 lilydjwg <lilydjwg@gmail.com>, et al.
from .simple_json import simple_json
from . import cmd, conf_cacheable_with_name, session
PYPI_URL = 'https://pypi.org/pypi/%s/json'
get_cacheable_conf = conf_cacheable_with_name('pypi')
def _version_from_json(data):
return data['info']['version']
async def get_version(name, conf, **kwargs):
package = conf.get('pypi')
use_pre_release = conf.getboolean('use_pre_release', False)
get_version, get_cacheable_conf = simple_json(
PYPI_URL,
'pypi',
_version_from_json,
)
headers = {
'Accept': 'application/json',
'User-Agent': 'lilydjwg/nvchecker',
}
url = 'https://pypi.org/pypi/{}/json'.format(package)
async with session.get(url) as res:
data = await res.json()
if use_pre_release:
version = sorted(data['releases'].keys())[-1]
else:
version = data['info']['version']
return version

View File

@ -6,3 +6,9 @@ pytestmark = pytest.mark.asyncio
async def test_pypi(get_version):
assert await get_version("example", {"pypi": None}) == "0.1.0"
async def test_pypi_release(get_version):
assert await get_version("example-test-package", {"pypi": "example-test-package"}) == "1.0.0"
async def test_pypi_pre_release(get_version):
assert await get_version("example-test-package", {"pypi": "example-test-package", "use_pre_release": 1}) == "1.0.1a1"