
    ɯwgS              	      <   U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ 	 d dlZ ej.                         rd dlmZ eZded	<   n
ee   Zded	<    ed
      Z ed      Z G d de
e         Z G d de
eef         Z eee!e"e#e$e	e#df   ed   f      Z% G d de e%e&f         Z' G d de eef         Z( G d de
e         Z) G d dee&         Z* G d de)e%         Z+ G d de+      Z, G d de+      Z-y# e$ r dZY w xY w)    )annotationsN)abstractmethod)	AnyCallableDictGenericListOptionalTypeTypeVarUnion)override	TypeAlias)config)Sampler   r   _T_Uc                  4    e Zd ZdZedd       Zedd       Zy)RemoteCacheBackendz
    A backend implementation for accessing a remote/distributed cache.  Only
    works with bytes in/out.  For structured data use a RemoteCache.
    c                     y N selfkeys     a/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/_inductor/remote_cache.pygetzRemoteCacheBackend.get'           c                     y r   r   r   r   datas      r   putzRemoteCacheBackend.put+   r   r   Nr   strreturnOptional[_T])r   r%   r"   r   r&   None)__name__
__module____qualname____doc__r   r   r#   r   r   r   r   r   !   s/    
    r   r   c                  0    e Zd Zedd       Zedd       Zy)RemoteCacheSerdec                     y r   r   r   r"   s     r   encodezRemoteCacheSerde.encode2   r   r   c                     y r   r   r0   s     r   decodezRemoteCacheSerde.decode6   r   r   N)r"   r   r&   r   )r"   r   r&   r   )r)   r*   r+   r   r1   r3   r   r   r   r.   r.   1   s(       r   r.   
JsonDataTyc                      e Zd ZddZddZy)RemoteCacheJsonSerdec                @    t        t        j                  |      d      S )Nascii)bytesjsondumpsr0   s     r   r1   zRemoteCacheJsonSerde.encodeA   s    TZZ%w//r   c                ,    t        j                  |      S r   )r:   loadsr0   s     r   r3   zRemoteCacheJsonSerde.decodeD   s    zz$r   N)r"   r4   r&   r9   )r"   r9   r&   r4   r)   r*   r+   r1   r3   r   r   r   r6   r6   @   s    0 r   r6   c                      e Zd ZddZddZy)RemoteCachePassthroughSerdec                    |S r   r   r0   s     r   r1   z"RemoteCachePassthroughSerde.encodeI       r   c                    |S r   r   r0   s     r   r3   z"RemoteCachePassthroughSerde.decodeL   rB   r   N)r"   r   r&   r   r>   r   r   r   r@   r@   H   s    r   r@   c                  p    e Zd ZU dZded<   	 	 	 	 	 	 ddZddZddZddZddZ	dd	Z
dd
ZddZddZy)RemoteCacheNz/Optional[Callable[[], RemoteCacheBackend[Any]]]backend_override_clsc                x    | j                   j                  x} |       | _        || _        y || _        || _        y r   )	__class__rF   backendserde)r   rI   rJ   override_clss       r   __init__zRemoteCache.__init__S   s;     !NN???LL'>DL 
 #DL
r   c                l    | j                         }| j                  ||      }| j                  |       |S r   )_create_sample_get_log_sample)r   r   sampleresults       r   r   zRemoteCache.get]   s3    $$&3' r   c                l    | j                         }| j                  |||       | j                  |       y r   )rN   _putrP   )r   r   valuerQ   s       r   r#   zRemoteCache.putc   s.    $$&		#uf% r   c                8    | j                   j                  |      S r   )rJ   r3   )r   r"   rQ   s      r   _decodezRemoteCache._decodeh   s    zz  &&r   c                8    | j                   j                  |      S r   )rJ   r1   )r   rU   rQ   s      r   _encodezRemoteCache._encodek   s    zz  ''r   c                b    | j                   j                  |      x}r| j                  ||      S y r   )rI   r   rW   )r   r   rQ   r"   s       r   rO   zRemoteCache._getn   s0    <<##C((4(<<f--r   c                `    | j                  ||      }| j                  j                  ||       y r   )rY   rI   r#   )r   r   rU   rQ   r"   s        r   rT   zRemoteCache._puts   s&    ||E6*d#r   c                     y r   r   )r   s    r   rN   zRemoteCache._create_samplew   s    r   c                     y r   r   )r   rQ   s     r   rP   zRemoteCache._log_samplez   s    r   )rI   zRemoteCacheBackend[_U]rJ   zRemoteCacheSerde[_T, _U]r&   r(   r$   )r   r%   rU   r   r&   r(   )r"   r   rQ   Optional[Sample]r&   r   )rU   r   rQ   r^   r&   r   )r   r%   rQ   r^   r&   r'   )r   r%   rU   r   rQ   r^   r&   r(   )r&   r^   )rQ   r^   r&   r(   )r)   r*   r+   rF   __annotations__rL   r   r#   rW   rY   rO   rT   rN   rP   r   r   r   rE   rE   P   sS    LPIP-6N	!
'(
$r   rE   c                  ^    e Zd ZU dZded<   dZded<   ddZddZedd	       Z	edd
       Z
y)RedisRemoteCacheBackendz?
    A Redis implementation of a remote/distributed cache.
    r%   _key_fmtNzOptional[redis.Redis]_redisc           	         t         sy d| d| _        t        j                  t        j                  j                  dd      t        t        j                  j                  dd                  | _        y )Nzpt2:z:{key}TORCHINDUCTOR_REDIS_HOST	localhostTORCHINDUCTOR_REDIS_PORTi  )hostport)redisrb   Redisosenvironr   intrc   )r   cache_ids     r   rL   z RedisRemoteCacheBackend.__init__   sS    xj1kk :KHRZZ^^$>EF
r   c                :    | j                   j                  |      S )N)r   )rb   formatr   s     r   	__get_keyz!RedisRemoteCacheBackend.__get_key   s    }}###,,r   c                    | j                   sy 	 | j                   j                  | j                  |            }|t        |t              sJ |S # t        j                  j
                  $ r
 d | _         Y y w xY wr   )rc   r   !_RedisRemoteCacheBackend__get_keyrj   
exceptionsConnectionError
isinstancer9   )r   r   rU   s      r   r   zRedisRemoteCacheBackend.get   sp    {{	KKOODNN3$78E }
5% 888 // 	 DK		s   *A $A65A6c                    | j                   sy 	 | j                   j                  | j                  |      |       y # t        j                  j
                  $ r
 d | _         Y y w xY wr   )rc   setrt   rj   ru   rv   r!   s      r   r#   zRedisRemoteCacheBackend.put   sP    {{	KKOODNN3/6// 	 DK	s   +; $A"!A")ro   r%   r&   r(   )r   r%   r&   r%   )r   r%   r&   zOptional[bytes])r   r%   r"   r9   r&   r(   )r)   r*   r+   r,   r_   rc   rL   rt   r   r   r#   r   r   r   ra   ra   ~   sK     M$(F!(	
-  " 
 
r   ra   c                        e Zd Zd fdZ xZS )RedisRemoteCachec                    | j                   j                  r"t        j                  t        t
           d       }nt        |      }t               }t        | %  ||       y r   )
rH   rF   typingcastr   r9   ra   r6   superrL   )r   r   rI   rJ   rH   s       r   rL   zRedisRemoteCache.__init__   sI     >>..kk"4U";TBG-c2G$&%(r   )r   r%   r&   r(   )r)   r*   r+   rL   __classcell__)rH   s   @r   r{   r{      s    	) 	)r   r{   c                      e Zd Zy)RemoteAutotuneCacheNr)   r*   r+   r   r   r   r   r          r   r   c                      e Zd Zy)RemoteFxGraphCacheNr   r   r   r   r   r      r   r   r   ).
__future__r   r:   rl   r}   abcr   r   r   r   r   r	   r
   r   r   r   typing_extensionsr   r   torch._inductorr   rj   ImportError	is_fbcoderfe.scubadata.scubadata_py3r   Sample_r_   objectr   r   r   r.   rn   floatr%   boolr4   r9   r6   r@   rE   ra   r{   r   r   r   r   r   <module>r      sU   "  	   U U U 1 "
 6  FIVFI$ T]T]  wr2v  	#uc4c<&7!8$|:L
LM

 +J,=>  "22r6": +'"+ +\307 3l
){:. 
)	* 		) 	m  Es   D DD