o
    Ihl!                     @  s   d dl 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m	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ e
rDd dlmZ ejG d	d
 d
ZG dd deZG dd dejZe ZG dd dee ZdZG dd dejZdS )    )annotationsN)AnyCallableOptionalTYPE_CHECKING)overrideSelf)patch)config)RemoteCacheBackend)TracebackTypec                   @  sZ   e Zd ZU dZded< dZded< dZded< dd	d
ZdddZdddZ	dddZ
dS )Statsr   intnum_putnum_get_hitnum_get_missotherreturnr   c                 C  s4   |  j |j 7  _ |  j|j7  _|  j|j7  _| S Nr   r   r   selfr    r   N/var/www/vscode/kcb/lib/python3.10/site-packages/torch/_inductor/mock_cache.py__iadd__   s   zStats.__iadd__Nonec                 C  s   d| _ d| _d| _d S )Nr   r   r   r   r   r   reset!   s   
zStats.resetstrc                 C  s.   d d| j dd| j dd| j dfS )N zputs: z, zmisses: zhits: )joinr   r   r   r   r   r   r   __str__&   s   zStats.__str__objectboolc                 C  s2   t |ttfo| j|jko| j|jko| j|jkS r   )
isinstancer   _GlobalItemStatsr   r   r   r   r   r   r   __eq__/   s   


zStats.__eq__N)r   r   r   r   r   r   )r   r   )r   r"   r   r#   )__name__
__module____qualname__r   __annotations__r   r   r   r   r!   r&   r   r   r   r   r      s   
 


	r   c                      s6   e Zd ZU ded< d	 fddZd	 fddZ  ZS )
r%   zdict[str, object]cacher   r   c                      t    i | _d S r   )super__init__r,   r   	__class__r   r   r/   =      

z_GlobalItemStats.__init__c                   r-   r   )r.   r   r,   r   r0   r   r   r   A   r2   z_GlobalItemStats.resetr'   )r(   r)   r*   r+   r/   r   __classcell__r   r   r0   r   r%   :   s   
 r%   c                   @  s2   e Zd ZdddZdddZdd
dZdd ZdS )_GlobalStatsr   r   c                 C  s<   t  | _t  | _t  | _t  | _t  | _t  | _t  | _d S r   )r%   autotune_localautotune_remotebundled_autotunefx_graphtritonaot_autograd
dynamo_pgor   r   r   r   r/   M   s   z_GlobalStats.__init__c                 C  sJ   | j   | j  | j  | j  | j  | j  | j  d S r   )r5   r   r6   r7   r8   r9   r:   r;   r   r   r   r   r   V   s   





z_GlobalStats.resetnamer   r%   c                 C  s
   t | |S r   )getattrr   r<   r   r   r   get_stat_      
z_GlobalStats.get_statc                 C  s  d| j fd| jfd| jfd| jfd| jfd| jfd| jff}tdtj	d	 |D ]\}}td
| d| tj	d	 q'tdtj	d	 |D ]=\}}|j
rtd
| dtj	d	 t|j
 D ]#\}}t|}t|dkrq|d d d }td|d| tj	d	 q[qBd S )Nr5   r6   r7   r8   r9   r:   r;   zCache Stats:)filez  z: zCache Entries::d   z...z    )r5   r6   r7   r8   r9   r:   r;   printsysstderrr,   sorteditemsreprlen)r   subsr<   subkvr   r   r   reportb   s,   
z_GlobalStats.reportNr'   )r<   r   r   r%   )r(   r)   r*   r/   r   r?   rO   r   r   r   r   r4   L   s
    

	
	r4   c                   @  s@   e Zd ZdddZeddd	ZedddZedddZdS )MockBackendr<   r   r   r   c                 C  s
   || _ d S r   )_namer>   r   r   r   r/      r@   zMockBackend.__init__Callable[[], MockBackend]c                   s   d fdd}|S )Nr   rP   c                     s   t  S r   )rP   r   r<   r   r   wrapper   s   z&MockBackend.with_name.<locals>.wrapper)r   rP   r   )r<   rT   r   rS   r   	with_name   s   zMockBackend.with_namekeyOptional[Any]c                 C  sB   t | j}||jv r|tdd7 }|j|S |tdd7 }d S )N   )r   )r   )global_statsr?   rQ   r,   r   get)r   rV   statr   r   r   _get   s   
zMockBackend._getdatar   c                 C  s(   t | j}|tdd7 }||j|< d S )NrX   )r   )rY   r?   rQ   r   r,   )r   rV   r]   r[   r   r   r   _put   s   zMockBackend._putN)r<   r   r   r   )r<   r   r   rR   )rV   r   r   rW   )rV   r   r]   r   r   r   )	r(   r)   r*   r/   staticmethodrU   r   r\   r^   r   r   r   r   rP      s    
	rP   )fx_graph_cachefx_graph_remote_cacheautotune_local_cacheautotune_remote_cachebundled_autotune_remote_cachec                   @  sB   e Zd Zedd Zedd ZdddZdd
dZdddZdS )PatchCachesc                 C  s:   i | _ tD ]}tt|rtt|| j |< tt|d qd S )NF)_savedCacheState_CACHE_CONFIG_ENhasattrr
   r=   setattrclsr<   r   r   r   setUp   s   
zPatchCaches.setUpc                 C  s4   t D ]}tt| || jv rtt|| j|  qd S r   )rg   delattrr
   rf   ri   rj   r   r   r   tearDown   s   

zPatchCaches.tearDownr   r   c                 C  s   t  | _d S r   )
contextlib	ExitStack_stackr   r   r   r   r/      s   zPatchCaches.__init__r   c                 C  sn  t   | j  tdtd}| j| tdtd}| j| tdtd}| j| tdtd}| j| td	td
}| j| tdtd}| j| t	 rtdtd}| j| tdtd}| j| tdtd}| j| tdtd}| j| tdtd
}| j| tdtd}| j| | S )NzNtorch._inductor.runtime.autotune_cache.LocalAutotuneCache.backend_override_clsr5   zEtorch._inductor.remote_cache.RemoteAutotuneCache.backend_override_clsr6   zLtorch._inductor.remote_cache.RemoteBundledAutotuneCache.backend_override_clsr7   zDtorch._inductor.remote_cache.RemoteFxGraphCache.backend_override_clsr8   zHtorch._inductor.remote_cache.RemoteAOTAutogradCache.backend_override_clsr:   zFtorch._inductor.remote_cache.RemoteDynamoPGOCache.backend_override_clsr;   zJtorch._inductor.fb.remote_cache.FbRemoteAutotuneCache.backend_override_clszQtorch._inductor.fb.remote_cache.FbRemoteBundledAutotuneCache.backend_override_clszItorch._inductor.fb.remote_cache.FbRemoteFxGraphCache.backend_override_clszFtriton.fb.fb_memcache.FbMemcacheRemoteKernelCache.backend_override_clsr9   zMtorch._inductor.fb.remote_cache.FbRemoteAOTAutogradCache.backend_override_clszKtorch._inductor.fb.remote_cache.FbRemoteDynamoPGOCache.backend_override_cls)
rY   r   rq   	__enter__r	   rP   rU   enter_contextr
   	is_fbcode)r   ctxr   r   r   rr      s   
zPatchCaches.__enter__exc_typeOptional[type[BaseException]]	exc_valueOptional[BaseException]	tracebackOptional[TracebackType]c                 C  s   | j ||| d S r   )rq   __exit__)r   rv   rx   rz   r   r   r   r|     s   zPatchCaches.__exit__Nr'   )r   r   )rv   rw   rx   ry   rz   r{   r   r   )	r(   r)   r*   classmethodrl   rn   r/   rr   r|   r   r   r   r   re      s    




Ore   ) 
__future__r   ro   dataclassesrE   	threadingtypingr   r   r   r   typing_extensionsr   r   unittest.mockr	   torch._inductorr
   torch._inductor.remote_cacher   typesr   	dataclassr   r%   localr4   rY   rP   rg   AbstractContextManagerre   r   r   r   r   <module>   s(   $0	