You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

500 lines
13 KiB
Python

import ast
import sys
import types
import unittest
import warnings
from collections.abc import Callable, Iterable, Sequence
from contextlib import _GeneratorContextManager
from pathlib import Path
from re import Pattern
from typing import (
Any,
AnyStr,
ClassVar,
Final,
Generic,
NoReturn,
ParamSpec,
Self,
SupportsIndex,
TypeAlias,
TypeVarTuple,
overload,
type_check_only,
)
from typing import Literal as L
from unittest.case import SkipTest
from _typeshed import ConvertibleToFloat, GenericPath, StrOrBytesPath, StrPath
from typing_extensions import TypeVar
import numpy as np
from numpy._typing import (
ArrayLike,
DTypeLike,
NDArray,
_ArrayLikeDT64_co,
_ArrayLikeNumber_co,
_ArrayLikeObject_co,
_ArrayLikeTD64_co,
)
__all__ = [ # noqa: RUF022
"IS_EDITABLE",
"IS_MUSL",
"IS_PYPY",
"IS_PYSTON",
"IS_WASM",
"HAS_LAPACK64",
"HAS_REFCOUNT",
"NOGIL_BUILD",
"assert_",
"assert_array_almost_equal_nulp",
"assert_raises_regex",
"assert_array_max_ulp",
"assert_warns",
"assert_no_warnings",
"assert_allclose",
"assert_equal",
"assert_almost_equal",
"assert_approx_equal",
"assert_array_equal",
"assert_array_less",
"assert_string_equal",
"assert_array_almost_equal",
"assert_raises",
"build_err_msg",
"decorate_methods",
"jiffies",
"memusage",
"print_assert_equal",
"rundocs",
"runstring",
"verbose",
"measure",
"IgnoreException",
"clear_and_catch_warnings",
"SkipTest",
"KnownFailureException",
"temppath",
"tempdir",
"suppress_warnings",
"assert_array_compare",
"assert_no_gc_cycles",
"break_cycles",
"check_support_sve",
"run_threaded",
]
###
_T = TypeVar("_T")
_Ts = TypeVarTuple("_Ts")
_Tss = ParamSpec("_Tss")
_ET = TypeVar("_ET", bound=BaseException, default=BaseException)
_FT = TypeVar("_FT", bound=Callable[..., Any])
_W_co = TypeVar("_W_co", bound=_WarnLog | None, default=_WarnLog | None, covariant=True)
_T_or_bool = TypeVar("_T_or_bool", default=bool)
_StrLike: TypeAlias = str | bytes
_RegexLike: TypeAlias = _StrLike | Pattern[Any]
_NumericArrayLike: TypeAlias = _ArrayLikeNumber_co | _ArrayLikeObject_co
_ExceptionSpec: TypeAlias = type[_ET] | tuple[type[_ET], ...]
_WarningSpec: TypeAlias = type[Warning]
_WarnLog: TypeAlias = list[warnings.WarningMessage]
_ToModules: TypeAlias = Iterable[types.ModuleType]
# Must return a bool or an ndarray/generic type that is supported by `np.logical_and.reduce`
_ComparisonFunc: TypeAlias = Callable[
[NDArray[Any], NDArray[Any]],
bool | np.bool | np.number | NDArray[np.bool | np.number | np.object_],
]
# Type-check only `clear_and_catch_warnings` subclasses for both values of the
# `record` parameter. Copied from the stdlib `warnings` stubs.
@type_check_only
class _clear_and_catch_warnings_with_records(clear_and_catch_warnings):
def __enter__(self) -> list[warnings.WarningMessage]: ...
@type_check_only
class _clear_and_catch_warnings_without_records(clear_and_catch_warnings):
def __enter__(self) -> None: ...
###
verbose: int = 0
NUMPY_ROOT: Final[Path] = ...
IS_INSTALLED: Final[bool] = ...
IS_EDITABLE: Final[bool] = ...
IS_MUSL: Final[bool] = ...
IS_PYPY: Final[bool] = ...
IS_PYSTON: Final[bool] = ...
IS_WASM: Final[bool] = ...
HAS_REFCOUNT: Final[bool] = ...
HAS_LAPACK64: Final[bool] = ...
NOGIL_BUILD: Final[bool] = ...
class KnownFailureException(Exception): ...
class IgnoreException(Exception): ...
# NOTE: `warnings.catch_warnings` is incorrectly defined as invariant in typeshed
class clear_and_catch_warnings(warnings.catch_warnings[_W_co], Generic[_W_co]): # type: ignore[type-var] # pyright: ignore[reportInvalidTypeArguments]
class_modules: ClassVar[tuple[types.ModuleType, ...]] = ()
modules: Final[set[types.ModuleType]]
@overload # record: True
def __init__(self: clear_and_catch_warnings[_WarnLog], /, record: L[True], modules: _ToModules = ()) -> None: ...
@overload # record: False (default)
def __init__(self: clear_and_catch_warnings[None], /, record: L[False] = False, modules: _ToModules = ()) -> None: ...
@overload # record; bool
def __init__(self, /, record: bool, modules: _ToModules = ()) -> None: ...
class suppress_warnings:
log: Final[_WarnLog]
def __init__(self, /, forwarding_rule: L["always", "module", "once", "location"] = "always") -> None: ...
def __enter__(self) -> Self: ...
def __exit__(self, cls: type[BaseException] | None, exc: BaseException | None, tb: types.TracebackType | None, /) -> None: ...
def __call__(self, /, func: _FT) -> _FT: ...
#
def filter(self, /, category: type[Warning] = ..., message: str = "", module: types.ModuleType | None = None) -> None: ...
def record(self, /, category: type[Warning] = ..., message: str = "", module: types.ModuleType | None = None) -> _WarnLog: ...
# Contrary to runtime we can't do `os.name` checks while type checking,
# only `sys.platform` checks
if sys.platform == "win32" or sys.platform == "cygwin":
def memusage(processName: str = ..., instance: int = ...) -> int: ...
elif sys.platform == "linux":
def memusage(_proc_pid_stat: StrOrBytesPath = ...) -> int | None: ...
else:
def memusage() -> NoReturn: ...
if sys.platform == "linux":
def jiffies(_proc_pid_stat: StrOrBytesPath = ..., _load_time: list[float] = []) -> int: ...
else:
def jiffies(_load_time: list[float] = []) -> int: ...
#
def build_err_msg(
arrays: Iterable[object],
err_msg: object,
header: str = ...,
verbose: bool = ...,
names: Sequence[str] = ...,
precision: SupportsIndex | None = ...,
) -> str: ...
#
def print_assert_equal(test_string: str, actual: object, desired: object) -> None: ...
#
def assert_(val: object, msg: str | Callable[[], str] = "") -> None: ...
#
def assert_equal(
actual: object,
desired: object,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
def assert_almost_equal(
actual: _NumericArrayLike,
desired: _NumericArrayLike,
decimal: int = 7,
err_msg: object = "",
verbose: bool = True,
) -> None: ...
#
def assert_approx_equal(
actual: ConvertibleToFloat,
desired: ConvertibleToFloat,
significant: int = 7,
err_msg: object = "",
verbose: bool = True,
) -> None: ...
#
def assert_array_compare(
comparison: _ComparisonFunc,
x: ArrayLike,
y: ArrayLike,
err_msg: object = "",
verbose: bool = True,
header: str = "",
precision: SupportsIndex = 6,
equal_nan: bool = True,
equal_inf: bool = True,
*,
strict: bool = False,
names: tuple[str, str] = ("ACTUAL", "DESIRED"),
) -> None: ...
#
def assert_array_equal(
actual: object,
desired: object,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
#
def assert_array_almost_equal(
actual: _NumericArrayLike,
desired: _NumericArrayLike,
decimal: float = 6,
err_msg: object = "",
verbose: bool = True,
) -> None: ...
@overload
def assert_array_less(
x: _ArrayLikeDT64_co,
y: _ArrayLikeDT64_co,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
@overload
def assert_array_less(
x: _ArrayLikeTD64_co,
y: _ArrayLikeTD64_co,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
@overload
def assert_array_less(
x: _NumericArrayLike,
y: _NumericArrayLike,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
#
def assert_string_equal(actual: str, desired: str) -> None: ...
#
@overload
def assert_raises(
exception_class: _ExceptionSpec[_ET],
/,
*,
msg: str | None = None,
) -> unittest.case._AssertRaisesContext[_ET]: ...
@overload
def assert_raises(
exception_class: _ExceptionSpec,
callable: Callable[_Tss, Any],
/,
*args: _Tss.args,
**kwargs: _Tss.kwargs,
) -> None: ...
#
@overload
def assert_raises_regex(
exception_class: _ExceptionSpec[_ET],
expected_regexp: _RegexLike,
*,
msg: str | None = None,
) -> unittest.case._AssertRaisesContext[_ET]: ...
@overload
def assert_raises_regex(
exception_class: _ExceptionSpec,
expected_regexp: _RegexLike,
callable: Callable[_Tss, Any],
*args: _Tss.args,
**kwargs: _Tss.kwargs,
) -> None: ...
#
@overload
def assert_allclose(
actual: _ArrayLikeTD64_co,
desired: _ArrayLikeTD64_co,
rtol: float = 1e-7,
atol: float = 0,
equal_nan: bool = True,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
@overload
def assert_allclose(
actual: _NumericArrayLike,
desired: _NumericArrayLike,
rtol: float = 1e-7,
atol: float = 0,
equal_nan: bool = True,
err_msg: object = "",
verbose: bool = True,
*,
strict: bool = False,
) -> None: ...
#
def assert_array_almost_equal_nulp(
x: _ArrayLikeNumber_co,
y: _ArrayLikeNumber_co,
nulp: float = 1,
) -> None: ...
#
def assert_array_max_ulp(
a: _ArrayLikeNumber_co,
b: _ArrayLikeNumber_co,
maxulp: float = 1,
dtype: DTypeLike | None = None,
) -> NDArray[Any]: ...
#
@overload
def assert_warns(warning_class: _WarningSpec) -> _GeneratorContextManager[None]: ...
@overload
def assert_warns(warning_class: _WarningSpec, func: Callable[_Tss, _T], *args: _Tss.args, **kwargs: _Tss.kwargs) -> _T: ...
#
@overload
def assert_no_warnings() -> _GeneratorContextManager[None]: ...
@overload
def assert_no_warnings(func: Callable[_Tss, _T], /, *args: _Tss.args, **kwargs: _Tss.kwargs) -> _T: ...
#
@overload
def assert_no_gc_cycles() -> _GeneratorContextManager[None]: ...
@overload
def assert_no_gc_cycles(func: Callable[_Tss, Any], /, *args: _Tss.args, **kwargs: _Tss.kwargs) -> None: ...
###
#
@overload
def tempdir(
suffix: None = None,
prefix: None = None,
dir: None = None,
) -> _GeneratorContextManager[str]: ...
@overload
def tempdir(
suffix: AnyStr | None = None,
prefix: AnyStr | None = None,
*,
dir: GenericPath[AnyStr],
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def tempdir(
suffix: AnyStr | None = None,
*,
prefix: AnyStr,
dir: GenericPath[AnyStr] | None = None,
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def tempdir(
suffix: AnyStr,
prefix: AnyStr | None = None,
dir: GenericPath[AnyStr] | None = None,
) -> _GeneratorContextManager[AnyStr]: ...
#
@overload
def temppath(
suffix: None = None,
prefix: None = None,
dir: None = None,
text: bool = False,
) -> _GeneratorContextManager[str]: ...
@overload
def temppath(
suffix: AnyStr | None,
prefix: AnyStr | None,
dir: GenericPath[AnyStr],
text: bool = False,
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def temppath(
suffix: AnyStr | None = None,
prefix: AnyStr | None = None,
*,
dir: GenericPath[AnyStr],
text: bool = False,
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def temppath(
suffix: AnyStr | None,
prefix: AnyStr,
dir: GenericPath[AnyStr] | None = None,
text: bool = False,
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def temppath(
suffix: AnyStr | None = None,
*,
prefix: AnyStr,
dir: GenericPath[AnyStr] | None = None,
text: bool = False,
) -> _GeneratorContextManager[AnyStr]: ...
@overload
def temppath(
suffix: AnyStr,
prefix: AnyStr | None = None,
dir: GenericPath[AnyStr] | None = None,
text: bool = False,
) -> _GeneratorContextManager[AnyStr]: ...
#
def check_support_sve(__cache: list[_T_or_bool] = []) -> _T_or_bool: ... # noqa: PYI063
#
def decorate_methods(
cls: type,
decorator: Callable[[Callable[..., Any]], Any],
testmatch: _RegexLike | None = None,
) -> None: ...
#
@overload
def run_threaded(
func: Callable[[], None],
max_workers: int = 8,
pass_count: bool = False,
pass_barrier: bool = False,
outer_iterations: int = 1,
prepare_args: None = None,
) -> None: ...
@overload
def run_threaded(
func: Callable[[*_Ts], None],
max_workers: int,
pass_count: bool,
pass_barrier: bool,
outer_iterations: int,
prepare_args: tuple[*_Ts],
) -> None: ...
@overload
def run_threaded(
func: Callable[[*_Ts], None],
max_workers: int = 8,
pass_count: bool = False,
pass_barrier: bool = False,
outer_iterations: int = 1,
*,
prepare_args: tuple[*_Ts],
) -> None: ...
#
def runstring(astr: _StrLike | types.CodeType, dict: dict[str, Any] | None) -> Any: ... # noqa: ANN401
def rundocs(filename: StrPath | None = None, raise_on_error: bool = True) -> None: ...
def measure(code_str: _StrLike | ast.AST, times: int = 1, label: str | None = None) -> float: ...
def break_cycles() -> None: ...