3 from _typeshed import StrPath, SupportsWrite
4 from collections.abc import Callable, Iterable, Mapping, MutableMapping, Sequence
5 from io import TextIOWrapper
6 from string import Template
7 from time import struct_time
8 from types import FrameType, TracebackType
9 from typing import Any, ClassVar, Generic, Optional, Pattern, TextIO, Tuple, Type, TypeVar, Union, overload
10 from typing_extensions import Literal
12 _SysExcInfoType = Union[Tuple[Type[BaseException], BaseException, Optional[TracebackType]], Tuple[None, None, None]]
13 _ExcInfoType = Union[None, bool, _SysExcInfoType, BaseException]
14 _ArgsType = Union[Tuple[object, ...], Mapping[str, object]]
15 _FilterType = Union[Filter, Callable[[LogRecord], int]]
16 _Level = Union[int, str]
17 _FormatStyle = Literal["%", "{", "$"]
21 logMultiprocessing: bool
25 def currentframe() -> FrameType: ...
27 _levelToName: dict[int, str]
28 _nameToLevel: dict[str, int]
30 class Filterer(object):
32 def __init__(self) -> None: ...
33 def addFilter(self, filter: _FilterType) -> None: ...
34 def removeFilter(self, filter: _FilterType) -> None: ...
35 def filter(self, record: LogRecord) -> bool: ...
37 class Manager(object): # undocumented
40 emittedNoHandlerWarning: bool
41 loggerDict: dict[str, Logger | PlaceHolder]
42 loggerClass: Type[Logger] | None
43 logRecordFactory: Callable[..., LogRecord] | None
44 def __init__(self, rootnode: RootLogger) -> None: ...
45 def getLogger(self, name: str) -> Logger: ...
46 def setLoggerClass(self, klass: Type[Logger]) -> None: ...
47 def setLogRecordFactory(self, factory: Callable[..., LogRecord]) -> None: ...
49 class Logger(Filterer):
50 name: str # undocumented
51 level: int # undocumented
52 parent: Logger | None # undocumented
54 handlers: list[Handler] # undocumented
55 disabled: bool # undocumented
56 root: ClassVar[RootLogger] # undocumented
57 manager: Manager # undocumented
58 def __init__(self, name: str, level: _Level = ...) -> None: ...
59 def setLevel(self, level: _Level) -> None: ...
60 def isEnabledFor(self, level: int) -> bool: ...
61 def getEffectiveLevel(self) -> int: ...
62 def getChild(self, suffix: str) -> Logger: ...
63 if sys.version_info >= (3, 8):
68 exc_info: _ExcInfoType = ...,
69 stack_info: bool = ...,
70 stacklevel: int = ...,
71 extra: Mapping[str, object] | None = ...,
77 exc_info: _ExcInfoType = ...,
78 stack_info: bool = ...,
79 stacklevel: int = ...,
80 extra: Mapping[str, object] | None = ...,
86 exc_info: _ExcInfoType = ...,
87 stack_info: bool = ...,
88 stacklevel: int = ...,
89 extra: Mapping[str, object] | None = ...,
95 exc_info: _ExcInfoType = ...,
96 stack_info: bool = ...,
97 stacklevel: int = ...,
98 extra: Mapping[str, object] | None = ...,
104 exc_info: _ExcInfoType = ...,
105 stack_info: bool = ...,
106 stacklevel: int = ...,
107 extra: Mapping[str, object] | None = ...,
113 exc_info: _ExcInfoType = ...,
114 stack_info: bool = ...,
115 stacklevel: int = ...,
116 extra: Mapping[str, object] | None = ...,
122 exc_info: _ExcInfoType = ...,
123 stack_info: bool = ...,
124 stacklevel: int = ...,
125 extra: Mapping[str, object] | None = ...,
132 exc_info: _ExcInfoType = ...,
133 stack_info: bool = ...,
134 stacklevel: int = ...,
135 extra: Mapping[str, object] | None = ...,
142 exc_info: _ExcInfoType | None = ...,
143 extra: Mapping[str, object] | None = ...,
144 stack_info: bool = ...,
145 stacklevel: int = ...,
146 ) -> None: ... # undocumented
152 exc_info: _ExcInfoType = ...,
153 stack_info: bool = ...,
154 extra: Mapping[str, object] | None = ...,
160 exc_info: _ExcInfoType = ...,
161 stack_info: bool = ...,
162 extra: Mapping[str, object] | None = ...,
168 exc_info: _ExcInfoType = ...,
169 stack_info: bool = ...,
170 extra: Mapping[str, object] | None = ...,
176 exc_info: _ExcInfoType = ...,
177 stack_info: bool = ...,
178 extra: Mapping[str, object] | None = ...,
184 exc_info: _ExcInfoType = ...,
185 stack_info: bool = ...,
186 extra: Mapping[str, object] | None = ...,
192 exc_info: _ExcInfoType = ...,
193 stack_info: bool = ...,
194 extra: Mapping[str, object] | None = ...,
201 exc_info: _ExcInfoType = ...,
202 stack_info: bool = ...,
203 extra: Mapping[str, object] | None = ...,
209 exc_info: _ExcInfoType = ...,
210 stack_info: bool = ...,
211 extra: Mapping[str, object] | None = ...,
218 exc_info: _ExcInfoType | None = ...,
219 extra: Mapping[str, object] | None = ...,
220 stack_info: bool = ...,
221 ) -> None: ... # undocumented
223 def filter(self, record: LogRecord) -> bool: ...
224 def addHandler(self, hdlr: Handler) -> None: ...
225 def removeHandler(self, hdlr: Handler) -> None: ...
226 if sys.version_info >= (3, 8):
227 def findCaller(self, stack_info: bool = ..., stacklevel: int = ...) -> tuple[str, int, str, str | None]: ...
229 def findCaller(self, stack_info: bool = ...) -> tuple[str, int, str, str | None]: ...
230 def handle(self, record: LogRecord) -> None: ...
239 exc_info: _SysExcInfoType | None,
240 func: str | None = ...,
241 extra: Mapping[str, object] | None = ...,
242 sinfo: str | None = ...,
244 def hasHandlers(self) -> bool: ...
245 def callHandlers(self, record: LogRecord) -> None: ... # undocumented
256 class Handler(Filterer):
257 level: int # undocumented
258 formatter: Formatter | None # undocumented
259 lock: threading.Lock | None # undocumented
260 name: str | None # undocumented
261 def __init__(self, level: _Level = ...) -> None: ...
262 def get_name(self) -> str: ... # undocumented
263 def set_name(self, name: str) -> None: ... # undocumented
264 def createLock(self) -> None: ...
265 def acquire(self) -> None: ...
266 def release(self) -> None: ...
267 def setLevel(self, level: _Level) -> None: ...
268 def setFormatter(self, fmt: Formatter | None) -> None: ...
269 def filter(self, record: LogRecord) -> bool: ...
270 def flush(self) -> None: ...
271 def close(self) -> None: ...
272 def handle(self, record: LogRecord) -> bool: ...
273 def handleError(self, record: LogRecord) -> None: ...
274 def format(self, record: LogRecord) -> str: ...
275 def emit(self, record: LogRecord) -> None: ...
278 converter: Callable[[float | None], struct_time]
279 _fmt: str | None # undocumented
280 datefmt: str | None # undocumented
281 _style: PercentStyle # undocumented
282 default_time_format: str
283 if sys.version_info >= (3, 9):
284 default_msec_format: str | None
286 default_msec_format: str
288 if sys.version_info >= (3, 8):
290 self, fmt: str | None = ..., datefmt: str | None = ..., style: _FormatStyle = ..., validate: bool = ...
293 def __init__(self, fmt: str | None = ..., datefmt: str | None = ..., style: _FormatStyle = ...) -> None: ...
294 def format(self, record: LogRecord) -> str: ...
295 def formatTime(self, record: LogRecord, datefmt: str | None = ...) -> str: ...
296 def formatException(self, ei: _SysExcInfoType) -> str: ...
297 def formatMessage(self, record: LogRecord) -> str: ... # undocumented
298 def formatStack(self, stack_info: str) -> str: ...
299 def usesTime(self) -> bool: ... # undocumented
301 class BufferingFormatter:
303 def __init__(self, linefmt: Formatter | None = ...) -> None: ...
304 def formatHeader(self, records: Sequence[LogRecord]) -> str: ...
305 def formatFooter(self, records: Sequence[LogRecord]) -> str: ...
306 def format(self, records: Sequence[LogRecord]) -> str: ...
309 name: str # undocumented
310 nlen: int # undocumented
311 def __init__(self, name: str = ...) -> None: ...
312 def filter(self, record: LogRecord) -> bool: ...
315 # args can be set to None by logging.handlers.QueueHandler
316 # (see https://bugs.python.org/issue44473)
317 args: _ArgsType | None
320 exc_info: _SysExcInfoType | None
334 processName: str | None
335 relativeCreated: float
336 stack_info: str | None
338 threadName: str | None
346 args: _ArgsType | None,
347 exc_info: _SysExcInfoType | None,
348 func: str | None = ...,
349 sinfo: str | None = ...,
351 def getMessage(self) -> str: ...
353 _L = TypeVar("_L", Logger, LoggerAdapter[Logger], LoggerAdapter[Any])
355 class LoggerAdapter(Generic[_L]):
357 manager: Manager # undocumented
358 if sys.version_info >= (3, 10):
359 extra: Mapping[str, object] | None
360 def __init__(self, logger: _L, extra: Mapping[str, object] | None) -> None: ...
362 extra: Mapping[str, object]
363 def __init__(self, logger: _L, extra: Mapping[str, object]) -> None: ...
364 def process(self, msg: Any, kwargs: MutableMapping[str, Any]) -> tuple[Any, MutableMapping[str, Any]]: ...
365 if sys.version_info >= (3, 8):
370 exc_info: _ExcInfoType = ...,
371 stack_info: bool = ...,
372 stacklevel: int = ...,
373 extra: Mapping[str, object] | None = ...,
380 exc_info: _ExcInfoType = ...,
381 stack_info: bool = ...,
382 stacklevel: int = ...,
383 extra: Mapping[str, object] | None = ...,
390 exc_info: _ExcInfoType = ...,
391 stack_info: bool = ...,
392 stacklevel: int = ...,
393 extra: Mapping[str, object] | None = ...,
400 exc_info: _ExcInfoType = ...,
401 stack_info: bool = ...,
402 stacklevel: int = ...,
403 extra: Mapping[str, object] | None = ...,
410 exc_info: _ExcInfoType = ...,
411 stack_info: bool = ...,
412 stacklevel: int = ...,
413 extra: Mapping[str, object] | None = ...,
420 exc_info: _ExcInfoType = ...,
421 stack_info: bool = ...,
422 stacklevel: int = ...,
423 extra: Mapping[str, object] | None = ...,
430 exc_info: _ExcInfoType = ...,
431 stack_info: bool = ...,
432 stacklevel: int = ...,
433 extra: Mapping[str, object] | None = ...,
441 exc_info: _ExcInfoType = ...,
442 stack_info: bool = ...,
443 stacklevel: int = ...,
444 extra: Mapping[str, object] | None = ...,
452 exc_info: _ExcInfoType = ...,
453 stack_info: bool = ...,
454 extra: Mapping[str, object] | None = ...,
461 exc_info: _ExcInfoType = ...,
462 stack_info: bool = ...,
463 extra: Mapping[str, object] | None = ...,
470 exc_info: _ExcInfoType = ...,
471 stack_info: bool = ...,
472 extra: Mapping[str, object] | None = ...,
479 exc_info: _ExcInfoType = ...,
480 stack_info: bool = ...,
481 extra: Mapping[str, object] | None = ...,
488 exc_info: _ExcInfoType = ...,
489 stack_info: bool = ...,
490 extra: Mapping[str, object] | None = ...,
497 exc_info: _ExcInfoType = ...,
498 stack_info: bool = ...,
499 extra: Mapping[str, object] | None = ...,
506 exc_info: _ExcInfoType = ...,
507 stack_info: bool = ...,
508 extra: Mapping[str, object] | None = ...,
516 exc_info: _ExcInfoType = ...,
517 stack_info: bool = ...,
518 extra: Mapping[str, object] | None = ...,
521 def isEnabledFor(self, level: int) -> bool: ...
522 def getEffectiveLevel(self) -> int: ...
523 def setLevel(self, level: _Level) -> None: ...
524 def hasHandlers(self) -> bool: ...
530 exc_info: _ExcInfoType | None = ...,
531 extra: Mapping[str, object] | None = ...,
532 stack_info: bool = ...,
533 ) -> None: ... # undocumented
535 def name(self) -> str: ... # undocumented
537 def getLogger(name: str | None = ...) -> Logger: ...
538 def getLoggerClass() -> Type[Logger]: ...
539 def getLogRecordFactory() -> Callable[..., LogRecord]: ...
541 if sys.version_info >= (3, 8):
545 exc_info: _ExcInfoType = ...,
546 stack_info: bool = ...,
547 stacklevel: int = ...,
548 extra: Mapping[str, object] | None = ...,
553 exc_info: _ExcInfoType = ...,
554 stack_info: bool = ...,
555 stacklevel: int = ...,
556 extra: Mapping[str, object] | None = ...,
561 exc_info: _ExcInfoType = ...,
562 stack_info: bool = ...,
563 stacklevel: int = ...,
564 extra: Mapping[str, object] | None = ...,
569 exc_info: _ExcInfoType = ...,
570 stack_info: bool = ...,
571 stacklevel: int = ...,
572 extra: Mapping[str, object] | None = ...,
577 exc_info: _ExcInfoType = ...,
578 stack_info: bool = ...,
579 stacklevel: int = ...,
580 extra: Mapping[str, object] | None = ...,
585 exc_info: _ExcInfoType = ...,
586 stack_info: bool = ...,
587 stacklevel: int = ...,
588 extra: Mapping[str, object] | None = ...,
593 exc_info: _ExcInfoType = ...,
594 stack_info: bool = ...,
595 stacklevel: int = ...,
596 extra: Mapping[str, object] | None = ...,
602 exc_info: _ExcInfoType = ...,
603 stack_info: bool = ...,
604 stacklevel: int = ...,
605 extra: Mapping[str, object] | None = ...,
610 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
613 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
616 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
619 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
622 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
625 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
628 msg: object, *args: object, exc_info: _ExcInfoType = ..., stack_info: bool = ..., extra: Mapping[str, object] | None = ...
634 exc_info: _ExcInfoType = ...,
635 stack_info: bool = ...,
636 extra: Mapping[str, object] | None = ...,
641 if sys.version_info >= (3, 7):
642 def disable(level: int = ...) -> None: ...
645 def disable(level: int) -> None: ...
647 def addLevelName(level: int, levelName: str) -> None: ...
648 def getLevelName(level: _Level) -> Any: ...
649 def makeLogRecord(dict: Mapping[str, object]) -> LogRecord: ...
651 if sys.version_info >= (3, 9):
654 filename: StrPath | None = ...,
657 datefmt: str | None = ...,
658 style: _FormatStyle = ...,
659 level: _Level | None = ...,
660 stream: SupportsWrite[str] | None = ...,
661 handlers: Iterable[Handler] | None = ...,
662 force: bool | None = ...,
663 encoding: str | None = ...,
664 errors: str | None = ...,
667 elif sys.version_info >= (3, 8):
670 filename: StrPath | None = ...,
673 datefmt: str | None = ...,
674 style: _FormatStyle = ...,
675 level: _Level | None = ...,
676 stream: SupportsWrite[str] | None = ...,
677 handlers: Iterable[Handler] | None = ...,
684 filename: StrPath | None = ...,
687 datefmt: str | None = ...,
688 style: _FormatStyle = ...,
689 level: _Level | None = ...,
690 stream: SupportsWrite[str] | None = ...,
691 handlers: Iterable[Handler] | None = ...,
694 def shutdown(handlerList: Sequence[Any] = ...) -> None: ... # handlerList is undocumented
695 def setLoggerClass(klass: Type[Logger]) -> None: ...
696 def captureWarnings(capture: bool) -> None: ...
697 def setLogRecordFactory(factory: Callable[..., LogRecord]) -> None: ...
699 lastResort: StreamHandler[Any] | None
701 _StreamT = TypeVar("_StreamT", bound=SupportsWrite[str])
703 class StreamHandler(Handler, Generic[_StreamT]):
704 stream: _StreamT # undocumented
707 def __init__(self: StreamHandler[TextIO], stream: None = ...) -> None: ...
709 def __init__(self: StreamHandler[_StreamT], stream: _StreamT) -> None: ...
710 if sys.version_info >= (3, 7):
711 def setStream(self, stream: _StreamT) -> _StreamT | None: ...
713 class FileHandler(StreamHandler[TextIOWrapper]):
714 baseFilename: str # undocumented
715 mode: str # undocumented
716 encoding: str | None # undocumented
717 delay: bool # undocumented
718 if sys.version_info >= (3, 9):
719 errors: str | None # undocumented
721 self, filename: StrPath, mode: str = ..., encoding: str | None = ..., delay: bool = ..., errors: str | None = ...
724 def __init__(self, filename: StrPath, mode: str = ..., encoding: str | None = ..., delay: bool = ...) -> None: ...
725 def _open(self) -> TextIOWrapper: ... # undocumented
727 class NullHandler(Handler): ...
729 class PlaceHolder: # undocumented
730 loggerMap: dict[Logger, None]
731 def __init__(self, alogger: Logger) -> None: ...
732 def append(self, alogger: Logger) -> None: ...
734 # Below aren't in module docs but still visible
736 class RootLogger(Logger):
737 def __init__(self, level: int) -> None: ...
741 class PercentStyle(object): # undocumented
745 if sys.version_info >= (3, 8):
746 validation_pattern: Pattern[str]
748 def __init__(self, fmt: str) -> None: ...
749 def usesTime(self) -> bool: ...
750 if sys.version_info >= (3, 8):
751 def validate(self) -> None: ...
752 def format(self, record: Any) -> str: ...
754 class StrFormatStyle(PercentStyle): # undocumented
758 class StringTemplateStyle(PercentStyle): # undocumented
761 _STYLES: dict[str, tuple[PercentStyle, str]]