55from collections import OrderedDict
66
77from anyio import Lock
8-
98from ellar .common .helper .event_loop import get_or_create_eventloop
109
1110from ..interface import IBaseCacheBackendAsync
@@ -17,34 +16,37 @@ class _LocalMemCacheBackendSync(IBaseCacheBackendAsync, ABC):
1716 def _async_executor (self , func : t .Awaitable ) -> t .Any :
1817 return get_or_create_eventloop ().run_until_complete (func )
1918
20- def get (self , key : str , version : str = None ) -> t .Any :
19+ def get (self , key : str , version : t . Optional [ str ] = None ) -> t .Any :
2120 return self ._async_executor (self .get_async (key , version = version ))
2221
23- def delete (self , key : str , version : str = None ) -> bool :
22+ def delete (self , key : str , version : t . Optional [ str ] = None ) -> bool :
2423 res = self ._async_executor (self .delete_async (key , version = version ))
2524 return bool (res )
2625
2726 def set (
2827 self ,
2928 key : str ,
3029 value : t .Any ,
31- ttl : t .Union [float , int ] = None ,
32- version : str = None ,
30+ ttl : t .Union [float , int , None ] = None ,
31+ version : t . Optional [ str ] = None ,
3332 ) -> bool :
3433 res = self ._async_executor (self .set_async (key , value , ttl = ttl , version = version ))
3534 return bool (res )
3635
3736 def touch (
38- self , key : str , ttl : t .Union [float , int ] = None , version : str = None
37+ self ,
38+ key : str ,
39+ ttl : t .Union [float , int , None ] = None ,
40+ version : t .Optional [str ] = None ,
3941 ) -> bool :
4042 res = self ._async_executor (self .touch_async (key , ttl = ttl , version = version ))
4143 return bool (res )
4244
43- def incr (self , key : str , delta : int = 1 , version : str = None ) -> int :
45+ def incr (self , key : str , delta : int = 1 , version : t . Optional [ str ] = None ) -> int :
4446 res = self ._async_executor (self .incr_async (key , delta = delta , version = version ))
4547 return t .cast (int , res )
4648
47- def decr (self , key : str , delta : int = 1 , version : str = None ) -> int :
49+ def decr (self , key : str , delta : int = 1 , version : t . Optional [ str ] = None ) -> int :
4850 res = self ._async_executor (self .decr_async (key , delta = delta , version = version ))
4951 return t .cast (int , res )
5052
@@ -59,7 +61,7 @@ def __init__(self, **kwargs: t.Any) -> None:
5961 self ._lock = Lock ()
6062
6163 @make_key_decorator
62- async def get_async (self , key : str , version : str = None ) -> t .Any :
64+ async def get_async (self , key : str , version : t . Optional [ str ] = None ) -> t .Any :
6365 async with self ._lock :
6466 if self ._has_expired (key ):
6567 await self ._delete (key )
@@ -77,7 +79,7 @@ async def _delete(self, key: str) -> bool:
7779 return True
7880
7981 @make_key_decorator
80- async def delete_async (self , key : str , version : str = None ) -> bool :
82+ async def delete_async (self , key : str , version : t . Optional [ str ] = None ) -> bool :
8183 async with self ._lock :
8284 return await self ._delete (key )
8385
@@ -86,8 +88,8 @@ async def set_async(
8688 self ,
8789 key : str ,
8890 value : t .Any ,
89- ttl : t .Union [float , int ] = None ,
90- version : str = None ,
91+ ttl : t .Union [float , int , None ] = None ,
92+ version : t . Optional [ str ] = None ,
9193 ) -> bool :
9294 async with self ._lock :
9395 self ._cache [key ] = pickle .dumps (value , self .pickle_protocol )
@@ -99,7 +101,7 @@ def _has_expired(self, key: str) -> bool:
99101 return exp is not None and exp <= time .time ()
100102
101103 @make_key_decorator
102- async def has_key_async (self , key : str , version : str = None ) -> bool :
104+ async def has_key_async (self , key : str , version : t . Optional [ str ] = None ) -> bool :
103105 async with self ._lock :
104106 if self ._has_expired (key ):
105107 await self ._delete (key )
@@ -108,7 +110,10 @@ async def has_key_async(self, key: str, version: str = None) -> bool:
108110
109111 @make_key_decorator
110112 async def touch_async (
111- self , key : str , ttl : t .Union [float , int ] = None , version : str = None
113+ self ,
114+ key : str ,
115+ ttl : t .Union [float , int , None ] = None ,
116+ version : t .Optional [str ] = None ,
112117 ) -> bool :
113118 async with self ._lock :
114119 if self ._has_expired (key ):
@@ -117,7 +122,7 @@ async def touch_async(
117122 self ._expire_track [key ] = self .get_backend_ttl (ttl )
118123 return True
119124
120- def has_key (self , key : str , version : str = None ) -> bool :
125+ def has_key (self , key : str , version : t . Optional [ str ] = None ) -> bool :
121126 res = self ._async_executor (self .has_key_async (key , version = version ))
122127 return bool (res )
123128
@@ -130,15 +135,19 @@ def _incr_decr_action(self, key: str, delta: int) -> int:
130135 return new_value
131136
132137 @make_key_decorator
133- async def incr_async (self , key : str , delta : int = 1 , version : str = None ) -> int :
138+ async def incr_async (
139+ self , key : str , delta : int = 1 , version : t .Optional [str ] = None
140+ ) -> int :
134141 async with self ._lock :
135142 if self ._has_expired (key ):
136143 await self ._delete (key )
137144 raise ValueError ("Key '%s' not found" % key )
138145 return self ._incr_decr_action (key , delta )
139146
140147 @make_key_decorator
141- async def decr_async (self , key : str , delta : int = 1 , version : str = None ) -> int :
148+ async def decr_async (
149+ self , key : str , delta : int = 1 , version : t .Optional [str ] = None
150+ ) -> int :
142151 async with self ._lock :
143152 if self ._has_expired (key ):
144153 await self ._delete (key )
0 commit comments