From: Anders-Petter Ljungquist Date: Thu, 14 Mar 2019 12:39:42 +0000 (+0100) Subject: Changes default logger used by blib2to3 Driver (#732) X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/227c2d77b48c6af0e6a2e667dfbb4412f3419005 Changes default logger used by blib2to3 Driver (#732) ... to stop it from spamming the log when black is used as a library in another python application. When used indirectly by black the logger initiated in `driver.py` will emit thousands of debug messages making the debug level of the root logger virtually useless. By getting a named logger instead the verbosity of logging from this module can easily be controlled by setting its log level. Fixes #715 --- diff --git a/blib2to3/README b/blib2to3/README index ad9f1c2..a43f15c 100644 --- a/blib2to3/README +++ b/blib2to3/README @@ -11,3 +11,6 @@ Reasons for forking: - better ability to debug (better reprs) - INDENT and DEDENT don't hold whitespace and comment prefixes - ability to Cythonize + +Change Log: +- Changes default logger used by Driver \ No newline at end of file diff --git a/blib2to3/pgen2/driver.py b/blib2to3/pgen2/driver.py index 6626c05..63b60bb 100644 --- a/blib2to3/pgen2/driver.py +++ b/blib2to3/pgen2/driver.py @@ -32,7 +32,7 @@ class Driver(object): def __init__(self, grammar, convert=None, logger=None): self.grammar = grammar if logger is None: - logger = logging.getLogger() + logger = logging.getLogger(__name__) self.logger = logger self.convert = convert @@ -157,7 +157,7 @@ def load_grammar(gt="Grammar.txt", gp=None, save=True, force=False, logger=None): """Load the grammar (maybe from a pickle).""" if logger is None: - logger = logging.getLogger() + logger = logging.getLogger(__name__) gp = _generate_pickle_name(gt) if gp is None else gp if force or not _newer(gp, gt): logger.info("Generating grammar tables from %s", gt) diff --git a/tests/test_black.py b/tests/test_black.py index 54519fc..db46499 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import asyncio +import logging from concurrent.futures import ThreadPoolExecutor from contextlib import contextmanager, redirect_stderr from functools import partial, wraps @@ -37,7 +38,6 @@ except ImportError: else: has_blackd_deps = True - ff = partial(black.format_file_in_place, mode=black.FileMode(), fast=True) fs = partial(black.format_str, mode=black.FileMode()) THIS_FILE = Path(__file__) @@ -1356,6 +1356,21 @@ class BlackTestCase(unittest.TestCase): except RuntimeError as re: self.fail(f"`patch_click()` failed, exception still raised: {re}") + def test_root_logger_not_used_directly(self) -> None: + def fail(*args: Any, **kwargs: Any) -> None: + self.fail("Record created with root logger") + + with patch.multiple( + logging.root, + debug=fail, + info=fail, + warning=fail, + error=fail, + critical=fail, + log=fail, + ): + ff(THIS_FILE) + @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_request_needs_formatting(self) -> None: