3 M(ฬY‰ ใ@sถdZddlmZddlZddlmZddlmZddlm Z ddl m Z dd l m Z dd lmZdZdZeejdd„dd„ƒdƒrŠejZndd„Zejdfdd„Zejdfdd„ZdS)z0Extensible memoizing collections and decorators.้)ฺabsolute_importN้)ฺkeys)ฺCache)ฺLFUCache)ฺLRUCache)ฺRRCache)ฺTTLCacherrrrr ฺcachedฺ cachedmethodz2.0.1cCs|ƒS)Nฉ)ฺfr r ๚A/private/tmp/pip-build-nl73fm5q/cachetools/cachetools/__init__.pyฺsrcCsdS)N้*r r r r rrsฺ __wrapped__cCstj||ƒ||_|S)N)ฺ functoolsฺupdate_wrapperr)ฺwrapperฺwrappedr r rฺ_update_wrappers rcs‡‡‡fdd„}|S)z_Decorator to wrap a function with a memoizing callable that saves results in a cache. csLˆdkr‡fdd„}n,ˆdkr0‡‡‡fdd„}n‡‡‡‡fdd„}t|ˆƒS)Ncs ˆ||ŽS)Nr )ฺargsฺkwargs)ฺfuncr rr%sz*cached..decorator..wrappercsXˆ||Ž}yˆ|Stk r&YnXˆ||Ž}y |ˆ|<Wntk rRYnX|S)N)ฺKeyErrorฺ ValueError)rrฺkฺv)ฺcacherฺkeyr rr(s   csxˆ||Ž}yˆ ˆ|SQRXWntk r6YnXˆ||Ž}yˆ|ˆ|<WdQRXWntk rrYnX|S)N)rr)rrrr)rrrฺlockr rr5s  )r)rr)rrr )rrฺ decorator#s  zcached..decoratorr )rrr r!r )rrr rr s!cs‡‡‡fdd„}|S)zoDecorator to wrap a class or instance method with a memoizing callable that saves results in a cache. cs6ˆdkr‡‡‡fdd„}n‡‡‡‡fdd„}t|ˆƒS)Ncs„ˆ|ƒ}|dkr ˆ|f|ž|ŽSˆ|f|ž|Ž}y||Stk rLYnXˆ|f|ž|Ž}y |||<Wntk r~YnX|S)N)rr)ฺselfrrฺcrr)rrฺmethodr rrNs z0cachedmethod..decorator..wrappercsฌˆ|ƒ}|dkr ˆ|f|ž|ŽSˆ|f|ž|Ž}yˆ|ƒ ||SQRXWntk r`YnXˆ|f|ž|Ž}y ˆ|ƒ|||<WdQRXWntk rฆYnX|S)N)rr)r"rrr#rr)rrr r$r rr^s   )r)r$r)rrr )r$rr!Lszcachedmethod..decoratorr )rrr r!r )rrr rr Gs$)rrrrr r r )ฺ__doc__ฺ __future__rrฺrrrZlfurZlrurZrrrZttlr ฺ__all__ฺ __version__ฺhasattrrrZhashkeyr r r r r rฺs        )