Ë
    òÍ:j¯B  ã                   ó†  — U d Z ddlZddlZddlZddlZddlZddlZddl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 ddlmZ ddlmZ ddlZddlmZ ddlmZ dd	lmZ d
dlm Z m!Z!m"Z"m#Z# d
dl$m%Z%m&Z&m'Z'm(Z( d
dl)m*Z*m+Z+m,Z, d
dl
m-Z-m.Z.m/Z/ d
dl0m1Z1 dZ2ee
jf                     e4d<   	 ddl5Z2e!jn                  Z7dZ8 ejr                  e:«      Z; ed«      Z<deejz                     deejz                     fd„Z>de?de?fd„Z@d„ ZAdej„                  j†                  dedededeDe   f
d„ZEdedeFfd„ZGedejz                  dejz                  fd „«       ZHedeeDe   eIed!f   eJeef   f   deKfd"„«       ZHdedeejz                  eKf   fd#„ZHde?fd$„ZLdmde?d%e
jš                  d&e?ddfd'„ZNdd(œd)e.d*eOd+ed,ed-eOde-fd.„ZP G d/„ d0«      ZQ G d1„ d2«      ZR G d3„ d4«      ZS G d5„ d6«      ZT G d7„ d8«      ZUd%e?de?fd9„ZVd%e?de?fd:„ZWd;e?de?fd<„ZXd%e?de?fd=„ZY	 	 	 dnd>ed?ed!ef   d@eOdAeeO   dBeeO   dCeOddfdD„ZZdEej¶                  deDejz                     ded!ef   fdF„Z\	 	 dodGeKdHeKdIeFdJeKde?f
dK„Z]ej¼                  dLdfdMeeO   dNeeO   dOej¾                  dPee?ejÀ                  f   dQeOdejz                  fdR„Za edS«      ZbdeFfdT„Zcd?ee<ebf   dUedee<ebf   fdV„ZdddW„ dXœdYeedZe?d[e?dUed\ee?   d]eed!ef   ged!ef   f   deefd^„Zfd?ee<ebf   dee<ebf   fd_„Zgd?ee<ebf   dee<ebf   fd`„Zhd?ee<ebf   dee<ebf   fda„Zid?ee<ebf   dee<ebf   fdb„Zjd?ee<ebf   dee<ebf   fdc„Zkd?ee<ebf   dee<ebf   fdd„Zld?ee<ebf   dee<ebf   fde„Zmd?ee<ebf   dee<ebf   fdf„ZndpdgeFddfdh„Zodiee<ebf   dje<jà                  dke<jâ                  debfdl„Zry# e6$ r dZ2Y �Œw xY w)qa1  Testing utilities and infrastructure for Dynamo.

This module provides a comprehensive set of testing utilities including:
- Test result collection and validation
- Graph manipulation and comparison tools
- Test case management and execution helpers
- Specialized test decorators for different Python versions and features
- RNG state management
- Compilation counting and monitoring
- Debug utilities for bytecode transformation

The utilities in this module are used across Dynamo's test suite to ensure
consistent testing patterns and proper test isolation.
é    N)ÚSequence)ÚAnyÚCallableÚOptionalÚoverloadÚTypeVarÚUnion)Ú	ParamSpec)Úpatch)Úfx)Ú	aot_eager)ÚOutputGraphé   )ÚconfigÚ
eval_frameÚoptimize_assertÚreset)Úcreate_instructionÚdebug_checksÚis_generatorÚtransform_code_object)ÚCheckFunctionManagerÚ	CompileIdÚGuardedCode)ÚConvertFrameReturnÚDynamoFrameTypeÚwrap_guarded_code)ÚsameÚnpé   Ú_PÚxÚreturnc                 óv   — | €y | j                  «       j                  «       j                  | j                  «      S ©N)ÚdetachÚcloneÚrequires_grad_Úrequires_grad©r"   s    új/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/_dynamo/testing.pyÚclone_mer,   ?   s.   € Ø€yØØ�8‰8‹:×ÑÓ×,Ñ,¨Q¯_©_Ó=Ð=ó    Únamec                 ó0   — t        j                  dd| «      S )Nz^_orig_mod[.]Ú ©ÚreÚsub)r.   s    r+   Úremove_optimized_module_prefixr4   E   ó   € Ü�6‰6Ð" B¨Ó-Ð-r-   c                 óŒ   ‡‡‡— ddl mŠ d Šd Šˆˆˆfd„}  t        j                  |d¬«      | «      |i |¤Ž ‰j                  ‰fS )Nr   )ÚInstructionTranslatorc                 óT   •— | Š‰j                  «       j                  j                  Š| S r%   )Ú
current_txÚoutputÚregion_tracker)Ú_gmÚargsÚkwargsr7   Úgmr;   s      €€€r+   Úextract_graph_backendz8extract_graph_and_tracker.<locals>.extract_graph_backendO   s)   ø€ ð ˆØ.×9Ñ9Ó;×BÑB×QÑQˆØˆ
r-   T)ÚbackendÚ	fullgraph)Útorch._dynamo.symbolic_convertr7   ÚtorchÚcompileÚgraph)Úfnr=   r>   r@   r7   r?   r;   s       @@@r+   Úextract_graph_and_trackerrH   I   sJ   ú€ ÝDà	€BØ€Nöð EÐ@„E‡M�MÐ/¸4Ô@ÀÓDÀdÐUÈfÒUØ�8‰8�^Ð#Ð#r-   ÚmodelÚ
predictionÚlossÚexample_inputsc                 ó  — g }|j                  |«       |j                  |«       i }i }| j                  «       D ]f  \  }}t        | t        j                  «      rt        |«      }|}	|j                  }
|j                  €t        j                  |«      }
|
||dz   <   |	||<   Œh |j                  |«       |j                  |«       i }| j                  «       D ]/  \  }}t        | t        j                  «      rt        |«      }|||<   Œ1 |j                  |«       |D ]g  }t        |t        t        f«      r|j                  d„ |D «       «       Œ2t        |t        j                  «      sŒM|j                  |j                  «       Œi |S )Nz.gradc              3   ój   K  — | ]+  }t        |t        j                  «      sŒ|j                  –— Œ- y ­wr%   )Ú
isinstancerD   ÚTensorÚgrad)Ú.0Úinps     r+   ú	<genexpr>z"collect_results.<locals>.<genexpr>{   s!   è ø€ ÒX¨¼*ÀSÌ%Ï,É,Õ:W˜3Ÿ8�8ÑXùs   ‚3¢3)ÚappendÚnamed_parametersrO   r   ÚOptimizedModuler4   rQ   rD   Ú
zeros_likeÚnamed_buffersÚtupleÚlistÚextendrP   )rI   rJ   rK   rL   ÚresultsÚgradsÚparamsr.   ÚparamÚ
param_copyrQ   ÚbuffersÚbufferÚexamples                 r+   Úcollect_resultsre   Z   sb  € ð €GØ‡N�N�:ÔØ‡N�N�4Ôð €EØ€FØ×-Ñ-Ó/ò 	"‰ˆˆeÜ�eœZ×7Ñ7Ô8Ü1°$Ó7ˆDØˆ
Ø�z‰zˆà�:‰:ÐÜ×#Ñ# EÓ*ˆDØ $ˆˆd�W‰nÑØ!ˆˆtŠð	"ð ‡N�N�5ÔØ‡N�N�6ÔØ€GØ×+Ñ+Ó-ò ‰ˆˆfÜ�eœZ×7Ñ7Ô8Ü1°$Ó7ˆDØˆ�Šðð ‡N�N�7ÔØ!ò -ˆÜ�g¤¤t˜}Ô-Ø�N‰NÑX¨wÔXÕXä˜'¤5§<¡<Õ0Ø—‘˜wŸ|™|Õ,ð-ð €Nr-   Úoutc                 óð   — t        | t        j                  «      r| j                  S t        | t        t
        f«      rt        d„ | D «       «      S | €yt        | t        «      ryt        dt        | «      «      ‚)Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr%   )Úrequires_bwd_pass©rR   r"   s     r+   rT   z$requires_bwd_pass.<locals>.<genexpr>†   s   è ø€ Ò5¨AÔ$ Q×'Ñ5ùó   ‚FúDon't know how to reduce)
rO   rD   rP   r)   r[   rZ   ÚanyÚintÚNotImplementedErrorÚtype©rf   s    r+   ri   ri   ‚   sb   € Ü�#”u—|‘|Ô$Ø× Ñ Ð Ü	�Cœ$¤˜Ô	'ÜÑ5°Ô5Ó5Ð5Ø	ˆØÜ	�CœÔ	ØÜ
Ð8¼$¸s»)Ó
DÐDr-   c                  ó   — y r%   © rq   s    r+   Úreduce_to_scalar_lossrt   Ž   s   € Ø>Ar-   .c                  ó   — y r%   rs   rq   s    r+   rt   rt   ’   s   € ð r-   c                 óZ  — t        | t        j                  «      r!| j                  «       | j	                  «       z  S t        | t
        t        f«      rt        d„ | D «       «      t        | «      z  S t        | «      j                  dv rt        | j                  «      S t        | «      j                  dk(  r| j                  j                  «       S t        | t        «      r:t        d„ | j                  «       D «       «      t        | j                  «       «      z  S t!        dt        | «      «      ‚)z/Reduce the output of a model to get scalar lossc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr%   ©rt   rj   s     r+   rT   z(reduce_to_scalar_loss.<locals>.<genexpr>ž   s   è ø€ Ò9°Ô(¨×+Ñ9ùrk   )ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚSquashedNormalc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr%   rx   )rR   Úvalues     r+   rT   z(reduce_to_scalar_loss.<locals>.<genexpr>¨   s   è ø€ ÒJ°EÔ(¨×/ÑJùrk   rl   )rO   rD   rP   ÚsumÚnumelr[   rZ   Úlenrp   Ú__name__rt   ÚlogitsÚmeanÚdictÚvaluesÚkeysro   rq   s    r+   rt   rt   ˜   sç   € ä�#”u—|‘|Ô$à�w‰w‹y˜3Ÿ9™9›;Ñ&Ð&Ü	�Cœ$¤˜Ô	'ÜÑ9°SÔ9Ó9¼CÀ»HÑDÐDÜ	ˆc‹×	Ñ	ð  ñ 
ô
 % S§Z¡ZÓ0Ð0Ü	ˆc‹×	Ñ	Ð/Ò	/Ø�x‰x�|‰|‹~ÐÜ	�CœÔ	ÜÑJ¸S¿Z¹Z»\ÔJÓJÌSØ�H‰H‹JóN
ñ 
ð 	
ô Ð8¼$¸s»)Ó
DÐDr-   c                  óð   — t         j                  j                  t         j                  j                  t        «      d«      } t         j                  j                  | «      st        j                  | «       | S )Nz../debug)ÚosÚpathÚjoinÚdirnameÚ__file__ÚexistsÚmkdir)rŠ   s    r+   Ú	debug_dirr�   ®   sC   € Ü�7‰7�<‰<œŸ™Ÿ™¬Ó1°:Ó>€DÜ�7‰7�>‰>˜$ÔÜ
�‰�ŒØ€Kr-   ÚcodeÚextrac           	      óJ  — t        t        j                  j                  t	        «       | «      d«      5 }|j                  t        j                  |«      j                  «       › dt        j                  |«      j                  «       › d|› d�«       d d d «       y # 1 sw Y   y xY w)NÚwz

ú
)	Úopenr‰   rŠ   r‹   r�   ÚwriteÚdisÚBytecodeÚinfo)r.   r‘   r’   Úfds       r+   Ú
debug_dumprœ   µ   s}   € Ü	Œb�g‰g�l‰lœ9›;¨Ó-¨sÓ	3ð 
°rØ
�‰Ü�|‰|˜DÓ!×&Ñ&Ó(Ð)¨¬c¯l©l¸4Ó.@×.DÑ.DÓ.FÐ-GÀtÈEÈ7ÐRTÐUô	
÷
÷ 
ñ 
ús   ³ABÂB")ÚskipÚframeÚ
cache_sizeÚhooksÚ_r�   c                óÞ  — dt         t           dt        ddfd„}t        j                  j                  j                  «       }t        j                  j                  j                  d«      5  |5  t        | j                  «      rt        «       cddd«       cddd«       S t        | j                  «       t        | j                  |«      }t        i dddddd	it        «       t        «       | j                  g d¬
«      }t        t!        |t#        | j                  |«      j$                  t'        d	d	¬«      «      «      cddd«       cddd«       S # 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)zused to debug jump updatesÚinstructionsÚcode_optionsr#   Nc                 óp   — | j                  dt        d«      «       | j                  dt        d«      «       y )Nr   ÚNOP)Úinsertr   )r£   r¤   s     r+   Úinsert_nopsz&debug_insert_nops.<locals>.insert_nopsÁ   s.   € Ø×Ñ˜AÔ1°%Ó8Ô9Ø×Ñ˜AÔ1°%Ó8Õ9r-   Údebug_insert_nopsFÚ_idr   )r¤   Úcompiler_fnÚroot_txÚexportÚexport_constraintsÚframe_stateÚlocal_scopeÚglobal_scopeÚf_codeÚtorch_function_mode_stackÚpackage)Úframe_idÚframe_compile_id)r[   r   rD   Ú_dynamoÚutilsÚget_metrics_contextÚdynamo_timedr   r²   r   r   r   r   ÚlocalsÚglobalsr   r   r   Úguard_managerr   )	rž   rŸ   r    r¡   r�   r¨   Úmetrics_contextr‘   rF   s	            r+   r©   r©   ¼   s-  € ð
:¤$¤s¡)ð :¼3ð :À4ó :ô —m‘m×)Ñ)×=Ñ=Ó?€OÜ	�‰×	Ñ	×	)Ñ	)Ð*=Ó	>ñ 
Àñ 
Ü˜Ÿ™Ô%Ü%Ó'÷
÷ 
ò 
ô 	�U—\‘\Ô"Ü$ U§\¡\°;Ó?ˆÜØØØØØ#Ø ˜
ä›Ü ›Ø—<‘<Ø&(Øô
ˆô !ÜØÜ$ U§\¡\°5Ó9×GÑGÜ 1°qÔ9óó
÷+
÷ 
÷ 
ó 
ú÷ 
÷ 
ñ 
ús1   Á+E#Á.EÂ	E#Â BEÄ;	E#ÅE	ÅE#Å#E,c                   ó|   — e Zd Zd	d„Zdej
                  j                  deej                     de	de
f   fd„Zd	d„Zy)
ÚCompileCounterr#   Nc                 ó    — d| _         d| _        y ©Nr   ©Úframe_countÚop_count©Úselfs    r+   Ú__init__zCompileCounter.__init__å   ó   € ØˆÔØˆ�r-   r?   rL   .c                 óÂ   — | xj                   dz  c_         |j                  j                  D ]&  }d|j                  v sŒ| xj                  dz  c_        Œ( |j
                  S )Nr   Úcall)rÄ   rF   ÚnodesÚoprÅ   Úforward)rÇ   r?   rL   Únodes       r+   Ú__call__zCompileCounter.__call__é   sR   € ð 	×Ò˜AÑÕØ—H‘H—N‘Nò 	#ˆDØ˜Ÿ™Ò Ø—’ Ñ"–ð	#ð �z‰zÐr-   c                 ó    — d| _         d| _        y rÂ   rÃ   rÆ   s    r+   ÚclearzCompileCounter.clearò   rÉ   r-   ©r#   N)r‚   Ú
__module__Ú__qualname__rÈ   rD   r   ÚGraphModuler[   rP   r   r   rÐ   rÒ   rs   r-   r+   rÀ   rÀ   ä   sE   „ óðØ—(‘(×&Ñ&ðØ8<¸U¿\¹\Ñ8Jðà	�#�s�(Ñ	óôr-   rÀ   c                   ó„   — e Zd Zdeddfd„Zdej                  j                  deej                     de
def   fd„Zd
d	„Zy)ÚCompileCounterWithBackendrA   r#   Nc                 ó<   — d| _         d| _        || _        g | _        y rÂ   )rÄ   rÅ   rA   Úgraphs)rÇ   rA   s     r+   rÈ   z"CompileCounterWithBackend.__init__ø   s   € ØˆÔØˆŒØˆŒØ24ˆ�r-   r?   rL   .c                 ó  — ddl m} | xj                  dz  c_        |j                  j                  D ]&  }d|j
                  v sŒ| xj                  dz  c_        Œ( | j                  j                  |«         || j                  «      ||«      S )Nr   )Úlookup_backendrË   )
Úbackends.registryrÜ   rÄ   rF   rÌ   rÍ   rÅ   rÚ   rU   rA   )rÇ   r?   rL   rÜ   rÏ   s        r+   rÐ   z"CompileCounterWithBackend.__call__þ   su   € õ 	6à×Ò˜AÑÕØ—H‘H—N‘Nò 	#ˆDØ˜Ÿ™Ò Ø—’ Ñ"–ð	#ð 	�‰×Ñ˜2ÔØ+‰~˜dŸl™lÓ+¨B°Ó?Ð?r-   c                 ó.   — d| _         d| _        g | _        y rÂ   )rÄ   rÅ   rÚ   rÆ   s    r+   rÒ   zCompileCounterWithBackend.clear
  s   € ØˆÔØˆŒØˆ�r-   rÓ   )r‚   rÔ   rÕ   ÚstrrÈ   rD   r   rÖ   r[   rP   r   r   rÐ   rÒ   rs   r-   r+   rØ   rØ   ÷   sW   „ ð5 ð 5¨ó 5ð
@Ø—(‘(×&Ñ&ð
@Ø8<¸U¿\¹\Ñ8Jð
@à	�#�s�(Ñ	ó
@ôr-   rØ   c                   ót   — e Zd Zdd„Zdej
                  j                  deej                     de	de
f   fd„Zy)	ÚEagerAndRecordGraphsr#   Nc                 ó   — g | _         y r%   )rÚ   rÆ   s    r+   rÈ   zEagerAndRecordGraphs.__init__  s	   € Ø24ˆ�r-   r?   rL   .c                 óP   — | j                   j                  |«       |j                  S r%   )rÚ   rU   rÎ   )rÇ   r?   rL   s      r+   rÐ   zEagerAndRecordGraphs.__call__  s    € ð 	�‰×Ñ˜2ÔØ�z‰zÐr-   rÓ   ©r‚   rÔ   rÕ   rÈ   rD   r   rÖ   r[   rP   r   r   rÐ   rs   r-   r+   rá   rá     s@   „ ó5ðØ—(‘(×&Ñ&ðØ8<¸U¿\¹\Ñ8Jðà	�#�s�(Ñ	ôr-   rá   c                   ót   — e Zd Zdd„Zdej
                  j                  deej                     de	de
f   fd„Zy)	ÚAotEagerAndRecordGraphsr#   Nc                 ó.   — g | _         g | _        g | _        y r%   )rÚ   Ú	fw_graphsÚ	bw_graphsrÆ   s    r+   rÈ   z AotEagerAndRecordGraphs.__init__  s   € Ø24ˆŒØ57ˆŒØ57ˆ�r-   r?   rL   .c                 óp  ‡ — ‰ j                   j                  |«       dt        j                  j                  dt
        t        j                     dt        dt        f   fˆ fd„}dt        j                  j                  dt
        t        j                     dt        dt        f   fˆ fd„}t        ||||¬«      S )Nr?   rL   r#   .c                 óR   •— ‰j                   j                  | «       | j                  S r%   )rè   rU   rÎ   ©r?   rL   rÇ   s     €r+   Úfw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler(  ó!   ø€ ð �N‰N×!Ñ! "Ô%Ø—:‘:Ðr-   c                 óR   •— ‰j                   j                  | «       | j                  S r%   )ré   rU   rÎ   rì   s     €r+   Úbw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler.  rî   r-   )rí   rð   )
rÚ   rU   rD   r   rÖ   r[   rP   r   r   r   )rÇ   r?   rL   rí   rð   s   `    r+   rÐ   z AotEagerAndRecordGraphs.__call__#  s¤   ø€ ð 	�‰×Ñ˜2Ôð	Ü—‘×$Ñ$ð	Ü6:¼5¿<¹<Ñ6Hð	ä�cœ3�hÑõ	ð	Ü—‘×$Ñ$ð	Ü6:¼5¿<¹<Ñ6Hð	ä�cœ3�hÑõ	ô ØØØ#Ø#ô	
ð 	
r-   rÓ   rä   rs   r-   r+   ræ   ræ     s@   „ ó8ð

Ø—(‘(×&Ñ&ð
Ø8<¸U¿\¹\Ñ8Jð
à	�#�s�(Ñ	ô
r-   ræ   c                   ó   — e Zd Zdd„Zd„ Zy)ÚInductorAndRecordGraphsNc                 ó    — g | _         g | _        y r%   )rÚ   Úinductor_graphsrÆ   s    r+   rÈ   z InductorAndRecordGraphs.__init__=  s   € Ø24ˆŒØ;=ˆÕr-   c                 óò   ‡ ‡— dd l mc m} ‰ j                  j	                  |«       |j
                  Šˆˆ fd„}t        j                  |d|¬«      5  |j                  ||«      cd d d «       S # 1 sw Y   y xY w)Nr   c                  óP   •— ‰j                   j                  | d   «        ‰| i |¤ŽS rÂ   )rô   rU   )r=   r>   Úold_compile_fx_innerrÇ   s     €€r+   Úpatchedz1InductorAndRecordGraphs.__call__.<locals>.patchedH  s+   ø€ Ø× Ñ ×'Ñ'¨¨Q©Ô0Ù'¨Ð8°Ñ8Ð8r-   Ú_compile_fx_inner)Únew)Útorch._inductor.compile_fxÚ	_inductorÚ
compile_fxrÚ   rU   rù   r   Úobject)rÇ   r?   rL   Úcompile_fx_modrø   r÷   s   `    @r+   rÐ   z InductorAndRecordGraphs.__call__A  sh   ù€ ß;Ð;à�‰×Ñ˜2Ôà-×?Ñ?Ðõ	9ô �\‰\˜.Ð*=À7ÔKñ 	AØ!×,Ñ,¨R°Ó@÷	A÷ 	Aò 	Aús   ÁA-Á-A6rÓ   )r‚   rÔ   rÕ   rÈ   rÐ   rs   r-   r+   rò   rò   <  s   „ ó>óAr-   rò   c                 ó0   — t        j                  dd| «      S )Nz(?m)^ *#.*\n?r0   r1   )r‘   s    r+   Ústrip_commentr  P  r5   r-   c                 ó„   — dj                  | j                  d«      D �cg c]  }|j                  «       ‘Œ c}«      S c c}w )Nr•   )r‹   ÚsplitÚrstrip)r‘   Úlines     r+   Úremove_trailing_spacer  T  s.   € Ø�9‰9°·
±
¸4Ó0@ÖA¨�d—k‘k•mÒAÓBÐBùÒAs   Ÿ=Úgm_strc                 ó*   — t        t        | «      «      S r%   )r  r  )r  s    r+   Únormalize_gmr	  X  s   € ô !¤¨vÓ!6Ó7Ð7r-   c                 ó4   — t        j                  dd| «      }|S )z-
    Normalize code: remove empty lines.
    z[\r\n]+r•   r1   )r‘   Únormal_codes     r+   Úempty_line_normalizerr  ^  s   € ô —&‘&˜ T¨4Ó0€KØÐr-   rÇ   rG   ÚnargsÚexpected_opsÚexpected_ops_dynamicÚexpected_frame_countc                 óØ  — t         j                  s|�|}t        «       }t        |«      D �cg c]  }t	        j
                  dd«      ‘Œ }}t        |«      D �cg c]  }t	        j
                  dd«      ‘Œ }	} ||Ž }
 ||	Ž }t        «         t        |«      |«      } ||Ž } ||	Ž } ||Ž } ||	Ž }t        «        | j                  t        ||
«      «       | j                  t        ||
«      «       | j                  t        ||«      «       | j                  t        ||«      «       | j                  |j                  |«       |�| j                  |j                  |«       y y c c}w c c}w )Né
   )r   Úassume_static_by_defaultrÀ   ÚrangerD   Úrandnr   r   Ú
assertTruer   ÚassertEqualrÄ   rÅ   )rÇ   rG   r  r  r  r  Úactualr¡   Úargs1Úargs2Úcorrect1Úcorrect2Úopt_fnÚval1aÚval2aÚval1bÚval2bs                    r+   Ústandard_testr"  f  s?  € ô ×*Ò*Ð/CÐ/OØ+ˆäÓ€Fä*/°«,Ö7 QŒU�[‰[˜˜RÕ Ð7€EÐ7Ü*/°«,Ö7 QŒU�[‰[˜˜RÕ Ð7€EÐ7Ù�5ˆz€HÙ�5ˆz€HÜ	„GØ$Œ_˜VÓ$ RÓ(€FÙ�EˆN€EÙ�EˆN€EÙ�EˆN€EÙ�EˆN€EÜ	„GØ‡O�O”D˜ Ó)Ô*Ø‡O�O”D˜ Ó)Ô*Ø‡O�O”D˜ Ó)Ô*Ø‡O�O”D˜ Ó)Ô*Ø×Ñ�V×'Ñ'Ð)=Ô>ØÐØ×Ñ˜Ÿ™¨,Õ7ð  ùò! 8ùÚ7s   ¬E"ÁE'r?   c                 ó   — | j                   S r%   )rÎ   )r?   rL   s     r+   Údummy_fx_compiler$  ‡  s   € ð �:‰:Ðr-   ÚspeedupÚpvalueÚ
is_correctÚpvalue_thresholdc                 ó0   — |sy||kD  r| d›d�S | d›d|d›�S )NÚERRORz.3fzx SAMEzx p=z.2frs   )r%  r&  r'  r(  s       r+   Úformat_speedupr+  �  s7   € ñ ØØÐ Ò Ø˜#�˜fÐ%Ð%Ø�cˆ]˜$˜v c˜lÐ+Ð+r-   ÚcpuÚsizeÚstrideÚdtypeÚdeviceÚ
extra_sizec                 ó~  — t        d„ t        | |«      D «       «      dz   |z   }|j                  r`|j                  dk(  r8	 t	        j
                  |t        j                  |¬«      j                  |¬«      }n2t	        j
                  |||¬«      }nt	        j                  |g||¬«      }t	        j                  || |«      S )Nc              3   ó2   K  — | ]  \  }}|d z
  |z  –— Œ y­w)r   Nrs   )rR   Úshaper.  s      r+   rT   zrand_strided.<locals>.<genexpr>¢  s   è ø€ ÒH¡] U¨FˆU�Q‰Y˜&Õ ÑHùrk   r   )r/  r0  )r/  )r-  r/  r0  )
r   ÚzipÚis_floating_pointÚitemsizerD   r  Úfloat16ÚtoÚzerosÚ
as_strided)r-  r.  r/  r0  r1  Úneeded_sizerc   s          r+   Úrand_stridedr=  š  s³   € ô 	ÑH´c¸$ÀÓ6GÔHÓHØ
ñ	à
ñ	ð ð
 ×ÒØ�>‰>˜QÒðô —[‘[ ´E·M±MÈ&ÔQ×TÑTØð Uó ‰Fô —[‘[ °EÀ&ÔI‰Fä—‘ ; -°uÀVÔLˆÜ×Ñ˜F D¨&Ó1Ð1r-   Ú_Tc                  ó$   — t         j                   S r%   )r   r  rs   r-   r+   Úcheck_dynamic_shape_capturer@  ¹  s   € ä×.Ñ.Ð.Ð.r-   Úpatchesc                 ó”   ‡ ‡— t        j                  ‰ «      dt        j                  dt        j                  dt
        fˆ ˆfd„«       }|S )Nr=   r>   r#   c            	      óÊ   •— t        j                  «       5 }‰D ],  \  }}}|j                  t        j                  |||«      «       Œ.  ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wr%   )Ú
contextlibÚ	ExitStackÚenter_contextr   rþ   )r=   r>   ÚstackÚmoduleÚattrÚvalrG   rA  s         €€r+   Ú_fnz"_make_fn_with_patches.<locals>._fn¿  sh   ø€ ä×!Ñ!Ó#ð 	' uØ%,ò EÑ!�˜˜cØ×#Ñ#¤E§L¡L°¸¸sÓ$CÕDðEñ �tÐ&˜vÑ&÷		'÷ 	'ò 	'ús   –9AÁA")Ú	functoolsÚwrapsr!   r=   r>   r>  )rG   rA  rK  s   `` r+   Ú_make_fn_with_patchesrN  ¾  sB   ù€ Ü‡_�_�RÓð'”2—7‘7ð '¤b§i¡ið '´Bõ 'ó ð'ð €Jr-   c                 ó   — | S r%   rs   r*   s    r+   ú<lambda>rP  Ð  s   € Èa€ r-   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixrQ  rR  c          	      óú  — t        |› | j                  › �| j                  i «      }|j                  |_        t	        | «      D ]¶  }|j                  d«      rt        | |«      }t        |«      st        ||t        | |«      «       ŒC|› |› �}	t        |g|¢­Ž }
|	|
_        |�!t        ||«      rt        j                  |
«      }
t        ||	 ||
«      «       Œ“t        ||«      rŒ t        ||t        | |«      «       Œ¸ |S )NÚtest_)rp   r‚   Ú	__bases__rÕ   ÚdirÚ
startswithÚgetattrÚcallableÚsetattrrN  ÚhasattrÚunittestÚexpectedFailure)rS  rT  rU  rQ  rR  rA  ÚDummyTestClassr.   rG   Únew_nameÚnew_fns              r+   Úmake_test_cls_with_patchesrd  Ê  sò   € ô ˜Z˜L¨¯©¨Ð7¸¿¹ÈÓK€NØ"0×"9Ñ"9€NÔä�C“ò >ˆØ�?‰?˜7Ô#Ü˜˜dÓ#ˆBÜ˜B”<Ü˜¨¬g°c¸4Ó.@ÔAØØ˜ 	˜{Ð+ˆHÜ*¨2Ð8°Ò8ˆFØ&ˆFŒOØÐ%¬'°"°jÔ*AÜ!×1Ñ1°&Ó9�Ü�N H©i¸Ó.?Õ@ä˜¨Õ.Ü�N D¬'°#°tÓ*<Õ=ð>ð  Ðr-   c                 óV   — t         j                  dk\  r| S t        j                  | «      S )N)r    é   ©ÚsysÚversion_infor_  r�   ©rG   s    r+   ÚskipIfNotPy311rk  é  s$   € Ü
×Ñ˜7Ò"Øˆ	Ü�=‰=˜ÓÐr-   c                 ób   — t         j                  dk\  r| S  t        j                  d«      | «      S )N©r    é   zRequires Python 3.12+rg  rj  s    r+   ÚskipIfNotPy312ro  ï  s,   € Ü
×Ñ˜7Ò"Øˆ	Ø1Œ8�=‰=Ð0Ó1°"Ó5Ð5r-   c                 óV   — t         j                  dk\  rt        j                  | «      S | S )Nrm  )rh  ri  r_  r`  rj  s    r+   ÚxfailIfPy312rq  õ  s&   € Ü
×Ñ˜7Ò"Ü×'Ñ'¨Ó+Ð+Ø€Ir-   c                 ób   — t         j                  dk\  r t        j                  d«      | «      S | S )Nrm  zNot supported in Python 3.12+rg  rj  s    r+   ÚskipIfPy312rs  û  s,   € Ü
×Ñ˜7Ò"Ø=Œx�}‰}Ð<Ó=¸bÓAÐAØ€Ir-   c                 ób   — t         j                  dk\  r| S  t        j                  d«      | «      S )N)r    r  zRequires Python 3.10+rg  rj  s    r+   ÚrequiresPy310ru    s,   € Ü
×Ñ˜7Ò"Øˆ	à5Œx�}‰}Ð4Ó5°bÓ9Ð9r-   c                 ó   — d| _         | S ©NT)Ú_expected_failure_dynamicrj  s    r+   ÚexpectedFailureDynamicry  
  s   € Ø#'€BÔ Ø€Ir-   c                 ó   — d| _         | S rw  )Ú!_expected_failure_codegen_dynamicrj  s    r+   ÚexpectedFailureCodegenDynamicr|    ó   € Ø+/€BÔ(Ø€Ir-   c                 ó   — d| _         | S rw  )Ú!_expected_failure_dynamic_wrapperrj  s    r+   ÚexpectedFailureDynamicWrapperr€    r}  r-   Úuse_xlac                 ó  — t        j                  d«       t        j                  d«       t        rt        j                  j                  d«       | r3dd lmc m} |j                  dt        |j                  «       «      «       y y )Ni9  r   )rD   Úmanual_seedÚrandomÚseedr   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelÚset_rng_staterß   Ú
xla_device)r�  Úxms     r+   Úreset_rng_staterŒ    sX   € Ü	×Ñ�dÔÜ
‡K�K�ÔÝ	Ü
�	‰	�‰�tÔÙß-Ð-à
×Ñ˜œs 2§=¡=£?Ó3Õ4ð r-   Úfr=   r>   c                 ó   —  | |i |¤ŽS r%   rs   )r�  r=   r>   s      r+   Ú&_skipped_function_for_test_reconstructr�  &  s   € ñ ˆdÐ�fÑÐr-   )r0   )NNr   )Tgš™™™™™¹?)F)sÚ__doc__rD  r˜   rL  ÚloggingÚos.pathr‰   r„  r2   rh  Útypesr_  Úcollections.abcr   Útypingr   r   r   r   r   r	   Útyping_extensionsr
   Úunittest.mockr   rD   r   Ú torch._dynamo.backends.debuggingr   Útorch._dynamo.output_graphr   r0   r   r   r   r   Úbytecode_transformationr   r   r   r   Úguardsr   r   r   r   r   r   r¸   r   r   Ú
ModuleTypeÚ__annotations__ÚnumpyÚModuleNotFoundErrorÚunsupportedÚthreeÚ	getLoggerr‚   Úlogr!   rP   r,   rß   r4   rH   ÚnnÚModuler[   re   Úboolri   rt   rZ   r…   Úfloatr�   ÚCodeTyperœ   rn   r©   rÀ   rØ   rá   ræ   rò   r  r  r	  r  r"  rÖ   r$  r+  Úfloat32r/  r0  r=  r>  r@  rN  rp   rd  rk  ro  rq  rs  ru  ry  r|  r€  rŒ  r=   r>   r�  rs   r-   r+   ú<module>rª     s4  ðòó Û 
Û Û Û Û Û 	Û 
Û Û Ý $ß D× DÝ 'Ý ã Ý Ý 6Ý 2ç 8Ó 8÷ó ÷ AÑ @ß IÑ IÝ ð "&€€HˆU×ÑÑÓ %ðÛð
 ×$Ñ$€Ø	€à€g×Ñ˜Ó!€áˆtƒ_€ð>�˜Ÿ™Ñ&ð >¨8°E·L±LÑ+Aó >ð.¨ð .°ó .ò$ð"%Ø�8‰8�?‰?ð%Ø(+ð%Ø36ð%ØHKð%à	ˆ#�Yó%ðP	E˜3ð 	E 4ó 	Eð 
Ø A˜uŸ|™|Ð A°·±Ò Aó 
Ø Að 
ðØ	ˆt�C‰y˜%  S ™/¨4°°S°©>Ð9Ñ	:ðà
òó 
ðð
E˜sð E u¨U¯\©\¸5Ð-@Ñ'Aó Eð,�3ó ñ
�Sð 
 §¡ð 
°sð 
ÀDó 
ð QRò%
Øð%
Ø(+ð%
Ø47ð%
Ø<?ð%
ØJMð%
àó%
÷Pñ ÷&ñ ÷6ñ ÷
ñ 
÷>Añ Að(.˜ð . ó .ðC ð C¨ó Cð8˜ð 8 ó 8ð ð ¨ó ð #'Ø*.Ø !ñ8Ø
ð8à��c�Ñð8ð ð8ð ˜3‘-ð	8ð
 # 3™-ð8ð ð8ð 
ó8ðBØ
�‰ðØ(,¨U¯\©\Ñ(:ðàˆc�3ˆhÑóð Ø!ñ	
,Øð
,àð
,ð ð
,ð ð	
,ð
 	ó
,ð  Ÿ™Ø',Øñ2Ø
�3‰-ð2à�S‰Mð2ð �;‰;ð2ð �#�u—|‘|Ð#Ñ$ð	2ð
 ð2ð ‡\�\ó2ñ8 ˆTƒ]€ð/ Tó /ð
	˜h r¨2 vÑ.ð 	¸#ð 	À(È2ÈrÈ6ÑBRó 	ð" !%ÙDOòØ	ðàðð ðð ð	ð
 ˜‘ðð ˜ # s (Ñ+Ð,¨h°s¸C°xÑ.@Ð@ÑAðð 
óð>�x  B Ñ'ð ¨H°R¸°VÑ,<ó ð6�x  B Ñ'ð 6¨H°R¸°VÑ,<ó 6ð�X˜b "˜fÑ%ð ¨(°2°r°6Ñ*:ó ð�H˜R ˜VÑ$ð ¨°"°b°&Ñ)9ó ð:�h˜r 2˜vÑ&ð :¨8°B¸°FÑ+;ó :ð˜x¨¨B¨Ñ/ð °H¸RÀ¸VÑ4Dó ð h¨r°2¨vÑ&6ð ¸8ÀBÈÀFÑ;Kó ð h¨r°2¨vÑ&6ð ¸8ÀBÈÀFÑ;Kó ñ
5˜Tð 5¨dó 5ðØ��B�ÑðØ "§¡ðØ35·9±9ðàôøðg ò Ø	ƒBðús   Â+N5 Î5O Î?O 