
    3ik                         S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SKJ	r	J
r
  S SKJrJr   " S S\5      r " S	 S
\5      r " S S\5      rg)    N)AnyCallable)Segment)override)DictOptional)ABCabstractmethodc                       \ rS rSr\S\R                  S\\   4S j5       r	\S\R                  S\\   4S j5       r
\S\R                  S\SS4S j5       r\SS	 j5       rS
rg)SegmentCache
   keyreturnc                     g N selfr   s     c/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/segment/impl/manager/cache/cache.pygetSegmentCache.get           c                     g r   r   r   s     r   popSegmentCache.pop   r   r   valueNc                     g r   r   r   r   r   s      r   setSegmentCache.set   r   r   c                     g r   r   r   s    r   resetSegmentCache.reset   r   r   r   r   N)__name__
__module____qualname____firstlineno__r
   uuidUUIDr   r   r   r   r    r$   __static_attributes__r   r   r   r   r   
   s    tyy Xg%6   tyy Xg%6   tyy  T    r   r   c                       \ rS rSrS r\S\R                  S\\	   4S j5       r
\S\R                  S\\	   4S j5       r\S\R                  S\	SS4S	 j5       r\SS
 j5       rSrg)
BasicCache   c                 F    0 U l         [        R                  " 5       U l        g r   )cache	threadingRLocklockr#   s    r   __init__BasicCache.__init__   s    /1
OO%	r   r   r   c                     U R                      U R                  R                  U5      sS S S 5        $ ! , (       d  f       g = fr   )r5   r2   r   r   s     r   r   BasicCache.get!   s#    YY::>>#& YYs	   2
A c                     U R                      U R                  R                  US 5      sS S S 5        $ ! , (       d  f       g = fr   )r5   r2   r   r   s     r   r   BasicCache.pop&   s%    YY::>>#t, YYs	   3
Ar   Nc                 l    U R                      X R                  U'   S S S 5        g ! , (       d  f       g = fr   r5   r2   r   s      r   r    BasicCache.set+   s    YY#JJsO YY   %
3c                 ^    U R                      0 U l        S S S 5        g ! , (       d  f       g = fr   r=   r#   s    r   r$   BasicCache.reset0   s    YYDJ YYs   
,)r2   r5   r&   )r'   r(   r)   r*   r6   r   r+   r,   r   r   r   r   r    r$   r-   r   r   r   r/   r/      s    & 'tyy 'Xg%6 ' ' -tyy -Xg%6 - - $tyy $ $T $ $  r   r/   c            
       N   \ rS rSrSr SS\S\\R                  /\4   S\	\\R                  \
/\4      4S jjrS\R                  4S	 jr\S\R                  S
\	\
   4S j5       r\S\R                  S
\	\
   4S j5       r\S\R                  S\
S
S4S j5       r\S 5       rSrg)SegmentLRUCache6   zA simple LRU cache implementation that handles objects with dynamic sizes.
The size of each object is determined by a user-provided size function.Ncapacity	size_funccallbackc                 x    Xl         X l        0 U l        / U l        X0l        [
        R                  " 5       U l        g r   )rE   rF   r2   historyrG   r3   r4   r5   )r   rE   rF   rG   s       r   r6   SegmentLRUCache.__init__:   s/     !"/1
 OO%	r   r   c                     XR                   ;   a7  U R                   R                  U5        U R                   R                  U5        g U R                   R                  U5        g r   )rI   removeappendr   s     r   _upsert_keySegmentLRUCache._upsert_keyG   sB    ,,LL$LL$LL$r   r   c                     U R                      U R                  U5        XR                  ;   a  U R                  U   sS S S 5        $  S S S 5        g ! , (       d  f       g = fr   )r5   rN   r2   r   s     r   r   SegmentLRUCache.getN   sB    YYS!jj zz# Y
  YYs   /AA
Ac                     U R                      XR                  ;   a  U R                  R                  U5        U R                  R	                  US 5      sS S S 5        $ ! , (       d  f       g = fr   )r5   rI   rL   r2   r   r   s     r   r   SegmentLRUCache.popW   sA    YYll"##C(::>>#t, YYs   AA
A+r   c                    U R                      XR                  ;   a
   S S S 5        g U R                  U5      nU R                   Vs0 s H  oU R                  U5      _M     nn[        UR	                  5       5      nSnXS-   U R
                  :  a  [        U R                  5      U:  a  U R                  U   nXpR                  ;   a2  U R                  XpR                  U   5        U R                  U	 XTU   -  nUS-  nXS-   U R
                  :  a  [        U R                  5      U:  a  M  X R                  W'   U R                  U5        S S S 5        g s  snf ! , (       d  f       g = f)Nr      )
r5   r2   rF   sumvaluesrE   lenrI   rG   rN   )r   r   r   	item_size	key_sizes
total_sizeindex
key_deletes           r   r    SegmentLRUCache.set^   s*   YYjj  Y s+I=AZZHZcdnnS11ZIHY--/0JE(4==8S=NQV=V!\\%0
+MM*jj.DE

:.J"77J
 (4==8S=NQV=V $JJsOS!# Y I	 Ys)   EEE!CE+EE
E&c                 l    U R                      0 U l        / U l        S S S 5        g ! , (       d  f       g = fr   )r5   r2   rI   r#   s    r   r$   SegmentLRUCache.resets   s!    YYDJDL YYr?   )r2   rG   rE   rI   r5   rF   r   )r'   r(   r)   r*   __doc__intr   r+   r,   r   r   r   r6   rN   r   r   r   r    r$   r-   r   r   r   rC   rC   6   s    O CG	&& TYYK,-& 8TYY$8#$=>?	&%tyy % tyy Xg%6   -tyy -Xg%6 - - "tyy " "T " "(  r   rC   )r3   r+   typingr   r   chromadb.typesr   	overridesr   r   r   abcr	   r
   r   r/   rC   r   r   r   <module>rg      s@        "  ! #3 $ 4Aj Ar   