summaryrefslogtreecommitdiff
path: root/numpy/random/bit_generator.pyi
diff options
context:
space:
mode:
authorscoder <stefan_ml@behnel.de>2023-05-04 09:29:53 +0200
committerGitHub <noreply@github.com>2023-05-04 09:29:53 +0200
commit442c8f48d3146ec32c7d5387310e171276cf10ac (patch)
treed8911d1a64e384b7955d3fc09a07edd218a9f1ee /numpy/random/bit_generator.pyi
parent3e4a6cba2da27bbe2a6e12c163238e503c9f6a07 (diff)
parent9163e933df91b516b6f0c7a9ba8ad1750e642f37 (diff)
downloadnumpy-442c8f48d3146ec32c7d5387310e171276cf10ac.tar.gz
Merge branch 'main' into cython3_noexcept
Diffstat (limited to 'numpy/random/bit_generator.pyi')
-rw-r--r--numpy/random/bit_generator.pyi112
1 files changed, 112 insertions, 0 deletions
diff --git a/numpy/random/bit_generator.pyi b/numpy/random/bit_generator.pyi
new file mode 100644
index 000000000..8b9779cad
--- /dev/null
+++ b/numpy/random/bit_generator.pyi
@@ -0,0 +1,112 @@
+import abc
+from threading import Lock
+from collections.abc import Callable, Mapping, Sequence
+from typing import (
+ Any,
+ NamedTuple,
+ TypedDict,
+ TypeVar,
+ Union,
+ overload,
+ Literal,
+)
+
+from numpy import dtype, ndarray, uint32, uint64
+from numpy._typing import _ArrayLikeInt_co, _ShapeLike, _SupportsDType, _UInt32Codes, _UInt64Codes
+
+_T = TypeVar("_T")
+
+_DTypeLikeUint32 = Union[
+ dtype[uint32],
+ _SupportsDType[dtype[uint32]],
+ type[uint32],
+ _UInt32Codes,
+]
+_DTypeLikeUint64 = Union[
+ dtype[uint64],
+ _SupportsDType[dtype[uint64]],
+ type[uint64],
+ _UInt64Codes,
+]
+
+class _SeedSeqState(TypedDict):
+ entropy: None | int | Sequence[int]
+ spawn_key: tuple[int, ...]
+ pool_size: int
+ n_children_spawned: int
+
+class _Interface(NamedTuple):
+ state_address: Any
+ state: Any
+ next_uint64: Any
+ next_uint32: Any
+ next_double: Any
+ bit_generator: Any
+
+class ISeedSequence(abc.ABC):
+ @abc.abstractmethod
+ def generate_state(
+ self, n_words: int, dtype: _DTypeLikeUint32 | _DTypeLikeUint64 = ...
+ ) -> ndarray[Any, dtype[uint32 | uint64]]: ...
+
+class ISpawnableSeedSequence(ISeedSequence):
+ @abc.abstractmethod
+ def spawn(self: _T, n_children: int) -> list[_T]: ...
+
+class SeedlessSeedSequence(ISpawnableSeedSequence):
+ def generate_state(
+ self, n_words: int, dtype: _DTypeLikeUint32 | _DTypeLikeUint64 = ...
+ ) -> ndarray[Any, dtype[uint32 | uint64]]: ...
+ def spawn(self: _T, n_children: int) -> list[_T]: ...
+
+class SeedSequence(ISpawnableSeedSequence):
+ entropy: None | int | Sequence[int]
+ spawn_key: tuple[int, ...]
+ pool_size: int
+ n_children_spawned: int
+ pool: ndarray[Any, dtype[uint32]]
+ def __init__(
+ self,
+ entropy: None | int | Sequence[int] | _ArrayLikeInt_co = ...,
+ *,
+ spawn_key: Sequence[int] = ...,
+ pool_size: int = ...,
+ n_children_spawned: int = ...,
+ ) -> None: ...
+ def __repr__(self) -> str: ...
+ @property
+ def state(
+ self,
+ ) -> _SeedSeqState: ...
+ def generate_state(
+ self, n_words: int, dtype: _DTypeLikeUint32 | _DTypeLikeUint64 = ...
+ ) -> ndarray[Any, dtype[uint32 | uint64]]: ...
+ def spawn(self, n_children: int) -> list[SeedSequence]: ...
+
+class BitGenerator(abc.ABC):
+ lock: Lock
+ def __init__(self, seed: None | _ArrayLikeInt_co | SeedSequence = ...) -> None: ...
+ def __getstate__(self) -> dict[str, Any]: ...
+ def __setstate__(self, state: dict[str, Any]) -> None: ...
+ def __reduce__(
+ self,
+ ) -> tuple[Callable[[str], BitGenerator], tuple[str], tuple[dict[str, Any]]]: ...
+ @abc.abstractmethod
+ @property
+ def state(self) -> Mapping[str, Any]: ...
+ @state.setter
+ def state(self, value: Mapping[str, Any]) -> None: ...
+ @property
+ def seed_seq(self) -> ISeedSequence: ...
+ def spawn(self, n_children: int) -> list[BitGenerator]: ...
+ @overload
+ def random_raw(self, size: None = ..., output: Literal[True] = ...) -> int: ... # type: ignore[misc]
+ @overload
+ def random_raw(self, size: _ShapeLike = ..., output: Literal[True] = ...) -> ndarray[Any, dtype[uint64]]: ... # type: ignore[misc]
+ @overload
+ def random_raw(self, size: None | _ShapeLike = ..., output: Literal[False] = ...) -> None: ... # type: ignore[misc]
+ def _benchmark(self, cnt: int, method: str = ...) -> None: ...
+ @property
+ def ctypes(self) -> _Interface: ...
+ @property
+ def cffi(self) -> _Interface: ...