import sys from _typeshed import StrOrBytesPath, StrPath from collections.abc import Callable from configparser import RawConfigParser from threading import Thread from typing import IO, Any, Pattern, Sequence from . import _Level if sys.version_info >= (3, 8): from typing import Literal, TypedDict else: from typing_extensions import Literal, TypedDict if sys.version_info >= (3, 7): _Path = StrOrBytesPath else: _Path = StrPath DEFAULT_LOGGING_CONFIG_PORT: int RESET_ERROR: int # undocumented IDENTIFIER: Pattern[str] # undocumented class _RootLoggerConfiguration(TypedDict, total=False): level: _Level filters: Sequence[str] handlers: Sequence[str] class _LoggerConfiguration(_RootLoggerConfiguration, TypedDict, total=False): propagate: bool class _OptionalDictConfigArgs(TypedDict, total=False): # these two can have custom factories (key: `()`) which can have extra keys formatters: dict[str, dict[str, Any]] filters: dict[str, dict[str, Any]] # type checkers would warn about extra keys if this was a TypedDict handlers: dict[str, dict[str, Any]] loggers: dict[str, _LoggerConfiguration] root: _RootLoggerConfiguration | None incremental: bool disable_existing_loggers: bool class _DictConfigArgs(_OptionalDictConfigArgs, TypedDict): version: Literal[1] def dictConfig(config: _DictConfigArgs) -> None: ... if sys.version_info >= (3, 10): def fileConfig( fname: _Path | IO[str] | RawConfigParser, defaults: dict[str, str] | None = ..., disable_existing_loggers: bool = ..., encoding: str | None = ..., ) -> None: ... else: def fileConfig( fname: _Path | IO[str] | RawConfigParser, defaults: dict[str, str] | None = ..., disable_existing_loggers: bool = ... ) -> None: ... def valid_ident(s: str) -> Literal[True]: ... # undocumented def listen(port: int = ..., verify: Callable[[bytes], bytes | None] | None = ...) -> Thread: ... def stopListening() -> None: ...