Ë
    g^(hE?  ã                   ó(  — 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$„ZLdgd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«      ZTd%e?de?fd7„ZUd%e?de?fd8„ZVd9e?de?fd:„ZWd%e?de?fd;„ZX	 	 	 dhd<ed=ed!ef   d>eOd?eeO   d@eeO   dAeOddfdB„ZYdCej´                  deDejz                     ded!ef   fdD„Z[	 	 didEeKdFeKdGeFdHeKde?f
dI„Z\ejº                  dJdfdKeeO   dLeeO   dMej¼                  dNee?ej¾                  f   dOeOdejz                  fdP„Z` edQ«      ZadeFfdR„Zbd=ee<eaf   dSedee<eaf   fdT„ZcddU„ dVœdWeddXe?dYe?dSedZee?   d[eed!ef   ged!ef   f   dedfd\„Zed=ed!ef   ded!ef   fd]„Zfd=ed!ef   ded!ef   fd^„Zgd=ed!ef   ded!ef   fd_„Zhd=ed!ef   ded!ef   fd`„Zid=ed!ef   ded!ef   fda„Zjd=ed!ef   ded!ef   fdb„Zkd=ed!ef   ded!ef   fdc„Zld=ed!ef   ded!ef   fdd„ZmdjdeeFddfdf„Zny# e6$ r dZ2Y �Œáw xY w)ka1  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    úS/var/www/skyplay_api_hub/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 ¬
«
      }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)Ú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                 ó0   — t        j                  dd| «      S )Nz(?m)^ *#.*\n?r0   r1   )r‘   s    r+   Ústrip_commentrñ   ;  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ö   ?  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ù   C  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ü   I  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  Q  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  r  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  x  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  r   )r  )r  r  r   )
r   ÚzipÚis_floating_pointÚitemsizerD   r  Úfloat16ÚtoÚzerosÚ
as_strided)r  r  r  r   r!  Ú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_capturer0  ¤  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   Úobject)r=   r>   ÚstackÚmoduleÚattrÚvalrG   r1  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   r1  r<  s   `` r+   Ú_make_fn_with_patchesr?  ©  sB   ù€ Ü‡_�_�RÓð'”2—7‘7ð '¤b§i¡ið '´Bõ 'ó ð'ð €Jr-   c                 ó   — | S r%   rs   r*   s    r+   ú<lambda>rA  »  s   € Èa€ r-   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixrB  rC  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Úsetattrr?  ÚhasattrÚunittestÚexpectedFailure)rD  rE  rF  rB  rC  r1  ÚDummyTestClassr.   rG   Únew_nameÚnew_fns              r+   Úmake_test_cls_with_patchesrU  µ  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_inforP  r�   ©rG   s    r+   ÚskipIfNotPy311r\  Ô  s$   € Ü
×Ñ˜7Ò"Øˆ	Ü�=‰=˜ÓÐr-   c                 ób   — t         j                  dk\  r| S  t        j                  d«      | «      S )N©r    é   zRequires Python 3.12+rX  r[  s    r+   ÚskipIfNotPy312r`  Ú  s,   € Ü
×Ñ˜7Ò"Øˆ	Ø1Œ8�=‰=Ð0Ó1°"Ó5Ð5r-   c                 óV   — t         j                  dk\  rt        j                  | «      S | S )Nr^  )rY  rZ  rP  rQ  r[  s    r+   ÚxfailIfPy312rb  à  s&   € Ü
×Ñ˜7Ò"Ü×'Ñ'¨Ó+Ð+Ø€Ir-   c                 ób   — t         j                  dk\  r t        j                  d«      | «      S | S )Nr^  zNot supported in Python 3.12+rX  r[  s    r+   ÚskipIfPy312rd  æ  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+rX  r[  s    r+   ÚrequiresPy310rf  ì  s,   € Ü
×Ñ˜7Ò"Øˆ	à5Œx�}‰}Ð4Ó5°bÓ9Ð9r-   c                 ó   — d| _         | S ©NT)Ú_expected_failure_dynamicr[  s    r+   ÚexpectedFailureDynamicrj  õ  s   € Ø#'€BÔ Ø€Ir-   c                 ó   — d| _         | S rh  )Ú!_expected_failure_codegen_dynamicr[  s    r+   ÚexpectedFailureCodegenDynamicrm  û  ó   € Ø+/€BÔ(Ø€Ir-   c                 ó   — d| _         | S rh  )Ú!_expected_failure_dynamic_wrapperr[  s    r+   ÚexpectedFailureDynamicWrapperrq    rn  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)rr  Úxms     r+   Úreset_rng_stater}    sX   € Ü	×Ñ�dÔÜ
‡K�K�ÔÝ	Ü
�	‰	�‰�tÔÙß-Ð-à
×Ñ˜œs 2§=¡=£?Ó3Õ4ð r-   )r0   )NNr   )Tgš™™™™™¹?)F)oÚ__doc__r4  r˜   r=  ÚloggingÚos.pathr‰   ru  r2   rY  ÚtypesrP  Ú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  Úfloat32r  r   r-  r.  r0  r?  rp   rU  r\  r`  rb  rd  rf  rj  rm  rq  r}  rs   r-   r+   ú<module>r˜     sò  ðòó Û 
Û Û Û Û Û 	Û 
Û Û Ý $ß 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ð$
àó$
÷Nñ ÷&ñ ÷6ñ ÷
ñ 
ð>.˜ð . ó .ð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  S Ñ)ð ¨h°s¸C°xÑ.@ó ð6�x  S Ñ)ð 6¨h°s¸C°xÑ.@ó 6ð�X˜c 3˜hÑ'ð ¨H°S¸#°XÑ,>ó ð�H˜S #˜XÑ&ð ¨8°C¸°HÑ+=ó ð:�h˜s C˜xÑ(ð :¨X°c¸3°hÑ-?ó :ð˜x¨¨S¨Ñ1ð °h¸sÀC¸xÑ6Hó ð h¨s°C¨xÑ&8ð ¸XÀcÈ3ÀhÑ=Oó ð h¨s°C¨xÑ&8ð ¸XÀcÈ3ÀhÑ=Oó ñ
5˜Tð 5¨dô 5øðg ò Ø	ƒBðús   Â+N ÎNÎN