You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					400 lines
				
				9.8 KiB
			
		
		
			
		
	
	
					400 lines
				
				9.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								import ast
							 | 
						||
| 
								 | 
							
								import types
							 | 
						||
| 
								 | 
							
								import warnings
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								import contextlib
							 | 
						||
| 
								 | 
							
								from re import Pattern
							 | 
						||
| 
								 | 
							
								from collections.abc import Callable, Iterable, Sequence
							 | 
						||
| 
								 | 
							
								from typing import (
							 | 
						||
| 
								 | 
							
								    Literal as L,
							 | 
						||
| 
								 | 
							
								    Any,
							 | 
						||
| 
								 | 
							
								    AnyStr,
							 | 
						||
| 
								 | 
							
								    ClassVar,
							 | 
						||
| 
								 | 
							
								    NoReturn,
							 | 
						||
| 
								 | 
							
								    overload,
							 | 
						||
| 
								 | 
							
								    type_check_only,
							 | 
						||
| 
								 | 
							
								    TypeVar,
							 | 
						||
| 
								 | 
							
								    Union,
							 | 
						||
| 
								 | 
							
								    Final,
							 | 
						||
| 
								 | 
							
								    SupportsIndex,
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								from typing_extensions import ParamSpec
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from numpy import generic, dtype, number, object_, bool_, _FloatValue
							 | 
						||
| 
								 | 
							
								from numpy._typing import (
							 | 
						||
| 
								 | 
							
								    NDArray,
							 | 
						||
| 
								 | 
							
								    ArrayLike,
							 | 
						||
| 
								 | 
							
								    DTypeLike,
							 | 
						||
| 
								 | 
							
								    _ArrayLikeNumber_co,
							 | 
						||
| 
								 | 
							
								    _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    _ArrayLikeTD64_co,
							 | 
						||
| 
								 | 
							
								    _ArrayLikeDT64_co,
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from unittest.case import (
							 | 
						||
| 
								 | 
							
								    SkipTest as SkipTest,
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_P = ParamSpec("_P")
							 | 
						||
| 
								 | 
							
								_T = TypeVar("_T")
							 | 
						||
| 
								 | 
							
								_ET = TypeVar("_ET", bound=BaseException)
							 | 
						||
| 
								 | 
							
								_FT = TypeVar("_FT", bound=Callable[..., Any])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Must return a bool or an ndarray/generic type
							 | 
						||
| 
								 | 
							
								# that is supported by `np.logical_and.reduce`
							 | 
						||
| 
								 | 
							
								_ComparisonFunc = Callable[
							 | 
						||
| 
								 | 
							
								    [NDArray[Any], NDArray[Any]],
							 | 
						||
| 
								 | 
							
								    Union[
							 | 
						||
| 
								 | 
							
								        bool,
							 | 
						||
| 
								 | 
							
								        bool_,
							 | 
						||
| 
								 | 
							
								        number[Any],
							 | 
						||
| 
								 | 
							
								        NDArray[Union[bool_, number[Any], object_]],
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__all__: list[str]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class KnownFailureException(Exception): ...
							 | 
						||
| 
								 | 
							
								class IgnoreException(Exception): ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class clear_and_catch_warnings(warnings.catch_warnings):
							 | 
						||
| 
								 | 
							
								    class_modules: ClassVar[tuple[types.ModuleType, ...]]
							 | 
						||
| 
								 | 
							
								    modules: set[types.ModuleType]
							 | 
						||
| 
								 | 
							
								    @overload
							 | 
						||
| 
								 | 
							
								    def __new__(
							 | 
						||
| 
								 | 
							
								        cls,
							 | 
						||
| 
								 | 
							
								        record: L[False] = ...,
							 | 
						||
| 
								 | 
							
								        modules: Iterable[types.ModuleType] = ...,
							 | 
						||
| 
								 | 
							
								    ) -> _clear_and_catch_warnings_without_records: ...
							 | 
						||
| 
								 | 
							
								    @overload
							 | 
						||
| 
								 | 
							
								    def __new__(
							 | 
						||
| 
								 | 
							
								        cls,
							 | 
						||
| 
								 | 
							
								        record: L[True],
							 | 
						||
| 
								 | 
							
								        modules: Iterable[types.ModuleType] = ...,
							 | 
						||
| 
								 | 
							
								    ) -> _clear_and_catch_warnings_with_records: ...
							 | 
						||
| 
								 | 
							
								    @overload
							 | 
						||
| 
								 | 
							
								    def __new__(
							 | 
						||
| 
								 | 
							
								        cls,
							 | 
						||
| 
								 | 
							
								        record: bool,
							 | 
						||
| 
								 | 
							
								        modules: Iterable[types.ModuleType] = ...,
							 | 
						||
| 
								 | 
							
								    ) -> clear_and_catch_warnings: ...
							 | 
						||
| 
								 | 
							
								    def __enter__(self) -> None | list[warnings.WarningMessage]: ...
							 | 
						||
| 
								 | 
							
								    def __exit__(
							 | 
						||
| 
								 | 
							
								        self,
							 | 
						||
| 
								 | 
							
								        __exc_type: None | type[BaseException] = ...,
							 | 
						||
| 
								 | 
							
								        __exc_val: None | BaseException = ...,
							 | 
						||
| 
								 | 
							
								        __exc_tb: None | types.TracebackType = ...,
							 | 
						||
| 
								 | 
							
								    ) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 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: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class suppress_warnings:
							 | 
						||
| 
								 | 
							
								    log: list[warnings.WarningMessage]
							 | 
						||
| 
								 | 
							
								    def __init__(
							 | 
						||
| 
								 | 
							
								        self,
							 | 
						||
| 
								 | 
							
								        forwarding_rule: L["always", "module", "once", "location"] = ...,
							 | 
						||
| 
								 | 
							
								    ) -> None: ...
							 | 
						||
| 
								 | 
							
								    def filter(
							 | 
						||
| 
								 | 
							
								        self,
							 | 
						||
| 
								 | 
							
								        category: type[Warning] = ...,
							 | 
						||
| 
								 | 
							
								        message: str = ...,
							 | 
						||
| 
								 | 
							
								        module: None | types.ModuleType = ...,
							 | 
						||
| 
								 | 
							
								    ) -> None: ...
							 | 
						||
| 
								 | 
							
								    def record(
							 | 
						||
| 
								 | 
							
								        self,
							 | 
						||
| 
								 | 
							
								        category: type[Warning] = ...,
							 | 
						||
| 
								 | 
							
								        message: str = ...,
							 | 
						||
| 
								 | 
							
								        module: None | types.ModuleType = ...,
							 | 
						||
| 
								 | 
							
								    ) -> list[warnings.WarningMessage]: ...
							 | 
						||
| 
								 | 
							
								    def __enter__(self: _T) -> _T: ...
							 | 
						||
| 
								 | 
							
								    def __exit__(
							 | 
						||
| 
								 | 
							
								        self,
							 | 
						||
| 
								 | 
							
								        __exc_type: None | type[BaseException] = ...,
							 | 
						||
| 
								 | 
							
								        __exc_val: None | BaseException = ...,
							 | 
						||
| 
								 | 
							
								        __exc_tb: None | types.TracebackType = ...,
							 | 
						||
| 
								 | 
							
								    ) -> None: ...
							 | 
						||
| 
								 | 
							
								    def __call__(self, func: _FT) -> _FT: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								verbose: int
							 | 
						||
| 
								 | 
							
								IS_PYPY: Final[bool]
							 | 
						||
| 
								 | 
							
								IS_PYSTON: Final[bool]
							 | 
						||
| 
								 | 
							
								HAS_REFCOUNT: Final[bool]
							 | 
						||
| 
								 | 
							
								HAS_LAPACK64: Final[bool]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_(val: object, msg: str | Callable[[], str] = ...) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 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: str | bytes | os.PathLike[Any] = ...) -> None | int: ...
							 | 
						||
| 
								 | 
							
								else:
							 | 
						||
| 
								 | 
							
								    def memusage() -> NoReturn: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if sys.platform == "linux":
							 | 
						||
| 
								 | 
							
								    def jiffies(
							 | 
						||
| 
								 | 
							
								        _proc_pid_stat: str | bytes | os.PathLike[Any] = ...,
							 | 
						||
| 
								 | 
							
								        _load_time: list[float] = ...,
							 | 
						||
| 
								 | 
							
								    ) -> int: ...
							 | 
						||
| 
								 | 
							
								else:
							 | 
						||
| 
								 | 
							
								    def jiffies(_load_time: list[float] = ...) -> int: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def build_err_msg(
							 | 
						||
| 
								 | 
							
								    arrays: Iterable[object],
							 | 
						||
| 
								 | 
							
								    err_msg: str,
							 | 
						||
| 
								 | 
							
								    header: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								    names: Sequence[str] = ...,
							 | 
						||
| 
								 | 
							
								    precision: None | SupportsIndex = ...,
							 | 
						||
| 
								 | 
							
								) -> str: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_equal(
							 | 
						||
| 
								 | 
							
								    actual: object,
							 | 
						||
| 
								 | 
							
								    desired: object,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def print_assert_equal(
							 | 
						||
| 
								 | 
							
								    test_string: str,
							 | 
						||
| 
								 | 
							
								    actual: object,
							 | 
						||
| 
								 | 
							
								    desired: object,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_almost_equal(
							 | 
						||
| 
								 | 
							
								    actual: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    desired: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    decimal: int = ...,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Anything that can be coerced into `builtins.float`
							 | 
						||
| 
								 | 
							
								def assert_approx_equal(
							 | 
						||
| 
								 | 
							
								    actual: _FloatValue,
							 | 
						||
| 
								 | 
							
								    desired: _FloatValue,
							 | 
						||
| 
								 | 
							
								    significant: int = ...,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_array_compare(
							 | 
						||
| 
								 | 
							
								    comparison: _ComparisonFunc,
							 | 
						||
| 
								 | 
							
								    x: ArrayLike,
							 | 
						||
| 
								 | 
							
								    y: ArrayLike,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								    header: str = ...,
							 | 
						||
| 
								 | 
							
								    precision: SupportsIndex = ...,
							 | 
						||
| 
								 | 
							
								    equal_nan: bool = ...,
							 | 
						||
| 
								 | 
							
								    equal_inf: bool = ...,
							 | 
						||
| 
								 | 
							
								    *,
							 | 
						||
| 
								 | 
							
								    strict: bool = ...
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_array_equal(
							 | 
						||
| 
								 | 
							
								    x: ArrayLike,
							 | 
						||
| 
								 | 
							
								    y: ArrayLike,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								    *,
							 | 
						||
| 
								 | 
							
								    strict: bool = ...
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_array_almost_equal(
							 | 
						||
| 
								 | 
							
								    x: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    y: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    decimal: float = ...,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_array_less(
							 | 
						||
| 
								 | 
							
								    x: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    y: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_array_less(
							 | 
						||
| 
								 | 
							
								    x: _ArrayLikeTD64_co,
							 | 
						||
| 
								 | 
							
								    y: _ArrayLikeTD64_co,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_array_less(
							 | 
						||
| 
								 | 
							
								    x: _ArrayLikeDT64_co,
							 | 
						||
| 
								 | 
							
								    y: _ArrayLikeDT64_co,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def runstring(
							 | 
						||
| 
								 | 
							
								    astr: str | bytes | types.CodeType,
							 | 
						||
| 
								 | 
							
								    dict: None | dict[str, Any],
							 | 
						||
| 
								 | 
							
								) -> Any: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_string_equal(actual: str, desired: str) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def rundocs(
							 | 
						||
| 
								 | 
							
								    filename: None | str | os.PathLike[str] = ...,
							 | 
						||
| 
								 | 
							
								    raise_on_error: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def raises(*args: type[BaseException]) -> Callable[[_FT], _FT]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_raises(  # type: ignore
							 | 
						||
| 
								 | 
							
								    expected_exception: type[BaseException] | tuple[type[BaseException], ...],
							 | 
						||
| 
								 | 
							
								    callable: Callable[_P, Any],
							 | 
						||
| 
								 | 
							
								    /,
							 | 
						||
| 
								 | 
							
								    *args: _P.args,
							 | 
						||
| 
								 | 
							
								    **kwargs: _P.kwargs,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_raises(
							 | 
						||
| 
								 | 
							
								    expected_exception: type[_ET] | tuple[type[_ET], ...],
							 | 
						||
| 
								 | 
							
								    *,
							 | 
						||
| 
								 | 
							
								    msg: None | str = ...,
							 | 
						||
| 
								 | 
							
								) -> unittest.case._AssertRaisesContext[_ET]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_raises_regex(
							 | 
						||
| 
								 | 
							
								    expected_exception: type[BaseException] | tuple[type[BaseException], ...],
							 | 
						||
| 
								 | 
							
								    expected_regex: str | bytes | Pattern[Any],
							 | 
						||
| 
								 | 
							
								    callable: Callable[_P, Any],
							 | 
						||
| 
								 | 
							
								    /,
							 | 
						||
| 
								 | 
							
								    *args: _P.args,
							 | 
						||
| 
								 | 
							
								    **kwargs: _P.kwargs,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_raises_regex(
							 | 
						||
| 
								 | 
							
								    expected_exception: type[_ET] | tuple[type[_ET], ...],
							 | 
						||
| 
								 | 
							
								    expected_regex: str | bytes | Pattern[Any],
							 | 
						||
| 
								 | 
							
								    *,
							 | 
						||
| 
								 | 
							
								    msg: None | str = ...,
							 | 
						||
| 
								 | 
							
								) -> unittest.case._AssertRaisesContext[_ET]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def decorate_methods(
							 | 
						||
| 
								 | 
							
								    cls: type[Any],
							 | 
						||
| 
								 | 
							
								    decorator: Callable[[Callable[..., Any]], Any],
							 | 
						||
| 
								 | 
							
								    testmatch: None | str | bytes | Pattern[Any] = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def measure(
							 | 
						||
| 
								 | 
							
								    code_str: str | bytes | ast.mod | ast.AST,
							 | 
						||
| 
								 | 
							
								    times: int = ...,
							 | 
						||
| 
								 | 
							
								    label: None | str = ...,
							 | 
						||
| 
								 | 
							
								) -> float: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_allclose(
							 | 
						||
| 
								 | 
							
								    actual: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    desired: _ArrayLikeNumber_co | _ArrayLikeObject_co,
							 | 
						||
| 
								 | 
							
								    rtol: float = ...,
							 | 
						||
| 
								 | 
							
								    atol: float = ...,
							 | 
						||
| 
								 | 
							
								    equal_nan: bool = ...,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_allclose(
							 | 
						||
| 
								 | 
							
								    actual: _ArrayLikeTD64_co,
							 | 
						||
| 
								 | 
							
								    desired: _ArrayLikeTD64_co,
							 | 
						||
| 
								 | 
							
								    rtol: float = ...,
							 | 
						||
| 
								 | 
							
								    atol: float = ...,
							 | 
						||
| 
								 | 
							
								    equal_nan: bool = ...,
							 | 
						||
| 
								 | 
							
								    err_msg: str = ...,
							 | 
						||
| 
								 | 
							
								    verbose: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_array_almost_equal_nulp(
							 | 
						||
| 
								 | 
							
								    x: _ArrayLikeNumber_co,
							 | 
						||
| 
								 | 
							
								    y: _ArrayLikeNumber_co,
							 | 
						||
| 
								 | 
							
								    nulp: float = ...,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def assert_array_max_ulp(
							 | 
						||
| 
								 | 
							
								    a: _ArrayLikeNumber_co,
							 | 
						||
| 
								 | 
							
								    b: _ArrayLikeNumber_co,
							 | 
						||
| 
								 | 
							
								    maxulp: float = ...,
							 | 
						||
| 
								 | 
							
								    dtype: DTypeLike = ...,
							 | 
						||
| 
								 | 
							
								) -> NDArray[Any]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_warns(
							 | 
						||
| 
								 | 
							
								    warning_class: type[Warning],
							 | 
						||
| 
								 | 
							
								) -> contextlib._GeneratorContextManager[None]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_warns(
							 | 
						||
| 
								 | 
							
								    warning_class: type[Warning],
							 | 
						||
| 
								 | 
							
								    func: Callable[_P, _T],
							 | 
						||
| 
								 | 
							
								    /,
							 | 
						||
| 
								 | 
							
								    *args: _P.args,
							 | 
						||
| 
								 | 
							
								    **kwargs: _P.kwargs,
							 | 
						||
| 
								 | 
							
								) -> _T: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_no_warnings() -> contextlib._GeneratorContextManager[None]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_no_warnings(
							 | 
						||
| 
								 | 
							
								    func: Callable[_P, _T],
							 | 
						||
| 
								 | 
							
								    /,
							 | 
						||
| 
								 | 
							
								    *args: _P.args,
							 | 
						||
| 
								 | 
							
								    **kwargs: _P.kwargs,
							 | 
						||
| 
								 | 
							
								) -> _T: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def tempdir(
							 | 
						||
| 
								 | 
							
								    suffix: None = ...,
							 | 
						||
| 
								 | 
							
								    prefix: None = ...,
							 | 
						||
| 
								 | 
							
								    dir: None = ...,
							 | 
						||
| 
								 | 
							
								) -> contextlib._GeneratorContextManager[str]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def tempdir(
							 | 
						||
| 
								 | 
							
								    suffix: None | AnyStr = ...,
							 | 
						||
| 
								 | 
							
								    prefix: None | AnyStr = ...,
							 | 
						||
| 
								 | 
							
								    dir: None | AnyStr | os.PathLike[AnyStr] = ...,
							 | 
						||
| 
								 | 
							
								) -> contextlib._GeneratorContextManager[AnyStr]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def temppath(
							 | 
						||
| 
								 | 
							
								    suffix: None = ...,
							 | 
						||
| 
								 | 
							
								    prefix: None = ...,
							 | 
						||
| 
								 | 
							
								    dir: None = ...,
							 | 
						||
| 
								 | 
							
								    text: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> contextlib._GeneratorContextManager[str]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def temppath(
							 | 
						||
| 
								 | 
							
								    suffix: None | AnyStr = ...,
							 | 
						||
| 
								 | 
							
								    prefix: None | AnyStr = ...,
							 | 
						||
| 
								 | 
							
								    dir: None | AnyStr | os.PathLike[AnyStr] = ...,
							 | 
						||
| 
								 | 
							
								    text: bool = ...,
							 | 
						||
| 
								 | 
							
								) -> contextlib._GeneratorContextManager[AnyStr]: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_no_gc_cycles() -> contextlib._GeneratorContextManager[None]: ...
							 | 
						||
| 
								 | 
							
								@overload
							 | 
						||
| 
								 | 
							
								def assert_no_gc_cycles(
							 | 
						||
| 
								 | 
							
								    func: Callable[_P, Any],
							 | 
						||
| 
								 | 
							
								    /,
							 | 
						||
| 
								 | 
							
								    *args: _P.args,
							 | 
						||
| 
								 | 
							
								    **kwargs: _P.kwargs,
							 | 
						||
| 
								 | 
							
								) -> None: ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def break_cycles() -> None: ...
							 |