gh-92128: Add __class_getitem__ to logging.LoggerAdapter and logging.StreamHandler (#92129)

Closes #92128
This commit is contained in:
Alex Waygood 2022-05-02 16:10:02 +01:00 committed by GitHub
parent 031397063e
commit ab616d323d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 0 deletions

View file

@ -25,6 +25,7 @@ To use, simply 'import logging' and log away!
import sys, os, time, io, re, traceback, warnings, weakref, collections.abc import sys, os, time, io, re, traceback, warnings, weakref, collections.abc
from types import GenericAlias
from string import Template from string import Template
from string import Formatter as StrFormatter from string import Formatter as StrFormatter
@ -1145,6 +1146,8 @@ class StreamHandler(Handler):
name += ' ' name += ' '
return '<%s %s(%s)>' % (self.__class__.__name__, name, level) return '<%s %s(%s)>' % (self.__class__.__name__, name, level)
__class_getitem__ = classmethod(GenericAlias)
class FileHandler(StreamHandler): class FileHandler(StreamHandler):
""" """
@ -1939,6 +1942,8 @@ class LoggerAdapter(object):
level = getLevelName(logger.getEffectiveLevel()) level = getLevelName(logger.getEffectiveLevel())
return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level) return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
__class_getitem__ = classmethod(GenericAlias)
root = RootLogger(WARNING) root = RootLogger(WARNING)
Logger.root = root Logger.root = root
Logger.manager = Manager(Logger.root) Logger.manager = Manager(Logger.root)

View file

@ -14,6 +14,7 @@ from contextvars import ContextVar, Token
from dataclasses import Field from dataclasses import Field
from functools import partial, partialmethod, cached_property from functools import partial, partialmethod, cached_property
from graphlib import TopologicalSorter from graphlib import TopologicalSorter
from logging import LoggerAdapter, StreamHandler
from mailbox import Mailbox, _PartialFile from mailbox import Mailbox, _PartialFile
try: try:
import ctypes import ctypes
@ -113,6 +114,7 @@ class BaseTest(unittest.TestCase):
MappingProxyType, AsyncGeneratorType, MappingProxyType, AsyncGeneratorType,
DirEntry, DirEntry,
chain, chain,
LoggerAdapter, StreamHandler,
TemporaryDirectory, SpooledTemporaryFile, TemporaryDirectory, SpooledTemporaryFile,
Queue, SimpleQueue, Queue, SimpleQueue,
_AssertRaisesContext, _AssertRaisesContext,

View file

@ -0,0 +1,3 @@
Add :meth:`~object.__class_getitem__` to :class:`logging.LoggerAdapter` and
:class:`logging.StreamHandler`, allowing them to be parameterized at runtime.
Patch by Alex Waygood.