diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-11-06 17:16:41 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-11-06 17:16:41 +0000 |
commit | d36d930802ddf5f7e6cd4ef39d40d3872d53afcd (patch) | |
tree | 9c4cd9f72188b7c6fb69714691dc7f07f156a23e | |
parent | b069a2002dd1efa6a2dbb5c9b80b30fbb704b838 (diff) | |
download | import-d36d930802ddf5f7e6cd4ef39d40d3872d53afcd.tar.gz |
move resolve stuff into resolve_version_constraints
-rwxr-xr-x | exts/pip_find_deps.py (renamed from exts/pip.find_deps) | 65 |
1 files changed, 36 insertions, 29 deletions
diff --git a/exts/pip.find_deps b/exts/pip_find_deps.py index 8cd8364..3666afe 100755 --- a/exts/pip.find_deps +++ b/exts/pip_find_deps.py @@ -166,6 +166,40 @@ def check_gt(dep, version): % (dep.less_than, version)) dep.conflicts.append((('<', dep.less_than), ('>', version))) +def resolve_version_constraints(requirements): + build_deps = {} + + for r in requirements: + print('%s %s' % (r.project_name, r.specs)) + + if r.project_name not in build_deps: + build_deps[r.project_name] = Dependency() + + for (op, version) in r.specs: + version = pkg_resources.parse_version(version) + + #if no_conflict(requirements_versions_map[r.project_name], s): + # requirements_versions_map[r.project_name] += s + dep = build_deps[r.project_name] + + print('dep.excludes: %s' % str(dep.excludes)) + + # TODO: replace with function table + if op == '==': + check_eqs(dep, version) + elif op == '!=': + dep.excludes.append(version) + # TODO: chk_eqs needed here + elif op == '<': + check_lt(dep, version) + elif op == '>': + check_gt(dep, version) + + # Resolve versions + #client = xmlrpclib.ServerProxy(PYPI_URL) + #releases = client.package_releases(requirement.name) + return build_deps + def find_build_deps(source, name, version=None): debug('source: %s' % source) debug('name: %s' % name) @@ -191,35 +225,8 @@ def find_build_deps(source, name, version=None): print('%s has no build dependencies' % name) else: with open(build_deps_file) as f: - for r in pkg_resources.parse_requirements(f): - print('%s %s' % (r.project_name, r.specs)) - - if r.project_name not in build_deps: - build_deps[r.project_name] = Dependency() - - for (op, version) in r.specs: - version = pkg_resources.parse_version(version) - - #if no_conflict(requirements_versions_map[r.project_name], s): - # requirements_versions_map[r.project_name] += s - dep = build_deps[r.project_name] - - print('dep.excludes: %s' % str(dep.excludes)) - - # TODO: replace with function table - if op == '==': - check_eqs(dep, version) - elif op == '!=': - dep.excludes.append(version) - # TODO: chk_eqs needed here - elif op == '<': - check_lt(dep, version) - elif op == '>': - check_gt(dep, version) - - # Resolve versions - #client = xmlrpclib.ServerProxy(PYPI_URL) - #releases = client.package_releases(requirement.name) + build_deps = resolve_version_constraints( + pkg_resources.parse_requirements(f)) return build_deps |