import functools
import sys
import threading
from collections.abc import Callable
from contextlib import AbstractContextManager
from inspect import Signature, _ParameterKind
from types import FunctionType
from typing import Any, TypeGuard

ARG_KINDS: frozenset[_ParameterKind]

if sys.version_info >= (3, 14):
    lock: threading.Lock
    safe_signature_from_callable: functools.partial[Signature]

def get_func_args(func: Callable[..., Any]) -> list[str]: ...
def get_func_full_args(func: Callable[..., Any]) -> list[tuple[str, str] | tuple[str]]: ...
def func_accepts_kwargs(func: Callable[..., Any]) -> bool: ...
def func_accepts_var_args(func: Callable[..., Any]) -> bool: ...
def method_has_no_args(meth: Callable[..., Any]) -> bool: ...
def func_supports_parameter(func: Callable[..., Any], name: str) -> bool: ...
def is_module_level_function(func: Callable[..., Any]) -> TypeGuard[FunctionType]: ...
def lazy_annotations() -> AbstractContextManager[None]: ...
