
    9j                        d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z ddlmZmZmZmZmZ ddlmZ dd	lmZmZmZ erdd
lmZ ej4                  ej6                  ej8                  ej:                  ej6                  ej6                  ej:                  ej:                  ej<                  ej<                  ej>                  ej>                  ej@                  ej@                  ejB                  ejB                  ejD                  ejD                  ejF                  ejF                  i
Z$ej4                  ej<                  ej8                  ej>                  ej<                  ej<                  ej>                  ej>                  ej6                  ej<                  ej:                  ej>                  ej@                  ej@                  ejB                  ejB                  ejD                  ejD                  ejF                  ejF                  i
Z%ej4                  ej@                  ej8                  ejB                  ej<                  ej@                  ej>                  ejB                  ej6                  ej@                  ej:                  ejB                  ej@                  ej@                  ejB                  ejB                  ejD                  ejD                  ejF                  ejF                  i
Z&ej4                  ejD                  ej8                  ejF                  ej6                  ejD                  ej:                  ejF                  ejD                  ejD                  ejF                  ejF                  ej<                  ejD                  ej>                  ejF                  ej@                  ejD                  ejB                  ejF                  i
Z'dede(fdZ)dedz  de*fdZ+ddede(de*fdZ, ed       G d de             Z- ed       G d de             Z. ed       G d de             Z/ ed       G d de             Z0 ed       G d de             Z1 ed       G d d e             Z2 ed       G d! d"e             Z3 ed       G d# d$e3             Z4 ed       G d% d&e             Z5 ed       G d' d(e5             Z6 ed       G d) d*e             Z7 ed       G d+ d,e             Z8 ed       G d- d.e             Z9 ed       G d/ d0e             Z: ed       G d1 d2e             Z; ed       G d3 d4e             Z< ed       G d5 d6e             Z= ed       G d7 d8e5             Z> ed       G d9 d:e5             Z? ed       G d; d<e             Z@ ed       G d= d>e             ZA G d? d@ej                        ZC ed       G dA dBe             ZD ed       G dC dDe             ZE ed       G dE dFe             ZF ed       G dG dHe             ZG ed       G dI dJe             ZH ed       G dK dLe             ZI ed       G dM dNe             ZJ G dO dPe      ZK ed       G dQ dRe             ZL ed       G dS dTe             ZM ed       G dU dVe             ZN ed       G dW dXe             ZO ed       G dY dZe             ZP ed       G d[ d\e             ZQ ed       G d] d^eM             ZR ed       G d_ d`eM             ZS ed       G da dbe             ZT ed       G dc dde             ZU ed       G de dfe             ZV ed       G dg dhe             ZW ed       G di dje             ZX ed       G dk dleX             ZY ed       G dm dneY             ZZ ed       G do dpeX             Z[ ed       G dq dre             Z\ ed       G ds dte             Z] ed       G du dve             Z^ ed       G dw dxe             Z_ ed       G dy dze             Z` ed       G d{ d|e             Za ed       G d} d~e             Zb ed       G d de             Zc ed       G d de             Zd ed       G d de             Ze ed       G d de             Zfej                  dddede(de*dz  fd       Zhej                  dddede(de(fd       Ziej                  dede(fd       Zjej                  dedz  de*dz  fd       Zkej                  dede(fd       Zlej                  dede(fd       Zmej                  dedede(fd       Znej                  dede(fd       Zoej                  dede(fd       Zpej                  dede(fd       Zqej                  dede(fd       Zrej                  dede(fd       Zsej                  dede(fd       Ztej                  dede(fd       Zuy)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)Callable)AnyTYPE_CHECKING)device)ChainedSourcedataclass_with_cached_hashGuardGuardSourceSource   )utils)create_binary_subscrcreate_build_tuplecreate_call_function)	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    T/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_dynamo/source.pyis_constant_sourcer   m   sL    &.)+"6"66 7
   s   3 	??c                 @    | y	 | j                   S # t        $ r Y yw xY w)Nz<unknown source>)namer   r   s    r   _get_source_debug_namer    y   s+    ~!	&;;" 	&%	&s    	Fs
apply_reprc                 x    |rt        |       } nt        |       } | j                  dd      j                  dd      S )a!  
    Escapes curly brackets for format strings.
    e.g. "frozenset({0})" becomes "frozenset({{0}})".
    This is used by _name_template for example, because it's
    expected to return a format string, but we may wish to include
    strings that should not be accidentally formatted.
    {z{{}z}})reprstrreplace)r!   r"   s     r   _esc_strr)      s7     GF99S$''T22    T)frozenc                       e Zd ZU eed<   dZeed<   dZee   dz  ed<   dZ	eed<   ddZ
edefd	       Zej                  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)r1   
load_derefr.   append_outputcreate_loadselfcodegens     r   reconstructzLocalSource.reconstruct   s:    ((t/!!'"5"5doo"FGr*   c                 "    t         j                  S r3   )r
   LOCALr8   s    r   r   zLocalSource.guard_source   s       r*   c                 8    dt        | j                  d       dS )NzL[Tr"   ]r)   r.   r=   s    r   _name_templatezLocalSource._name_template   s    HT__>?qAAr*   r9   r   r   N)__name__
__module____qualname__r'   __annotations__r/   boolr0   	frozensetr1   r:   propertyr
   r   	functoolscached_propertyrB    r*   r   r-   r-      sz    O Hd '+Hint#*
 &+d*H !k ! ! B B Br*   r-   c                   L    e Zd ZU eed<   ddZedefd       Zedefd       Z	y)TempLocalSourcer.   r   Nc                 X    |j                  |j                  | j                               y r3   r5   r6   r.   r7   s     r   r:   zTempLocalSource.reconstruct       g11$//BCr*   c                 "    t         j                  S r3   )r
   
TEMP_LOCALr=   s    r   r   zTempLocalSource.guard_source   s    %%%r*   c                     t        d      )NzhCannot create guard on TempLocalSource - this is an internal Dynamo bug. Please file an issue on GitHub.r   r=   s    r   rB   zTempLocalSource._name_template   s    !v
 	
r*   rC   )
rD   rE   rF   r'   rG   r:   rJ   r
   r   rB   rM   r*   r   rO   rO      sE     OD &k & & 
 
 
r*   rO   c                   `    e Zd ZU eed<   ddZedefd       Ze	j                  defd       Zy)SyntheticLocalSourcer.   r   Nc                 X    |j                  |j                  | j                               y r3   rQ   r7   s     r   r:   z SyntheticLocalSource.reconstruct   rR   r*   c                 "    t         j                  S r3   )r
   SYNTHETIC_LOCALr=   s    r   r   z!SyntheticLocalSource.guard_source   s    ***r*   c                 8    dt        | j                  d       dS )NzSYNTHETIC_LOCAL[Tr?   r@   rA   r=   s    r   rB   z#SyntheticLocalSource._name_template   s    !(4??t"L!MQOOr*   rC   rD   rE   rF   r'   rG   r:   rJ   r
   r   rK   rL   rB   rM   r*   r   rX   rX      sL    OD +k + + P P Pr*   rX   c                   `    e Zd ZU eed<   edefd       ZddZe	j                  defd       Zy)RandomValueSourcerandom_call_indexr   c                 "    t         j                  S r3   )r
   RANDOM_VALUEr=   s    r   r   zRandomValueSource.guard_source   s    '''r*   Nc                    |j                  |j                  |j                  j                  j                               |j                  |j                  | j                               |j                  t                      y r3   )r5   r6   txoutputrandom_values_varcreate_load_constr`   r   r7   s     r   r:   zRandomValueSource.reconstruct   s\    g11'**2C2C2U2UVWg778N8NOP245r*   c                 2    dt        | j                         S )Nrandom_value_)r)   r`   r=   s    r   rB   z RandomValueSource._name_template   s    x(>(>?@AAr*   rC   )rD   rE   rF   intrG   rJ   r
   r   r:   rK   rL   r'   rB   rM   r*   r   r_   r_      sJ    (k ( (6
 B B Br*   r_   c                   `    e Zd ZU eed<   ddZedefd       Ze	j                  defd       Zy)GlobalSourceglobal_namer   Nc                 \    |j                  |j                  | j                  d             y NTaddr5   create_load_globalrm   r7   s     r   r:   zGlobalSource.reconstruct   s&    g889I9It8TUr*   c                 "    t         j                  S r3   r
   GLOBALr=   s    r   r   zGlobalSource.guard_source       !!!r*   c                 8    dt        | j                  d       dS )NG[Tr?   r@   r)   rm   r=   s    r   rB   zGlobalSource._name_template   s    HT--$?@BBr*   rC   r]   rM   r*   r   rl   rl      sM    V "k " " C C Cr*   rl   c                   `    e Zd ZU eed<   ddZedefd       Ze	j                  defd       Zy)GlobalWeakRefSourcerm   r   Nc                 h     j                   fd       j                  t        dd             y )Nc                  \     j                   j                  j                  d            S ro   rr   r9   r8   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s+    G))**4+;+;*F r*   r   Fadd_push_nullextend_outputr   r7   s   ``r   r:   zGlobalWeakRefSource.reconstruct   s.    	

 	21e<=r*   c                 "    t         j                  S r3   ru   r=   s    r   r   z GlobalWeakRefSource.guard_source  rw   r*   c                 8    dt        | j                  d       dS )Nry   Tr?   z]()rz   r=   s    r   rB   z"GlobalWeakRefSource._name_template  s    HT--$?@DDr*   rC   r]   rM   r*   r   r|   r|      sL    > "k " " E E Er*   r|   c                   *    e Zd ZddZedefd       Zy)WeakRefCallSourcer   Nc                 h     j                   fd       j                  t        dd             y )Nc                  (      j                         S r3   baser   s   r   r   z/WeakRefCallSource.reconstruct.<locals>.<lambda>  s    gdii&8 r*   r   Fr   r7   s   ``r   r:   zWeakRefCallSource.reconstruct  s(    8921e<=r*   c                      y)Nz{0}()rM   r=   s    r   rB   z WeakRefCallSource._name_template  s    r*   rC   rD   rE   rF   r:   rJ   r'   rB   rM   r*   r   r   r     s"    >   r*   r   c                       e Zd Zy)CallFunctionNoArgsSourceNrD   rE   rF   rM   r*   r   r   r         r*   r   c                   R    e Zd ZU eed<   ddZddZej                  defd       Z	y)	
AttrSourcememberr   Nc                 p    | j                   sJ d       d| j                  vsJ d| j                  d       y )Nz9Can't construct an AttrSource without a valid base source.z,AttrSource member must not contain '.', got =. Use OutputGraph.get_chained_attr_source() for dotted paths.r   r   r=   s    r   __post_init__zAttrSource.__post_init__  sE    yyUUUy$++% 	
:4;;/ JJ J	
%r*   c                 |     || j                          |j                  |j                  | j                               y r3   r   r   create_load_attrsr   r7   s     r   r:   zAttrSource.reconstruct&  +    		g77DEr*   c                     | j                   j                         sdt        | j                   d       dS dt        | j                          S )Nzgetattr({0}, Tr?   ){0}.)r   isidentifierr)   r=   s    r   rB   zAttrSource._name_template*  sD    {{'')$Xdkkd%K$LANN-.//r*   r   NrC   
rD   rE   rF   r'   rG   r   r:   rK   rL   rB   rM   r*   r   r   r     s3    K
F 0 0 0r*   r   c                   J    e Zd ZU dZ ej
                  d      Zeed<   ddZ	y)CellContentsSourcez
    Source for closure cell contents that also stores the freevar name.
    This allows guard failure messages to show which variable the closure cell refers to.
     )defaultfreevar_nameNc                 V    | j                   sJ d       | j                  dk(  sJ d       y )Nz@Can't construct a CellContentsSource without a valid base sourcecell_contentsz8CellContentsSource should only be used for cell_contentsr   r=   s    r   r   z CellContentsSource.__post_init__:  s6    yy 	
N	
y {{o- 	
F	
-r*   r   )
rD   rE   rF   __doc__dataclassesfieldr   r'   rG   r   rM   r*   r   r   r   1  s%    
 *))"5L#5
r*   r   c                   R    e Zd ZU eed<   ddZddZej                  defd       Z	y)	GenericAttrSourcer   r   Nc                 p    | j                   sJ d       d| j                  vsJ d| j                  d       y )Nz?Can't construct a GenericAttrSource without a valid base sourcer   z3GenericAttrSource member must not contain '.', got r   r   r=   s    r   r   zGenericAttrSource.__post_init__G  sK    yy 	
M	
y $++% 	
A$++ QJ J	
%r*   c                 |     || j                          |j                  |j                  | j                               y r3   r   r7   s     r   r:   zGenericAttrSource.reconstructP  r   r*   c                 8    dt        | j                  d       dS )Nzobject.__getattribute__({0}, Tr?   r   r)   r   r=   s    r   rB   z GenericAttrSource._name_templateT  s"     .ht{{t.T-UUVW	
r*   r   rC   r   rM   r*   r   r   r   C  s3    K
F 
 
 
r*   r   c                   *    e Zd ZddZedefd       Zy)TypeDictSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__dict__r   r   r   r7   s     r   r:   zTypeDictSource.reconstruct^  '    		g77
CDr*   c                      y)Nzdict({0}.__dict__)rM   r=   s    r   rB   zTypeDictSource._name_templateb  s     $r*   rC   r   rM   r*   r   r   r   \  s#    E $ $ $r*   r   c                   *    e Zd ZddZedefd       Zy)TypeMROSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__mro__r   r7   s     r   r:   zTypeMROSource.reconstructn  '    		g77	BCr*   c                      y)Nz{0}.__mro__rM   r=   s    r   rB   zTypeMROSource._name_templater  s    r*   rC   r   rM   r*   r   r   r   l  s#    D   r*   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 r3   )r5   create_load_closurer.   r7   s     r   r:   zLocalCellSource.reconstruct  s!     	g99$//JKr*   rC   )rD   rE   rF   r   r'   rG   r:   rM   r*   r   r   r   w  s    
 OLr*   r   c                   *    e Zd ZddZedefd       Zy)
CodeSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__code__r   r7   s     r   r:   zCodeSource.reconstruct  r   r*   c                      y)Nz{0}.__code__rM   r=   s    r   rB   zCodeSource._name_template  s    r*   rC   r   rM   r*   r   r   r     s#    E   r*   r   c                   *    e Zd ZddZedefd       Zy)ClosureSourcer   Nc                 h     || j                          |j                  |j                  d             y )N__closure__r   r7   s     r   r:   zClosureSource.reconstruct  s'    		g77FGr*   c                      y)Nz{0}.__closure__rM   r=   s    r   rB   zClosureSource._name_template  s     r*   rC   r   rM   r*   r   r   r     s#    H ! ! !r*   r   c                   N    e Zd ZU dZeed<   ddZej                  defd       Z	y)
GradSourcegradr   r   Nc                 |     || j                          |j                  |j                  | j                               y r3   r   r7   s     r   r:   zGradSource.reconstruct  r   r*   c                 2    dt        | j                         S )Nr   r   r=   s    r   rB   zGradSource._name_template  s    -.//r*   rC   )
rD   rE   rF   r   r'   rG   r:   rK   rL   rB   rM   r*   r   r   r     s3    FCF 0 0 0r*   r   c                   6    e Zd Zej                  defd       Zy)ParamBufferSourcer   c                 <    t         | j                  j                     S r3   #_GUARD_SOURCE_SPECIALIZED_NN_MODULEr   r   r=   s    r   r   zParamBufferSource.guard_source      24993I3IJJr*   NrD   rE   rF   rK   rL   r
   r   rM   r*   r   r   r     s$    Kk K Kr*   r   c                       e Zd Zy)UnspecializedParamBufferSourceNr   rM   r*   r   r   r     r   r*   r   c                       e Zd ZU dZedz  ed<   edefd       Ze	j                  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 r3   )r
   	EPHEMERALr=   s    r   r   zEphemeralSource.guard_source      $$$r*   c                 Z    | j                   d| j                   z   nd}dt        |       dS )Nz: r   z
<ephemeral>)r   r)   )r8   r   s     r   rB   zEphemeralSource._name_template  s/    #'99#8tdiibHTN+1--r*   fn.c                     t         r3   rV   r8   r   s     r   
make_guardzEphemeralSource.make_guard      !!r*   c                      yNTrM   r=   s    r   is_ephemeralzEphemeralSource.is_ephemeral      r*   )rD   rE   rF   r   r'   rG   rJ   r
   r   rK   rL   rB   r   r   r	   r   rH   r   rM   r*   r   r   r     sr    D#*%k % % . . ."Xc3h/ "E "d r*   r   c                   *    e Zd ZddZedefd       Zy)SkipGuardSourcer   Nc                 :    | j                   j                  |       y r3   )r   r:   r7   s     r   r:   zSkipGuardSource.reconstruct  s    		g&r*   c                      yNz{0}rM   r=   s    r   rB   zSkipGuardSource._name_template      r*   rC   r   rM   r*   r   r   r     s"    '   r*   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t        |              )Nsizestridestorage_offset
unhandled )r   SIZESTRIDESTORAGE_OFFSETAssertionErrorr)   r=   s    r   method_namezTensorProperty.method_name  sL    >&&&^***^222# :htn-=!>??r*   N)rD   rE   rF   r   r   r   r'   r   rM   r*   r   r   r     s    DFN@S @r*   r   c                   f    e Zd ZU eed<   dZedz  ed<   ddZd	dZe	j                  defd       Zy)
TensorPropertySourcepropNidxr   c                     | j                   J | j                  t        j                  u r| j                  J y | j                  J y r3   )r   r  r   r   r  r=   s    r   r   z"TensorPropertySource.__post_init__  sD    yy$$$9955588###88'''r*   c                     j                   fd         j                          j                  *j                  j	                   j                               j                  t         j                  dndd             y )Nc                       j                  t        j                  dt        j                  j                                      S )Ncall_)load_import_fromr   rD   r)   r  r   r   s   r   r   z2TensorPropertySource.reconstruct.<locals>.<lambda>  s5    G,,%1F1F1H(I'J K r*   r   r   F)r   r   r  r5   rg   r   r   r7   s   ``r   r:   z TensorPropertySource.reconstruct  sn    	

 			88!!'";";DHH"EF dhh&:5I	
r*   c                 n   | j                   t        j                  u rdt        | j                         dS | j                   t        j
                  u rdt        | j                         dS | j                   t        j                  u r| j                  J yt        dt        | j                                )Nz{0}.size()[r@   z{0}.stride()[z{0}.storage_offset()r   )r  r   r   r)   r  r   r   r   r=   s    r   rB   z#TensorPropertySource._name_template  s    99+++"8DHH#5"6a88YY.///$Xdhh%7$8::YY.77788###) :htyy.A-B!CDDr*   r   rC   )rD   rE   rF   r   rG   r  rj   r   r:   rK   rL   r'   rB   rM   r*   r   r  r    sD    
Ct(
 	E 	E 	Er*   r  c                   R    e Zd ZU eed<   ddZddZej                  de	fd       Z
y)	IndexedSourcer  r   Nc                      | j                   J y r3   r   r=   s    r   r   zIndexedSource.__post_init__"      yy$$$r*   c                     t         r3   rV   r7   s     r   r:   zIndexedSource.reconstruct%  r   r*   c                 4    dt        | j                         dS )N(z, {0}))r)   r  r=   s    r   rB   zIndexedSource._name_template(  s    8DHH%&h//r*   r   rC   )rD   rE   rF   rj   rG   r   r:   rK   rL   r'   rB   rM   r*   r   r  r    s2    	H%" 0 0 0r*   r  c                   2    e Zd ZddZddZedefd       Zy)NegateSourcer   Nc                      | j                   J y r3   r   r=   s    r   r   zNegateSource.__post_init__/  r  r*   c                     t         r3   rV   r7   s     r   r:   zNegateSource.reconstruct2  r   r*   c                      y)Nz{0}.__neg__()rM   r=   s    r   rB   zNegateSource._name_template5  s     r*   r   rC   rD   rE   rF   r   r:   rJ   r'   rB   rM   r*   r   r  r  -  s'    %"   r*   r  c                   2    e Zd ZddZddZedefd       Zy)ConvertIntSourcer   Nc                      | j                   J y r3   r   r=   s    r   r   zConvertIntSource.__post_init__=  r  r*   c                 (     || j                          y r3   r   r7   s     r   r:   zConvertIntSource.reconstruct@      		r*   c                      y)Nz%cast_symbool_to_symint_guardless({0})rM   r=   s    r   rB   zConvertIntSource._name_templateC  s    6r*   r   rC   r  rM   r*   r   r  r  ;  s'    % 7 7 7r*   r  c                   >    e Zd ZU eed<   ddZddZedefd       Z	y)	DynamicScalarSourceis_intr   Nc                      | j                   J y r3   r   r=   s    r   r   z!DynamicScalarSource.__post_init__L  r  r*   c                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nbuiltinsrj   r	  r9   s   r   r   z1DynamicScalarSource.reconstruct.<locals>.<lambda>T  s    g&>&>z5&Q r*   r   Fr   r   r   r   r7   s    `r   r:   zDynamicScalarSource.reconstructO  s6    
 	QR		21e<=r*   c                      y)Nzint({0})rM   r=   s    r   rB   z"DynamicScalarSource._name_templateX  s    r*   r   rC   )
rD   rE   rF   rH   rG   r   r:   rJ   r'   rB   rM   r*   r   r  r  H  s,    L%>   r*   r  c                   2    e Zd ZddZddZedefd       Zy)FlattenScriptObjectSourcer   Nc                      | j                   J y r3   r   r=   s    r   r   z'FlattenScriptObjectSource.__post_init___  r  r*   c                 (     || j                          y r3   r   r7   s     r   r:   z%FlattenScriptObjectSource.reconstructb  r  r*   c                      y)Nz{0}.__obj_flatten__()rM   r=   s    r   rB   z(FlattenScriptObjectSource._name_templatee  s    &r*   r   rC   r  rM   r*   r   r*  r*  ]  s'    % ' ' 'r*   r*  c                   2    e Zd ZddZddZedefd       Zy)ScriptObjectQualifiedNameSourcer   Nc                      | j                   J y r3   r   r=   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__l  r  r*   c                 (     || j                          y r3   r   r7   s     r   r:   z+ScriptObjectQualifiedNameSource.reconstructo  r  r*   c                      y)Nz{0}._type().qualified_name()rM   r=   s    r   rB   z.ScriptObjectQualifiedNameSource._name_templater  s    -r*   r   rC   r  rM   r*   r   r/  r/  j  s'    % . . .r*   r/  c                   *    e Zd ZddZedefd       Zy)AttrProxySourcer   Nc                 (     || j                          y r3   r   r7   s     r   r:   zAttrProxySource.reconstructx  r  r*   c                      y)Nz{0}.get_base()rM   r=   s    r   rB   zAttrProxySource._name_template{  s    r*   rC   r   rM   r*   r   r4  r4  w  s"          r*   r4  c                       e Zd ZU eez  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ej                  defd       Zy)DefaultsSourceidx_keyFis_kw)initr&   comparer   _namer   Nc           
          | j                   sJ d       | j                  rxt        | j                  t              sJ t
        j                  | dd       t
        j                  | ddt        | j                         dt        | j                         d       y t        | j                  t              sJ t
        j                  | dd       t
        j                  | ddt        | j                         d	t        | j                         d
       y )Nz]Base must be a valid source in order to properly track and guard this Defaults to its origin.r   __kwdefaults__r=  r   z['z']__defaults__[r@   )
r   r:  r   r9  r'   object__setattr__r)   r   rj   r=   s    r   r   zDefaultsSource.__post_init__  s    yy 	
k	
y ::dllC000tW.>?$**-.b$,,1G0HK dllC000tWn=g(<'=Qx?U>VVWXr*   c                     || j                          |j                  |j                  | j                               |j	                  |j                  | j                               |j	                  t                      y r3   )r   r   r   r   r5   rg   r9  r   r7   s     r   r:   zDefaultsSource.reconstruct  sZ    		g77

CDg77EF245r*   c                     | j                   S r3   )r=  r=   s    r   rB   zDefaultsSource._name_template  s    zzr*   r   rC   )rD   rE   rF   rj   r'   rG   r:  rH   r   r   r=  r   r:   rK   rL   rB   rM   r*   r   r8  r8    sw    3YE4"""E5IE3I"""E5IE3I&6   r*   r8  c                   x     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
ej                  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 )NrH  rI  T)r   r   rH  slicesuperrC  
__reduce__)r8   	__class__s    r   r   zGetItemSource.__post_init__  sR    yy$$$djj%(G)>)>)@AG 0$7 )r*   c                 $    || j                          | j                  r/|j                  |j                  | j	                                      n*|j                  |j                  | j
                               |j                  t                      y r3   )r   rI  r5   rg   unpack_slicerH  r   r7   s     r   r:   zGetItemSource.reconstruct  sh    		!!'";";D<M<M<O"PQ!!'";";DJJ"GH245r*   c                 F    | j                   sJ | j                  \  }} || S r3   )rI  rH  )r8   slice_class
slice_argss      r   rP  zGetItemSource.unpack_slice  s*    """""&**ZJ''r*   c                     t        | j                  t              rJ | j                  rdt	        | j                         d       dS dt	        | j                  d       dS )N{0}[Tr?   r@   )r   rH  r   rI  r)   rP  r=   s    r   rB   zGetItemSource._name_template  s\    
 djj&111HT%6%6%8TJK1MMHTZZDAB!DDr*   r   rC   )rD   rE   rF   r   rG   rI  rH   r   r:   rK  rP  rK   rL   r'   rB   __classcell__)rN  s   @r   rG  rG    sL    J ND 86(e (
 E E Er*   rG  c                   V    e Zd ZU eed<   ddZej                  defd       Z	de
fdZy)ConstDictKeySourcerH  r   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   rD   r&  s   r   r   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^^=PQ r*   r   Fr   r   r5   rg   rH  r   r   r7   s    `r   r:   zConstDictKeySource.reconstruct  sU    Q	
 			g77

CD21e<=r*   c                 8    dt        | j                  d       dS )Nzlist(dict.keys({0}))[Tr?   r@   r)   rH  r=   s    r   rB   z!ConstDictKeySource._name_template  s     )$**)N(OqQQr*   c                      yr   rM   r=   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r*   rC   )rD   rE   rF   r   rG   r:   rK   rL   r'   rB   rH   ra  rM   r*   r   rX  rX    s<    J> R R RT r*   rX  c                   ^    e Zd ZU eed<   ddZd	dZej                  de	fd       Z
defdZy)
NonSerializableSetGetItemSourcerH  r   Nc                 J    ddl m} |j                  | j                        sJ y Nr   )ConstantVariable)	variablesrf  
is_literalrH  r8   rf  s     r   r   z-NonSerializableSetGetItemSource.__post_init__  s    /**4::666r*   c                     j                  fd        | j                         j                  j                  | j                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Nset_getitemr\  r&  s   r   r   z=NonSerializableSetGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^^]K r*   r   Fr]  r7   s    `r   r:   z+NonSerializableSetGetItemSource.reconstruct  sU    K	
 			g77

CD21e<=r*   c                 8    dt        | j                  d       dS )Nz
list({0})[Tr?   r@   r_  r=   s    r   rB   z.NonSerializableSetGetItemSource._name_template  s     htzzdCDAFFr*   c                      y)NFrM   r=   s    r   ra  z+NonSerializableSetGetItemSource.is_dict_key  s    r*   r   rC   )rD   rE   rF   rj   rG   r   r:   rK   rL   r'   rB   rH   ra  rM   r*   r   rc  rc    sA    J7
> G G GT r*   rc  c                   R    e Zd ZU eed<   ddZddZej                  de	fd       Z
y)	DictGetItemSourcerH  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y re  rg  rf  r   rH  rX  rh  ri  s     r   r   zDictGetItemSource.__post_init__  ;    /JJ*
((4	5 54
r*   c                     || j                          t        | j                  t              r || j                         n*|j	                  |j                  | j                               |j	                  t                      y r3   )r   r   rH  r   r5   rg   r   r7   s     r   r:   zDictGetItemSource.reconstruct  sY    		 djj&)DJJ!!'";";DJJ"GH245r*   c                     t        | j                  t              r#dt        | j                  j                         dS dt        | j                  d       dS )NrU  r@   Tr?   r   rH  rX  r)   r   r=   s    r   rB   z DictGetItemSource._name_template  sI    djj"45HTZZ__56a88HTZZDAB!DDr*   r   rC   rD   rE   rF   r   rG   r   r:   rK   rL   r'   rB   rM   r*   r   rp  rp    s7    
 J5	6 E E Er*   rp  c                   R    e Zd ZU eed<   ddZddZej                  de	fd       Z
y)	DictSubclassGetItemSourcerH  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y re  rr  ri  s     r   r   z'DictSubclassGetItemSource.__post_init__$  rs  r*   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_getitemr\  r&  s   r   r   z7DictSubclassGetItemSource.reconstruct.<locals>.<lambda>0      G,,U^^^L r*   r   F)	r   r   r   rH  r   r5   rg   r   r   r7   s    `r   r:   z%DictSubclassGetItemSource.reconstruct+  ss     	L	

 			 djj&)DJJ!!'";";DJJ"GH21e<=r*   c                     t        | j                  t              r#dt        | j                  j                         dS dt        | j                  d       dS )Nzdict.__getitem__({0}, r   rU  Tr?   r@   rv  r=   s    r   rB   z(DictSubclassGetItemSource._name_template>  sI    djj"45-htzz.G-HJJHTZZDAB!DDr*   r   rC   rw  rM   r*   r   ry  ry    s7    
 J5>& E E Er*   ry  c                   B    e Zd ZdZddZej                  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_getitemr\  r&  s   r   r   z/ListGetItemSource.reconstruct.<locals>.<lambda>R  r~  r*   >List[slice] is a temporary object and should not have a sourcer   F)	r   r   rI  RuntimeErrorr5   rg   rH  r   r   r7   s    `r   r:   zListGetItemSource.reconstructL  st    
 	L	

 			 P  !!'";";DJJ"GH21e<=r*   c                     t        | j                  t              rJ | j                  rt	        d      dt        | j                  d       dS )Nr  zlist.__getitem__({0}, Tr?   r   )r   rH  r   rI  r  r)   r=   s    r   rB   z ListGetItemSource._name_templateb  sO    
 djj&111P  .htzzd.S-TTUVVr*   rC   )	rD   rE   rF   r   r:   rK   rL   r'   rB   rM   r*   r   r  r  F  s0    >, 
W 
W 
Wr*   r  c                   >    e Zd ZddZej
                  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_getitemr\  r&  s   r   r   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>t  s    G,,U^^=UV r*   r   Fr]  r7   s    `r   r:   z&TupleIteratorGetItemSource.reconstructr  sU    V	
 			g77

CD21e<=r*   c                 8    dt        | j                  d       dS )Nz___tuple_iterator_getitem({0}, Tr?   r   r_  r=   s    r   rB   z)TupleIteratorGetItemSource._name_templatez  s#     0PT0U/VVWX	
r*   rC   )rD   rE   rF   r:   rK   rL   r'   rB   rM   r*   r   r  r  p  s(    > 
 
 
r*   r  c                   *    e Zd ZddZedefd       Zy)NamedTupleFieldsSourcer   Nc                 h     || j                          |j                  |j                  d             y )N_fieldsr   r7   s     r   r:   z"NamedTupleFieldsSource.reconstruct  r   r*   c                      y)Nz___namedtuple_fields({0})rM   r=   s    r   rB   z%NamedTupleFieldsSource._name_template  s    *r*   rC   r   rM   r*   r   r  r    s#    D + + +r*   r  c                   *    e Zd ZddZe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_fieldsr\  r&  s   r   r   z3DataclassFieldsSource.reconstruct.<locals>.<lambda>  s    G,,U^^=OP r*   r   Fr'  r7   s    `r   r:   z!DataclassFieldsSource.reconstruct  s8    P	
 			21e<=r*   c                      y)Nz___dataclass_fields({0})rM   r=   s    r   rB   z$DataclassFieldsSource._name_template  s    )r*   rC   r   rM   r*   r   r  r    s"    > * * *r*   r  c                   2    e Zd ZddZddZedefd       Zy)
TypeSourcer   Nc                      | j                   J y r3   r   r=   s    r   r   zTypeSource.__post_init__  r  r*   c                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nr$  typer%  r&  s   r   r   z(TypeSource.reconstruct.<locals>.<lambda>  s    g&>&>z6&R r*   r   Fr'  r7   s    `r   r:   zTypeSource.reconstruct  s4    RS		21e<=r*   c                      y)Nz	type({0})rM   r=   s    r   rB   zTypeSource._name_template  s    r*   r   rC   r  rM   r*   r   r  r    s'    %>
   r*   r  c                   *    e Zd ZddZedefd       Zy)OptimizerSourcer   Nc                 (     || j                          y r3   r   r7   s     r   r:   zOptimizerSource.reconstruct  r  r*   c                      yr   rM   r=   s    r   rB   zOptimizerSource._name_template  r   r*   rC   r   rM   r*   r   r  r    s"       r*   r  c                   T    e Zd ZddZej
                  defd       Zede	fd       Z
y)NNModuleSourcer   Nc                 (     || j                          y r3   r   r7   s     r   r:   zNNModuleSource.reconstruct  r  r*   c                 <    t         | j                  j                     S r3   r   r=   s    r   r   zNNModuleSource.guard_source  r   r*   c                      yr   rM   r=   s    r   rB   zNNModuleSource._name_template  r   r*   rC   )rD   rE   rF   r:   rK   rL   r
   r   rJ   r'   rB   rM   r*   r   r  r    sF     Kk K K   r*   r  c                   6    e Zd Zej                  defd       Zy)UnspecializedNNModuleSourcer   c                 <    t         | j                  j                     S r3   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULEr   r   r=   s    r   r   z(UnspecializedNNModuleSource.guard_source  s    4TYY5K5KLLr*   Nr   rM   r*   r   r  r    s$    Mk M Mr*   r  c                   6    e Zd Zej                  defd       Zy)"UnspecializedBuiltinNNModuleSourcer   c                 <    t         | j                  j                     S r3   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULEr   r   r=   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_source  s    <TYY=S=STTr*   Nr   rM   r*   r   r  r    s$    Uk U Ur*   r  c                   6    e Zd Zej                  defd       Zy)FSDPNNModuleSourcer   c                 <    t         | j                  j                     S r3   )_GUARD_SOURCE_FSDP_MODULEr   r   r=   s    r   r   zFSDPNNModuleSource.guard_source  s    ()?)?@@r*   Nr   rM   r*   r   r  r    s$    Ak A Ar*   r  c                   8    e Zd Zedefd       Zedefd       Zy)GlobalStateSourcer   c                      yNr   rM   r=   s    r   rB   z GlobalStateSource._name_template      r*   c                 "    t         j                  S r3   ru   r=   s    r   r   zGlobalStateSource.guard_source  rw   r*   NrD   rE   rF   rJ   r'   rB   r
   r   rM   r*   r   r  r    s6       "k " "r*   r  c                   l    e Zd ZU dZeed<   d	dZej                  defd       Z	d
dZ
edefd       Zy)ImportSourcezPoints to an imported module - used instead of GlobalSource
    in case the user has overridden the module name in their local namespacemodule_namer   Nc                 V    ddl m}m}  || j                  |j                               y )Nr   )GuardBuilderinstall_guard)guardsr  r  r   ID_MATCH)r8   r  r  s      r   r   zImportSource.__post_init__  s    7dool&;&;<=r*   c                 "    d| j                    dS )Nz__import__('z'))r  r=   s    r   rB   zImportSource._name_template  s    d../r22r*   c                     |j                  |j                  d      t        d      |j                  | j                        g       y )Nr   )r   rg   r   create_import_namer  r7   s     r   r:   zImportSource.reconstruct  s?    ))!,"1%**4+;+;<	
r*   c                 "    t         j                  S r3   ru   r=   s    r   r   zImportSource.guard_source  rw   r*   r   rC   )rD   rE   rF   r   r'   rG   r   rK   rL   rB   r:   rJ   r
   r   rM   r*   r   r  r    sV    P >
 3 3 3
 "k " "r*   r  c                   l    e Zd ZU eed<   ej                  defd       ZdefdZ	ddZ
edefd       Zy)	TorchFunctionModeStackSourceindr   c                 <    dt        | j                                dS )Nz$___get_torch_function_mode_stack_at(r   )r)   
_get_indexr=   s    r   rB   z+TorchFunctionModeStackSource._name_template  s    5ht?P6Q5RRSTTr*   c                 D    ddl m} |j                  | j                        S )Nr   )TorchFunctionModeStackVariable)variables.torch_functionr  get_mode_indexr  )r8   r  s     r   r  z'TorchFunctionModeStackSource._get_index  s    L-<<TXXFFr*   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_atr\  r&  s   r   r   z:TorchFunctionModeStackSource.reconstruct.<locals>.<lambda>  s    G,, B r*   r   F)r   r   rg   r  r   r7   s    `r   r:   z(TorchFunctionModeStackSource.reconstruct  sQ    	

 	w889JKLM21e<=r*   c                 "    t         j                  S r3   ru   r=   s    r   r   z)TorchFunctionModeStackSource.guard_source  rw   r*   rC   )rD   rE   rF   rj   rG   rK   rL   r'   rB   r  r:   rJ   r
   r   rM   r*   r   r  r    sW    	HU U UGC G
> "k " "r*   r  c                   p    e Zd ZU eed<   d	dZedefd       Ze	j                  defd       ZdedefdZy)
r   source_namer   Nc                 \    |j                  |j                  | j                  d             y )NFrp   )r5   rs   r  r7   s     r   r:   zConstantSource.reconstruct  s&    g889I9Iu8UVr*   c                 "    t         j                  S r3   )r
   r   r=   s    r   r   zConstantSource.guard_source!  s    ###r*   c                     | j                   S r3   )r  r=   s    r   rB   zConstantSource._name_template%  s    r*   r   c                     t         r3   rV   r   s     r   r   zConstantSource.make_guard)  r   r*   rC   )rD   rE   rF   r'   rG   r:   rJ   r
   r   rK   rL   rB   r   r   rM   r*   r   r   r     s]    W $k $ $      "S "S "r*   r   c                   *    e Zd Zedefd       ZddZy)NumpyTensorSourcer   c                      y)Nz___from_numpy({0})rM   r=   s    r   rB   z NumpyTensorSource._name_template/  s    #r*   Nc                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Ntorch	as_tensorr%  r&  s   r   r   z/NumpyTensorSource.reconstruct.<locals>.<lambda>4  s    g&>&>w&T r*   r   Fr'  r7   s    `r   r:   zNumpyTensorSource.reconstruct3  s4    TU		21e<=r*   rC   )rD   rE   rF   rJ   r'   rB   r:   rM   r*   r   r  r  -  s     $ $ $>r*   r  c                   "    e Zd Zedefd       Zy)SubclassAttrListSourcer   c                      y)Nz{0}.__tensor_flatten__()[0]rM   r=   s    r   rB   z%SubclassAttrListSource._name_template;  s    ,r*   NrD   rE   rF   rJ   r'   rB   rM   r*   r   r  r  9  s    - - -r*   r  c                   "    e Zd Zedefd       Zy)FloatTensorSourcer   c                      y)Nz___as_tensor({0})rM   r=   s    r   rB   z FloatTensorSource._name_templateD  s    "r*   Nr  rM   r*   r   r  r  B  s    # # #r*   r  c                   "    e Zd Zedefd       Zy)CallMethodItemSourcer   c                      y)Nz
{0}.item()rM   r=   s    r   rB   z#CallMethodItemSource._name_templateK  s    r*   Nr  rM   r*   r   r  r  I  s      r*   r  c                   8    e Zd Zedefd       Zedefd       Zy)ShapeEnvSourcer   c                      yr  rM   r=   s    r   rB   zShapeEnvSource._name_templateU  r  r*   c                 "    t         j                  S r3   )r
   	SHAPE_ENVr=   s    r   r   zShapeEnvSource.guard_sourceY  r   r*   Nr  rM   r*   r   r  r  S  s6       %k % %r*   r  c                   `    e Zd ZU eed<   ej                  defd       ZddZ	e
defd       Zy)CurrentStreamSourcer   r   c                     dt        | j                  j                         dt        | j                  j                         dS )Nz$___get_current_stream(torch.device('z', z)))r)   r   r  rH  r=   s    r   rB   z"CurrentStreamSource._name_templateb  s=    5ht{{?O?O6P5QQTU]^b^i^i^o^oUpTqqsttr*   Nc                    d}j                  fd       j                  fd       j                  j                  | j                  j                        g       | j                  j
                  :|dz  }j                  j                  | j                  j
                        g       j                  t        |d             j                  t        dd             y )Nr   c                  D     j                  t        j                  d      S )Nget_current_streamr\  r&  s   r   r   z1CurrentStreamSource.reconstruct.<locals>.<lambda>i  s    G,,U^^=QR r*   c                  (     j                  dd      S )Nr  r   r%  r&  s   r   r   z1CurrentStreamSource.reconstruct.<locals>.<lambda>k  s    g&>&>w&Q r*   F)r   r   rg   r   r  rH  r   )r8   r9   num_argss    ` r   r:   zCurrentStreamSource.reconstructf  s    R	
 	QRw889I9IJKL;;(MH!!7#<#<T[[=N=N#O"PQ28UCD21e<=r*   c                 "    t         j                  S r3   ru   r=   s    r   r   z CurrentStreamSource.guard_sources  rw   r*   rC   )rD   rE   rF   device_typerG   rK   rL   r'   rB   r:   rJ   r
   r   rM   r*   r   r  r  ^  sJ    u u u> "k " "r*   r  c                   8    e Zd Zedefd       Zedefd       Zy)BackwardStateSourcer   c                      yr  rM   r=   s    r   rB   z"BackwardStateSource._name_templatez  r  r*   c                 "    t         j                  S r3   )r
   BACKWARD_STATEr=   s    r   r   z BackwardStateSource.guard_source~  s    )))r*   Nr  rM   r*   r   r  r  x  s6       *k * *r*   r  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_namer   r-   r/   r.   r   r  s     r   r  r    sE     &-($V[[CSTTfk*r*   c                     t        | |      d uS r  )r  r  s     r   is_from_local_sourcer    s     :JKSWWWr*   c                     t        |       d uS r3   )get_global_source_namer   s    r   is_from_global_sourcer
    s    !&)55r*   c                     t        | t              rt        | j                        S t        | t              sy | j
                  S r3   )r   r   r	  r   rl   rm   r   s    r   r	  r	    s4    &-(%fkk22fl+r*   c                     t        | t              rt        | j                        S t        | t              xr | j
                  xr | j                   S r3   )r   r   is_from_nonlocal_sourcer   r-   r1   r/   r   s    r   r  r    sG    &-(&v{{336;' 	 ++	 r*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   is_from_closure_sourcer   r   s    r   r  r    s+    &-(&-(%fkk22r*   targetc                 \    | |k(  ryt        | t              rt        | j                  |      S yr   )r   r   is_from_sourcer   )r   r  s     r   r  r    s+    &-(fkk622r*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   &is_from_unspecialized_nn_module_sourcer   r   s    r   r  r    s,    &56&-(5fkkBBr*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   .is_from_unspecialized_builtin_nn_module_sourcer   r   s    r   r  r    s,    &<=&-(=fkkJJr*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   )is_from_unspecialized_param_buffer_sourcer   r   s    r   r  r    s,    &89&-(8EEr*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r*  r   $is_from_flatten_script_object_sourcer   r   s    r   r  r    s,    &34	FM	*3FKK@@r*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r  r   is_from_optimizer_sourcer   r   s    r   r  r    s+    &/*&-('44r*   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)NTr?  r@  F)	r   r8  rp  r   r   r   rG  r   is_from_defaultsr   s    r   r  r    s    &.) 	6,-v{{J/KK"22 	6=)v{{J/KK.0&-(,,r*   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   is_from_skip_guard_sourcer   r   s    r   r   r   	  s+    &/*&-((55r*   )F)vr   r   enumrK   collections.abcr   typingr   r   r  r   r  torch._guardsr   r   r	   r
   r   r   r   bytecode_transformationr   r   r   r9   r   r<   LOCAL_SPECIALIZED_NN_MODULErv   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  rH   r   r'   r    r)   r-   rO   rX   r_   rl   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Enumr   r  r  r  r  r  r*  r/  r4  r8  rG  rX  rc  rp  ry  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  r  r  r  r  r  r   rM   r*   r   <module>r0     s  &    $ % '    " {>>@@++[-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 	$ 	&6D= &S &3 3 3# 3 4(B& B )B< 4(
f 
 )
$ 4(P6 P )P 4(B B )B" 4(C6 C )C 4(E& E )E( 4(  ) 4(	0 	 )	 4(0 0 )0* 4(
 
 )
" 4(
 
 )
0 4($] $ )$ 4(M  ) 4(Lf L )L& 4(  ) 4(!M ! )! 4(	0 	0 )	0 4(K
 K )K 4(	Z 	 )	 4(f  )& 4(m  )@TYY @  4(#E= #E )#EL 4(0M 0 )0 4(
= 
 )
 4(	7} 	7 )	7 4(-  )( 4(	' 	' )	' 4(	.m 	. )	. m   4(!] ! )!H 4(!EM !E )!EH 4(  )( 4(m  )4 4(E E )ED 4(%E %E )%EP 4(&W &W )&WR 4(
 
 )
  4(+] + )+ 4(
*M 
* )
* 4(  ) 4(m  ) 4(
] 
 )
 4(M. M )M 4(U)D U )U 4(A A )A 4(" " )" 4("6 " )": 4("6 " )"4 4("V " )"$ 4(> > )> 4(-] - )- 4(# # )# 4(=  ) 4(%V % )% 4("& " )"2 4(*& * )* 05		)-	4Z	 	 EJ X Xd Xt X X 6& 6T 6 6 6D= S4Z   F t   6 d   6 6 d   6 d   6 d   f     D   V    V   2 f   r*   