def main(argv=None): argv = argv or sys.argv[1:] p = argparse.ArgumentParser() p.add_argument("index") ns = p.parse_args(argv) repository = repository_from_index(ns.index) data = collections.defaultdict(list) for package in sorted(repository.iter_packages(), key=operator.attrgetter("name")): data["packages"].append(requirements_string(package)) data = dict(data) yaml.safe_dump(data, sys.stdout, allow_unicode=True, default_flow_style=False)
# Step 2: recurse for dependency in best_dependencies: solution = optimize_at_level(pool, dependency, new_rules, solution) return solution def optimize(pool, requirement, rules): best_package = find_best_candidate(pool, requirement, rules) solution = [best_package] return optimize_at_level(pool, best_package, rules, solution) if __name__ == '__main__': repository = repository_from_index("full_index.json") pool = Pool([repository]) requirement_str = "scikit_learn < 0.14" requirement = Requirement._from_string(requirement_str) request = Request() request.install(requirement) rules_generator = RulesGenerator(pool, request) rules = list(rules_generator.iter_rules()) solution = optimize(pool, requirement, rules) for decision in solution: print(decision.name, str(decision.version))