
    wi(                     @   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlZd dlZd Zd Zd Zd 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eadad ZdefdZdefdZdefdZd ZdS )    N)ABCabstractmethod)Path)DictListOptionalc                  N    t          j        dt          j                              S )NTRITON_HOME)osgetenvr   home     d/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/triton/runtime/cache.pyget_home_dirr      s    9]DIKK000r   c                  \    t           j                            t                      dd          S )N.tritoncacher   pathjoinr   r   r   r   default_cache_dirr      s    7<<	7;;;r   c                  \    t           j                            t                      dd          S )Nr   overrider   r   r   r   default_override_dirr      s    7<<	:>>>r   c                  \    t           j                            t                      dd          S )Nr   dumpr   r   r   r   default_dump_dirr      s    7<<	6:::r   c                       e Zd Z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d
S )CacheManagerc                     d S Nr   selfkeys     r   __init__zCacheManager.__init__       r   returnc                     d S r"   r   r$   filenames     r   get_filezCacheManager.get_file!       r   Tc                     d S r"   r   r$   datar+   binarys       r   putzCacheManager.put%   r-   r   r+   c                     d S r"   r   r*   s     r   	get_groupzCacheManager.get_group)   r-   r   groupc                     d S r"   r   )r$   r+   r5   s      r   	put_groupzCacheManager.put_group-   r-   r   NT)__name__
__module____qualname__r&   r   r   strr,   r2   r   r4   r7   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dS )FileCacheManagerFc                    || _         d | _        |rt          j        dd                                          pt                      | _        t          j                            | j        | j                   | _        t          j                            | j        d          | _        t          j	        | j        d           d S |rkt          j        dd                                          pt                      | _        t          j                            | j        | j                   | _        d S t          j        dd                                          pt                      | _        | j        rvt          j                            | j        | j                   | _        t          j                            | j        d          | _        t          j	        | j        d           d S t          d          )	NTRITON_DUMP_DIR lockTexist_okTRITON_OVERRIDE_DIRTRITON_CACHE_DIR$Could not create or locate cache dir)r%   	lock_pathr   r   stripr   	cache_dirr   r   makedirsr   r   RuntimeError)r$   r%   r   r   s       r   r&   zFileCacheManager.__init__4   s    	KY'8"==CCEE[IYI[I[DNW\\$.$(CCDNW\\$.&AADNK666666 	KY'<bAAGGIIcMaMcMcDNW\\$.$(CCDNNN  Y'92>>DDFF]J[J]J]DN~ K!#dndh!G!G!#dnf!E!EDNT::::::"#IJJJr   r(   c                 L    t           j                            | j        |          S r"   )r   r   r   rJ   r*   s     r   
_make_pathzFileCacheManager._make_pathI   s    w||DNH555r   c                     | j         st          d          t          j                            |                     |                    S )NrG   )rJ   rL   r   r   existsrN   r*   s     r   has_filezFileCacheManager.has_fileL   s<    ~ 	GEFFFw~~dooh77888r   c                 Z    |                      |          r|                     |          S d S r"   )rQ   rN   r*   s     r   r,   zFileCacheManager.get_fileQ   s-    =="" 	??8,,,4r   r+   c                    d| }|                      |          sd S |                     |          }t          |          5 }t          j        |          }d d d            n# 1 swxY w Y   |                    dd           }|d S i }|                                D ])\  }}	t          j        	                    |	          r|	||<   *|S N__grp__child_paths)
rQ   rN   openjsonloadgetitemsr   r   rP   )
r$   r+   grp_filenamegrp_filepathfgrp_datarV   resultcps
             r   r4   zFileCacheManager.get_groupW   s   +++}}\** 	4|44, 	$1y||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ll=$774%%'' 	 	DAqw~~a   q	s   A""A&)A&r5   c                     | j         st          d          t          j        d|i          }d| }|                     ||d          S )NrG   rV   rU   Fr1   )rJ   rL   rX   dumpsr2   r$   r+   r5   grp_contentsr\   s        r   r7   zFileCacheManager.put_groupi   sU    ~ 	GEFFFz=%"899+++xxl5xAAAr   Tc                    | j         st          d          t          |t                    }|st	          |          }| j        J |                     |          }t	          t          j                              }t          j
                    }t          j                            | j         d| d|           }t          j        |d           t          j                            ||          }|rdnd}	t          ||	          5 }
|
                    |           d d d            n# 1 swxY w Y   t          j        ||           t          j        |           |S )NrG   ztmp.pid__TrC   wbw)rJ   rL   
isinstancebytesr<   rH   rN   uuiduuid4r   getpidr   r   rK   rW   writereplace
removedirs)r$   r0   r+   r1   filepathrnd_idpidtemp_dir	temp_pathmoder^   s              r   r2   zFileCacheManager.putp   su   ~ 	GEFFFD%(( 	t99D~)))??8,,TZ\\""ikk7<<0I30I0I0I0IJJ
Ht,,,,GLL844	&tt3)T"" 	aGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
9h'''
hs   D''D+.D+NFFr8   )r9   r:   r;   r&   r<   rN   boolrQ   r   r,   r   r4   r7   r2   r   r   r   r>   r>   2   s       K K K K*6c 6 6 6 69D 9 9 9 9
HSM    # (4S>*B    $B# Bd38n B B B B B #      r   r>   c                   z    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d
S )RemoteCacheBackendzL
    A backend implementation for accessing a remote/distributed cache.
    r%   c                     d S r"   r   r#   s     r   r&   zRemoteCacheBackend.__init__   r'   r   	filenamesr(   c                     d S r"   r   )r$   r   s     r   rZ   zRemoteCacheBackend.get   r-   r   r+   r0   c                     d S r"   r   r$   r+   r0   s      r   r2   zRemoteCacheBackend.put   r-   r   N)r9   r:   r;   __doc__r<   r&   r   r   r   rm   rZ   r2   r   r   r   r}   r}      s         C     T#Y 4U
+;    ^ C u    ^  r   r}   c                   t    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
d	S )
RedisRemoteCacheBackendc           	      0   dd l }|| _        t          j                            dd          | _        |                    t          j                            dd          t          t          j                            dd                              | _        d S )	Nr   TRITON_REDIS_KEY_FORMATztriton:{key}:{filename}TRITON_REDIS_HOST	localhostTRITON_REDIS_PORTi  )hostport)	redis_keyr   environrZ   _key_fmtRedisint_redis)r$   r%   r   s      r   r&   z RedisRemoteCacheBackend.__init__   sy    	
'@B[\\kk 3[AARZ^^$7>>?? " 
 
r   r+   r(   c                 D    | j                             | j        |          S )N)r%   r+   )r   formatr   r*   s     r   _get_keyz RedisRemoteCacheBackend._get_key   s    }##	H#EEEr   r   c                       j                              fd|D                       }d t          ||          D             S )Nc                 :    g | ]}                     |          S r   )r   ).0r^   r$   s     r   
<listcomp>z/RedisRemoteCacheBackend.get.<locals>.<listcomp>   s%    #H#H#HDMM!$4$4#H#H#Hr   c                     i | ]
\  }}|||S r"   r   )r   r+   r`   s      r   
<dictcomp>z/RedisRemoteCacheBackend.get.<locals>.<dictcomp>   s%    ggg%5XvTZTf&TfTfTfr   )r   mgetzip)r$   r   resultss   `  r   rZ   zRedisRemoteCacheBackend.get   sK    +""#H#H#H#Hi#H#H#HIIggY9P9Pggggr   r0   c                 b    | j                             |                     |          |           d S r"   )r   setr   r   s      r   r2   zRedisRemoteCacheBackend.put   s*    h//66666r   N)r9   r:   r;   r&   r<   r   r   r   rZ   rm   r2   r   r   r   r   r      s        
 
 
F F F F F FhT#Y h4S> h h h h7C 7u 7c5j1A 7 7 7 7 7 7r   r   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dS )RemoteCacheManagerFc                    t           j        d         }|                    d          \  }}t          j        |          }t          ||          } ||          | _        || _        || _        t          |||          | _
        d S )NTRITON_REMOTE_CACHE_BACKEND:)r   r   )r   r   split	importlibimport_modulegetattr_backend	_override_dumpr>   _file_cache_manager)	r$   r%   r   r   remote_cache_managermodule_pathclz_nmemoduleremote_cache_clss	            r   r&   zRemoteCacheManager.__init__   s    !z*GH399#>>W(55"6733((--!
 $4C(QU#V#V#V   r   r+   r0   c                 <    | j                             ||d          S )NTrd   )r   r2   r   s      r   _materializezRemoteCacheManager._materialize   s     '++D(4+HHHr   r(   c                    | j         s| j        r| j                            |          S | j                            |g          }t          |          dk    rd S |                                \  \  }}|                     ||          S )Nr   )	r   r   r   r,   r   rZ   lenr[   r   )r$   r+   r   ri   r0   s        r   r,   zRemoteCacheManager.get_file   s    : 	? 	?+44X>>>
 -##XJ//w<<14]]__
	D  4000r   Tc                 (   | j         s| j        r| j                            |||          S t	          |t
                    s"t          |                              d          }| j                            ||           | 	                    ||          S )Nrd   utf-8)
r   r   r   r2   rl   rm   r<   encoder   r   r/   s       r   r2   zRemoteCacheManager.put   s    : 	O 	O+//hv/NNN$&& 	-t99##G,,D(D)))  4000r   c                    | j         s| j        r| j                            |          S d| }|                     |          }|d S t          |          5 }t          j        |          }d d d            n# 1 swxY w Y   |                    dd           }d }|Mi }| j	                            |          
                                D ]\  }}	|                     ||	          ||<   |S rT   )r   r   r   r4   r,   rW   rX   rY   rZ   r   r[   r   )
r$   r+   r\   r]   r^   r_   rV   r`   
child_pathr0   s
             r   r4   zRemoteCacheManager.get_group   s=   : 	@ 	@+55h???+++}}\224, 	$1y||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ll=$77 "F$(M$5$5k$B$B$H$H$J$J I I 
D%)%6%6z4%H%Hz""s   A77A;>A;r5   c           	         | j         s| j        r| j                            ||          S t	          j        dt          t          |                                                    i          }d| }| 	                    ||          S )NrV   rU   )
r   r   r   r7   rX   re   sortedlistkeysr2   rf   s        r   r7   zRemoteCacheManager.put_group   s}    : 	G 	G+55hFFFz=&ejjll9K9K2L2L"MNN+++xxl333r   Nrz   r8   )r9   r:   r;   r&   r<   rm   r   r   r,   r2   r   r4   r7   r   r   r   r   r      s        W W W WIS I I I I I1 1# 1 1 1 11 1# 1s 1 1 1 1# (4S>*B    .4# 4d38n 4 4 4 4 4 4r   r   DEFAULTc                     t          j        t                              |                                         d                              d          S )Nr   =)base64urlsafe_b64encoderm   fromhexdecoderstripr%   s    r   _base64r     s;    #EMM#$6$677>>wGGNNsSSSr   r(   c                    dd l }|j                            dd           }|I|t          k    r>|                    d          \  }}t          j        |          }t          ||          a|at          t          |                     S )Nr   TRITON_CACHE_MANAGERr   )
r   r   rZ   __cache_cls_nmer   r   r   r   __cache_clsr   )r%   r   user_cache_managerr   r   r   s         r   get_cache_managerr     s    III(>EE %*<*O*O177<<W(55fg..,ws||$$$r   c                 >    t          t          |           d          S )NT)r   r   r   r   s    r   get_override_managerr     s    ws||d3333r   c                 >    t          t          |           d          S )NT)r   r   r   s    r   get_dump_managerr     s    ws||$////r   c                 p   d |                                 D             }|  dd                    |                                           d| d| }|D ]}| d|                    |           }t	          j        |                    d                                                    }t          |          S )Nc                 6    i | ]\  }}||d          dk    rdn|S )r   *ptrr   )r   kvs      r   r   z%make_so_cache_key.<locals>.<dictcomp>"  s.    NNNDAqQqTS[[EEaNNNr   -rA   r   )	r[   r   valuesrZ   hashlibsha256r   	hexdigestr   )version_hash	signature	constantsidskwargsr%   kws          r   make_so_cache_keyr      s    NNIOO<M<MNNNI
K
KBGGI$4$4$6$677
K
K)
K
Kc
K
KC ( (''vzz"~~''
.G,,
-
-
7
7
9
9C3<<r   )r   rX   r   rn   abcr   r   pathlibr   typingr   r   r   r   r   r   r   r   r   r    r>   r}   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s-        				  # # # # # # # #       ' ' ' ' ' ' ' ' ' '  1 1 1< < <? ? ?; ; ;    3   ,V V V V V| V V Vr       "7 7 7 7 70 7 7 7,J4 J4 J4 J4 J4 J4 J4 J4Z T T T
%l % % % % 4 4 4 4 40\ 0 0 0 0    r   