2 from optparse
import Values
3 from typing
import List
5 from pip
._internal
.cli
.base_command
import Command
6 from pip
._internal
.cli
.status_codes
import ERROR
, SUCCESS
7 from pip
._internal
.operations
.check
import (
9 create_package_set_from_installed
,
10 warn_legacy_versions_and_specifiers
,
12 from pip
._internal
.utils
.misc
import write_output
14 logger
= logging
.getLogger(__name__
)
17 class CheckCommand(Command
):
18 """Verify installed packages have compatible dependencies."""
23 def run(self
, options
: Values
, args
: List
[str]) -> int:
24 package_set
, parsing_probs
= create_package_set_from_installed()
25 warn_legacy_versions_and_specifiers(package_set
)
26 missing
, conflicting
= check_package_set(package_set
)
28 for project_name
in missing
:
29 version
= package_set
[project_name
].version
30 for dependency
in missing
[project_name
]:
32 "%s %s requires %s, which is not installed.",
38 for project_name
in conflicting
:
39 version
= package_set
[project_name
].version
40 for dep_name
, dep_version
, req
in conflicting
[project_name
]:
42 "%s %s has requirement %s, but you have %s %s.",
50 if missing
or conflicting
or parsing_probs
:
53 write_output("No broken requirements found.")