
    N j_              
          % 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       f/root/GenerationalWealth/GenerationalWealth/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 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_tagr9   ?   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9r\\   \S
'   \R&                  r\\S'   Sr\\\\4      \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>   rC   rD   rE   r9   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'   rC   r   rD   r   r2   rE   r   r   rF   rG   rL   r   r   r    r!   r<   r<   K   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)rA   rR   rT   append)rV   s    r!   register_db_caserZ   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)rA   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@   rA   r   )r#   r   rP   rQ   	TypeErrorr   r5   r<   )mrA   configss      r!   _make_export_caserd   |   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	getmodulerS   RuntimeErrorr5   addr   r1   rd   rZ   )rb   rc   modulemodule_namerV   r*   s        r!   wrapperexport_case.<locals>.wrapper   s{    ""1%XWXX> !:;;Voo++C04 9r    r   r*   rn   s   ` r!   export_caserq      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<   r5   r&   rA   rU   r>   rd   r_   r   rY   )rb   rc   rt   r+   rV   r*   s        r!   rn   $export_rewrite_case.<locals>.wrapper   s    X&&*-- #<T&\N!KLLkk,,*,"3'"("5"5 M!**$=wGs#**40r    r   rp   s   ` r!   export_rewrite_caserw      s     Nr    )#rh   r\   r3   dataclassesr   r   enumr   typingr   r   typesr   r   r   r'   r(   rO   r   r$   rN   r,   r9   r<   rR   r2   rS   rT   listrU   rZ   r_   rd   rq   rw   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    