import sys, os, time, io, re, traceback, warnings, weakref, collections.abc
+from types import GenericAlias
from string import Template
from string import Formatter as StrFormatter
name += ' '
return '<%s %s(%s)>' % (self.__class__.__name__, name, level)
+ __class_getitem__ = classmethod(GenericAlias)
+
class FileHandler(StreamHandler):
"""
level = getLevelName(logger.getEffectiveLevel())
return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
+ __class_getitem__ = classmethod(GenericAlias)
+
root = RootLogger(WARNING)
Logger.root = root
Logger.manager = Manager(Logger.root)
from dataclasses import Field
from functools import partial, partialmethod, cached_property
from graphlib import TopologicalSorter
+from logging import LoggerAdapter, StreamHandler
from mailbox import Mailbox, _PartialFile
try:
import ctypes
MappingProxyType, AsyncGeneratorType,
DirEntry,
chain,
+ LoggerAdapter, StreamHandler,
TemporaryDirectory, SpooledTemporaryFile,
Queue, SimpleQueue,
_AssertRaisesContext,
--- /dev/null
+Add :meth:`~object.__class_getitem__` to :class:`logging.LoggerAdapter` and\r
+:class:`logging.StreamHandler`, allowing them to be parameterized at runtime.\r
+Patch by Alex Waygood.\r