
    sg:%              
          d dl Z d dlmZmZmZ d dl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 ddlmZmZmZ d	d
lmZmZ erd dlmZ ededej8                  dej:                  dej<                  diZ G d de      Z  G d de      Z!y)    N)DictListTYPE_CHECKING)GetItemSource   )	variables)unimplemented	UserErrorUserErrorType)GuardBuilderinstall_guard)common_constant_typesistypenp   )typestrVariableTracker)InstructionTranslatorz!List types must use ListVariable.z&Dict types must use ConstDictVariable.z%Tensor types must use TensorVariable.zvSymInts must use SymNodeVariable. If the underlying value is static, we will create a ConstantVariable and specialize.z SymInts must use SymNodeVariablec                        e Zd Zedefd       Zd fdZd ZdefdZ	d Z
d Zed        Zd	d
defdZed        Zd ZddZ	 	 	 	 	 	 d fdZd	d
deddfdZ xZS )ConstantVariablereturnc                    |j                  dd       }t        j                  |       }|s/t        j	                         D ]  \  }}t        | |      sJ |        |ret        | t        t        f      rOg }t        |       D ])  \  }}|j                  t        j                  |             + t        j                  |fi |S |rt        | t        t        f      rg }t        |       D ]e  \  }}|rt        ||      nd }	|	r(t!        |	j#                  t$        j&                               |j                  t        j                  ||	             g t        j(                  j+                  t-        |             |fi |S t        | fi |S )Nsource)r   )getr   
is_literal_type_to_assert_reasonitems
isinstanceset	frozenset	enumerateappendcreater   SetVariablelisttupler   r   
make_guardr   CONSTANT_MATCHBaseListVariablecls_fortype)
valuekwargsr   r   disallowed_typereasonr   ixitem_sources
             S/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/constant.pyr#   zConstantVariable.create&   sl   Hd+%007
+A+G+G+I F'%e_=EvE=F *US),<=E!%( 91-44Q789((9&99JutUm<E!%( 	1:@mFA6d!+"8"89T9T"UV$++* , 		 --55d5kB5SFSS000    c                 `   t        |   di | t        j                  |      s/t        j                         D ]  \  }}t        ||      sJ |        t        |t        t        f      rJ d       t        0t        |t        j                        r|j                         | _        y || _        y )NzFConstantVariable(list) is banned - please create a ListVariable(items) )super__init__r   r   r   r   r   r%   r&   r   numberitemr,   )selfr,   r-   r.   r/   	__class__s        r3   r8   zConstantVariable.__init__D   s    "6"**51+A+G+G+I F'%e_=EvE=F D%=
 	TS	T 
 >j		:DJDJr4   c                     | j                   S Nr,   r;   s    r3   as_proxyzConstantVariable.as_proxyR       zzr4   c                 t    dt        | j                        j                   dt        | j                         dS )NzConstantVariable(z: ))r+   r,   __name__reprr@   s    r3   __str__zConstantVariable.__str__U   s2    "4

#3#<#<"=RTZZ@P?QQRSSr4   c                     | j                   S r>   r?   r@   s    r3   as_python_constantz#ConstantVariable.as_python_constantX   rB   r4   c                      y)NTr6   r@   s    r3   is_python_constantz#ConstantVariable.is_python_constant[   s    r4   c                 &    | j                  d      S )zz
        Need this when adding a BaseListVariable and a ConstantVariable together.
        Happens in detectron2.
        N)tx)unpack_var_sequencer@   s    r3   r   zConstantVariable.items^   s     ''4'00r4   rM   r   argc                 b    t         j                  | j                  |j                                  S r>   )r   r#   r,   rI   )r;   rM   rO   s      r3   getitem_constzConstantVariable.getitem_constf   s*    &&JJs--/0
 	
r4   c                     t        |       t        v ryt        |       t        t        t        t
        t        j                  fv rt        d | D              S y)NTc              3   F   K   | ]  }t         j                  |        y wr>   )r   r   ).0r1   s     r3   	<genexpr>z.ConstantVariable.is_literal.<locals>.<genexpr>q   s     C!'2215Cs   !F)	r+   r   r%   r&   r   r    torchSizeall)objs    r3   r   zConstantVariable.is_literalk   sA    9--9uc9ejjAACsCCCr4   c                     	 | j                         D cg c]  }t        j                  |       c}S c c}w # t        $ r}t        |d }~ww xY wr>   )rI   r   r#   	TypeErrorNotImplementedError)r;   rM   r1   es       r3   rN   z$ConstantVariable.unpack_var_sequencet   sH    	-8<8O8O8QR1$++A.RRR 	-%1,	-s!   8 38 8 	AAAc                     t        | j                  t              rt        t        j
                  dd      t        | j                  |      }t        |      rt        |S )Nz]Can't access members of type(obj) for a generated custom object. Please use __class__ insteadtype_reflection_method)	case_name)	r   r,   r+   r
   r   ANTI_PATTERNgetattrcallabler\   r;   rM   namemembers       r3   const_getattrzConstantVariable.const_getattrz   sS    djj$'**/2	  T*F%%r4   r   c                 4	   ddl m |dk(  rQt        | j                  t              r7t        j                  t        j                        j                  || g||      S |dk(  rt        | j                  t              r~t        |      dk(  rt        |      dk(  sJ |d   j                  |      }	 |D cg c]  }|j                          }}t        j                  | j                  j                  |            S t%        fd|D              r@t        j                  | j'                         | j                        j#                  ||||      S 	 |D cg c]  }|j                          }	}|j)                         D 
ci c]  \  }
}|
|j                          }}
}t+        | j                  t              rQ|t        j,                  j/                         v r1t1        | j                  |      }t        j                   ||	i |      S t+        | j                  t2        t4        f      r|s0|s.t        j                   t1        | j                  |                   S t7        t8        |      r$t        |      dk(  r|d   j;                         r|	d   }t1        t8        |      }t+        |t<        j>                  t<        j@                  t<        jB                  f      r=|jD                  jG                  d|| j                  |fi       }j                  |||      S t        j                   || j                  |            S t+        | j                  tH              r6|dk(  r1t1        | j                  |      }t        j                   ||	i |      S |d	k(  r,|s*|s(t        j                  t        | j                              S |d
k(  r[t        |      dk(  rM|d   j;                         r:|rJ |d   j                         }|| j                  v }t        j                  |      S tK        dtM        | j                         d|        y c c}w # t        $ r t         | E  ||||      cY S w xY wc c}w c c}}
w # t        $ r t         | E  ||||      cY S w xY w)Nr   )SymNodeVariableformatjoinr   c              3   6   K   | ]  }t        |        y wr>   )r   )rT   r1   ri   s     r3   rU   z/ConstantVariable.call_method.<locals>.<genexpr>   s     <!z!_-<s   call_functiondecode__len____contains__zconst method call .)'tensorri   r   r,   strr   BuiltinVariablerj   rm   lenforce_unpack_var_sequencerI   r   r#   rk   r\   r7   call_methodanyrA   r   r   __dict__keysrb   floatinthasattroperatorrK   rV   SymBoolSymFloatSymIntoutputcreate_proxybytesr	   r   )r;   rM   re   argsr-   arg_unpackedr1   	arg_consta
const_argskvconst_kwargsmethod
add_targetopproxysearchresultri   r<   s                      @r3   rw   zConstantVariable.call_method   s    	,8tzz3 7,,SZZ8FFTMDM6  V^tzz3 7t9>c&kQ&6667<<R@LC=IJQ113J	J'..tzzy/IJJ <t<<,,T]]_djjIUUD$ 	?:>?Q!..0?J?BH,,.Q$!QAq3355QLQ djj#&43<<3D3D3F+FTZZ.F#**6:+N+NOO

UCL1F'../Hwtzz4/H/JKK$'ING..0']
Xt, M II22'djj*-ErE +11"eZHH+222djj*3MNN

E*tx/?TZZ.F#**6:+N+NOO9df#**3tzz?;;^#D	Q47;U;U;W:!W//1Ftzz)F#**622*74::+>*?qGHi K& Cw*2tT6BBC @Q" 	?7&r4v>>	?sT   1Q 5Q/Q Q9 Q.,Q9 Q3Q9 Q Q+*Q+.Q9 9RRre   c                 l    t        | j                  |      }t        j                  j	                  |      S r>   )r}   r,   r   r   r#   )r;   rM   re   r   s       r3   call_hasattrzConstantVariable.call_hasattr   s)    T*))0088r4   r   NrM   r   )r   zList[VariableTracker]r-   zDict[str, VariableTracker]r   r   )rE   
__module____qualname__staticmethodr   r#   r8   rA   rs   rG   rI   rK   propertyr   rQ   r   rN   rg   rw   r   __classcell__r<   s   @r3   r   r   %   s    1? 1 1:T T 1 1
 7 
o 

  -EI &	EI
 -EI 
EIN96 9c 9FW 9r4   r   c                   P     e Zd Zd fdZed        Zd ZdefdZd Z	d	dZ
 xZS )
EnumVariabler   c                 2    t        |   di | || _        y )Nr6   )r7   r8   r,   )r;   r,   r-   r<   s      r3   r8   zEnumVariable.__init__   s    "6"
r4   c                     t        |t        j                        r8t        |      D ]*  }|j                  |j                         k(  s! | |fi |c S  t        d       y )Nz5Enum variable is constructed with non constant values)r   r   r   r%   r,   rI   r	   )clscls_typevalue_vtoptionsrf   s        r3   r#   zEnumVariable.create   sU    h	 : :;x. 2<<8#>#>#@@v1112 	MNr4   c                     | j                   S r>   r?   r@   s    r3   rA   zEnumVariable.as_proxy   rB   r4   c                 4    dt        | j                         dS )NzEnumVariable(rD   )r+   r,   r@   s    r3   rG   zEnumVariable.__str__   s    tDJJ/022r4   c                     | j                   S r>   r?   r@   s    r3   rI   zEnumVariable.as_python_constant   rB   r4   c                 T    t        | j                  |      }t        |      rt        |S r>   )rb   r,   rc   r\   rd   s       r3   rg   zEnumVariable.const_getattr   s%    T*F%%r4   r   r   )rE   r   r   r8   classmethodr#   rA   rs   rG   rI   rg   r   r   s   @r3   r   r      s9     O O3 3r4   r   )"r~   typingr   r   r   rV   torch._dynamo.sourcer    r   excr	   r
   r   guardsr   r   utilsr   r   r   baser   r   torch._dynamo.symbolic_convertr   r%   dictTensorr   r   r   r   r   r6   r4   r3   <module>r      s     , ,  .  9 9 0 5 5 * D 	
-
2	LL9	LL [	NN6 "k9 k9\? r4   