
    rh$                         d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	 d dl
Z
d dlZddlmZ  G d de      Z G d d	e      Z G d
 d      Z G d de      Z G d de      Zd ZdefdZdefdZdefdZd Zy)    N)ABCabstractmethod)DictListOptional   )knobsc                       e Zd Zd
dZedee   fd       Zeddefd       Zededee	eef      fd       Z
edede	eef   fd       Zy	)CacheManagerc                      y N selfkeyoverridedumps       g/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/triton/runtime/cache.py__init__zCacheManager.__init__           returnc                      y r   r   r   filenames     r   get_filezCacheManager.get_file       r   c                      y r   r   r   datar   binarys       r   putzCacheManager.put   r   r   r   c                      y r   r   r   s     r   	get_groupzCacheManager.get_group   r   r   groupc                      y r   r   )r   r   r%   s      r   	put_groupzCacheManager.put_group   r   r   NFFT)__name__
__module____qualname__r   r   r   strr   r"   r   r$   r'   r   r   r   r   r      s     HSM   #   # (4S>*B   # d38n  r   r   c                       e Zd ZddZdefdZdefdZdee   fdZ	dedee
eef      fdZdede
eef   defd	Zddefd
Zy)FileCacheManagerc                    || _         d | _        |rt        j                  j                  | _        t        j                  j                  | j
                  | j                         | _        t        j                  j                  | j
                  d      | _        t        j                  | j
                  d       y |rYt        j                  j                  | _        t        j                  j                  | j
                  | j                         | _        y t        j                  j                  | _        | j
                  rt        j                  j                  | j
                  | j                         | _        t        j                  j                  | j
                  d      | _        t        j                  | j
                  d       y t        d      )NlockTexist_ok$Could not create or locate cache dir)r   	lock_pathr	   cachedump_dir	cache_dirospathjoinmakedirsoverride_dirdirRuntimeErrorr   s       r   r   zFileCacheManager.__init__$   s   "[[11DNWW\\$..$((CDNWW\\$..&ADNKK6"[[55DNWW\\$..$((CDN #[[__DN~~!#dnndhh!G!#dnnf!EDNNT:"#IJJr   r   c                 V    t         j                  j                  | j                  |      S r   )r9   r:   r;   r8   r   s     r   
_make_pathzFileCacheManager._make_path9   s    ww||DNNH55r   c                     | j                   st        d      t        j                  j	                  | j                  |            S )Nr4   )r8   r?   r9   r:   existsrA   r   s     r   has_filezFileCacheManager.has_file<   s1    ~~EFFww~~dooh788r   c                 H    | j                  |      r| j                  |      S y r   )rD   rA   r   s     r   r   zFileCacheManager.get_fileA   s     =="??8,,r   r   c                 h   d| }| j                  |      sy | j                  |      }t        |      5 }t        j                  |      }d d d        j                  dd       }|y i }|j                         D ]*  \  }}	t        j                  j                  |	      s&|	||<   , |S # 1 sw Y   _xY wN__grp__child_paths)
rD   rA   openjsonloadgetitemsr9   r:   rC   )
r   r   grp_filenamegrp_filepathfgrp_datarI   resultcps
             r   r$   zFileCacheManager.get_groupG   s     
+}}\*|4, 	$1yy|H	$ll=$7%%' 	DAqww~~a q		 	$ 	$s   B((B1r%   c                     | j                   st        d      t        j                  d|i      }d| }| j	                  ||d      S )Nr4   rI   rH   Fr!   )r8   r?   rK   dumpsr"   r   r   r%   grp_contentsrO   s        r   r'   zFileCacheManager.put_groupY   sI    ~~EFFzz=%"89 
+xxl5xAAr   c                    | j                   st        d      t        |t              }|st	        |      }| j
                  J | j                  |      }t	        t        j                               }t        j                         }t        j                  j                  | j                   d| d|       }t        j                  |d       t        j                  j                  ||      }|rdnd}	t        ||	      5 }
|
j                  |       d d d        t        j                   ||       t        j"                  |       |S # 1 sw Y   6xY w)Nr4   ztmp.pid__Tr2   wbw)r8   r?   
isinstancebytesr-   r5   rA   uuiduuid4r9   getpidr:   r;   r<   rJ   writereplace
removedirs)r   r    r   r!   filepathrnd_idpidtemp_dir	temp_pathmoderQ   s              r   r"   zFileCacheManager.put`   s   ~~EFFD%(t9D~~)))??8,TZZ\"iik77<<(3%q0IJ
Ht,GGLL84	t3)T" 	aGGDM	 	

9h'
h	 	s   >EENr(   r)   )r*   r+   r,   r   r-   rA   boolrD   r   r   r   r$   r'   r"   r   r   r   r/   r/   "   s    K*6c 69D 9
HSM # (4S>*B $B# Bd38n B B# r   r/   c                   `    e Zd ZdZdefdZedee   deee	f   fd       Z
edede	fd	       Zy
)RemoteCacheBackendzL
    A backend implementation for accessing a remote/distributed cache.
    r   c                      y r   r   )r   r   s     r   r   zRemoteCacheBackend.__init__   r   r   	filenamesr   c                      y r   r   )r   rq   s     r   rM   zRemoteCacheBackend.get   r   r   r   r    c                      y r   r   r   r   r    s      r   r"   zRemoteCacheBackend.put   r   r   N)r*   r+   r,   __doc__r-   r   r   r   r   r`   rM   r"   r   r   r   ro   ro   {   sd    C  T#Y 4U
+;   C u  r   ro   c                   `    e Zd Zd ZdedefdZdee   deeef   fdZdede	deee	f   fdZ
y	)
RedisRemoteCacheBackendc                 $   dd l }|| _        t        j                  j                   j                  | _        |j                  t        j                  j                   j                  t        j                  j                   j                        | _	        y )Nr   )hostport)
redis_keyr	   r6   
key_format_key_fmtRedisry   rz   _redis)r   r   r{   s      r   r   z RedisRemoteCacheBackend.__init__   s^    	))44kk""''""'' " 
r   r   r   c                 P    | j                   j                  | j                  |      S )N)r   r   )r~   formatr|   r   s     r   _get_keyz RedisRemoteCacheBackend._get_key   s     }}##		H#EEr   rq   c                     | j                   j                  |D cg c]  }| j                  |       c}      }t        ||      D ci c]  \  }}|	|| c}}S c c}w c c}}w r   )r   mgetr   zip)r   rq   rQ   resultsr   rS   s         r   rM   zRedisRemoteCacheBackend.get   s[    ++""i#HDMM!$4#HI9<Y9Pg%5XvTZTf& gg $Igs   A
A!A!r    c                 Z    | j                   j                  | j                  |      |       y r   )r   setr   rt   s      r   r"   zRedisRemoteCacheBackend.put   s    h/6r   N)r*   r+   r,   r   r-   r   r   r   rM   r`   r"   r   r   r   rw   rw      sb    
F F FhT#Y h4S> h7C 7u 7c5j1A 7r   rw   c                       e Zd ZddZdedefdZdedee   fdZddedefdZ	dedee
eef      fdZded	e
eef   fd
Zy)RemoteCacheManagerc                     t         j                  j                  }|st        d       ||      | _        || _        || _        t        |||      | _        y )NzdUnable to instantiate RemoteCacheManager, TRITON_REMOTE_CACHE_BACKEND doesn't point to a valid class)r   r   )	r	   r6   remote_manager_classr?   _backend	_override_dumpr/   _file_cache_manager)r   r   r   r   remote_cache_clss        r   r   zRemoteCacheManager.__init__   sU     ;;;;vx x(-!
 $4C(QU#V r   r   r    c                 >    | j                   j                  ||d      S )NTrW   )r   r"   rt   s      r   _materializezRemoteCacheManager._materialize   s     ''++D(4+HHr   r   c                    | j                   s| j                  r| j                  j                  |      S | j                  j                  |g      }t        |      dk(  ry |j                         \  \  }}| j                  ||      S )Nr   )	r   r   r   r   r   rM   lenrN   r   )r   r   r   r\   r    s        r   r   zRemoteCacheManager.get_file   sq    ::++44X>>
 --##XJ/w<1]]_
	D  400r   c                    | j                   s| j                  r| j                  j                  |||      S t	        |t
              st        |      j                  d      }| j                  j                  ||       | j                  ||      S )NrW   utf-8)
r   r   r   r"   r_   r`   r-   encoder   r   r   s       r   r"   zRemoteCacheManager.put   sr    ::++//hv/NN$&t9##G,D(D)  400r   c                    | j                   s| j                  r| j                  j                  |      S d| }| j	                  |      }|y t        |      5 }t        j                  |      }d d d        j                  dd       }d }|Hi }| j                  j                  |      j                         D ]  \  }}	| j                  ||	      ||<    |S # 1 sw Y   ixY wrG   )r   r   r   r$   r   rJ   rK   rL   rM   r   rN   r   )
r   r   rO   rP   rQ   rR   rI   rS   
child_pathr    s
             r   r$   zRemoteCacheManager.get_group   s    ::++55h?? 
+}}\2, 	$1yy|H	$ll=$7 "F$(MM$5$5k$B$H$H$J I 
D%)%6%6z4%Hz"I 	$ 	$s   CCr%   c           	         | j                   s| j                  r| j                  j                  ||      S t	        j
                  dt        t        |j                                     i      }d| }| j                  ||      S )NrI   rH   )
r   r   r   r'   rK   rX   sortedlistkeysr"   rY   s        r   r'   zRemoteCacheManager.put_group   sh    ::++55hFFzz=&ejjl9K2L"MN 
+xxl33r   Nr(   r)   )r*   r+   r,   r   r-   r`   r   r   r   r"   r   r$   r'   r   r   r   r   r      s    WIS I I1 1# 11# 1s 1# (4S>*B .4# 4d38n 4r   r   c                     t        j                  t        j                  |             j	                  d      j                  d      S )Nr   =)base64	b32encoder`   fromhexdecoderstrip)r   s    r   _base32r      s2    EMM#./66w?FFsKKr   r   c                 h    t         j                  j                  xs t        } |t	        |             S r   r	   r6   manager_classr/   r   r   clss     r   get_cache_managerr      s&    
++
#
#
7'7Cws|r   c                 l    t         j                  j                  xs t        } |t	        |       d      S )NT)r   r   r   s     r   get_override_managerr      s(    
++
#
#
7'7Cws|d++r   c                 l    t         j                  j                  xs t        } |t	        |       d      S )NT)r   r   r   s     r   get_dump_managerr      s(    
++
#
#
7'7Cws|$''r   c                 p   |j                         D ci c]  \  }}||d   dk(  rdn| }}}|  ddj                  |j                                d| d| }|D ]  }| d|j                  |       } t	        j
                  |j                  d            j                         }t        |      S c c}}w )Nr   *ptr- r   )	rN   r;   valuesrM   hashlibsha256r   	hexdigestr   )	version_hash	signature	constantsidskwargskvr   kws	            r   make_so_cache_keyr     s    <EOO<MNDAqQqTS[Ea/NINN!BGGI$4$4$678)AcU
KC (Qvzz"~&'(
..G,
-
7
7
9C3< Os   B2)rK   r9   ra   abcr   r   typingr   r   r   r   r   r   r	   r   r/   ro   rw   r   r   r   r   r   r   r   r   r   <module>r      s     	  # ' '   3 ,V| Vr "70 7,J4 J4ZL
l 
, ,
(\ (
r   