+
    –°³jz$  ã                   ó  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHtHtHt ^RIHtHt ]P8                  ! ]4      tRR R	 llt ! R
 R]4      t ! R R]4      t R# )aŸ  Testing utilities for Dynamo, providing a specialized TestCase class and test running functionality.

This module extends PyTorch's testing framework with Dynamo-specific testing capabilities.
It includes:
- A custom TestCase class that handles Dynamo-specific setup/teardown
- Test running utilities with dependency checking
- Automatic reset of Dynamo state between tests
- Proper handling of gradient mode state
N)ÚCallable©ÚAny)Ú	polyfills)Ú	trace_log)Ú
IS_WINDOWSÚTEST_WITH_CROSSREFÚTEST_WITH_TORCHDYNAMOÚTestCase)ÚconfigÚutilsc                óX   € V ^8„  d   QhR\         \        \         R3,          ,          RR/# )é   Úneeds.ÚreturnN)ÚstrÚtuple)Úformats   "ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/test_case.pyÚ__annotate__r   '   s'   € ÷ ñ ”Sœ5¤ c �?Õ*ð °Dñ ó    c                 óú  € ^ RI Hp \        '       g   \        '       d   R# \        P
                  P                  4       '       g4   \        '       d(   \        P                  P                  RR4      R8X  d   R# \        V \        4      '       d   V 3p V  FJ  pVR8X  d*   \        P                  P                  4       '       g    R# K3   \        P                  ! V4       KL  	  V! 4        R#   \          d      R# i ; i)é    )Ú	run_testsNÚTORCHINDUCTOR_WINDOWS_TESTSÚ0Úcuda)Ú$torch.testing._internal.common_utilsr   r	   r   ÚtorchÚxpuÚis_availabler   ÚosÚenvironÚgetÚ
isinstancer   r   Ú	importlibÚimport_moduleÚImportError)r   r   Úneeds   &  r   r   r   '   s·   € Ý>çÓ× 2Ó 2Ùô �I‰I×"Ñ"×$Ò$ß‹JÜ�J‰J�N‰NÐ8¸#Ó>À#ÔEáä�%œ×ÒØ�ˆÛˆØ�6Œ>Ü—:‘:×*Ñ*×,Ò,Úñ -ðÜ×'Ò'¨Ö-ñ ñ †Køô ô Ûðús   ÃC*Ã*C:Ã9C:c                   óî   a a€ ] tR t^Ct o]V3R lV 3R ll4       t]V3R lV 3R ll4       tV3R lV 3R lltV3R lV 3R lltV3R	 lV 3R
 llt	V3R lV 3R llt
V3R lV 3R lltV3R ltRtVtV ;t# )r
   c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   Ú__classdict__s   "€r   r   ÚTestCase.__annotate__G   ó   ø€ ÷  ñ  ˜dñ  r   c                óX   <€ V P                   P                  4        \        SV `  4        R # ©N)Ú_exit_stackÚcloseÚsuperÚtearDownClass©ÚclsÚ	__class__s   &€r   r5   ÚTestCase.tearDownClassF   s   ø€ à�‰×ÑÔÜ‰ÑÖr   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r.   L   s   ø€ ÷ 

ñ 

˜4ñ 

r   c           	     ó¾   <€ \         SV `  4        \        P                  ! 4       V n        V P                  P                  \        P                  ! R RRR R7      4       R# )TF)Úraise_on_ctx_manager_usageÚsuppress_errorsÚlog_compilation_metricsÚ$canonicalize_output_graph_node_orderN)r4   Ú
setUpClassÚ
contextlibÚ	ExitStackr2   Úenter_contextr   Úpatchr6   s   &€r   r@   ÚTestCase.setUpClassK   sH   ø€ ä‰ÑÔÜ$×.Ò.Ó0ˆŒØ�‰×%Ñ%Ü�LŠLØ+/Ø %Ø(-Ø59ô	ö	
r   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r.   X   s   ø€ ÷ +ñ +�tñ +r   c                óH  <€ \         P                  ! 4       V n        \        P                  V n        R \        n        \        SV `  4        \        P                  P                  4        \        P                  ! 4       V n        \        P                  ! V P                  4       R# )TN)r   Úis_grad_enabledÚ_prior_is_grad_enabledr   Únested_graph_breaksÚ_prior_nested_graph_breaksr4   ÚsetUpr   ÚcountersÚclearÚloggingÚNullHandlerÚhandlerr   Ú
addHandler©Úselfr8   s   &€r   rL   ÚTestCase.setUpX   se   ø€ Ü&+×&;Ò&;Ó&=ˆÔ#Ü*0×*DÑ*DˆÔ'Ø%)ŒÔ"Ü‰‰ŒÜ�‰×ÑÔÜ×*Ò*Ó,ˆŒÜ×Ò˜TŸ\™\Ö*r   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r.   a   s   ø€ ÷ 
Eñ 
E˜$ñ 
Er   c                ó`  <€ \         P                  ! V P                  4       \        P                  P                  4        F)  w  r\        P                  R WP                  4       4       K+  	  \        P                  P                  4        \        P                  P                  P                  4        \        SV `=  4        V P                   \        P"                  ! 4       Jd6   \        P%                  R4       \        P&                  ! V P                   4       V P(                  \*        n        R# )z%s %szRunning test changed grad modeN)r   ÚremoveHandlerrQ   r   rM   ÚitemsÚlogÚdebugÚmost_commonrN   r   Ú_CÚ	_autogradÚ_saved_tensors_hooks_enabler4   ÚtearDownrI   rH   ÚwarningÚset_grad_enabledrK   r   rJ   )rT   ÚkÚvr8   s   &  €r   r`   ÚTestCase.tearDowna   s¹   ø€ Ü×Ò §¡Ô-Ü—N‘N×(Ñ(Ö*‰DˆAÜ�I‰I�g˜q§-¡-£/Ö2ñ +ä�‰×ÑÔÜ�‰×Ñ×6Ñ6Ô8Ü‰ÑÔØ×&Ñ&¬e×.CÒ.CÓ.EÓEÜ�K‰KÐ8Ô9Ü×"Ò" 4×#>Ñ#>Ô?Ø%)×%DÑ%DŒÖ"r   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r.   m   s   ø€ ÷ ñ ¨tñ r   c                ó`   <€ \         SV `  4        \        P                  P	                  4        R # r1   )r4   Úbefore_cuda_memory_leak_checkr   rM   rN   rS   s   &€r   rh   Ú&TestCase.before_cuda_memory_leak_checkm   s   ø€ Ü‰Ñ-Ô/Ü�‰×ÑÖr   c          
      ó6   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RR/# )r   ÚxÚyÚargsÚkwargsr   Nr   )r   r-   s   "€r   r   r.   q   s0   ø€ ÷ :ñ :™Sð :¡Sð :±ð :Áð :Èñ :r   c                ó®  <€ \         P                  '       d¬   \        V\        P                  4      '       g!   \        V\        P                  4      '       d   R # \
        P                  ! 4       ;p'       dM   VP                  ;p'       d9   \
        P                  ! V4      P                  ;p'       d   RV^ ,          9   d   R # \        SV `,  ! W.VO5/ VB # )NrM   )r   Údebug_disable_compile_counterr$   r   ÚCompileCounterIntÚinspectÚcurrentframeÚf_backÚgetframeinfoÚcode_contextr4   ÚassertEqual)	rT   rk   rl   rm   rn   Ú	cur_frameÚupper_frameÚ
upper_coder8   s	   &&&*,   €r   rw   ÚTestCase.assertEqualq   sª   ø€ Ü×/×/Ð/Ü˜!œU×4Ñ4×5Ò5¼Ø”5×*Ñ*÷:ò :ñ ô &×2Ò2Ó4Ð4�Ö4Ø$-×$4Ñ$4Ð4�[Ö4Ü#*×#7Ò#7¸Ó#D×#QÑ#QÐQ�ZÖQØ *¨Q¥-Ô/áÜ‰wÒ" 1Ð9¨$Ò9°&Ñ9Ð9r   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   rm   rn   r   Nr   )r   r-   s   "€r   r   r.   �   s"   ø€ ÷ =ñ =©#ð =¹ð =Àñ =r   c                óŒ   <€ \         P                  '       d   R # VP                  R^ 4      ^,           VR&   \        SV `  ! V/ VB # )NÚskip)r   rp   r#   r4   ÚassertExpectedInline)rT   rm   rn   r8   s   &*,€r   r   ÚTestCase.assertExpectedInline�   s@   ø€ Ü×/×/Ð/ÙØŸ™ F¨AÓ.°Õ2ˆˆv‰Ü‰wÒ+¨TÐ<°VÑ<Ð<r   c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )r   r2   ©rA   rB   )r   r-   s   "€r   r   r.   C   s   ø‡ ‚ Ù×%Ñ%Ñ%ò r   )rI   rK   rQ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr5   r@   rL   r`   rh   rw   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r8   r-   s   @@r   r
   r
   C   ss   ù‡ € ð ÷ ò  ó ð ð ÷

ò 

ó ð

÷+ó +÷
Eó 
E÷ó ÷:ó :÷ =ó =÷} … r   r
   c                   óz  a a€ ] tR t^ˆt oRtRt]P                  P                  t]P                  P                  t	]P                  P                  t
]P                  P                  t]P                  P                  t]P                  P                  t]P                  P                  t]P                  P                  t]P                  P                   t]P                  P"                  t]P                  P$                  t]P                  P&                  t]P                  P(                  t]P                  P*                  t]P                  P,                  t]P                  P.                  t]P                  P0                  t]P                  P2                  t]P                  P4                  t]P                  P6                  t]P                  P8                  t]P<                  t]P@                  t!]P                  PD                  t"]P                  PF                  t#]P                  PH                  t$]PJ                  t&]P                  PN                  t']P                  PP                  t(]P                  PR                  t)]P                  PT                  t*]P                  PV                  t+]P                  PX                  t,]P                  PZ                  t-V3R lR lt.V3R lV 3R llt/]0V3R lV 3R ll4       t1]0V3R	 lV 3R
 ll4       t2]3Ph                  R 4       t5V3R lR lt6V3R lt7Rt8Vt9V ;t:# )ÚCPythonTestCasez·
Test class for CPython tests located in "test/cpython/v{Py_version}/*".

This class enables specific features that are disabled by default, such as
tracing through unittest methods.
Tc          
      ó~   <€ V ^8„  d   QhRS[ RS[3,          RS[S[ RS[3,          ,          RS[RS[ RS[3,          /# )r   Úfn.ÚbackendÚnopythonr   )r   r   r   Úbool)r   r-   s   "€r   r   ÚCPythonTestCase.__annotate__º   sS   ø€ ÷ ñ á�S™#�XÕðñ ‘x ¡S Õ)Õ)ðñ ð	ñ
 
�#‘s�(Õ	ñr   c                ó¨   € \        W P                  4      p\        P                  P	                  W#R 7      ! V4      p\        W P                  V4       V# ))Úerror_on_graph_break)ÚgetattrÚ_testMethodNamer   Ú_dynamoÚoptimizeÚsetattr)rT   r�   r‘   r’   Úmethods   &&&& r   Ú
compile_fnÚCPythonTestCase.compile_fnº   sF   € ô ˜×3Ñ3Ó4ˆÜ—‘×'Ñ'¨Ð'ÔOÐPVÓWˆä�×*Ñ*¨FÔ3Øˆ	r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r   )r   )r   r-   s   "€r   r   r”   É   s   ø€ ÷ 	7ñ 	7¡#ñ 	7r   c                óò  <€ \         SV `  4       pV P                  p\        P                  ! V4      P                  \        P                  4      R,          P                  R4      ^ ,          p\        P                  ! R\        P                  ! V4      4      pV'       dN   VP                  4       P                  \        P                  4      P                  RR4      P                  R4      pMV# RV RV RV 2# )	é   Ú.z/v([\d_]+)/Ú_Ú rd   ÚCPythonÚ-éÿÿÿÿ)r4   Ú_dynamo_test_keyr8   rr   ÚgetfileÚsplitr!   ÚsepÚreÚsearchÚgroupÚstripÚreplaceÚlstrip)rT   ÚsuffixÚtest_clsÚ	test_fileÚpy_verr8   s   &    €r   r¨   Ú CPythonTestCase._dynamo_test_keyÉ   s·   ø€ Ü‘Ñ)Ó+ˆØ—>‘>ˆÜ—O’O HÓ-×3Ñ3´B·F±FÓ;¸BÕ?×EÑEÀcÓJÈ1ÕMˆ	Ü—’˜>¬7¯?ª?¸8Ó+DÓEˆßØ—\‘\“^×)Ñ)¬"¯&©&Ó1×9Ñ9¸#¸rÓB×IÑIÈ#ÓN‰FàˆMØ˜˜  ) ¨A¨f¨XÐ6Ð6r   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r”   Õ   r/   r   c                óX   <€ V P                   P                  4        \        SV `  4        R # r1   )Ú_stackr3   r4   r5   r6   s   &€r   r5   ÚCPythonTestCase.tearDownClassÔ   s   ø€ à�
‰
×ÑÔÜ‰ÑÖr   c                ó   <€ V ^8„  d   QhRR/# r+   r,   )r   r-   s   "€r   r   r”   Ú   s   ø€ ÷ 
ñ 
˜4ñ 
r   c                ól  <€ \         P                  ! V 4      p\        P                  ! \        P
                  P                  R 4      \        P
                  P                  ,           4      R,           p\        P                  ! W!4      pV'       d    \        \        \        VP                  4       4      4      p\        P                  R,          pWT8w  d[   RP                  \        \        V4      4      pRP                  \        \        V4      4      p\         P"                  ! RV RV 24      hM-\         P"                  ! R\         P                  ! V 4       24      h\$        SV `M  4        \(        P*                  ! 4       V n        V P,                  P/                  \0        P2                  ! RRR7      4       R	# )
Úcpythonzv(\d)_(\d{2}):Nr   Nr¢   zTest requires Python z but got Python z>Test requires a specific Python version but not found in path T)Úenable_trace_unittestÚenable_trace_load_build_classN)rr   r©   r¬   Úescaper!   ÚpathÚjoinr«   r­   r   ÚmapÚintÚgroupsÚsysÚversion_infor   ÚunittestÚSkipTestr4   r@   rA   rB   r¹   rC   r   rD   )	r7   Úsearch_pathÚcpython_test_regexÚmÚtest_py_verrµ   ÚexpectedÚgotr8   s	   &       €r   r@   ÚCPythonTestCase.setUpClassÙ   sH  ø€ ô —o’o cÓ*ˆô �IŠI”b—g‘g—l‘l 9Ó-´·±·±Õ;Ó<Ð?OÕOð 	ô �IŠIÐ(Ó6ˆßÜ¤¤C¨¯©«Ó 4Ó5ˆKÜ×%Ñ% bÕ)ˆFØÔ$ØŸ8™8¤C¬¨[Ó$9Ó:�Ø—h‘hœs¤3¨Ó/Ó0�Ü×'Ò'Ø+¨H¨:Ð5EÀcÀUÐKóð ð %ô ×#Ò#ØPÔQX×Q`ÒQ`ÐadÓQeÐPfÐgóð ô 	‰ÑÔÜ×)Ò)Ó+ˆŒ
Ø�
‰
× Ñ Ü�LŠLØ&*Ø.2ôö	
r   c              /  ó   "  € R x € R # 5ir1   r,   )rT   rm   rn   s   &*,r   ÚsubTestÚCPythonTestCase.subTestú   s
   é € õ 	ùs   ‚	c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   Úmethod_nameÚpolicyr   N)r   r   )r   r-   s   "€r   r   r”     s"   ø€ ÷ ñ ©Cð ¹ð Àdñ r   c                ó   € R # r1   r,   )rT   rÕ   rÖ   s   &&&r   Úwrap_with_policyÚ CPythonTestCase.wrap_with_policy  s   € Ùr   c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )r   r¹   r‚   )r   r-   s   "€r   r   r”   ˆ   s   ø‡ ‚ ñ × Ñ Ñ ò r   r,   );rƒ   r„   r…   r†   Ú__doc__Údynamo_strict_nopythonrÈ   r
   rw   ÚassertNotEqualÚ
assertTrueÚassertFalseÚassertIsÚassertIsNotÚassertIsNoneÚassertIsNotNoneÚassertInÚassertNotInÚassertIsInstanceÚassertNotIsInstanceÚassertAlmostEqualÚassertNotAlmostEqualÚassertGreaterÚassertGreaterEqualÚ
assertLessÚassertLessEqualÚassertRegexÚassertNotRegexÚassertCountEqualr   Úassert_multi_line_equalÚassertMultiLineEqualÚassert_sequence_equalÚassertSequenceEqualÚassertListEqualÚassertTupleEqualÚassertSetEqualÚassert_dict_equalÚassertDictEqualÚassertRaisesÚassertRaisesRegexÚassertWarnsÚassertWarnsRegexÚ
assertLogsÚfailÚfailureExceptionr�   r¨   r‡   r5   r@   rA   ÚcontextmanagerrÒ   rØ   rˆ   r‰   rŠ   r‹   rŒ   s   @@r   rŽ   rŽ   ˆ   sÃ  ù‡ € ñð "Ðð ×#Ñ#×/Ñ/€KØ×&Ñ&×5Ñ5€NØ×"Ñ"×-Ñ-€JØ×#Ñ#×/Ñ/€KØ× Ñ ×)Ñ)€HØ×#Ñ#×/Ñ/€KØ×$Ñ$×1Ñ1€LØ×'Ñ'×7Ñ7€OØ× Ñ ×)Ñ)€HØ×#Ñ#×/Ñ/€KØ×(Ñ(×9Ñ9ÐØ"×+Ñ+×?Ñ?ÐØ ×)Ñ)×;Ñ;ÐØ#×,Ñ,×AÑAÐØ×%Ñ%×3Ñ3€MØ!×*Ñ*×=Ñ=ÐØ×"Ñ"×-Ñ-€JØ×'Ñ'×7Ñ7€OØ×#Ñ#×/Ñ/€KØ×&Ñ&×5Ñ5€NØ×(Ñ(×9Ñ9ÐØ$×<Ñ<ÐØ#×9Ñ9ÐØ×'Ñ'×7Ñ7€OØ×(Ñ(×9Ñ9ÐØ×&Ñ&×5Ñ5€Nà×1Ñ1€Oà×$Ñ$×1Ñ1€Là ×)Ñ)×;Ñ;ÐØ×#Ñ#×/Ñ/€KØ×(Ñ(×9Ñ9ÐØ×"Ñ"×-Ñ-€JØ×Ñ×!Ñ!€DØ×(Ñ(×9Ñ9Ð÷ð ÷	7ó 	7ð ÷ ò  ó ð ð ÷
ò 
ó ð
ð@ ×Ññó ð÷ð ÷s … r   rŽ   )r,   )!rÛ   rA   r%   rr   rO   r!   r¬   rÆ   rÈ   Úcollections.abcr   Útypingr   r   Útorch.testingÚtorch._dynamor   Útorch._logging._internalr   r   r   r   r	   r
   ÚTorchTestCaser¤   r   r   Ú	getLoggerrƒ   rZ   r   rŽ   r,   r   r   Ú<module>r	     sy   ðñó Û Û Û Û 	Û 	Û 
Û Ý $Ý ã Û Ý #Ý .÷ó ÷ ð ×Ò˜Ó!€÷ô8B=ˆ}ô B=ôJz�hö zr   