Ë
    ÃÓ^j�L  ã                  ó  — d dl mZ d dlZd dlZd dl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 erd d	lmZ d d
lmZ ddlmZ ddlmZ  G d„ d«      Z G d„ dee¬«      Z G d„ de«      Z G d„ d«      Z	 	 	 	 dd„Zdd„Z e«        y)é    )ÚannotationsN)ÚAnyÚTYPE_CHECKINGé   )Úconfig)Úis_function_or_wrapperé   )ÚSourceLocationÚVariableTrackerÚVariableTrackerMeta)ÚCallable)ÚSelf)ÚInstructionTranslatorBase©ÚSymNodeVariablec                  ó    — e Zd ZdZdd„Zdd„Zy)Ú	LazyCachez+Container to cache the real VariableTrackerc                ó„   — t        |t        «      s|st        d«      ‚|| _        || _        d | _        d | _        d | _        y )Nz9source is required for non-LazySymNodeFormatString values)Ú
isinstanceÚLazySymNodeFormatStringÚAssertionErrorÚvalueÚsourceÚ	name_hintÚsource_locationÚvt)Úselfr   r   s      úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/lazy.pyÚ__init__zLazyCache.__init__   sF   € Ü˜%Ô!8Ô9ÙÜ$ØOóð ð ˆŒ
ØˆŒØ%)ˆŒØ6:ˆÔØ*.ˆ�ó    c                ó\  — | j                   �t        d«      ‚ddlm} ddlm} |j                  «       }t        | j                  t        «      r,|j                  j                  || j                  «      | _         n3 |j                  || j                  d¬«      | j                  «      | _         | j                  �%| j                   j                  | j                  «       | j                   �;| j                   j                   €%| j                   j#                  | j                   «       | `| `| `| `y )Nz0LazyCache.realize() called but vt is already setr   )ÚInstructionTranslatorr	   )Ú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   ÚrealizezLazyCache.realize$   sõ   € Ø�7‰7ÐÜ Ð!SÓTÐTÝ<Ýà"×-Ñ-Ó/ˆä�d—j‘jÔ"9Ô:Ø×/Ñ/×6Ñ6°r¸4¿:¹:ÓFˆD�Gð
�g×-Ñ-Ø�D—K‘K°Uð .ó à�j‰jóˆDŒGð �>‰>Ð%Ø�G‰G×!Ñ! $§.¡.Ô1à×ÑÐ+°·±×0GÑ0GÐ0OØ�G‰G×'Ñ'¨×(<Ñ(<Ô=àˆJØˆKØˆNØÑ r    N)r   r   r   r   ÚreturnÚNone©r0   r1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r/   © r    r   r   r      s   „ Ù5ó
/ô!r    r   c                  ó.  ‡ — e Zd ZdZdZdhej                  £Zeddœ	 	 	 	 	 	 	 	 	 dd„«       Zdˆ fd„Z	dd„Z
dd	„Zdd
„Zdd„Zd d„Zd!d„Zd"d„Zd#d„Zd$d„Zd%d„Zd&d„Zd'd„Zej,                  ZeZe	 d(ddœ	 	 	 	 	 	 	 d)d„«       Zdd„Zd"d„Zd"d„Zˆ xZS )*Ú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Ú_cacheN)r.   c               ó4  — t        | «      t        j                  v rt        j                  | |fi |¤ŽS |�M|�K|sI|j                  j
                  }|j                  |«      }|�|S t        t        | |«      |¬«      }|||<   |S t        t        | |«      fd|i|¤ŽS )N)r   r   )	ÚtypeÚLazyConstantVariableÚsupported_typesr*   ÚoutputÚvariable_tracker_cacheÚgetr9   r   )r   r   r.   ÚoptionsÚcacheÚcachedr   s          r   r*   zLazyVariableTracker.createT   s¢   € ô �‹;Ô.×>Ñ>Ñ>Ü'×.Ñ.¨u°fÑHÀÑHÐHð ˆ>˜fÐ0¹Ø—I‘I×4Ñ4ˆEØ—Y‘Y˜vÓ&ˆFØÐ!Ø�Ü$¤Y¨u°fÓ%=ÀfÔMˆBØˆE�&‰MØˆIä"¤9¨U°FÓ#;ÑVÀFÐVÈgÑVÐVr    c                ó”   •— t        |t        «      s!t        dt        |«      j                  › �«      ‚t        ‰| �  di |¤Ž || _        y )Nz)_cache must be a LazyCache instance, got r7   )r   r   r   r<   r3   Úsuperr   r:   ©r   r:   ÚkwargsÚ	__class__s      €r   r   zLazyVariableTracker.__init__k   sH   ø€ Ü˜&¤)Ô,Ü Ø;¼DÀ»L×<QÑ<QÐ;RÐSóð ô 	‰ÑÑ"˜6Ò"Øˆ�r    c                óÐ   — | j                   j                  €;| j                   j                  «        | j                   j                  €t        d«      ‚| j                   j                  S )z.Force construction of the real VariableTrackerz"LazyCache.realize() did not set vt)r:   r   r/   r   ©r   s    r   r/   zLazyVariableTracker.realizes   sH   € à�;‰;�>‰>Ð!Ø�K‰K×ÑÔ!Ø�{‰{�~‰~Ð%Ü$Ð%IÓJÐJØ�{‰{�~‰~Ðr    c                óJ   — t         j                  || j                  «       «      S )zNCheck isinstance after realizing, used by ImplicitRealizingVariableTrackerMeta)r<   Ú__instancecheck__r/   )r   Úclss     r   Úlazy_isinstancez#LazyVariableTracker.lazy_isinstance{   s   € ä×%Ñ% c¨4¯<©<«>Ó:Ð:r    c                ó”   — | j                  «       r7| j                  j                  €t        d«      ‚| j                  j                  S | S )z4Return the real VariableTracker if it already existsz*is_realized() returned True but vt is None)Úis_realizedr:   r   r   rK   s    r   ÚunwrapzLazyVariableTracker.unwrap   s;   € à×ÑÔØ�{‰{�~‰~Ð%Ü$Ð%QÓRÐRØ—;‘;—>‘>Ð!Øˆr    c                ó2   — | j                   j                  d uS ©N)r:   r   rK   s    r   rQ   zLazyVariableTracker.is_realized‡   s   € Ø�{‰{�~‰~ TÐ)Ð)r    c                ó   — |j                  d| j                  «      | j                  urt        d«      ‚|j                  d| j                  «      | j                  ur| j	                  «        t        j                  | j                  «       fi |¤ŽS )Nr:   z8cannot clone LazyVariableTracker with a different _cacher   )rA   r:   r   r   r/   r   ÚclonerR   )r   rH   s     r   rV   zLazyVariableTracker.cloneŠ   so   € Ø�:‰:�h §¡Ó,°D·K±KÑ?Ü ØJóð ð �:‰:�h §¡Ó,°D·K±KÑ?Ø�L‰LŒNÜ×$Ñ$ T§[¡[£]Ñ=°fÑ=Ð=r    c                óv   — | j                  «       rt        d«      ‚t        | j                  j                  «      S )Nz=peek_type() called on an already realized LazyVariableTracker)rQ   r   r<   r:   r   rK   s    r   Ú	peek_typezLazyVariableTracker.peek_type“   s5   € Ø×ÑÔÜ ØOóð ô �D—K‘K×%Ñ%Ó&Ð&r    c                ód   — | j                  «       rt        d«      ‚| j                  j                  S )Nz>peek_value() called on an already realized LazyVariableTracker©rQ   r   r:   r   rK   s    r   Ú
peek_valuezLazyVariableTracker.peek_valueš   s0   € Ø×ÑÔÜ ØPóð ð �{‰{× Ñ Ð r    c                ó’   — | j                  «       r&| j                  j                  j                  |«       y || j                  _        y rT   )rQ   r:   r   r,   r   )r   Únames     r   r,   z!LazyVariableTracker.set_name_hint¡   s0   € Ø×ÑÔØ�K‰K�N‰N×(Ñ(¨Õ.à$(ˆD�K‰KÕ!r    c                ó    — || _         | j                  «       r&| j                  j                  j	                  |«       y || j                  _         y rT   )r   rQ   r:   r   r-   )r   r   s     r   r-   z'LazyVariableTracker.set_source_location§   s8   € Ø.ˆÔØ×ÑÔØ�K‰K�N‰N×.Ñ.¨Õ?à*9ˆD�K‰KÕ'r    c                óœ   — d}| j                  «       r"|dt        | j                  «       «      › d�z  }|S |d| j                  «       › d�z  }|S )NzLazyVariableTracker(z
realized: ú)zunrealized: )rQ   ÚreprrR   rX   )r   Úvariable_infos     r   Ú__str__zLazyVariableTracker.__str__®   s]   € Ø.ˆØ×ÑÔØ˜z¬$¨t¯{©{«}Ó*=Ð)>¸aÐ@Ñ@ˆMð Ðð ˜|¨D¯N©NÓ,<Ð+=¸QÐ?Ñ?ˆMàÐr    c                ó6   — t        | j                  «       |«      S rT   ©Úgetattrr/   )r   Úitems     r   Ú__getattr__zLazyVariableTracker.__getattr__·   s   € Ü�t—|‘|“~ tÓ,Ð,r    c                ó   — t         S )a€  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.
        )r9   rK   s    r   Úget_handler_type_for_dispatchz1LazyVariableTracker.get_handler_type_for_dispatchº   s
   € ô #Ð"r    Fr$   c          
     ó
  ‡ ‡‡— ‰€i Št        |«      }|‰v r‰|   d   S t        |«      }t        |t        «      r=‰xr t	        |t
        «      }|r|}�n‰ j                  |j                  «       ‰‰¬«      }nút        |t        «      rH|}||f‰|<   |j                  }|j                  }	|D ]!  }
|
|	vsŒ‰ j                  ||
   ‰‰¬«      ||
<   Œ# n¢|t        u r"|D �cg c]  }‰ j                  |‰‰¬«      ‘Œ }}nx|t        u rt        ˆˆˆ fd„|D «       «      }nY|t        t        j                  fv r?t        |j!                  «       «      D ��ci c]  \  }}|‰ j                  |‰‰¬«      “Œ }}}n|}||f‰|<   |S c c}w c c}}w )zP
        Walk an object and realize all LazyVariableTrackers inside it.
        r   r$   c              3  óF   •K  — | ]  }‰j                  |‰‰¬ «      –— Œ y­w)r$   N)Úrealize_all)Ú.0Úvr%   rC   rN   s     €€€r   ú	<genexpr>z2LazyVariableTracker.realize_all.<locals>.<genexpr>ö   s)   øè ø€ ò àð —‘  5Ð>Q�×Rñùs   ƒ!)Úidr<   Ú
issubclassr9   r   r=   rm   r/   r   Ú__dict__Ú_nonvar_fieldsÚlistÚtupleÚdictÚcollectionsÚOrderedDictÚitems)rN   r   rC   r%   ÚidxÚ	value_clsÚ	keep_lazyÚresultÚ
value_dictÚnonvarsÚkeyro   Úks   ` ``         r   rm   zLazyVariableTracker.realize_allÈ   s¿  ú€ ð ˆ=ØˆEä�‹iˆØ�%‰<Ø˜‘:˜a‘=Ð ä˜“Kˆ	Ü�iÔ!4Ô5à+ÒW´
¸5ÔBVÓ0WˆIÙØ’àŸ™Ø—M‘M“O UÐ@Sð )ó ‘ô ˜	¤?Ô3àˆFà  %˜ˆE�#‰JØŸ™ˆJØ×*Ñ*ˆGØ!ò �Ø˜gÒ%Ø&)§o¡oØ" 3™¨ÐDWð '6ó '�J˜s’Oñð
 œ$Ñð öàð —‘  5Ð>Q�ÕRðˆFñ ð œ%ÑÜõ àôó ‰Fð œ4¤×!8Ñ!8Ð9Ñ9ô ! §¡£Ó/÷á�A�qð �3—?‘? 1 eÐAT�?ÓUÑUðˆFò ð
 ˆFð ˜e�_ˆˆc‰
Øˆùò'ùós   ÃE:ÅE?c                óÆ   ‡— dd„Š| j                  «       rt        d«      ‚| j                  j                  }t	        |t
        «      rt        ˆfd„|D «       «      S  ‰|«      S )Nc                ó|   — t        j                  | «      xs& t        t        | «      t        «      xs t	        | «      S rT   )ÚinspectÚ	isbuiltinrr   r<   r   )r   s    r   Ú_helperz5LazyVariableTracker.is_hashable_lazy.<locals>._helper
  s7   € ô ×!Ñ! %Ó(ò 1Üœd 5›k¬4Ó0ò1ä)¨%Ó0ðr    z?is_hashable() called on an already realized LazyVariableTrackerc              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wrT   r7   )rn   ro   r‡   s     €r   rp   z7LazyVariableTracker.is_hashable_lazy.<locals>.<genexpr>  s   øè ø€ Ò1 a‘w˜q—zÑ1ùs   ƒ)r   r   r0   Úbool)rQ   r   r:   r   r   rv   Úall)r   r   r‡   s     @r   Úis_hashable_lazyz$LazyVariableTracker.is_hashable_lazy  s\   ø€ ó	ð ×ÑÔÜ ØQóð ð —‘×!Ñ!ˆÜ�eœUÔ#ÜÓ1¨5Ô1Ó1Ð1Ù�u‹~Ðr    c                ód   — | j                  «       rt        d«      ‚| j                  j                  S )NzBoriginal_value() called on an already realized LazyVariableTrackerrZ   rK   s    r   Úoriginal_valuez"LazyVariableTracker.original_value  s0   € à×ÑÔÜ ØTóð ð �{‰{× Ñ Ð r    c                ód   — | j                  «       rt        d«      ‚| j                  j                  S )NzCoriginal_source() called on an already realized LazyVariableTracker)rQ   r   r:   r   rK   s    r   Úoriginal_sourcez#LazyVariableTracker.original_source#  s0   € à×ÑÔÜ ØUóð ð �{‰{×!Ñ!Ð!r    )
r   r   r   r   r.   z InstructionTranslatorBase | NonerB   r   r0   r   ©r:   r   rH   r   r0   r1   ©r0   r   ©rN   r<   r0   r‰   )r0   zVariableTracker | Self©r0   r‰   )rH   r   r0   r   )r0   z	type[Any])r0   r   )r]   Ústrr0   r1   )r   r
   r0   r1   ©r0   r”   )rg   r”   r0   r   ©r0   r<   rT   )r   r   rC   z!dict[int, tuple[Any, Any]] | Noner%   r‰   r0   r   )r3   r4   r5   r6   Ú_no_implicit_realizer   rt   Ústaticmethodr*   r   r/   rO   rR   rQ   rV   rX   r[   r,   r-   rc   rh   rj   ÚvisitÚ__repr__Úclassmethodrm   r‹   r�   r�   Ú__classcell__©rI   s   @r   r9   r9   B   s  ø„ ñð  ÐØÐ@ ×!?Ñ!?Ð@€Nàð
 04ñ	WØðWàðWð -ð	Wð
 ðWð 
òWó ðWõ,óó;óó*ó>ó'ó!ó)ó:óó-ó#ð ×!Ñ!€EØ€Hàð 48ð;ð
 %*ñ;àð;ð 1ð;ð
 "ð;ð 
ò;ó ð;ózó*!÷"r    r9   )Ú	metaclassc                  óÀ   ‡ — e Zd ZdZeeeefZdddhe	j                  £Z
e	 	 	 	 	 	 	 	 dd„«       Zdˆ fd„Zdd„Zdˆ fd„Zdˆ fd	„Zdd
„Zdd„Zdd„Zdd„Zdˆ fd„Zˆ xZS )r=   az  
    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
    Ú_type_guard_installedÚ_type_guard_refÚ_handler_typec                ó  — ddl m} ddlm} t	        | «      t
        j                  vr"t        dt	        | «      j                  › d�«      ‚|€t        d«      ‚ ||«      r |j                  | fd|i|¤ŽS t        t        | |«      fd|i|¤ŽS )	Nr   )Úis_constant_sourcer	   ©ÚConstantVariablezunsupported type z for LazyConstantVariablez0source must not be None for LazyConstantVariabler   )r   r¤   Úconstantr¦   r<   r=   r>   r   r3   r*   r   )r   r   rB   r¤   r¦   s        r   r*   zLazyConstantVariable.createD  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°VÓ$<ÑWÀVÐWÈwÑWÐWr    c                óP   •— t        ‰| �  |fi |¤Ž d| _        d | _        d | _        y ©NF)rF   r   r    r¡   r¢   rG   s      €r   r   zLazyConstantVariable.__init__[  s-   ø€ Ü‰Ñ˜Ñ* 6Ò*Ø%*ˆÔ"Ø$(ˆÔØ*.ˆÕr    c                óò   — | j                   s| j                  «       ryddlm}m} | j
                  €t        d«      ‚| j
                  j                  |j                  «      } ||«       d| _         || _	        y)zCInstall TYPE_MATCH guard if not already installed and not realized.Nr   ©ÚGuardBuilderÚinstall_guardz2source must not be None when installing type guardT)
r    rQ   Úguardsr¬   r­   r   r   Ú
make_guardÚ
TYPE_MATCHr¡   )r   r¬   r­   Úguards       r   Ú_ensure_type_guardz'LazyConstantVariable._ensure_type_guarda  sd   € à×%Ò%¨×)9Ñ)9Ô);Øç8à�;‰;ÐÜ Ð!UÓVÐVØ—‘×&Ñ& |×'>Ñ'>Ó?ˆÙ�eÔØ%)ˆÔ"Ø$ˆÕr    c                óÜ  •— | j                  «       rt        ‰| �	  «       S ddlm} ddlm}m} ddlm	} | j                  €t        d«      ‚t        ‰| �	  «       }t        ||«      r‡| j                  �P|j                  «       }|j                  j                   j"                  j%                  | j                  «       d| _         || j                  j'                  |j(                  «      «       |S )	z/Force construction of the real VariableTracker.r   )ÚTracingContextr   r«   r	   r¥   Nz;source must not be None when realizing LazyConstantVariable)rQ   rF   r/   Útorch._guardsr´   r®   r¬   r­   r§   r¦   r   r   r   r¡   rA   Úguards_contextÚdynamo_guardsÚinnerÚdiscardr¯   ÚCONSTANT_MATCH)r   r´   r¬   r­   r¦   r~   Útracing_contextrI   s          €r   r/   zLazyConstantVariable.realizeo  sÉ   ø€ à×ÑÔÜ‘7‘?Ó$Ð$å0ç8Ý.à�;‰;ÐÜ ØMóð ô ‘‘Ó"ˆô �fÐ.Ô/Ø×#Ñ#Ð/Ø"0×"4Ñ"4Ó"6�Ø×.Ñ.×<Ñ<×BÑB×JÑJØ×(Ñ(ôð (,�Ô$Ù˜$Ÿ+™+×0Ñ0°×1LÑ1LÓMÔNàˆr    c                ó€   •— | j                  «       rt        ‰| �	  «       S | j                  «        | j	                  «       S )z6Return the Python type without triggering realization.)rQ   rF   Úpython_typer²   rX   )r   rI   s    €r   r½   z LazyConstantVariable.python_type�  s6   ø€ à×ÑÔÜ‘7Ñ&Ó(Ð(Ø×ÑÔ!Ø�~‰~ÓÐr    c                ó$   — | j                  «        y)z&Primitive constants are never tensors.F©r²   rK   s    r   Ú	is_tensorzLazyConstantVariable.is_tensor”  s   € à×ÑÔ!Ør    c                ó$   — | j                  «        yr©   r¿   rK   s    r   Úis_constant_nonez%LazyConstantVariable.is_constant_none™  s   € Ø×ÑÔ!Ør    c                óZ  — | j                  «       rt        | j                  «       «      S | j                  «       }t        j
                  s!|t        u rt        | j                  «       «      S t        j                  s!|t        u rt        | j                  «       «      S | j                  «        y)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)
rQ   r<   r/   rX   r   Úspecialize_intÚintÚspecialize_floatÚfloatr²   )r   Ú
value_types     r   Ú_maybe_realize_for_typez,LazyConstantVariable._maybe_realize_for_type�  s‚   € ð ×ÑÔÜ˜Ÿ™›Ó'Ð'à—^‘^Ó%ˆ
ô ×$Ò$¨´sÑ):Ü˜Ÿ™›Ó'Ð'Ü×&Ò&¨:¼Ñ+>Ü˜Ÿ™›Ó'Ð'ð 	×ÑÔ!Ør    c                óŒ   — | j                   �| j                   S ddlm} | j                  «       }|�|n|| _         | j                   S )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.
        r	   r¥   )r¢   r§   r¦   rÉ   )r   r¦   Úrealized_types      r   rj   z2LazyConstantVariable.get_handler_type_for_dispatch¸  sN   € ð ×ÑÐ)Ø×%Ñ%Ð%å.à×4Ñ4Ó6ˆà*Ð6‰MÐ<Lð 	Ôð ×!Ñ!Ð!r    c                ó   •— ddl m} ddlm} | j	                  «       rt
        ‰| �  |«      S t        ||«      st        ||«      s| j                  «        y| j                  «       }|�t        ||«      S t        ||«      S )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.
        r	   r¥   r   F)
r§   r¦   Útensorr   rQ   rF   rO   rr   r²   rÉ   )r   rN   r¦   r   rË   rI   s        €r   rO   z$LazyConstantVariable.lazy_isinstanceÉ  s‚   ø€ õ 	/Ý+ð ×ÑÔÜ‘7Ñ*¨3Ó/Ð/ô Ð*¨CÔ0¼Ø˜Sô:
ð ×#Ñ#Ô%Øà×4Ñ4Ó6ˆØÐ$Ü˜m¨SÓ1Ð1ÜÐ*¨CÓ0Ð0r    )r   r   r   r   rB   r   r0   r   r�   r2   r‘   r–   r“   )r0   ztype | Noner’   )r3   r4   r5   r6   rÅ   rÇ   r‰   r”   r>   r9   rt   r˜   r*   r   r²   r/   r½   rÀ   rÂ   rÉ   rj   rO   rœ   r�   s   @r   r=   r=   ,  s¨   ø„ ñð ˜E 4¨Ð-€OàØØðð 
×	+Ñ	+ð	€Nð ðXØðXàðXð ðXð 
ò	Xó ðXõ,/ó%õõ< óó
óó6"÷"1ñ 1r    r=   c                  ó(   — e Zd Z	 	 	 	 	 	 dd„Zdd„Zy)r   c                ór   — ddl m} || _        |j                  d|j	                  «       z   dz   «      | _        y )Nr	   r¥   z{:ú})r§   r¦   Úsym_node_varr*   Úas_python_constantÚfmt_var)r   Úsym_node_variableÚfmt_spec_varr¦   s       r   r   z LazySymNodeFormatString.__init__ê  s7   € õ 	/à-ˆÔØ'×.Ñ.Ø�<×2Ñ2Ó4Ñ4°sÑ:ó
ˆ�r    c                ó    — t         j                  | j                  j                  «       t        | j                  j                  «       «      «      S rT   )r”   ÚformatrÓ   rÒ   rÑ   Úevaluate_exprrK   s    r   rš   z LazySymNodeFormatString.__repr__ô  s:   € Ü�z‰zØ�L‰L×+Ñ+Ó-Ü�×!Ñ!×/Ñ/Ó1Ó2ó
ð 	
r    N)rÔ   r   rÕ   r   r0   r1   r•   )r3   r4   r5   r   rš   r7   r    r   r   r   é  s$   „ ð
Ø!0ð
Ø@Oð
à	ó
ô
r    r   c                óp   ‡ — t        j                  t        t        ‰ «      «      	 	 	 	 	 	 	 	 dˆ fd„«       }|S )Nc                óD   •—  t        | j                  «       ‰«      |i |¤ŽS rT   re   )r   ÚargsrH   r]   s      €r   Úrealize_and_forwardz8_create_realize_and_forward.<locals>.realize_and_forwardþ  s$   ø€ ð -Œw�t—|‘|“~ tÓ,¨dÐ=°fÑ=Ð=r    )r   r9   rÛ   r   rH   r   r0   r   )Ú	functoolsÚwrapsrf   r   )r]   rÜ   s   ` r   Ú_create_realize_and_forwardrß   û  sO   ø€ ô ‡_�_”Wœ_¨dÓ3Ó4ð>Ø!ð>Ø*-ð>Ø9<ð>à	ô>ó 5ð>ð
 Ðr    c                 óÂ   — t         j                  j                  «       D ]>  \  } }| t        j                  vsŒt	        |«      sŒ%t        t        | t        | «      «       Œ@ y rT   )r   rs   rz   r9   ÚcallableÚsetattrrß   )r]   r   s     r   Ú	_populaterã     sO   € Ü&×/Ñ/×5Ñ5Ó7ò V‰ˆˆeØÔ*×3Ñ3Ò3Ü˜�ÜÔ+¨TÔ3NÈtÓ3TÕUñVr    )r]   r”   r0   z.Callable[[LazyVariableTracker, Any, Any], Any]r2   )Ú
__future__r   rx   rÝ   r…   Útypingr   r   r'   r   Úutilsr   Úbaser
   r   r   Úcollections.abcr   Útyping_extensionsr   r&   r   rÍ   r   r   r9   r=   r   rß   rã   r7   r    r   ú<module>rê      sŠ   ðÝ "ã Û Û ß %å Ý *ß FÑ Fñ Ý(Ý&å<Ý'÷*!ñ *!ôZg"˜/Ð5Hõ g"ôTz1Ð.ô z1÷z
ñ 
ð$	Ø
ð	à3ó	óVñ 
…r    