
    (Th(                     &   S SK r S SKr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
JrJr  S SKrS SKrS rS rS rS r " S	 S
\5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r\qSqS rS\4S jrS\4S jrS\4S jrS rg)    N)ABCabstractmethod)Path)DictListOptionalc                  V    [         R                  " S[        R                  " 5       5      $ )NTRITON_HOME)osgetenvr   home     L/var/www/auris/envauris/lib/python3.13/site-packages/triton/runtime/cache.pyget_home_dirr      s    99]DIIK00r   c                  T    [         R                  R                  [        5       SS5      $ )N.tritoncacher   pathjoinr   r   r   r   default_cache_dirr      s    77<<	7;;r   c                  T    [         R                  R                  [        5       SS5      $ )Nr   overrider   r   r   r   default_override_dirr      s    77<<	:>>r   c                  T    [         R                  R                  [        5       SS5      $ )Nr   dumpr   r   r   r   default_dump_dirr      s    77<<	6::r   c                       \ rS rSrS r\S\\   4S j5       r\SS\4S jj5       r	\S\S\\
\\4      4S j5       r\S\S\
\\4   4S	 j5       rS
rg)CacheManager   c                     g Nr   selfkeys     r   __init__CacheManager.__init__       r   returnc                     g r#   r   r%   filenames     r   get_fileCacheManager.get_file!       r   c                     g r#   r   r%   datar-   binarys       r   putCacheManager.put%   r0   r   r-   c                     g r#   r   r,   s     r   	get_groupCacheManager.get_group)   r0   r   groupc                     g r#   r   )r%   r-   r:   s      r   	put_groupCacheManager.put_group-   r0   r   r   NT)__name__
__module____qualname____firstlineno__r'   r   r   strr.   r5   r   r8   r<   __static_attributes__r   r   r   r    r       s     HSM   #   # (4S>*B   # d38n  r   r    c                       \ rS rSrSS jrS\4S jrS\4S jrS\	\   4S jr
S\S\	\\\4      4S jrS\S	\\\4   S\4S
 jrSS\4S jjrSrg)FileCacheManager2   c                 f   Xl         S U l        U(       a  [        R                  " SS5      R	                  5       =(       d
    [        5       U l        [        R                  R                  U R                  U R                   5      U l        [        R                  R                  U R                  S5      U l        [        R                  " U R                  SS9  g U(       au  [        R                  " SS5      R	                  5       =(       d
    [        5       U l        [        R                  R                  U R                  U R                   5      U l        g [        R                  " SS5      R	                  5       =(       d
    [        5       U l        U R                  (       a  [        R                  R                  U R                  U R                   5      U l        [        R                  R                  U R                  S5      U l        [        R                  " U R                  SS9  g [        S5      e)	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'   FileCacheManager.__init__4   sJ   YY'8"=CCE[IYI[DNWW\\$..$((CDNWW\\$..&ADNKK6YY'<bAGGIcMaMcDNWW\\$..$((CDN  YY'92>DDF]J[J]DN~~!#dnndhh!G!#dnnf!EDNNT:"#IJJr   r*   c                 V    [         R                  R                  U R                  U5      $ r#   )r   r   r   rS   r,   s     r   
_make_pathFileCacheManager._make_pathI   s    ww||DNNH55r   c                     U R                   (       d  [        S5      e[        R                  R	                  U R                  U5      5      $ )NrP   )rS   rU   r   r   existsrX   r,   s     r   has_fileFileCacheManager.has_fileL   s1    ~~EFFww~~dooh788r   c                 R    U R                  U5      (       a  U R                  U5      $ g r#   )r\   rX   r,   s     r   r.   FileCacheManager.get_fileQ   s#    ==""??8,,r   r-   c                    SU 3nU R                  U5      (       d  g U R                  U5      n[        U5       n[        R                  " U5      nS S S 5        WR                  SS 5      nUc  g 0 nUR                  5        H/  u  p[        R                  R                  U	5      (       d  M+  XU'   M1     U$ ! , (       d  f       Nk= fN__grp__child_paths)
r\   rX   openjsonloadgetitemsr   r   r[   )
r%   r-   grp_filenamegrp_filepathfgrp_datarc   resultcps
             r   r8   FileCacheManager.get_groupW   s     
+}}\**|4,1yy|H  ll=$7%%'DAww~~a  q	 (   s   B55
Cr:   c                     U R                   (       d  [        S5      e[        R                  " SU05      nSU 3nU R	                  X4SS9$ )NrP   rc   rb   Fr4   )rS   rU   re   dumpsr5   r%   r-   r:   grp_contentsri   s        r   r<   FileCacheManager.put_groupi   sG    ~~EFFzz=%"89 
+xx5xAAr   c                    U R                   (       d  [        S5      e[        U[        5      nU(       d  [	        U5      nU R
                  c   eU R                  U5      n[	        [        R                  " 5       5      n[        R                  " 5       n[        R                  R                  U R                   SU SU 35      n[        R                  " USS9  [        R                  R                  Xr5      nU(       a  SOSn	[        X5       n
U
R                  U5        S S S 5        [        R                   " X5        [        R"                  " U5        U$ ! , (       d  f       N<= f)NrP   ztmp.pid__TrL   wbw)rS   rU   
isinstancebytesrC   rQ   rX   uuiduuid4r   getpidr   r   rT   rd   writereplace
removedirs)r%   r3   r-   r4   filepathrnd_idpidtemp_dir	temp_pathmoderk   s              r   r5   FileCacheManager.putp   s    ~~EFFD%(t9D~~)))??8,TZZ\"iik77<<(3%q0IJ
Ht,GGLL4	t3)"aGGDM # 	

9'
h #"s   E
E")rS   r&   rQ   NFFr>   )r?   r@   rA   rB   r'   rC   rX   boolr\   r   r.   r   r8   r<   r5   rD   r   r   r   rF   rF   2   s    K*6c 69D 9
HSM # (4S>*B $B# Bd38n B B#  r   rF   c                   n    \ rS rSrSrS\4S jr\S\\   S\	\\
4   4S j5       r\S\S	\
4S
 j5       rSrg)RemoteCacheBackend   zD
A backend implementation for accessing a remote/distributed cache.
r&   c                     g r#   r   r$   s     r   r'   RemoteCacheBackend.__init__   r)   r   	filenamesr*   c                     g r#   r   )r%   r   s     r   rg   RemoteCacheBackend.get   r0   r   r-   r3   c                     g r#   r   r%   r-   r3   s      r   r5   RemoteCacheBackend.put   r0   r   r   N)r?   r@   rA   rB   __doc__rC   r'   r   r   r   r|   rg   r5   rD   r   r   r   r   r      sd    C  T#Y 4U
+;   C u  r   r   c                   n    \ rS rSrS rS\S\4S jrS\\   S\\\4   4S jr	S\S\
S\\\
4   4S	 jrS
rg)RedisRemoteCacheBackend   c           	         SS K nXl        [        R                  R	                  SS5      U l        UR                  [        R                  R	                  SS5      [        [        R                  R	                  SS5      5      S9U l        g )	Nr   TRITON_REDIS_KEY_FORMATztriton:{key}:{filename}TRITON_REDIS_HOST	localhostTRITON_REDIS_PORTi  )hostport)	redis_keyr   environrg   _key_fmtRedisint_redis)r%   r&   r   s      r   r'    RedisRemoteCacheBackend.__init__   sb    	

'@B[\kk 3[ARZZ^^$7>? " 
r   r-   r*   c                 J    U R                   R                  U R                  US9$ )N)r&   r-   )r   formatr   r,   s     r   _get_key RedisRemoteCacheBackend._get_key   s     }}##		H#EEr   r   c                     U R                   R                  U Vs/ s H  o R                  U5      PM     sn5      n[        X5       VVs0 s H  u  pEUc  M
  XE_M     snn$ s  snf s  snnf r#   )r   mgetr   zip)r%   r   rk   resultsr-   rm   s         r   rg   RedisRemoteCacheBackend.get   s]    ++""i#HiMM!$4i#HI9<Y9Pg9P%5XTZ  9Pgg $Igs   A 		A%A%r3   c                 Z    U R                   R                  U R                  U5      U5        g r#   )r   setr   r   s      r   r5   RedisRemoteCacheBackend.put   s    h/6r   )r   r   r   N)r?   r@   rA   rB   r'   rC   r   r   r   rg   r|   r5   rD   r   r   r   r   r      sb    
F F FhT#Y h4S> h7C 7u 7c5j1A 7r   r   c                       \ rS rSrSS jrS\S\4S jrS\S\\   4S jr	SS\S\4S jjr
S\S\\\\4      4S	 jrS\S
\\\4   4S jrSrg)RemoteCacheManager   c                     [         R                  S   nUR                  S5      u  pV[        R                  " U5      n[        Xv5      nU" U5      U l        X l        X0l        [        XUS9U l
        g )NTRITON_REMOTE_CACHE_BACKEND:)r   r   )r   r   split	importlibimport_modulegetattr_backend	_override_dumprF   _file_cache_manager)	r%   r&   r   r   remote_cache_managermodule_pathclz_nmemoduleremote_cache_clss	            r   r'   RemoteCacheManager.__init__   sh    !zz*GH399#>((5"63(-!
 $4CQU#V r   r-   r3   c                 6    U R                   R                  X!SS9$ )NTrr   )r   r5   r   s      r   _materializeRemoteCacheManager._materialize   s    ''++D4+HHr   r*   c                    U R                   (       d  U R                  (       a  U R                  R                  U5      $ U R                  R                  U/5      n[        U5      S:X  a  g UR                  5       u  u  p4U R                  X5      $ )Nr   )	r   r   r   r.   r   rg   lenrh   r   )r%   r-   r   rx   r3   s        r   r.   RemoteCacheManager.get_file   sm    ::++44X>>
 --##XJ/w<1]]_
	  00r   c                 0   U R                   (       d  U R                  (       a  U R                  R                  XUS9$ [	        U[
        5      (       d  [        U5      R                  S5      nU R                  R                  X!5        U R                  X!5      $ )Nrr   utf-8)
r   r   r   r5   r{   r|   rC   encoder   r   r2   s       r   r5   RemoteCacheManager.put   so    ::++//v/NN$&&t9##G,D()  00r   c                    U R                   (       d  U R                  (       a  U R                  R                  U5      $ SU 3nU R	                  U5      nUc  g [        U5       n[        R                  " U5      nS S S 5        WR                  SS 5      nS nUbG  0 nU R                  R                  U5      R                  5        H  u  pU R                  X5      Xx'   M     U$ ! , (       d  f       Nn= fra   )r   r   r   r8   r.   rd   re   rf   rg   r   rh   r   )
r%   r-   ri   rj   rk   rl   rc   rm   
child_pathr3   s
             r   r8   RemoteCacheManager.get_group   s    ::++55h?? 
+}}\2,1yy|H  ll=$7 "F$(MM$5$5k$B$H$H$J 
%)%6%6z%H" %K   s   #C""
C0r:   c           	         U R                   (       d  U R                  (       a  U R                  R                  X5      $ [        R
                  " S[        [        UR                  5       5      5      05      nSU 3nU R                  X45      $ )Nrc   rb   )
r   r   r   r<   re   rs   sortedlistkeysr5   rt   s        r   r<   RemoteCacheManager.put_group   sd    ::++55hFFzz=&ejjl9K2L"MN 
+xx33r   )r   r   r   r   Nr   r>   )r?   r@   rA   rB   r'   rC   r|   r   r   r.   r5   r   r8   r<   rD   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   DEFAULTc                     [         R                  " [        R                  U 5      5      R	                  S5      R                  S5      $ )Nr   =)base64	b32encoder|   fromhexdecoderstripr&   s    r   _base32r     s2    EMM#./66w?FFsKKr   r*   c                     SS K nUR                  R                  SS 5      nUb@  U[        :w  a6  UR	                  S5      u  p4[
        R                  " U5      n[        XT5      qUq[        [        U 5      5      $ )Nr   TRITON_CACHE_MANAGERr   )
r   r   rg   __cache_cls_nmer   r   r   r   __cache_clsr   )r&   r   user_cache_managerr   r   r   s         r   get_cache_managerr     sl    (>E %*<*O177<((5f.,ws|$$r   c                 (    [        [        U 5      SS9$ )NT)r   r   r   r   s    r   get_override_managerr     s    ws|d33r   c                 (    [        [        U 5      SS9$ )NT)r   r   r   s    r   get_dump_managerr     s    ws|$//r   c                 z   UR                  5        VVs0 s H  u  pVXVS   S:X  a  SOU_M     nnnU  SSR                  UR                  5       5       SU SU 3nU H  nU SUR                  U5       3nM     [        R
                  " UR                  S5      5      R                  5       n[        U5      $ s  snnf )Nr   *ptr-rJ   r   )	rh   r   valuesrg   hashlibsha256r   	hexdigestr   )	version_hash	signature	constantsidskwargskvr&   kws	            r   make_so_cache_keyr     s    <EOO<MN<MDAqTS[Ea/<MINN!BGGI$4$4$678)AcU
KCQvzz"~&' 
..G,
-
7
7
9C3< Os   B7)r   re   r   r}   abcr   r   pathlibr   typingr   r   r   r   r   r   r   r   r   r    rF   r   r   r   r   r   r   r   r   r   r  r   r   r   <module>r     s      	  #  ' '  1<?;3 ,V| Vr "70 7,J4 J4Z L
%l % 4 40\ 0r   