Ë
    g^(h\P  ã                   ó"  — 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	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mZmZmZmZmZmZmZmZ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&m'Z' d	dl(m)Z)m*Z* d	dl+m,Z,  ejZ                  e.«      Z/ e
d«      Z0e0jc                  «       Z2d„ Z3 G d„ d«      Z4de5fd„Z6	 d&ddddœd„Z7d&d„Z8d&d„Z9d„ Z:e*dejv                  defd„«       Z<e*d„ «       Z=d„ Z>d„ Z?d„ Z@d „ ZAdd!ddd"d#œd$eeBe5f   fd%„ZCy)'a  
Utilities for reproducing and debugging issues in Dynamo after graph capture.

This file provides tools and infrastructure for debugging problems that occur
after Dynamo has captured the graph but before/during backend compilation.
Key components include:

- Minification tools to reduce large graphs to minimal failing examples
- Accuracy testing to validate compiled graph outputs match eager mode
- Repro generation to create standalone reproduction scripts
- Debug backends for capturing and analyzing failures
- Utilities for saving/loading graph states and inputs

The tools here focus specifically on the post-graph-capture stage, making them
useful for debugging backend compilation issues, AOTAutograd problems, and
accuracy discrepancies between compiled and eager execution.
é    N)Úimport_module)ÚUnion)Ú
CompiledFn)ÚAccuracyErrorÚbackend_accuracy_failsÚBUCK_CMD_PREFIXÚBuckTargetWriterÚextra_importsÚgenerate_config_stringÚgenerate_env_vars_stringÚhelper_for_dump_minifyÚInputReaderÚInputWriterÚminifier_dirÚNNModuleToStringÚNopInputReaderÚrun_fwd_maybe_bwdÚsame_two_models)Úfx_placeholder_targets)Útqdmé   )Úconfig)Úlookup_backendÚregister_debug_backend)Úclone_inputs_retaining_gradnessztorch._inductor.configc                 óZ   — t        | ||t        j                  t        j                  ¬«      S )N©Úonly_fwdÚignore_non_fp)r   r   Úrepro_forward_onlyÚrepro_ignore_non_fp)ÚgmÚexample_inputsÚcompiler_fns      ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/repro/after_dynamo.pyÚ_accuracy_failsr&   G   s*   € Ü!Ø
ØØÜ×*Ñ*Ü×0Ñ0ôð ó    c                   ó"   — e Zd Zdeddfd„Zd„ Zy)ÚWrapBackendDebugÚcompiler_nameÚreturnNc                 ó  —  t        j                  |«      | «       || _        || _        t	        |d«      r|j
                  | _        t	        |d«      r|j                  | _        t	        |d«      r|j                  | _        y y )NÚ__name__r*   Úget_compiler_config)Ú	functoolsÚwrapsÚ_torchdynamo_orig_callableÚ_compiler_nameÚhasattrr-   r*   r.   )ÚselfÚunconfigured_compiler_fnr*   s      r%   Ú__init__zWrapBackendDebug.__init__R   sv   € Ø1Œ	�‰Ð0Ó1°$Ô7Ø*BˆÔ'Ø+ˆÔÜÐ+¨ZÔ8Ø4×=Ñ=ˆDŒMÜÐ+¨_Ô=Ø4×BÑBˆDŒMÜÐ+Ð-BÔCØ'?×'SÑ'SˆDÕ$ð Dr'   c           	      ó²  — t        j                  | j                  fi |¤Ž}t        j                  dv sJ ‚t        j                  dk(  �rd„ }t        j
                  dk(  rt        ||| j                  «       t        j
                  dk(  r› |t        j                  |«      |«      }t        |||«      r�t        j                  d«       t        t        j                  |t        j                  |j                  «      «      || j                  «       t!        d«      } ||«       |‚	  |t        j                  |«      |«      }t#        ||«       |S |S  |||«      }|S # t$        $ rñ}t        j                  d«       t        j
                  d	k(  r`t        j                  t&        | j                  ¬
«      } |t        j                  |t        j                  |j                  «      «      |«       n[t        j
                  dk(  rHt        t        j                  |t        j                  |j                  «      «      || j                  «        ||«       ‚ d }~ww xY w)N)ÚdynamoÚaotNr8   c                 óâ   — t         j                  j                  t        «       d«      | _        t
        r<dj                  t        t        | j                  «      j                  gz   «      | _	        y y )Nzminifier_launcher.pyú )
ÚosÚpathÚjoinr   Úminifier_pathÚuse_buckr   r	   Úcmd_line_pathÚbuck_command)Úexcs    r%   Ú	add_pathsz,WrapBackendDebug.__call__.<locals>.add_pathsc   sU   € Ü$&§G¡G§L¡L´³ÐAWÓ$X�Ô!ÝØ'*§x¡xÜ'Ü+¨C×,=Ñ,=Ó>×LÑLÐMñNó(�CÕ$ð r'   é   é   zXAccuracy failed for the TorchDynamo produced graph. Creating script to minify the error.zBad accuracy detected.úDCompiled Fx GraphModule failed. Creating script to minify the error.é   ©r*   r   )r/   Úpartialr1   r   Úrepro_afterÚrepro_levelÚdump_to_minify_after_dynamor2   ÚcopyÚdeepcopyr&   ÚlogÚwarningÚfxÚGraphModuleÚgraphr   r   Ú	ExceptionÚdump_backend_state)	r4   r"   r#   Úkwargsr$   rD   Úcompiled_gmrC   Údump_state_fns	            r%   Ú__call__zWrapBackendDebug.__call__]   sô  € Ü×'Ñ'¨×(GÑ(GÑRÈ6ÑRˆÜ×!Ñ!Ð%<Ñ<Ð<Ð<ä×Ñ Ó)òô ×!Ñ! QÒ&Ü+¨B°À×@SÑ@SÔTô ×!Ñ! QÒ&á)¬$¯-©-¸Ó*;¸^ÓL�Ü" 2 ~°{ÔCÜ—K‘KØrôô 0ÜŸ™ r¬4¯=©=¸¿¹Ó+BÓCØ&Ø×+Ñ+ôô
 (Ð(@ÓA�CÙ˜c”NØ�IðÙ"-¬d¯m©m¸BÓ.?ÀÓ"P�KÜ% k°>ÔBð. Ðˆ{Ðñ & b¨.Ó9ˆKàÐøô- !ò Ü—K‘KØ^ôô ×)Ñ)¨QÒ.Ü(1×(9Ñ(9Ü.¸d×>QÑ>Qô)˜ñ &ÜŸN™N¨2¬t¯}©}¸R¿X¹XÓ/FÓGÈõô  ×+Ñ+¨qÒ0Ü3ÜŸN™N¨2¬t¯}©}¸R¿X¹XÓ/FÓGØ*Ø ×/Ñ/ôñ
 ˜c”NØûð%ús   Ä%(E Å	IÅ%C,IÉI)r-   Ú
__module__Ú__qualname__Ústrr6   rZ   © r'   r%   r)   r)   Q   s   „ ð	TÀð 	TÈó 	Tó;r'   r)   r*   c                 ó   — t        | |«      S )a•  
    A minifier decorator that wraps the TorchDynamo produced Fx graph modules.
    As opposed to wrap_compiler_debug, this wrapper intercepts at the
    TorchDynamo produced Fx Graph Module. This makes it backend-agnostic to some
    level, e.g., it is useful for minifying issues related to Aot Autograd
    tracing.  If an error is found, we minify and save the minified repro in
    repro.tar.gz.
    )r)   )r5   r*   s     r%   Úwrap_backend_debugr`   ›   s   € ô Ð4°mÓDÐDr'   FÚrun)Ústable_outputÚsave_dirÚcommandc                óT  — t        j                  | «      }t        |d¬«      }t        t	        | «      |«      D ]r  \  }	}
t        |
t        t        j                  f«      r|j                  |	|
«       Œ9t        |
t        j                  «      r|j                  |	|
«       Œft        d|
› �«      ‚ dj                  |j                  «       «      }t        j                   dt#        |¬«      › dt%        |¬«      › dt&        › d|› d|› d	|›d
|›d|›dt        j(                  «       ›d|›d�«      S )zH
    Generate a repro string for backend-agnostic minified version.
    T)Ústable_hashz,arg is neither SymInt/int nor torch.Tensor, ú
)rb   z×
from math import inf
import torch
from torch import tensor, device
import torch.fx as fx
import torch._dynamo
from torch._dynamo.testing import rand_strided
from torch._dynamo.debug_utils import run_fwd_maybe_bwd

z

z
mod = Repro()

z

if __name__ == '__main__':
    from torch._dynamo.repro.after_dynamo import run_repro
    run_repro(mod, load_args, accuracy=z
, command=z,
        save_dir=z, autocast=z
, backend=z)
)r   Úconvertr   Úzipr   Ú
isinstanceÚintÚtorchÚSymIntÚsymintÚTensorÚtensorÚ	TypeErrorr>   ÚlinesÚtextwrapÚdedentr   r   r
   Úis_autocast_enabled)r"   Úargsr*   Úcheck_accuracyrb   rc   rd   Ú	model_strÚwriterÚplaceholderÚargÚ	load_argss               r%   Úgenerate_dynamo_fx_repro_stringr}   ¬   s?  € ô !×(Ñ(¨Ó,€Iô ˜¨tÔ4€FÜÔ 6°rÓ :¸DÓAò RÑˆ�SÜ�cœC¤§¡Ð.Ô/Ø�M‰M˜+ sÕ+Ü˜œUŸ\™\Ô*à�M‰M˜+ sÕ+äÐJÈ3È%ÐPÓQÐQðRð —	‘	˜&Ÿ,™,›.Ó)€Iä�?‰?ðÜ¨Ô6Ð 7ð 	8ô  mÔ4Ð 5ð 6ä€ð à
€ð ð €ð (ð )7Ð'9¸ÀGÀ;ð OØ�˜[¬×)BÑ)BÓ)DÐ(GÀzÐR_ÐQbð cð-	óð r'   c           
      ó>  — t        j                  «       }t         j                  j                  t        j                  «       d«      }t         j                  j	                  |«      st        j
                  |d¬«       t         j                  j                  |dt        | j                  j                  «      › d�«      }t        j                  dt        | j                  j                  «      |«       t        |d«      5 }|j                  t        | ||||¬«      «       d	d	d	«       t         j                  j                  |d
«      }t        j                  d||«       t        rt        |«      j                  «        t!        j"                  ||«       y	# 1 sw Y   ŒvxY w)z,
    Saves the repro to a repro.py file
    ÚcheckpointsT©Úexist_okÚ	minified_z	_nodes.pyz&Writing checkpoint with %s nodes to %sÚw)rc   Nzrepro.pyz Copying %s to %s for convenience)r<   Úgetcwdr=   r>   ÚexistsÚmakedirsÚlenrT   ÚnodesrP   rQ   ÚopenÚwriter}   r@   r	   ÚshutilÚcopyfile)	r"   rv   r*   rw   ÚcurdirÚsubdirÚ	file_nameÚfdÚlatest_repros	            r%   Údump_backend_repro_as_filer’   ä   s  € ô �Y‰Y‹[€FÜ�W‰W�\‰\œ"Ÿ)™)›+ }Ó5€FÜ�7‰7�>‰>˜&Ô!Ü
�‰�F TÕ*Ü—‘—‘˜V y´°R·X±X·^±^Ó1DÐ0EÀYÐ%OÓP€IÜ‡K�KØ0´#°b·h±h·n±nÓ2EÀyôô 
ˆi˜Ó	ð 
 Ø
�‰Ü+Ø�D˜-¨À&ôô	
÷
ô —7‘7—<‘< ¨
Ó3€LÜ‡K�KÐ2°I¸|ÔLåÜ˜Ó&×,Ñ,Ô.ä
‡O�O�I˜|Õ,÷
ð 
ús   Ã> FÆFc                 óL   — t        j                  | «      sJ ‚t        | |||«      S )a  
    Dumps the dynamo graph to repro the issue.
    1) It tries to convert Fx GraphModule to a string. If we can, it writes to a
    repro.py file.
    2) If we can't convert Fx GraphModule to a string, we use to_folder to save
    the module and save a tar file.
    )r   Úcan_convert_to_stringr’   )r"   rv   r*   rw   s       r%   rV   rV      s)   € ô ×1Ñ1°"Ô5Ð5Ð5Ü% b¨$°¸~ÓNÐNr'   c           
      ó  — t         j                  j                  t        «       d«      }t         j                  j	                  |«      st        j
                  |d¬«       t        t        | ||t        j                  dk(  |d¬«      «       y )Nr   Tr€   rF   Úminify)rw   rc   rd   )
r<   r=   r>   r   r…   r†   r   r}   r   rL   )r"   rv   r*   rŽ   s       r%   rM   rM     sc   € ä�W‰W�\‰\œ,›.¨-Ó8€FÜ�7‰7�>‰>˜&Ô!Ü
�‰�F TÕ*ÜÜ'ØØØÜ!×-Ñ-°Ñ2ØØô	
õ	r'   r"   c           	      óV  — ddl m} t        |«      }|D �cg c]4  }t        |t        j
                  «      r|j                  j                  n|‘Œ6 }}	  || |«      }t        ||«       t        d«      ‚c c}w # t        $ r¨}t        |«      }t        j                  d«       t        j                  t         |¬«      }	 |	t#        j$                  | t'        j(                  | j*                  «      «      |«       t        j                  t,        ||¬«      }
 || ||
|	¬«       Y d }~| S d }~ww xY w)Nr   ©ÚminifierzNo issue was detectedrG   rI   )r$   Úorig_failure©Úmodule_failsÚ
dump_state)Úfunctorch.compiler™   r   rj   rl   rm   ÚnodeÚhintr   Ú
ValueErrorrU   r]   rP   rQ   r/   rJ   rV   rR   rS   rN   rO   rT   Úbackend_fails)r"   r#   r*   r™   r$   ÚirX   rC   rš   rY   Úfails_fns              r%   Údynamo_minifier_backendr¥   (  s  € õ +ä  Ó/€Kð DRöØ>?”z !¤U§\¡\Ô2ˆ�‰�Š¸Ñ9ð€Nð ð
Ù! " nÓ5ˆÜ˜+ ~Ô6ÜÐ0Ó1Ð1ùòøô ò 
Ü˜3“xˆÜ�‰ØRô	
ô "×)Ñ)Ü¨mô
ˆñ 	”b—n‘n R¬¯©°r·x±xÓ)@ÓAÀ>ÔRÜ×$Ñ$ÜØ#Ø%ô
ˆñ
 	ØØØ!Ø$÷		
ñ 	
ð €Iûð)
ús   –9A2Á A7 Á7	D(Â BD#Ä#D(c                 ó´  — ddl m} t        |«      }| j                  «        t	        | ||«      r”t
        j                  d«       t        j                  t        |d¬«      }t        j                  t        |¬«      } |t        j                  | t        j                  | j                  «      «      |«        || |||¬«       | S t
        j                  d«       | S )	Nr   r˜   z2Accuracy failed for the TorchDynamo produced graphT)r*   rw   )r$   r›   z*Input graph does not fail accuracy testing)rž   r™   r   Úevalr&   rP   rQ   r/   rJ   rV   rR   rS   rN   rO   rT   Úerror)r"   r#   r*   r™   r$   rY   r¤   s          r%   Ú dynamo_accuracy_minifier_backendr©   R  s·   € å*ä  Ó/€Kð ‡G�G„Iô �r˜>¨;Ô7Ü�‰ÐHÔIÜ!×)Ñ)Ü¨mÈDô
ˆô ×$Ñ$ÜØ#ô
ˆñ 	”b—n‘n R¬¯©°r·x±xÓ)@ÓAÀ>ÔRÙØØØ!Ø$õ		
ð €Iô 	�	‰	Ð>Ô?Ø€Ir'   c                 óú   — ddl m} 	 t        | t        |«      «        || |«      }t        |t        |«      «       y# t        $ r5}t        |«      } |d||«      j                  «       dkD  rY d}~yY d}~yd}~ww xY w)a.  
    Minifier uses this function to identify if the minified graph module fails
    with the same error.

    One caveat is that minifier can potentially go into a wrong direction when
    the resulting graph module fails for a different reason. To avoid this, we
    save the string for the original exception and check similarity between new
    and old exception. They can be somewhat different in some cases, when the
    exception string depends on the failing node information. So, we have a
    loose similarity metric to guide the minifier path.
    r   )ÚSequenceMatcherNg      à?TF)Údifflibr«   r   r   rU   r]   Úratio)r"   r#   r$   rš   r«   rX   ÚeÚnew_failures           r%   r¢   r¢   q  s~   € õ (ðä˜"Ô=¸nÓMÔNÙ! " nÓ5ˆÜ˜+Ô'FÀ~Ó'VÔWð
 øô	 ò Ü˜!“fˆÙ˜4 ¨{Ó;×AÑAÓCÀcÒIÜó Jàûð	ús   ˆ3< ¼	A:Á&A5Á5A:c                 ó|  — t        |d«      st        j                  d«       n/|j                  dkD  r t        j                  d|j                  «       t	        «       } ||«       t        d|j                  ¬«      5 }t        | j                  |¬«      } ||«       |j                  }d d d «       |S # 1 sw Y   S xY w)NÚ_versionzzload_args does not have a _version attribute, please file a bug to PyTorch and describe how you generate this repro scriptr   z¾load_args is version %s, but this version of PyTorch only supports version 0.  We will try to run it anyway but there may be an incompatibility; if so, try upgrading your version of PyTorch.zLoading inputs)ÚdescÚtotal)rc   Úpbar)
r3   rP   rQ   r±   r   r   r³   r   rc   rv   )ÚoptionsÚmodr|   Ú
nop_readerr´   Úinput_readerrv   s          r%   Úrun_load_argsr¹   �  s²   € Ü�9˜jÔ)Ü�‰ð>õ	
ð
 ×Ñ Ò!Ü�K‰Kð@ð ×"Ñ"ô	ô  Ó!€JÙˆjÔä	Ð#¨:×+;Ñ+;Ô	<ð !ÀÜ"¨G×,<Ñ,<À4ÔHˆÙ�,ÔØ× Ñ ˆ÷!ð
 €K÷!ð
 €Kús   Á;,B1Â1B;c                 ó¦  — t        | ||«      }| j                  st        d«      }nt        d«      }| j                  €t	        d«      ‚t        j                  || j                  ¬«      }t        j                  j                  |«      |«      }t        j                  j                  d| j                  ¬«      5   ||Ž  d d d «       y # 1 sw Y   y xY w)Nr¥   r©   zóCompiler name is None - this likely means that a custom compiler was called by torchdynamo. Please remove this error, import your custom compiler function, and replace the backend=None line in run_repro to backend=<my_imported_custom_function>rI   Úcuda©Úenabled)r¹   Úaccuracyr   ÚbackendÚRuntimeErrorr/   rJ   rl   Ú_dynamoÚoptimizeÚampÚautocast)rµ   r¶   r|   rv   r$   r¥   Úopt_mods          r%   Úrepro_minifyrÆ   ª  sÀ   € Ü˜ # yÓ1€Dð ×ÒÜ$Ð%>Ó?‰ä$Ð%GÓHˆà‡�ÐÜðIó
ð 	
ô (×/Ñ/ØØ—o‘oôÐô �m‰m×$Ñ$Ð%<Ó=¸cÓB€Gä	�‰×	Ñ	˜F¨G×,<Ñ,<Ð	Ó	=ñ Ù�‰÷÷ ñ ús   Â8CÃCc                 ó  — t        j                  j                  | j                  «      |«      }| j                  dk7  r®|j                  «        |j                  «        t         j                  j                  d| j                  ¬«      5  t        | ||«      }t        |||«      sJ d«       ‚t        |||t        j                  t        j                  ¬«      st        d«      ‚	 d d d «       y t         j                  j                  d| j                  ¬«      5  t        | ||«      }t        ||| j                  d¬«       ~t        | ||«      }t        ||| j                  d¬«       d d d «       y # 1 sw Y   y xY w# 1 sw Y   y xY w)	NÚ r»   r¼   zEager itself failedr   zDynamo failedT)r   Údisable_clone)rl   rÁ   rÂ   r¿   r¾   r§   rÃ   rÄ   r¹   r   r   r    r!   r   r   r   )rµ   r¶   r|   rÅ   rv   s        r%   Ú	repro_runrÊ   Å  sU  € Ü�m‰m×$Ñ$ W§_¡_Ó5°cÓ:€Gà×Ñ˜2ÒØ�‰Œ
Ø�‰Œä�Y‰Y×Ñ °×0@Ñ0@ÐÓAñ 	5ä  ¨#¨yÓ9ˆDÜ" 3¨¨TÔ2ÐIÐ4IÓIÐ2Ü"ØØØÜ×2Ñ2Ü$×8Ñ8õô $ OÓ4Ð4ð÷		5ð 	5ô �Y‰Y×Ñ °×0@Ñ0@ÐÓAñ 	Ü  ¨#¨yÓ9ˆDÜ˜c 4°'×2BÑ2BÐRVÕWØä  ¨#¨yÓ9ˆDÜØ˜¨×(8Ñ(8Èõ÷	ð 	÷	5ð 	5ú÷	ð 	ús   Â	AE.ÄAE:Å.E7Å:FrÈ   Úinductor)rd   r¾   rc   rÄ   r¿   r¾   c                ób  ‡‡‡‡— |D ]  }t         j                  d|«       Œ ‰du rdŠn‰du rdŠt        j                  d|› d|› d‰›d	‰›d
�	t        j                  ¬«      }	ˆˆˆˆfd„}
|	j                  ddd¬«      }|j                  dd¬«      } |
|«       |j                  ddd¬«       |j                  dd¬«      } |
|«       d }t        t        j                  «      dk  r|gt        j                  dd  ¢}|	j                  |«      }t        t        dœ} ||j                     || |«       y )NzPUnrecognized kwarg %s; perhaps this repro was made on a newer version of PyTorchTr¾   FrÈ   z‘An after_dynamo repro script, typically triggering a bug in Dynamo or
AOTAutograd.  When run with no arguments, this script defaults to running
'z9'.  Extra flags may be available; to find out more, try 'zs
--help'.  There are also alternate subcommands available, see below.

default settings on this script:
  accuracy=z
  save_dir=rg   )ÚdescriptionÚformatter_classc                 ó”  •— | j                  «       }|j                  dddd‰d¬«       |j                  ddd‰d¬	«       | j                  d
t        ‰dd¬«       | j                  dddd d¬«       | j                  ddddd¬«       | j                  d‰dd¬«       | j                  dddd¬«       | j                  d t        ‰d!d"¬«       y )#Nz--no-accuracyr¾   Ústore_constrÈ   z>do not test accuracy, just run the module and see if it errors)ÚdestÚactionÚconstÚdefaultÚhelpz
--accuracyztest accuracy)rÒ   rÓ   rÔ   rÕ   z
--save-dirÚDIRz!directory where saved inputs live)ÚtyperÔ   ÚmetavarrÕ   z--no-save-dirrc   z(don't use any directory for saved inputs)rÑ   rÒ   rÓ   rÕ   z--no-isolateÚisolateÚstore_falseFz1no isolate (doesn't do anything for after_dynamo))rÑ   rÒ   rÔ   rÕ   z
--autocastÚ
store_truezuse torch.cuda.amp.autocast)rÔ   rÒ   rÕ   z--no-autocastrÄ   z!don't use torch.cuda.amp.autocast)rÑ   rÒ   rÕ   z	--backendÚBACKENDztorch.compile backend to use)Úadd_mutually_exclusive_groupÚadd_argumentr]   )ÚparserÚaccuracy_groupr¾   rÄ   r¿   rc   s     €€€€r%   Úcommon_flagszrun_repro.<locals>.common_flags  s,  ø€ Ø×<Ñ<Ó>ˆØ×#Ñ#ØØØ ØØØQð 	$ô 	
ð 	×#Ñ#ØØ ØØØ ð 	$ô 	
ð 	×ÑØÜØØØ4ð 	ô 	
ð 	×ÑØØØ ØØ;ð 	ô 	
ð 	×ÑØØØ ØØDð 	ô 	
ð 	×ÑØØØØ.ð	 	ô 	
ð 	×ÑØØØ Ø4ð	 	ô 	
ð 	×ÑØÜØØØ/ð 	õ 	
r'   rd   z{run,minify})rÑ   rØ   Úrequiredra   zjust run the repro)rÕ   z
--only-fwdrÛ   z+don't run backwards compilation for testing)rÒ   rÕ   r–   zrun the minifier on the reprorH   )r–   ra   )rP   rQ   ÚargparseÚArgumentParserÚRawTextHelpFormatterÚadd_subparsersÚ
add_parserrÞ   r‡   ÚsysÚargvÚ
parse_argsrÆ   rÊ   rd   )r¶   r|   rd   r¾   rc   rÄ   r¿   rW   Úkrß   rá   Ú
subparsersÚ
parser_runÚparser_minifyrv   rµ   ÚCOMMAND_FNSs      ````          r%   Ú	run_reprorð   ä  s�  û€ ð ò 
ˆÜ�‰Ø^Øõ	
ð
ð �4ÑØ‰Ø	�UÑ	Øˆä×$Ñ$ðð 
€Ð
CÀGÀ9ð Mð €+ð Ø€+ð ð	ô !×5Ñ5ô€F÷8
ðt ×&Ñ&Ø ¸ð 'ó €Jð ×&Ñ&ØØ!ð 'ó €Jñ �ÔØ×ÑØØØ:ð ô ð ×)Ñ)ØÐ6ð *ó €Mñ �Ôà€DÜ
Œ3�8‰8ƒ}˜ÒØÐ'œ#Ÿ(™( 1 2˜,Ð'ˆà×Ñ Ó%€GäÜñ€Kð !€K�—‘Ñ  ¨#¨yÕ9r'   )F)DÚ__doc__rã   rN   r/   Úloggingr<   r‹   rè   rs   Ú	importlibr   Útypingr   rl   Útorch.fxrR   Útorch._dynamo.backends.registryr   Útorch._dynamo.debug_utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú%torch.fx.experimental.symbolic_shapesr   Ú	torch.hubr   rÈ   r   Úbackends.registryr   r   Údebug_utilsr   Ú	getLoggerr-   rP   Úinductor_configÚ	is_fbcoder@   r&   r)   r]   r`   r}   r’   rV   rM   rS   r¥   r©   r¢   r¹   rÆ   rÊ   Úboolrð   r^   r'   r%   ú<module>r      sU  ðñó$ Û Û Û Û 	Û Û 
Û Ý #Ý ã Ý Ý 6÷÷ ÷ ÷ ñ õ" IÝ å ß FÝ 9ð €g×Ñ˜Ó!€ñ  Ð 8Ó9€Ø×$Ñ$Ó&€ò÷Gñ GðT	EÀó 	Eð* ð	5ð ØØô5óp-ó8	Oò$ð, ð&Ø
�‰ð&Ø7Aò&ó ð&ðR ñó ðò<ò>ò4ò6ðF Ø!#ØØØò{:ð
 �D˜#�IÑô{:r'   