mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Merge pull request #9065 from pradyunsg/add-debugging-reporter
Add a debugging reporter for pip's resolver
This commit is contained in:
commit
8ae1bd607e
2 changed files with 43 additions and 4 deletions
|
@ -6,9 +6,9 @@ from pip._vendor.resolvelib.reporters import BaseReporter
|
|||
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||
|
||||
if MYPY_CHECK_RUNNING:
|
||||
from typing import DefaultDict
|
||||
from typing import Any, DefaultDict
|
||||
|
||||
from .base import Candidate
|
||||
from .base import Candidate, Requirement
|
||||
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
@ -50,3 +50,35 @@ class PipReporter(BaseReporter):
|
|||
|
||||
message = self._messages_at_backtrack[count]
|
||||
logger.info("INFO: %s", message)
|
||||
|
||||
|
||||
class PipDebuggingReporter(BaseReporter):
|
||||
"""A reporter that does an info log for every event it sees."""
|
||||
|
||||
def starting(self):
|
||||
# type: () -> None
|
||||
logger.info("Reporter.starting()")
|
||||
|
||||
def starting_round(self, index):
|
||||
# type: (int) -> None
|
||||
logger.info("Reporter.starting_round(%r)", index)
|
||||
|
||||
def ending_round(self, index, state):
|
||||
# type: (int, Any) -> None
|
||||
logger.info("Reporter.ending_round(%r, state)", index)
|
||||
|
||||
def ending(self, state):
|
||||
# type: (Any) -> None
|
||||
logger.info("Reporter.ending(%r)", state)
|
||||
|
||||
def adding_requirement(self, requirement, parent):
|
||||
# type: (Requirement, Candidate) -> None
|
||||
logger.info("Reporter.adding_requirement(%r, %r)", requirement, parent)
|
||||
|
||||
def backtracking(self, candidate):
|
||||
# type: (Candidate) -> None
|
||||
logger.info("Reporter.backtracking(%r)", candidate)
|
||||
|
||||
def pinning(self, candidate):
|
||||
# type: (Candidate) -> None
|
||||
logger.info("Reporter.pinning(%r)", candidate)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import functools
|
||||
import logging
|
||||
import os
|
||||
|
||||
from pip._vendor import six
|
||||
from pip._vendor.packaging.utils import canonicalize_name
|
||||
|
@ -11,7 +12,10 @@ from pip._internal.req.req_install import check_invalid_constraint_type
|
|||
from pip._internal.req.req_set import RequirementSet
|
||||
from pip._internal.resolution.base import BaseResolver
|
||||
from pip._internal.resolution.resolvelib.provider import PipProvider
|
||||
from pip._internal.resolution.resolvelib.reporter import PipReporter
|
||||
from pip._internal.resolution.resolvelib.reporter import (
|
||||
PipDebuggingReporter,
|
||||
PipReporter,
|
||||
)
|
||||
from pip._internal.utils.misc import dist_is_editable
|
||||
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||
|
||||
|
@ -104,7 +108,10 @@ class Resolver(BaseResolver):
|
|||
upgrade_strategy=self.upgrade_strategy,
|
||||
user_requested=user_requested,
|
||||
)
|
||||
reporter = PipReporter()
|
||||
if "PIP_RESOLVER_DEBUG" in os.environ:
|
||||
reporter = PipDebuggingReporter()
|
||||
else:
|
||||
reporter = PipReporter()
|
||||
resolver = RLResolver(provider, reporter)
|
||||
|
||||
try:
|
||||
|
|
Loading…
Reference in a new issue