| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import abc
- from collections.abc import Callable, Mapping, Sequence
- from threading import Lock
- from typing import Any, ClassVar, Literal, NamedTuple, TypeAlias, TypedDict, overload, type_check_only
- from _typeshed import Incomplete
- from typing_extensions import CapsuleType, Self
- import numpy as np
- from numpy._typing import NDArray, _ArrayLikeInt_co, _DTypeLike, _ShapeLike, _UInt32Codes, _UInt64Codes
- __all__ = ["BitGenerator", "SeedSequence"]
- ###
- _DTypeLikeUint_: TypeAlias = _DTypeLike[np.uint32 | np.uint64] | _UInt32Codes | _UInt64Codes
- @type_check_only
- class _SeedSeqState(TypedDict):
- entropy: int | Sequence[int] | None
- spawn_key: tuple[int, ...]
- pool_size: int
- n_children_spawned: int
- @type_check_only
- class _Interface(NamedTuple):
- state_address: Incomplete
- state: Incomplete
- next_uint64: Incomplete
- next_uint32: Incomplete
- next_double: Incomplete
- bit_generator: Incomplete
- @type_check_only
- class _CythonMixin:
- def __setstate_cython__(self, pyx_state: object, /) -> None: ...
- def __reduce_cython__(self) -> Any: ... # noqa: ANN401
- @type_check_only
- class _GenerateStateMixin(_CythonMixin):
- def generate_state(self, /, n_words: int, dtype: _DTypeLikeUint_ = ...) -> NDArray[np.uint32 | np.uint64]: ...
- ###
- class ISeedSequence(abc.ABC):
- @abc.abstractmethod
- def generate_state(self, /, n_words: int, dtype: _DTypeLikeUint_ = ...) -> NDArray[np.uint32 | np.uint64]: ...
- class ISpawnableSeedSequence(ISeedSequence, abc.ABC):
- @abc.abstractmethod
- def spawn(self, /, n_children: int) -> list[Self]: ...
- class SeedlessSeedSequence(_GenerateStateMixin, ISpawnableSeedSequence):
- def spawn(self, /, n_children: int) -> list[Self]: ...
- class SeedSequence(_GenerateStateMixin, ISpawnableSeedSequence):
- __pyx_vtable__: ClassVar[CapsuleType] = ...
- entropy: int | Sequence[int] | None
- spawn_key: tuple[int, ...]
- pool_size: int
- n_children_spawned: int
- pool: NDArray[np.uint32]
- def __init__(
- self,
- /,
- entropy: _ArrayLikeInt_co | None = None,
- *,
- spawn_key: Sequence[int] = (),
- pool_size: int = 4,
- n_children_spawned: int = ...,
- ) -> None: ...
- def spawn(self, /, n_children: int) -> list[Self]: ...
- @property
- def state(self) -> _SeedSeqState: ...
- class BitGenerator(_CythonMixin, abc.ABC):
- lock: Lock
- @property
- def state(self) -> Mapping[str, Any]: ...
- @state.setter
- def state(self, value: Mapping[str, Any], /) -> None: ...
- @property
- def seed_seq(self) -> ISeedSequence: ...
- @property
- def ctypes(self) -> _Interface: ...
- @property
- def cffi(self) -> _Interface: ...
- @property
- def capsule(self) -> CapsuleType: ...
- #
- def __init__(self, /, seed: _ArrayLikeInt_co | SeedSequence | None = None) -> None: ...
- def __reduce__(self) -> tuple[Callable[[str], Self], tuple[str], tuple[Mapping[str, Any], ISeedSequence]]: ...
- def spawn(self, /, n_children: int) -> list[Self]: ...
- def _benchmark(self, /, cnt: int, method: str = "uint64") -> None: ...
- #
- @overload
- def random_raw(self, /, size: None = None, output: Literal[True] = True) -> int: ...
- @overload
- def random_raw(self, /, size: _ShapeLike, output: Literal[True] = True) -> NDArray[np.uint64]: ...
- @overload
- def random_raw(self, /, size: _ShapeLike | None, output: Literal[False]) -> None: ...
- @overload
- def random_raw(self, /, size: _ShapeLike | None = None, *, output: Literal[False]) -> None: ...
|