Move logging DuplicateFilter to utils, enable it only in __main__

This commit is contained in:
Oleh Prypin
2023-05-28 20:26:10 +02:00
parent 9fdcb435d6
commit a3f0d4be50
3 changed files with 17 additions and 14 deletions

View File

@@ -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

View File

@@ -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(

View File

@@ -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."""