Ë
    g^(hd  ã                   óæ   — d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	m
Z
 ddlmZ ddlmZ ddlmZ  G d	„ d
«      Ze G d„ de«      «       Z G d„ d«      Zdedeeeegef   fd„Zdd„Z e«        y)é    N)ÚAnyÚCallableÚfinalÚOptionalÚUnion)ÚSelfé   )Úis_function_or_wrapperé   )ÚVariableTracker)ÚSymNodeVariablec                   ó,   — e Zd ZdZdededdfd„Zdd„Zy)	Ú	LazyCachez+Container to cache the real VariableTrackerÚvalueÚsourceÚreturnNc                 óV   — t        |t        «      s|sJ ‚|| _        || _        d | _        y ©N)Ú
isinstanceÚLazySymNodeFormatStringr   r   Úvt)Úselfr   r   s      úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/variables/lazy.pyÚ__init__zLazyCache.__init__   s)   € Ü˜%Ô!8Ô9ÙˆM�6ØˆŒ
ØˆŒØ-1ˆ�ó    c                 óò   — | j                   �J ‚ddlm} |j                  «       }t	        | j
                  t        «      rd }n| j                  }t        j                  || j
                  |«      | _         | `| `y )Nr	   )ÚInstructionTranslator)
r   Úsymbolic_convertr   Ú
current_txr   r   r   r   r   Úbuild)r   r   Útxr   s       r   ÚrealizezLazyCache.realize   sb   € Ø�w‰wˆÐˆÝ<à"×-Ñ-Ó/ˆä�d—j‘jÔ"9Ô:Ø‰Fà—[‘[ˆFä!×'Ñ'¨¨D¯J©J¸Ó?ˆŒØˆJØ‰Kr   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   © r   r   r   r      s$   „ Ù5ð2˜cð 2¨3ð 2°4ó 2ôr   r   c                   óh  ‡ — e Zd ZdZdhej
                  £Zededededd fd„«       Zde	dedd	fˆ fd
„Z
defd„Zdeeef   fd„Zdefd„Zdedefd„Zdee   fd„Zdefd„Zdefˆ fd„Zdedefd„Zej0                  ZeZe	 ddedeeeeeef   f      defd„«       Zdefd„Z defd„Z!def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.
    Ú_cacher   r   Úoptionsr   c                 ó2   — t        t        | |«      fd|i|¤ŽS )Nr   )r*   r   )r   r   r,   s      r   ÚcreatezLazyVariableTracker.create7   s   € ä"¤9¨U°FÓ#;ÑVÀFÐVÈgÑVÐVr   ÚkwargsNc                 óV   •— t        |t        «      sJ ‚t        ‰| �  di |¤Ž || _        y )Nr(   )r   r   Úsuperr   r+   )r   r+   r/   Ú	__class__s      €r   r   zLazyVariableTracker.__init__;   s*   ø€ Ü˜&¤)Ô,Ð,Ð,Ü‰ÑÑ"˜6Ò"Øˆ�r   c                 ó¾   — | j                   j                  €2| j                   j                  «        | j                   j                  €J ‚| j                   j                  S )z.Force construction of the real VariableTracker)r+   r   r"   ©r   s    r   r"   zLazyVariableTracker.realize@   sB   € à�;‰;�>‰>Ð!Ø�K‰K×ÑÔ!Ø—;‘;—>‘>Ð-Ð-Ð-Ø�{‰{�~‰~Ðr   c                 ó‚   — | j                  «       r.| j                  j                  €J ‚| j                  j                  S | S )z4Return the real VariableTracker if it already exists)Úis_realizedr+   r   r4   s    r   ÚunwrapzLazyVariableTracker.unwrapG   s5   € à×ÑÔØ—;‘;—>‘>Ð-Ð-Ð-Ø—;‘;—>‘>Ð!Øˆr   c                 ó2   — | j                   j                  d uS r   )r+   r   r4   s    r   r6   zLazyVariableTracker.is_realizedN   s   € Ø�{‰{�~‰~ TÐ)Ð)r   c                 ó  — |j                  d| j                  «      | j                  u sJ ‚|j                  d| j                  «      | j                  ur| j                  «        t	        j
                  | j                  «       fi |¤ŽS )Nr+   r   )Úgetr+   r   r"   r   Úcloner7   )r   r/   s     r   r;   zLazyVariableTracker.cloneQ   sc   € Ø�z‰z˜( D§K¡KÓ0°D·K±KÑ?Ð?Ð?Ø�:‰:�h §¡Ó,°D·K±KÑ?Ø�L‰LŒNÜ×$Ñ$ T§[¡[£]Ñ=°fÑ=Ð=r   c                 ód   — | j                  «       rJ ‚t        | j                  j                  «      S r   )r6   Útyper+   r   r4   s    r   Ú	peek_typezLazyVariableTracker.peek_typeW   s)   € Ø×#Ñ#Ô%Ð%Ð%Ü�D—K‘K×%Ñ%Ó&Ð&r   c                 óR   — | j                  «       rJ ‚| j                  j                  S r   ©r6   r+   r   r4   s    r   Ú
peek_valuezLazyVariableTracker.peek_value[   s$   € Ø×#Ñ#Ô%Ð%Ð%Ø�{‰{× Ñ Ð r   c                 ór   •— | j                  «       rt        | j                  «       «      S t        ‰| �  «       S r   )r6   Úreprr7   r1   Ú__repr__)r   r2   s    €r   Ú__str__zLazyVariableTracker.__str___   s.   ø€ Ø×ÑÔÜ˜Ÿ™›Ó&Ð&Ü‰wÑÓ!Ð!r   Úitemc                 ó6   — t        | j                  «       |«      S r   ©Úgetattrr"   )r   rF   s     r   Ú__getattr__zLazyVariableTracker.__getattr__d   s   € Ü�t—|‘|“~ tÓ,Ð,r   Úcachec           	      ó´  ‡ ‡— ‰€i Št        |«      }|‰v r‰|   d   S t        |«      }t        |t        «      r!‰ j	                  |j                  «       ‰«      }nìt        |t        «      r?|}|j                  }|j                  }|D ]  }||vsŒ‰ j	                  ||   ‰«      ||<   Œ! n�|t        u r |D �	cg c]  }	‰ j	                  |	‰«      ‘Œ }}	nu|t        u rt        ˆˆ fd„|D «       «      }nW|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   c              3   óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wr   )Úrealize_all)Ú.0ÚvrK   Úclss     €€r   ú	<genexpr>z2LazyVariableTracker.realize_all.<locals>.<genexpr>‰   s   øè ø€ ÒD¸˜3Ÿ?™?¨1¨e×4ÑDùs   ƒ)Úidr=   Ú
issubclassr*   rN   r"   r   Ú__dict__Ú_nonvar_fieldsÚlistÚtupleÚdictÚcollectionsÚOrderedDictÚitems)rQ   r   rK   ÚidxÚ	value_clsÚresultÚ
value_dictÚnonvarsÚkeyrP   Úks   ` `        r   rN   zLazyVariableTracker.realize_allk   sU  ù€ ð ˆ=ØˆEä�‹iˆØ�%‰<Ø˜‘:˜a‘=Ð ä˜“Kˆ	Ü�iÔ!4Ô5Ø—_‘_ U§]¡]£_°eÓ<‰FÜ˜	¤?Ô3àˆFØŸ™ˆJØ×*Ñ*ˆGØ!ò N�Ø˜gÒ%Ø&)§o¡o°jÀ±oÀuÓ&M�J˜s’OñNð œ$ÑØ9>Ö?°A�c—o‘o a¨Õ/Ð?ˆFÑ?Øœ%ÑÜÔD¸eÔDÓD‰FØœ4¤×!8Ñ!8Ð9Ñ9Ü?CÀEÇKÁKÃMÓ?R×S±t°q¸!�a˜Ÿ™¨¨EÓ2Ñ2ÐSˆFÒSàˆFð ˜e�_ˆˆc‰
Øˆùò @ùó Ts   Â5EÄ#Ec                 óÌ   ‡— dt         dt        fd„Š| j                  «       rJ ‚| j                  j                  }t        |t        «      rt        ˆfd„|D «       «      S  ‰|«      S )Nr   r   c                 ó|   — t        j                  | «      xs& t        t        | «      t        «      xs t	        | «      S r   )ÚinspectÚ	isbuiltinrT   r=   r
   )r   s    r   Ú_helperz0LazyVariableTracker.is_hashable.<locals>._helper—   s7   € ô ×!Ñ! %Ó(ò 1Üœd 5›k¬4Ó0ò1ä)¨%Ó0ðr   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   r(   )rO   rP   rh   s     €r   rR   z2LazyVariableTracker.is_hashable.<locals>.<genexpr>¢   s   øè ø€ Ò1 a‘w˜q—zÑ1ùs   ƒ)r   Úboolr6   r+   r   r   rX   Úall)r   r   rh   s     @r   Úis_hashablezLazyVariableTracker.is_hashable“   s^   ø€ ð	œ3ð 	¤4ó 	ð ×#Ñ#Ô%Ð%Ð%Ø—‘×!Ñ!ˆÜ�eœUÔ#ÜÓ1¨5Ô1Ó1Ð1Ù�u‹~Ðr   c                 óR   — | j                  «       rJ ‚| j                  j                  S r   r@   r4   s    r   Úoriginal_valuez"LazyVariableTracker.original_value¥   s$   € à×#Ñ#Ô%Ð%Ð%Ø�{‰{× Ñ Ð r   c                 óR   — | j                  «       rJ ‚| j                  j                  S r   )r6   r+   r   r4   s    r   Úoriginal_sourcez#LazyVariableTracker.original_sourceª   s$   € à×#Ñ#Ô%Ð%Ð%Ø�{‰{×!Ñ!Ð!r   r   )$r$   r%   r&   r'   r   rV   Ústaticmethodr   r.   r   r   r"   r   r   r7   rj   r6   r;   r=   r>   rA   ÚstrrE   rJ   ÚvisitrD   Úclassmethodr   rY   ÚintrX   rN   rl   rn   rp   Ú__classcell__)r2   s   @r   r*   r*   &   si  ø„ ñð Ð@ ×!?Ñ!?Ð@€NàðW�cð W 3ð W°3ð WÐ;Pò Wó ðWð˜yð °Cð ¸Dõ ð
˜ó ð˜˜o¨tÐ3Ñ4ó ð*˜Tó *ð>˜cð > oó >ð'˜4 ™9ó 'ð!˜Có !ð"˜õ "ð
- ð -¨ó -ð ×!Ñ!€EØ€Hàð 7;ñ%àð%ð ˜˜S %¨¨S¨¡/Ð1Ñ2Ñ3ð%ð 
ò	%ó ð%ðN˜Tó ð$! ó !ð
" ÷ "r   r*   c                   ó,   — e Zd Zdededdfd„Zdefd„Zy)r   Úsym_node_variableÚfmt_spec_varr   Nc                 ór   — ddl m} || _        |j                  d|j	                  «       z   dz   «      | _        y )Nr   )ÚConstantVariablez{:ú})Úconstantr{   Úsym_node_varr.   Úas_python_constantÚfmt_var)r   rx   ry   r{   s       r   r   z LazySymNodeFormatString.__init__±   s7   € õ 	/à-ˆÔØ'×.Ñ.Ø�<×2Ñ2Ó4Ñ4°sÑ:ó
ˆ�r   c                 ó    — t         j                  | j                  j                  «       t        | j                  j                  «       «      «      S r   )rr   Úformatr€   r   r~   Úevaluate_exprr4   s    r   rD   z LazySymNodeFormatString.__repr__»   s:   € Ü�z‰zØ�L‰L×+Ñ+Ó-Ü�×!Ñ!×/Ñ/Ó1Ó2ó
ð 	
r   )r$   r%   r&   r   r   r   rr   rD   r(   r   r   r   r   °   s+   „ ð
Ø!0ð
Ø@Oð
à	ó
ð
˜#ô 
r   r   Únamer   c           	      ó�   ‡ — t        j                  t        t        ‰ «      «      dt        dt
        dt
        dt
        fˆ fd„«       }|S )Nr   Úargsr/   r   c                 óD   •—  t        | j                  «       ‰«      |i |¤ŽS r   rH   )r   r†   r/   r„   s      €r   Úrealize_and_forwardz8_create_realize_and_forward.<locals>.realize_and_forwardÅ   s$   ø€ ð -Œw�t—|‘|“~ tÓ,¨dÐ=°fÑ=Ð=r   )Ú	functoolsÚwrapsrI   r   r*   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 r   )r   rU   r\   r*   ÚcallableÚsetattrr‹   )r„   r   s     r   Ú	_populater�   Î   sO   € Ü&×/Ñ/×5Ñ5Ó7ò V‰ˆˆeØÔ*×3Ñ3Ò3Ü˜�ÜÔ+¨TÔ3NÈtÓ3TÕUñVr   r#   )rZ   r‰   rf   Útypingr   r   r   r   r   Útyping_extensionsr   Úutilsr
   Úbaser   Útensorr   r   r*   r   rr   r‹   r�   r(   r   r   ú<module>r•      s‡   ðÛ Û Û ß 8Õ 8Ý "å *Ý !Ý #÷ñ ð4 ôF"˜/ó F"ó ðF"÷R
ñ 
ð$	Ø
ð	àÐ" C¨Ð-¨sÐ2Ñ3ó	óVñ 
…r   