diff --git a/pytools/__init__.pyi b/pytools/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..f2961ac3b9537830c0d9c2053ede6e5ff4cf8ddb --- /dev/null +++ b/pytools/__init__.pyi @@ -0,0 +1,20 @@ +from typing import Any, Iterable, Optional, Set, TypeVar +from numbers import Number + +T = TypeVar("T") + +def one(iterable: Iterable[T]) -> T: ... +def is_single_valued(iterable: Iterable[T], equality_pred: Callable[[T, T], bool] = ...) -> bool: ... +all_equal = is_single_valued +def all_roughly_equal(iterable: Iterable[Number], threshold: Number) -> bool: ... +def single_valued(iterable: Iterable[T], equality_pred: Callable[[T, T], bool] = ...) -> T: ... + +def memoize(*args: T, **kwargs: Any) -> T: ... +def memoize_method(method: T) -> T: ... + +class UniqueNameGenerator: + def __init__(self, existing_names: Optional[Set[str]] = ..., forced_prefix: str = ...) -> None: ... + def __call__(self, based_on: str = ...) -> str: ... + def is_name_conflicting(self, name: str) -> bool: ... + def add_name(self, name: str) -> bool: ... + def add_names(self, name: Iterable[str]) -> bool: ... diff --git a/pytools/py.typed b/pytools/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/setup.py b/setup.py index adba753c7690f5c7a258d324d3799a0aa98618ca..1023096c4b06900bc95fdb04143070c85d29e1ac 100644 --- a/setup.py +++ b/setup.py @@ -48,6 +48,8 @@ setup(name="pytools", "numpy>=1.6.0", ], + package_data={"pytools": ["py.typed", "__init__.pyi"]}, + author="Andreas Kloeckner", url="http://pypi.python.org/pypi/pytools", author_email="inform@tiker.net",