Ë
    P/æj   ã                   óh   — d dl Z d dlmZ d dlZddlmZmZmZ ddlm	Z	 ddl
mZ d„ Z G d	„ d
e«      Zy)é    N)ÚDicté   )ÚunimplementedÚUnsafeScriptObjectErrorÚUnsupportedé   )ÚVariableTracker)ÚUserDefinedObjectVariablec                 ó   — d„ }|S )Nc                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  ód   •— 	  ‰| i |¤ŽS # t         $ r}t        |j                  «      |‚d }~ww xY w©N)r   r   Úmsg)ÚargsÚkwargsÚeÚfns      €úh/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/script_object.pyÚgraph_break_as_hard_errorzQ_raise_hard_error_if_graph_break.<locals>.deco.<locals>.graph_break_as_hard_error   s9   ø€ ð<Ù˜4Ð* 6Ñ*Ð*øÜò <Ü-¨a¯e©eÓ4¸!Ð;ûð<ús   ƒ ‹	/”*ª/)Ú	functoolsÚwraps)r   r   s   ` r   Údecoz._raise_hard_error_if_graph_break.<locals>.deco   s&   ø€ Ü	�‰˜Ó	ó	<ó 
ð	<ð )Ð(ó    © )Úreasonr   s     r   Ú _raise_hard_error_if_graph_breakr      s   € ò)ð €Kr   c                   ó¨   ‡ — e Zd ZU i Zeed f   ed<   edefd„«       Z	e
d„ «       Zdˆ fd„Zd„ Z ed«      d	edefd
„«       Z ed«      d„ «       Zˆ xZS )ÚTorchScriptObjectVariableÚ_fake_script_object_cacheÚuser_clsc                 ó6   — t        |t        j                  «      S r   )Ú
issubclassÚtorchÚScriptObject)Úclsr    s     r   Úis_matching_clsz)TorchScriptObjectVariable.is_matching_cls   s   € ä˜(¤E×$6Ñ$6Ó7Ð7r   c                 ó   — t        | |fi |¤ŽS r   )r   )ÚproxyÚvalueÚoptionss      r   Úcreatez TorchScriptObjectVariable.create"   s   € ä(¨°ÑA¸ÑAÐAr   Úreturnc                 óˆ   •— t        ‰| �  |fi |¤Ž || _        || j                  j                  j                  d<   || _        y )NÚexample_value)ÚsuperÚ__init__r(   ÚnodeÚmetaÚsource)Úselfr(   r)   r3   r   Ú	__class__s        €r   r0   z"TorchScriptObjectVariable.__init__&   s;   ø€ Ü‰Ñ˜Ñ) &Ò)ØˆŒ
Ø05ˆ�
‰
�‰×Ñ˜_Ñ-Øˆ�r   c                 ó   — | j                   S r   )r(   )r4   s    r   Úas_proxyz"TorchScriptObjectVariable.as_proxy,   s   € Ø�z‰zÐr   z<Dynamo cannot safely trace script object due to graph break.Únamec                 óî   — ddl m} ddlm} ddlm} t        | j                  |d «      }|€t        d|› d�«       t        |«      st        d	«       |j                  | || j                  |«      | |¬
«      S )Nr   )Úcall_torchbindr   )Ú
AttrSourcer   )Ú TorchHigherOrderOperatorVariablez'FakeScriptObject doesn't define method z3. Did you forget to implement it in the fake class?zvOnly method calls on TorchScript objects can be supported safely. Please use method calls instead of attribute access.)r3   Úscript_obj_varÚmethod_name)Ú!torch._higher_order_ops.torchbindr:   r3   r;   Úhigher_order_opsr<   Úgetattrr)   r   ÚcallableÚmake)r4   Útxr8   r:   r;   r<   Úmethods          r   Úvar_getattrz%TorchScriptObjectVariable.var_getattr/   sƒ   € õ 	Eå'ÝFä˜Ÿ™ T¨4Ó0ˆØˆ>ÜØ9¸$¸Ð?rÐsôô ˜ÔÜðHôð
 0×4Ñ4ØÙ˜dŸk™k¨4Ó0ØØð	 5ó 
ð 	
r   c                 ó"   — t        d|› d�«       y )Nzcall method z on script object is not safe.)r   )r4   rD   r8   r   r   s        r   Úcall_methodz%TorchScriptObjectVariable.call_methodO   s   € ô 	˜ T FÐ*HÐIÕJr   )r,   N)Ú__name__Ú
__module__Ú__qualname__r   r   ÚintÚ__annotations__ÚclassmethodÚtyper&   Ústaticmethodr+   r0   r7   r   Ústrr	   rF   rH   Ú__classcell__)r5   s   @r   r   r      sš   ø… ØHJÐ˜t CÐ)DÐ$DÑEÓJàð8 tò 8ó ð8ð ñBó ðBõòñ &ØFóð
 Cð 
¨Oò 
óð
ñ: &ØFóñKóôKr   r   )r   Útypingr   r#   Úexcr   r   r   Úbaser	   Úuser_definedr
   r   r   r   r   r   ú<module>rW      s0   ðó Ý ã ç EÑ EÝ !Ý 3òô8KÐ 9õ 8Kr   