From 382037c446f45ebc2e91fd5144eda4dfa90c0281 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 26 Dec 2021 14:15:15 -0500 Subject: [PATCH 1/2] Add setuptools.log to supersede distutils.log. Ref #2973. --- changelog.d/2974.change.rst | 1 + setuptools/__init__.py | 2 ++ setuptools/logging.py | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 changelog.d/2974.change.rst create mode 100644 setuptools/logging.py diff --git a/changelog.d/2974.change.rst b/changelog.d/2974.change.rst new file mode 100644 index 0000000000..fcfa00496d --- /dev/null +++ b/changelog.d/2974.change.rst @@ -0,0 +1 @@ +Setuptools now relies on the Python logging infrastructure to log messages. Instead of using ``distutils.log.*``, use ``logging.getLogger(name).*``. diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 9d6f0bc0dd..43d1c96eb2 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -18,6 +18,7 @@ from setuptools.dist import Distribution from setuptools.depends import Require from . import monkey +from . import logging __all__ = [ @@ -149,6 +150,7 @@ def finalize_options(self): def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. + logging.configure() _install_setup_requires(attrs) return distutils.core.setup(**attrs) diff --git a/setuptools/logging.py b/setuptools/logging.py new file mode 100644 index 0000000000..0ac4705911 --- /dev/null +++ b/setuptools/logging.py @@ -0,0 +1,22 @@ +import sys +import logging + + +def _not_warning(record): + return record.levelno < logging.WARNING + + +def configure(): + """ + Configure logging to emit warning and above to stderr + and everything else to stdout. This behavior is provided + for compatibilty with distutils.log but may change in + the future. + """ + err_handler = logging.StreamHandler() + err_handler.setLevel(logging.WARNING) + out_handler = logging.StreamHandler(sys.stdout) + out_handler.addFilter(_not_warning) + handlers = err_handler, out_handler + logging.basicConfig( + format="{message}", style='{', handlers=handlers, level=logging.DEBUG) From b9cf7ff3ff907b5a805264b399b17e4ea6bec049 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 26 Dec 2021 15:23:28 -0500 Subject: [PATCH 2/2] Monkey patch distutils.log.set_threshold so the Python logger honors calls to it. --- setuptools/logging.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/setuptools/logging.py b/setuptools/logging.py index 0ac4705911..dbead6e664 100644 --- a/setuptools/logging.py +++ b/setuptools/logging.py @@ -1,5 +1,7 @@ import sys import logging +import distutils.log +from . import monkey def _not_warning(record): @@ -20,3 +22,9 @@ def configure(): handlers = err_handler, out_handler logging.basicConfig( format="{message}", style='{', handlers=handlers, level=logging.DEBUG) + monkey.patch_func(set_threshold, distutils.log, 'set_threshold') + + +def set_threshold(level): + logging.root.setLevel(level*10) + return set_threshold.unpatched(level)