L i!SdZdZdZddlZddlZddlZddlZddlZddlZddl m Z GddZ Gd d ejjZGd d eZGd deZGddeZGddeZGddeZGddeZGddeZej,dgdZe j0dddfdZe j4ddfdZy)z0Extensible memoizing collections and decorators.) Cache FIFOCacheLFUCacheLRUCacheRRCache TLRUCacheTTLCachecached cachedmethodz6.2.2N)keysc"eZdZdZdZdZdZy) _DefaultSizecyNr rself_keys Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/cachetools/__init__.py __getitem__z_DefaultSize.__getitem__cyNr)rr_values r __setitem__z_DefaultSize.__setitem__!s rcyrrrs rpopz_DefaultSize.pop$rrN)__name__ __module__ __qualname__ __slots__rrrrrrrrsI rrceZdZdZeZeZddZdZ dZ dZ dZ dZ d Zd Zd Zdd Zefd ZddZedZedZedZy)rz?Mutable mapping to serve as a simple cache or cache base class.Nc|r||_|jtjurt|_t|_d|_||_yNr ) getsizeofrdict _Cache__size _Cache__data_Cache__currsize_Cache__maxsizermaxsizer's r__init__zCache.__init__/s< &DN >> 0&DKf  rct|jdt|jd|jd|j dS)N(z , maxsize=z , currsize=))typer reprr*r,r+rs r__repr__zCache.__repr__8s3 J     NN OO   rcb |j|S#t$r|j|cYSwxYwr)r*KeyError __missing__rkeys rrzCache.__getitem__@s6 );;s# # )##C( ( )s ..c|j}|j|}||kDr td||jvs|j||kr5|j |z|kDr#|j |j |z|kDr#||jvr||j|z }n|}||j|<||j|<|xj |z c_y)Nzvalue too large)r,r' ValueErrorr*r)r+popitem)rr;valuer.sizediffsizes rrzCache.__setitem__Fs..~~e$ '>./ / dkk !T[[%5%<//D(72 //D(72 $++ dkk#..HH  C C 8#rc~|jj|}|j|=|xj|zc_yr)r)rr*r+)rr;r@s r __delitem__zCache.__delitem__Vs.{{s# KK  4rc||jvSr)r*r:s r __contains__zCache.__contains__[sdkk!!rct|r)r8r:s rr9zCache.__missing__^s smrc,t|jSr)iterr*r5s r__iter__zCache.__iter__asDKK  rc,t|jSr)lenr*r5s r__len__z Cache.__len__ds4;;rc||vr||S|Srr)rr;defaults rgetz Cache.getms $;9 NrcX||vr ||}||=|S||jur t||}|Sr)_Cache__markerr8rr;rNr?s rrz Cache.popssB $;IES   %3- E rc*||vr||}|S|x||<}|SrrrRs r setdefaultzCache.setdefault}s. $;IE !( 'DI rc|jS)zThe maximum size of the cache.)r,r5s rr.z Cache.maxsizes~~rc|jS)zThe current size of the cache.)r+r5s rcurrsizezCache.currsizesrcy)z+Return the size of a cache element's value.r r)r?s rr'zCache.getsizeofsrr)r r!r"__doc__objectrQrr)r/r6rrrCrEr9rIrLrOrrTpropertyr.rW staticmethodr'rrrrr(sIxH ^F! ) $  "!  (rrcZeZdZdZddZej fdZejfdZdZy)rz/First In First Out (FIFO) cache implementation.Ncdtj|||tj|_yr)rr/ collections OrderedDict_FIFOCache__orderr-s rr/zFIFOCache.__init__" tWi0"..0 rc|||| |jj|y#t$rd|j|<YywxYwr)ra move_to_endr8rr;r? cache_setitems rrzFIFOCache.__setitem__sBdC' % LL $ $S ) % $DLL  %s(AAc0||||j|=yr)rarr; cache_delitems rrCzFIFOCache.__delitem__dC LL rc tt|j}||j|fS#t$r#t dt |jzdwxYw)z9Remove and return the `(key, value)` pair first inserted. %s is emptyN)nextrHrar StopIterationr8r3r r:s rr>zFIFOCache.popitem^ (tDLL)*C#' ' J=4:+>+>>?T I J 3,Ar) r r!r"rYr/rrrCr>rrrrrs/915:4E4E%.3->->(rrceZdZdZGddZd dZejfdZejfdZejfdZ d Z d Z y) rz1Least Frequently Used (LFU) cache implementation.ceZdZdZdZdZy)LFUCache._Link)countr rmprevc0||_t|_yr)rtsetr )rrts rr/zLFUCache._Link.__init__sDJDIrcP|j}|j}||_||_yrrmrurrmrus runlinkzLFUCache._Link.unlink"99D99DDIDIrN)r r!r"r#r/r{rrr_Linkrss5   rr}Nctj|||tjdx|_}|x|_|_i|_yr&)rr/rr}_LFUCache__rootrurm_LFUCache__links)rr.r'roots rr/zLFUCache.__init__s< tWi0%^^A.. d $$ DI rcB|||}||vr|j||Sr)_LFUCache__touchrr; cache_getitemr?s rrzLFUCache.__getitem__&dC( $; LL  rc||||||jvr|j|S|j}|j}|jdk7rEt j d}|j|_|x|_|j_||_|jj|||j|<yr) rrrrmrtrr}rur add)rr;r?rfrlinks rrzLFUCache.__setitem__sdC' $,, <<$ ${{yy ::?>>!$D DI)- -DI DI c  Src||||jj|}|jj||js|j yyr)rrr remover{rr;rirs rrCzLFUCache.__delitem__sGdC ||$ yy KKMrc|j}|j}||ur"tdt|jzdtt |j }||j|fS)z@Remove and return the `(key, value)` pair least frequently used.rlN)rrmr8r3r rHr r)rrcurrr;s rr>zLFUCache.popitems\{{yy 4<=4:+>+>>?T I4 ?#TXXc]##rc4|j|}|j}|j|jdzk7rt|jdk(r|xjdz c_yt j |jdz}|j|_|x|_|j_||_|jj||jj||js|j||j|<y)zIncrement use countr N) rrmrtrKr rr}rurrr{)rr;rrs r__touchzLFUCache.__touchs||C yy ::a '499~" a >>$**q.1D DI)- -DI DI c yy KKM  Srr) r r!r"rYr}r/rrrrCr>rrrrrrsN;   .3->-> 5:4E4E !.3->->$!rrc~eZdZdZd dZej fdZejfdZejfdZdZ dZ y) rz/Least Recently Used (LRU) cache implementation.Ncdtj|||tj|_yr)rr/r_r`_LRUCache__orderr-s rr/zLRUCache.__init__rbrcB|||}||vr|j||Sr_LRUCache__touchrs rrzLRUCache.__getitem__rrc:|||||j|yrrres rrzLRUCache.__setitem__ sdC' Src0||||j|=yr)rrhs rrCzLRUCache.__delitem__rjrc tt|j}||j|fS#t$r#t dt |jzdwxYw)z>Remove and return the `(key, value)` pair least recently used.rlN)rmrHrrrnr8r3r r:s rr>zLRUCache.popitemrorpcx |jj|y#t$rd|j|<YywxYw)zMark as recently usedN)rrdr8r:s rrzLRUCache.__touchs6 % LL $ $S ) % $DLL  %s 99r) r r!r"rYr/rrrrCr>rrrrrrsD91.3->-> 5:4E4E.3->->(%rrceZdZdZej dfdZedZejfdZ ejfdZ dZ y)rz-Random Replacement (RR) cache implementation.Nc\tj|||||_i|_g|_yr)rr/_RRCache__choice_RRCache__index_RRCache__keys)rr.choicer's rr/zRRCache.__init__&s' tWi0   rc|jS)z(The `choice` function used by the cache.)rr5s rrzRRCache.choice,s}}rc||||||jvr>t|j|j|<|jj|yyr)rrKrappendres rrzRRCache.__setitem__1sHdC' dll " #DKK 0DLL  KK  s # #rc||||jj|}|t|jdz k7r-|jd}||j|<||j|<|jjy)Nr )rrrKr)rr;riindexlasts rrCzRRCache.__delitem__7smdC    % C $q( (;;r?D!%DKK !&DLL  rc |j|j}||j|fS#t$r#t dt |j zdwxYw)z/Remove and return a random `(key, value)` pair.rlN)rrr IndexErrorr8r3r r:s rr>zRRCache.popitem@s] (-- ,C#' ' J=4:+>+>>?T I Js 0,A) r r!r"rYrandomrr/r[rrrCr>rrrrr#sL7'-}} 5:4E4E$ .3->->(rrceZdZdZGddZej dfdZejfdZ ejfdZ e fdZ e d Z d Zd Zd Zd ZxZS) _TimedCachez0Base class for time aware cache implementations.c0eZdZdZdZdZdZdZdZy)_TimedCache._Timerc ||_d|_yr&) _Timer__timer_Timer__nesting)rtimers rr/z_TimedCache._Timer.__init__Ns DLDNrcX|jdk(r|jS|jSr&rr _Timer__timer5s r__call__z_TimedCache._Timer.__call__Rs$~~"||~%{{"rc|jdk(r|jx|_}n |j}|xjdz c_|S)Nr r rrtimes r __enter__z_TimedCache._Timer.__enter__Xs<~~"%)\\^3 d{{ NNa NKrc.|xjdzc_yr)r)rexcs r__exit__z_TimedCache._Timer.__exit__`s NNa Nrc<tj|jffSr)r_Timerrr5s r __reduce__z_TimedCache._Timer.__reduce__cs%% 6 6rc.t|j|Sr)getattrr)rnames r __getattr__z_TimedCache._Timer.__getattr__fs4<<. .rN) r r!r"r/rrrrrrrrrrMs   #    7 /rrNcftj|||tj||_yr)rr/rr_TimedCache__timer)rr.rr's rr/z_TimedCache.__init__is$ tWi0"))%0 rcx|j5}|j|||cdddS#1swYyxYwrrexpire)r cache_reprrs rr6z_TimedCache.__repr__ms4 \\ $T KK d# $ $ $09cx|j5}|j|||cdddS#1swYyxYwrr)r cache_lenrs rrLz_TimedCache.__len__rs3 \\ #T KK T? # # #rc~|j5}|j|t| cdddS#1swYyxYwr)rrsuperrW)rr __class__s rrWz_TimedCache.currsizews5 \\ $T KK 7# $ $ $s3<c|jS)z%The timer function used by the cache.)rr5s rrz_TimedCache.timer}s||rc|j5}|j|tj|dddy#1swYyxYwr)rrrclearrs rrz_TimedCache.clears8 \\ T KK  KK    s '=Acx|j5tj|g|i|cdddS#1swYyxYwr)rrrOrargskwargss rrOz_TimedCache.get4 \\ 499T3D3F3 4 4 4rcx|j5tj|g|i|cdddS#1swYyxYwr)rrrrs rrz_TimedCache.poprrcx|j5tj|g|i|cdddS#1swYyxYwr)rrrTrs rrTz_TimedCache.setdefaults6 \\ ;##D:4:6: ; ; ;r)r r!r"rYrr monotonicr/rr6rLr[rWrrrOrrT __classcell__)rs@rrrJsx://8'+nn1#(..$ !& # $$  44;rrceZdZdZGddZej dfdZdZe jfdZ e jfdZ e jfd Z d Z d Zed Zdd ZdZdZy)rz@LRU Cache implementation with per-item time-to-live (TTL) value.c$eZdZdZddZdZdZy)TTLCache._Link)r;expiresrmruNc ||_||_yr)r;rrr;rs rr/zTTLCache._Link.__init__sDH"DLrcRtj|j|jffSr)rr}r;rr5s rrzTTLCache._Link.__reduce__s>>DHHdll#;; ;rcP|j}|j}||_||_yrryrzs rr{zTTLCache._Link.unlinkr|rNN)r r!r"r#r/rr{rrrr}rs6  # < rr}Nctj||||tjx|_}|x|_|_tj|_ ||_ yr) rr/rr}_TTLCache__rootrurmr_r`_TTLCache__links_TTLCache__ttl)rr.ttlrr'rs rr/zTTLCache.__init__sNT7E9=%^^-- d $$ DI"..0  rcz |j|}|j|jkS#t$rYywxYwNF)rrrr8)rr;rs rrEzTTLCache.__contains__@ /<<$D::<$,,. .   . ::c |j|}|j|jk }|r|j |S|||S#t$rd}Y)wxYwr)_TTLCache__getlinkrrr8r9)rr;rrexpireds rrzTTLCache.__getitem__e 8>>#&D ::<$,,67G ##C( ( s+ + G A AAc|j5}|j|||||ddd |j|}|j|jz|_ |jx|_ }|jx|_ }|x|_ |_ y#1swYtxYw#t$r't j |x|j|<}YwxYwr) rrrr{r8rr}rrrrrmru)rr;r?rfrrrrus rrzTTLCache.__setitem__s ZZ ,4 KK  $U + , >>#&D KKMdjj( ;;& D99$ D $$ DI , ,  ;'/~~c': :DLL  ;sBB(B%(-CCc||||jj|}|j|j|jks t |yr)rrr{rrr8rs rrCzTTLCache.__delitem__sJdC ||$  t||+3- ,rc#K|j}|j}||urD|j5}||jkr|jddd|j}||urCyy#1swYxYwwr)rrmrrr;)rrrrs rrIzTTLCache.__iter__sg{{yy$ #t$,,&((N #99D $ # #s")A0A$ A0"A0$A-)A0cR|jj||j}|x|_|_t |j jdD]*}||_|jx|_}|x|_|_,|j|jy)Nc|jSrr)objs rz'TTLCache.__setstate__..s #++r)r;) __dict__updaterrurmsortedrvaluesrr)rstaterrrus r __setstate__zTTLCache.__setstate__s U#{{ $$ DI4<<..06MN )DDI#yy (DI$( (DI  ) DJJL!rc|jS)z,The time-to-live value of the cache's items.)rr5s rrz TTLCache.ttlzzrc||j}|j}|j}|j}g}tj }tj }||ur||jks|j|j|||jf|||j||j=|j}|j|}||ur||jks|S)qRemove expired items from the cache and return an iterable of the expired `(key, value)` pairs. ) rrrmrrrCrrrr;r{) rrrrlinksrrirrms rrzTTLCache.expires <::zTTLCache.popitem ZZ ,4 KK  ,4 -.TXXc]+ , ,! N}tDz/B/BBCM N  , ,!B AB ,BB  BcZ|j|}|jj||Sr)rrdrr;r?s r __getlinkzTTLCache.__getlink' S!   % rr)r r!r"rYr}rrr/rErrrrCrIrr[rrr>rrrrrrsJ ,0>>T/.3->-> ,5:4E4E %.3->-> ", ,rrceZdZdZej GddZejdfdZ dZ e jfdZ e jfdZ e jfd Zd Zed Zdd Zd ZdZy)rz;Time aware Least Recently Used (TLRU) cache implementation.ceZdZdZddZdZy)TLRUCache._Itemr;rremovedNc.||_||_d|_yrrrs rr/zTLRUCache._Item.__init__"sDH"DL DLrc4|j|jkSrr)rothers r__lt__zTLRUCache._Item.__lt__'s<<%--/ /rr)r r!r"r#r/rrrr_Itemrs1  !  0rrNctj||||tj|_g|_||_yr)rr/r_r`_TLRUCache__items_TLRUCache__order_TLRUCache__ttu)rr.tturr's rr/zTLRUCache.__init__*s4T7E9="..0   rcz |j|}|j|jkS#t$rYywxYwr)rrrr8)rr;items rrEzTLRUCache.__contains__0rrc |j|}|j|jk }|r|j |S|||S#t$rd}Y)wxYwr)_TLRUCache__getitemrrr8r9)rr;rr rs rrzTLRUCache.__getitem__8rrc|j5}|j|||}||ks dddy|j|||||ddd d|j|_t j|x|j|<}tj|j|y#1swYfxYw#t $rY]wxYwNT) rrrr"rr8rrrheapqheappushr)rr;r?rfrrr s rrzTLRUCache.__setitem__Ds ZZ ,4jjeT2G7N , , KK  $U +  , *.DNN3  '$-??3#@@ SD t||T* , ,   s"B0B0B<0B9< CCc|j5}|||ddd|jj|}d|_|jks t |y#1swYFxYwr$)rrrrrr8)rr;rirr s rrCzTLRUCache.__delitem__Tsb ZZ %4 $ $ %||$ t||#3- $  % %s AA%c#K|jD]@}|j5}||jkr|js|jdddBy#1swYMxYwwr)rrrrr;)rrrs rrIzTLRUCache.__iter__]sVLL #D #t$,,&t||((N # # # # #sA*A AA Ac|jS)z1The local time-to-use function used by the cache.)rr5s rrz TLRUCache.ttudrrc||j}|j}|j}t|t|dzkDr9|Dcgc]}|jr|c}x|_}t j |g}tj}tj}|r|djs||djkst j|}|jsN|j|j|||jf|||j||j=|r#|djr||djks|Scc}w)rr )rrrrKrr%heapifyrrCrrheappoprr;)rritemsorderr rrirs rrzTLRUCache.expireis <::zTLRUCache.popitemr r cZ|j|}|jj||Sr)rrdr s r __getitemzTLRUCache.__getitemrrr)r r!r"rY functoolstotal_orderingrrrr/rErrrrCrIr[rrr>r"rrrrrsE 0 0 0,0>>T /.3->-> ,5:4E4E+ .3->-> #0 ,rr CacheInfo)hitsmissesr.rWFcddlmttrddlm}|dt ddfd }|S) z_Decorator to wrap a function with a memoizing callable that saves results in a cache. r _wrapperr )warnz4passing `info` as positional parameter is deprecatedr+) stacklevelNcrQttrfd}n-ttjjrfd}nd}||S|S)NcHt||jjSr) _CacheInfor.rWr6r7caches r make_infoz,cached..decorator..make_infos%dFEMM5>>RRrc2t||dtSr)r?rKr@s rrBz,cached..decorator..make_infos%dFD#e*EErct||ddSr&)r?)r6r7s rrBz,cached..decorator..make_infos%dFAq99r)info) isinstancerr_abcMapping)funcrBr:rA conditionrEr;locks r decoratorzcached..decoratorsa %'SE;??#:#:;F :D%dIIN ND%dI> >r)_cachedr:rFboolwarningsr;DeprecationWarning)rAr;rKrJrEr;rLr:s````` @rr r sD ")T"! B   ??* rc.ddlmfd}|S)zoDecorator to wrap a class or instance method with a memoizing callable that saves results in a cache. r r9c|Srr)methodr:rArJr;rKs rrLzcachedmethod..decoratorssD)<r]s6     iKOO * *iX((8J!uJ!Z#%u#%L$(e$(NG;%G;TD{DNw wt$[ # #: llE'T!NN r