
    3jO              
          % S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKr0 0 0 0 0 0 0 S.0 0 0 0 0 0 0 0 S.S.r\\\\\	4   4   \S	'    " S
 S\5      r\\	S4   rS rS\4S jr\" SS9 " S S5      5       r0 r\\\4   \S'   \" 5       r\\   \S'   0 r\\\\   4   \S'   0 r\\\\   4   \S'   S\SS4S jrS rS rS r S r!g)    N)	dataclassfield)Enum)Any)
ModuleType)condzdynamic-shapezescape-hatchmapzdynamic-valueoperatormutation)assertbuiltinclosurezcontext-managerzcontrol-flowzdata-structurezstandard-libraryzobject-model)torchpython_TAGSc                        \ rS rSrSrSrSrSrg)SupportLevel#   zO
Indicates at what stage the feature
used in the example is handled in export.
   r    N)__name__
__module____qualname____firstlineno____doc__	SUPPORTEDNOT_SUPPORTED_YET__static_attributes__r       O/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_export/db/case.pyr   r   #   s    
 Ir   r   .c                    [        U [        5      (       d  [        S[        U 5       35      e[        U[        5      (       d  [        S[        U5       35      eU H/  n[        U[
        5      (       a  M  [        S[        U5       35      e   g )Nz(Expecting args type to be a tuple, got: z)Expecting kwargs type to be a dict, got: z+Expecting kwargs keys to be a string, got: )
isinstancetuple
ValueErrortypedictstr)argskwargskeys      r    check_inputs_typer+   0   s    dE""6tDzlC
 	
 fd##7V~F
 	
 #s##=d3i[I  r   tagc                     U R                  S5      n[        nU HR  n[        U5      [        [        R                  S-   5      ::  d  [        SU 35      eX2;   a  X#   nME  [        SU  S35      e   g )N.-z!Tag contains invalid characters: zTag z! is not found in registered tags.)splitr   setstringascii_lowercaseAssertionErrorr$   )r,   partstparts       r    _validate_tagr8   ?   sn    IIcNEA4yC 6 6 <== #DTF!KLL9AtC5(IJKK r   T)frozenc                       \ rS rSr% \\S'   \\S'   \R                  R                  \S'   \\S'   \
" \S9r\\\4   \S'   Sr\S-  \S	'   \
" \S9r\\   \S
'   \R$                  r\\S'   Sr\\\4   S-  \S'   S rSrg)
ExportCaseK   example_argsdescriptionmodelname)default_factoryexample_kwargsN
extra_argstagssupport_leveldynamic_shapesc                 h   [        U R                  U R                  5        U R                  b  [        U R                  0 5        U R                   H  n[        U5        M     [        U R                  [        5      (       a  [        U R                  5      S:X  a  [        SU R                   S35      eg )Nr   zInvalid description: "")r+   r=   rB   rC   rD   r8   r"   r>   r'   lenr$   )selfr,   s     r    __post_init__ExportCase.__post_init__X   s    $++T-@-@A??&door299C#  $**C00C8H8H4IQ4N5d6F6F5GqIJJ 5Or   r   )r   r   r   r   ArgsType__annotations__r'   r   nnModuler   r&   rB   r   rC   r1   rD   r   r   rE   rF   rK   r   r   r   r    r;   r;   K   s    88??
I%*4%@NDcN@"&J4&3/D#c(/"."8"8M<8,0NDcNT)0	Kr   r;   _EXAMPLE_CASES_MODULES_EXAMPLE_CONFLICT_CASES_EXAMPLE_REWRITE_CASEScasereturnc                 
   U R                   [        ;   a\  U R                   [        ;  a%  [        U R                      /[        U R                   '   [        U R                      R                  U 5        gU [        U R                   '   g)z9
Registers a user provided ExportCase into example bank.
N)r@   rQ   rS   append)rU   s    r    register_db_caserY   j   s`     yyN"99332@2K1L#DII.		*11$7 $N499r   c                 ~    [         R                  " SSU 5      n [         R                  " SSU 5      R                  5       $ )Nz(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))resublower)r@   s    r    to_snake_caser^   w   s2    66$h5D66%x6<<>>r   c                     [        U [        R                  R                  5      (       d  [	        S5      eSU;  a-  U R
                  c  [        SU  35      e0 UESU R
                  0En[        S0 0 UEXS.ED6$ )Nz.Export case class should be a torch.nn.Module.r>   z9Could not find description or docstring for export case: )r?   r@   r   )r"   r   rO   rP   	TypeErrorr   r4   r;   )mr@   configss      r    _make_export_caserc   |   s|    a))HIIG#99 KA3O  8W7mQYY7>=7=Q=>>r   c                     ^  U 4S jnU$ )zC
Decorator for registering a user provided case into example bank.
c                   > Tn[         R                  " U 5      nU[        ;   a  [        S5      eUc  [	        S5      e[        R                  U5        UR                  R                  S5      S   n[        XU5      n[        U5        U$ )Nz6export_case should only be used once per example file.zmodule must not be Noner.   )
inspect	getmodulerR   RuntimeErrorr4   addr   r0   rc   rY   )ra   rb   modulemodule_namerU   r)   s        r    wrapperexport_case.<locals>.wrapper   s{    ""1%XWXX> !:;;Voo++C04 9r   r   r)   rm   s   ` r    export_caserp      s    
 Nr   c                     ^  U 4S jnU$ )Nc                 R  > TnUR                  S5      n[        U[        5      (       d  [        S[	        U5       35      eUR
                  nU[        ;  a	  / [        U'   UR                  US'   [        U [        U R                  5      U5      n[        U   R                  U5        U$ )Nparentzexpected ExportCase, got r=   )popr"   r;   r4   r%   r@   rT   r=   rc   r^   r   rX   )ra   rb   rs   r*   rU   r)   s        r    rm   $export_rewrite_case.<locals>.wrapper   s    X&&*-- #<T&\N!KLLkk,,*,"3'"("5"5 M!**$=wGs#**40r   r   ro   s   ` r    export_rewrite_caserv      s     Nr   )"rg   r[   r2   dataclassesr   r   enumr   typingr   typesr   r   r   r&   r'   rN   r   r#   rM   r+   r8   r;   rQ   r1   rR   rS   listrT   rY   r^   rc   rp   rv   r   r   r    <module>r|      sG    	  (      	$tCc3h  .4  c?	Ls 	L $K K K0 )+S*_% *E#j/ !79 c4
#334 968 S$z"223 8
%: 
%$ 
%?
?,r   