from __future__ import annotations from typing import Any, Callable, overload from typing_extensions import Literal from path import Path @overload def load(param: None) -> Null: ... @overload def load(param: str) -> Pattern: ... @overload def load(param: Any) -> Any: ... class Base: pass class Null(Base): def __call__(self, path: str) -> Literal[True]: ... class Pattern(Base): def __init__(self, pattern: str) -> None: ... def get_pattern(self, normcase: Callable[[str], str]) -> str: ... def __call__(self, path: Path) -> bool: ... class CaseInsensitive(Pattern): normcase: Callable[[str], str]