Advertisement
FilipMalczak

How to force setuptools to use dependency link

Jan 7th, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.78 KB | None | 0 0
  1. from urllib import request
  2. import re
  3.  
  4. def version_str_to_tuple(version_str):
  5.     return tuple(map(int, version_str.split(".")))
  6.  
  7. def version_tuple_to_str(version_tuple):
  8.     return ".".join(map(str, version_tuple))
  9.  
  10. _highest_version_cache = {}
  11.  
  12. def find_highest_version(package_name, repo_url="https://pypi.python.org/simple/"):
  13.     if not package_name in _highest_version_cache:
  14.         url = "%s%s/" % (repo_url, package_name)
  15.         lines = request.urlopen(url).read().decode("utf-8").lower().splitlines()
  16.         versions = []
  17.         rgx = "%s-([0-9.]+)[.]tar[.]gz"%package_name
  18.         compiled = re.compile(rgx)
  19.         for line in lines:
  20.             search_result = compiled.search(line)
  21.             if search_result:
  22.                 versions += search_result.groups()
  23.         _highest_version_cache[package_name] = max(
  24.             map(
  25.                 version_str_to_tuple, versions
  26.             )
  27.         )
  28.     return _highest_version_cache[package_name]
  29.  
  30. def inc(version_tuple):
  31.     return version_tuple[:-1] + (version_tuple[-1] + 1, )
  32.  
  33. def vcs_requirement(package_name):
  34.     return "%s<=%s" % (package_name,
  35.                        version_tuple_to_str(
  36.                            inc(
  37.                                find_highest_version(
  38.                                    package_name
  39.                                )
  40.                            )
  41.                        )
  42.     )
  43.  
  44. def egg_name(package_name):
  45.     return "%s-%s" % (package_name,
  46.                        version_tuple_to_str(
  47.                            inc(
  48.                                find_highest_version(
  49.                                    package_name
  50.                                )
  51.                            )
  52.                        )
  53.     )
  54.  
  55. print(vcs_requirement("watchdog"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement