mirror of https://github.com/pypa/pip
Rework how the logging stack handles rich objects
This makes it possible to render content via rich without a magic string and relies on a proper mechanism supported by the logging stack.
This commit is contained in:
parent
71df02c412
commit
3f6e81694f
|
@ -181,7 +181,7 @@ class Command(CommandContextMixIn):
|
||||||
assert isinstance(status, int)
|
assert isinstance(status, int)
|
||||||
return status
|
return status
|
||||||
except DiagnosticPipError as exc:
|
except DiagnosticPipError as exc:
|
||||||
logger.error("[present-rich] %s", exc)
|
logger.error("%s", exc, extra={"rich": True})
|
||||||
logger.debug("Exception information:", exc_info=True)
|
logger.debug("Exception information:", exc_info=True)
|
||||||
|
|
||||||
return ERROR
|
return ERROR
|
||||||
|
|
|
@ -233,7 +233,7 @@ def pip_self_version_check(session: PipSession, options: optparse.Values) -> Non
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if upgrade_prompt is not None:
|
if upgrade_prompt is not None:
|
||||||
logger.warning("[present-rich] %s", upgrade_prompt)
|
logger.warning("%s", upgrade_prompt, extra={"rich": True})
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.warning("There was an error checking the latest version of pip.")
|
logger.warning("There was an error checking the latest version of pip.")
|
||||||
logger.debug("See below for error", exc_info=True)
|
logger.debug("See below for error", exc_info=True)
|
||||||
|
|
|
@ -155,8 +155,8 @@ class RichPipStreamHandler(RichHandler):
|
||||||
|
|
||||||
# If we are given a diagnostic error to present, present it with indentation.
|
# If we are given a diagnostic error to present, present it with indentation.
|
||||||
assert isinstance(record.args, tuple)
|
assert isinstance(record.args, tuple)
|
||||||
if record.msg == "[present-rich] %s" and len(record.args) == 1:
|
if getattr(record, "rich", False):
|
||||||
rich_renderable = record.args[0]
|
(rich_renderable,) = record.args
|
||||||
assert isinstance(
|
assert isinstance(
|
||||||
rich_renderable, (ConsoleRenderable, RichCast, str)
|
rich_renderable, (ConsoleRenderable, RichCast, str)
|
||||||
), f"{rich_renderable} is not rich-console-renderable"
|
), f"{rich_renderable} is not rich-console-renderable"
|
||||||
|
|
|
@ -209,7 +209,7 @@ def call_subprocess(
|
||||||
output_lines=all_output if not showing_subprocess else None,
|
output_lines=all_output if not showing_subprocess else None,
|
||||||
)
|
)
|
||||||
if log_failed_cmd:
|
if log_failed_cmd:
|
||||||
subprocess_logger.error("[present-rich] %s", error)
|
subprocess_logger.error("%s", error, extra={"rich": True})
|
||||||
subprocess_logger.verbose(
|
subprocess_logger.verbose(
|
||||||
"[bold magenta]full command[/]: [blue]%s[/]",
|
"[bold magenta]full command[/]: [blue]%s[/]",
|
||||||
escape(format_command_args(cmd)),
|
escape(format_command_args(cmd)),
|
||||||
|
|
|
@ -260,9 +260,9 @@ class TestCallSubprocess:
|
||||||
expected = (
|
expected = (
|
||||||
None,
|
None,
|
||||||
[
|
[
|
||||||
# pytest's caplog overrides th formatter, which means that we
|
# pytest's caplog overrides the formatter, which means that we
|
||||||
# won't see the message formatted through our formatters.
|
# won't see the message formatted through our formatters.
|
||||||
("pip.subprocessor", ERROR, "[present-rich]"),
|
("pip.subprocessor", ERROR, "subprocess error exited with 1"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
# The spinner should spin three times in this case since the
|
# The spinner should spin three times in this case since the
|
||||||
|
|
Loading…
Reference in New Issue