def get_latest_package_version(_, package_name): # noqa: N805 return { "certifi": PackageVersion.parse_semantic_version("2018.10.15"), "chardet": PackageVersion.parse_semantic_version("3.0.4"), "idna": PackageVersion.parse_semantic_version("2.7"), "requests": PackageVersion.parse_semantic_version("3.0.0"), "termcolor": PackageVersion.parse_semantic_version("1.1.0"), "urllib3": PackageVersion.parse_semantic_version("1.23"), }[package_name]
def do_solve(package_name: str, package_version: str) -> List[Dict[str, Any]]: """Obtain dependent packages for the given package, respect registered solvers in Thoth.""" graph = GraphDatabase() graph.connect() openshift = OpenShift() result = [] for solver_name in openshift.get_solver_names(): _LOGGER.info( "Obtaining dependencies for environment used by solver %r", solver_name) solver_info = openshift.parse_python_solver_name(solver_name) start_offset = 0 while True: dependents = graph.get_python_package_version_dependents_all( package_name=package_name, os_name=solver_info["os_name"], os_version=solver_info["os_version"], python_version=solver_info["python_version"], start_offset=start_offset, count=_QUERY_COUNT, ) for dependent in dependents: if (dependent["version_range"] and dependent["version_range"] != "*" and package_version not in PackageVersion.parse_semantic_version( dependent["version_range"])): _LOGGER.info( "Package %r in version %r from %r ignored, not matching version specifier %r in environment %r", dependent["package_name"], dependent["package_version"], dependent["index_url"], package_version, solver_name, ) continue _LOGGER.info( "Found dependent %r in version %r from %r in environment %r", dependent["package_name"], dependent["package_version"], dependent["index_url"], solver_name, ) result.append({ "os_name": solver_info["os_name"], "os_version": solver_info["os_version"], "python_version": solver_info["python_version"], "solver_name": solver_name, **dependent, }) if len(dependents) < int(_QUERY_COUNT): break # Adjust for the next round. start_offset += int(_QUERY_COUNT) return result