From 124553e0e90cc9d1967ce197a378a286062b5231 Mon Sep 17 00:00:00 2001 From: rony batista Date: Sat, 20 Jul 2024 15:28:23 +0100 Subject: [PATCH 1/5] Add py.typed marker and stub for decorator types --- memoize/py.typed | 0 memoize/wrapper.pyi | 17 +++++++++++++++++ setup.py | 1 + 3 files changed, 18 insertions(+) create mode 100644 memoize/py.typed create mode 100644 memoize/wrapper.pyi diff --git a/memoize/py.typed b/memoize/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/memoize/wrapper.pyi b/memoize/wrapper.pyi new file mode 100644 index 0000000..53486af --- /dev/null +++ b/memoize/wrapper.pyi @@ -0,0 +1,17 @@ +from typing import Callable, TypeVar, overload + +from memoize.configuration import CacheConfiguration +from memoize.invalidation import InvalidationSupport + +FN = TypeVar('FN', bound=Callable) + + +@overload +def memoize(configuration: CacheConfiguration = None, + invalidation: InvalidationSupport = None) -> Callable[[FN], FN]: ... + + +@overload +def memoize(method: FN, + configuration: CacheConfiguration = None, + invalidation: InvalidationSupport = None) -> FN: ... diff --git a/setup.py b/setup.py index a565190..c71ef66 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ def prepare_description(): url='https://github.com/DreamLab/memoize', maintainer='DreamLab', packages=['memoize'], + package_data={'memoize': ['py.typed']}, test_suite='tests', license='Apache License 2.0', description=('Caching library for asynchronous Python applications (both based on asyncio and Tornado) ' From 781c37802dc532837a12bc00503eb9c9d87424ee Mon Sep 17 00:00:00 2001 From: rony batista Date: Sat, 20 Jul 2024 15:28:23 +0100 Subject: [PATCH 2/5] Add py.typed marker and stub for decorator types --- memoize/wrapper.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memoize/wrapper.pyi b/memoize/wrapper.pyi index 53486af..f464c42 100644 --- a/memoize/wrapper.pyi +++ b/memoize/wrapper.pyi @@ -7,7 +7,7 @@ FN = TypeVar('FN', bound=Callable) @overload -def memoize(configuration: CacheConfiguration = None, +def memoize(*, configuration: CacheConfiguration = None, invalidation: InvalidationSupport = None) -> Callable[[FN], FN]: ... From 6aa01cdbf3102c3d9d39452039edc0df757e9d3c Mon Sep 17 00:00:00 2001 From: rony batista Date: Mon, 14 Oct 2024 09:00:56 +0100 Subject: [PATCH 3/5] use explicit optional in wrapper signature --- memoize/wrapper.py | 3 ++- memoize/wrapper.pyi | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/memoize/wrapper.py b/memoize/wrapper.py index d257917..6dd0317 100644 --- a/memoize/wrapper.py +++ b/memoize/wrapper.py @@ -17,7 +17,8 @@ from memoize.statuses import UpdateStatuses, InMemoryLocks -def memoize(method: Optional[Callable] = None, configuration: Optional[CacheConfiguration] = None, +def memoize(method: Optional[Callable] = None, + configuration: Optional[CacheConfiguration] = None, invalidation: Optional[InvalidationSupport] = None, update_statuses: Optional[UpdateStatuses] = None): """Wraps function with memoization. diff --git a/memoize/wrapper.pyi b/memoize/wrapper.pyi index f464c42..e91d8ac 100644 --- a/memoize/wrapper.pyi +++ b/memoize/wrapper.pyi @@ -1,4 +1,4 @@ -from typing import Callable, TypeVar, overload +from typing import Callable, TypeVar, overload, Optional from memoize.configuration import CacheConfiguration from memoize.invalidation import InvalidationSupport @@ -7,11 +7,12 @@ FN = TypeVar('FN', bound=Callable) @overload -def memoize(*, configuration: CacheConfiguration = None, - invalidation: InvalidationSupport = None) -> Callable[[FN], FN]: ... +def memoize(*, + configuration: Optional[CacheConfiguration] = None, + invalidation: Optional[InvalidationSupport] = None) -> Callable[[FN], FN]: ... @overload def memoize(method: FN, - configuration: CacheConfiguration = None, - invalidation: InvalidationSupport = None) -> FN: ... + configuration: Optional[CacheConfiguration] = None, + invalidation: Optional[InvalidationSupport] = None) -> FN: ... From 7b332c99cd3f08e1b592f3b37bb1496e708adad8 Mon Sep 17 00:00:00 2001 From: rony batista Date: Mon, 14 Oct 2024 09:00:56 +0100 Subject: [PATCH 4/5] use explicit optional in wrapper signature --- memoize/wrapper.py | 3 ++- memoize/wrapper.pyi | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/memoize/wrapper.py b/memoize/wrapper.py index 6dd0317..acc5c9b 100644 --- a/memoize/wrapper.py +++ b/memoize/wrapper.py @@ -19,7 +19,8 @@ def memoize(method: Optional[Callable] = None, configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None, update_statuses: Optional[UpdateStatuses] = None): + invalidation: Optional[InvalidationSupport] = None, + update_statuses: Optional[UpdateStatuses] = None): """Wraps function with memoization. If entry reaches time it should be updated, refresh is performed in background, diff --git a/memoize/wrapper.pyi b/memoize/wrapper.pyi index e91d8ac..c597bfd 100644 --- a/memoize/wrapper.pyi +++ b/memoize/wrapper.pyi @@ -2,6 +2,7 @@ from typing import Callable, TypeVar, overload, Optional from memoize.configuration import CacheConfiguration from memoize.invalidation import InvalidationSupport +from memoize.statuses import UpdateStatuses FN = TypeVar('FN', bound=Callable) @@ -9,10 +10,12 @@ FN = TypeVar('FN', bound=Callable) @overload def memoize(*, configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None) -> Callable[[FN], FN]: ... + invalidation: Optional[InvalidationSupport] = None, + update_statuses: Optional[UpdateStatuses] = None) -> Callable[[FN], FN]: ... @overload def memoize(method: FN, configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None) -> FN: ... + invalidation: Optional[InvalidationSupport] = None, + update_statuses: Optional[UpdateStatuses] = None) -> FN: ... From 26dcc2ebce652d9230992556bab82cffedab4dd6 Mon Sep 17 00:00:00 2001 From: rony batista Date: Fri, 29 Aug 2025 10:15:51 +0100 Subject: [PATCH 5/5] keep same formatting as before --- memoize/wrapper.py | 6 ++---- memoize/wrapper.pyi | 12 ++++-------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/memoize/wrapper.py b/memoize/wrapper.py index acc5c9b..d257917 100644 --- a/memoize/wrapper.py +++ b/memoize/wrapper.py @@ -17,10 +17,8 @@ from memoize.statuses import UpdateStatuses, InMemoryLocks -def memoize(method: Optional[Callable] = None, - configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None, - update_statuses: Optional[UpdateStatuses] = None): +def memoize(method: Optional[Callable] = None, configuration: Optional[CacheConfiguration] = None, + invalidation: Optional[InvalidationSupport] = None, update_statuses: Optional[UpdateStatuses] = None): """Wraps function with memoization. If entry reaches time it should be updated, refresh is performed in background, diff --git a/memoize/wrapper.pyi b/memoize/wrapper.pyi index c597bfd..7353480 100644 --- a/memoize/wrapper.pyi +++ b/memoize/wrapper.pyi @@ -8,14 +8,10 @@ FN = TypeVar('FN', bound=Callable) @overload -def memoize(*, - configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None, - update_statuses: Optional[UpdateStatuses] = None) -> Callable[[FN], FN]: ... +def memoize(*, configuration: Optional[CacheConfiguration] = None, + invalidation: Optional[InvalidationSupport] = None, update_statuses: Optional[UpdateStatuses] = None) -> Callable[[FN], FN]: ... @overload -def memoize(method: FN, - configuration: Optional[CacheConfiguration] = None, - invalidation: Optional[InvalidationSupport] = None, - update_statuses: Optional[UpdateStatuses] = None) -> FN: ... +def memoize(method: FN, configuration: Optional[CacheConfiguration] = None, + invalidation: Optional[InvalidationSupport] = None, update_statuses: Optional[UpdateStatuses] = None) -> FN: ...