
    Phy                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	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 ddlmZmZmZ dd	lmZmZmZ dd
lmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(  G d de$      Z) G d de)      Z* G d de$      Z+de,fdZ-de,fdZ.de/ddfdZ0 G d de)      Z1 G d de)      Z2 ejf                  d      d        Z4 G d  d!e$      Z5 G d" d#e$      Z6y)$    N)AnyDictListOptional   )	variables)create_call_functioncreate_instruction)	skip_code)unimplemented)GuardBuilderinstall_guardmake_dupe_guard)
AttrSourceGetItemSourceGlobalWeakRefSource)global_key_nameistensoristypeiter_contains   )MutableLocalVariableTrackerConstantVariableTensorVariablec                        e Zd Z fdZd Zd Zd Zd ZdefdZ		 	 	 	 	 	 d fdZ
d	 Zd
 Zedefd       Zed        Zed        Z xZS )ConstDictVariablec                 h    t        |   di | t        d |D              rJ || _        || _        y )Nc              3   <   K   | ]  }t        |t                y wN
isinstancer   .0xs     hC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/variables/dicts.py	<genexpr>z-ConstDictVariable.__init__.<locals>.<genexpr>   s     Eu!z!_5u    )super__init__anyitemsuser_cls)selfr/   r0   kwargs	__class__s       r(   r-   zConstDictVariable.__init__   s5    "6"EuEEEE
     c                     | j                   j                         D ci c]  \  }}||j                          c}}S c c}}w r"   r/   as_proxyr1   kvs      r(   r7   zConstDictVariable.as_proxy    s7    ,0JJ,<,<,>?,>DAq1::<,>???   =c                     | j                   j                         D ci c]  \  }}||j                          c}}S c c}}w r"   )r/   as_python_constantr8   s      r(   r=   z$ConstDictVariable.as_python_constant#   s;    6:jj6F6F6HI6Hda1''))6HIIIr;   c                     | j                   S r"   )r0   r1   s    r(   python_typezConstDictVariable.python_type&   s    }}r4   c                    | j                   t        j                  u r6|j                  |j	                  t        d      |j                  d      g       | j                  j                         D ]  }t        |      rH|j                  |j                  t        |      dd             |j                  t        dd             n |j                  |j                  |              || j                  |           | j                   t        j                  u r-t        dt        | j                              gt        dd      S t        dt        | j                              gS )	NTOrderedDict)addr   F	BUILD_MAPargr   )r0   collectionsrB   extend_outputcreate_load_python_modulecreate_load_attrr/   keysr   append_outputcreate_load_globalr   r	   create_load_constr
   len)r1   codegenkeys      r(   reconstructzConstDictVariable.reconstruct)   s%   ==K333!!55k4H,,]; ::??$C}%%..s/CTt.T %%&:1e&DE%%g&?&?&DEDJJsO$ % ==K333";C

OD%a/  '{DJJHIIr4   rF   c                 F    | j                   t        j                  |         S r"   )r/   r   get_keyr1   rF   s     r(   getitem_constzConstDictVariable.getitem_constF   s    zz+33C899r4   c                    ddl m}m}m}m} | j
                  }	|dk(  r$t        |      dk(  sJ | j                  |d         S |dk(  rL|s|rJ  ||	j                         D 
cg c]$  \  }
} |t        j                  ||
      |g      & c}}
      S |dk(  rK|s|rJ t        |	j                         D 
cg c]  }
t        j                  ||
       c}
t                     S |d	k(  r%|s|rJ  |t        |	j                                     S |d
k(  r9|s|rJ | j                  | j
                  j!                         t                     S |dk(  r+|s|rJ  |j"                  t        | j
                              S |dk(  r|rt        j%                  |d         r| j&                  r|st        |      dk(  sJ t        j)                  |d         }
t+        |
      r|j-                  t/        |
      |
       t1        |	      }|d   ||
<   |j3                  | | j                  |            S |dv rQt        |      dk(  rC|sAt        j%                  |d         r)t        j)                  |d         | j
                  vr|d   S |dk(  rTt        |      dk(  rF|sDt        j%                  |d         r,t        j)                  |d         | j
                  vr |d       S |dk(  r{|ryt        j%                  |d         ra| j&                  rUt1        |	      }|j5                  t        j)                  |d               }|j3                  | | j                  |             |S |dk(  rt        |      dk(  r|t7        |d   t              ri| j&                  r]t1        |	      }|j9                  |d   j
                         |j9                  |       | j                  |      }|j3                  | |      S |dk(  rt        |      dk(  rt7        |d   |||f      r| j&                  rt1        |	      }|d   j;                  |      D ]E  }|j;                  |      \  }
}t        j%                  |
      sJ ||t        j)                  |
      <   G |j9                  |       | j                  |      }|j3                  | |      S |dv rc|rat        j%                  |d         rIt        j)                  |d         | j
                  v r%| j
                  t        j)                  |d            S |dk(  rN|rLt        j%                  |d         r4 |j"                  t        j)                  |d         | j
                  v       S t<        | }  ||||      S c c}}
w c c}
w )Nr   )r   ListIteratorVariableListVariableTupleVariable__getitem__r   r/   )r/   rK   )r/   mutable_localvaluescopyr\   __len____setitem__r   )popgetrc   rb   update)rc   __getattr____contains__)  r   rX   rY   rZ   r/   rO   rV   r   _key_to_varSetVariablerK   r   listr]   modifedr^   createis_valid_keyr\   rT   r   store_global_weakrefr   dictreplace_allrb   r$   rd   unpack_var_sequencer,   call_method)r1   txnameargsr2   r   rX   rY   rZ   valr9   r:   newvalresultr'   r3   s                  r(   rr   zConstDictVariable.call_methodI   sF   	
 	
 jj= t9>!>%%d1g..W_''  !$		 !,1 "-99 " !  !,  V^'' !XXZ
 (	 &11 ( +n	 	 X'' cjjl!344V^''<<

 1<PPY''*#**3tzz?;;M!!..tAw7""#d)q.00!))$q'2A{''(:A>#YFQF1I>>V$ 
 N"D	Q!..tAw7!))$q'2$**D 7NEMD	Q!..tAw7!))$q'2$**D#D))EM!..tAw7""#YFZZ 1 9 9$q' BCFNN4f!56MHD	Q47$56""#YFMM$q'--(MM&!\\&)F>>$//HD	QQ !( ""#YF!W004,,R01(55a88878(0034 5 MM&!\\&)F>>$//**!..tAw7!))$q'2djj@::/77Q@AAN"t0A0N0NtTUw0W*#**!))$q'2djj@  7&r4v>>{ s   #)V 
6Vc                 *     | j                   dd|i|S )z#a copy of self with different itemsr/   r+   )clone)r1   r/   optionss      r(   rk   zConstDictVariable.modifed   s    tzz1111r4   c                     | j                   }|j                         D cg c]  }t        j                  ||       }}|S c c}w r"   )r/   rK   r   rh   )r1   rs   rv   r9   rx   s        r(   rq   z%ConstDictVariable.unpack_var_sequence   s>    jj@C
K
1#//A6
K Ls   A c                 r    t        |t              r|j                  |j                  S |j                         S r"   )r$   r   specialized_valuer=   )clsrF   s     r(   rT   zConstDictVariable.get_key   s2    c>*s/D/D/P((())++r4   c                     |j                         xsT t        |t              xr |j                  d uxs2 t        |t              xr  |j                         t        j                  u S r"   )is_python_constantr$   r   r~   r   r@   torchdtype)r   rQ   s     r(   rm   zConstDictVariable.is_valid_key   s\     ""$ X3/UC4I4IQU4UX3 01Vcoo6G5;;6V	
r4   c           	          ddl m} t        |      r!  ||t        t	        |                  |      S t        j                  |      sJ t        j                  |fi |S Nr   VariableBuilder)builderr   r   r   r   r   
is_literalrl   )r   rs   rQ   r{   r   s        r(   rh   zConstDictVariable._key_to_var   sV    ,C=Q?2':?3;O'PQRUVV#..s333#**3:'::r4   ru   zList[VariableTracker]r2   zDict[str, VariableTracker]returnr   )__name__
__module____qualname__r-   r7   r=   r@   rR   r   rV   rr   rk   rq   classmethodrT   rm   rh   __classcell__r3   s   @r(   r   r      s    !@JJ:: :S? &	S?
 -S? 
S?j2
 ,/ , , 
 
 ; ;r4   r   c                   R     e Zd Zd fd	Z fdZed        Z	 	 	 	 	 	 d fdZ xZS )DefaultDictVariablec                 ^    t        |   ||fi | |t        j                  u sJ || _        y r"   )r,   r-   rG   defaultdictdefault_factory)r1   r/   r0   r   r2   r3   s        r(   r-   zDefaultDictVariable.__init__  s3    3F3;22222.r4   c                 t    | j                   t        t        t        fvr| j                  syt
        |          S NF)r   rj   tuplero   r/   r,   r   )r1   r3   s    r(   r   z&DefaultDictVariable.is_python_constant  s1     eT'::4::w)++r4   c                     t        | t        j                        r| j                  t        t
        t        fv S t        | t        j                  j                        S r"   )	r$   r   BuiltinVariablefnrj   r   ro   	functionsBaseUserFunctionVariablerE   s    r(   is_supported_argz$DefaultDictVariable.is_supported_arg  sA    c944566dE4000c9#6#6#O#OPPr4   c                    |dk(  rt         j                  |d         }|| j                  v r| j                  |d         S | j                  t        |       t        |      r|j                  t        |      |       t        | j                        }| j                  j                  |g i       }|||<   |j                  | | j                  |             |S t        | 9  ||||      S )Nr[   r   )r   rT   r/   rV   r   KeyErrorr   rn   r   ro   call_functionrp   rk   r,   rr   )	r1   rs   rt   ru   r2   r9   new_valdefault_varr3   s	           r(   rr   zDefaultDictVariable.call_method  s     = !))$q'2ADJJ))$q'22''/"aS**{//0BAF"4::.G"&"6"6"D"DRR"PK!,GAJNN4g)>?&&7&r4v>>r4   r"   r   )	r   r   r   r-   r   staticmethodr   rr   r   r   s   @r(   r   r     sK    /
, Q Q? &	?
 -? 
? ?r4   r   c                        e Zd Zej                   G d d             Zdee   f fdZd Z	d Z
d Zd Zed	        Zd
 Zdee   deeef   ddf fdZdefdZd Zd Z xZS )ri   c                   >    e Zd ZU eed<   eed<   defdZdede	fdZ
y)SetVariable.SetElementvtunderlying_valuer   c                 ,    t        | j                        S r"   )hashr   r?   s    r(   __hash__zSetVariable.SetElement.__hash__6  s    --..r4   otherc                     t        |t        j                        syt        | j                  t        j
                        r| j                  |j                  u S | j                  |j                  k(  S r   )r$   ri   
SetElementr   r   r   r   r1   r   s     r(   __eq__zSetVariable.SetElement.__eq__9  sW    e[%;%;<$''9#;#;<,,0F0FFF,,0F0FFFr4   N)r   r   r   r   __annotations__r   intr   objectboolr   r+   r4   r(   r   r   1  s0    	/c 	/	G 	G4 	Gr4   r   r/   c                     t        |   di | t        |t              sJ t	        d |D              sJ g | _        | j                  |       y )Nc              3   <   K   | ]  }t        |t                y wr"   r#   r%   s     r(   r)   z'SetVariable.__init__.<locals>.<genexpr>I  s     A5a:a15r*   r+   )r,   r-   r$   rj   allr/   _add)r1   r/   r2   r3   s      r(   r-   zSetVariable.__init__A  sL    
 	"6"%&&&A5AAAA
		%r4   c                 \    | j                   D cg c]  }|j                          c}S c c}w r"   r6   r1   r'   s     r(   r7   zSetVariable.as_proxyN  s$    &*jj1j

j111s   )c                     t         S r"   )setr?   s    r(   r@   zSetVariable.python_typeQ  s    
r4   c                     |j                  dd       |j                  | j                         t        dt	        | j                              gt        dd      z   S )Nbuiltinsr   	BUILD_SETrE   r   T)load_import_fromforeachr/   r
   rO   r	   r1   rP   s     r(   rR   zSetVariable.reconstructT  sM      U3

#{DJJ@
 D)* 	*r4   c                    ddl m} ddlm} ddlm} t        ||      sJ t        ||      rV|j                         j                  j                  j                  d      }|t        d       t        j                  ||      S t        |t              r t        j                  ||j                        S t        ||      r$t        j                  ||j!                               S t        dt#        |       d       y )	Nr   )r   )MethodWrapperVariabler   example_valuez:Cannot check Tensor object identity without its fake valuez
Sets with z NYI)baser   miscr   tensorr   r$   r7   nodemetarc   r   ri   r   r   valuer=   type)r1   r   r   r   r   fake_tensors         r(   _as_set_elementzSetVariable._as_set_element\  s    )/*"o...b.)++-,,1155oFK"P ))"k::b*+))"bhh77b/0))"b.C.C.EFF
48*D12r4   c                     t               }| j                  D ]-  }||vsJ d       |j                  | j                  |             / |S )Nz%Items modeling set invariant violated)r   r/   rC   r   )r1   underlying_itemscurrent_items      r(   _underlying_itemszSetVariable._underlying_itemsq  sR    5 JJL$447674  !5!5l!CD	 '
  r4   c                    | j                   }t        |t        t        f      r|}n|g}|D ]  }| j	                  |      }||vr7|j                  |       | j                  j                  |j                         O|D ]  }t        |      t        |      k(  st        |j                  j                  |j                  j                        }|sRt        |j                  j                  j                  |               | j                  S r"   )r   r$   rj   r   r   rC   r/   appendr   r   r   sourcer   
make_guard)r1   itemr   items_to_additem_to_addset_elementealias_guards           r(   r   zSetVariable._add{  s    11dT3K(L 6L'K..{;K"22 $$[1

!!+..1)AK(DG3&5DDKK)>)>' ')!$$++*@*@*MN * ( zzr4   ru   r2   r   r   c                 t   |dk(  rd|rb| j                   rV|rJ |d   }t        | j                  |      | j                         }|j                  | |       t	        j
                  d       S |dk(  rV| j                   rJ|rJ |rJ t        | j                        }|j                         }|j                  | t        |             |S |dk(  r(t	        j
                  t        | j                              S |dk(  r0t        |      dk(  sJ |rJ t        | j                  |d   |d	      S t        | 1  ||||      S )
NrC   r   r_   rb   r`   rf   r   T)check_tensor_identity)r\   ri   r   rp   r   rl   rj   r/   rb   rO   r   r,   rr   )	r1   rs   rt   ru   r2   r   rx   r/   r3   s	           r(   rr   zSetVariable.call_method  s,    5=Td&8&8:7D 		$"00F NN4(#**400U]t11:O8$EYY[FNNE" MY#**3tzz?;;^#t9>!>: T!WbPTUU7&r4v>>r4   rF   c                     t        d      )NzIllegal to getitem on a set)RuntimeErrorrU   s     r(   rV   zSetVariable.getitem_const  s    899r4   c                      | j                         | j                  D cg c]  }|j                          c}      S c c}w r"   )r@   r/   r=   r   s     r(   r=   zSetVariable.as_python_constant  s7    !t!4::"N:a1#7#7#9:"NOO"Ns   =c                 ,    t        | j                        S r"   )rj   r/   )r1   rs   s     r(   rq   zSetVariable.unpack_var_sequence  s    DJJr4   )r   r   r   dataclasses	dataclassr   r   r   r-   r7   r@   rR   r   propertyr   r   r   strrr   rV   r=   rq   r   r   s   @r(   ri   ri   0  s    G G GO$2*3*    0$? ?#	$?
 S/)*$? 
$?L: :P r4   ri   r   c                 x    t         j                  j                  d      }|d uxr t        | |j                        S )Nztransformers.file_utils)sysmodulesrc   
issubclassModelOutputr   mods     r(   _is_matching_transformers_clsr     s/    
++//3
4Cd??z#s??r4   c                 x    t         j                  j                  d      }|d uxr t        | |j                        S )Nzdiffusers.utils)r   r   rc   r   
BaseOutputr   s     r(   _is_matching_diffusers_clsr     s/    
++//+
,Cd?>z#s~~>>r4   rt   r   c           
         || j                   v st        | j                  |      rt        d      S t	        | j
                  t              r| j                  t        d      S | j
                  | j                  r	 |j                  j                  j                  | j                        }t        t        | j                  |      j                  t        j                               t        t        ||            S t#        d| j$                  j&                   d| d| j
                   d| j                          y# t         $ r Y Kw xY w)zXShared method between DataClassVariable and CustomizedDictVariable where items are attrsTNFzhasattr(z, z)  )r/   hasattrr0   r   r   r\   r   r   outputroot_txget_example_valuer   r   r   r   HASATTRr   r   r3   r   )r1   rs   rt   examples       r(   _call_hasattr_customobjr     s
   tzzWT]]D9%%	""L	1dkk6I&&				#	ii''99$++FG4;;-889M9MN $GGT$:;; 
4>>**+2dV2d6H6H5I4;;-X  		s   :A?D: :	EEc                        e Zd ZdZdZe ej                  d      d               Zed        Z	e
d        Ze
d        Ze
d        Z fd	Zd
 Zd Z	 	 	 	 	 	 d fdZdeddf fdZeZ xZS )DataClassVariablez
    This is a bit of a hack to deal with
    transformers.file_utils.ModelOutput() from huggingface.

    ModelOutput causes trouble because it a a mix of a dataclass and a
    OrderedDict and it calls super() methods implemented in C.
    FNc                  ^   	 ddl m}  | j                  j                         D ]#  }t	        |      st        |j                         % 	 	 ddlm	} |j                  j                         D ]#  }t	        |      st        |j                         % y # t        $ r Y Sw xY w# t        $ r Y y w xY w)Nr   )r   )r   )
transformers.file_utilsr   __dict__r]   callabler   __code__ImportErrordiffusers.utilsr   )r   objr   s      r(   _patch_oncezDataClassVariable._patch_once  s    	;"++224C=cll+ 5	2!**113C=cll+ 4  		  		s.   .B B 
.B  9B  	BB 	B,+B,c                 2    t        |       xs t        |       S r"   )r   r   r   s    r(   is_matching_clsz!DataClassVariable.is_matching_cls  s    ,S1T5OPS5TTr4   c                 6    | j                  t        |            S r"   r
  r   r   r  s     r(   is_matching_objectz$DataClassVariable.is_matching_object      ""49--r4   c                 0   t         j                          t        |j                  j                         t        j                  |      D cg c]  }|j                   }} t        j                  |      j                  |i |}|j                          t        |j                  j                               t        |      k(  sJ i }|D ]  }	|j                  |	   }
t        |
t               r|
||	<   (| j"                  rDt$        j&                  j)                  |
      sJ t$        j&                  j+                  |
      ||	<   x|
{J d|
         t-        |      dk(  r+t        ||d      t$        j.                        st1        d        | ||fi |S c c}w )Nzunexpected r   r   z&DataClassVariable iterator constructor)r   r  r   r-   r  r   fieldsrt   inspect	signaturebindapply_defaultsr   	argumentsrK   r$   r   include_noner   r   r   rl   rO   r   r   )r   r0   ru   r2   r{   frK   boundr/   rQ   rv   s              r(   rl   zDataClassVariable.create  sb   %%'(##,,- + 2 28 <= <1 <=0!!(+00$A&A5??'')*c$i777C//#&C#/ c
##$55@@EEE!*!;!;!B!B3!GE#J;;+cU(;;;  u:?:eDGni>V>V#WBC 5(.g..) >s   Fc           	         t        |      }t        j                  |      D cg c]  }|j                   }}g }i }|D ]w  }t	        ||      st        ||      }	 |j                  |j                  t        |j                  |            |	      }
|	| j                  r|
||<   g|j                  |
       y  | ||      S c c}w )N)rs   r   )r   r   r  rt   r   getattrr3   rs   r   r   r  r   )r   r   r  r0   r  rK   excludedr/   rQ   rv   vars              r(   wrapzDataClassVariable.wrap'  s    9 + 2 28 <= <1 <=CsC c3'g''zz*W^^S*I (  ?c&6&6!$E#JOOC(  5(## >s   Cc                 N    t        |   ||fi | | j                  |      sJ y r"   r,   r-   r
  r1   r/   r0   r{   r3   s       r(   r-   zDataClassVariable.__init__;  +    4G4##H---r4   c                     t               r"   NotImplementedErrorr?   s    r(   r7   zDataClassVariable.as_proxy?      !##r4   c                    |j                  |j                  | j                        g       t        | j                  j                               }|D ]  } || j                  |           |j                  t        |      |d      S NTrH   _create_load_constr0   r   r/   rK   create_call_function_kwrO   r1   rP   rK   rQ   s       r(   rR   zDataClassVariable.reconstructB  j    w99$--HIJTZZ__&'CDJJsO$ ..s4y$EEr4   r   r   c                    |dk(  rj|st        |      dk(  sJ |d   j                         }t        |t              r| j                  |   S | j                  |dg i       j                  |d||      S |dk(  r<|s|rJ t        j                  t        | j                  j                                     S |dk(  rd}t        |   ||||      S )Nr[   r   r   to_tuple__setattr__ra   )rO   r=   r$   r   r/   rr   r   rZ   rj   r]   r,   )r1   rs   rt   ru   r2   indexr3   s         r(   rr   zDataClassVariable.call_methodI  s     = #d)q.00G..0E%%zz%((''JB?KKtV  Z''**4

0A0A0C+DEE]" Dw"2tT6::r4   rt   c                    || j                   v r2| j                  |dt        j                  j	                  |      gi       S | j
                  st        j                  | j                        D ci c]  }|j                  |j                   }}||v rFt        j                  j                  ||         sJ t        j                  j	                  ||         S t        | 5  ||       y c c}w Nr[   )r/   rr   r   r   rl   r  r   r  r0   rt   defaultr   r,   var_getattr)r1   rs   rt   r  defaultsr3   s        r(   r5  zDataClassVariable.var_getattr`  s    4::##MI$>$>$E$Ed$K#Lb  ""3>3E3Edmm3TU3Ta		)3THUx 11<<Xd^LLL 1188$HHB%	 Vs   /C*r   )r   r   r   __doc__r  r   	functools	lru_cacher  r
  r   r  rl   r  r-   r7   rR   rr   r   r5  r   call_hasattrr   r   s   @r(   r   r     s     LY  & U U . . / /4 $ $&.$F; &	;
 -; 
;.
&C 
&,= 
& +Lr4   r   c                        e Zd Zed        Zed        Zed        Zed        Z fdZ	d Z
d Z	 	 	 	 	 	 d fd
Zdedd	f fdZeZ xZS )CustomizedDictVariablec                     t        | t        j                        r3| j                  t        j                  j                  u rt	        | d      syt        |       xs t        |       S )N__post_init__T)r   rG   rB   r-   r   r   r   r	  s    r(   r
  z&CustomizedDictVariable.is_matching_clsp  sR     sK334 7 7 @ @@C1 -S1T5OPS5TTr4   c                 6    | j                  t        |            S r"   r  r  s     r(   r  z)CustomizedDictVariable.is_matching_object~  r  r4   c                    dD ]R  }t        ||      st        ||      }t        |      s
J d|        t        |d      s>t        |j                         T |s|si }nt        j                  |      rB t        j                  |      j                  |i |}|j                          |j                  }nL|st        |      }n>t        |      dk(  r%t        |d   t              r|s|d   j                   }nt#        d       i }	j%                         D ]j  }
||
   }t        |t&              r||	|
<   t(        j*                  j-                  |      r#t(        j*                  j/                  |      |	|
<   `t#        d       l  | |	|fi |S )N)r-   r>  r0  ra   zexpect callable attr r  r   r   z/custom dict init with args/kwargs unimplementedz5expect VariableTracker or ConstantVariable.is_literal)r   r  r  r   r  r   is_dataclassr  r  r  r  r  ro   rO   r$   r   r/   r   rK   r   r   r   r   rl   )r   r0   ru   r2   r{   	attr_namer   	raw_itemsr  r/   rQ   rv   s               r(   rl   zCustomizedDictVariable.create  s`    UIx+Xy1|H'<YK%HH|2z*bkk* U FI%%h/4G%%h/44dEfEE  "IVIY!^
474E FvQIKL>>#CC.C#/ c
++66s;&77>>sCc
UV $ 5(.g..r4   c                     t               r"   r$  )r   r   r  s      r(   r  zCustomizedDictVariable.wrap  s    !##r4   c                 N    t        |   ||fi | | j                  |      sJ y r"   r   r!  s       r(   r-   zCustomizedDictVariable.__init__  r"  r4   c                     t               r"   r$  r?   s    r(   r7   zCustomizedDictVariable.as_proxy  r&  r4   c                    |j                  |j                  | j                        g       t        | j                  j                               }|D ]  } || j                  |           |j                  t        |      |d      S r(  r)  r,  s       r(   rR   z"CustomizedDictVariable.reconstruct  r-  r4   r   r   c                    t        | j                  |      }| j                  d nt        | j                  |      }t	        |d      r4|j
                  t        t        j                  fv rt        | )  ||||      S |dv r5|j                  t        j                  ||      | gt        |      z   |      S t        d|       y )N__objclass__)r[   r/  ra   r0  )r   z.custom dict: call_method unimplemented name=%s)r  r0   r   r   r   rI  ro   rG   rB   r,   rr   inline_user_function_returnr   UserFunctionVariablerj   r   )r1   rs   rt   ru   r2   r   r   r3   s          r(   rr   z"CustomizedDictVariable.call_method  s     T]]D),*T[[$2O2~&2??##?
 ,

 7&r4v>>NN11..r&Ad#  	FMr4   rt   c                     || j                   v r2| j                  |dt        j                  j	                  |      gi       S t
        |   ||       y r3  )r/   rr   r   r   rl   r,   r5  )r1   rs   rt   r3   s      r(   r5  z"CustomizedDictVariable.var_getattr  sP    4::##MI$>$>$E$Ed$K#Lb  	B%r4   r   )r   r   r   r   r
  r   r  rl   r  r-   r7   rR   rr   r   r5  r   r:  r   r   s   @r(   r<  r<  o  s    U U . .
 $/ $/N $ $.$
FN &	N
 -N 
N4&C &,= & +Lr4   r<  c                  H    dd l } d }|| j                  j                  _        y )Nr   c                 N    t        |d      sy| j                  |j                  k(  S )Nr  F)r   r  r   s     r(   !_dynamo_overriden_transformers_eqzJ_install_PretrainedConfig_patch.<locals>._dynamo_overriden_transformers_eq  s"    uj)}}..r4   )transformersconfiguration_utilsPretrainedConfigr   )rP  rO  s     r(   _install_PretrainedConfig_patchrS    s#    
/ 	* $$55<r4   c                   b     e Zd ZdZed        Zed        Z fdZde	ddfdZ
de	ddfd	Z xZS )
HFPretrainedConfigVariablez/
    Hack for HuggingFace PretrainedConfig
    c                     t         j                  j                  d      }|d uxr t        | |j                        }|r
t                |S )Nz transformers.configuration_utils)r   r   rc   r   rR  rS  )r   r   is_matchs      r(   r
  z*HFPretrainedConfigVariable.is_matching_cls  s@    kkoo@Ad?Lz#s7K7K'L +-r4   c                 6    | j                  t        |            S r"   r  r  s     r(   r  z-HFPretrainedConfigVariable.is_matching_object  r  r4   c                 j    t        |   di | || _        | j                  t	        |            sJ y )Nr+   )r,   r-   r  r
  r   )r1   r  r2   r3   s      r(   r-   z#HFPretrainedConfigVariable.__init__  s2    "6"##DI...r4   rt   r   r   c                 Z    ddl m}  |j                  t        | j                  |            S )Nr   r   )rg   r   rl   r  r  )r1   rs   rt   r   s       r(   r5  z&HFPretrainedConfigVariable.var_getattr  s$    &&&&wtxx'>??r4   c                 h    t         j                  j                  t        | j                  |            S r"   )r   r   rl   r   r  )r1   rs   rt   s      r(   r:  z'HFPretrainedConfigVariable.call_hasattr  s$    ))0041HIIr4   )r   r   r   r7  r   r
  r   r  r-   r   r5  r:  r   r   s   @r(   rU  rU    sc       . ./
@C @,= @
JS J-> Jr4   rU  c                       e Zd ZdZd Zed        Zdee   de	e
ef   fdZdefdZdefd	Z	 ddedee   fdZdefdZy
)PythonSysModulesVariablezSpecial case for sys.modules.

    Without this we will guard on the exact set of modules imported in the
    lifetime of the python program.
    c                     t         S r"   )ro   r?   s    r(   r@   z$PythonSysModulesVariable.python_type  s    r4   c                 p    |j                  |j                  t        d      |j                  d      g       y )NTr   )rH   rI   r   rJ   r   s     r(   rR   z$PythonSysModulesVariable.reconstruct   s3    11#t<((3	
r4   ru   r2   c                 &   ddl m} |dk(  r | j                  |g|i |S |dk(  r | j                  |g|i |S |dk(  r | j                  |g|i |S   ||| j
                        t        j                        }|j                  ||||      S )Nr   r   r[   rc   rf   )	r   r   call_getitemcall_getcall_containsr   r   r   rr   )r1   rs   rt   ru   r2   r   	real_dicts          r(   rr   z$PythonSysModulesVariable.call_method)  s     	-= $4$$R9$9&99U] 4==5d5f55^#%4%%b:4:6:: 5OB4S[[A	$$RtV<<r4   rQ   c           	          t         j                  |      }|t        j                  v }t	        | j                  t        j                  t        j                  ||                    ||fS )N)rQ   invert)
r   rT   r   r   r   r   r8  partialr   DICT_CONTAINSr1   rs   rQ   r9   has_keys        r(   _contains_helperz)PythonSysModulesVariable._contains_helper9  s[    %%c*s{{"OO!!,"<"<!PWKX	

 'zr4   c                 X    | j                  ||      \  }}t        j                  |      S )Nr   )rk  r   rl   ri  s        r(   rc  z&PythonSysModulesVariable.call_containsC  s)    **2s3
7&&W55r4   Nr4  c                     ddl m} | j                  ||      \  }}|r4  ||t        | j                  |            t
        j                  |         S ||S t        j                  d       S )Nr   r   rm  )	r   r   rk  r   r   r   r   r   rl   )r1   rs   rQ   r4  r   r9   rj  s          r(   rb  z!PythonSysModulesVariable.call_getG  sr     	-**2s3
7?dkk1- kk!n 
 N&&T22r4   c                     ddl m} | j                  ||      \  }}  ||t        | j                  |            t
        j                  |         S r   )r   r   rk  r   r   r   r   )r1   rs   rQ   r   r9   rj  s         r(   ra  z%PythonSysModulesVariable.call_getitemY  sO    ,**2s3
7
$++q)
 ++a. 	r4   r"   )r   r   r   r7  r@   r   rR   r   r   r   r   rr   rk  rc  r   rb  ra  r+   r4   r(   r]  r]    s     
 
="?3==A#BV=W=  6_ 6
 NR3&319/1J3$O r4   r]  )7rG   r   r8  r  r   typingr   r   r   r   r   torch.fxrg   r   bytecode_transformationr	   r
   
eval_framer   excr   guardsr   r   r   r   r   r   r   utilsr   r   r   r   r   r   r   constantr   r   r   r   r   ri   r   r   r   r   r   r   r<  r9  rS  rU  r]  r+   r4   r(   <module>rx     s        
 , ,    N "  A A C C D D / & "f; f;R,?+ ,?^P / P f@$ @
?t ?
C 4E ,I+) I+Xr+. r+j T  J JBJ Jr4   