|
import abc |
|
from threading import Lock |
|
from collections.abc import Callable, Mapping, Sequence |
|
from typing import ( |
|
Any, |
|
NamedTuple, |
|
TypedDict, |
|
TypeVar, |
|
overload, |
|
Literal, |
|
) |
|
|
|
from numpy import dtype, uint32, uint64 |
|
from numpy._typing import ( |
|
NDArray, |
|
_ArrayLikeInt_co, |
|
_ShapeLike, |
|
_SupportsDType, |
|
_UInt32Codes, |
|
_UInt64Codes, |
|
) |
|
|
|
_T = TypeVar("_T") |
|
|
|
_DTypeLikeUint32 = ( |
|
dtype[uint32] |
|
| _SupportsDType[dtype[uint32]] |
|
| type[uint32] |
|
| _UInt32Codes |
|
) |
|
_DTypeLikeUint64 = ( |
|
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[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[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[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[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) -> tuple[dict[str, Any], ISeedSequence]: ... |
|
def __setstate__( |
|
self, state_seed_seq: dict[str, Any] | tuple[dict[str, Any], ISeedSequence] |
|
) -> None: ... |
|
def __reduce__( |
|
self, |
|
) -> tuple[ |
|
Callable[[str], BitGenerator], |
|
tuple[str], |
|
tuple[dict[str, Any], ISeedSequence] |
|
]: ... |
|
@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: ... |
|
@overload |
|
def random_raw(self, size: _ShapeLike = ..., output: Literal[True] = ...) -> NDArray[uint64]: ... |
|
@overload |
|
def random_raw(self, size: None | _ShapeLike = ..., output: Literal[False] = ...) -> None: ... |
|
def _benchmark(self, cnt: int, method: str = ...) -> None: ... |
|
@property |
|
def ctypes(self) -> _Interface: ... |
|
@property |
|
def cffi(self) -> _Interface: ... |
|
|