12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import logging
- from optparse import Values
- from typing import List
- from pip._internal.cli.base_command import Command
- from pip._internal.cli.status_codes import ERROR, SUCCESS
- from pip._internal.metadata import get_default_environment
- from pip._internal.operations.check import (
- check_package_set,
- check_unsupported,
- create_package_set_from_installed,
- )
- from pip._internal.utils.compatibility_tags import get_supported
- from pip._internal.utils.misc import write_output
- logger = logging.getLogger(__name__)
- class CheckCommand(Command):
- """Verify installed packages have compatible dependencies."""
- ignore_require_venv = True
- usage = """
- %prog [options]"""
- def run(self, options: Values, args: List[str]) -> int:
- package_set, parsing_probs = create_package_set_from_installed()
- missing, conflicting = check_package_set(package_set)
- unsupported = list(
- check_unsupported(
- get_default_environment().iter_installed_distributions(),
- get_supported(),
- )
- )
- for project_name in missing:
- version = package_set[project_name].version
- for dependency in missing[project_name]:
- write_output(
- "%s %s requires %s, which is not installed.",
- project_name,
- version,
- dependency[0],
- )
- for project_name in conflicting:
- version = package_set[project_name].version
- for dep_name, dep_version, req in conflicting[project_name]:
- write_output(
- "%s %s has requirement %s, but you have %s %s.",
- project_name,
- version,
- req,
- dep_name,
- dep_version,
- )
- for package in unsupported:
- write_output(
- "%s %s is not supported on this platform",
- package.raw_name,
- package.version,
- )
- if missing or conflicting or parsing_probs or unsupported:
- return ERROR
- else:
- write_output("No broken requirements found.")
- return SUCCESS
|