o
    ‡ZŽ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   úI/var/www/auris/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   )Zfx_graph_cacheZfx_graph_remote_cacheZautotune_local_cacheZautotune_remote_cacheZ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   )rb   Údelattrr
   ra   rd   re   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 	¡ rµ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 |¡ | 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   rl   Ú	__enter__r	   rP   rU   Úenter_contextr
   Z	is_fbcode)r   Úctxr   r   r   rm   ¼   s€   
þþþþþþþþþþþþzPatchCaches.__enter__Úexc_typeúOptional[type[BaseException]]Ú	exc_valueúOptional[BaseException]Ú	tracebackúOptional[TracebackType]c                 C  s   | j  |||¡ d S r   )rl   Ú__exit__)r   rp   rr   rt   r   r   r   rv     s   zPatchCaches.__exit__Nr'   )r   r   )rp   rq   rr   rs   rt   ru   r   r   )	r(   r)   r*   Úclassmethodrg   ri   r/   rm   rv   r   r   r   r   r`   ¥   s    


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