From a3f0d4be50ab796b91bae2cb41ff975cad4e73f1 Mon Sep 17 00:00:00 2001 From: Oleh Prypin Date: Sun, 28 May 2023 20:26:10 +0200 Subject: [PATCH] Move logging DuplicateFilter to utils, enable it only in __main__ --- mkdocs/__main__.py | 4 ++++ mkdocs/commands/build.py | 15 +-------------- mkdocs/utils/__init__.py | 12 ++++++++++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/mkdocs/__main__.py b/mkdocs/__main__.py index a13e9378..0465cf41 100644 --- a/mkdocs/__main__.py +++ b/mkdocs/__main__.py @@ -46,6 +46,10 @@ def _showwarning(message, category, filename, lineno, file=None, line=None): def _enable_warnings(): + from mkdocs.commands import build + + build.log.addFilter(utils.DuplicateFilter()) + warnings.simplefilter('module', DeprecationWarning) warnings.showwarning = _showwarning diff --git a/mkdocs/commands/build.py b/mkdocs/commands/build.py index 82bec232..8bd57fe0 100644 --- a/mkdocs/commands/build.py +++ b/mkdocs/commands/build.py @@ -17,22 +17,9 @@ from mkdocs.exceptions import Abort, BuildError from mkdocs.structure.files import File, Files, InclusionLevel, _set_exclusions, get_files from mkdocs.structure.nav import Navigation, get_navigation from mkdocs.structure.pages import Page - - -class DuplicateFilter: - """Avoid logging duplicate messages.""" - - def __init__(self) -> None: - self.msgs: set[str] = set() - - def __call__(self, record: logging.LogRecord) -> bool: - rv = record.msg not in self.msgs - self.msgs.add(record.msg) - return rv - +from mkdocs.utils import DuplicateFilter # noqa - legacy re-export log = logging.getLogger(__name__) -log.addFilter(DuplicateFilter()) def get_context( diff --git a/mkdocs/utils/__init__.py b/mkdocs/utils/__init__.py index 3eb55584..e906094c 100644 --- a/mkdocs/utils/__init__.py +++ b/mkdocs/utils/__init__.py @@ -442,6 +442,18 @@ def nest_paths(paths): return nested +class DuplicateFilter: + """Avoid logging duplicate messages.""" + + def __init__(self) -> None: + self.msgs: set[str] = set() + + def __call__(self, record: logging.LogRecord) -> bool: + rv = record.msg not in self.msgs + self.msgs.add(record.msg) + return rv + + class CountHandler(logging.NullHandler): """Counts all logged messages >= level."""