
    קgI                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZ  G d
 de          Z e            Ze                    e          d             Ze                    e          d             Zej        d             Z e                    ej                   e	ed                     e                    ej                  d             Zd Zed             Zd Z dS )    )contextmanagerN)DispatchKeystrict_mode)autograd_not_implemented)HigherOrderOperator)FakeTensorMode)ProxyTorchDispatchModetrack_tensor_tree)_pytreec                   (     e Zd Z fdZ fdZ xZS )ExportTracepointc                 J    t                                          d           d S )N_export_tracepoint)super__init__)self	__class__s    R/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_export/wrappers.pyr   zExportTracepoint.__init__   s"    -.....    c                 6     t                      j        |i |S N)r   __call__)r   argskwargsr   s      r   r   zExportTracepoint.__call__   s    uww0000r   )__name__
__module____qualname__r   r   __classcell__)r   s   @r   r   r      sQ        / / / / /1 1 1 1 1 1 1 1 1r   r   c                     t          j        | j        j        ||f          \  }}| j                            dt
          ||          }t          ||d | j                  S )Ncall_function)constanttracer)pytreetree_mapr#   unwrap_proxycreate_proxyr   r   )moder   r   p_argsp_kwargsproxys         r   export_tracepoint_dispatch_moder,      s]    t{'?$PPFHK$$+VX E T54LLLLr   c                 >    | 5  |cd d d            S # 1 swxY w Y   d S r    )r(   r   r   s      r   "export_tracepoint_fake_tensor_moder/   #   so    	                   s   c                     |                      |          }|                      |          }|                                 5  t          |i |}|                     |          cd d d            S # 1 swxY w Y   d S r   )unwrap_tensorsredispatch_to_nextr   wrap_tensors)ctxr   r   unwrapped_argsunwrapped_kwargsouts         r   export_tracepoint_functionalr8   )   s    ''--N))&11				!	! % % .E4DEE$$% % % % % % % % % % % % % % % % % %s   !A--A14A1T)deferred_errorc                      | S r   r.   )r   r   s     r   export_tracepoint_cpur;   8   s    Kr   c                   	
 t          | t          j        j                  sJ dk    sJ | }                    d          D ]4}t          ||          st          d           t          ||          }5fd
d 		fd}	
fd}|                    |d	          }|	                    |d	          }||fS )
N .z Couldn't find submodule at path c                 p    | v r(|          d         |k    sJ |          d         |k    sJ ||d| <   d S )Nin_specout_spec)r@   rA   r.   )pathr@   rA   module_call_specss      r   update_module_call_signaturesz6_wrap_submodule.<locals>.update_module_call_signaturesF   s^    $$$$T*95@@@@$T*:6(BBBB.58"L"L$r   c           	          | D ]I}t          |t          j        t          t          t
          t          f          s|t          d|           Jd S )NzGOnly Tensors or scalars are supported as pytree flattened inputs, got: )
isinstancetorchTensorstrintfloatboolAssertionError)	flat_argsas     r   check_flattenedz(_wrap_submodule.<locals>.check_flattenedL   s]     	 	Aq5<c5$"GHH AI$a^_aa  	 	r   c                     t          j        ||f          \  }} |           t          |dd}t          j        ||          \  }}||fS )Nmodule_call_inputskindrB   r$   tree_flattenr   tree_unflatten)moduler   r   rN   r@   rP   rB   s        r   pre_hookz!_wrap_submodule.<locals>.pre_hookS   sb    #0$@@	7	"""&	8LSWXXX	,Y@@fV|r   c                     t          j        ||f          \  }}t          j        |          \  }} |           t          |d	d} 
	||           t          j        ||          S )Nmodule_call_outputsrS   rU   )rX   r   r   res_r@   flat_resrA   rP   rB   rD   s           r   	post_hookz"_wrap_submodule.<locals>.post_hookZ   s~    ($88
7#055(!!!%x6KRVWWW%%dGX>>>$Xx888r   T)with_kwargs)
rF   rG   nnModulesplithasattrRuntimeErrorgetattrregister_forward_pre_hookregister_forward_hook)modrB   rC   	submodulenamerY   r_   
pre_handlepost_handlerP   rD   s    ``      @@r   _wrap_submodulern   =   s1   c58?+++++2::::I

3 - -y$'' 	JH$HHIIIIt,,		M M M M M       9 9 9 9 9 9 9 44X44PPJ11)1NNK{""r   c              #      K   g }	 |D ]&}|                     t          | ||                     'd V  |D ]}|                                 d S # |D ]}|                                 w xY wr   )extendrn   remove)fpreserve_signaturemodule_call_signatureshandlesrB   handles         r   _wrap_submodulesrw   g   s      G& 	M 	MDNN?1d4JKKLLLL 	 	FMMOOOO	 	g 	 	FMMOOOO	s   -A A)c                     d }|| _         | S )Nc                 "    t          | |          S r   r   )r   r   s     r   callz'_mark_strict_experimental.<locals>.callu   s    4&&&r   )r   )clsrz   s     r   _mark_strict_experimentalr|   t   s    ' ' ' CLJr   )!
contextlibr   rG   torch._custom_opstorch._Cr   #torch._higher_order_ops.strict_moder   torch._higher_order_ops.utilsr   
torch._opsr   torch._subclasses.fake_tensorr	   "torch.fx.experimental.proxy_tensorr
   r   torch.utilsr   r$   r   r   py_implr,   r/   py_functionalize_implr8   AutogradCPUr;   rn   rw   r|   r.   r   r   <module>r      s   % % % % % %                  ; ; ; ; ; ; B B B B B B * * * * * * 8 8 8 8 8 8 X X X X X X X X ) ) ) ) ) )1 1 1 1 1* 1 1 1 &%''  233M M 43M N++  ,+
 )% % *)% 1   ;/ 0 0/EEE  
 KO,,  -,'# '# '#T 	 	 	    r   