ó
    Eñi»J  ã                   óX  • % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKJrJrJr  SSKJrJrJrJrJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr  SS	KJr  S
SK J!r!J"r"J#r#J$r$  S
SK%J&r&J'r'J(r(J)r)  S
SK*J+r+J,r,J-r-  S
SK
J.r.J/r/J0r0  S
SK1J2r2J3r3  Sr4\\
Rj                     \6S'    SSK7r4\"Rr                  r9Sr:\Rv                  " \<5      r=\" S5      r>S\\R~                     S\\R~                     4S jr@S\AS\A4S jrBS rCS rDS\RŠ                  RŒ                  S\S\S\S\G\   4
S jrHS\S\I4S  jrJ\S\R~                  S\R~                  4S! j5       rK\S\\G\   \L\S"4   \M\\4   4   S\N4S# j5       rKS\S\\R~                  \N4   4S$ jrKS\A4S% jrOSpS\AS&\
R                   S'\ASS4S( jjrQSS).S*\/S+\RS,\S-\S.\RS\.4S/ jjrS " S0 S15      rT " S2 S35      rU " S4 S55      rV " S6 S75      rW " S8 S95      rXS&\AS\A4S: jrYS&\AS\A4S; jrZS&\AS\A4S< jr[S=\AS\A4S> jr\S&\AS\A4S? jr]   SqS@\SA\S"\4   SB\RSC\\R   SD\\R   SE\RSS4SF jjr^SG\R¾                  S\G\R~                     S\S"\4   4SH jr`  SrSI\NSJ\NSK\ISL\NS\A4
SM jjra\RÄ                  SNS4SO\\R   SP\\R   SQ\RÆ                  SR\\A\RÈ                  4   SS\RS\R~                  4ST jjre\" SU5      rfS\I4SV jrgSA\\>\f4   SW\S\\>\f4   4SX jrhSSY SZ.S[\iS\\AS]\ASW\S^\\A   S_\\S"\4   /\S"\4   4   S\i4S` jjrjSA\\>\f4   S\\>\f4   4Sa jrkSA\\>\f4   S\\>\f4   4Sb jrlSA\\>\f4   S\\>\f4   4Sc jrmSA\\>\f4   S\\>\f4   4Sd jrnSA\\>\f4   S\\>\f4   4Se jroSA\\>\f4   S\\>\f4   4Sf jrpSA\\>\f4   S\\>\f4   4Sg jrqSA\\>\f4   S\\>\f4   4Sh jrrSsSi\ISS4Sj jjrsSk\\>\f4   Sl\>Rè                  Sm\>Rê                  S\f4Sn jrvSqw\Rð                  S\\G\R6                  R¾                        4So j5       ryg! \8 a    Sr4 GNuf = f)ta1  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)ÚCallableÚ	GeneratorÚSequence)ÚAnyÚ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)ÚCompileCounterIntÚsameÚnpé   Ú_PÚxÚreturnc                 óx   • U c  g U R                  5       R                  5       R                  U R                  5      $ ©N)ÚdetachÚcloneÚrequires_grad_Úrequires_grad©r$   s    ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/testing.pyÚclone_mer.   ?   s.   € Ø�yØØ�8‰8‹:×ÑÓ×,Ñ,¨Q¯_©_Ó=Ð=ó    Únamec                 ó2   • [         R                  " SSU 5      $ )Nz^_orig_mod[.]Ú ©ÚreÚsub)r0   s    r-   Úremove_optimized_module_prefixr6   E   ó   € Ü�6Š6Ð" B¨Ó-Ð-r/   c                 óŠ   ^^^• SSK Jm  S mS mUUU4S jn[        R                  " USS9" U 5      " U0 UD6  TR                  T4$ )Nr   )ÚInstructionTranslatorc                 óT   >• U mTR                  5       R                  R                  mU $ r'   )Ú
current_txÚoutputÚregion_tracker)Ú_gmÚargsÚkwargsr9   Úgmr=   s      €€€r-   Úextract_graph_backendÚ8extract_graph_and_tracker.<locals>.extract_graph_backendO   s)   ø€ ð ˆØ.×9Ñ9Ó;×BÑB×QÑQˆØˆ
r/   T)ÚbackendÚ	fullgraph)Útorch._dynamo.symbolic_convertr9   ÚtorchÚcompileÚgraph)Úfnr?   r@   rB   r9   rA   r=   s       @@@r-   Úextract_graph_and_trackerrK   I   sD   ú€ ÝDà	€BØ€N÷ô 
‡M‚MÐ/¸4Ò@ÀÔDÀdÐUÈfÒUØ�8‰8�^Ð#Ð#r/   c                 óœ   • [        5       n[        R                  " US9" U 5      " U0 UD6nXCR                  UR                  UR
                  4$ )N)rD   )ÚAotEagerAndRecordGraphsrG   rH   ÚgraphsÚ	fw_graphsÚ	bw_graphs)rJ   r?   r@   rD   Úresults        r-   Úextract_graphrR   Z   sD   € Ü%Ó'€GÜ�]Š] 7Ò+¨BÔ/°Ð@¸Ñ@€FØ—>‘> 7×#4Ñ#4°g×6GÑ6GÐGÐGr/   ÚmodelÚ
predictionÚlossÚexample_inputsc                 ó@  • / nUR                  U5        UR                  U5        0 n0 nU R                  5        Hk  u  px[        U [        R                  5      (       a  [        U5      nUn	UR                  n
UR                  c  [        R                  " U5      n
X¥US-   '   X–U'   Mm     UR                  U5        UR                  U5        0 nU R                  5        H3  u  p|[        U [        R                  5      (       a  [        U5      nXËU'   M5     UR                  U5        U Ht  n[        U[        [        45      (       a  UR                  S U 5       5        M8  [        U[        R                  5      (       d  MY  UR                  UR                  5        Mv     U$ )Nz.gradc              3   ó|   #   • U  H2  n[        U[        R                  5      (       d  M$  UR                  v •  M4     g 7fr'   )Ú
isinstancerG   ÚTensorÚgrad)Ú.0Úinps     r-   Ú	<genexpr>Ú"collect_results.<locals>.<genexpr>�   s#   é € ÐXªw¨¼*ÀSÌ%Ï,É,×:W›8˜3Ÿ8ž8ªwùs   ‚#<©<)ÚappendÚnamed_parametersrY   r   ÚOptimizedModuler6   r[   rG   Ú
zeros_likeÚnamed_buffersÚtupleÚlistÚextendrZ   )rS   rT   rU   rV   ÚresultsÚgradsÚparamsr0   ÚparamÚ
param_copyr[   ÚbuffersÚbufferÚexamples                 r-   Úcollect_resultsrp   `   sU  € ð €GØ‡N�N�:ÔØ‡N�N�4Ôð €EØ€FØ×-Ñ-Ö/‰ˆÜ�eœZ×7Ñ7×8Ñ8Ü1°$Ó7ˆDØˆ
Ø�z‰zˆà�:‰:ÑÜ×#Ò# EÓ*ˆDØ $ˆd�W‰nÑØ!ˆt‹ñ 0ð ‡N�N�5ÔØ‡N�N�6ÔØ€GØ×+Ñ+Ö-‰ˆÜ�eœZ×7Ñ7×8Ñ8Ü1°$Ó7ˆDØ�‹ñ .ð ‡N�N�7ÔÛ!ˆÜ�g¤¤t˜}×-Ñ-Ø�N‰NÑX©wÓXÖXä˜'¤5§<¡<×0Ó0Ø—‘˜wŸ|™|Ö,ñ "ð €Nr/   Úoutc                 ó  • [        U [        R                  5      (       a  U R                  $ [        U [        [
        45      (       a  [        S U  5       5      $ U c  g[        U [        5      (       a  g[        S[        U 5      5      e)Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   )Úrequires_bwd_pass©r\   r$   s     r-   r^   Ú$requires_bwd_pass.<locals>.<genexpr>Œ   s   é € Ð5²¨AÔ$ Q×'Ð'²ùó   ‚FúDon't know how to reduce)
rY   rG   rZ   r+   rf   re   ÚanyÚintÚNotImplementedErrorÚtype©rq   s    r-   rt   rt   ˆ   sk   € Ü�#”u—|‘|×$Ñ$Ø× Ñ Ð Ü	�Cœ$¤˜×	'Ñ	'ÜÑ5±Ó5Ó5Ð5Ø	‰ØÜ	�Cœ×	Ñ	ØÜ
Ð8¼$¸s»)Ó
DÐDr/   c                 ó   • g r'   © r}   s    r-   Úreduce_to_scalar_lossr€   ”   s   € Ø>Ar/   .c                 ó   • g r'   r   r}   s    r-   r€   r€   ˜   s   € ð r/   c                 ó~  • [        U [        R                  5      (       a!  U R                  5       U R	                  5       -  $ [        U [
        [        45      (       a  [        S U  5       5      [        U 5      -  $ [        U 5      R                  S;   a  [        U R                  5      $ [        U 5      R                  S:X  a  U R                  R                  5       $ [        U [        5      (       a:  [        S U R                  5        5       5      [        U R                  5       5      -  $ [!        S[        U 5      5      e)z/Reduce the output of a model to get scalar lossc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   ©r€   ru   s     r-   r^   Ú(reduce_to_scalar_loss.<locals>.<genexpr>¤   s   é € Ð9²S°Ô(¨×+Ð+²Sùrw   )ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚSquashedNormalc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   r„   )r\   Úvalues     r-   r^   r…   ®   s   é € ÐJº\°EÔ(¨×/Ð/º\ùrw   rx   )rY   rG   rZ   ÚsumÚnumelrf   re   Úlenr|   Ú__name__r€   ÚlogitsÚmeanÚdictÚvaluesÚkeysr{   r}   s    r-   r€   r€   ž   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                  óü   • [         R                  R                  [         R                  R                  [        5      S5      n [         R                  R                  U 5      (       d  [         R                  " U 5        U $ )Nz../debug)ÚosÚpathÚjoinÚdirnameÚ__file__ÚexistsÚmkdir)r—   s    r-   Ú	debug_dirr�   ´   sF   € Ü�7‰7�<‰<œŸ™Ÿ™¬Ó1°:Ó>€DÜ�7‰7�>‰>˜$×ÑÜ
�Š�ŒØ€Kr/   ÚcodeÚextrac           	      óX  • [        [        R                  R                  [	        5       U 5      S5       nUR                  [        R                  " U5      R                  5        S[        R                  " U5      R                  5        SU S35        S S S 5        g ! , (       d  f       g = f)NÚwz

Ú
)	Úopenr–   r—   r˜   r�   ÚwriteÚdisÚBytecodeÚinfo)r0   rž   rŸ   Úfds       r-   Ú
debug_dumpr©   »   st   € Ü	Œb�g‰g�l‰lœ9›;¨Ó-¨sÔ	3°rØ
�‰Ü�|Š|˜DÓ!×&Ñ&Ó(Ð)¨¬c¯lªl¸4Ó.@×.DÑ.DÓ.FÐ-GÀtÈEÈ7ÐRTÐUô	
÷ 
4×	3Ö	3ús   ³ABÂ
B))ÚskipÚframeÚ
cache_sizeÚhooksÚ_rª   c                óö  • S[         [           S[        SS4S jn[        R                  R                  R                  5       n[        R                  R                  R                  S5         U   [        U R                  5      (       a  [        5       sSSS5        sSSS5        $ [        U R                  5        [        U R                  U5      u  ps[        0 SSS/ SS	0[        5       [        5       U R                  / SS
9n[        [!        U[#        U R                  U5      R$                  ['        S	S	S95      5      sSSS5        sSSS5        $ ! , (       d  f       O= fSSS5        g! , (       d  f       g= f)zused to debug jump updatesÚinstructionsÚcode_optionsr%   Nc                 óp   • U R                  S[        S5      5        U R                  S[        S5      5        g )Nr   ÚNOP)Úinsertr   )r°   r±   s     r-   Úinsert_nopsÚ&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)rf   r   rG   Ú_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ž   rI   s	            r-   r·   r·   Â   s!  € ð
:¤$¤s¡)ð :¼3ð :À4ô :ô —m‘m×)Ñ)×=Ñ=Ó?€OÜ	�‰×	Ñ	×	)Ñ	)Ð*=Õ	>ÂÜ˜Ÿ™×%Ñ%Ü%Ó'÷ APÀ×	>Ñ	>ô 	�U—\‘\Ô"Ü'¨¯©°kÓB‰ˆÜØØØØØ!Ø ˜
ä›Ü ›Ø—<‘<Ø&(Øñ
ˆô !ÜØÜ$ U§\¡\°5Ó9×GÑGÜ 1°qÑ9óó
÷+ APÀ×	>Ñ	>ÇÅú×	>×	>Ö	>ús1   Á,E*Á/$EÂ	E*Â&BEÄ=	E*Å
E	ÅE*Å*
E8c                   óŠ   • \ rS rSrSS jrS\R                  R                  S\\R                     S\
S\4   4S jrSS	 jrS
rg)ÚCompileCounteréê   r%   Nc                 ó2   • SU l         U R                  5         g ©Nr   )Úframe_countÚclear©Úselfs    r-   Ú__init__ÚCompileCounter.__init__ë   s   € Ø:;ˆÔØ�
‰
�r/   rA   rV   .c                 óÌ   • U =R                   S-  sl         UR                  R                   H*  nSUR                  ;   d  M  U =R                  S-  sl        M,     UR
                  $ )Nr   Úcall)rÒ   rI   ÚnodesÚopÚop_countÚforward)rÕ   rA   rV   Únodes       r-   Ú__call__ÚCompileCounter.__call__ï   sM   € ð 	×Ò˜AÑÕØ—H‘H—N”NˆDØ˜Ÿ™Õ Ø—’ Ñ"—ñ #ð �z‰zÐr/   c                 ól   • [         R                  (       a  [        S5      U l        OSU l        SU l        g rÑ   )r   Údebug_disable_compile_counterr   rÒ   rÜ   rÔ   s    r-   rÓ   ÚCompileCounter.clearø   s'   € Ü×/×/Ü0°Ó3ˆDÕà ˆDÔØˆ�r/   )rÒ   rÜ   ©r%   N)r�   Ú
__module__Ú__qualname__Ú__firstlineno__rÖ   rG   r   ÚGraphModulerf   rZ   r   r   rß   rÓ   Ú__static_attributes__r   r/   r-   rÎ   rÎ   ê   sE   † ôðØ—(‘(×&Ñ&ðØ8<¸U¿\¹\Ñ8Jðà	�#�s�(Ñ	ô÷r/   rÎ   c                   ó’   • \ rS rSrS\SS4S jrS\R                  R                  S\	\R                     S\S\4   4S	 jrSS
 jrSrg)ÚCompileCounterWithBackendé   rD   r%   Nc                 óL   • SU l         Xl        / U l        U R                  5         g rÑ   )rÒ   rD   rN   rÓ   )rÕ   rD   s     r-   rÖ   Ú"CompileCounterWithBackend.__init__  s   € Ø:;ˆÔØŒØ24ˆŒØ�
‰
�r/   rA   rV   .c                 ó&  • SSK Jn  U =R                  S-  sl        UR                  R                   H*  nSUR
                  ;   d  M  U =R                  S-  sl        M,     U R                  R                  U5        U" U R                  5      " X5      $ )Nr   )Úlookup_backendrÙ   )
Úbackends.registryrð   rÒ   rI   rÚ   rÛ   rÜ   rN   r`   rD   )rÕ   rA   rV   rð   rÞ   s        r-   rß   Ú"CompileCounterWithBackend.__call__  sl   € õ 	6à×Ò˜AÑÕØ—H‘H—N”NˆDØ˜Ÿ™Õ Ø—’ Ñ"—ñ #ð 	�‰×Ñ˜2ÔÙ˜dŸl™lÔ+¨BÓ?Ð?r/   c                 óz   • [         R                  (       a  [        S5      U l        OSU l        SU l        / U l        g rÑ   )r   râ   r   rÒ   rÜ   rN   rÔ   s    r-   rÓ   ÚCompileCounterWithBackend.clear  s.   € Ü×/×/Ü0°Ó3ˆDÕà ˆDÔØˆŒØˆ�r/   )rD   rÒ   rN   rÜ   rä   )r�   rå   ræ   rç   ÚstrrÖ   rG   r   rè   rf   rZ   r   r   rß   rÓ   ré   r   r/   r-   rë   rë      sW   † ð ð ¨ô ð
@Ø—(‘(×&Ñ&ð
@Ø8<¸U¿\¹\Ñ8Jð
@à	�#�s�(Ñ	ô
@÷r/   rë   c                   ó€   • \ rS rSrS
S jrS\R                  R                  S\\R                     S\
S\4   4S jrS	rg)ÚEagerAndRecordGraphsi  r%   Nc                 ó   • / U l         g r'   ©rN   rÔ   s    r-   rÖ   ÚEagerAndRecordGraphs.__init__  s	   € Ø24ˆ�r/   rA   rV   .c                 óP   • U R                   R                  U5        UR                  $ r'   )rN   r`   rÝ   )rÕ   rA   rV   s      r-   rß   ÚEagerAndRecordGraphs.__call__"  s    € ð 	�‰×Ñ˜2ÔØ�z‰zÐr/   rù   rä   ©r�   rå   ræ   rç   rÖ   rG   r   rè   rf   rZ   r   r   rß   ré   r   r/   r-   r÷   r÷     s@   † ô5ðØ—(‘(×&Ñ&ðØ8<¸U¿\¹\Ñ8Jðà	�#�s�(Ñ	÷r/   r÷   c                   ó€   • \ rS rSrS
S jrS\R                  R                  S\\R                     S\
S\4   4S jrS	rg)rM   i)  r%   Nc                 ó.   • / U l         / U l        / U l        g r'   )rN   rO   rP   rÔ   s    r-   rÖ   Ú AotEagerAndRecordGraphs.__init__*  s   € Ø24ˆŒØ57ˆŒØ57ˆ�r/   rA   rV   .c                 ór  ^ • T R                   R                  U5        S[        R                  R                  S[
        [        R                     S[        S[        4   4U 4S jjnS[        R                  R                  S[
        [        R                     S[        S[        4   4U 4S jjn[        UUUUS9$ )NrA   rV   r%   .c                 óR   >• TR                   R                  U 5        U R                  $ r'   )rO   r`   rÝ   ©rA   rV   rÕ   s     €r-   Úfw_compilerÚ5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler4  ó!   ø€ ð �N‰N×!Ñ! "Ô%Ø—:‘:Ðr/   c                 óR   >• TR                   R                  U 5        U R                  $ r'   )rP   r`   rÝ   r  s     €r-   Úbw_compilerÚ5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler:  r  r/   )r  r  )
rN   r`   rG   r   rè   rf   rZ   r   r   r   )rÕ   rA   rV   r  r  s   `    r-   rß   Ú AotEagerAndRecordGraphs.__call__/  s¤   ø€ ð 	�‰×Ñ˜2Ôð	Ü—‘×$Ñ$ð	Ü6:¼5¿<¹<Ñ6Hð	ä�cœ3�hÑ÷	ð	Ü—‘×$Ñ$ð	Ü6:¼5¿<¹<Ñ6Hð	ä�cœ3�hÑ÷	ô ØØØ#Ø#ñ	
ð 	
r/   )rP   rO   rN   rä   rý   r   r/   r-   rM   rM   )  s@   † ô8ð

Ø—(‘(×&Ñ&ð
Ø8<¸U¿\¹\Ñ8Jð
à	�#�s�(Ñ	÷
r/   rM   c                   ó$   • \ rS rSrSS jrS rSrg)ÚInductorAndRecordGraphsiH  Nc                 ó    • / U l         / U l        g r'   ©rN   Úinductor_graphsrÔ   s    r-   rÖ   Ú InductorAndRecordGraphs.__init__I  s   € Ø24ˆŒØ;=ˆÕr/   c                 óø   ^ ^• SS K Js  Jn  T R                  R	                  U5        UR
                  mUU 4S jn[        R                  " USUS9   UR                  X5      sS S S 5        $ ! , (       d  f       g = f)Nr   c                  óP   >• TR                   R                  U S   5        T" U 0 UD6$ rÑ   )r  r`   )r?   r@   Úold_compile_fx_innerrÕ   s     €€r-   ÚpatchedÚ1InductorAndRecordGraphs.__call__.<locals>.patchedT  s+   ø€ Ø× Ñ ×'Ñ'¨¨Q©Ô0Ù'¨Ð8°Ñ8Ð8r/   Ú_compile_fx_inner)Únew)Útorch._inductor.compile_fxÚ	_inductorÚ
compile_fxrN   r`   r  r   Úobject)rÕ   rA   rV   Úcompile_fx_modr  r  s   `    @r-   rß   Ú InductorAndRecordGraphs.__call__M  sZ   ù€ ß;Ð;à�‰×Ñ˜2Ôà-×?Ñ?Ðö	9ô �\Š\˜.Ð*=À7ÓKØ!×,Ñ,¨RÓ@÷ L×K×Kús   ÁA+Á+
A9r  rä   )r�   rå   ræ   rç   rÖ   rß   ré   r   r/   r-   r  r  H  s   † ô>õAr/   r  c                 ó2   • [         R                  " SSU 5      $ )Nz(?m)^ *#.*\n?r2   r3   )rž   s    r-   Ústrip_commentr  \  r7   r/   c                 óˆ   • SR                  U R                  S5       Vs/ s H  oR                  5       PM     sn5      $ s  snf )Nr¢   )r˜   ÚsplitÚrstrip)rž   Úlines     r-   Úremove_trailing_spacer$  `  s2   € Ø�9‰9°·
±
¸4Ô0@ÓAÒ0@¨—k‘k–mÑ0@ÑAÓBÐBùÒAs   Ÿ?c                 óÆ   • U R                  S5      n/ nSnU H6  nUR                  5       S:X  a  U(       a  M   SnOSnUR                  U5        M8     SR                  U5      $ )Nr¢   Fr2   T)r!  Ústripr`   r˜   )rž   ÚlinesrQ   Ú	saw_blankr#  s        r-   Ú_squash_blank_linesr)  d  s_   € Ø�J‰J�tÓ€EØ€FØ€IÛˆØ�:‰:‹<˜2ÓÞÙØ‰IàˆIØ�‰�dÖñ ð �9‰9�VÓÐr/   Úgm_strc                 óD   • [        U 5      n[        U5      n[        U5      $ r'   )r  r$  r)  )r*  ÚstrippedÚno_trailings      r-   Únormalize_gmr.  s  s#   € ô ˜VÓ$€HÜ'¨Ó1€KÜ˜{Ó+Ð+r/   c                 ó6   • [         R                  " SSU 5      nU$ )z%
Normalize code: remove empty lines.
z[\r\n]+r¢   r3   )rž   Únormal_codes     r-   Úempty_line_normalizerr1  {  s   € ô —&’&˜ T¨4Ó0€KØÐr/   rÕ   rJ   ÚnargsÚexpected_opsÚexpected_ops_dynamicÚexpected_frame_countc                 óð  • [         R                  (       d  Ub  Un[        5       n[        U5       Vs/ s H  n[        R
                  " SS5      PM     nn[        U5       Vs/ s H  n[        R
                  " SS5      PM     n	nU" U6 n
U" U	6 n[        5         [        U5      " U5      nU" U6 nU" U	6 nU" U6 nU" U	6 n[        5         U R                  [        XÚ5      5        U R                  [        Xú5      5        U R                  [        Xë5      5        U R                  [        UU5      5        U R                  UR                  U5        Ub  U R                  UR                  U5        g g s  snf s  snf )Né
   )r   Úassume_static_by_defaultrÎ   ÚrangerG   Úrandnr   r   Ú
assertTruer    ÚassertEqualrÒ   rÜ   )rÕ   rJ   r2  r3  r4  r5  Úactualr®   Úargs1Úargs2Úcorrect1Úcorrect2Úopt_fnÚval1aÚval2aÚval1bÚval2bs                    r-   Ústandard_testrG  ƒ  s9  € ô ×*×*Ð/CÑ/OØ+ˆäÓ€Fä*/°¬,Ó7ª, QŒU�[Š[˜˜RÖ ©,€EÐ7Ü*/°¬,Ó7ª, QŒU�[Š[˜˜RÖ ©,€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.Á"!E3rA   c                 ó   • U R                   $ r'   )rÝ   )rA   rV   s     r-   Údummy_fx_compilerI  ¤  s   € ð �:‰:Ðr/   ÚspeedupÚpvalueÚ
is_correctÚpvalue_thresholdc                 ó:   • U(       d  gX:”  a  U S S3$ U S SUS 3$ )NÚERRORz.3fzx SAMEzx p=z.2fr   )rJ  rK  rL  rM  s       r-   Úformat_speeduprP  ª  s4   € ö ØØÓ Ø˜#�˜fÐ%Ð%Ø�cˆ]˜$˜v c˜lÐ+Ð+r/   ÚcpuÚsizeÚstrideÚdtypeÚdeviceÚ
extra_sizec                 ó¤  • Un[        S U  5       5      (       a!  U[        S [        X5       5       5      S-   -  nUR                  (       aY  UR                  S:X  a3   [
        R                  " U[
        R                  US9R                  US9nO,[
        R                  " XRUS9nO[
        R                  " U/X#S9n[
        R                  " X`U5      $ )Nc              3   ó*   #   • U  H	  oS :„  v •  M     g7f)r   Nr   )r\   Úss     r-   r^   Úrand_strided.<locals>.<genexpr>¿  s   é € Ð
š$�QˆqŽ5š$ùs   ‚c              3   ó6   #   • U  H  u  pUS -
  U-  v •  M     g7f)r   Nr   )r\   ÚshaperS  s      r-   r^   rZ  Â  s   é € ÐLÒ:K©¨�˜‘˜fÖ$Ò:Kùs   ‚r   )rT  rU  )rT  )rR  rT  rU  )ÚallrŒ   ÚzipÚis_floating_pointÚitemsizerG   r:  Úfloat16ÚtoÚzerosÚ
as_strided)rR  rS  rT  rU  rV  Úneeded_sizern   s          r-   Úrand_stridedrf  ·  s»   € ð €KÜ
Ñ
™$Ó
×ÑàÜÑL¼#¸dÔ:KÓLÓLÈqÑPñ	
ˆð ××Ø�>‰>˜QÓðô —[’[ ´E·M±MÈ&ÑQ×TÑTØð Uð ‰Fô —[’[ À&ÑI‰Fä—’ ; -°uÑLˆÜ×Ò˜F¨&Ó1Ð1r/   Ú_Tc                  ó,   • [         R                  (       + $ r'   )r   r8  r   r/   r-   Úcheck_dynamic_shape_captureri  ×  s   € ä×.Ñ.Ô.Ð.r/   Úpatchesc                 óš   ^ ^• [         R                  " T 5      S[        R                  S[        R                  S[
        4U U4S jj5       nU$ )Nr?   r@   r%   c            	      óØ   >• [         R                  " 5        nT H,  u  p4nUR                  [        R                  " X4U5      5        M.     T" U 0 UD6sS S S 5        $ ! , (       d  f       g = fr'   )Ú
contextlibÚ	ExitStackÚenter_contextr   r  )r?   r@   ÚstackÚmoduleÚattrÚvalrJ   rj  s         €€r-   Ú_fnÚ"_make_fn_with_patches.<locals>._fnÝ  sT   ø€ ä×!Ò!Ô# uÛ%,Ñ!�˜cØ×#Ñ#¤E§L¢L°¸sÓ$CÖDñ &-ñ �tÐ&˜vÑ&÷	 $×#×#ús   —:AÁ
A))Ú	functoolsÚwrapsr#   r?   r@   rg  )rJ   rj  rt  s   `` r-   Ú_make_fn_with_patchesrx  Ü  sB   ù€ Ü‡_‚_�RÓð'”2—7‘7ð '¤b§i¡ið '´B÷ 'ó ð'ð €Jr/   c                 ó   • U $ r'   r   r,   s    r-   Ú<lambda>rz  î  s   € Éar/   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixr{  r|  c          	      ó  • [        U U R                   3U R                  0 5      nUR                  Ul        [	        U 5       HÇ  nUR                  S5      (       a‡  [        X5      n[        U5      (       d  [        Xg[        X5      5        MK  U U 3n	[        U/UQ76 n
Xšl        Ub&  [        Xƒ5      (       a  [        R                  " U
5      n
[        XiU" U
5      5        M   [        Xg5      (       a  M²  [        Xg[        X5      5        MÉ     U$ )NÚtest_)r|   r�   Ú	__bases__ræ   ÚdirÚ
startswithÚgetattrÚcallableÚsetattrrx  ÚhasattrÚunittestÚexpectedFailure)r}  r~  r  r{  r|  rj  ÚDummyTestClassr0   rJ   Únew_nameÚnew_fns              r-   Úmake_test_cls_with_patchesrŽ  è  sæ   € ô ˜Z˜L¨¯©¨Ð7¸¿¹ÈÓK€NØ"0×"9Ñ"9€NÔä�C–ˆØ�?‰?˜7×#Ñ#Ü˜Ó#ˆBÜ˜B—<‘<Ü˜¬g°cÓ.@ÔAÙØ˜ 	˜{Ð+ˆHÜ*¨2Ð8°Ò8ˆFØ&ŒOØÑ%¬'°"×*AÑ*AÜ!×1Ò1°&Ó9�Ü�N©i¸Ó.?Ö@ä˜×.Ó.Ü�N¬'°#Ó*<Ö=ñ ð  Ðr/   c                 óZ   • [         R                  S:¼  a  U $ [        R                  " U 5      $ )N)r"   é   ©ÚsysÚversion_infor‰  rª   ©rJ   s    r-   ÚskipIfNotPy311r•    s$   € Ü
×Ñ˜7Ó"Øˆ	ä�=Š=˜ÓÐr/   c                 óf   • [         R                  S:¼  a  U $ [        R                  " S5      " U 5      $ )N©r"   é   zRequires Python 3.12+r‘  r”  s    r-   ÚskipIfNotPy312r™    s*   € Ü
×Ñ˜7Ó"Øˆ	Ü�=Š=Ð0Ô1°"Ó5Ð5r/   c                 óŽ   • [         R                  S:¼  d  [         R                  S:  a  [        R                  " S5      " U 5      $ U $ )N)r"   é   r—  zRequires Python 3.12r‘  r”  s    r-   ÚskipIfOnlyNotPy312rœ    s7   € Ü
×Ñ˜7Ó"¤c×&6Ñ&6¸Ó&@Ü�}Š}Ð3Ô4°RÓ8Ð8Ø€Ir/   c                 óZ   • [         R                  S:¼  a  [        R                  " U 5      $ U $ )Nr—  )r’  r“  r‰  rŠ  r”  s    r-   ÚxfailIfPy312rž    s&   € Ü
×Ñ˜7Ó"Ü×'Ò'¨Ó+Ð+Ø€Ir/   c                 óf   • [         R                  S:¼  a  [        R                  " S5      " U 5      $ U $ )Nr—  zNot supported in Python 3.12+r‘  r”  s    r-   ÚskipIfPy312r      s*   € Ü
×Ñ˜7Ó"Ü�}Š}Ð<Ô=¸bÓAÐAØ€Ir/   c                 ó   • SU l         U $ ©NT)Ú_expected_failure_dynamicr”  s    r-   ÚexpectedFailureDynamicr¤  (  s   € Ø#'€BÔ Ø€Ir/   c                 ó   • SU l         U $ r¢  )Ú!_expected_failure_codegen_dynamicr”  s    r-   ÚexpectedFailureCodegenDynamicr§  .  ó   € Ø+/€BÔ(Ø€Ir/   c                 ó   • SU l         U $ r¢  )Ú!_expected_failure_dynamic_wrapperr”  s    r-   ÚexpectedFailureDynamicWrapperr«  4  r¨  r/   Úuse_xlac                 ó$  • [         R                  " S5        [        R                  " S5        [        (       a  [        R                  R                  S5        U (       a3  SS KJs  Jn  UR                  S[        UR                  5       5      5        g g )Ni9  r   )rG   Úmanual_seedÚrandomÚseedr!   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelÚset_rng_staterõ   Ú
xla_device)r¬  Úxms     r-   Úreset_rng_stater·  9  sZ   € Ü	×Ò�dÔÜ
‡K‚K�Ôß	‚rÜ
�	‰	�‰�tÔÞß-Ð-à
×Ñ˜œs 2§=¡=£?Ó3Õ4ð r/   Úfr?   r@   c                 ó   • U " U0 UD6$ r'   r   )r¸  r?   r@   s      r-   Ú&_skipped_function_for_test_reconstructrº  D  s   € ñ ˆdÐ�fÑÐr/   c               #   ó4   #   • / q  [         v •  Sq g! Sq f = f7f)a@  
Context manager to capture graph modules compiled by invoke_subgraph_inductor_compile.

Usage:
    with _testing_capture_invoke_subgraph_inductor_compile_gms() as captured_gms:
        # code that triggers invoke_subgraph_inductor_compile
        pass
    # captured_gms will contain the list of captured graph modules
N)Ú6_testing_invoke_subgraph_inductor_compile_captured_gmsr   r/   r-   Ú5_testing_capture_invoke_subgraph_inductor_compile_gmsr½  M  s&   é € ð >@Ð:ðFÜDÒDàAEÑ>øÀÑ>üs   ‚† Ž‘•)r2   )NNr   )Tgš™™™™™¹?)F)zÚ__doc__rm  r¥   rv  ÚloggingÚos.pathr–   r¯  r4   r’  Útypesr‰  Úcollections.abcr   r   r   Útypingr   r   r   r	   r
   Útyping_extensionsr   Úunittest.mockr   rG   r   Ú torch._dynamo.backends.debuggingr   Útorch._dynamo.output_graphr   r2   r   r   r   r   Úbytecode_transformationr   r   r   r   Úguardsr   r   r   r   r   r   rÆ   r   r    r!   Ú
ModuleTypeÚ__annotations__ÚnumpyÚModuleNotFoundErrorÚunsupportedÚthreeÚ	getLoggerr�   Úlogr#   rZ   r.   rõ   r6   rK   rR   ÚnnÚModulerf   rp   Úboolrt   r€   re   r’   Úfloatr�   ÚCodeTyper©   rz   r·   rÎ   rë   r÷   rM   r  r  r$  r)  r.  r1  rG  rè   rI  rP  Úfloat32rT  rU  rf  rg  ri  rx  r|   rŽ  r•  r™  rœ  rž  r   r¤  r§  r«  r·  r?   r@   rº  r¼  Úcontextmanagerr½  r   r/   r-   Ú<module>rÙ     s’  ðòó Û 
Û Û Û Û Û 	Û 
Û Û ß 9Ñ 9ß :Õ :Ý 'Ý ã Ý Ý 6Ý 2ç 8Ó 8÷ó ÷ AÑ @ß IÑ Iß *ð "&€€HˆU×ÑÑÓ %ðÛð
 ×$Ñ$€Ø	€à×Ò˜Ó!€áˆtƒ_€ð>�˜Ÿ™Ñ&ð >¨8°E·L±LÑ+Aô >ð.¨ð .°ô .ò$ò"Hð%Ø�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ñ ÷,ñ ÷<ñ ÷
ñ 
÷>Añ Að(.˜ð . ô .ðC ð C¨ô Cð˜cð  cô ð,˜ð , ô ,ð ð ¨ô ð #'Ø*.Ø !ñ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ñ: ˆ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ð˜8 B¨ FÑ+ð °¸¸R¸Ñ0@ô ð�X˜b "˜fÑ%ð ¨(°2°r°6Ñ*:ô ð�H˜R ˜VÑ$ð ¨°"°b°&Ñ)9ô ð˜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ðàôð :>Ð 6ð ×ÑðF¸yØˆ�‰×	Ñ	Ññ@ó Fó ñFøðw ó Ø	ƒBðús   Â/P ÐP)Ð(P)