summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorKevin Sheppard <kevin.k.sheppard@gmail.com>2021-02-11 13:43:33 +0000
committerKevin Sheppard <kevin.k.sheppard@gmail.com>2021-02-13 22:58:12 +0000
commit26bb3160856426dd21fb7a4ad956b0983e5065c4 (patch)
tree3d7ab28e896057a3992087be93e98c75c05ed686 /numpy
parent7a18e4ac4f0b9f0933a190ac25cd75729bcdd146 (diff)
downloadnumpy-26bb3160856426dd21fb7a4ad956b0983e5065c4.tar.gz
ENH: Initial typing of random
Add typing to the lowest-level building blocks on random
Diffstat (limited to 'numpy')
-rw-r--r--numpy/random/__init__.pyi3
-rw-r--r--numpy/random/bit_generator.pyi61
2 files changed, 62 insertions, 2 deletions
diff --git a/numpy/random/__init__.pyi b/numpy/random/__init__.pyi
index bd5ece536..2b0571c45 100644
--- a/numpy/random/__init__.pyi
+++ b/numpy/random/__init__.pyi
@@ -1,4 +1,5 @@
from typing import Any, List
+from numpy.random.bit_generator import BitGenerator, SeedSequence
__all__: List[str]
@@ -54,10 +55,8 @@ weibull: Any
zipf: Any
Generator: Any
RandomState: Any
-SeedSequence: Any
MT19937: Any
Philox: Any
PCG64: Any
SFC64: Any
default_rng: Any
-BitGenerator: Any
diff --git a/numpy/random/bit_generator.pyi b/numpy/random/bit_generator.pyi
new file mode 100644
index 000000000..c2c9ed50e
--- /dev/null
+++ b/numpy/random/bit_generator.pyi
@@ -0,0 +1,61 @@
+from threading import Lock
+from typing import Literal, Optional
+
+from numpy import DtypeLike, ndarray
+from numpy.typing import ArrayLike, _ShapeLike
+
+class SeedlessSeedSequence:
+ def generate_state(
+ self, n_words: int, dtype: DtypeLike = ...
+ ) -> ndarray: ...
+ def spawn(self, n_children: int) -> List[SeedlessSeedSequence]: ...
+
+class SeedSequence:
+ def __init__(
+ self,
+ entropy: Optional[int, Sequence[int]] = ...,
+ *,
+ spawn_key: Tuple[int, ...] = ...
+ ) -> None: ...
+ def __repr__(self) -> str: ...
+ @property
+ def state(
+ self,
+ ) -> Dict[str, Union[None, Sequence[int], int, Tuple[int, ...]]]: ...
+ def generate_state(
+ self, n_words: int, dtype: DtypeLike = np.uint32
+ ) -> ndarray: ...
+ def spawn(self, n_children: int) -> List[SeedSequence]: ...
+
+class BitGenerator:
+ lock: Lock
+ def __init__(self, seed=Optional[int, ArrayLike, 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]]
+ ]: ...
+ @property
+ def state(self) -> Dict[str, Any]: ...
+ @state.setter
+ def state(self, value: Dict[str, Any]): ...
+ @overload
+ def random_raw(
+ self, size: None = ..., output: Literal[True] = ...
+ ) -> int: ...
+ @overload
+ def random_raw(
+ self, size=_ShapeLike, output: Literal[True] = ...
+ ) -> ndarray: ...
+ @overload
+ def random_raw(
+ self, size=Optional[_ShapeLike], output: Literal[False] = ...
+ ) -> None: ...
+ def _benchmark(self, cnt: int, method: str = ...) -> None: ...
+ # TODO: These are untyped
+ @property
+ def ctypes(self) -> Any: ...
+ @property
+ def cffi(self) -> Any: ...