Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from urllib import request
- import re
- def version_str_to_tuple(version_str):
- return tuple(map(int, version_str.split(".")))
- def version_tuple_to_str(version_tuple):
- return ".".join(map(str, version_tuple))
- _highest_version_cache = {}
- def find_highest_version(package_name, repo_url="https://pypi.python.org/simple/"):
- if not package_name in _highest_version_cache:
- url = "%s%s/" % (repo_url, package_name)
- lines = request.urlopen(url).read().decode("utf-8").lower().splitlines()
- versions = []
- rgx = "%s-([0-9.]+)[.]tar[.]gz"%package_name
- compiled = re.compile(rgx)
- for line in lines:
- search_result = compiled.search(line)
- if search_result:
- versions += search_result.groups()
- _highest_version_cache[package_name] = max(
- map(
- version_str_to_tuple, versions
- )
- )
- return _highest_version_cache[package_name]
- def inc(version_tuple):
- return version_tuple[:-1] + (version_tuple[-1] + 1, )
- def vcs_requirement(package_name):
- return "%s<=%s" % (package_name,
- version_tuple_to_str(
- inc(
- find_highest_version(
- package_name
- )
- )
- )
- )
- def egg_name(package_name):
- return "%s-%s" % (package_name,
- version_tuple_to_str(
- inc(
- find_highest_version(
- package_name
- )
- )
- )
- )
- print(vcs_requirement("watchdog"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement