
    *i                         S SK r S SKJrJr  S SKJrJrJr  S SKJ	r	  S SK
r
S SKrSSK7   " S S\5      r " S	 S
\5      r\r " S S\5      rg)    N)ABCabstractmethod)OptionalSequenceTuple)OrderedDict   )*c                       \ rS rSrSrSS\4S jjr\\S\4S j5       5       r	S\
\S4   S\\
\S4      4S	 jr\S\\   SS
4S j5       r\S\\   S\4S j5       r\S\\   SS
SS4S j5       rSrg)BaseLlamaCache   z'Base cache class for a llama.cpp model.capacity_bytesc                     Xl         g Nr   )selfr   s     S/var/www/html/ai-backend/venv/lib/python3.13/site-packages/llama_cpp/llama_cache.py__init__BaseLlamaCache.__init__   s    ,    returnc                     [         er   NotImplementedErrorr   s    r   
cache_sizeBaseLlamaCache.cache_size   s
     "!r   key.c                     g r    r   r   s     r   _find_longest_prefix_key'BaseLlamaCache._find_longest_prefix_key   s     	r   llama_cpp.llama.LlamaStatec                     [         er   r   r!   s     r   __getitem__BaseLlamaCache.__getitem__"       !!r   c                     [         er   r   r!   s     r   __contains__BaseLlamaCache.__contains__&   r(   r   valueNc                     [         er   r   r   r   r,   s      r   __setitem__BaseLlamaCache.__setitem__*   s
     "!r   r           )__name__
__module____qualname____firstlineno____doc__intr   propertyr   r   r   r   r"   r   r&   boolr*   r/   __static_attributes__r    r   r   r   r      s    1-s - "C "  "38_ 
%S/	" "x} "1M " " " "$ " " "C=")E"	" "r   r   c                      ^  \ rS rSrSrSS\4U 4S jjjr\S 5       rS\	\S4   S\
\	\S4      4S	 jrS\\   SS
4S jrS\\   S\4S jrS\\   SS
4S jrSrU =r$ )LlamaRAMCache1   z&Cache for a llama.cpp model using RAM.r   c                 N   > [         TU ]  U5        Xl        [        5       U l        g r   )superr   r   r   cache_state)r   r   	__class__s     r   r   LlamaRAMCache.__init__4   s%    (, M 	r   c                     [        U R                  R                  5        Vs/ s H  oR                  PM     sn5      $ s  snf r   )sumrA   valuesllama_state_size)r   states     r   r   LlamaRAMCache.cache_size;   s4    8H8H8O8O8QR8Qu**8QRSSRs   >r   .r   c                    ^ SnS nU4S jU R                   R                  5        5       nU H  u  pVXb:  d  M  UnUnM     U$ )Nr   c              3   |   >#    U  H1  nU[         R                  R                  R                  UT5      4v   M3     g 7fr   )	llama_cppllamaLlamalongest_token_prefix).0kr   s     r   	<genexpr>9LlamaRAMCache._find_longest_prefix_key.<locals>.<genexpr>E   s4      
, 	%%::1cBC,s   9<)rA   keys)r   r   min_lenmin_keyrT   rQ   
prefix_lens    `     r   r"   &LlamaRAMCache._find_longest_prefix_key?   sR     
%%**,
 "MA#$ " r   r$   c                     [        U5      nU R                  U5      nUc  [        S5      eU R                  U   nU R                  R	                  U5        U$ NzKey not found)tupler"   KeyErrorrA   move_to_endr   r   _keyr,   s       r   r&   LlamaRAMCache.__getitem__O   sT    Cj,,S1<?++  &$$T*r   c                 :    U R                  [        U5      5      S L$ r   r"   r[   r!   s     r   r*   LlamaRAMCache.__contains__X       ,,U3Z8DDr   r,   c                 v   [        U5      nXR                  ;   a  U R                  U	 X R                  U'   U R                  U R                  :  aj  [	        U R                  5      S:  aP  U R                  R                  SS9  U R                  U R                  :  a  [	        U R                  5      S:  a  MN  g g g g )Nr   F)last)r[   rA   r   r   lenpopitemr.   s      r   r/   LlamaRAMCache.__setitem__[   s    Cj"""  % %oo 3 33D<L<L8MPQ8Q$$%$0 oo 3 33D<L<L8MPQ8Q38Q3r   )rA   r   r1   )r3   r4   r5   r6   r7   r8   r   r9   r   r   r   r"   r   r&   r:   r*   r/   r;   __classcell__rB   s   @r   r=   r=   1   s    0s   T T38_ 
%S/	" x} 1M E E$ E1x} 15Q 1 1r   r=   c                      ^  \ rS rSrSr SS\S\4U 4S jjjr\S 5       r	S\
\S4   S	\\
\S4      4S
 jrS\\   S	S4S jrS\\   S	\4S jrS\\   SS4S jrSrU =r$ )LlamaDiskCacheh   z'Cache for a llama.cpp model using disk.	cache_dirr   c                 Z   > [         TU ]  U5        [        R                  " U5      U l        g r   )r@   r   	diskcacheCachecache)r   ro   r   rB   s      r   r   LlamaDiskCache.__init__k   s"     	(__Y/
r   c                 H    [        U R                  R                  5       5      $ r   )r8   rs   volumer   s    r   r   LlamaDiskCache.cache_sizeq   s    4::$$&''r   r   .r   c                     SnS nU R                   R                  5        H7  n[        R                  R                  R                  XA5      nXR:  d  M3  UnUnM9     U$ )Nr   )rs   iterkeysrL   rM   rN   rO   )r   r   rU   rV   rQ   rW   s         r   r"   'LlamaDiskCache._find_longest_prefix_keyu   sV     -1$$&A"..CCAKJ#$	 '
 r   r$   c                     [        U5      nU R                  U5      nUc  [        S5      eU R                  R	                  U5      nU$ rZ   )r[   r"   r\   rs   popr^   s       r   r&   LlamaDiskCache.__getitem__   sD    Cj,,S1<?++.2jjnnT.B r   c                 :    U R                  [        U5      5      S L$ r   rb   r!   s     r   r*   LlamaDiskCache.__contains__   rd   r   r,   c                 T   [        S[        R                  S9  [        U5      nXR                  ;   a%  [        S[        R                  S9  U R                  U	 X R                  U'   [        S[        R                  S9  U R
                  U R                  :  ay  [        U R                  5      S:  a`  [        [        U R                  5      5      nU R                  U	 U R
                  U R                  :  a  [        U R                  5      S:  a  M`  [        S[        R                  S9  g )Nz"LlamaDiskCache.__setitem__: called)filez"LlamaDiskCache.__setitem__: deletezLlamaDiskCache.__setitem__: setr   z LlamaDiskCache.__setitem__: trim)
printsysstderrr[   rs   r   r   rg   nextiter)r   r   r,   key_to_removes       r   r/   LlamaDiskCache.__setitem__   s    2DCj**6SZZH

3

3/cjjAoo 3 33DJJ!8K djj!12M

=) oo 3 33DJJ!8K 	0szzBr   )rs   )z.cache/llama_cacher2   )r3   r4   r5   r6   r7   strr8   r   r9   r   r   r   r"   r   r&   r:   r*   r/   r;   rj   rk   s   @r   rm   rm   h   s    1 MT00EH0 0 ( (38_ 
%S/	"	x} 	1M 	E E$ ECx} C5Q C Cr   rm   )r   abcr   r   typingr   r   r   collectionsr   rq   llama_cpp.llamarL   llama_typesr   r=   
LlamaCacherm   r    r   r   <module>r      sR    
 # 
 $   "S "@01N 01h 
3C^ 3Cr   