
    Ph                        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mZ d dlmZ  e	d	      Zej'                  e      d
        Zej'                  e      d        Zej,                  d        Z ej'                  ej0                         eed             ej'                  ej2                        d        Zd Zed        Zy)    )contextmanagerN)DispatchKey)autograd_not_implemented)HigherOrderOperator)FakeTensorMode)ProxyTorchDispatchModetrack_tensor_tree)_pytree_export_tracepointc                    | j                   st        |i |S t        j                  | j                  j
                  ||f      \  }}| j                  j                  dt        ||      }t        ||d | j                        S )Ncall_function)constanttracer)enable_tracingr   pytreetree_mapr   unwrap_proxycreate_proxyr	   )modeargskwargsp_argsp_kwargsproxys         aC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_export/wrappers.pyexport_tracepoint_dispatch_moder      ss    !42622t{{'?'?$PFHKK$$+VXE T54LL    c                 6    | 5  |cd d d        S # 1 sw Y   y xY wN )r   r   r   s      r   "export_tracepoint_fake_tensor_moder!      s    	 
s   c                     | j                  |      }| j                  |      }| j                         5  t        |i |}| j                  |      cd d d        S # 1 sw Y   y xY wr   )unwrap_tensorsredispatch_to_nextr   wrap_tensors)ctxr   r   unwrapped_argsunwrapped_kwargsouts         r   export_tracepoint_functionalr*   !   sY    ''-N))&1				! .E4DE$ 
"	!	!s   AA"T)deferred_errorc                      | S r   r    )r   r   s     r   export_tracepoint_cpur-   0   s    Kr   c                 ~   t        | t        j                  j                        sJ dk7  sJ | }j	                  d      D ](  }t        ||      st        d       t        ||      }* fdd|j                  vsJ |j                  d fd}|j                  |t        |            |_	        |S )N .z Couldn't find submodule at path c                 "    | vsJ ||d| <   y )N)in_specout_specr    )pathr2   r3   module_call_specss      r   update_module_call_signaturesz6_wrap_submodule.<locals>.update_module_call_signatures>   s"    ,,,,.58"L$r   forwardc           	          | D ]B  }t        |t        j                  t        t        t
        t        f      r3|6t        d|        y )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_flattenedE   sB    Aq5<<c5$"GHAI$]^_]`a  r   c                 :   t        j                  ||f      \  }} |       t        |d	d}t        j                  ||      \  }} |i |}t        j                  |      \  }} |       t        |d	d} 
	||       t        j                  ||      S )Nmodule_call_inputs)kindr4   module_call_outputs)r   tree_flattenr   tree_unflatten)selfr   r   rA   r2   resflat_resr3   rC   r4   r6   wrapped_forwards           r   wrapperz _wrap_submodule.<locals>.wrapperL   s    #00$@	7	"&	8LSWX	,,Y@ft.v.#005(!%x6KRVW%dGX>$$Xx88r   )r9   r:   nnModulesplithasattrRuntimeErrorgetattr__dict__r7   __get__type)	modr4   r5   	submodulenamerN   rC   r6   rM   s	    ``   @@@r   _wrap_submoduler[   5   s    c588??+++2::I

3y$'!A$HIIIt,	  
M I.....''O
9  	4	?CIr   c              #      K   g }	 |D ]  }|j                  t        | ||               d  |D ]  }|j                  d=  y # |D ]  }|j                  d=  w xY ww)Nr7   )appendr[   rU   )fpreserve_signaturemodule_call_signaturestasksr4   rY   s         r   _wrap_submodulesrb   \   sc     E.&DLLD2HIJ 'I""9- I""9- s   A'A AAA)
contextlibr   r:   torch._custom_opstorch._Cr   torch._higher_order_ops.utilsr   
torch._opsr   torch._subclasses.fake_tensorr   "torch.fx.experimental.proxy_tensorr   r	   torch.utilsr
   r   r   py_implr   r!   py_functionalize_implr*   AutogradCPUr-   r[   rb   r    r   r   <module>ro      s    %     B * 8 X ) ))=>  23M 4M N+ ,
 ))% *% 1   ;// 0/E
 KOO, -$N 	. 	.r   