+
    –°³j¡i  ã                  óN  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHtHt ^RIH	t	 ^RI
Ht ^RIHtHtHt ]'       d   ^ RIHt ^ RIHt ^R	IHt ^R
IHt  ! R R4      t ! R R4      t ! R R]]R7      t ! R R]4      t ! R R]4      t ! R R4      tR R ltR R lt]! 4        R# )é    )ÚannotationsN)ÚAnyÚTYPE_CHECKING)Úconfig)Úis_function_or_wrapper)ÚSourceLocationÚVariableTrackerÚVariableTrackerMeta)ÚCallable)ÚSelf)ÚInstructionTranslatorBase©ÚSymNodeVariablec                  ó2   € ] tR t^tRtR R ltR R ltRtR# )Ú	LazyCachez+Container to cache the real VariableTrackerc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úvaluer   ÚsourceÚreturnÚNone© )Úformats   "Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/variables/lazy.pyÚ__annotate__ÚLazyCache.__annotate__   s!   € ÷ 
/ñ 
/˜cð 
/¨3ð 
/°4ñ 
/ó    c                	óš   € \        V\        4      '       g   V'       g   \        R 4      hWn        W n        RV n        RV n        RV n        R# )z9source is required for non-LazySymNodeFormatString valuesN)Ú
isinstanceÚLazySymNodeFormatStringÚAssertionErrorr   r   Ú	name_hintÚsource_locationÚvt)Úselfr   r   s   &&&r   Ú__init__ÚLazyCache.__init__   sE   € Ü˜%Ô!8×9Ò9ßÜ$ØOóð ð Œ
ØŒØ%)ˆŒØ6:ˆÔØ*.ˆŽr   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   r   $   s   € ÷ !ñ !˜ñ !r   c                	óv  € V P                   e   \        R4      h^RIHp ^RIHp VP                  4       p\        V P                  \        4      '       d,   VP                  P                  W0P                  4      V n         M2VP                  W0P                  RR7      ! V P                  4      V n         V P                  e&   V P                   P                  V P                  4       V P                   e>   V P                   P                   f&   V P                   P#                  V P                   4       V =V =V =V =R # )Nz0LazyCache.realize() called but vt is already set©ÚInstructionTranslator)ÚbuilderF©Úallow_lazy_constant)r$   r!   Úsymbolic_convertr,   Ú r-   Ú
current_txr   r   r    ÚSourcelessBuilderÚcreateÚVariableBuilderr   r"   Úset_name_hintr#   Úset_source_location)r%   r,   r-   Útxs   &   r   ÚrealizeÚLazyCache.realize$   sò   € Ø�7‰7ÒÜ Ð!SÓTÐTÝ<Ýà"×-Ñ-Ó/ˆä�d—j‘jÔ"9×:Ò:Ø×/Ñ/×6Ñ6°r¿:¹:ÓFˆD�Gð
 ×-Ñ-Ø—K‘K°Uð .ô à�j‰jóˆDŒGð �>‰>Ò%Ø�G‰G×!Ñ! $§.¡.Ô1à×ÑÒ+°·±×0GÑ0GÒ0OØ�G‰G×'Ñ'¨×(<Ñ(<Ô=àˆJØˆKØˆNØÒ r   )r"   r   r#   r   r$   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   r9   Ú__static_attributes__r   r   r   r   r      s   † Ù5õ
/÷!ñ !r   r   c                  ó2   € ] tR t^BtRtR R ltR R ltRtR# )ÚComputedLazyCachezILike LazyCache, but for sourceless constants computed from lazy operands.c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   r   r   Ú	lazy_varszlist[LazyConstantVariable]Úargsúlist[VariableTracker]ÚopúCallable[..., Any]Ú	num_nodesÚintr   r   r   )r   s   "r   r   ÚComputedLazyCache.__annotate__E   sF   € ÷ /ñ /àð/ð .ð/ð $ð	/ð
 ð/ð ð/ð 
ñ/r   c                	ól   € Wn         W n        W0n        W@n        WPn        R V n        R V n        R V n        R # ©N)r   rE   rF   rH   rJ   r"   r#   r$   )r%   r   rE   rF   rH   rJ   s   &&&&&&r   r&   ÚComputedLazyCache.__init__E   s3   € ð Œ
Ø"ŒØŒ	ØŒØ"ŒØ%)ˆŒØ6:ˆÔØ*.ˆŽr   c               ó   € V ^8„  d   QhRR/# r)   r   )r   s   "r   r   rL   V   s   € ÷ >ñ >˜ñ >r   c                	óø  € V P                   e   \        R4      h^RIHp ^RIHp ^RIHp RpV P                   F'  p\        VP                  4       V4      '       g   K%  RpK)  	  V'       dg   ^RIHp VP                  4       pV P                   Uu. uF  qˆP                  4       NK  	  p	pV! V P                  4      P!                  Wy/ 4      V n         M VP#                  V P$                  4      V n         V P&                  e&   V P                   P)                  V P&                  4       V P*                  eB   V P                   P*                  f(   V P                   P-                  V P*                  4       R # R # R # u upi )Nz8ComputedLazyCache.realize() called but vt is already setr+   ©ÚConstantVariabler   FT)ÚBuiltinVariable)r$   r!   r0   r,   ÚconstantrS   Útensorr   rE   r   r9   ÚbuiltinrT   r2   rF   rH   Úcall_functionr4   r   r"   r6   r#   r7   )
r%   r,   rS   r   Úany_symbolicÚlazy_varrT   r8   ÚargÚrealized_argss
   &         r   r9   ÚComputedLazyCache.realizeV   s  € Ø�7‰7ÒÜ ØJóð õ 	=Ý.Ý+àˆØŸœˆHÜ˜(×*Ñ*Ó,¨o×>Ô>Ø#’ñ '÷ å0à&×1Ñ1Ó3ˆBØ6:·i²iÓ@±i¨sŸ[™[ž]±iˆMÐ@Ù% d§g¡gÓ.×<Ñ<¸RÐPRÓSˆD�Gà&×-Ñ-¨d¯j©jÓ9ˆDŒGà�>‰>Ò%Ø�G‰G×!Ñ! $§.¡.Ô1Ø×ÑÒ+°·±×0GÑ0GÒ0OØ�G‰G×'Ñ'¨×(<Ñ(<Ö=ñ 1PÑ+ùò As   ÂE7)rF   rE   r"   rJ   rH   r#   r   r$   Nr;   r   r   r   rC   rC   B   s   † ÙSõ/÷">ñ >r   rC   c                  ód  a € ] tR t^ttRtRtR0]P                  mt]RR/R R ll4       t	R V 3R	 llt
R
 R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! lt]P.                  t]t]R-R"R#/R$ R% lll4       tR& R' ltR( R) ltR* R+ ltR,tV ;t# ).ÚLazyVariableTrackeraá  
A structure that defers the creation of the actual VariableTracker
for a given underlying value until it is accessed.

The `realize` function invokes VariableTracker.build() to produce the real object.
Once a LazyVariableTracker has been realized, internal bookkeeping will
prevent double realization.

This object should be utilized for processing containers, or objects that
reference other objects where we may not want to take on creating all the
VariableTrackers right away.
TÚ_cacher8   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r   r   r   r8   z InstructionTranslatorBase | NoneÚoptionsr   r	   r   )r   s   "r   r   Ú LazyVariableTracker.__annotate__‡   sA   € ÷ Wñ WØðWàðWð -ð	Wð
 ðWð 
ñWr   c               	óL  € \        V 4      \        P                  9   d   \        P                  ! W3/ VB # VeV   VeR   V'       gJ   VP                  P
                  pVP                  V4      pVe   V# \        \        W4      VR7      pWdV&   V# \        \        W4      3RV/VB # )N)r   r   )	ÚtypeÚLazyConstantVariableÚsupported_typesr4   ÚoutputÚvariable_tracker_cacheÚgetr_   r   )r   r   r8   rb   ÚcacheÚcachedr$   s   &&$,   r   r4   ÚLazyVariableTracker.create†   sš   € ô �‹;Ô.×>Ñ>Ô>Ü'×.Ò.¨uÑHÀÑHÐHð Š>˜fÒ0¿Ø—I‘I×4Ñ4ˆEØ—Y‘Y˜vÓ&ˆFØÒ!Ø�Ü$¤Y¨uÓ%=ÀfÔMˆBØ�&‰MØˆIä"¤9¨UÓ#;ÑVÀFÐVÈgÑVÐVr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r`   zLazyCache | ComputedLazyCacheÚkwargsr   r   r   r   )r   s   "r   r   rc   �   s#   € ÷ ñ Ð<ð Èð ÐPTñ r   c                	ó®   <€ \        V\        \        34      '       g"   \        R \	        V4      P
                   24      h\        SV `  ! R/ VB  Wn        R# )z>_cache must be a LazyCache or ComputedLazyCache instance, got Nr   )	r   r   rC   r!   re   r<   Úsuperr&   r`   ©r%   r`   ro   Ú	__class__s   &&,€r   r&   ÚLazyVariableTracker.__init__�   sR   ø€ Ü˜&¤9Ô.?Ð"@×AÒAÜ ØPÔQUÐV\ÓQ]×QfÑQfÐPgÐhóð ô 	‰ÒÑ"˜6Ò"ØŽr   c               ó   € V ^8„  d   QhRR/# ©r   r   r	   r   )r   s   "r   r   rc   ¥   s   € ÷ ñ ˜ñ r   c                óØ   € V P                   P                  f>   V P                   P                  4        V P                   P                  f   \        R4      hV P                   P                  # )z.Force construction of the real VariableTrackerz"LazyCache.realize() did not set vt)r`   r$   r9   r!   ©r%   s   &r   r9   ÚLazyVariableTracker.realize¥   sH   € à�;‰;�>‰>Ò!Ø�K‰K×ÑÔ!Ø�{‰{�~‰~Ò%Ü$Ð%IÓJÐJØ�{‰{�~‰~Ðr   c               ó    € V ^8„  d   QhRRRR/# ©r   Úclsre   r   Úboolr   )r   s   "r   r   rc   ­   s   € ÷ ;ñ ; 4ð ;¨Dñ ;r   c                óH   € \         P                  WP                  4       4      # )zNCheck isinstance after realizing, used by ImplicitRealizingVariableTrackerMeta)re   Ú__instancecheck__r9   )r%   r|   s   &&r   Úlazy_isinstanceÚ#LazyVariableTracker.lazy_isinstance­   s   € ä×%Ñ% c¯<©<«>Ó:Ð:r   c               ó   € V ^8„  d   QhRR/# )r   r   zVariableTracker | Selfr   )r   s   "r   r   rc   ±   s   € ÷ ñ Ð.ñ r   c                ó¤   € V P                  4       '       d:   V P                  P                  f   \        R4      hV P                  P                  # V # )z4Return the real VariableTracker if it already existsz*is_realized() returned True but vt is None)Úis_realizedr`   r$   r!   rx   s   &r   ÚunwrapÚLazyVariableTracker.unwrap±   s>   € à×Ñ×ÒØ�{‰{�~‰~Ò%Ü$Ð%QÓRÐRØ—;‘;—>‘>Ð!Øˆr   c               ó   € V ^8„  d   QhRR/# ©r   r   r}   r   )r   s   "r   r   rc   ¹   s   € ÷ *ñ *˜Tñ *r   c                	ó2   € V P                   P                  R J# rN   )r`   r$   rx   s   &r   r„   ÚLazyVariableTracker.is_realized¹   s   € Ø�{‰{�~‰~ TÐ)Ð)r   c               ó    € V ^8„  d   QhRRRR/# )r   ro   r   r   r	   r   )r   s   "r   r   rc   ¼   s   € ÷ >ñ >˜cð > oñ >r   c                	ó*  € VP                  R V P                  4      V P                  Jd   \        R4      hVP                  RV P                  4      V P                  Jd   V P	                  4        \
        P                  ! V P                  4       3/ VB # )r`   z8cannot clone LazyVariableTracker with a different _cacher   )rj   r`   r!   r   r9   r	   Úcloner…   )r%   ro   s   &,r   r�   ÚLazyVariableTracker.clone¼   so   € Ø�:‰:�h §¡Ó,°D·K±KÓ?Ü ØJóð ð �:‰:�h §¡Ó,°D·K±KÓ?Ø�L‰LŒNÜ×$Ò$ T§[¡[£]Ñ=°fÑ=Ð=r   c               ó   € V ^8„  d   QhRR/# )r   r   z	type[Any]r   )r   s   "r   r   rc   Å   s   € ÷ 'ñ '˜9ñ 'r   c                	ó‚   € V P                  4       '       d   \        R 4      h\        V P                  P                  4      # )z=peek_type() called on an already realized LazyVariableTracker)r„   r!   re   r`   r   rx   s   &r   Ú	peek_typeÚLazyVariableTracker.peek_typeÅ   s8   € Ø×Ñ×ÒÜ ØOóð ô �D—K‘K×%Ñ%Ó&Ð&r   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   rc   Ì   s   € ÷ !ñ !˜Cñ !r   c                	óp   € V P                  4       '       d   \        R 4      hV P                  P                  # )z>peek_value() called on an already realized LazyVariableTracker©r„   r!   r`   r   rx   s   &r   Ú
peek_valueÚLazyVariableTracker.peek_valueÌ   s3   € Ø×Ñ×ÒÜ ØPóð ð �{‰{× Ñ Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚnameÚstrr   r   r   )r   s   "r   r   rc   Ó   s   € ÷ )ñ ) #ð )¨$ñ )r   c                	ó    € V P                  4       '       d(   V P                  P                  P                  V4       R # WP                  n        R # rN   )r„   r`   r$   r6   r"   )r%   rš   s   &&r   r6   Ú!LazyVariableTracker.set_name_hintÓ   s1   € Ø×Ñ×ÒØ�K‰K�N‰N×(Ñ(¨Ö.à$(�K‰KÖ!r   c               ó    € V ^8„  d   QhRRRR/# )r   r#   r   r   r   r   )r   s   "r   r   rc   Ù   s   € ÷ :ñ :°>ð :Àdñ :r   c                	ó¬   € Wn         V P                  4       '       d(   V P                  P                  P	                  V4       R # WP                  n         R # rN   )r#   r„   r`   r$   r7   )r%   r#   s   &&r   r7   Ú'LazyVariableTracker.set_source_locationÙ   s7   € Ø.ÔØ×Ñ×ÒØ�K‰K�N‰N×.Ñ.¨Ö?à*9�K‰KÖ'r   c               ó   € V ^8„  d   QhRR/# ©r   r   r›   r   )r   s   "r   r   rc   à   s   € ÷ ñ ˜ñ r   c                	ó¸   € R pV P                  4       '       d'   VR\        V P                  4       4       R2,          pV# VRV P                  4        R2,          pV# )zLazyVariableTracker(z
realized: Ú)zunrealized: )r„   Úreprr…   r‘   )r%   Úvariable_infos   & r   Ú__str__ÚLazyVariableTracker.__str__à   s`   € Ø.ˆØ×Ñ×ÒØ˜z¬$¨t¯{©{«}Ó*=Ð)>¸aÐ@Õ@ˆMð Ðð ˜|¨D¯N©NÓ,<Ð+=¸QÐ?Õ?ˆMàÐr   c               ó    € V ^8„  d   QhRRRR/# )r   Úitemr›   r   r   r   )r   s   "r   r   rc   é   s   € ÷ -ñ - ð -¨ñ -r   c                	ó6   € \        V P                  4       V4      # rN   ©Úgetattrr9   )r%   rª   s   &&r   Ú__getattr__ÚLazyVariableTracker.__getattr__é   s   € Ü�t—|‘|“~ tÓ,Ð,r   c               ó   € V ^8„  d   QhRR/# ©r   r   re   r   )r   s   "r   r   rc   ì   s   € ÷ #ñ #¨tñ #r   c                ó   € \         # )aX  Return the VariableTracker type to use for builtin handler dispatch.

For regular LazyVariableTracker (not LazyConstantVariable), we return
LazyVariableTracker itself so that _make_handler knows it needs to realize
the arguments before calling the handler. LazyConstantVariable overrides
this to return ConstantVariable since it can stay lazy.
)r_   rx   s   &r   Úget_handler_type_for_dispatchÚ1LazyVariableTracker.get_handler_type_for_dispatchì   s
   € ô #Ð"r   r/   Fc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   rk   z!dict[int, tuple[Any, Any]] | Noner/   r}   r   r   )r   s   "r   r   rc   û   s8   € ÷ Iñ IàðIð 1ðIð
 "ðIð 
ñIr   c               óÂ  a aa€ Sf   / o\        V4      pVS9   d   SV,          ^ ,          # \        V4      p\        V\        4      '       dÒ   S;'       d    \	        V\
        \        34      pV'       d†   \	        V\        4      '       dl   VP                  4       '       d%   S P                  VP                  4       SRR7      pEM‰VP                  P                   F  pVP                  4        K  	  TpEMXTpEMTS P                  VP                  4       SSR7      pEM0\        V\        4      '       dO   TpWq3SV&   VP                  p	VP                  p
V	 F'  pWº9  g   K  S P                  W›,          SSR7      W›&   K)  	  MÌV\         J d%   V Uu. uF  pS P                  VSSR7      NK  	  ppMžV\"        J d8   \"        ;QJ d    . VVV 3R lV 4       F  NK  	  5M! VVV 3R lV 4       4      pM]V\$        \&        P(                  39   dA   \!        VP+                  4       4       UUu/ uF  w  rÜVS P                  VSSR7      bK  	  pppMTpWq3SV&   V# u upi u uppi )z@
Walk an object and realize all LazyVariableTrackers inside it.
Tr.   c              3  óL   <"  € T F  pSP                  VSSR 7      x € K  	  R# 5i)r.   N)Úrealize_all)Ú.0Úvr/   rk   r|   s   & €€€r   Ú	<genexpr>Ú2LazyVariableTracker.realize_all.<locals>.<genexpr>6  s+   øé € ð á�Að —‘  5Ð>Q�×RÐRÛùs   ƒ!$)Úidre   Ú
issubclassr_   r   rf   ÚComputedLazyConstantVariabler„   r¸   r9   r`   rE   Ú_ensure_type_guardr	   Ú__dict__Ú_nonvar_fieldsÚlistÚtupleÚdictÚcollectionsÚOrderedDictÚitems)r|   r   rk   r/   ÚidxÚ	value_clsÚ	keep_lazyÚresultrZ   Ú
value_dictÚnonvarsÚkeyrº   Úks   f&fd          r   r¸   ÚLazyVariableTracker.realize_allú   sI  ú€ ð Š=ØˆEä�‹iˆØ�%Œ<Ø˜•:˜a•=Ð ä˜“Kˆ	Ü�iÔ!4×5Ò5ð ,÷ ð ´
ØÔ,Ô.JÐKó1ˆI÷ Ü˜eÔ%A×BÒBØ×(Ñ(×*Ò*Ø!$§¡Ø!ŸM™M›O¨UÈð "1ó "šð
 ).¯©×(>Ô(>˜HØ$×7Ñ7Ö9ñ )?à!&šà"’FàŸ™Ø—M‘M“O UÐ@Sð )ó ’ô ˜	¤?×3Ò3àˆFà ˜ˆE�#‰JØŸ™ˆJØ×*Ñ*ˆGÛ!�ØÖ%Ø&)§o¡oØ"�¨ÐDWð '6ó '�J“Oò "ð
 œ$Óñ óá�Að —‘  5Ð>Q�ÖRÙð ð ˆFð œ%Óß”Uö áó—U‘Uö áóó ‰Fð œ4¤×!8Ñ!8Ð9Ô9ô ! §¡£Ô/ôá/‘D�Að �3—?‘? 1 eÐAT�?ÓUÒUÙ/ð ñ ˆFð
 ˆFð �_ˆˆc‰
Øˆùò'ùós   ÆIÈ( Ic               ó   € V ^8„  d   QhRR/# rˆ   r   )r   s   "r   r   rc   F  s   € ÷ ñ  $ñ r   c                	ó.  a€ R  R loV P                  4       '       d   \        R4      hV P                  P                  p\	        V\
        4      '       d;   \        ;QJ d    V3R lV 4       F  '       d   K   R# 	  R# ! V3R lV 4       4      # S! V4      # )c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r}   r   )r   s   "r   r   Ú:LazyVariableTracker.is_hashable_lazy.<locals>.__annotate__J  s   € ÷ 	ñ 	˜3ð 	 4ñ 	r   c                ó–   € \         P                  ! V 4      ;'       g-    \        \        V 4      \        4      ;'       g    \	        V 4      # rN   )ÚinspectÚ	isbuiltinr¾   re   r   )r   s   &r   Ú_helperÚ5LazyVariableTracker.is_hashable_lazy.<locals>._helperJ  sA   € ô ×!Ò! %Ó(÷ 1ð 1Üœd 5›k¬4Ó0÷1ð 1ä)¨%Ó0ðr   z?is_hashable() called on an already realized LazyVariableTrackerc              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5irN   r   )r¹   rº   rÙ   s   & €r   r»   Ú7LazyVariableTracker.is_hashable_lazy.<locals>.<genexpr>X  s   øé € Ð1©5 a‘w˜q—z�z«5ùs   ƒFT)r„   r!   r`   r   r   rÄ   Úall)r%   r   rÙ   s   & @r   Úis_hashable_lazyÚ$LazyVariableTracker.is_hashable_lazyF  sz   ø€ õ	ð ×Ñ×ÒÜ ØQóð ð —‘×!Ñ!ˆÜ�eœU×#Ò#ß“3Ô1©5Ó1—3”3Ð1’3Ð1�3Ô1©5Ó1Ó1Ð1Ù�u‹~Ðr   c               ó   € V ^8„  d   QhRR/# r”   r   )r   s   "r   r   rc   [  s   € ÷ !ñ ! ñ !r   c                	óp   € V P                  4       '       d   \        R 4      hV P                  P                  # )zBoriginal_value() called on an already realized LazyVariableTrackerr–   rx   s   &r   Úoriginal_valueÚ"LazyVariableTracker.original_value[  s3   € à×Ñ×ÒÜ ØTóð ð �{‰{× Ñ Ð r   c               ó   € V ^8„  d   QhRR/# r”   r   )r   s   "r   r   rc   c  s   € ÷ "ñ " ñ "r   c                	óp   € V P                  4       '       d   \        R 4      hV P                  P                  # )zCoriginal_source() called on an already realized LazyVariableTracker)r„   r!   r`   r   rx   s   &r   Úoriginal_sourceÚ#LazyVariableTracker.original_sourcec  s3   € à×Ñ×ÒÜ ØUóð ð �{‰{×!Ñ!Ð!r   )r`   r#   rN   ) r<   r=   r>   r?   r@   Ú_no_implicit_realizer	   rÂ   Ústaticmethodr4   r&   r9   r€   r…   r„   r�   r‘   r—   r6   r7   r§   r®   r³   ÚvisitÚ__repr__Úclassmethodr¸   rÞ   râ   ræ   rA   Ú__classcell__©rs   s   @r   r_   r_   t   sÎ   ø† ñð  ÐØÐ@ ×!?Ñ!?Ð@€NàðWð 04ö	Wó ðW÷,ð õõ;õõ*õ>õ'õ!õ)õ:õõ-õ#ð ×!Ñ!€EØ€HàñIð
 %*÷Ió ðIõVõ*!÷"ó "r   r_   )Ú	metaclassc                  óæ   a € ] tR tRtRt]]]]3t	0 Rm]
P                  mt]R R l4       tR V 3R lltR R ltR	 V 3R
 lltR V 3R lltR R ltR R ltR R ltR R ltR V 3R lltRtV ;t# )rf   im  aN  
A lazy variable tracker for constants (int, float, bool, str) that defers
guarding until the value is actually used in a way that requires it.

This allows constants that are just passed through (e.g., returned without
being used in control flow or math) to avoid unnecessary recompilation when
their values change.

Guards are installed lazily:
- TYPE_MATCH guard is installed when type-based methods (python_type, is_tensor,
  lazy_isinstance) are called
- CONSTANT_MATCH guard is installed on full realization (e.g., used in control
  flow or math), which subsumes any TYPE_MATCH guard
c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   r   rb   r   r	   r   )r   s   "r   r   Ú!LazyConstantVariable.__annotate__†  s6   € ÷ Xñ XØðXàðXð ðXð 
ñ	Xr   c                	ó,  € ^RI Hp ^RIHp \	        V 4      \
        P                  9  d#   \        R\	        V 4      P                   R24      hVf   \        R4      hV! V4      '       d   VP                  ! V 3RV/VB # \        \        W4      3RV/VB # )r   )Úis_constant_sourcerR   zunsupported type z for LazyConstantVariablez0source must not be None for LazyConstantVariabler   )r   rô   rU   rS   re   rf   rg   r!   r<   r4   r   )r   r   rb   rô   rS   s   &&,  r   r4   ÚLazyConstantVariable.create…  s—   € õ 	0Ý.ä�‹;Ô2×BÑBÔBÜ Ø#¤D¨£K×$8Ñ$8Ð#9Ð9RÐSóð ð Š>Ü Ð!SÓTÐTñ ˜f×%Ò%Ø#×*Ò*¨5ÑK¸ÐKÀ7ÑKÐKä#¤I¨eÓ$<ÑWÀVÐWÈwÑWÐWr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r`   r   ro   r   r   r   r   )r   s   "r   r   rò   œ  s!   € ÷ /ñ /˜yð /°Cð /¸Dñ /r   c                	óT   <€ \         SV `  ! V3/ VB  R V n        RV n        RV n        R# )FN)rq   r&   Ú_type_guard_installedÚ_type_guard_refÚ_handler_typerr   s   &&,€r   r&   ÚLazyConstantVariable.__init__œ  s-   ø€ Ü‰Ò˜Ñ* 6Ò*Ø%*ˆÔ"Ø$(ˆÔØ*.ˆÖr   c               ó   € V ^8„  d   QhRR/# r)   r   )r   s   "r   r   rò   ¢  s   € ÷ %ñ % Dñ %r   c                ó  € V P                   '       g   V P                  4       '       d   R# ^RIHpHp V P
                  f   \        R4      hV P
                  P                  VP                  4      pV! V4       RV n         W0n	        R# )zCInstall TYPE_MATCH guard if not already installed and not realized.N©ÚGuardBuilderÚinstall_guardz2source must not be None when installing type guardT)
rø   r„   Úguardsrÿ   r   r   r!   Ú
make_guardÚ
TYPE_MATCHrù   )r%   rÿ   r   Úguards   &   r   rÀ   Ú'LazyConstantVariable._ensure_type_guard¢  sh   € à×%×%Ð%¨×)9Ñ)9×);Ò);Ùç8à�;‰;ÒÜ Ð!UÓVÐVØ—‘×&Ñ& |×'>Ñ'>Ó?ˆÙ�eÔØ%)ˆÔ"Ø$Ör   c               ó   € V ^8„  d   QhRR/# rv   r   )r   s   "r   r   rò   °  s   € ÷ ñ ˜ñ r   c                óú  <€ V P                  4       '       d   \        SV `	  4       # ^ RIHp ^RIHpHp ^RIH	p V P                  f   \        R4      h\        SV `	  4       p\        WT4      '       dŠ   V P                  eQ   VP                  4       pVP                  P                   P"                  P%                  V P                  4       RV n        V! V P                  P'                  VP(                  4      4       V# )z/Force construction of the real VariableTracker.)ÚTracingContextrþ   rR   Nz;source must not be None when realizing LazyConstantVariable)r„   rq   r9   Útorch._guardsr  r  rÿ   r   rU   rS   r   r!   r   rù   rj   Úguards_contextÚdynamo_guardsÚinnerÚdiscardr  ÚCONSTANT_MATCH)r%   r  rÿ   r   rS   rÌ   Útracing_contextrs   s   &      €r   r9   ÚLazyConstantVariable.realize°  sÌ   ø€ à×Ñ×ÒÜ‘7‘?Ó$Ð$å0ç8Ý.à�;‰;ÒÜ ØMóð ô ‘‘Ó"ˆô �f×/Ò/Ø×#Ñ#Ò/Ø"0×"4Ñ"4Ó"6�Ø×.Ñ.×<Ñ<×BÑB×JÑJØ×(Ñ(ôð (,�Ô$Ù˜$Ÿ+™+×0Ñ0°×1LÑ1LÓMÔNàˆr   c               ó   € V ^8„  d   QhRR/# r±   r   )r   s   "r   r   rò   Î  s   € ÷  ñ  ˜Tñ  r   c                óŒ   <€ V P                  4       '       d   \        SV `	  4       # V P                  4        V P	                  4       # )z6Return the Python type without triggering realization.)r„   rq   Úpython_typerÀ   r‘   ©r%   rs   s   &€r   r  Ú LazyConstantVariable.python_typeÎ  s9   ø€ à×Ñ×ÒÜ‘7Ñ&Ó(Ð(Ø×ÑÔ!Ø�~‰~ÓÐr   c               ó   € V ^8„  d   QhRR/# rˆ   r   )r   s   "r   r   rò   Õ  s   € ÷ ñ ˜4ñ r   c                ó&   € V P                  4        R# )z&Primitive constants are never tensors.F©rÀ   rx   s   &r   Ú	is_tensorÚLazyConstantVariable.is_tensorÕ  s   € à×ÑÔ!Ùr   c               ó   € V ^8„  d   QhRR/# rˆ   r   )r   s   "r   r   rò   Ú  s   € ÷ ñ  $ñ r   c                	ó&   € V P                  4        R # ©Fr  rx   s   &r   Úis_constant_noneÚ%LazyConstantVariable.is_constant_noneÚ  s   € Ø×ÑÔ!Ùr   c               ó   € V ^8„  d   QhRR/# )r   r   ztype | Noner   )r   s   "r   r   rò   Þ  s   € ÷ ñ ¨ñ r   c                óˆ  € V P                  4       '       d   \        V P                  4       4      # V P                  4       p\        P
                  '       g$   V\        J d   \        V P                  4       4      # \        P                  '       g$   V\        J d   \        V P                  4       4      # V P                  4        R# )a§  Check if we need to realize to determine the VariableTracker type.

Returns None if we can determine the type without realization (and installs
TYPE_MATCH guard). Returns the realized type if realization was needed.

With specialize_int=False or specialize_float=False, ints/floats may become
either ConstantVariable or SymNodeVariable, so we must realize to know.
For bool/str, we always know it will be ConstantVariable.
N)
r„   re   r9   r‘   r   Úspecialize_intrK   Úspecialize_floatÚfloatrÀ   )r%   Ú
value_types   & r   Ú_maybe_realize_for_typeÚ,LazyConstantVariable._maybe_realize_for_typeÞ  s‹   € ð ×Ñ×ÒÜ˜Ÿ™›Ó'Ð'à—^‘^Ó%ˆ
ô ×$×$Ð$¨´sÓ):Ü˜Ÿ™›Ó'Ð'Ü×&×&Ð&¨:¼Ó+>Ü˜Ÿ™›Ó'Ð'ð 	×ÑÔ!Ùr   c               ó   € V ^8„  d   QhRR/# r±   r   )r   s   "r   r   rò   ù  s   € ÷ "ñ "¨tñ "r   c                ó”   € V P                   e   V P                   # ^RIHp V P                  4       pVe   TMTV n         V P                   # )zÎReturn the VariableTracker type to use for builtin handler dispatch.

This allows builtins like isinstance() and type() to find the correct
handler without triggering full realization of the lazy constant.
rR   )rú   rU   rS   r&  )r%   rS   Úrealized_types   &  r   r³   Ú2LazyConstantVariable.get_handler_type_for_dispatchù  sN   € ð ×ÑÒ)Ø×%Ñ%Ð%å.à×4Ñ4Ó6ˆà*Ò6‰MÐ<Lð 	Ôð ×!Ñ!Ð!r   c               ó    € V ^8„  d   QhRRRR/# r{   r   )r   s   "r   r   rò   
  s   € ÷ 1ñ 1 4ð 1¨Dñ 1r   c                ó"  <€ ^RI Hp ^RIHp V P	                  4       '       d   \
        SV `  V4      # \        W!4      '       g$   \        W14      '       g   V P                  4        R# V P                  4       pVe   \        WA4      # \        W!4      # )aß  Check isinstance without triggering realization when possible.

LazyConstantVariable only wraps primitive types (int, float, bool, str)
which always realize to ConstantVariable, so we can answer isinstance
checks by checking if the target class is ConstantVariable or a parent.

However, when specialize_int=False or specialize_float=False, integers
and floats may realize to SymNodeVariable instead of ConstantVariable,
so we must fall back to full realization for those cases.
rR   r   F)
rU   rS   rV   r   r„   rq   r€   r¾   rÀ   r&  )r%   r|   rS   r   r*  rs   s   &&   €r   r€   Ú$LazyConstantVariable.lazy_isinstance
  s…   ø€ õ 	/Ý+ð ×Ñ×ÒÜ‘7Ñ*¨3Ó/Ð/ô Ð*×0Ò0¼Ø÷:
ò :
ð ×#Ñ#Ô%Ùà×4Ñ4Ó6ˆØÒ$Ü˜mÓ1Ð1ÜÐ*Ó0Ð0r   )rú   rø   rù   >   rú   rù   rø   )r<   r=   r>   r?   r@   rK   r$  r}   r›   rg   r_   rÂ   ré   r4   r&   rÀ   r9   r  r  r  r&  r³   r€   rA   rí   rî   s   @r   rf   rf   m  s†   ø† ñð ˜E 4¨Ð-€Oòð 
×	+Ñ	+ð	€Nð ôXó ðX÷,/ð /õ%÷ð ÷< ð  õõ
õõ6"÷"1ö 1r   rf   c                  ó´   a € ] tR tRt$ RtR]R&   ]R R l4       tR V 3R lltR	 R
 lt	R V 3R llt
R V 3R lltR R ltR R ltR R ltR R ltRtV ;t# )r¿   i*  a  
Result of a supported op over lazy constant operands.  The value is computed
eagerly at trace time but guards are deferred: if never realized, output
bytecode recomputes it from the operands (TYPE_MATCH only); realization
realizes the operands, installing their CONSTANT_MATCH guards.
rC   r`   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rH   rI   rF   rG   r   zVariableTracker | Noner   )r   s   "r   r   Ú)ComputedLazyConstantVariable.__annotate__5  s&   € ÷ '
ñ '
Øð'
à#ð'
ð 
 ñ'
r   c           	     ó€  aa	€ ^RI Hp \        P                  pV^ 8:  d   R# . o^o	R VV	3R llpV Uu. uF
  qT! V4      NK  	  ppS	V8”  d   R#  V ! V!  pTP                  T4      '       g   R# S'       g   TP                  T4      # \        \        TS\        T4      T S	4      4      # u upi   \         d     R# i ; i)zDCompute op(*args) eagerly; returns None to fall back to realization.rR   Nc               ó    € V ^8„  d   QhRRRR/# )r   r[   r	   r   r   r   )r   s   "r   r   Ú9ComputedLazyConstantVariable.create.<locals>.__annotate__C  s   € ÷ 		,ñ 		,˜?ð 		,¨sñ 		,r   c                óÆ  <€ \        V \        4      '       do   V P                  4       '       gY   SP                  V P                  P
                  4       SV P                  P                  ,          oV P                  P                  # \        V \        4      '       d8   V P                  4       '       g"   SP                  V 4       V P                  4       # V P                  4       # rN   )r   r¿   r„   Úextendr`   rE   rJ   r   rf   Úappendr—   Úas_python_constant)r[   rE   rJ   s   &€€r   Ú	get_valueÚ6ComputedLazyConstantVariable.create.<locals>.get_valueC  s�   ø€ ä˜#Ô;×<Ò<ÀSÇ_Á_×EVÒEVØ× Ñ  §¡×!5Ñ!5Ô6Ø˜SŸZ™Z×1Ñ1Õ1�	Ø—z‘z×'Ñ'Ð'Ü˜#Ô3×4Ò4¸S¿_¹_×=NÒ=NØ× Ñ  Ô%Ø—~‘~Ó'Ð'Ø×)Ñ)Ó+Ð+r   )
rU   rS   r   Ú computed_lazy_constant_max_nodesÚ	ExceptionÚis_base_literalr4   r¿   rC   rÃ   )
rH   rF   rS   Ú	max_nodesr9  r[   Úvaluesr   rE   rJ   s
   &&      @@r   r4   Ú#ComputedLazyConstantVariable.create4  sÈ   ù€ õ 	/ä×;Ñ;ˆ	Ø˜Œ>Ùà02ˆ	Øˆ	÷		,ñ 		,ñ -1Ó1©D S�)˜C–.©DˆÐ1à�yÔ Ùð	Ù˜‘KˆEð  ×/Ñ/°×6Ò6ÙßØ#×*Ñ*¨5Ó1Ð1Ü+Ü˜e Y´°T³
¸BÀ	ÓJó
ð 	
ùò 2øô ô 	Úð	ús   ´B)ÁB. Â.B=Â<B=c               ó$   € V ^8„  d   QhRRRRRR/# )r   r`   rC   ro   r   r   r   r   )r   s   "r   r   r1  ^  s"   € ÷ +ñ +Ð0ð +¸Cð +ÀDñ +r   c                	ó˜   <€ \        V\        4      '       g"   \        R \        V4      P                   24      h\
        SV `  ! V3/ VB  R# )z1_cache must be a ComputedLazyCache instance, got N)r   rC   r!   re   r<   rq   r&   rr   s   &&,€r   r&   Ú%ComputedLazyConstantVariable.__init__^  sG   ø€ Ü˜&Ô"3×4Ò4Ü ØCÄDÈÃL×DYÑDYÐCZÐ[óð ô 	‰Ò˜Ñ* 6Ô*r   c               ó   € V ^8„  d   QhRR/# r)   r   )r   s   "r   r   r1  e  s   € ÷ *ñ *¨Tñ *r   c                	ó`   € V P                   P                   F  pVP                  4        K  	  R # rN   )r`   rE   rÀ   )r%   rZ   s   & r   Ú_ensure_operand_type_guardsÚ8ComputedLazyConstantVariable._ensure_operand_type_guardse  s"   € àŸ™×-Ô-ˆHØ×'Ñ'Ö)ó .r   c               ó   € V ^8„  d   QhRR/# r±   r   )r   s   "r   r   r1  j  s   € ÷ 'ñ '˜Tñ 'r   c                	óª   <€ V P                  4       '       d   \        SV `	  4       # V P                  4        \	        V P
                  P                  4      # rN   )r„   rq   r  rF  re   r`   r   r  s   &€r   r  Ú(ComputedLazyConstantVariable.python_typej  sA   ø€ Ø×Ñ×ÒÜ‘7Ñ&Ó(Ð(Ø×(Ñ(Ô*Ü�D—K‘K×%Ñ%Ó&Ð&r   c               ó   € V ^8„  d   QhRR/# rˆ   r   )r   s   "r   r   r1  p  s   € ÷ ñ ˜4ñ r   c                	óp   <€ V P                  4       '       d   \        SV `	  4       # V P                  4        R # r  )r„   rq   r  rF  r  s   &€r   r  Ú&ComputedLazyConstantVariable.is_tensorp  s/   ø€ Ø×Ñ×ÒÜ‘7Ñ$Ó&Ð&Ø×(Ñ(Ô*Ùr   c               ó   € V ^8„  d   QhRR/# rˆ   r   )r   s   "r   r   r1  v  s   € ÷ ñ ¨ñ r   c                	ó„  € ^RI Hp V P                  P                   FŸ  pVP	                  4       '       d/   \
        P                  WP                  4       4      '       d    R# KG  VP                  4       pV\        J d   \        P                  '       g    R# V\        J g   K†  \        P                  '       d   Kž   R# 	  R# )é   r   TF)rV   r   r`   rE   r„   re   r   r9   r‘   rK   r   r"  r$  r#  )r%   r   rZ   r%  s   &   r   Ú_might_realize_symbolicÚ4ComputedLazyConstantVariable._might_realize_symbolicv  sŒ   € å+àŸ™×-Ô-ˆHØ×#Ñ#×%Ò%Ü×)Ñ)¨/×;KÑ;KÓ;M×NÒNÚñ Oð &×/Ñ/Ó1�
Ø¤Ó$¬V×-B×-BÐ-BÚØ¤Õ&¬v×/F×/FÒ/FÚñ .ñ r   c               ó   € V ^8„  d   QhRR/# r±   r   )r   s   "r   r   r1  †  s   € ÷ $ñ $¨tñ $r   c                	ó¼   € ^RI Hp V P                  4       '       g)   V P                  4       '       g   V P	                  4        V# \        V P                  4       4      # )rP  rR   )rU   rS   r„   rQ  rF  re   r9   )r%   rS   s   & r   r³   Ú:ComputedLazyConstantVariable.get_handler_type_for_dispatch†  sE   € Ý.à×Ñ×!Ò!¨$×*FÑ*F×*HÒ*HØ×,Ñ,Ô.Ø#Ð#Ü�D—L‘L“NÓ#Ð#r   c               ó    € V ^8„  d   QhRRRR/# r{   r   )r   s   "r   r   r1  Ž  s   € ÷ 1ñ 1 4ð 1¨Dñ 1r   c                	óœ  € ^RI Hp ^RIHp V P	                  4       '       d$   \
        P                  WP                  4       4      # \        W!4      '       g$   \        W14      '       g   V P                  4        R# V P                  4       '       d$   \
        P                  WP                  4       4      # V P                  4        \        W!4      # )rP  rR   r   F)rU   rS   rV   r   r„   re   r   r9   r¾   rF  rQ  )r%   r|   rS   r   s   &&  r   r€   Ú,ComputedLazyConstantVariable.lazy_isinstanceŽ  s˜   € Ý.Ý+à×Ñ×ÒÜ×)Ñ)¨#¯|©|«~Ó>Ð>ÜÐ*×0Ò0¼Ø÷:
ò :
ð ×,Ñ,Ô.ÙØ×'Ñ'×)Ò)Ü×)Ñ)¨#¯|©|«~Ó>Ð>Ø×(Ñ(Ô*ÜÐ*Ó0Ð0r   c               ó    € V ^8„  d   QhRRRR/# )r   Úcodegenr   r   r   r   )r   s   "r   r   r1  ž  s   € ÷ 	Lñ 	L 3ð 	L¨4ñ 	Lr   c                	óæ   aa€ ^RI Hp V P                  oSP                  VV3R l4       SP                   F  pS! V4       K  	  SP                  V! \        SP                  4      R4      4       R# )r   )Úcreate_call_functionc                 óP   <€ SP                  R S P                  P                  4      # )Úoperator)Úload_import_fromrH   r<   )rk   rZ  s   €€r   Ú<lambda>Ú:ComputedLazyConstantVariable.reconstruct.<locals>.<lambda>£  s   ø€ �G×,Ñ,¨Z¸¿¹×9JÑ9JÔKr   FN)Úbytecode_transformationr\  r`   Úadd_push_nullrF   Úextend_outputÚlen)r%   rZ  r\  r[   rk   s   &f  @r   ÚreconstructÚ(ComputedLazyConstantVariable.reconstructž  sU   ù€ ÝBà—‘ˆØ×ÑÝKô	
ð —:”:ˆCÙ�CŽLñ à×ÑÑ2´3°u·z±z³?ÀEÓJÖKr   r   )r<   r=   r>   r?   r@   Ú__annotations__ré   r4   r&   rF  r  r  rQ  r³   r€   rf  rA   rí   rî   s   @r   r¿   r¿   *  sa   ø‡ ñð Óàô'
ó ð'
÷R+ð +õ*÷
'ð '÷ð õõ $õ1÷ 	Ló 	Lr   r¿   c                  ó.   € ] tR tRtR R ltR R ltRtR# )r    iª  c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úsym_node_variabler   Úfmt_spec_varr	   r   r   r   )r   s   "r   r   Ú$LazySymNodeFormatString.__annotate__«  s$   € ÷ 
ñ 
Ø!0ð
Ø@Oð
à	ñ
r   c                	ó‚   € ^RI Hp Wn        VP                  RVP	                  4       ,           R,           4      V n        R# )rP  rR   z{:Ú}N)rU   rS   Úsym_node_varr4   r8  Úfmt_var)r%   rk  rl  rS   s   &&& r   r&   Ú LazySymNodeFormatString.__init__«  s5   € õ 	/à-ÔØ'×.Ñ.Ø�<×2Ñ2Ó4Õ4°sÕ:ó
ˆŽr   c               ó   € V ^8„  d   QhRR/# r¢   r   )r   s   "r   r   rm  µ  s   € ÷ 
ñ 
˜#ñ 
r   c                	ó    € \         P                  V P                  P                  4       \        V P                  P                  4       4      4      # rN   )r›   r   rq  r8  rp  Úevaluate_exprrx   s   &r   rë   Ú LazySymNodeFormatString.__repr__µ  s:   € Ü�z‰zØ�L‰L×+Ñ+Ó-Ü�×!Ñ!×/Ñ/Ó1Ó2ó
ð 	
r   )rq  rp  N)r<   r=   r>   r?   r&   rë   rA   r   r   r   r    r    ª  s   † õ
÷
ñ 
r   r    c               ó    € V ^8„  d   QhRRRR/# )r   rš   r›   r   z.Callable[[LazyVariableTracker, Any, Any], Any]r   )r   s   "r   r   r   ¼  s   € ÷ 	ñ 	Ø
ð	à3ñ	r   c                óh   a € \         P                  ! \        \        S 4      4      R  V 3R ll4       pV# )c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r%   r_   rF   r   ro   r   r   )r   s   "r   r   Ú1_create_realize_and_forward.<locals>.__annotate__À  s,   € ÷ >ñ >Ø!ð>Ø*-ð>Ø9<ð>à	ñ>r   c                óD   <€ \        V P                  4       S4      ! V/ VB # rN   r¬   )r%   rF   ro   rš   s   &*,€r   Úrealize_and_forwardÚ8_create_realize_and_forward.<locals>.realize_and_forward¿  s"   ø€ ô �t—|‘|“~ tÔ,¨dÐ=°fÑ=Ð=r   )Ú	functoolsÚwrapsr­   r	   )rš   r|  s   f r   Ú_create_realize_and_forwardr€  ¼  s/   ø€ ô ‡_‚_”Wœ_¨dÓ3Ó4÷>ó 5ð>ð
 Ðr   c               ó   € V ^8„  d   QhRR/# r)   r   )r   s   "r   r   r   È  s   € ÷ Vñ V�4ñ Vr   c                 óÜ   € \         P                  P                  4        FI  w  rV \        P                  9  g   K  \	        V4      '       g   K/  \        \        V \        V 4      4       KK  	  R # rN   )r	   rÁ   rÈ   r_   ÚcallableÚsetattrr€  )rš   r   s     r   Ú	_populater…  È  sH   € Ü&×/Ñ/×5Ñ5Ö7‰ˆØÔ*×3Ñ3Ö3Ü˜�ŒÜÔ+¨TÔ3NÈtÓ3TÖUó 8r   ) Ú
__future__r   rÆ   r~  r×   Útypingr   r   r1   r   Úutilsr   Úbaser   r	   r
   Úcollections.abcr   Útyping_extensionsr   r0   r   rV   r   r   rC   r_   rf   r¿   r    r€  r…  r   r   r   Ú<module>rŒ     s—   ðÝ "ã Û Û ß %å Ý *ß FÑ F÷ Ý(Ý&å<Ý'÷*!ñ *!÷Z/>ñ />ôdv"˜/Ð5Hõ v"ôrz1Ð.ô z1ôz}LÐ#6ô }L÷@
ñ 
õ$	õVñ 
†r   