
    i                        d Z ddlZddlZddlZddlmZmZmZmZm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZmZ erddlmZ ej,                  ej.                  ej0                  ej2                  ej.                  ej.                  ej2                  ej2                  ej4                  ej4                  ej6                  ej6                  ej8                  ej8                  ej:                  ej:                  ej<                  ej<                  ej>                  ej>                  i
Z ej,                  ej4                  ej0                  ej6                  ej4                  ej4                  ej6                  ej6                  ej.                  ej4                  ej2                  ej6                  ej8                  ej8                  ej:                  ej:                  ej<                  ej<                  ej>                  ej>                  i
Z!ej,                  ej8                  ej0                  ej:                  ej4                  ej8                  ej6                  ej:                  ej.                  ej8                  ej2                  ej:                  ej8                  ej8                  ej:                  ej:                  ej<                  ej<                  ej>                  ej>                  i
Z"ej,                  ej<                  ej0                  ej>                  ej.                  ej<                  ej2                  ej>                  ej<                  ej<                  ej>                  ej>                  ej4                  ej<                  ej6                  ej>                  ej8                  ej<                  ej:                  ej>                  i
Z#d	ed
e$fdZ%d	ed
e&fdZ' ejP                  d       G d de             Z) ejP                  d       G d de             Z* ejP                  d       G d de             Z+ ejP                  d       G d de             Z, ejP                  d       G d de             Z- ejP                  d       G d de             Z. ejP                  d       G d de.             Z/ ejP                  d       G d de             Z0 ejP                  d       G d d e             Z1 ejP                  d       G d! d"e             Z2 ejP                  d       G d# d$e             Z3 ejP                  d       G d% d&e             Z4 ejP                  d       G d' d(e             Z5 ejP                  d       G d) d*e             Z6 ejP                  d       G d+ d,e             Z7 ejP                  d       G d- d.e0             Z8 ejP                  d       G d/ d0e0             Z9 ejP                  d       G d1 d2e             Z: ejP                  d       G d3 d4e             Z; G d5 d6ejx                        Z= ejP                  d       G d7 d8e             Z> ejP                  d       G d9 d:e             Z? ejP                  d       G d; d<e             Z@ ejP                  d       G d= d>e             ZA ejP                  d       G d? d@e             ZB ejP                  d       G dA dBe             ZC G dC dDe      ZD ejP                  d       G dE dFe             ZE ejP                  d       G dG dHe             ZF ejP                  d       G dI dJe             ZG ejP                  d       G dK dLe             ZH ejP                  d       G dM dNe             ZI ejP                  d       G dO dPe             ZJ ejP                  d       G dQ dReF             ZK ejP                  d       G dS dTeF             ZL ejP                  d       G dU dVe             ZM ejP                  d       G dW dXe             ZN ejP                  d       G dY dZe             ZO ejP                  d       G d[ d\e             ZP ejP                  d       G d] d^e             ZQ ejP                  d       G d_ d`eQ             ZR ejP                  d       G da dbeR             ZS ejP                  d       G dc ddeQ             ZT ejP                  d       G de dfe             ZU ejP                  d       G dg dhe             ZV ejP                  d       G di dje             ZW ejP                  d       G dk dle             ZX ejP                  d       G dm dne             ZY ejP                  d       G do dpe             ZZ ejP                  d       G dq dre             Z[ ejP                  d       G ds dte             Z\ ejP                  d       G du dve             Z] ejP                  d       G dw dxe             Z^dydzd	ed{e$d
ee&   fd|Z_dydzd	ed{e$d
e$fd}Z`d	ed
e$fd~Zad	ed
ee&   fdZbd	ed
e$fdZcd	ed
e$fdZdd	eded
e$fdZeej                  d	ed
e$fd       Zgej                  d	ed
e$fd       Zhej                  d	ed
e$fd       Ziej                  d	ed
e$fd       Zjej                  d	ed
e$fd       Zkej                  d	ed
e$fd       Zlej                  d	ed
e$fd       Zmy)a  
This module provides Source classes that track the origins of values in PyTorch Dynamo.
Sources represent where values come from (e.g. local variables, globals, attributes) and
are used for guard generation and code reconstruction during compilation.

The module includes specialized sources for:
- Local variables and synthetic locals
- Global variables and constants
- Object attributes and method calls
- NN module specialization (specialized vs unspecialized)
- Random values and tensor properties
- Default argument handling
- FSDP (Fully Sharded Data Parallel) modules

Sources play a key role in Dynamo's guard system by tracking value origins for
guard generation, and in code reconstruction by providing methods to rebuild
the code needed to recreate values.
    N)AnyCallableOptionalTYPE_CHECKINGUnion)ChainedSourceGuardGuardSourceSource   )utils)create_call_functioncreate_instruction)	PyCodegensourcereturnc                     t        | t              ry	 | j                         t        j                  k(  ry	 y# t
        $ r Y yw xY wNTF)
isinstanceConstantSourceguard_sourcer
   CONSTANTNotImplementedErrorr   s    N/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_dynamo/source.pyis_constant_sourcer   a   sO    &.) K$8$88 9
   s   !7 	AAc                 B    	 | j                         S # t        $ r Y yw xY w)Nz<unknown source>)namer   r   s    r   _get_source_debug_namer   m   s%    "{{} "!"s    	T)frozenc                   n    e Zd ZU eed<   dZeed<   dZee	e      ed<   dZ
eed<   ddZdefd	Zdefd
Zy)LocalSource
local_nameFis_inputNdynamismis_derefed_cell_contentsr   c                     | j                   r|j                  | j                         y |j                  |j	                  | j                               y N)r&   
load_derefr#   append_outputcreate_loadselfcodegens     r   reconstructzLocalSource.reconstruct   s:    ((t/!!'"5"5doo"FG    c                 "    t         j                  S r(   )r
   LOCALr-   s    r   r   zLocalSource.guard_source   s       r0   c                 4    dt        | j                         dS )NzL[])reprr#   r3   s    r   r   zLocalSource.name   s    D)*!,,r0   r.   r   r   N)__name__
__module____qualname__str__annotations__r$   boolr%   r   	frozensetr&   r/   r
   r   r    r0   r   r"   r"   t   sS    O Hd *.Hhy~&-
 &+d*H!k !-c -r0   r"   c                   8    e Zd ZU eed<   ddZdefdZdefdZy)SyntheticLocalSourcer#   r   Nc                 X    |j                  |j                  | j                               y r(   )r*   r+   r#   r,   s     r   r/   z SyntheticLocalSource.reconstruct   s    g11$//BCr0   c                 "    t         j                  S r(   )r
   SYNTHETIC_LOCALr3   s    r   r   z!SyntheticLocalSource.guard_source   s    ***r0   c                 "    d| j                   dS )NzSYNTHETIC_LOCAL[r5   )r#   r3   s    r   r   zSyntheticLocalSource.name   s    !$//!4A66r0   r7   	r8   r9   r:   r;   r<   r/   r
   r   r   r?   r0   r   rA   rA      s%    OD+k +7c 7r0   rA   c                   8    e Zd ZU eed<   defdZddZdefdZ	y)RandomValueSourcerandom_call_indexr   c                 "    t         j                  S r(   )r
   RANDOM_VALUEr3   s    r   r   zRandomValueSource.guard_source   s    '''r0   Nc                    |j                  |j                  |j                  j                  j                               |j                  |j                  | j                               |j                  t        d             y NBINARY_SUBSCR)r*   r+   txoutputrandom_values_varcreate_load_constrI   r   r,   s     r   r/   zRandomValueSource.reconstruct   s^    g11'**2C2C2U2UVWg778N8NOP0ABr0   c                      d| j                    S )Nrandom_value_)rI   r3   s    r   r   zRandomValueSource.name   s    t55677r0   r7   )
r8   r9   r:   intr<   r
   r   r/   r;   r   r?   r0   r   rH   rH      s&    (k (C
8c 8r0   rH   c                   8    e Zd ZU eed<   ddZdefdZdefdZy)GlobalSourceglobal_namer   Nc                 \    |j                  |j                  | j                  d             y NTaddr*   create_load_globalrX   r,   s     r   r/   zGlobalSource.reconstruct   s&    g889I9It8TUr0   c                 "    t         j                  S r(   r
   GLOBALr3   s    r   r   zGlobalSource.guard_source       !!!r0   c                 4    dt        | j                         dS )NG[r5   r6   rX   r3   s    r   r   zGlobalSource.name   s    D))*+1--r0   r7   rF   r?   r0   r   rW   rW      s&    V"k ".c .r0   rW   c                   8    e Zd ZU eed<   ddZdefdZdefdZy)GlobalWeakRefSourcerX   r   Nc                 h     j                   fd       j                  t        dd             y )Nc                  \     j                   j                  j                  d            S rZ   r]   r.   r-   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s+    G))**4+;+;*F r0   r   Fadd_push_nullextend_outputr   r,   s   ``r   r/   zGlobalWeakRefSource.reconstruct   s.    	

 	21e<=r0   c                 "    t         j                  S r(   r`   r3   s    r   r   z GlobalWeakRefSource.guard_source   rb   r0   c                 4    dt        | j                         dS )Nrd   z]()re   r3   s    r   r   zGlobalWeakRefSource.name   s    D))*+3//r0   r7   rF   r?   r0   r   rg   rg      s%    >"k "0c 0r0   rg   c                   ,    e Zd ZddZdefdZdefdZy)WeakRefCallSourcer   Nc                 h     j                   fd       j                  t        dd             y )Nc                  (      j                         S r(   baserj   s   r   rk   z/WeakRefCallSource.reconstruct.<locals>.<lambda>   s    gdii&8 r0   r   Frl   r,   s   ``r   r/   zWeakRefCallSource.reconstruct   s(    8921e<=r0   c                 6    | j                   j                         S r(   rv   r   r3   s    r   r   zWeakRefCallSource.guard_source       yy%%''r0   c                 <    | j                   j                          dS )Nz()rv   r   r3   s    r   r   zWeakRefCallSource.name   s    )).."#2&&r0   r7   r8   r9   r:   r/   r
   r   r;   r   r?   r0   r   rr   rr      s    >(k ('c 'r0   rr   c                       e Zd Zy)CallFunctionNoArgsSourceNr8   r9   r:   r?   r0   r   r~   r~          r0   r~   c                   @    e Zd ZU eed<   ddZd	dZdefdZdefdZ	y)

AttrSourcememberr   Nc                 ,   | j                   sJ d       d| j                  v rs| j                  j                  d      }t        j	                  | dt        | j                   dj                  |d d                    t        j	                  | d|d          y y Nz9Can't construct an AttrSource without a valid base source.rv   r   rv   r   splitobject__setattr__r   joinr-   member_partss     r   __post_init__zAttrSource.__post_init__       yyUUUy$++;;,,S1LfjCHH\#2=N4OP tX|B/?@ r0   c                 |     || j                          |j                  |j                  | j                               y r(   rv   rn   create_load_attrsr   r,   s     r   r/   zAttrSource.reconstruct   +    		g77DEr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zAttrSource.guard_source   ry   r0   c                     | j                   j                         s+d| j                  j                          d| j                   dS | j                  j                          d| j                    S )Nzgetattr(, )r   )r   isidentifierrv   r   r3   s    r   r   zAttrSource.name   sX    {{'')diinn./r$++BB)).."#1T[[M22r0   r   Nr7   
r8   r9   r:   r;   r<   r   r/   r
   r   r   r?   r0   r   r   r      s+    KAF(k (3c 3r0   r   c                   @    e Zd ZU eed<   ddZd	dZdefdZdefdZ	y)
GenericAttrSourcer   r   Nc                 ,   | j                   sJ d       d| j                  v rs| j                  j                  d      }t        j	                  | dt        | j                   dj                  |d d                    t        j	                  | d|d          y y r   r   r   s     r   r   zGenericAttrSource.__post_init__   r   r0   c                 |     || j                          |j                  |j                  | j                               y r(   r   r,   s     r   r/   zGenericAttrSource.reconstruct	  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zGenericAttrSource.guard_source  ry   r0   c                 X    d| j                   j                          d| j                  dS )Nzobject.__getattribute__(r   r   rv   r   r   r3   s    r   r   zGenericAttrSource.name  s'    )$))..*:);2dkk_ANNr0   r   r7   r   r?   r0   r   r   r      s-    KAF(k (Oc Or0   r   c                   ,    e Zd ZddZdefdZdefdZy)TypeDictSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__dict__rv   rn   r   r,   s     r   r/   zTypeDictSource.reconstruct  '    		g77
CDr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zTypeDictSource.guard_source  ry   r0   c                 >    d| j                   j                          dS )Nzdict(z
.__dict__)r{   r3   s    r   r   zTypeDictSource.name  s    
 tyy~~'(
33r0   r7   r|   r?   r0   r   r   r     s     E(k (4c 4r0   r   c                   ,    e Zd ZddZdefdZdefdZy)TypeMROSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__mro__r   r,   s     r   r/   zTypeMROSource.reconstruct)  '    		g77	BCr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zTypeMROSource.guard_source-  ry   r0   c                 <    | j                   j                          dS )Nz.__mro__r{   r3   s    r   r   zTypeMROSource.name0  s    )).."#8,,r0   r7   r|   r?   r0   r   r   r   '  s     D(k (-c -r0   r   c                   $    e Zd ZU dZeed<   ddZy)LocalCellSourcez
    Conceptually, this class is `LocalSource` for cell objects implicitly
    generated by Python (e.g., captured variables).
    r#   Nc                 X    |j                  |j                  | j                               y r(   )r*   create_load_closurer#   r,   s     r   r/   zLocalCellSource.reconstruct=  s!     	g99$//JKr0   r7   )r8   r9   r:   __doc__r;   r<   r/   r?   r0   r   r   r   4  s    
 OLr0   r   c                   ,    e Zd ZddZdefdZdefdZy)
CodeSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__code__r   r,   s     r   r/   zCodeSource.reconstructJ  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zCodeSource.guard_sourceN  ry   r0   c                 <    | j                   j                          dS )Nz	.__code__r{   r3   s    r   r   zCodeSource.nameQ  s    )).."#9--r0   r7   r|   r?   r0   r   r   r   H  s     E(k (.c .r0   r   c                   ,    e Zd ZddZdefdZdefdZy)ClosureSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__closure__r   r,   s     r   r/   zClosureSource.reconstructX  s'    		g77FGr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zClosureSource.guard_source\  ry   r0   c                 <    | j                   j                          dS )Nz.__closure__r{   r3   s    r   r   zClosureSource.name_  s    )).."#<00r0   r7   r|   r?   r0   r   r   r   V  s     H(k (1c 1r0   r   c                   <    e Zd ZU dZeed<   ddZdefdZdefdZ	y)	
GradSourcegradr   r   Nc                 |     || j                          |j                  |j                  | j                               y r(   r   r,   s     r   r/   zGradSource.reconstructk  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zGradSource.guard_sourceo  ry   r0   c                 T    | j                   j                          d| j                   S )Nr   r   r3   s    r   r   zGradSource.namer  s#    )).."#1T[[M22r0   r7   )
r8   r9   r:   r   r;   r<   r/   r
   r   r   r?   r0   r   r   r   g  s*    FCF(k (3c 3r0   r   c                       e Zd ZdefdZy)ParamBufferSourcer   c                 D    t         | j                  j                            S r(   #_GUARD_SOURCE_SPECIALIZED_NN_MODULErv   r   r3   s    r   r   zParamBufferSource.guard_sourcex      24993I3I3KLLr0   Nr8   r9   r:   r
   r   r?   r0   r   r   r   v  s    Mk Mr0   r   c                       e Zd Zy)UnspecializedParamBufferSourceNr   r?   r0   r   r   r   }  r   r0   r   c                   `    e Zd ZU dZee   ed<   defdZdefdZ	de
def   defdZdefd	Zy)
EphemeralSourceNdescr   c                 "    t         j                  S r(   )r
   	EPHEMERALr3   s    r   r   zEphemeralSource.guard_source      $$$r0   c                 J    d| j                   d| j                   z    dS d dS )Nz
<ephemeralz:  >)r   r3   s    r   r   zEphemeralSource.name  s1    		0ED499,NaPP2NaPPr0   fn.c                     t         r(   r   r-   r   s     r   
make_guardzEphemeralSource.make_guard      !!r0   c                      yNTr?   r3   s    r   is_ephemeralzEphemeralSource.is_ephemeral      r0   )r8   r9   r:   r   r   r;   r<   r
   r   r   r   r   r	   r   r=   r   r?   r0   r   r   r     sR    D(3-%k %Qc Q"Xc3h/ "E "d r0   r   c                   ,    e Zd ZddZdefdZdefdZy)SkipGuardSourcer   Nc                 :    | j                   j                  |       y r(   )rv   r/   r,   s     r   r/   zSkipGuardSource.reconstruct  s    		g&r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zSkipGuardSource.guard_source  ry   r0   c                 6    | j                   j                         S r(   r{   r3   s    r   r   zSkipGuardSource.name      yy~~r0   r7   r|   r?   r0   r   r   r     s    '(k ( c  r0   r   c                   $    e Zd ZdZdZdZdefdZy)TensorPropertyr   r      r   c                     | t         j                  u ry| t         j                  u ry| t         j                  u ryt	        d|        )Nsizestridestorage_offset
unhandled )r   SIZESTRIDESTORAGE_OFFSETAssertionErrorr3   s    r   method_namezTensorProperty.method_name  sG    >&&&^***^222# :dV!455r0   N)r8   r9   r:   r   r   r   r;   r   r?   r0   r   r   r     s    DFN6S 6r0   r   c                   T    e Zd ZU eed<   dZee   ed<   d	dZd
dZ	de
fdZdefdZy)TensorPropertySourcepropNidxr   c                     | j                   J | j                  t        j                  u r| j                  J y | j                  J y r(   )rv   r   r   r   r   r3   s    r   r   z"TensorPropertySource.__post_init__  sD    yy$$$9955588###88'''r0   c                     j                   fd         j                          j                  *j                  j	                   j                               j                  t         j                  dndd             y )Nc                  z     j                  t        j                  dj                  j	                                S )Ncall_)load_import_fromr   r8   r   r   rj   s   r   rk   z2TensorPropertySource.reconstruct.<locals>.<lambda>  s0    G,,%		(=(=(?'@ A r0   r   r   F)rm   rv   r   r*   rR   rn   r   r,   s   ``r   r/   z TensorPropertySource.reconstruct  sn    	

 			88!!'";";DHH"EF dhh&:5I	
r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z!TensorPropertySource.guard_source  ry   r0   c                    | j                   t        j                  u r*| j                  j	                          d| j
                   dS | j                   t        j                  u r*| j                  j	                          d| j
                   dS | j                   t        j                  u r+| j
                  J | j                  j	                          dS t        d| j                          )Nz.size()[r5   z
.stride()[z.storage_offset()r   )	r   r   r   rv   r   r   r   r   r   r3   s    r   r   zTensorPropertySource.name  s    99+++iinn&'xz;;YY.///iinn&'z$((1==YY.77788###iinn&''899 :dii[!9::r0   r   r7   )r8   r9   r:   r   r<   r   r   rU   r   r/   r
   r   r;   r   r?   r0   r   r   r     s8    
C#(
(k (	;c 	;r0   r   c                   @    e Zd ZU eed<   ddZd	dZdefdZde	fdZ
y)
IndexedSourcer   r   Nc                      | j                   J y r(   ru   r3   s    r   r   zIndexedSource.__post_init__      yy$$$r0   c                     t         r(   r   r,   s     r   r/   zIndexedSource.reconstruct  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zIndexedSource.guard_source  ry   r0   c                 X    d| j                    d| j                  j                          dS )N(r   r   )r   rv   r   r3   s    r   r   zIndexedSource.name  s'    488*Btyy~~/022r0   r   r7   )r8   r9   r:   rU   r<   r   r/   r
   r   r;   r   r?   r0   r   r  r    s)    	H%"(k (3c 3r0   r  c                   4    e Zd ZddZddZdefdZdefdZy)	NegateSourcer   Nc                      | j                   J y r(   ru   r3   s    r   r   zNegateSource.__post_init__  r  r0   c                     t         r(   r   r,   s     r   r/   zNegateSource.reconstruct  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zNegateSource.guard_source  ry   r0   c                 <    | j                   j                          dS )Nz
.__neg__()r{   r3   s    r   r   zNegateSource.name  s    )).."#:..r0   r   r7   	r8   r9   r:   r   r/   r
   r   r;   r   r?   r0   r   r  r    s$    %"(k (/c /r0   r  c                   4    e Zd ZddZddZdefdZdefdZy)	ConvertIntSourcer   Nc                      | j                   J y r(   ru   r3   s    r   r   zConvertIntSource.__post_init__  r  r0   c                 (     || j                          y r(   ru   r,   s     r   r/   zConvertIntSource.reconstruct      		r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zConvertIntSource.guard_source
  ry   r0   c                 >    d| j                   j                          dS )Nz!cast_symbool_to_symint_guardless(r   r{   r3   s    r   r   zConvertIntSource.name  s    2499>>3C2DAFFr0   r   r7   r  r?   r0   r   r  r    s&    %(k (Gc Gr0   r  c                   4    e Zd ZddZddZdefdZdefdZy)	FlattenScriptObjectSourcer   Nc                      | j                   J y r(   ru   r3   s    r   r   z'FlattenScriptObjectSource.__post_init__  r  r0   c                 (     || j                          y r(   ru   r,   s     r   r/   z%FlattenScriptObjectSource.reconstruct  r  r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z&FlattenScriptObjectSource.guard_source  ry   r0   c                 <    | j                   j                          dS )Nz.__obj_flatten__()r{   r3   s    r   r   zFlattenScriptObjectSource.name  s    )).."##566r0   r   r7   r  r?   r0   r   r  r    s$    %(k (7c 7r0   r  c                   4    e Zd ZddZddZdefdZdefdZy)	ScriptObjectQualifiedNameSourcer   Nc                      | j                   J y r(   ru   r3   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__"  r  r0   c                 (     || j                          y r(   ru   r,   s     r   r/   z+ScriptObjectQualifiedNameSource.reconstruct%  r  r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z,ScriptObjectQualifiedNameSource.guard_source(  ry   r0   c                 <    | j                   j                          dS )Nz._type().qualified_name()r{   r3   s    r   r   z$ScriptObjectQualifiedNameSource.name+  s    )).."##<==r0   r   r7   r  r?   r0   r   r   r      s$    %(k (>c >r0   r   c                   ,    e Zd ZddZdefdZdefdZy)AttrProxySourcer   Nc                 (     || j                          y r(   ru   r,   s     r   r/   zAttrProxySource.reconstruct0  r  r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zAttrProxySource.guard_source3  ry   r0   c                 <    | j                   j                          dS )Nz.get_base()r{   r3   s    r   r   zAttrProxySource.name6  s    )).."#;//r0   r7   r|   r?   r0   r   r&  r&  /  s    (k (0c 0r0   r&  c                       e Zd ZU eeef   ed<   dZeed<    e	j                  ddd      Z
eed<    e	j                  ddd      Zeed<   dd	Zdd
ZdefdZdefdZy)DefaultsSourceidx_keyFis_kw)initr6   comparefield_namer   Nc           
      @   | j                   sJ d       | j                  rt        | j                  t              sJ t
        j                  | dd       t
        j                  | d| j                   j                          d| j                   d| j                   d       y t        | j                  t              sJ t
        j                  | dd       t
        j                  | d| j                   j                          d| j                   d	| j                   d
       y )Nz]Base must be a valid source in order to properly track and guard this Defaults to its origin.r0  __kwdefaults__r1  r   z['z']__defaults__[r5   )
rv   r-  r   r,  r;   r   r   r   r0  rU   r3   s    r   r   zDefaultsSource.__post_init__A  s    yy 	
k	
y ::dllC000tW.>?g$)).."2!31TZZL4<<.PRS dllC000tWn=g$)).."2!31TZZL$,,qQr0   c                     || j                          |j                  |j                  | j                               |j	                  |j                  | j                               |j	                  t        d             y rM   )rv   rn   r   r0  r*   rR   r,  r   r,   s     r   r/   zDefaultsSource.reconstructR  s\    		g77

CDg77EF0ABr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zDefaultsSource.guard_sourceX  ry   r0   c                     | j                   S r(   )r1  r3   s    r   r   zDefaultsSource.name[  s    zzr0   r   r7   )r8   r9   r:   r   rU   r;   r<   r-  r=   dataclassesr0  r1  r   r/   r
   r   r   r?   r0   r   r+  r+  :  ss    38_E4"""E5IE3I"""E5IE3I"C(k (c r0   r+  c                   f     e Zd ZU eed<   dZeed<   d
 fdZddZde	fdZ
defdZdefd	Z xZS )GetItemSourceindexFindex_is_slicer   c                     | j                   J t        | j                  t              r9t        |   d| j                  j                                t        |   dd       y y )Nr<  r=  T)rv   r   r<  slicesuperr   
__reduce__)r-   	__class__s    r   r   zGetItemSource.__post_init__d  sR    yy$$$djj%(G)>)>)@AG 0$7 )r0   c                 &    || j                          | j                  r/|j                  |j                  | j	                                      n*|j                  |j                  | j
                               |j                  t        d             y rM   )rv   r=  r*   rR   unpack_slicer<  r   r,   s     r   r/   zGetItemSource.reconstructk  sj    		!!'";";D<M<M<O"PQ!!'";";DJJ"GH0ABr0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zGetItemSource.guard_sources  ry   r0   c                 F    | j                   sJ | j                  \  }} || S r(   )r=  r<  )r-   slice_class
slice_argss      r   rD  zGetItemSource.unpack_slicev  s*    """""&**ZJ''r0   c                    t        | j                  t              rJ | j                  r.| j                  j                          d| j                         dS | j                  j                          d| j                  dS Nr5  r5   )r   r<  r   r=  rv   r   rD  r3   s    r   r   zGetItemSource.name{  sm     djj&111iinn&'q):):)<(?qAAiinn&'qa88r0   r   r7   )r8   r9   r:   r   r<   r=  r=   r   r/   r
   r   r?  rD  r;   r   __classcell__rB  s   @r   r;  r;  _  sA    J ND 8C(k ((e (
9c 9r0   r;  c                   D    e Zd ZU eed<   defdZddZdefdZ	de
fdZy)	ConstDictKeySourcer<  r   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zConstDictKeySource.guard_source  ry   r0   Nc                     j                  fd        | j                         j                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Ndict_keys_getitemr   r   r8   r.   s   r   rk   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^^=PQ r0   r   Frm   rv   r*   rR   r<  rn   r   r,   s    `r   r/   zConstDictKeySource.reconstruct  sU    Q	
 			g77

CD21e<=r0   c                 X    d| j                   j                          d| j                  dS )Nzlist(dict.keys(z))[r5   rv   r   r<  r3   s    r   r   zConstDictKeySource.name  s'     !1 2#djj^1EEr0   c                      yr   r?   r3   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r0   r7   )r8   r9   r:   r   r<   r
   r   r/   r;   r   r=   rY  r?   r0   r   rN  rN    s2    J(k (>Fc FT r0   rN  c                   L    e Zd ZU eed<   d	dZdefdZd
dZde	fdZ
defdZy)NonSerializableSetGetItemSourcer<  r   Nc                 J    ddl m} |j                  | j                        sJ y Nr   )ConstantVariable)	variablesr^  
is_literalr<  r-   r^  s     r   r   z-NonSerializableSetGetItemSource.__post_init__  s    /**4::666r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z,NonSerializableSetGetItemSource.guard_source  ry   r0   c                     j                  fd        | j                         j                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Nset_getitemrS  rT  s   r   rk   z=NonSerializableSetGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^^]K r0   r   FrU  r,   s    `r   r/   z+NonSerializableSetGetItemSource.reconstruct  sU    K	
 			g77

CD21e<=r0   c                 X    d| j                   j                          d| j                  dS )Nzlist(z)[r5   rW  r3   s    r   r   z$NonSerializableSetGetItemSource.name  s'    tyy~~'(4::.::r0   c                      y)NFr?   r3   s    r   rY  z+NonSerializableSetGetItemSource.is_dict_key  s    r0   r   r7   )r8   r9   r:   rU   r<   r   r
   r   r/   r;   r   r=   rY  r?   r0   r   r[  r[    s5    J7
(k (>;c ;T r0   r[  c                   @    e Zd ZU eed<   ddZdefdZd	dZde	fdZ
y)
DictGetItemSourcer<  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y r]  r_  r^  r   r<  rN  r`  ra  s     r   r   zDictGetItemSource.__post_init__  ;    /JJ*
((4	5 54
r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zDictGetItemSource.guard_source  ry   r0   c                 
    || j                          t        | j                  t              r || j                         n*|j	                  |j                  | j                               |j	                  t        d             y rM   )rv   r   r<  r   r*   rR   r   r,   s     r   r/   zDictGetItemSource.reconstruct  s[    		 djj&)DJJ!!'";";DJJ"GH0ABr0   c                     t        | j                  t              r8| j                  j	                          d| j                  j	                          dS | j                  j	                          d| j                  dS rJ  r   r<  rN  rv   r   r3   s    r   r   zDictGetItemSource.name  s_    djj"45iinn&'q):(;1==iinn&'qa88r0   r   r7   r8   r9   r:   r   r<   r   r
   r   r/   r;   r   r?   r0   r   ri  ri    s,    
 J5(k (	C9c 9r0   ri  c                   @    e Zd ZU eed<   ddZdefdZd	dZde	fdZ
y)
DictSubclassGetItemSourcer<  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y r]  rk  ra  s     r   r   z'DictSubclassGetItemSource.__post_init__  rl  r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z&DictSubclassGetItemSource.guard_source  ry   r0   c                 6   j                  fd        | j                         t        | j                  t              r | j                         n*j                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Ndict_getitemrS  rT  s   r   rk   z7DictSubclassGetItemSource.reconstruct.<locals>.<lambda>      G,,U^^^L r0   r   F)	rm   rv   r   r<  r   r*   rR   rn   r   r,   s    `r   r/   z%DictSubclassGetItemSource.reconstruct  ss     	L	

 			 djj&)DJJ!!'";";DJJ"GH21e<=r0   c                     t        | j                  t              r9d| j                  j	                          d| j                  j	                          dS | j                  j	                          d| j                  dS )Nzdict.__getitem__(r   r   r5  r5   rp  r3   s    r   r   zDictSubclassGetItemSource.name  sa    djj"45&tyy~~'7&84::??;L:MQOOiinn&'qa88r0   r   r7   rq  r?   r0   r   rs  rs    s+    
 J5(k (>&9c 9r0   rs  c                   $    e Zd ZdZddZdefdZy)ListGetItemSourcezY
    Same as GetItemSource with reconstruct and name overridden to be list specific.
    r   Nc                 
   j                  fd        | j                         | j                  rt        d      j	                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Nlist_getitemrS  rT  s   r   rk   z/ListGetItemSource.reconstruct.<locals>.<lambda>  ry  r0   >List[slice] is a temporary object and should not have a sourcer   F)	rm   rv   r=  RuntimeErrorr*   rR   r<  rn   r   r,   s    `r   r/   zListGetItemSource.reconstruct  st    
 	L	

 			 P  !!'";";DJJ"GH21e<=r0   c                     t        | j                  t              rJ | j                  rt	        d      d| j
                  j                          d| j                  dS )Nr  zlist.__getitem__(r   r   )r   r<  r   r=  r  rv   r   r3   s    r   r   zListGetItemSource.name&  sX     djj&111P  'tyy~~'7&84::.JJr0   r7   )r8   r9   r:   r   r/   r;   r   r?   r0   r   r|  r|  
  s    >,
Kc 
Kr0   r|  c                        e Zd ZddZdefdZy)TupleIteratorGetItemSourcer   Nc                     j                  fd        | j                         j                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Ntuple_iterator_getitemrS  rT  s   r   rk   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>7  s    G,,U^^=UV r0   r   FrU  r,   s    `r   r/   z&TupleIteratorGetItemSource.reconstruct5  sU    V	
 			g77

CD21e<=r0   c                 X    d| j                   j                          d| j                  dS )Nz___tuple_iterator_getitem(r   r   rW  r3   s    r   r   zTupleIteratorGetItemSource.name=  s'    +DIINN,<+=R

~QOOr0   r7   )r8   r9   r:   r/   r;   r   r?   r0   r   r  r  3  s    >Pc Pr0   r  c                   ,    e Zd ZddZdefdZdefdZy)NamedTupleFieldsSourcer   Nc                 h     || j                          |j                  |j                  d             y )N_fieldsr   r,   s     r   r/   z"NamedTupleFieldsSource.reconstructC  r   r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z#NamedTupleFieldsSource.guard_sourceG  ry   r0   c                 >    d| j                   j                          dS )Nz___namedtuple_fields(r   r{   r3   s    r   r   zNamedTupleFieldsSource.nameJ  s    &tyy~~'7&8::r0   r7   r|   r?   r0   r   r  r  A  s     D(k (;c ;r0   r  c                   ,    e Zd ZddZdefdZdefdZy)DataclassFieldsSourcer   Nc                     j                  fd        | j                         j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Ndataclass_fieldsrS  rT  s   r   rk   z3DataclassFieldsSource.reconstruct.<locals>.<lambda>R  s    G,,U^^=OP r0   r   Frm   rv   rn   r   r,   s    `r   r/   z!DataclassFieldsSource.reconstructP  s8    P	
 			21e<=r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z"DataclassFieldsSource.guard_sourceW  ry   r0   c                 >    d| j                   j                          dS )Nz___dataclass_fields(r   r{   r3   s    r   r   zDataclassFieldsSource.nameZ  s    %diinn&6%7q99r0   r7   r|   r?   r0   r   r  r  N  s    >(k (:c :r0   r  c                   4    e Zd ZddZddZdefdZdefdZy)	
TypeSourcer   Nc                      | j                   J y r(   ru   r3   s    r   r   zTypeSource.__post_init__`  r  r0   c                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nbuiltinstyper   rT  s   r   rk   z(TypeSource.reconstruct.<locals>.<lambda>d  s    g&>&>z6&R r0   r   Fr  r,   s    `r   r/   zTypeSource.reconstructc  s4    RS		21e<=r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zTypeSource.guard_sourceh  ry   r0   c                 >    d| j                   j                          dS )Nztype(r   r{   r3   s    r   r   zTypeSource.namek  s    tyy~~'(**r0   r   r7   r  r?   r0   r   r  r  ^  s$    %>
(k (+c +r0   r  c                   ,    e Zd ZddZdefdZdefdZy)OptimizerSourcer   Nc                 (     || j                          y r(   ru   r,   s     r   r/   zOptimizerSource.reconstructq  r  r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zOptimizerSource.guard_sourcet  ry   r0   c                 6    | j                   j                         S r(   r{   r3   s    r   r   zOptimizerSource.namew  r   r0   r7   r|   r?   r0   r   r  r  o  s    (k ( c  r0   r  c                   ,    e Zd ZddZdefdZdefdZy)NNModuleSourcer   Nc                 (     || j                          y r(   ru   r,   s     r   r/   zNNModuleSource.reconstruct}  r  r0   c                 D    t         | j                  j                            S r(   r   r3   s    r   r   zNNModuleSource.guard_source  r   r0   c                 6    | j                   j                         S r(   r{   r3   s    r   r   zNNModuleSource.name  r   r0   r7   r|   r?   r0   r   r  r  {  s!    Mk M c  r0   r  c                       e Zd ZdefdZy)UnspecializedNNModuleSourcer   c                 D    t         | j                  j                            S r(   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULErv   r   r3   s    r   r   z(UnspecializedNNModuleSource.guard_source  s    4TYY5K5K5MNNr0   Nr   r?   r0   r   r  r    s    Ok Or0   r  c                       e Zd ZdefdZy)"UnspecializedBuiltinNNModuleSourcer   c                 D    t         | j                  j                            S r(   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULErv   r   r3   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_source  s    <TYY=S=S=UVVr0   Nr   r?   r0   r   r  r    s    Wk Wr0   r  c                       e Zd ZdefdZy)FSDPNNModuleSourcer   c                 D    t         | j                  j                            S r(   )_GUARD_SOURCE_FSDP_MODULErv   r   r3   s    r   r   zFSDPNNModuleSource.guard_source  s    ()?)?)ABBr0   Nr   r?   r0   r   r  r    s    Ck Cr0   r  c                   $    e Zd ZdefdZdefdZy)GlobalStateSourcer   c                      yNr   r?   r3   s    r   r   zGlobalStateSource.name      r0   c                 "    t         j                  S r(   r`   r3   s    r   r   zGlobalStateSource.guard_source  rb   r0   Nr8   r9   r:   r;   r   r
   r   r?   r0   r   r  r    s    c "k "r0   r  c                   P     e Zd ZdZdededdf fdZdefdZd
dZde	fd	Z
 xZS )TorchSourcezPoints to the actual `torch` module - used instead of GlobalSource
    in case the user has overridden `torch` in their local namespaceargskwargsr   Nc                 v    t        |   |i | ddlm}m}  || j                  |j                               y )Nr   )GuardBuilderinstall_guard)r@  __init__guardsr  r  r   ID_MATCH)r-   r  r  r  r  rB  s        r   r  zTorchSource.__init__  s/    $)&)7dool&;&;<=r0   c                      y)Nz__import__('torch')r?   r3   s    r   r   zTorchSource.name  s    $r0   c                 ~    |j                  |j                  d      t        dd      |j                  d      g       y )Nr   BUILD_TUPLE)argtorch)rn   rR   r   create_import_namer,   s     r   r/   zTorchSource.reconstruct  s;    ))!,"=a8**73	
r0   c                 "    t         j                  S r(   r`   r3   s    r   r   zTorchSource.guard_source  rb   r0   r7   )r8   r9   r:   r   r   r  r;   r   r/   r
   r   rK  rL  s   @r   r  r    s@    H>c >S >T >%c %
"k "r0   r  c                   D    e Zd ZU eed<   defdZdefdZddZde	fdZ
y)	TorchFunctionModeStackSourceindr   c                 *    d| j                          dS )Nz$___get_torch_function_mode_stack_at(r   )
_get_indexr3   s    r   r   z!TorchFunctionModeStackSource.name  s    5doo6G5HJJr0   c                 D    ddl m} |j                  | j                        S )Nr   )TorchFunctionModeStackVariable)variables.torch_functionr  get_mode_indexr  )r-   r  s     r   r  z'TorchFunctionModeStackSource._get_index  s    L-<<TXXFFr0   Nc                     j                  fd       j                  j                  | j                               g       j                  t	        dd             y )Nc                  D     j                  t        j                  d      S )N get_torch_function_mode_stack_atrS  rT  s   r   rk   z:TorchFunctionModeStackSource.reconstruct.<locals>.<lambda>  s    G,, B r0   r   F)rm   rn   rR   r  r   r,   s    `r   r/   z(TorchFunctionModeStackSource.reconstruct  sQ    	

 	w889JKLM21e<=r0   c                 "    t         j                  S r(   r`   r3   s    r   r   z)TorchFunctionModeStackSource.guard_source  rb   r0   r7   )r8   r9   r:   rU   r<   r;   r   r  r/   r
   r   r?   r0   r   r  r    s4    	HKc KGC G
>"k "r0   r  c                   H    e Zd ZU eed<   d	dZdefdZdefdZde	de	fdZ
y)
r   source_namer   Nc                 \    |j                  |j                  | j                  d             y )NFr[   )r*   r^   r  r,   s     r   r/   zConstantSource.reconstruct  s&    g889I9Iu8UVr0   c                 "    t         j                  S r(   )r
   r   r3   s    r   r   zConstantSource.guard_source  s    ###r0   c                     | j                   S r(   )r  r3   s    r   r   zConstantSource.name  s    r0   r   c                     t         r(   r   r   s     r   r   zConstantSource.make_guard  r   r0   r7   )r8   r9   r:   r;   r<   r/   r
   r   r   r   r   r?   r0   r   r   r     s9    W$k $ c  "S "S "r0   r   c                   ,    e Zd ZdefdZdefdZddZy)NumpyTensorSourcer   c                 >    d| j                   j                          dS )Nz___from_numpy(r   r{   r3   s    r   r   zNumpyTensorSource.name  s    		 0133r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zNumpyTensorSource.guard_source  ry   r0   Nc                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nr  	as_tensorr  rT  s   r   rk   z/NumpyTensorSource.reconstruct.<locals>.<lambda>  s    g&>&>w&T r0   r   Fr  r,   s    `r   r/   zNumpyTensorSource.reconstruct  s4    TU		21e<=r0   r7   )r8   r9   r:   r;   r   r
   r   r/   r?   r0   r   r  r    s    4c 4(k (>r0   r  c                   $    e Zd ZdefdZdefdZy)SubclassAttrListSourcer   c                 <    | j                   j                          dS )Nz.__tensor_flatten__()[0]r{   r3   s    r   r   zSubclassAttrListSource.name  s    )).."##;<<r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z#SubclassAttrListSource.guard_source  ry   r0   Nr  r?   r0   r   r  r    s    =c =(k (r0   r  c                   $    e Zd ZdefdZdefdZy)FloatTensorSourcer   c                 >    d| j                   j                          dS )Nz___as_tensor(r   r{   r3   s    r   r   zFloatTensorSource.name  s    tyy~~/022r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   zFloatTensorSource.guard_source  ry   r0   Nr  r?   r0   r   r  r     s    3c 3(k (r0   r  c                   $    e Zd ZdefdZdefdZy)CallMethodItemSourcer   c                 <    | j                   j                          dS )Nz.item()r{   r3   s    r   r   zCallMethodItemSource.name  s    )).."#7++r0   c                 6    | j                   j                         S r(   rx   r3   s    r   r   z!CallMethodItemSource.guard_source  ry   r0   Nr  r?   r0   r   r  r  	  s    ,c ,(k (r0   r  c                   $    e Zd ZdefdZdefdZy)ShapeEnvSourcer   c                      yr  r?   r3   s    r   r   zShapeEnvSource.name  r  r0   c                 "    t         j                  S r(   )r
   	SHAPE_ENVr3   s    r   r   zShapeEnvSource.guard_source  r   r0   Nr  r?   r0   r   r  r    s    c %k %r0   r  c                   $    e Zd ZdefdZdefdZy)BackwardStateSourcer   c                      yr  r?   r3   s    r   r   zBackwardStateSource.name   r  r0   c                 "    t         j                  S r(   )r
   BACKWARD_STATEr3   s    r   r   z BackwardStateSource.guard_source#  s    )))r0   Nr  r?   r0   r   r  r    s    c *k *r0   r  Fonly_allow_inputr   c                    t        | t              rt        | j                  |      S t        | t              sy |r| j
                  sy | j                  S Nr  )r   r   get_local_source_namerv   r"   r$   r#   r   r   s     r   r  r  '  sE     &-($V[[CSTTfk*r0   c                     t        | |      d uS r  )r  r  s     r   is_from_local_sourcer  3  s     :JKSWWWr0   c                     t        |       d uS r(   )get_global_source_namer   s    r   is_from_global_sourcer	  7  s    !&)55r0   c                     t        | t              rt        | j                        S t        | t              sy | j
                  S r(   )r   r   r  rv   rW   rX   r   s    r   r  r  ;  s4    &-(%fkk22fl+r0   c                     t        | t              rt        | j                        S t        | t              xr | j
                  xr | j                   S r(   )r   r   is_from_nonlocal_sourcerv   r"   r&   r$   r   s    r   r  r  C  sG    &-(&v{{336;' 	 ++	 r0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   is_from_closure_sourcerv   r   s    r   r  r  M  s+    &-(&-(%fkk22r0   targetc                 X    t        | t              rt        | j                  |      S | |k(  S r(   )r   r   is_from_sourcerv   )r   r  s     r   r  r  U  s(    &-(fkk622Vr0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   &is_from_unspecialized_nn_module_sourcerv   r   s    r   r  r  [  s,    &56&-(5fkkBBr0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   .is_from_unspecialized_builtin_nn_module_sourcerv   r   s    r   r  r  d  s,    &<=&-(=fkkJJr0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   )is_from_unspecialized_param_buffer_sourcerv   r   s    r   r  r  m  s,    &89&-(8EEr0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   $is_from_flatten_script_object_sourcerv   r   s    r   r  r  v  s,    &34	FM	*3FKK@@r0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   is_from_optimizer_sourcerv   r   s    r   r  r    s+    &/*&-('44r0   c                    t        | t              ryt        | t              r4t        | j                  t              r| j                  j
                  dk(  ryt        | t              r4t        | j                  t              r| j                  j
                  dk(  ryt        | t              rt        | j                        S y)NTr3  r4  F)	r   r+  ri  rv   r   r   r;  r   is_from_defaultsr   s    r   r  r    s    &.) 	6,-v{{J/KK"22 	6=)v{{J/KK.0&-(,,r0   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   is_from_skip_guard_sourcerv   r   s    r   r  r    s+    &/*&-((55r0   )nr   r9  enum	functoolstypingr   r   r   r   r   torch._guardsr   r	   r
   r   r   r   bytecode_transformationr   r   r.   r   r2   LOCAL_SPECIALIZED_NN_MODULEra   GLOBAL_SPECIALIZED_NN_MODULELOCAL_UNSPECIALIZED_NN_MODULEGLOBAL_UNSPECIALIZED_NN_MODULE%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULE&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULELOCAL_FSDP_MODULEGLOBAL_FSDP_MODULEr   r  r  r  r=   r   r;   r   	dataclassr"   rA   rH   rW   rg   rr   r~   r   r   r   r   r   r   r   r   r   r   r   r   Enumr   r   r  r  r  r  r   r&  r+  r;  rN  r[  ri  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r  r  r  r  	lru_cacher  r  r  r  r  r  r  r?   r0   r   <module>r0     s)  &    @ @ C C  M " {>>@@++[-T-T,,k.V.V--{/X/X..0Z0Z55{7h7h668j8j!!;#@#@""K$B$B' #  {@@BB--{/X/X..0Z0Z++[-V-V,,k.X.X55{7h7h668j8j!!;#@#@""K$B$B) %" {HHJJ--{/`/`..0b0b++[-^-^,,k.`.`55{7h7h668j8j!!;#@#@""K$B$B1 - {4466++[-J-J,,k.L.L!!;#@#@""K$B$B--{/L/L..0N0N55{7T7T668V8V 	v 	$ 	"6 "c " d#-& - $-8 d#
76 
7 $
7 d#8 8 $8 d#
.6 
. $
. d#0& 0 $0$ d#	' 	' $	' d#	0 	 $	 d#3 3 $32 d#O O $O0 d#4] 4 $4" d#	-M 	- $	- d#Lf L $L& d#	. 	. $	. d#	1M 	1 $	1  d#3 3 $3 d#M
 M $M d#	Z 	 $	 d#f  $  d# m   $ 6TYY 6  d#%;= %; $%;P d#3M 3 $3  d#/= / $/ d#G} G $G d#7 7 $7 d#>m > $>0m 0 d#!] ! $!H d##9M #9 $#9L d#  $, d#m  $8 d#9 9 $9H d#'9 '9 $'9T d#%K %K $%KP d#
P 
P $
P d#	;] 	; $	; d#:M : $: d#+ + $+  d# m   $  d# ]   $  d#O. O $O
 d#W)D W $W
 d#C C $C
 d#" " $" d#"& " $"4 d#"6 " $"0 d#"V " $"  d#
> 
> $
> d#(] ( $( d#( ( $( d#(= ( $( d#%V % $% d#*& * $* 16		)-	c]	 FK X Xd Xt X6& 6T 66 hsm F t 6 d 6 6 d  6 d   6 d   f     D   V    V   2 f   r0   