Ë
    P/æj:%  ã            
       ó  — 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 |r¹t        | t        t        f«      r£g }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
             úc/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/constant.pyr#   zConstantVariable.create&   sl  € à—‘˜H dÓ+ˆÜ%×0Ñ0°Ó7ˆ
ÙÜ+A×+GÑ+GÓ+Iò FÑ'� Ü% e¨_Õ=ÐE¸vÓEÐ=ðFñ œ* U¬S´)Ð,<Ô=ØˆEÜ! %Ó(ò 9‘��1Ø—‘Ô-×4Ñ4°QÓ7Õ8ð9ä×(Ñ(¨Ñ9°&Ñ9Ð9ÙœJ u¬t´U¨mÔ<ØˆEÜ! %Ó(ò 	‘��1Ù:@œm¨F°AÔ6Àd�ÙÜ! +×"8Ñ"8¼×9TÑ9TÓ"UÔVØ—‘Ü$×+Ñ+ØØ*ð ,ó õð		ô ×-Ñ-×5Ñ5´d¸5³kÓBÀ5ÑSÈFÑ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¨_Õ=ÐE¸vÓEÐ=ðFô Ø”Dœ%�=ô
ð 	TàSó	Tð 
ô ˆ>œj¨´·	±	Ô:ØŸ™›ˆD�JàˆD�Jr4   c                 ó   — | j                   S ©N©r,   ©r;   s    r3   Úas_proxyzConstantVariable.as_proxyR   ó   € Ø�z‰zÐ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ÄÀTÇZÁZÓ@PÐ?QÐQRÐ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*   € Ü×&Ñ&Ø�J‰J�s×-Ñ-Ó/Ñ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Ñ2°1×5ÑCùs   ‚!F)	r+   r   r%   r&   r   r    ÚtorchÚSizeÚall)Úobjs    r3   r   zConstantVariable.is_literalk   sA   € ä�‹9Ô-Ñ-Øä�‹9œœu¤c¬9´e·j±jÐAÑAÜÑC¸sÔ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<×8OÑ8OÓ8QÖR°1Ô$×+Ñ+¨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   € Ü�d—j‘j¤$Ô'ÜÜ×*Ñ*ð/à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(  r˜t        | 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Ò¤ t§z¡z´3Ô 7Ü×,Ñ,¬S¯Z©ZÓ8×FÑFØ�T�M˜D�M 6óð ð �VŠ^¤ t§z¡z´3Ô 7Ü�t“9 ’>¤c¨&£k°QÒ&6Ð6Ð6Ø ™7×<Ñ<¸RÓ@ˆLðCØ=IÖJ¸˜Q×1Ñ1Õ3ÐJ�	ÐJÜ'×.Ñ.¨t¯z©z¯©¸yÓ/IÓJÐJô Ó<°tÔ<Ô<ä×,Ñ,¨T¯]©]«_¸d¿j¹jÓI×UÑUØ�D˜$ óð ð	?Ø:>Ö?°Q˜!×.Ñ.Õ0Ð?ˆJÐ?ØBHÇ,Á,Ã.×Q¹$¸!¸Q˜A˜q×3Ñ3Ó5Ñ5ÐQˆLÑQô �d—j‘j¤#Ô&¨4´3·<±<×3DÑ3DÓ3FÑ+FÜ˜TŸZ™Z¨Ó.ˆFÜ#×*Ñ*©6°:Ð+NÀÑ+NÓOÐOÜ˜Ÿ
™
¤U¬C LÕ1Ù™FÜ'×.Ñ.Ð/H¬w°t·z±zÀ4Ó/HÓ/JÓKÐKäœ $Õ'Ü˜“I “NØ˜‘G×.Ñ.Õ0à'¨™]�
ÜœX tÓ,�ÜØ¤§¡´·±ÄÇÁÐ Môð ŸI™I×2Ñ2Ø'¨¨d¯j©j¸*Ð-EÀró�Eð +×1Ñ1°"°e¸ZÓHÐHä+×2Ñ2±2°d·j±jÀ*Ó3MÓNÐNÜ˜Ÿ
™
¤EÔ*¨t°xÒ/?Ü˜TŸZ™Z¨Ó.ˆFÜ#×*Ñ*©6°:Ð+NÀÑ+NÓOÐOà�9Ò¡d©fÜ#×*Ñ*¬3¨t¯z©z«?Ó;Ð;Ø�^Ò#¬¨D«	°Qª¸4À¹7×;UÑ;UÔ;WÙÐ�:Ø˜!‘W×/Ñ/Ó1ˆFØ˜tŸz™zÐ)ˆFÜ#×*Ñ*¨6Ó2Ð2äÐ*¬7°4·:±:Ó+>Ð*?¸qÀÀÐGÕHùòi Køä&ò CÜ‘wÑ*¨2¨t°T¸6ÓBÒBðCüò @ùÛQøÜ"ò 	?Ü‘7Ñ& r¨4°°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ð 9¸cð 9ÐFW÷ 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   € Øœt D§J¡JÓ/Ð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Ø	‡L�LÐ9Ø	‡L�Lð [à	‡N�NÐ6ðÐ ô"k9�ô k9ô\�?õ r4   