from collections.abc import Callable
from os import PathLike
from typing import Any, Protocol, Sequence, TypeVar

_F = TypeVar("_F", bound=Callable)
_N = TypeVar("_N")

class _DocStringComponents(Protocol):
    _docstring_components: list[str]

def doc(
    *docstrings: str | _DocStringComponents | Callable | None, **params: Any
) -> Callable[[_F], _F]: ...
def _is_iterable(obj) -> bool: ...
def _is_path_like(path) -> bool: ...
def _stringify_path(path: str | PathLike) -> str: ...
def product(seq: Sequence[_N]) -> _N: ...
def get_contiguous_span(
    shape: tuple[int, ...], strides: tuple[int, ...], itemsize: int
) -> tuple[int, int]: ...
def find_free_port() -> int: ...
def guid() -> str: ...
def download_tzdata_on_windows() -> None: ...
def _deprecate_api(old_name, new_name, api, next_version, type=...): ...
def _deprecate_class(old_name, new_class, next_version, instancecheck=True): ...
