示例#1
0
 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]
示例#2
0
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