
    7hp;                     $   % S SK r S SKJrJrJr  S SKrS SKJs  Jr	  S SK
Jr  S SKJr  \R                  R                  rSrSrSr/ q\\R*                  R,                  R.                     \S'   S	\R*                  R,                  R.                  S
S4S jrSS jr  SS\R*                  R6                  S\R*                  R8                  S\\R:                     S\\   S
S4
S jjrS\R*                  R8                  S\\\      S
\ 4S jr! " S S\R*                  RD                  5      r# SS\R*                  R6                  S\\\R*                  R8                  /\ 4      S
S4S jjr$   SS\R*                  R6                  S\ S\\\      S\\\R*                  R8                  /\ 4      S
S4
S jjr%   SS\R*                  R6                  S\ S\\\      S\\\R*                  R8                  /\ 4      S
\R*                  R6                  4
S jjr&g)     N)AnyCallableOptional)maybe_set_is_frozen_param)
OrderedSetMODULE_TYPE_MAIN_MODULE_CONST_MODULE_dont_constant_foldopreturnc                 .    [         R                  U 5        g N)r   appendr   s    Z/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_inductor/constant_folding.pyadd_dont_constant_foldr      s    r"    c                  ,    [         R                  5         g r   )r   clear r   r   clear_dont_constant_foldr      s    r   gmnodeconstantnamec                 ~   U R                   nU(       a  UnOL[        U S5      (       d  SU l        U R                  n SU 3n[        X5      (       d  OUS-  nM  US-   U l        UR                  U5         Ub  UR	                  SUS0 5      nOUR	                  SUS0 5      nUR                  U5        UR                  R                  UR                  5        UR                  U5        UR                  Ul	        S S S 5        Ub)  U R                  XR5        [        XU5        [        U5        g g ! , (       d  f       N;= f)N_frozen_param_countr   _frozen_param   get_attrr   placeholder)graphhasattrr   inserting_beforecreate_nodereplace_all_uses_withmetaupdate
erase_noder   register_buffersetattrr   )r   r   r   r   gqualnameinew_input_nodes           r   replace_node_with_constantr1       s&    	Ar011%&B"""&qc*H2((FA	  "#Q	
		D	!]]:xRHN ]]=(BKN"">2""499-	T"ii 
" 
8.h'!(+  
"	!s   4BD..
D<lifted_constant_namesc                 ^    U R                   S:H  =(       d    U R                  U=(       d    S;   $ )Nr!   r   )r   r   )r   r2   s     r   is_const_sourcer4   J   s'     77j NDII2G2M2$NNr   c                     ^  \ rS rSr   SS\R
                  R                  S\S\\	\
      S\\\R
                  R                  /\4      SS4
U 4S jjjrS\4S	 jrS
\R
                  R                  S\4U 4S jjrS
\R
                  R"                  R                  S\4S jrS\\R
                  R                  \	\R
                  R                     4   4S jrS
\R
                  R                  S\4U 4S jjrS\R,                  S\4S jrS
\R
                  R                  S\R,                  SS4S jrS\4U 4S jjrS\\R
                  R                  \4   SS4S jrSrU =r$ )ConstantFolderP   Nr   skip_constructorsr2   skip_folding_node_fnr   c                    > [         TU ]  U5        0 U l        [        R                  " 5       U l        [        5       U l        X l        U R                  5       U l
        X0l        [        5       U l        X@l        g r   )super__init__node_replacementscollectionsCounterreplaced_usesobjectunknown_valuer8   node_to_last_non_output_useuser_to_last_usesr2   deferred_valuer9   )selfr   r8   r2   r9   	__class__s        r   r<   ConstantFolder.__init__Q   sd     	;=7B7J7J7L#X'8 "&!A!A!C%:"$h$8!r   c                     g)NFr   )rF   s    r   _support_dynamic_shape%ConstantFolder._support_dynamic_shapee   s    r   r   c                   > U R                   c  [        TU ]	  U5      $ U R                  b"  U R                  U5      (       a  U R                  $ [
        R                  " UR                  0 UR                  D6nU H~  n[        U[        R                  R                  5      (       d  M.  UR                  U R                   =(       d    S;  d  MS  U R                  U   U R                  :w  d  Mr  U R                  s  $    U R                  $ )Nr   )r2   r;   run_noder9   rB   pytreearg_tree_leavesargskwargs
isinstancetorchfxNoder   envrE   )rF   r   flattened_node_inpsinprG   s       r   _deduce_valueConstantFolder._deduce_valuei   s    %%-7#D)) $$0T5N5Nt5T5T%%%$44diiO4;;O&C3..HHT%?%?%E2FHHSMT%8%88))) ' """r   c                    S[         R                  R                  R                  S[        4S jnU" U5      (       d~  UR
                  [         R                  R                  R                  R                  :X  ak  [        UR                  5      S:X  aR  U" [        [        UR                  5      5      5      (       a)  [        UR                  S   U R                   5      (       a  g[#        [         R                  R$                  SS 5      S LnU(       a  UR
                  [         R                  R$                  R&                  R                  [         R                  R$                  R(                  R                  [         R                  R$                  R(                  R*                  [         R                  R$                  R,                  R.                  4;   a  gUR
                  [0        ;   a  gg)	Nr   r   c                    U R                   [        R                  R                  R                  R
                  :H  =(       a    [        U R                  S   [        R                  R                  5      =(       a    SU R                  S   R                  ;   =(       a^    U R                  S   R                  S   R                  [        R                  :H  =(       a     U R                  S   [        R                  :H  $ )Nr   valr    )targetrS   opsprimsconvert_element_typedefaultrR   rP   rT   rU   r(   dtypeint8bfloat16)r   s    r   is_woq_int8_pattern5ConstantFolder.is_impure.<locals>.is_woq_int8_pattern{   s    uyyCCKKK 3tyy|UXX]];3TYYq\...3 IIaL%%e,22ejj@3 IIaLENN2r   r    r   Tdequantize_per_channelF)rS   rT   r   rU   boolr^   r_   atenpermuterb   lenusersnextiterr4   rP   r2   getattrquantized_decomposedrh   dequantize_per_tensortensorra   no_fuser   )rF   r   rf   quant_registereds       r   	is_impureConstantFolder.is_impurez   sV   	ehhmm&8&8 	T 	  %%uyy~~55===

Oq('T$**-=(>??IIaL&&
 
  EII224LdS 	 II**AAIIII**@@HHII**@@GGII**??GG	0
 !
 ;;--r   c                   ^^^ [         R                  " [        5      m[        [        R
                  R                     " 5       m[        [        [        U R                  R                  R                  5      5      5      n[        U R                  R                  R                  5       H  mTR                  S:X  a  M  S[        R
                  R                  SS 4UUU4S jjn[        R                  " [        R
                  R                  UTR                   TR"                  45        [%        TR&                  5      S:X  d  M  UTR&                  ;   d  M  TT   R)                  T5        M     T$ )NoutputrX   r   c                 ^   > U T;   a  g TR                  U 5        TT   R                  U 5        g r   )addr   )rX   last_non_output_user   	seen_usess    r   add_use;ConstantFolder.node_to_last_non_output_use.<locals>.add_use   s-    )#c"#D)005r   r    )r>   defaultdictlistr   rS   rT   rU   rn   ro   reversedmoduler#   nodesr^   rN   tree_map_only_rP   rQ   rl   rm   r   )rF   output_noder~   r|   r   r}   s      @@@r   rC   *ConstantFolder.node_to_last_non_output_use   s    )55d;uxx}}-/	4):):)@)@ ABCT[[..445D{{h&6UXX]] 6t 6 6 !!%((--499dkk:RS 4::!#tzz(A#D)006! 6$ #"r   c                   >^  UR                   S:X  al  S[        R                  R                  SS 4U 4S jjn[        R
                  " [        R                  R                  X!R                  5        [        T
T ]!  U5      $ T R                  U5      u  p4[        R                  " U0 UD6n[        U 4S jU 5       5      (       a  T R                  $ UR                  S:X  a4  UR                   [        R                  R                   :X  a  T R                  $ UR                  S:X  a  UR"                  S:X  a  T R                  $ T R$                  (       a>  ['        UT R(                  5      (       d#  [        S U 5       5      (       d  T R                  $ [+        UR                   [        R,                  R.                  5      (       a>  [        R0                  R2                  UR                   R4                  ;   a  T R                  $ UR                  S:X  a?  [+        UR                   [        R,                  R6                  5      (       a  T R                  $ T R9                  U5      n[+        U[        R:                  R<                  5      (       a  U$ UT R                  :X  a  T R                  $ ['        UT R(                  5      (       Gd  [+        U[        R>                  5      (       d  UT R@                  :X  GaS  UT R@                  :w  a  URB                  RD                  S	:X  a  U$ T RG                  U5      (       d  U$ T RI                  U5      (       a  T R                  $ T RK                  X5        [        R                  " UR                  0 URL                  D6nU HE  n[+        U[        R                  R                  5      (       d  M.  T RN                  U==   S
-  ss'   MG     T RP                  RS                  U/ 5       HG  n	T RN                  U	   [U        U	RV                  5      :X  d  M+  T RX                  R[                  U	S 5        MI     U$ )Nry   argr   c                 8   > TR                   TR                  U '   g r   )rB   rV   )r   rF   s    r   set_env(ConstantFolder.run_node.<locals>.set_env   s     $ 2 2r   c              3      >#    U  H<  n[        TR                  5      [        U5      :H  =(       a    TR                  U:H  v   M>     g 7fr   )typerB   ).0input_rF   s     r   	<genexpr>*ConstantFolder.run_node.<locals>.<genexpr>   s?      
* ##$V4U9K9Kv9UU*s   AAcall_function&triton_kernel_wrapper_functional_proxyc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )rR   rS   Tensor)r   es     r   r   r      s      N=M
1ell33=Ms   ')r(   r    ).r^   rS   rT   rU   rN   r   rP   r;   rM   fetch_args_kwargs_from_envrO   anyrB   r   rj   _efficientzerotensorrb   r   r8   r4   r2   rR   _ops
OpOverloadTagnondeterministic_seededtagsHigherOrderOperatorrY   _CScriptObjectr   rE   devicer   insertable_tensor_checkrv   add_node_replacementrQ   r@   rD   getrl   rm   r=   pop)rF   r   r   rP   rQ   flattened_inputsoutrW   n	to_deleterG   s   `         r   rM   ConstantFolder.run_node   sD   ;;("3UXX]] 3t 3 !!%((--))D7#D))66t<!114B6B
  
*
 
 
 %%% GG&t88@@@%%% GG&		EE%%% ""#D$*D*DEEN=MNNN%%% t{{EJJ$9$9::		11T[[5E5EE%%%77o%*KK77+
 +
 %%%  &c5880011J$$$$%%%tT%?%?@@sELL))SD4G4G-Gd)))cjjoo.G
//44
~~d##)))%%d0"("8"8$))"St{{"S(!!UXX]]33""1%*%	 ) "3377bA	%%i0C	4HH**..y$? B 
r   rs   c                     g)NTr   )rF   rs   s     r   r   &ConstantFolder.insertable_tensor_check  s    r   c                      X R                   U'   g r   )r=   )rF   r   rs   s      r   r   #ConstantFolder.add_node_replacement!  s    '-t$r   c                 D   > 0 nU R                  U5        [        TU ]	  US9$ )N)initial_env)insert_placerholder_valuesr;   run)rF   rV   rG   s     r   r   ConstantFolder.run$  s'    (*'',w{s{++r   rV   c                 D   U R                   R                  R                  SS9 H  nU R                  X'   M     U R                  c  g U R                   R                  R
                   H6  nUR                  U R                  =(       d    S;   d  M(  U R                  X'   M8     g )Nr"   r   r   )r   r#   
find_nodesrB   r2   r   r   rE   )rF   rV   r   s      r   r   )ConstantFolder.insert_placerholder_values)  s    ""---?A''CF @%%-""((Avv$44:;,, )r   )rE   r2   r=   r@   r8   r9   rB   rD   )FNN)__name__
__module____qualname____firstlineno__rS   rT   GraphModuleri   r   r   strr   rU   r<   rJ   r   rY   r   rv   dictrC   rM   r   r   r   r   r   __static_attributes____classcell__)rG   s   @r   r6   r6   P   s{    #(59JN9HH  9  9  (S	2	9
 'x0E'FG9 
9 9( #%((-- #C #"*ehhmm00 *T *X#T%((--ehhmmAT2T-U #2]UXX]] ]s ]~ell t . . .QU .,S ,
-d588==#3E.F -4 - -r   r6   constraint_fnc                    [         R                  R                  R                  5          [	        U SS9nUR                  5         UR                  R                  5        H#  u  p4Ub  U" U5      (       d  M  [        XU5        M%     / nU R                  R                  SS9 H^  n[        UR                  5      S:X  d  M  [        XR                  5      (       a  [        XR                  5        UR!                  U5        M`     U H  nU R                  R#                  U5        M      U R                  R%                  5         U R                  R'                  5         U R)                  5         S S S 5        g ! , (       d  f       g = f)NT)r8   r!   r   r   )rS   utils_python_dispatch_disable_current_modesr6   r   r=   itemsr1   r#   r   rl   rm   r$   r^   delattrr   r*   eliminate_dead_codelint	recompile)r   r   cfr   r   erased_paramss         r   constant_foldr   3  s    
	%	%	<	<	>B$7
 2288:ND(t1D1D&r: ;
 HH'':'6D4::!#2{{++B,$$T*	 7 "DHH% " 	$$&

+ 
?	>	>s   BE3>B,E33
Fr8   r9   c                    [         R                  R                  R                  5          [	        U UUUS9nUR                  5         U R                  R                   H  nUb&  U" U5      (       a  [        UR                  [        '   M,  [        XR5      (       d  XTR                  ;   d  XTR                  ;   a  [        UR                  [        '   Ms  [        UR                  [        '   M     S S S 5        g ! , (       d  f       g = f)N)r8   r2   r9   )rS   r   r   r   r6   r   r#   r   
MODULE_TAGr(   META_TAGr4   r=   r@   CONST_MODULE_TAG)r   r8   r2   r9   r   r   s         r   constant_graph_tagr   O  s     
	%	%	<	<	>/"7!5	
 	HHNND#/4H4N4N&0		(#<<///+++&6		(#&0		(# # 
?	>	>s   CC33
Dc                   ^ [        XX#5        S[        R                  R                  S[        4S jnU R
                  R                   H6  nUR                  S:X  d  UR                  U=(       d    S;   d  M.  U" U5        M8     [        R                  R                  5       n0 m/ nU R
                  R                   H}  nUR                  [           [        :X  a  M   UR                  UU4S j5      nUTU'   UR                   H2  n	U	R                  [           [        :X  d  M   UR                  U5          M{     M     UR!                  [#        U5      5        UR%                  5         [        R                  R'                  X5      n
U
$ )zf
Construct a GraphModule which corresponds to the part which could be
constant folded in provided gm.
r   r   c                     SnU R                    H"  nUR                  [           [        :X  d  M   Sn  O   U(       d  [        U R                  [        '   U$ )NFT)rm   r(   r   r   r   )r   used_to_foldus      r   untag)run_and_get_constant_graph.<locals>.untag{  sH    Avvh#33#  ",DIIhr   r!   r   c                    > TU    $ r   r   )xnode_remappings    r   <lambda>,run_and_get_constant_graph.<locals>.<lambda>  s
    ~a7Hr   )r   rS   rT   rU   ri   r#   r   r   r   Graphr(   r   r   	node_copyrm   r   ry   tupler   r   )r   r8   r2   r9   r   r   	new_graphoutput_nodesnew_nodeusernew_gmr   s              @r   run_and_get_constant_graphr   l  s-    
4EHHMM d  77j TYY3H3NB%O$K   I9;NL99X*,&&t-HI'tJJDyy"j0##H-   U<()NNXX!!"0FMr   )r   N)NNr   )TNN)'r>   typingr   r   r   rS   torch.utils._pytreer   _pytreerN   torch._inductor.freezing_utilsr   torch.utils._ordered_setr   r_   rj   r   r   r   r   r   rT   r   Target__annotations__r   r   r   rU   r   r   r1   ri   r4   Interpreterr6   r   r   r   r   r   r   <module>r      sO    * *  $ $ D / yy~~
 
" 24 T%((--../ 4#uxx}}33 # #
  (,	',',
((--', u||$', 3-	',
 
',TO
((--O08c0CO	O`-UXX)) `-J @DHehhmm_d%:;< 
< #15FJ	111 $DI.1 #8UXX]]OT,A#BC	1
 
1> #15FJ	333 $DI.3 #8UXX]]OT,A#BC	3
 XX3r   