+
    }isU                        R t RtRt^ R	It^ R	It^ R	It^ R	It^ R	It^ R	It^R
I	H
t
  ! R R4      t ! R R]P                  P                  4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]P,                  ! R. RO4      t]
P0                  R	R	R3R lt]
P4                  R	R	R3R ltR	# )z0Extensible memoizing collections and decorators.Cache	FIFOCacheLFUCacheLRUCacheRRCache	TLRUCacheTTLCachez7.0.1N)keysc                   :   a  ] tR t^t o RtRtR tR tR tRt	V t
R# )_DefaultSizezAA minimal "fake" dict that returns a constant size 1 for any key.c                    ^#     self_keys   &&e/Users/ahmad/.openclaw/workspace/my-crawler/.venv/lib/python3.14/site-packages/cachetools/__init__.py__getitem___DefaultSize.__getitem__#           c                    R # Nr   )r   r   _values   &&&r   __setitem___DefaultSize.__setitem__&   s    r   c                    ^# r   r   r   s   &&r   pop_DefaultSize.pop)   r   r   r   N)__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s!     KI r   r   c                      a  ] tR t^-t o Rt]! 4       t]! 4       tRR lt	R t
R tR tR tR tR	 tR
 tR tRR lt]3R ltRR lt]R 4       t]R 4       t]R 4       tRtV tR# )r   z?Mutable mapping to serve as a simple cache or cache base class.Nc                    V'       d   W n         V P                   \        P                   Jd   \        4       V n        \        4       V n        ^ V n        Wn        R#     N)	getsizeofr   dict_Cache__size_Cache__data_Cache__currsize_Cache__maxsizer   maxsizer.   s   &&&r   __init__Cache.__init__4   s8    &N>>0&DKf r   c                    \        V 4      P                  : R \        V P                  4      : RV P                  : RV P
                  : R2# )(z
, maxsize=z, currsize=))typer    reprr1   r3   r2   r   s   &r   __repr__Cache.__repr__=   s3    JNNOO	
 	
r   c                n     V P                   V,          #   \         d    T P                  T4      u # i ; ir   )r1   KeyError__missing__r   keys   &&r   r   Cache.__getitem__E   s6    	);;s## 	)##C((	)s    44c                   V P                   pV P                  V4      pWC8  d   \        R 4      hWP                  9  g   V P                  V,          V8  d+   V P
                  V,           V8  d   V P                  4        K*  WP                  9   d   W@P                  V,          ,
          pMTpW P                  V&   W@P                  V&   V ;P
                  V,          un        R# )zvalue too largeN)r3   r.   
ValueErrorr1   r0   r2   popitem)r   rD   valuer5   sizediffsizes   &&&   r   r   Cache.__setitem__K   s    ..~~e$>.//kk!T[[%5%<//D(72++kk#..HH CC8#r   c                    V P                   P                  V4      pV P                  V V ;P                  V,          un        R # r   )r0   r   r1   r2   )r   rD   rJ   s   && r   __delitem__Cache.__delitem__[   s.    {{s#KK4r   c                    WP                   9   # r   )r1   rC   s   &&r   __contains__Cache.__contains__`   s    kk!!r   c                    \        V4      hr   )rA   rC   s   &&r   rB   Cache.__missing__c   s    smr   c                ,    \        V P                  4      # r   )iterr1   r=   s   &r   __iter__Cache.__iter__f   s    DKK  r   c                ,    \        V P                  4      # r   )lenr1   r=   s   &r   __len__Cache.__len__i   s    4;;r   c                "    W9   d	   W,          # V# r   r   )r   rD   defaults   &&&r   get	Cache.getr   s    ;9Nr   c                b    W9   d   W,          pW V# W P                   J d   \        V4      hTpV# r   )_Cache__markerrA   r   rD   r^   rI   s   &&& r   r   	Cache.popx   s:    ;IE	
 	 %3-Er   c                2    W9   d   W,          pV# T;W&   pV# r   r   rc   s   &&& r   
setdefaultCache.setdefault   s(    ;IE  !('DIr   c                    V P                   # )zThe maximum size of the cache.)r3   r=   s   &r   r5   Cache.maxsize   s     ~~r   c                    V P                   # )zThe current size of the cache.)r2   r=   s   &r   currsizeCache.currsize   s     r   c                    ^# )z+Return the size of a cache element's value.r   )rI   s   &r   r.   Cache.getsizeof   s     r   )
__currsize__data	__maxsize__sizer.   r   )r    r!   r"   r#   r$   objectrb   r   r0   r6   r>   r   r   rN   rQ   rB   rW   r[   r_   r   rf   propertyr5   rk   staticmethodr.   r&   r'   r(   s   @r   r   r   -   s     IxH^F!
)$  
"!   (       r   c                   t   a  ] tR t^t o RtRR lt]P                  3R lt]P                  3R ltR t	Rt
V tR# )	r   z/First In First Out (FIFO) cache implementation.Nc                f    \         P                  WV4       \        P                  ! 4       V n        R # r   )r   r6   collectionsOrderedDict_FIFOCache__orderr4   s   &&&r   r6   FIFOCache.__init__        ti0"..0r   c                    V! WV4       WP                   9   d   V P                   P                  V4       R # R V P                   V&   R # r   )rz   move_to_endr   rD   rI   cache_setitems   &&&&r   r   FIFOCache.__setitem__   s6    d',,LL$$S) $DLLr   c                0    V! W4       V P                   V R # r   )rz   r   rD   cache_delitems   &&&r   rN   FIFOCache.__delitem__       d LLr   c                     \        \        V P                  4      4      pWP                  V4      3#   \         d(    \        R\        T 4      P                  ,          4      Rhi ; i)z9Remove and return the `(key, value)` pair first inserted.%s is emptyN)nextrV   rz   r   StopIterationrA   r;   r    rC   s   & r   rH   FIFOCache.popitem   \    	(tDLL)*C #''  	J=4:+>+>>?TI	J	   2 2A$__orderr   )r    r!   r"   r#   r$   r6   r   r   rN   rH   r&   r'   r(   s   @r   r   r      s7     91 5:4E4E % .3->-> ( (r   c                      a  ] tR t^t o Rt ! R R4      tRR lt]P                  3R lt]P                  3R lt	]P                  3R lt
R	 tR
 tRtV tR# )r   z1Least Frequently Used (LFU) cache implementation.c                   0   a  ] tR t^t o RtR tR tRtV tR# )LFUCache._Linkc                0    Wn         \        4       V n        R # r   )countsetr	   )r   r   s   &&r   r6   LFUCache._Link.__init__   s    JDIr   c                N    V P                   pV P                  pWn         W!n        R # r   r   prevr   r   r   s   &  r   unlinkLFUCache._Link.unlink       99D99DIIr   )r   r	   N)r   r	   r   r   )	r    r!   r"   r#   r%   r6   r   r&   r'   r(   s   @r   _Linkr      s     5			 	r   r   Nc                    \         P                  WV4       \        P                  ^ 4      ;V n        pV;Vn        Vn        / V n        R# r,   )r   r6   r   r   _LFUCache__rootr   r   _LFUCache__links)r   r5   r.   roots   &&& r   r6   LFUCache.__init__   s:    ti0%^^A..d $$	DIr   c                D    V! W4      pW9   d   V P                  V4       V# r   )_LFUCache__touchr   rD   cache_getitemrI   s   &&& r   r   LFUCache.__getitem__   "    d(;LLr   c                   V! WV4       WP                   9   d   V P                  V4       R # V P                  pVP                  pVP                  ^8w  dE   \
        P                  ^4      pVP                  Vn        V;Vn        VP                  n        WEn        VP                  P                  V4       WPP                   V&   R # r   )
r   r   r   r   r   r   r   r   r	   add)r   rD   rI   r   r   links   &&&&  r   r   LFUCache.__setitem__   s    d',,LL{{yy::?>>!$D		DI)--DI		I		c Sr   c                    V! W4       V P                   P                  V4      pVP                  P                  V4       VP                  '       g   VP	                  4        R # R # r   )r   r   r	   remover   r   rD   r   r   s   &&& r   rN   LFUCache.__delitem__   sG    d ||$		yyyKKM r   c                    V P                   pVP                  pW!J d'   \        R\        V 4      P                  ,          4      Rh\        \        VP                  4      4      pW0P                  V4      3# )z@Remove and return the `(key, value)` pair least frequently used.r   N)r   r   rA   r;   r    rV   r	   r   )r   r   currrD   s   &   r   rH   LFUCache.popitem   sX    {{yy<=4:+>+>>?TI4		?#XXc]##r   c                h   V P                   V,          pVP                  pVP                  VP                  ^,           8w  d   \        VP                  4      ^8X  d   V;P                  ^,          un        R# \
        P                  VP                  ^,           4      pVP                  Vn        V;Vn        VP                  n        W#n        VP                  P                  V4       VP                  P                  V4       VP                  '       g   VP                  4        W0P                   V&   R# )zIncrement use countN)r   r   r   rZ   r	   r   r   r   r   r   r   )r   rD   r   r   s   &&  r   __touchLFUCache.__touch   s    ||C yy::a'499~"

a
>>$**q.1D		DI)--DI		I		c		yyyKKM Sr   )__links__rootr   )r    r!   r"   r#   r$   r   r6   r   r   r   rN   rH   r   r&   r'   r(   s   @r   r   r      sV     ;  .3->->  5:4E4E ! .3->-> $! !r   c                      a  ] tR tRt o RtRR lt]P                  3R lt]P                  3R lt]P                  3R lt	R t
R	 tR
tV tR# )r   i  z/Least Recently Used (LRU) cache implementation.Nc                f    \         P                  WV4       \        P                  ! 4       V n        R # r   )r   r6   rx   ry   _LRUCache__orderr4   s   &&&r   r6   LRUCache.__init__  r|   r   c                D    V! W4      pW9   d   V P                  V4       V# r   _LRUCache__touchr   s   &&& r   r   LRUCache.__getitem__
  r   r   c                :    V! WV4       V P                  V4       R # r   r   r   s   &&&&r   r   LRUCache.__setitem__  s    d'Sr   c                0    V! W4       V P                   V R # r   )r   r   s   &&&r   rN   LRUCache.__delitem__  r   r   c                     \        \        V P                  4      4      pWP                  V4      3#   \         d(    \        R\        T 4      P                  ,          4      Rhi ; i)z>Remove and return the `(key, value)` pair least recently used.r   N)r   rV   r   r   r   rA   r;   r    rC   s   & r   rH   LRUCache.popitem  r   r   c                     V P                   P                  V4       R#   \         d    RT P                   T&    R# i ; i)zMark as recently usedN)r   r~   rA   rC   s   &&r   r   LRUCache.__touch!  s6    	%LL$$S) 	% $DLL	%s    ==r   r   )r    r!   r"   r#   r$   r6   r   r   r   rN   rH   r   r&   r'   r(   s   @r   r   r     sL     91 .3->->  5:4E4E  .3->-> (% %r   c                      a  ] tR tRt o Rt]P                  R3R lt]R 4       t]	P                  3R lt
]	P                  3R ltR tR	tV tR# )
r   i)  z-Random Replacement (RR) cache implementation.Nc                Z    \         P                  WV4       W n        / V n        . V n        R # r   )r   r6   _RRCache__choice_RRCache__index_RRCache__keys)r   r5   choicer.   s   &&&&r   r6   RRCache.__init__,  s#    ti0r   c                    V P                   # )z(The `choice` function used by the cache.)r   r=   s   &r   r   RRCache.choice2  s     }}r   c                    V! WV4       WP                   9  d@   \        V P                  4      V P                   V&   V P                  P                  V4       R # R # r   )r   rZ   r   appendr   s   &&&&r   r   RRCache.__setitem__7  sD    d'll" #DKK 0DLLKKs# #r   c                    V! W4       V P                   P                  V4      pV\        V P                  4      ^,
          8w  d0   V P                  R,          pW@P                  V&   W0P                   V&   V P                  P                  4        R# )r   N)r   r   rZ   r   )r   rD   r   indexlasts   &&&  r   rN   RRCache.__delitem__=  sg    d   %C$q((;;r?D!%KK!&LLr   c                     V P                  V P                  4      pWP                  V4      3#   \         d(    \	        R\        T 4      P                  ,          4      Rhi ; i)z/Remove and return a random `(key, value)` pair.r   N)r   r   r   
IndexErrorrA   r;   r    rC   s   & r   rH   RRCache.popitemF  s[    	(--,C #''  	J=4:+>+>>?TI	Js	   / 2A!)__choice__index__keys)r    r!   r"   r#   r$   randomr   r6   rt   r   r   rN   rH   r&   r'   r(   s   @r   r   r   )  sT     7'-}}    5:4E4E $ .3->-> ( (r   c                      a a ] tR tRt oRt ! R R4      t]P                  R3R lt]	P                  3R lt
]	P                  3R lt]V 3R	 l4       t]R
 4       tR tR tR tR tRtVtV ;t# )_TimedCacheiP  z0Base class for time aware cache implementations.c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
_TimedCache._TimeriS  c                     Wn         ^ V n        R# r,   )_Timer__timer_Timer__nesting)r   timers   &&r   r6   _TimedCache._Timer.__init__T  s     LDNr   c                \    V P                   ^ 8X  d   V P                  4       # V P                  # r-   r   r   _Timer__timer=   s   &r   __call___TimedCache._Timer.__call__X  s$    ~~"||~%{{"r   c                    V P                   ^ 8X  d   V P                  4       ;V n        pMV P                  pV ;P                   ^,          un         V# r   r   r   times   & r   	__enter___TimedCache._Timer.__enter__^  s<    ~~"%)\\^3d{{NNaNKr   c                8    V ;P                   ^,          un         R# )r   N)r   )r   excs   &*r   __exit___TimedCache._Timer.__exit__f  s    NNaNr   c                <    \         P                  V P                  33# r   )r   _Timerr   r=   s   &r   
__reduce___TimedCache._Timer.__reduce__i  s    %%66r   c                .    \        V P                  V4      # r   )getattrr   )r   names   &&r   __getattr___TimedCache._Timer.__getattr__l  s    4<<..r   )	__nesting__time__timerN)r    r!   r"   r#   r6   r   r   r   r   r  r&   r'   r(   s   @r   r   r   S  s(     		#		 	7	/ 	/r   r   Nc                f    \         P                  WV4       \        P                  V4      V n        R # r   )r   r6   r   r   _TimedCache__timer)r   r5   r   r.   s   &&&&r   r6   _TimedCache.__init__o  s"    ti0"))%0r   c                    V P                   ;_uu_ 4       pV P                  V4       V! V 4      uuR R R 4       #   + '       g   i     R # ; ir   r  expire)r   
cache_reprr   s   && r   r>   _TimedCache.__repr__s  s-    \\\TKKd# \\\	   9A
	c                    V P                   ;_uu_ 4       pV P                  V4       V! V 4      uuR R R 4       #   + '       g   i     R # ; ir   r
  )r   	cache_lenr   s   && r   r[   _TimedCache.__len__x  s,    \\\TKKT? \\\r  c                   < V P                   ;_uu_ 4       pV P                  V4       \        SV `  uuR R R 4       #   + '       g   i     R # ; ir   )r  r  superrk   )r   r   	__class__s   & r   rk   _TimedCache.currsize}  s.    \\\TKK7# \\\s	   <A	c                    V P                   # )z%The timer function used by the cache.)r  r=   s   &r   r   _TimedCache.timer  s     ||r   c                    V P                   ;_uu_ 4       pV P                  V4       \        P                  V 4       R R R 4       R #   + '       g   i     R # ; ir   )r  r  r   clearr   s   & r   r  _TimedCache.clear  s1    \\\TKKKK \\\s   'AA	c                    V P                   ;_uu_ 4        \        P                  ! V .VO5/ VB uuR R R 4       #   + '       g   i     R # ; ir   )r  r   r_   r   argskwargss   &*,r   r_   _TimedCache.get  -    \\\99T3D3F3 \\\	   :A	c                    V P                   ;_uu_ 4        \        P                  ! V .VO5/ VB uuR R R 4       #   + '       g   i     R # ; ir   )r  r   r   r  s   &*,r   r   _TimedCache.pop  r   r!  c                    V P                   ;_uu_ 4        \        P                  ! V .VO5/ VB uuR R R 4       #   + '       g   i     R # ; ir   )r  r   rf   r  s   &*,r   rf   _TimedCache.setdefault  s/    \\\##D:4:6: \\\r!  )r  )r    r!   r"   r#   r$   r   r   	monotonicr6   r   r>   r[   rt   rk   r   r  r_   r   rf   r&   r'   __classcell__)r  r)   s   @@r   r   r   P  s     :/ /8 '+nn 1 #(.. $
 !& #
 $ $
  
44; ;r   r   c                      a  ] tR tRt o Rt ! R R4      t]P                  R3R ltR t	]
P                  3R lt]
P                  3R	 lt]
P                  3R
 ltR tR t]R 4       tRR ltR tR tRtV tR# )r   i  z@LRU Cache implementation with per-item time-to-live (TTL) value.c                   :   a  ] tR tRt o RtRR ltR tR tRtV t	R# )	TTLCache._Linki  Nc                    Wn         W n        R # r   )rD   expiresr   rD   r,  s   &&&r   r6   TTLCache._Link.__init__  s    H"Lr   c                R    \         P                  V P                  V P                  33# r   )r   r   rD   r,  r=   s   &r   r   TTLCache._Link.__reduce__  s    >>DHHdll#;;;r   c                N    V P                   pV P                  pWn         W!n        R # r   r   r   s   &  r   r   TTLCache._Link.unlink  r   r   )r,  rD   )rD   r,  r   r   NN)
r    r!   r"   r#   r%   r6   r   r   r&   r'   r(   s   @r   r   r*    s     6		#	<	 	r   r   Nc                    \         P                  WW44       \        P                  4       ;V n        pV;Vn        Vn        \        P                  ! 4       V n	        W n
        R # r   )r   r6   r   r   _TTLCache__rootr   r   rx   ry   _TTLCache__links_TTLCache__ttl)r   r5   ttlr   r.   r   s   &&&&& r   r6   TTLCache.__init__  sH    TE=%^^--d $$	DI"..0
r   c                     V P                   V,          pV P                  4       VP                  8  #   \         d     R # i ; iF)r6  r   r,  rA   )r   rD   r   s   && r   rQ   TTLCache.__contains__  @    	/<<$D ::<$,,..  		   2 A Ac                     V P                  V4      pV P                  4       VP                  8  * pV'       d   V P	                  V4      # V! W4      #   \         d    R p L0i ; ir;  )_TTLCache__getlinkr   r,  rA   rB   )r   rD   r   r   expireds   &&&  r   r   TTLCache.__getitem__  `    	8>>#&D  ::<$,,7G##C(( ++  	G	   A A"!A"c                   V P                   ;_uu_ 4       pV P                  V4       V! WV4       R R R 4        V P                  V4      pVP                  4        XV P                  ,           Vn	        V P                  ;Vn        pVP                  ;Vn        pV;Vn        Vn        R #   + '       g   i     L; i  \         d(    \
        P                  T4      ;T P                  T&   p Li ; ir   )r   r  r@  r   rA   r   r   r6  r7  r,  r5  r   r   )r   rD   rI   r   r   r   r   r   s   &&&&    r   r   TTLCache.__setitem__  s    ZZZ4KK$U+ 	>>#&D KKMdjj(;;&	D99$	D $$	DI Z
  	;'/~~c'::DLL	;s   B(B; (B8	;/C-,C-c                    V! W4       V P                   P                  V4      pVP                  4        V P                  4       VP                  8  g   \        V4      hR # r   )r6  r   r   r   r,  rA   r   s   &&& r   rN   TTLCache.__delitem__  sH    d ||$

t||+3- ,r   c              #     "   V P                   pVP                  pW!JdJ   V P                  ;_uu_ 4       pW2P                  8  d   VP                  x  R R R 4       VP                  pKN  R #   + '       g   i     L ; i5ir   )r5  r   r   r,  rD   )r   r   r   r   s   &   r   rW   TTLCache.__iter__  sU     {{yyt,,&((N  99D s   2A>A+A>+A;	6A>c                V   V P                   P                  V4       V P                  pV;Vn        Vn        \        V P                  P                  4       R  R7       F*  pW#n        VP                  ;Vn        pV;Vn        Vn        K,  	  V P                  V P                  4       4       R# )c                     V P                   # r   r,  )objs   &r   <lambda>'TTLCache.__setstate__.<locals>.<lambda>  s    #++r   )rD   N)
__dict__updater5  r   r   sortedr6  valuesr  r   )r   stater   r   r   s   &&   r   __setstate__TTLCache.__setstate__  s    U#{{ $$	DI4<<..06MNDI#yy(DI$((DI	 O 	DJJL!r   c                    V P                   # )z,The time-to-live value of the cache's items.)r7  r=   s   &r   r8  TTLCache.ttl       zzr   c                   Vf   V P                  4       pV P                  pVP                  pV P                  p. p\        P
                  p\        P                  pW2Jd|   WP                  8  gl   VP                  VP                  V! WP                  4      34       V! WP                  4       WCP                   VP                  pVP                  4        TpK  V# zaRemove expired items from the cache and return an iterable of the
expired `(key, value)` pairs.

)r   r5  r   r6  r   rN   r   r,  r   rD   r   )	r   r   r   r   linksrA  r   r   r   s	   &&       r   r  TTLCache.expire  s    
 <::<D{{yy))))||(;NNDHHmD((&CDE$)hh99DKKMDr   c           	     V   V P                   ;_uu_ 4       pV P                  V4        \        \        V P                  4      4      pW P                  V4      3uuRRR4       #   \         d(    \        R\        T 4      P                  ,          4      Rhi ; i  + '       g   i     R# ; iz]Remove and return the `(key, value)` pair least recently used that
has not already expired.

Nr   )
r   r  r   rV   r6  r   r   rA   r;   r    r   r   rD   s   &  r   rH   TTLCache.popitem      
 ZZZ4KK,4-. XXc]+ Z ! N}tDz/B/BBCMN	 ZZ"   BA"B"2BBB(	c                b    V P                   V,          pV P                   P                  V4       V# r   )r6  r~   r   rD   rI   s   && r   	__getlinkTTLCache.__getlink  '    S!  %r   )r   r   __ttlr   )r    r!   r"   r#   r$   r   r   r&  r6   rQ   r   r   r   rN   rW   rV  rt   r8  r  rH   r@  r&   r'   r(   s   @r   r   r     s     J   ,0>>T / .3->-> 
, 5:4E4E % .3->->  "  ,, r   c                     a  ] tR tRt o Rt^t]P                   ! R R4      4       t]	P                  R3R ltR t]P                  3R lt]P                  3R	 lt]P                   3R
 ltR t]R 4       tRR ltR tR tRtV tR# )r   i!  z;Time aware Least Recently Used (TLRU) cache implementation.c                   4   a  ] tR tRt o RtRR ltR tRtV tR# )TLRUCache._Itemi&  Nc                ,    Wn         W n        R V n        R# )FNrD   r,  removedr-  s   &&&r   r6   TLRUCache._Item.__init__*  s    H"L DLr   c                4    V P                   VP                   8  # r   rM  )r   others   &&r   __lt__TLRUCache._Item.__lt__/  s    <<%--//r   )r,  rD   rp  ro  r3  )	r    r!   r"   r#   r%   r6   rt  r&   r'   r(   s   @r   _Itemrm  &  s     1		!
	0 	0r   rv  Nc                    \         P                  WW44       \        P                  ! 4       V n        . V n        W n        R # r   )r   r6   rx   ry   _TLRUCache__items_TLRUCache__order_TLRUCache__ttu)r   r5   ttur   r.   s   &&&&&r   r6   TLRUCache.__init__2  s.    TE="..0
r   c                     V P                   V,          pV P                  4       VP                  8  #   \         d     R # i ; ir;  )rx  r   r,  rA   )r   rD   items   && r   rQ   TLRUCache.__contains__8  r=  r>  c                     V P                  V4      pV P                  4       VP                  8  * pV'       d   V P	                  V4      # V! W4      #   \         d    R p L0i ; ir;  )_TLRUCache__getitemr   r,  rA   rB   )r   rD   r   r~  rA  s   &&&  r   r   TLRUCache.__getitem__@  rC  rD  c                   V P                   ;_uu_ 4       pV P                  WV4      pWE8  g    R R R 4       R # V P                  V4       V! WV4       R R R 4        RV P                  V4      n        \        P                  VX4      ;V P                  V&   p\        P                  ! V P                  V4       R #   + '       g   i     Lo; i  \
         d     Lhi ; iNT)r   rz  r  r  rp  rA   r   rv  rx  heapqheappushry  )r   rD   rI   r   r   r,  r~  s   &&&&   r   r   TLRUCache.__setitem__L  s    ZZZ4jjT2GN Z KK$U+ 	*.DNN3' $-??3#@@SDt||T* Z  		s"   B:B:C :C
	CCc                    V P                   ;_uu_ 4       pV! W4       R R R 4       V P                  P                  V4      pRVn        XVP                  8  g   \        V4      hR #   + '       g   i     LP; ir  )r   rx  r   rp  r,  rA   )r   rD   r   r   r~  s   &&&  r   rN   TLRUCache.__delitem__\  sZ    ZZZ4$$  ||$t||#3- $ Zs   	A&&A6	c              #     "   V P                    FP  pV P                  ;_uu_ 4       pW!P                  8  d!   VP                  '       g   VP                  x  R R R 4       KR  	  R #   + '       g   i     Kg  ; i5ir   )ry  r   r,  rp  rD   )r   r   r   s   &  r   rW   TLRUCache.__iter__e  sG     LLDt,,&t|||((N  !s"   $A9"A%	A%A9%A60	A9c                    V P                   # )z1The local time-to-use function used by the cache.)rz  r=   s   &r   r{  TLRUCache.ttul  rZ  r   c                   Vf   V P                  4       pV P                  pV P                  p\        V4      \        V4      V P                  ,          8  dC   V Uu. uF  qDP
                  '       d   K  VNK  	  up;V n        p\        P                  ! V4       . p\        P                  p\        P                  pV'       d   V^ ,          P
                  '       g   W^ ,          P                  8  gx   \        P                  ! V4      pVP
                  '       d   Kb  VP                  VP                  V! WP                  4      34       V! WP                  4       W$P                   K  V# u upi r\  )r   rx  ry  rZ   _TLRUCache__HEAP_CLEANUP_FACTORrp  r  heapifyr   rN   r   r,  heappopr   rD   )r   r   itemsorderr~  rA  r   r   s   &&      r   r  TLRUCache.expireq  s    
 <::<Du:E
T%?%???5:#OUT,,DDU#OODL5MM% ))))q)))$q9I9I2I=='D<<<-hh*GHIdHH-((O $Ps   E,3E,c           	     V   V P                   ;_uu_ 4       pV P                  V4        \        \        V P                  4      4      pW P                  V4      3uuRRR4       #   \         d(    \        R\        T 4      P                  ,          4      Rhi ; i  + '       g   i     R# ; ir`  )
r   r  r   rV   rx  r   r   rA   r;   r    ra  s   &  r   rH   TLRUCache.popitem  rc  rd  c                b    V P                   V,          pV P                   P                  V4       V# r   )rx  r~   rf  s   && r   	__getitemTLRUCache.__getitem  ri  r   )__itemsr   __ttur   )r    r!   r"   r#   r$   r  	functoolstotal_orderingrv  r   r&  r6   rQ   r   r   r   rN   rW   rt   r{  r  rH   r  r&   r'   r(   s   @r   r   r   !  s     E	0 	0 	0 ,0>>T / .3->-> 
, 5:4E4E +  .3->->  #  0, r   	CacheInfoFc                4   a aaaaa ^RI Ho VV VVVV3R lpV# )zWDecorator to wrap a function with a memoizing callable that saves
results in a cache.

_wrapperc           	         < S'       d`   \        S\        4      '       d   V3R  lpM4\        S\        P                  P                  4      '       d   V3R lpMR pS! V SSSSVR7      # S! V SSSS4      # )c                 F   < \        WSP                  SP                  4      # r   )
_CacheInfor5   rk   hitsmissescaches   &&r   	make_info,cached.<locals>.decorator.<locals>.make_info  s    %dEMM5>>RRr   c                 0   < \        WR \        S4      4      # r   )r  rZ   r  s   &&r   r  r    s    %dD#e*EEr   c                     \        W^ ^ 4      # r   )r  )r  r  s   &&r   r  r    s    %dAq99r   info)
isinstancer   rx   abcMapping)funcr  r  r  	conditionr  rD   locks   & r   	decoratorcached.<locals>.decorator  sg    %''S E;??#:#:;;F
: D%dIINND%dI>>r   )_cachedr  r  rD   r  r  r  r  r  s   fffff @r   cachedr    s    
 "? ?* r   c                4   a aaaaa ^RI Ho VV VVVV3R lpV# )zgDecorator to wrap a class or instance method with a memoizing
callable that saves results in a cache.

r  c           	      N   < S'       d   R  pS! V SSSSVR7      # S! V SSSS4      # )c                    \        V \        4      '       d"   \        WV P                  V P                  4      # \        V \
        P                  P                  4      '       d   \        WR \        V 4      4      # \        R4      h)Nz)cache(self) must return a mutable mapping)
r  r   r  r5   rk   rx   r  r  rZ   	TypeError)r  r  r  s   &&&r   r  2cachedmethod.<locals>.decorator.<locals>.make_info  s\    eU++%dEMM5>>RR{'>'>??%dD#e*EE#$OPPr   r  r   )methodr  r  r  r  r  rD   r  s   & r   r  cachedmethod.<locals>.decorator  s6    Q FE3iiPPFE3i@@r   )_cachedmethodr  r  s   fffff @r   cachedmethodr    s    
 (A A r   )	r   r   r   r   r   r   r   r  r  )r  r  r5   rk   )r$   __all____version__rx   collections.abcr  r  r   r    r	   r   r  MutableMappingr   r   r   r   r   r   r   r   
namedtupler  hashkeyr  	methodkeyr  r   r   r   <module>r     s    6
         iKOO** iX( (8K!u K!\#%u #%L$(e $(NG;% G;TD{ DNy yx ##:

 llE > !NNE r   