
    Pi!+                     b   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Zd dlZd dlmZ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 ej                    d             Zd ZdS )    N)ABCabstractmethod)DictListOptional)__version__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dS )CacheManagerFc                     d S N selfkeyoverridedumps       l/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/triton/runtime/cache.py__init__zCacheManager.__init__           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   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dS )FileCacheManagerFc                    || _         d | _        |rt          j        j        | _        t          j                            | j        | j                   | _        t          j                            | j        d          | _        t          j	        | j        d           d S |rGt          j        j
        | _        t          j                            | j        | j                   | _        d S t          j        j        | _        | j        rvt          j                            | j        | j                   | _        t          j                            | j        d          | _        t          j	        | j        d           d S 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"    	K"[1DNW\\$.$(CCDNW\\$.&AADNK666666 	K"[5DNW\\$.$(CCDNNN #[_DN~ K!#dndh!G!G!#dnf!E!EDNT::::::"#IJJJr   r   c                 L    t           j                            | j        |          S r   )r9   r:   r;   r8   r   s     r   
_make_pathzFileCacheManager._make_path;   s    w||DNH555r   c                     | j         st          d          t          j                            |                     |                    S )Nr4   )r8   r?   r9   r:   existsrA   r   s     r   has_filezFileCacheManager.has_file>   s<    ~ 	GEFFFw~~dooh77888r   c                 Z    |                      |          r|                     |          S d S r   )rD   rA   r   s     r   r   zFileCacheManager.get_fileC   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)
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_groupI   s   +++}}\** 	4|44, 	$1y||H	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ll=$774%%'' 	 	DAqw~~a   q	s   A""A&)A&r%   c                     | j         st          d          t          j        d|i          }d| }|                     ||d          S )Nr4   rI   rH   Fr!   )r8   r?   rK   dumpsr"   r   r   r%   grp_contentsrO   s        r   r'   zFileCacheManager.put_group[   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 )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.putb   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+Nr(   r)   )r*   r+   r,   r   r-   rA   boolrD   r   r   r   r$   r'   r"   r   r   r   r/   r/   $   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   r   s     r   r   zRemoteCacheBackend.__init__   r   r   	filenamesr   c                     d S r   r   )r   rq   s     r   rM   zRemoteCacheBackend.get   r   r   r   r    c                     d S 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   }   s         C     T#Y 4U
+;    ^ C u    ^  r   ro   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                     dd l }|| _        t          j        j         j        | _        |                    t          j        j         j        t          j        j         j                  | _	        d S )Nr   )hostport)
redis_keyr	   r6   
key_format_key_fmtRedisry   rz   _redis)r   r   r{   s      r   r   z RedisRemoteCacheBackend.__init__   sU    	)4kk"'"' " 
 
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   rq   c                       j                              fd|D                       }d t          ||          D             S )Nc                 :    g | ]}                     |          S r   )r   ).0rQ   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   rS   s      r   
<dictcomp>z/RedisRemoteCacheBackend.get.<locals>.<dictcomp>   s%    ggg%5XvTZTf&TfTfTfr   )r   mgetzip)r   rq   resultss   `  r   rM   zRedisRemoteCacheBackend.get   sK    +""#H#H#H#Hi#H#H#HIIggY9P9Pggggr   r    c                 b    | j                             |                     |          |           d S r   )r   setr   rt   s      r   r"   zRedisRemoteCacheBackend.put   s*    h//66666r   N)r*   r+   r,   r   r-   r   r   r   rM   r`   r"   r   r   r   rw   rw      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   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dS )RemoteCacheManagerFc                     t           j        j        }|st          d           ||          | _        || _        || _        t          |||          | _        d S )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__   sn     ;; 	xvx x x((--!
 $4C(QU#V#V#V   r   r   r    c                 <    | j                             ||d          S )NTrW   )r   r"   rt   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   rM   lenrN   r   )r   r   r   r\   r    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 )NrW   utf-8)
r   r   r   r"   r_   r`   r-   encoder   r   r   s       r   r"   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 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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;r%   c           	         | j         s| j        r| j                            ||          S t	          j        dt          t          |                                                    i          }d| }| 	                    ||          S )NrI   rH   )
r   r   r   r'   rK   rX   sortedlistkeysr"   rY   s        r   r'   zRemoteCacheManager.put_group   s}    : 	G 	G+55hFFFz=&ejjll9K9K2L2L"MNN+++xxl333r   Nr(   r)   )r*   r+   r,   r   r-   r`   r   r   r   r"   r   r$   r'   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   c                     t          j        t                              |                                         d                              d          S )Nr   =)base64	b32encoder`   fromhexdecoderstrip)r   s    r   _base32r      s;    EMM#..//66w??FFsKKKr   r   c                 b    t           j        j        pt          } |t	          |                     S r   r	   r6   manager_classr/   r   r   clss     r   get_cache_managerr      s(    
+
#
7'7C3ws||r   c                 f    t           j        j        pt          } |t	          |           d          S )NT)r   r   r   s     r   get_override_managerr      s-    
+
#
7'7C3ws||d++++r   c                 f    t           j        j        pt          } |t	          |           d          S )NT)r   r   r   s     r   get_dump_managerr      s-    
+
#
7'7C3ws||$''''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   - r   )	rN   r;   valuesrM   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   c                     dd l } t          j                            t          j                            t          j                            t
                                        }g }t          t
          d          5 }|t          j        |	                                          
                                gz  }d d d            n# 1 swxY w Y   t          j                            |d          dft          j                            |d          dfg}|D ]\  }}|                     |g|          D ]}t          |j                            |j                  j        d          5 }|t          j        |	                                          
                                gz  }d d d            n# 1 swxY w Y   t          j                    }t#          j        d                              d	          d
         }	t          t          j                            |dd|	           d          5 }	 |	                    d          }
|
sn|                    |
           .	 d d d            n# 1 swxY w Y   |                    |
                                           t          j                            |d          }|                     |gd          D ]}t          |j                            |j                  j        d          5 }|t          j        |	                                          
                                gz  }d d d            n# 1 swxY w Y   t,           d                    |          z   S )Nr   rbcompilerztriton.compiler.backendsztriton.backends.)prefix
EXT_SUFFIX._Cz
libtriton.Ti   languageztriton.language.r   )pkgutilr9   r:   dirnameabspath__file__rJ   r   r   readr   r;   walk_packagesmodule_finder	find_specnameorigin	sysconfigget_config_varsplitupdateappendr   )r   TRITON_PATHcontentsrQ   path_prefixesr:   r   liblibtriton_hashextchunklanguage_paths               r   
triton_keyr     s   NNN'//"'//"'//(2K2K"L"LMMKH	h		 ;W^AFFHH--7799::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 
k:	.	.0BC	k:	.	.0BCM & C Cf(($(?? 	C 	CCc'11#(;;BDII CQW^AFFHH55??AABBC C C C C C C C C C C C C C C	C
 ^%%N

"<
0
0
6
6s
;
;B
?C	bgll;.@3.@.@AA4	H	H )A	)FF7OOE !!%(((		) 	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) OON,,..///GLLj99M$$m_=O$PP ? ?##--ch77>EE 	?11;;==>>H	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?chhx0000sH   :=CC
C%=F..F25F2-0I**I.1I.=MM	M	c                    t                       d|                                  d|                                 d|                                 dt          t          |                                                     	}|S )Nr   )r   hashr-   r   rN   )srcbackendbackend_optionsenv_varsr   s        r   get_cache_keyr   3  sq    \\
r
rCHHJJ
r
r
r
r/:N:N:P:P
r
rSVW]^f^l^l^n^nWoWoSpSp
r
rCJr   )rK   r9   ra   abcr   r   typingr   r   r   r   r   	functoolsr   tritonr   r	   r   r/   ro   rw   r   r   r   r   r   r   	lru_cacher   r   r   r   r   <module>r      s.    				  # # # # # # # # ' ' ' ' ' ' ' ' ' '           % % % % % % % %    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L L L
l    
, , , , ,
(\ ( ( ( (
    1  1  1F    r   