from logging import Handler, Logger, Formatter as BaseFormatter
from typing import Mapping

CRITICAL: int
ERROR: int
WARNING: int
INFO: int
DEBUG: int
NOTSET: int
WARN = ...
_levelNames: Mapping[str | int, str | int]
_levelValues: Mapping[str, int]

def getLogger(name: str) -> Logger: ...
def getLevelName(level: str | int) -> str | int: ...
def getLevelInt(levelName: str) -> int: ...

class DummyLogger:
    def __init__(self, name: str, level: int = ...): ...
    def setLevel(self, level: int): ...
    def debug(self, msg: str, *args, **kwargs): ...
    def info(self, msg: str, *args, **kwargs): ...
    def warning(self, msg: str, *args, **kwargs): ...
    def error(self, msg: str, *args, **kwargs): ...
    def exception(self, msg: str, *args): ...
    def critical(self, msg: str, *args, **kwargs): ...
    def addHandler(self, hdlr: Handler): ...
    def removeHandler(self, hdlr: Handler): ...

class StreamHandler:
    formatter: BaseFormatter
    def setFormatter(self, fmt: BaseFormatter): ...

class Formatter:
    def __init__(self, format: str): ...
