Skip to content

Commit ca9aba4

Browse files
committed
Add --ignore-packages to pip check
1 parent e58a8a5 commit ca9aba4

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

news/11157.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add ``--ignore-packages`` flag to ``pip check`` to ignore specific packages.

src/pip/_internal/commands/check.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
from optparse import Values
3-
from typing import List
3+
from typing import Callable, List, Optional
44

55
from pip._internal.cli.base_command import Command
66
from pip._internal.cli.status_codes import ERROR, SUCCESS
@@ -19,10 +19,26 @@ class CheckCommand(Command):
1919
usage = """
2020
%prog [options]"""
2121

22+
def add_options(self) -> None:
23+
self.cmd_opts.add_option(
24+
"--ignore-packages",
25+
action="append",
26+
metavar="PACKAGE",
27+
dest="ignore_packages",
28+
default=[],
29+
help="Ignore packages",
30+
)
31+
self.parser.insert_option_group(0, self.cmd_opts)
32+
2233
def run(self, options: Values, args: List[str]) -> int:
2334

2435
package_set, parsing_probs = create_package_set_from_installed()
25-
missing, conflicting = check_package_set(package_set)
36+
should_ignore: Optional[Callable[[str], bool]] = (
37+
(lambda p: p in options.ignore_packages)
38+
if options.ignore_packages
39+
else None
40+
)
41+
missing, conflicting = check_package_set(package_set, should_ignore)
2642

2743
for project_name in missing:
2844
version = package_set[project_name].version

tests/functional/test_check.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,3 +309,21 @@ def test_check_include_work_dir_pkg(script: PipTestEnvironment) -> None:
309309
expected_lines = ("simple 1.0 requires missing, which is not installed.",)
310310
assert matches_expected_lines(result.stdout, expected_lines)
311311
assert result.returncode == 1
312+
313+
314+
def test_check_ignore_packages(script: PipTestEnvironment) -> None:
315+
package_a_path = create_test_package_with_setup(
316+
script,
317+
name="package_A",
318+
version="1.0",
319+
install_requires=["missing>=1.0"],
320+
)
321+
322+
# Without dependency
323+
result = script.pip("install", "--no-index", package_a_path, "--no-deps")
324+
assert "Successfully installed package-A-1.0" in result.stdout, str(result)
325+
326+
result = script.pip("check", "--ignore-packages=package-a")
327+
expected_lines = ("No broken requirements found.",)
328+
assert matches_expected_lines(result.stdout, expected_lines)
329+
assert result.returncode == 0

0 commit comments

Comments
 (0)