
    sh              
          % 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	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Optional)
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       i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/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 HN  n[        U5      [        [        R                  S-   5      ::  d
   SU 35       eX2;   a  X#   nMA  [        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_lowercaser%   )r-   partstparts       r!   _validate_tagr8   ?   s{    IIcNEA4yC""S(
 
 	6.tf5	6 
 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9r\\   \S
'   \R&                  r\\S'   Sr\\\\4      \S'   S rSrg)
ExportCaseL   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__Y   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   r   r2   rD   r   r   rE   rF   rK   r   r   r    r!   r;   r;   L   s    88??
I%*4%@NDcN@%)J")3/D#c(/"."8"8M<8/3NHT#s(^,3	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   k   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^   x   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   r;   )mr@   configss      r!   _make_export_caserc   }   s~    a))HIIG# II!	KFqcJ	K!7W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   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.r/   )	inspect	getmodulerR   RuntimeErroraddr   r1   rc   rY   )ra   rb   modulemodule_namerU   r*   s        r!   wrapperexport_case.<locals>.wrapper   sv    ""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                 (  > TnUR                  S5      n[        U[        5      (       d   eUR                  nU[        ;  a	  / [        U'   UR
                  US'   [        U [        U R                  5      U5      n[        U   R                  U5        U$ )Nparentr=   )
popr#   r;   r@   rT   r=   rc   r^   r   rX   )ra   rb   rs   r+   rU   r*   s        r!   rm   $export_rewrite_case.<locals>.wrapper   s    X&&*----kk,,*,"3'"("5"5 M!**$=wGs#**40r    r   ro   s   ` r!   export_rewrite_caserv      s     Nr    )#rg   r[   r3   dataclassesr   r   enumr   typingr   r   typesr   r   r   r'   r(   rN   r   r$   rM   r,   r8   r;   rQ   r2   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    