Skip to content

Commit

Permalink
Merge pull request #9065 from pradyunsg/add-debugging-reporter
Browse files Browse the repository at this point in the history
Add a debugging reporter for pip's resolver
  • Loading branch information
pradyunsg authored Oct 29, 2020
2 parents 8daece5 + 9f318de commit 8ae1bd6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 4 deletions.
36 changes: 34 additions & 2 deletions src/pip/_internal/resolution/resolvelib/reporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
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__)
Expand Down Expand Up @@ -50,3 +50,35 @@ def backtracking(self, candidate):

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)
11 changes: 9 additions & 2 deletions src/pip/_internal/resolution/resolvelib/resolver.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import functools
import logging
import os

from pip._vendor import six
from pip._vendor.packaging.utils import canonicalize_name
Expand All @@ -11,7 +12,10 @@
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

Expand Down Expand Up @@ -104,7 +108,10 @@ def resolve(self, root_reqs, check_supported_wheels):
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:
Expand Down

0 comments on commit 8ae1bd6

Please sign in to comment.