§
    ­˜ºh¯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
j3                 e4d<   	 ddl5Z2n# e6$ r dZ2Y nw xY we!j7        Z7dZ8 ej9        e:¦  «        Z; ed¦  «        Z<deej=                 deej=                 fd„Z>de?de?fd„Z@d„ ZAdejB        jC        dedededeDe         f
d„ZEdedeFfd„ZGedej=        dej=        fd „¦   «         ZHedeeDe         eIed!f         eJeef         f         deKfd"„¦   «         ZHdedeej=        eKf         fd#„ZHde?fd$„ZLdqde?d&e
jM        d'e?ddfd(„ZNdd)œd*e.d+eOd,ed-ed.eOde-fd/„ZP G d0„ d1¦  «        ZQ G d2„ d3¦  «        ZR G d4„ d5¦  «        ZS G d6„ d7¦  «        ZT G d8„ d9¦  «        ZUd&e?de?fd:„ZVd&e?de?fd;„ZWd<e?de?fd=„ZXd&e?de?fd>„ZY	 	 	 drd?ed@ed!ef         dAeOdBeeO         dCeeO         dDeOddfdE„ZZdFej[        deDej=                 ded!ef         fdG„Z\	 	 dsdJeKdKeKdLeFdMeKde?f
dN„Z]ej^        dOdfdPeeO         dQeeO         dRej_        dSee?ej`        f         dTeOdej=        fdU„Za edV¦  «        ZbdeFfdW„Zcd@ee<ebf         dXedee<ebf         fdY„ZdddZ„ d[œd\eed]e?d^e?dXed_ee?         d`eed!ef         ged!ef         f         deefda„Zfd@ee<ebf         dee<ebf         fdb„Zgd@ee<ebf         dee<ebf         fdc„Zhd@ee<ebf         dee<ebf         fdd„Zid@ee<ebf         dee<ebf         fde„Zjd@ee<ebf         dee<ebf         fdf„Zkd@ee<ebf         dee<ebf         fdg„Zld@ee<ebf         dee<ebf         fdh„Zmd@ee<ebf         dee<ebf         fdi„ZndtdkeFddfdl„Zodmee<ebf         dne<jp        doe<jq        debfdp„ZrdS )ua1  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                 ó†   — | €d S |                       ¦   «                              ¦   «                              | j        ¦  «        S ©N)ÚdetachÚcloneÚrequires_grad_Úrequires_grad©r"   s    ú]/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_dynamo/testing.pyÚclone_mer,   ?   s6   € Ø€yØˆtØ�8Š8‰:Œ:×ÒÑÔ×,Ò,¨Q¬_Ñ=Ô=Ð=ó    Únamec                 ó.   — t          j        dd| ¦  «        S )Nz^_orig_mod[.]Ú ©ÚreÚsub)r.   s    r+   Úremove_optimized_module_prefixr4   E   ó   € ÝŒ6Ð" B¨Ñ-Ô-Ð-r-   c                 ó†   ‡‡‡— ddl mŠ d Šd Šˆˆˆfd„}  t          j        |d¬¦  «        | ¦  «        |i |¤Ž ‰j        ‰fS )Nr   )ÚInstructionTranslatorc                 óH   •— | Š‰                      ¦   «         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Ô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   s„   øøø€ ØDÐDÐDÐDÐDÐDà	€BØ€Nðð ð ð ð ð ð ð EÐ@…E„MÐ/¸4Ð@Ñ@Ô@ÀÑDÔDÀdÐUÈfÐUÐUÐUØŒ8�^Ð#Ð#r-   ÚmodelÚ
predictionÚlossÚexample_inputsc                 óJ  — g }|                      |¦  «         |                      |¦  «         i }i }|                      ¦   «         D ]_\  }}t          | t          j        ¦  «        rt          |¦  «        }|}	|j        }
|j        €t          j        |¦  «        }
|
||dz   <   |	||<   Œ`|                      |¦  «         |                      |¦  «         i }|  	                    ¦   «         D ]3\  }}t          | t          j        ¦  «        rt          |¦  «        }|||<   Œ4|                      |¦  «         |D ]r}t          |t          t          f¦  «        r |                     d„ |D ¦   «         ¦  «         Œ>t          |t          j        ¦  «        r|                      |j        ¦  «         Œs|S )Nz.gradc              3   óX   K  — | ]%}t          |t          j        ¦  «        ¯|j        V — Œ&d S r%   )Ú
isinstancerD   ÚTensorÚgrad)Ú.0Úinps     r+   ú	<genexpr>z"collect_results.<locals>.<genexpr>{   s5   è è € ÐXÐX¨½*ÀSÍ%Ì,Ñ:WÔ:WÐX˜3œ8ÐXÐXÐXÐXÐXÐXr-   )Ú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   sµ  € ð €GØ‡N‚N�:ÑÔÐØ‡N‚N�4ÑÔÐð €EØ€FØ×-Ò-Ñ/Ô/ð 	"ð 	"‰ˆˆeÝ�e�ZÔ7Ñ8Ô8ð 	8Ý1°$Ñ7Ô7ˆDØˆ
ØŒzˆàŒ:ÐÝÔ# EÑ*Ô*ˆDØ $ˆˆd�W‰nÑØ!ˆˆt‰ˆØ‡N‚N�5ÑÔÐØ‡N‚N�6ÑÔÐØ€GØ×+Ò+Ñ-Ô-ð ð ‰ˆˆfÝ�e�ZÔ7Ñ8Ô8ð 	8Ý1°$Ñ7Ô7ˆDØˆ�‰ˆØ‡N‚N�7ÑÔÐØ!ð -ð -ˆÝ�g¥¥t˜}Ñ-Ô-ð 	-Ø�NŠNÐXÐX¨wÐXÑXÔXÑXÔXÐXÐXå˜'¥5¤<Ñ0Ô0ð -Ø—’˜wœ|Ñ,Ô,Ð,øØ€Nr-   Úoutc                 ó  — t          | t          j        ¦  «        r| j        S t          | t          t
          f¦  «        rt          d„ | D ¦   «         ¦  «        S | €dS t          | t          ¦  «        rdS t          dt          | ¦  «        ¦  «        ‚)Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r%   )Úrequires_bwd_pass©rR   r"   s     r+   rT   z$requires_bwd_pass.<locals>.<genexpr>†   s+   è è € Ð5Ð5¨AÕ$ QÑ'Ô'Ð5Ð5Ð5Ð5Ð5Ð5r-   FúDon't know how to reduce)
rO   rD   rP   r)   r[   rZ   ÚanyÚintÚNotImplementedErrorÚtype©rf   s    r+   ri   ri   ‚   sŠ   € Ý�#•u”|Ñ$Ô$ð ØÔ Ð Ý	�C�$¥˜Ñ	'Ô	'ð ÝÐ5Ð5°Ð5Ñ5Ô5Ñ5Ô5Ð5Ø	ˆØˆuÝ	�C�Ñ	Ô	ð ØˆuÝ
Ð8½$¸s¹)¼)Ñ
DÔ
DÐDr-   c                 ó   — d S r%   © rp   s    r+   Úreduce_to_scalar_lossrs   Ž   s   € Ø>A¸cr-   .c                 ó   — d S r%   rr   rp   s    r+   rs   rs   ’   s	   € ð ˆCr-   c                 óÆ  — t          | t          j        ¦  «        r)|                      ¦   «         |                      ¦   «         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                             ¦   «         S t          | t          ¦  «        rMt          d„ |                      ¦   «         D ¦   «         ¦  «        t          |                      ¦   «         ¦  «        z  S t!          dt          | ¦  «        ¦  «        ‚)z/Reduce the output of a model to get scalar lossc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r%   ©rs   rj   s     r+   rT   z(reduce_to_scalar_loss.<locals>.<genexpr>ž   s+   è è € Ð9Ð9°Õ(¨Ñ+Ô+Ð9Ð9Ð9Ð9Ð9Ð9r-   )ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚSquashedNormalc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r%   rw   )rR   Úvalues     r+   rT   z(reduce_to_scalar_loss.<locals>.<genexpr>¨   s+   è è € ÐJÐJ°EÕ(¨Ñ/Ô/ÐJÐJÐJÐJÐJÐJr-   rk   )rO   rD   rP   ÚsumÚnumelr[   rZ   Úlenro   Ú__name__rs   ÚlogitsÚmeanÚdictÚvaluesÚkeysrn   rp   s    r+   rs   rs   ˜   s1  € å�#•u”|Ñ$Ô$ð 
à�wŠw‰yŒy˜3Ÿ9š9™;œ;Ñ&Ð&Ý	�C�$¥˜Ñ	'Ô	'ð 
ÝÐ9Ð9°SÐ9Ñ9Ô9Ñ9Ô9½CÀ¹H¼HÑDÐDÝ	ˆc‰ŒÔ	ð  ð 
ð 
õ
 % S¤ZÑ0Ô0Ð0Ý	ˆc‰ŒÔ	Ð/Ò	/Ð	/ØŒx�|Š|‰~Œ~ÐÝ	�C�Ñ	Ô	ð 
ÝÐJÐJ¸S¿ZºZ¹\¼\ÐJÑJÔJÑJÔJÍSØ�HŠH‰JŒJñN
ô N
ñ 
ð 	
õ Ð8½$¸s¹)¼)Ñ
DÔ
DÐDr-   c                  óð   — t           j                             t           j                             t          ¦  «        d¦  «        } t           j                             | ¦  «        st          j        | ¦  «         | S )Nz../debug)ÚosÚpathÚjoinÚdirnameÚ__file__ÚexistsÚmkdir)r‰   s    r+   Ú	debug_dirr�   ®   sM   € ÝŒ7�<Š<�œŸš­Ñ1Ô1°:Ñ>Ô>€DÝŒ7�>Š>˜$ÑÔð Ý
Œ�‰ŒˆØ€Kr-   r0   ÚcodeÚextrac           	      óx  — t          t          j                             t	          ¦   «         | ¦  «        d¦  «        5 }|                     t          j        |¦  «                             ¦   «         › dt          j        |¦  «                             ¦   «         › d|› d�¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚwz

ú
)	Úopenrˆ   r‰   rŠ   r�   ÚwriteÚdisÚBytecodeÚinfo)r.   r�   r‘   Úfds       r+   Ú
debug_dumpr›   µ   så   € Ý	�bŒg�lŠl�9™;œ;¨Ñ-Ô-¨sÑ	3Ô	3ð 
°rØ
�ŠÝŒ|˜DÑ!Ô!×&Ò&Ñ(Ô(ÐUÐU­c¬l¸4Ñ.@Ô.@×.DÒ.DÑ.FÔ.FÐUÐUÈEÐUÐUÐUñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   »A'B/Â/B3Â6B3)ÚskipÚframeÚ
cache_sizeÚhooksÚ_rœ   c                ó  — dt           t                   dt          ddfd„}t          j        j                             ¦   «         }t          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xY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zused to debug jump updatesÚinstructionsÚcode_optionsr#   Nc                 ó’   — |                       dt          d¦  «        ¦  «         |                       dt          d¦  «        ¦  «         d S )Nr   ÚNOP)Úinsertr   )r¢   r£   s     r+   Úinsert_nopsz&debug_insert_nops.<locals>.insert_nopsÁ   sF   € Ø×Ò˜AÕ1°%Ñ8Ô8Ñ9Ô9Ð9Ø×Ò˜AÕ1°%Ñ8Ô8Ñ9Ô9Ð9Ð9Ð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¨   ¼   sT  € ð
:¥$¥s¤)ð :½3ð :À4ð :ð :ð :ð :õ ”mÔ)×=Ò=Ñ?Ô?€OÝ	ŒÔ	×	)Ò	)Ð*=Ñ	>Ô	>ð 
ð 
Àð 
ð 
Ý˜œÑ%Ô%ð 	(Ý%Ñ'Ô'ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
õ 	�U”\Ñ"Ô"Ð"Ý$ U¤\°;Ñ?Ô?ˆÝØØØØØ#Ø ˜
å™œÝ ™œØ”<Ø&(Øð
ñ 
ô 
ˆõ !ÝØÝ$ U¤\°5Ñ9Ô9ÔGÝ 1°qÐ9Ñ9Ô9ñô ñ
ô 
ð+
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
sC   Á'E<Á*"E$ÂE<Â%B&E$ÅE<Å$E(	Å(E<Å+E(	Å,E<Å<F ÆF c                   ól   — 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dS )
ÚCompileCounterr#   Nc                 ó"   — d| _         d| _        d S ©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 r| xj        dz  c_        Œ|j        S )Nr   Úcall)rÃ   rF   ÚnodesÚoprÄ   Úforward)rÆ   r?   rL   Únodes       r+   Ú__call__zCompileCounter.__call__é   sQ   € ð 	ÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒzÐr-   c                 ó"   — d| _         d| _        d S rÁ   rÂ   rÅ   s    r+   ÚclearzCompileCounter.clearò   rÈ   r-   ©r#   N)r�   Ú
__module__Ú__qualname__rÇ   rD   r   ÚGraphModuler[   rP   r   r   rÏ   rÑ   rr   r-   r+   r¿   r¿   ä   s}   € € € € € ðð ð ð ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	�#�s�(Ô	ðð ð ð ðð ð ð ð ð r-   r¿   c                   ót   — 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dS )ÚCompileCounterWithBackendrA   r#   Nc                 ó>   — d| _         d| _        || _        g | _        d S 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 r| xj        dz  c_        Œ| 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__þ   s�   € ð 	6Ð5Ð5Ð5Ð5Ð5àÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒ×Ò˜2ÑÔÐØ+ˆ~ˆ~˜dœlÑ+Ô+¨B°Ñ?Ô?Ð?r-   c                 ó0   — d| _         d| _        g | _        d S 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Ñ   rr   r-   r+   r×   r×   ÷   s’   € € € € € ð5 ð 5¨ð 5ð 5ð 5ð 5ð
@Ø”(Ô&ð
@Ø8<¸U¼\Ô8Jð
@à	�#�s�(Ô	ð
@ð 
@ð 
@ð 
@ðð ð ð ð ð r-   r×   c                   ód   — e Zd Zdd„Zdej        j        deej                 de	de
f         fd„ZdS )	ÚEagerAndRecordGraphsr#   Nc                 ó   — g | _         d S r%   )rÙ   rÅ   s    r+   rÇ   zEagerAndRecordGraphs.__init__  s   € Ø24ˆŒˆˆr-   r?   rL   .c                 óD   — | j                              |¦  «         |j        S r%   )rÙ   rU   rÍ   )rÆ   r?   rL   s      r+   rÏ   zEagerAndRecordGraphs.__call__  s"   € ð 	Œ×Ò˜2ÑÔÐØŒzÐr-   rÒ   ©r�   rÓ   rÔ   rÇ   rD   r   rÕ   r[   rP   r   r   rÏ   rr   r-   r+   rà   rà     si   € € € € € ð5ð 5ð 5ð 5ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	�#�s�(Ô	ðð ð ð ð ð r-   rà   c                   ód   — e Zd Zdd„Zdej        j        deej                 de	de
f         fd„ZdS )	ÚAotEagerAndRecordGraphsr#   Nc                 ó0   — g | _         g | _        g | _        d S r%   )rÙ   Ú	fw_graphsÚ	bw_graphsrÅ   s    r+   rÇ   z AotEagerAndRecordGraphs.__init__  s   € Ø24ˆŒØ57ˆŒØ57ˆŒˆˆr-   r?   rL   .c                 óf  ‡ — ‰ 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                 óF   •— ‰j                              | ¦  «         | j        S r%   )rç   rU   rÍ   ©r?   rL   rÆ   s     €r+   Úfw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler(  ó#   ø€ ð ŒN×!Ò! "Ñ%Ô%Ð%Ø”:Ðr-   c                 óF   •— ‰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ã   rr   r-   r+   rå   rå     si   € € € € € ð8ð 8ð 8ð 8ð

Ø”(Ô&ð
Ø8<¸U¼\Ô8Jð
à	�#�s�(Ô	ð
ð 
ð 
ð 
ð 
ð 
r-   rå   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚInductorAndRecordGraphsr#   Nc                 ó"   — g | _         g | _        d S r%   )rÙ   Úinductor_graphsrÅ   s    r+   rÇ   z InductorAndRecordGraphs.__init__=  s   € Ø24ˆŒØ;=ˆÔÐÐr-   c                 óô   ‡ ‡— dd l mc m} ‰ j                             |¦  «         |j        Šˆˆ fd„}t          j        |d|¬¦  «        5  |                     ||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   c                  óT   •— ‰j                              | d         ¦  «          ‰| i |¤ŽS rÁ   )ró   rU   )r=   r>   Úold_compile_fx_innerrÆ   s     €€r+   Úpatchedz1InductorAndRecordGraphs.__call__.<locals>.patchedH  s4   ø€ ØÔ ×'Ò'¨¨Q¬Ñ0Ô0Ð0Ø'Ð'¨Ð8°Ð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  s  øø€ Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;àŒ×Ò˜2ÑÔÐà-Ô?Ðð	9ð 	9ð 	9ð 	9ð 	9ð 	9õ Œ\˜.Ð*=À7ÐKÑKÔKð 	Að 	AØ!×,Ò,¨R°Ñ@Ô@ð	Að 	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As   Á
A-Á-A1Á4A1rÒ   )r�   rÓ   rÔ   rÇ   rÏ   rr   r-   r+   rñ   rñ   <  s<   € € € € € ð>ð >ð >ð >ðAð Að Að Að Ar-   rñ   c                 ó.   — t          j        dd| ¦  «        S )Nz(?m)^ *#.*\n?r0   r1   ©r�   s    r+   Ústrip_commentr  P  r5   r-   c                 óf   — d                      d„ |                      d¦  «        D ¦   «         ¦  «        S )Nr”   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rr   )Úrstrip)rR   Úlines     r+   ú
<listcomp>z)remove_trailing_space.<locals>.<listcomp>U  s    € ÐAÐAÐA¨�d—k’k‘m”mÐAÐAÐAr-   )rŠ   Úsplitr   s    r+   Úremove_trailing_spacer  T  s/   € Ø�9Š9ÐAÐA°·
²
¸4Ñ0@Ô0@ÐAÑAÔAÑBÔBÐBr-   Úgm_strc                 ó:   — t          t          | ¦  «        ¦  «        S r%   )r  r  )r	  s    r+   Únormalize_gmr  X  s   € õ !¥¨vÑ!6Ô!6Ñ7Ô7Ð7r-   c                 ó2   — 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Ô0€KØÐr-   rÆ   rG   ÚnargsÚexpected_opsÚexpected_ops_dynamicÚexpected_frame_countc                 óÖ  — t           j        s|�|}t          ¦   «         }d„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         } ||Ž }	 ||Ž }
t	          ¦   «           t          |¦  «        |¦  «        } ||Ž } ||Ž } ||Ž } ||Ž }t	          ¦   «          |                      t          ||	¦  «        ¦  «         |                      t          ||	¦  «        ¦  «         |                      t          ||
¦  «        ¦  «         |                      t          ||
¦  «        ¦  «         |                      |j	        |¦  «         |�|                      |j
        |¦  «         d S d S )Nc                 ó8   — g | ]}t          j        d d ¦  «        ‘ŒS ©é
   ©rD   Úrandn©rR   r    s     r+   r  z!standard_test.<locals>.<listcomp>s  ó$   € Ð7Ð7Ð7 Q�UŒ[˜˜RÑ Ô Ð7Ð7Ð7r-   c                 ó8   — g | ]}t          j        d d ¦  «        ‘ŒS r  r  r  s     r+   r  z!standard_test.<locals>.<listcomp>t  r  r-   )r   Úassume_static_by_defaultr¿   Úranger   r   Ú
assertTruer   ÚassertEqualrÃ   rÄ   )rÆ   rG   r  r  r  r  ÚactualÚargs1Úargs2Úcorrect1Úcorrect2Úopt_fnÚval1aÚval2aÚval1bÚval2bs                   r+   Ústandard_testr*  f  sx  € õ Ô*ð ,Ð/CÐ/OØ+ˆåÑÔ€Fà7Ð7­%°©,¬,Ð7Ñ7Ô7€EØ7Ð7­%°©,¬,Ð7Ñ7Ô7€EØˆr�5ˆz€HØˆr�5ˆz€HÝ	�G„G€GØ$�_˜VÑ$Ô$ RÑ(Ô(€FØˆF�EˆN€EØˆF�EˆN€EØˆF�EˆN€EØˆF�EˆN€EÝ	�G„G€GØ‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø×Ò�VÔ'Ð)=Ñ>Ô>Ð>ØÐØ×Ò˜œ¨,Ñ7Ô7Ð7Ð7Ð7ð  Ðr-   r?   c                 ó   — | j         S r%   )rÍ   )r?   rL   s     r+   Údummy_fx_compiler,  ‡  s   € ð Œ:Ðr-   Tçš™™™™™¹?ÚspeedupÚpvalueÚ
is_correctÚpvalue_thresholdc                 ó4   — |sdS ||k    r| d›d�S | d›d|d›�S )NÚERRORz.3fzx SAMEzx p=z.2frr   )r.  r/  r0  r1  s       r+   Úformat_speedupr4  �  sI   € ð ð ØˆwØÐ Ò Ð ØÐ%Ð%Ð%Ð%Ð%ØÐ+Ð+Ð+˜vÐ+Ð+Ð+Ð+r-   ÚcpuÚsizeÚstrideÚdtypeÚdeviceÚ
extra_sizec                 óz  — t          d„ t          | |¦  «        D ¦   «         ¦  «        dz   |z   }|j        rZ|j        dk    r7	 t	          j        |t          j        |¬¦  «                             |¬¦  «        }n0t	          j        |||¬¦  «        }nt	          j        |g||¬¦  «        }t	          j	        || |¦  «        S )Nc              3   ó,   K  — | ]\  }}|d z
  |z  V — ŒdS )r   Nrr   )rR   Úshaper7  s      r+   rT   zrand_strided.<locals>.<genexpr>¢  s/   è è € ÐHÐH¡] U¨FˆU�Q‰Y˜&Ñ ÐHÐHÐHÐHÐHÐHr-   r   )r8  r9  )r8  )r6  r8  r9  )
r~   ÚzipÚis_floating_pointÚitemsizerD   r  Úfloat16ÚtoÚzerosÚ
as_strided)r6  r7  r8  r9  r:  Úneeded_sizerc   s          r+   Úrand_stridedrF  š  sÙ   € õ 	ÐHÐHµc¸$ÀÑ6GÔ6GÐHÑHÔHÑHÔHØ
ñ	à
ñ	ð ð
 Ôð MØŒ>˜QÒÐðõ ”[ µE´MÈ&ÐQÑQÔQ×TÒTØð Uñ ô ˆFˆFõ ”[ °EÀ&ÐIÑIÔIˆFˆFå” ; -°uÀVÐLÑLÔLˆÝÔ˜F D¨&Ñ1Ô1Ð1r-   Ú_Tc                  ó   — t           j         S r%   )r   r  rr   r-   r+   Úcheck_dynamic_shape_capturerI  ¹  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 ]/\  }}}|                     t          j        |||¦  «        ¦  «         Œ0 ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r%   )Ú
contextlibÚ	ExitStackÚenter_contextr   rý   )r=   r>   ÚstackÚmoduleÚattrÚvalrG   rJ  s         €€r+   Ú_fnz"_make_fn_with_patches.<locals>._fn¿  sÂ   ø€ åÔ!Ñ#Ô#ð 	' uØ%,ð Eð EÑ!�˜˜cØ×#Ò#¥E¤L°¸¸sÑ$CÔ$CÑDÔDÐDÐDà�2�tÐ&˜vÐ&Ð&ð		'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   •:AÁA Á#A )Ú	functoolsÚwrapsr!   r=   r>   rG  )rG   rJ  rT  s   `` r+   Ú_make_fn_with_patchesrW  ¾  s\   øø€ Ý„_�RÑÔð'•2”7ð '¥b¤ið 'µBð 'ð 'ð 'ð 'ð 'ð 'ñ Ôð'ð €Jr-   c                 ó   — | S r%   rr   r*   s    r+   ú<lambda>rY  Ð  s   € Èa€ r-   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixrZ  r[  c          	      ó<  — t          |› | j        › �| j        i ¦  «        }|j        |_        t	          | ¦  «        D ]à}|                     d¦  «        ršt          | |¦  «        }t          |¦  «        s t          ||t          | |¦  «        ¦  «         ŒV|› |› �}	t          |g|¢R Ž }
|	|
_        |�$t          ||¦  «        rt          j        |
¦  «        }
t          ||	 ||
¦  «        ¦  «         Œ±t          ||¦  «        st          ||t          | |¦  «        ¦  «         Œá|S )NÚtest_)ro   r�   Ú	__bases__rÔ   ÚdirÚ
startswithÚgetattrÚcallableÚsetattrrW  ÚhasattrÚunittestÚexpectedFailure)r\  r]  r^  rZ  r[  rJ  ÚDummyTestClassr.   rG   Únew_nameÚnew_fns              r+   Úmake_test_cls_with_patchesrm  Ê  s9  € õ ˜ZÐ7¨¬Ð7Ð7¸¼ÈÑKÔK€NØ"0Ô"9€NÔå�C‘”ð >ð >ˆØ�?Š?˜7Ñ#Ô#ð 	>Ý˜˜dÑ#Ô#ˆBÝ˜B‘<”<ð Ý˜¨­g°c¸4Ñ.@Ô.@ÑAÔAÐAØØÐ+ 	Ð+Ð+ˆHÝ*¨2Ð8°Ð8Ð8Ð8ˆFØ&ˆFŒOØÐ%­'°"°jÑ*AÔ*AÐ%Ý!Ô1°&Ñ9Ô9�Ý�N H¨i¨i¸Ñ.?Ô.?Ñ@Ô@Ð@Ð@å˜¨Ñ.Ô.ð 	>Ý�N D­'°#°tÑ*<Ô*<Ñ=Ô=Ð=øàÐr-   c                 óN   — t           j        dk    r| S t          j        | ¦  «        S )N)r    é   ©ÚsysÚversion_inforh  rœ   ©rG   s    r+   ÚskipIfNotPy311rt  é  s%   € Ý
Ô˜7Ò"Ð"Øˆ	ÝŒ=˜ÑÔÐr-   c                 ó`   — t           j        dk    r| S  t          j        d¦  «        | ¦  «        S )N©r    é   zRequires Python 3.12+rp  rs  s    r+   ÚskipIfNotPy312rx  ï  s0   € Ý
Ô˜7Ò"Ð"Øˆ	Ø1�8Œ=Ð0Ñ1Ô1°"Ñ5Ô5Ð5r-   c                 óN   — t           j        dk    rt          j        | ¦  «        S | S )Nrv  )rq  rr  rh  ri  rs  s    r+   ÚxfailIfPy312rz  õ  s&   € Ý
Ô˜7Ò"Ð"ÝÔ'¨Ñ+Ô+Ð+Ø€Ir-   c                 ó`   — t           j        dk    r t          j        d¦  «        | ¦  «        S | S )Nrv  zNot supported in Python 3.12+rp  rs  s    r+   ÚskipIfPy312r|  û  s0   € Ý
Ô˜7Ò"Ð"Ø=�xŒ}Ð<Ñ=Ô=¸bÑAÔAÐAØ€Ir-   c                 ó`   — t           j        dk    r| S  t          j        d¦  «        | ¦  «        S )N)r    r  zRequires Python 3.10+rp  rs  s    r+   ÚrequiresPy310r~    s0   € Ý
Ô˜7Ò"Ð"Øˆ	à5�xŒ}Ð4Ñ5Ô5°bÑ9Ô9Ð9r-   c                 ó   — d| _         | S ©NT)Ú_expected_failure_dynamicrs  s    r+   ÚexpectedFailureDynamicr‚  
  s   € Ø#'€BÔ Ø€Ir-   c                 ó   — d| _         | S r€  )Ú!_expected_failure_codegen_dynamicrs  s    r+   ÚexpectedFailureCodegenDynamicr…    ó   € Ø+/€BÔ(Ø€Ir-   c                 ó   — d| _         | S r€  )Ú!_expected_failure_dynamic_wrapperrs  s    r+   ÚexpectedFailureDynamicWrapperr‰    r†  r-   FÚuse_xlac                 ó&  — t          j        d¦  «         t          j        d¦  «         t          rt          j                             d¦  «         | r@dd lmc m} |                     dt          | 
                    ¦   «         ¦  «        ¦  «         d S d S )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•    s˜   € Ý	Ô�dÑÔÐÝ
„K�ÑÔÐÝ	ð Ý
Œ	�Š�tÑÔÐØð 5Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à
×Ò˜�s 2§=¢=¡?¤?Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4ð5ð 5r-   Úfr=   r>   c                 ó   —  | |i |¤ŽS r%   rr   )r–  r=   r>   s      r+   Ú&_skipped_function_for_test_reconstructr˜  &  s   € ð ˆ1ˆdÐ�fÐÐÐr-   )r0   )NNr   )Tr-  )F)sÚ__doc__rM  r—   rU  ÚloggingÚos.pathrˆ   r�  r2   rq  Útypesrh  Ú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   rs   rZ   r„   Úfloatr�   ÚCodeTyper›   rm   r¨   r¿   r×   rà   rå   rñ   r  r  r  r  r*  rÕ   r,  r4  Úfloat32r8  r9  rF  rG  rI  rW  ro   rm  rt  rx  rz  r|  r~  r‚  r…  r‰  r•  r=   r>   r˜  rr   r-   r+   ú<module>r³     sI
  ððð ð ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ Ð Ð Ð Ð Ð ð "&€€HˆUÔÔÐ %Ð %Ñ %ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð Ô$€Ø	€à€gÔ˜Ñ!Ô!€à€Yˆt�_„_€ð>�˜œÔ&ð >¨8°E´LÔ+Að >ð >ð >ð >ð.¨ð .°ð .ð .ð .ð .ð$ð $ð $ð"%ØŒ8Œ?ð%Ø(+ð%Ø36ð%ØHKð%à	ˆ#„Yð%ð %ð %ð %ðP	E˜3ð 	E 4ð 	Eð 	Eð 	Eð 	Eð 
Ø A˜uœ|Ð A°´Ð AÐ AÐ Añ 
„Ø Að 
ðØ	ˆt�CŒy˜%  S œ/¨4°°S°¬>Ð9Ô	:ðà
ðð ð ñ 
„ðð
E˜sð E u¨U¬\¸5Ð-@Ô'Að Eð Eð Eð Eð,�3ð ð ð ð ð
ð 
�Sð 
 ¤ð 
°sð 
ÀDð 
ð 
ð 
ð 
ð QRð%
ð %
ð %
Øð%
Ø(+ð%
Ø47ð%
Ø<?ð%
ØJMð%
àð%
ð %
ð %
ð %
ðPð ð ð ð ñ ô ð ð&ð ð ð ð ñ ô ð ð6ð ð ð ð ñ ô ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð>Að Að Að Að Añ Aô Að Að(.˜ð . ð .ð .ð .ð .ðC ð C¨ð Cð Cð Cð Cð8˜ð 8 ð 8ð 8ð 8ð 8ð ð ¨ð ð ð ð ð #'Ø*.Ø !ð8ð 8Ø
ð8à��c�Ôð8ð ð8ð ˜3”-ð	8ð
 # 3œ-ð8ð ð8ð 
ð8ð 8ð 8ð 8ðBØ
ŒðØ(,¨U¬\Ô(:ðàˆc�3ˆhÔðð ð ð ð Ø!ð	
,ð 
,Øð
,àð
,ð ð
,ð ð	
,ð
 	ð
,ð 
,ð 
,ð 
,ð  œØ',Øð2ð 2Ø
�3Œ-ð2à�SŒMð2ð Œ;ð2ð �#�u”|Ð#Ô$ð	2ð
 ð2ð „\ð2ð 2ð 2ð 2ð8 €WˆT�]„]€ð/ Tð /ð /ð /ð /ð
	˜h r¨2 vÔ.ð 	¸#ð 	À(È2ÈrÈ6ÔBRð 	ð 	ð 	ð 	ð" !%ØDOÀKðð ð Ø	ðàðð ðð ð	ð
 ˜”ðð ˜ # s (Ô+Ð,¨h°s¸C°xÔ.@Ð@ÔAðð 
ðð ð ð ð>�x  B Ô'ð ¨H°R¸°VÔ,<ð ð ð ð ð6�x  B Ô'ð 6¨H°R¸°VÔ,<ð 6ð 6ð 6ð 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ð 5˜Tð 5¨dð 5ð 5ð 5ð 5ðØ��B�ÔðØ "¤ðØ35´9ðàðð ð ð ð ð s   Â)B. Â.B8Â7B8