From 97fa5c174d15858f7466190d7707a36486c19fbe Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Tue, 11 Oct 2022 12:06:05 +0300 Subject: Add type stubs for Maybe This allows Maybe[T] to be used as a type. Both Nothing and Just are of type Maybe. * mypy.ini: Add default location for stub files. * stubs/pymonad/__init__.pyi: New file. * stubs/pymonad/maybe.pyi: Ditto. --- stubs/pymonad/__init__.pyi | 0 stubs/pymonad/maybe.pyi | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 stubs/pymonad/__init__.pyi create mode 100644 stubs/pymonad/maybe.pyi (limited to 'stubs') diff --git a/stubs/pymonad/__init__.pyi b/stubs/pymonad/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/stubs/pymonad/maybe.pyi b/stubs/pymonad/maybe.pyi new file mode 100644 index 0000000..abf1433 --- /dev/null +++ b/stubs/pymonad/maybe.pyi @@ -0,0 +1,26 @@ +import pymonad.monad # type: ignore +from _typeshed import Incomplete +from typing import Any, Callable, Generic, TypeVar + +S = TypeVar('S') +T = TypeVar('T') + +class Maybe(pymonad.monad.Monad, Generic[T]): + @classmethod + def insert(cls, value: T) -> Maybe[T]: ... + def amap(self, monad_value: Maybe[S]) -> Maybe[T]: ... + def bind(self, kleisli_function: Callable[[S], Maybe[T]]) -> Maybe[T]: ... + def is_just(self) -> bool: ... + def is_nothing(self) -> bool: ... + def map(self, function: Callable[[S], T]) -> Maybe[T]: ... + def maybe(self, default_value: T, extraction_function: Callable[[S], T]) -> T: ... + option: Incomplete + def __eq__(self, other): ... + +def Just(value: T) -> Maybe[T]: ... + +Nothing: Maybe[Any] + +class Option(Maybe[T]): ... + +def Some(value: T) -> Option[T]: ... -- cgit v1.2.3