
    i:                        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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j8                  ej:                  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                  ejH                  ejH                  ejJ                  ejJ                  i
Z&ej8                  ej@                  ej<                  ejB                  ej@                  ej@                  ejB                  ejB                  ej:                  ej@                  ej>                  ejB                  ejD                  ejD                  ejF                  ejF                  ejH                  ejH                  ejJ                  ejJ                  i
Z'ej8                  ejD                  ej<                  ejF                  ej@                  ejD                  ejB                  ejF                  ej:                  ejD                  ej>                  ejF                  ejD                  ejD                  ejF                  ejF                  ejH                  ejH                  ejJ                  ejJ                  i
Z(ej8                  ejH                  ej<                  ejJ                  ej:                  ejH                  ej>                  ejJ                  ejH                  ejH                  ejJ                  ejJ                  ej@                  ejH                  ejB                  ejJ                  ejD                  ejH                  ejF                  ejJ                  i
Z)dede*fdZ+dee   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             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 e             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+ d,e             Z: ed       G d- d.e             Z; ed       G d/ d0e             Z< ed       G d1 d2e             Z= ed       G d3 d4e             Z> ed       G d5 d6e7             Z? ed       G d7 d8e7             Z@ ed       G d9 d:e             ZA ed       G d; d<e             ZB G d= d>ej                        ZD ed       G d? d@e             ZE ed       G dA dBe             ZF ed       G dC dDe             ZG ed       G dE dFe             ZH ed       G dG dHe             ZI ed       G dI dJe             ZJ ed       G dK dLe             ZK G dM dNe      ZL ed       G dO dPe             ZM ed       G dQ dRe             ZN ed       G dS dTe             ZO ed       G dU dVe             ZP ed       G dW dXe             ZQ ed       G dY dZe             ZR ed       G d[ d\eN             ZS ed       G d] d^eN             ZT ed       G d_ d`e             ZU ed       G da dbe             ZV ed       G dc dde             ZW ed       G de dfe             ZX ed       G dg dhe             ZY ed       G di djeY             ZZ ed       G dk dleZ             Z[ ed       G dm dneY             Z\ ed       G do dpe             Z] ed       G dq dre             Z^ ed       G ds dte             Z_ ed       G du dve             Z` ed       G dw dxe             Za ed       G dy dze             Zb ed       G d{ d|e             Zc ed       G d} d~e             Zd ed       G d de             Ze ed       G d de             Zf ed       G d de             Zg ed       G d de             Zhdddede*dee,   fdZidddede*de*fdZjdede*fdZkdedee,   fdZldede*fdZmdede*fdZndedede*fdZoe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       Zuej                  dede*fd       Zvej                  dede*fd       Zwy)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OptionalTYPE_CHECKINGUnion)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    N/var/www/html/engine/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	e      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)r3   
load_derefr0   append_outputcreate_loadselfcodegens     r   reconstructzLocalSource.reconstruct   s:    ((t/!!'"5"5doo"FGr,   c                 "    t         j                  S r5   )r   LOCALr:   s    r   r   zLocalSource.guard_source   s       r,   c                 8    dt        | j                  d       dS )NzL[Tr$   ]r+   r0   r?   s    r   _name_templatezLocalSource._name_template   s    HT__>?qAAr,   r;   r   r   N)__name__
__module____qualname__r)   __annotations__r1   boolr2   r   	frozensetr3   r<   propertyr   r   	functoolscached_propertyrD    r,   r   r/   r/      sz    O Hd *.Hhy~&-
 &+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)TempLocalSourcer0   r   Nc                 X    |j                  |j                  | j                               y r5   r7   r8   r0   r9   s     r   r<   zTempLocalSource.reconstruct       g11$//BCr,   c                 "    t         j                  S r5   )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   rD   zTempLocalSource._name_template   s    !v
 	
r,   rE   )
rF   rG   rH   r)   rI   r<   rL   r   r   rD   rO   r,   r   rQ   rQ      sE     OD &k & & 
 
 
r,   rQ   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)SyntheticLocalSourcer0   r   Nc                 X    |j                  |j                  | j                               y r5   rS   r9   s     r   r<   z SyntheticLocalSource.reconstruct   rT   r,   c                 "    t         j                  S r5   )r   SYNTHETIC_LOCALr?   s    r   r   z!SyntheticLocalSource.guard_source   s    ***r,   c                 8    dt        | j                  d       dS )NzSYNTHETIC_LOCAL[TrA   rB   rC   r?   s    r   rD   z#SyntheticLocalSource._name_template   s    !(4??t"L!MQOOr,   rE   rF   rG   rH   r)   rI   r<   rL   r   r   rM   rN   rD   rO   r,   r   rZ   rZ      sL    OD +k + + P P Pr,   rZ   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 r5   )r   RANDOM_VALUEr?   s    r   r   zRandomValueSource.guard_source   s    '''r,   Nc                    |j                  |j                  |j                  j                  j                               |j                  |j                  | j                               |j                  t                      y r5   )r7   r8   txoutputrandom_values_varcreate_load_constrb   r   r9   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+   rb   r?   s    r   rD   z RandomValueSource._name_template   s    x(>(>?@AAr,   rE   )rF   rG   rH   intrI   rL   r   r   r<   rM   rN   r)   rD   rO   r,   r   ra   ra      sJ    (k ( (6
 B B Br,   ra   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r7   create_load_globalro   r9   s     r   r<   zGlobalSource.reconstruct   s&    g889I9It8TUr,   c                 "    t         j                  S r5   r   GLOBALr?   s    r   r   zGlobalSource.guard_source       !!!r,   c                 8    dt        | j                  d       dS )NG[TrA   rB   r+   ro   r?   s    r   rD   zGlobalSource._name_template   s    HT--$?@BBr,   rE   r_   rO   r,   r   rn   rn      sM    V "k " " C C Cr,   rn   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)GlobalWeakRefSourcero   r   Nc                 h     j                   fd       j                  t        dd             y )Nc                  \     j                   j                  j                  d            S rq   rt   r;   r:   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s+    G))**4+;+;*F r,   r   Fadd_push_nullextend_outputr   r9   s   ``r   r<   zGlobalWeakRefSource.reconstruct   s.    	

 	21e<=r,   c                 "    t         j                  S r5   rw   r?   s    r   r   z GlobalWeakRefSource.guard_source  ry   r,   c                 8    dt        | j                  d       dS )Nr{   TrA   z]()r|   r?   s    r   rD   z"GlobalWeakRefSource._name_template  s    HT--$?@DDr,   rE   r_   rO   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 r5   baser   s   r   r   z/WeakRefCallSource.reconstruct.<locals>.<lambda>  s    gdii&8 r,   r   Fr   r9   s   ``r   r<   zWeakRefCallSource.reconstruct  s(    8921e<=r,   c                      y)Nz{0}()rO   r?   s    r   rD   z WeakRefCallSource._name_template  s    r,   rE   rF   rG   rH   r<   rL   r)   rD   rO   r,   r   r   r     s"    >   r,   r   c                       e Zd Zy)CallFunctionNoArgsSourceNrF   rG   rH   rO   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                 ,   | 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.r   r   r   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/?@ r,   c                 |     || j                          |j                  |j                  | j                               y r5   r   r   create_load_attrsr   r9   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}, TrA   ){0}.)r   isidentifierr+   r?   s    r   rD   zAttrSource._name_template,  sD    {{'')$Xdkkd%K$LANN-.//r,   r   NrE   
rF   rG   rH   r)   rI   r   r<   rM   rN   rD   rO   r,   r   r   r     s4    KAF 0 0 0r,   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                 ,   | 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__7  r   r,   c                 |     || j                          |j                  |j                  | j                               y r5   r   r9   s     r   r<   zGenericAttrSource.reconstruct@  r   r,   c                 8    dt        | j                  d       dS )Nzobject.__getattribute__({0}, TrA   r   r+   r   r?   s    r   rD   z GenericAttrSource._name_templateD  s"     .ht{{t.T-UUVW	
r,   r   rE   r   rO   r,   r   r   r   3  s4    KA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   r9   s     r   r<   zTypeDictSource.reconstructN  '    		g77
CDr,   c                      y)Nzdict({0}.__dict__)rO   r?   s    r   rD   zTypeDictSource._name_templateR  s     $r,   rE   r   rO   r,   r   r   r   L  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   r9   s     r   r<   zTypeMROSource.reconstruct^  '    		g77	BCr,   c                      y)Nz{0}.__mro__rO   r?   s    r   rD   zTypeMROSource._name_templateb  s    r,   rE   r   rO   r,   r   r   r   \  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).
    r0   Nc                 X    |j                  |j                  | j                               y r5   )r7   create_load_closurer0   r9   s     r   r<   zLocalCellSource.reconstructp  s!     	g99$//JKr,   rE   )rF   rG   rH   __doc__r)   rI   r<   rO   r,   r   r   r   g  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   r9   s     r   r<   zCodeSource.reconstruct}  r   r,   c                      y)Nz{0}.__code__rO   r?   s    r   rD   zCodeSource._name_template  s    r,   rE   r   rO   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   r9   s     r   r<   zClosureSource.reconstruct  s'    		g77FGr,   c                      y)Nz{0}.__closure__rO   r?   s    r   rD   zClosureSource._name_template  s     r,   rE   r   rO   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 r5   r   r9   s     r   r<   zGradSource.reconstruct  r   r,   c                 2    dt        | j                         S )Nr   r   r?   s    r   rD   zGradSource._name_template  s    -.//r,   rE   )
rF   rG   rH   r   r)   rI   r<   rM   rN   rD   rO   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 r5   #_GUARD_SOURCE_SPECIALIZED_NN_MODULEr   r   r?   s    r   r   zParamBufferSource.guard_source      24993I3IJJr,   NrF   rG   rH   rM   rN   r   r   rO   r,   r   r   r     s$    Kk K Kr,   r   c                       e Zd Zy)UnspecializedParamBufferSourceNr   rO   r,   r   r   r     r   r,   r   c                       e Zd ZU dZee   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 r5   )r   	EPHEMERALr?   s    r   r   zEphemeralSource.guard_source      $$$r,   c                 Z    | j                   d| j                   z   nd}dt        |       dS )Nz:  z
<ephemeral>)r   r+   )r:   r   s     r   rD   zEphemeralSource._name_template  s/    #'99#8tdiibHTN+1--r,   fn.c                     t         r5   rX   r:   r   s     r   
make_guardzEphemeralSource.make_guard      !!r,   c                      yNTrO   r?   s    r   is_ephemeralzEphemeralSource.is_ephemeral      r,   )rF   rG   rH   r   r   r)   rI   rL   r   r   rM   rN   rD   r   r   r   r   rJ   r   rO   r,   r   r   r     sr    D(3-%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 r5   )r   r<   r9   s     r   r<   zSkipGuardSource.reconstruct  s    		g&r,   c                      yNz{0}rO   r?   s    r   rD   zSkipGuardSource._name_template      r,   rE   r   rO   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)rF   rG   rH   r   r   r   r)   r  rO   r,   r   r   r     s    DFN@S @r,   r   c                   f    e Zd ZU eed<   dZee   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 r5   )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   rF   r+   r  r  r   s   r   r   z2TensorPropertySource.reconstruct.<locals>.<lambda>  s5    G,,%1F1F1H(I'J K r,   r   r   F)r   r   r  r7   ri   r   r   r9   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()[rB   z{0}.stride()[z{0}.storage_offset()r   )r  r   r   r+   r  r   r   r  r?   s    r   rD   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   rE   )rF   rG   rH   r   rI   r  r   rl   r   r<   rM   rN   r)   rD   rO   r,   r   r  r    sD    
C#(
 	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 r5   r   r?   s    r   r   zIndexedSource.__post_init__      yy$$$r,   c                     t         r5   rX   r9   s     r   r<   zIndexedSource.reconstruct  r   r,   c                 4    dt        | j                         dS )N(z, {0}))r+   r  r?   s    r   rD   zIndexedSource._name_template  s    8DHH%&h//r,   r   rE   )rF   rG   rH   rl   rI   r   r<   rM   rN   r)   rD   rO   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 r5   r   r?   s    r   r   zNegateSource.__post_init__  r  r,   c                     t         r5   rX   r9   s     r   r<   zNegateSource.reconstruct"  r   r,   c                      y)Nz{0}.__neg__()rO   r?   s    r   rD   zNegateSource._name_template%  s     r,   r   rE   rF   rG   rH   r   r<   rL   r)   rD   rO   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 r5   r   r?   s    r   r   zConvertIntSource.__post_init__-  r  r,   c                 (     || j                          y r5   r   r9   s     r   r<   zConvertIntSource.reconstruct0      		r,   c                      y)Nz%cast_symbool_to_symint_guardless({0})rO   r?   s    r   rD   zConvertIntSource._name_template3  s    6r,   r   rE   r  rO   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 r5   r   r?   s    r   r   z!DynamicScalarSource.__post_init__<  r  r,   c                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nbuiltinsrl   r  r;   s   r   r   z1DynamicScalarSource.reconstruct.<locals>.<lambda>D  s    g&>&>z5&Q r,   r   Fr   r   r   r   r9   s    `r   r<   zDynamicScalarSource.reconstruct?  s6    
 	QR		21e<=r,   c                      y)Nzint({0})rO   r?   s    r   rD   z"DynamicScalarSource._name_templateH  s    r,   r   rE   )
rF   rG   rH   rJ   rI   r   r<   rL   r)   rD   rO   r,   r   r!  r!  8  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 r5   r   r?   s    r   r   z'FlattenScriptObjectSource.__post_init__O  r  r,   c                 (     || j                          y r5   r   r9   s     r   r<   z%FlattenScriptObjectSource.reconstructR  r  r,   c                      y)Nz{0}.__obj_flatten__()rO   r?   s    r   rD   z(FlattenScriptObjectSource._name_templateU  s    &r,   r   rE   r  rO   r,   r   r,  r,  M  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 r5   r   r?   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__\  r  r,   c                 (     || j                          y r5   r   r9   s     r   r<   z+ScriptObjectQualifiedNameSource.reconstruct_  r  r,   c                      y)Nz{0}._type().qualified_name()rO   r?   s    r   rD   z.ScriptObjectQualifiedNameSource._name_templateb  s    -r,   r   rE   r  rO   r,   r   r1  r1  Z  s'    % . . .r,   r1  c                   *    e Zd ZddZedefd       Zy)AttrProxySourcer   Nc                 (     || j                          y r5   r   r9   s     r   r<   zAttrProxySource.reconstructh  r  r,   c                      y)Nz{0}.get_base()rO   r?   s    r   rD   zAttrProxySource._name_templatek  s    r,   rE   r   rO   r,   r   r6  r6  g  s"          r,   r6  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ej                  defd       Zy)DefaultsSourceidx_keyFis_kw)initr(   comparefield_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__[rB   )
r   r<  r   r;  r)   r   r   r+   r?  rl   r?   s    r   r   zDefaultsSource.__post_init__w  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 r5   )r   r   r   r?  r7   ri   r;  r   r9   s     r   r<   zDefaultsSource.reconstruct  sZ    		g77

CDg77EF245r,   c                     | j                   S r5   )r@  r?   s    r   rD   zDefaultsSource._name_template  s    zzr,   r   rE   )rF   rG   rH   r   rl   r)   rI   r<  rJ   dataclassesr?  r@  r   r<   rM   rN   rD   rO   r,   r   r:  r:  p  s{    38_E4"""E5IE3I"""E5IE3I&6   r,   r:  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 )NrJ  rK  T)r   r   rJ  slicesuperr   
__reduce__)r:   	__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 r5   )r   rK  r7   ri   unpack_slicerJ  r   r9   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 r5   )rK  rJ  )r:   slice_class
slice_argss      r   rR  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}[TrA   rB   )r   rJ  r   rK  r+   rR  r?   s    r   rD   zGetItemSource._name_template  s\    
 djj&111HT%6%6%8TJK1MMHTZZDAB!DDr,   r   rE   )rF   rG   rH   r   rI   rK  rJ   r   r<   rM  rR  rM   rN   r)   rD   __classcell__rP  s   @r   rI  rI    sL    J ND 86(e (
 E E Er,   rI  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)ConstDictKeySourcerJ  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   rF   r(  s   r   r   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^^=PQ r,   r   Fr   r   r7   ri   rJ  r   r   r9   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}))[TrA   rB   r+   rJ  r?   s    r   rD   z!ConstDictKeySource._name_template  s     )$**)N(OqQQr,   c                      yr   rO   r?   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r,   rE   )rF   rG   rH   r   rI   r<   rM   rN   r)   rD   rJ   rd  rO   r,   r   r[  r[    s<    J> R R RT r,   r[  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)
NonSerializableSetGetItemSourcerJ  r   Nc                 J    ddl m} |j                  | j                        sJ y Nr   )ConstantVariable)	variablesri  
is_literalrJ  r:   ri  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`  r9   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})[TrA   rB   rb  r?   s    r   rD   z.NonSerializableSetGetItemSource._name_template  s     htzzdCDAFFr,   c                      y)NFrO   r?   s    r   rd  z+NonSerializableSetGetItemSource.is_dict_key  s    r,   r   rE   )rF   rG   rH   rl   rI   r   r<   rM   rN   r)   rD   rJ   rd  rO   r,   r   rf  rf    sA    J7
> G G GT r,   rf  c                   R    e Zd ZU eed<   ddZddZej                  de	fd       Z
y)	DictGetItemSourcerJ  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y rh  rj  ri  r   rJ  r[  rk  rl  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 r5   )r   r   rJ  r   r7   ri   r   r9   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 )NrW  rB   TrA   r   rJ  r[  r+   r!   r?   s    r   rD   z DictGetItemSource._name_template  sI    djj"45HTZZ__56a88HTZZDAB!DDr,   r   rE   rF   rG   rH   r   rI   r   r<   rM   rN   r)   rD   rO   r,   r   rs  rs    s7    
 J5	6 E E Er,   rs  c                   R    e Zd ZU eed<   ddZddZej                  de	fd       Z
y)	DictSubclassGetItemSourcerJ  r   Nc                     ddl m} t        | j                  t              s|j                  | j                        sJ y y rh  ru  rl  s     r   r   z'DictSubclassGetItemSource.__post_init__  rv  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>       G,,U^^^L r,   r   F)	r   r   r   rJ  r   r7   ri   r   r   r9   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   rW  TrA   rB   ry  r?   s    r   rD   z(DictSubclassGetItemSource._name_template.  sI    djj"45-htzz.G-HJJHTZZDAB!DDr,   r   rE   rz  rO   r,   r   r|  r|    s7    
 J5>& E E Er,   r|  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>B  r  r,   >List[slice] is a temporary object and should not have a sourcer   F)	r   r   rK  RuntimeErrorr7   ri   rJ  r   r   r9   s    `r   r<   zListGetItemSource.reconstruct<  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}, TrA   r   )r   rJ  r   rK  r  r+   r?   s    r   rD   z ListGetItemSource._name_templateR  sO    
 djj&111P  .htzzd.S-TTUVVr,   rE   )	rF   rG   rH   r   r<   rM   rN   r)   rD   rO   r,   r   r  r  6  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>d  s    G,,U^^=UV r,   r   Fr`  r9   s    `r   r<   z&TupleIteratorGetItemSource.reconstructb  sU    V	
 			g77

CD21e<=r,   c                 8    dt        | j                  d       dS )Nz___tuple_iterator_getitem({0}, TrA   r   rb  r?   s    r   rD   z)TupleIteratorGetItemSource._name_templatej  s#     0PT0U/VVWX	
r,   rE   )rF   rG   rH   r<   rM   rN   r)   rD   rO   r,   r   r  r  `  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   r9   s     r   r<   z"NamedTupleFieldsSource.reconstructs  r   r,   c                      y)Nz___namedtuple_fields({0})rO   r?   s    r   rD   z%NamedTupleFieldsSource._name_templatew      *r,   rE   r   rO   r,   r   r  r  q  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)  r9   s    `r   r<   z!DataclassFieldsSource.reconstruct~  s8    P	
 			21e<=r,   c                      y)Nz___dataclass_fields({0})rO   r?   s    r   rD   z$DataclassFieldsSource._name_template  s    )r,   rE   r   rO   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 r5   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)  r9   s    `r   r<   zTypeSource.reconstruct  s4    RS		21e<=r,   c                      y)Nz	type({0})rO   r?   s    r   rD   zTypeSource._name_template  s    r,   r   rE   r  rO   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 r5   r   r9   s     r   r<   zOptimizerSource.reconstruct  r  r,   c                      yr   rO   r?   s    r   rD   zOptimizerSource._name_template  r   r,   rE   r   rO   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 r5   r   r9   s     r   r<   zNNModuleSource.reconstruct  r  r,   c                 <    t         | j                  j                     S r5   r   r?   s    r   r   zNNModuleSource.guard_source  r   r,   c                      yr   rO   r?   s    r   rD   zNNModuleSource._name_template  r   r,   rE   )rF   rG   rH   r<   rM   rN   r   r   rL   r)   rD   rO   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 r5   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULEr   r   r?   s    r   r   z(UnspecializedNNModuleSource.guard_source  s    4TYY5K5KLLr,   Nr   rO   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 r5   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULEr   r   r?   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_source  s    <TYY=S=STTr,   Nr   rO   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 r5   )_GUARD_SOURCE_FSDP_MODULEr   r   r?   s    r   r   zFSDPNNModuleSource.guard_source  s    ()?)?@@r,   Nr   rO   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   rO   r?   s    r   rD   z GlobalStateSource._name_template      r,   c                 "    t         j                  S r5   rw   r?   s    r   r   zGlobalStateSource.guard_source  ry   r,   NrF   rG   rH   rL   r)   rD   r   r   rO   r,   r   r  r    s6       "k " "r,   r  c                   d     e Zd ZdZdededdf fdZedefd       Zd
dZ	e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rN  __init__guardsr  r  r   ID_MATCHr:   r  r  r  r  rP  s        r   r  zTorchSource.__init__  /    $)&)7dool&;&;<=r,   c                      y)Nz__import__('torch')rO   r?   s    r   rD   zTorchSource._name_template  s    $r,   c                 z    |j                  |j                  d      t        d      |j                  d      g       y )Nr   torchr   ri   r   create_import_namer9   s     r   r<   zTorchSource.reconstruct  s9    ))!,"1%**73	
r,   c                 "    t         j                  S r5   rw   r?   s    r   r   zTorchSource.guard_source  ry   r,   rE   rF   rG   rH   r   r   r  rL   r)   rD   r<   r   r   rX  rY  s   @r   r  r    s^    H>c >S >T > % % %
 "k " "r,   r  c                   d     e Zd ZdZdededdf fdZedefd       Zd
dZ	ede
fd	       Z xZS )CollectionsSourcezPoints to the actual `collections` module - used instead of GlobalSource
    in case the user has overridden `collections` in their local namespacer  r  r   Nc                 v    t        |   |i | ddlm}m}  || j                  |j                               y r  r  r  s        r   r  zCollectionsSource.__init__  r  r,   c                      y)Nz__import__('collections')rO   r?   s    r   rD   z CollectionsSource._name_template  r  r,   c                 z    |j                  |j                  d      t        d      |j                  d      g       y )Nr   collectionsr  r9   s     r   r<   zCollectionsSource.reconstruct  s9    ))!,"1%**=9	
r,   c                 "    t         j                  S r5   rw   r?   s    r   r   zCollectionsSource.guard_source  ry   r,   rE   r  rY  s   @r   r  r    s^    N>c >S >T > + + +
 "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   rD   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  )r:   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   ri   r  r   r9   s    `r   r<   z(TorchFunctionModeStackSource.reconstruct  sQ    	

 	w889JKLM21e<=r,   c                 "    t         j                  S r5   rw   r?   s    r   r   z)TorchFunctionModeStackSource.guard_source!  ry   r,   rE   )rF   rG   rH   rl   rI   rM   rN   r)   rD   r  r<   rL   r   r   rO   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 )NFrr   )r7   ru   r  r9   s     r   r<   zConstantSource.reconstruct*  s&    g889I9Iu8UVr,   c                 "    t         j                  S r5   )r   r   r?   s    r   r   zConstantSource.guard_source-  s    ###r,   c                     | j                   S r5   )r  r?   s    r   rD   zConstantSource._name_template1  s    r,   r   c                     t         r5   rX   r   s     r   r   zConstantSource.make_guard5  r   r,   rE   )rF   rG   rH   r)   rI   r<   rL   r   r   rM   rN   rD   r   r   rO   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})rO   r?   s    r   rD   z NumpyTensorSource._name_template;  s    #r,   Nc                     j                  fd        | j                         j                  t        dd             y )Nc                  (     j                  dd      S )Nr  	as_tensorr'  r(  s   r   r   z/NumpyTensorSource.reconstruct.<locals>.<lambda>@  s    g&>&>w&T r,   r   Fr)  r9   s    `r   r<   zNumpyTensorSource.reconstruct?  s4    TU		21e<=r,   rE   )rF   rG   rH   rL   r)   rD   r<   rO   r,   r   r  r  9  s     $ $ $>r,   r  c                   "    e Zd Zedefd       Zy)SubclassAttrListSourcer   c                      y)Nz{0}.__tensor_flatten__()[0]rO   r?   s    r   rD   z%SubclassAttrListSource._name_templateG  s    ,r,   NrF   rG   rH   rL   r)   rD   rO   r,   r   r  r  E  s    - - -r,   r  c                   "    e Zd Zedefd       Zy)FloatTensorSourcer   c                      y)Nz___as_tensor({0})rO   r?   s    r   rD   z FloatTensorSource._name_templateP  s    "r,   Nr  rO   r,   r   r  r  N  s    # # #r,   r  c                   "    e Zd Zedefd       Zy)CallMethodItemSourcer   c                      y)Nz
{0}.item()rO   r?   s    r   rD   z#CallMethodItemSource._name_templateW  s    r,   Nr  rO   r,   r   r  r  U  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  rO   r?   s    r   rD   zShapeEnvSource._name_templatea  r  r,   c                 "    t         j                  S r5   )r   	SHAPE_ENVr?   s    r   r   zShapeEnvSource.guard_sourcee  r   r,   Nr  rO   r,   r   r   r   _  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  rJ  r?   s    r   rD   z"CurrentStreamSource._name_templaten  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>u  s    G,,U^^=QR r,   c                  (     j                  dd      S )Nr  r   r'  r(  s   r   r   z1CurrentStreamSource.reconstruct.<locals>.<lambda>w  s    g&>&>w&Q r,   F)r   r   ri   r   r  rJ  r   )r:   r;   num_argss    ` r   r<   zCurrentStreamSource.reconstructr  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 r5   rw   r?   s    r   r   z CurrentStreamSource.guard_source  ry   r,   rE   )rF   rG   rH   device_typerI   rM   rN   r)   rD   r<   rL   r   r   rO   r,   r   r  r  j  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  rO   r?   s    r   rD   z"BackwardStateSource._name_template  r  r,   c                 "    t         j                  S r5   )r   BACKWARD_STATEr?   s    r   r   z BackwardStateSource.guard_source  s    )))r,   Nr  rO   r,   r   r  r    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/   r1   r0   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 r5   )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 r5   )r   r	   r  r   rn   ro   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 r5   )r   r	   is_from_nonlocal_sourcer   r/   r3   r1   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                 X    t        | t              rt        | j                  |      S | |k(  S r5   )r   r	   is_from_sourcer   )r   r#  s     r   r%  r%    s(    &-(fkk622V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)NTrB  rC  F)	r   r:  rs  r   r   r   rI  r	   is_from_defaultsr   s    r   r1  r1    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   r3  r3    s+    &/*&-((55r,   )F)xr   rG  enumrM   collections.abcr   typingr   r   r   r   r  r   r  torch._guardsr	   r
   r   r   r   r   r   bytecode_transformationr   r   r   r;   r   r>   LOCAL_SPECIALIZED_NN_MODULErx   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  rJ   r   r)   r"   r+   r/   rQ   rZ   ra   rn   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Enumr   r  r  r  r  r!  r,  r1  r6  r:  rI  r[  rf  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  r   r"  r%  	lru_cacher'  r)  r+  r-  r/  r1  r3  rO   r,   r   <module>rC     sW  &    $ 6 6 '    " {>>@@++[-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 	$ 	&8F#3 & &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(
 
 )
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("& " )"8 4(" " )"8 4("6 " )"4 4("V " )"$ 4(> > )> 4(-] - )- 4(# # )# 4(=  ) 4(%V % )% 4("& " )"2 4(*& * )* 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   r,   