
    Vh                         U d dl Z d dlmZ d dlmZ d dlZdadaeej                     e	d<   d Z
dej                  fdZd	 Zd
 Zd Ze j                  d        Zy)    N)Path)OptionalF_TENSOR_QUEUE_GLOBAL_TESTc                  f    t         ry t                t                t                t	               ada y )NT)_TORCHBIND_IMPLS_INITIALIZEDload_torchbind_test_libregister_fake_operatorsregister_fake_classes_empty_tensor_queuer        W/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/torchbind_impls.pyinit_torchbind_implementationsr      s+     $ 3 5#' r   returnc                      t         j                  j                  j                  t        j                  d      j                  d            S )Nr   )torchclasses_TorchScriptTesting_TensorQueueemptyfill_r   r   r   r   r      s7    ==,,99	

%) r   c                     t         j                  j                  d      d        } t         j                  j                  d      d        }t         j                  j                  d      d        }t         j                  j                  d      d        }d	 }d
 }t        j                  j                  j
                  j                  j                  t         j                  j                  j                        |       t        j                  j                  j                  j                  j                  t         j                  j                  j                        |       t        j                  j                  j                  j                  j                  t         j                  j                  j                        d        y )Nz*_TorchScriptTesting::takes_foo_python_metac                 $    | j                  |      S N
add_tensor)foozs     r   fake_takes_fooz/register_fake_operators.<locals>.fake_takes_foo%   s    ~~a  r   z_TorchScriptTesting::queue_popc                 "    | j                         S r   )poptqs    r   fake_queue_popz/register_fake_operators.<locals>.fake_queue_pop)   s    vvxr   z_TorchScriptTesting::queue_pushc                 $    | j                  |      S r   )push)r$   xs     r   fake_queue_pushz0register_fake_operators.<locals>.fake_queue_push-   s    wwqzr   z_TorchScriptTesting::queue_sizec                 "    | j                         S r   )sizer#   s    r   fake_queue_sizez0register_fake_operators.<locals>.fake_queue_size1   s    wwyr   c                 r    | j                  |      }| j                  |      }| j                  |      }|||gS r   r   )r   r(   abcs        r   meta_takes_foo_list_returnz;register_fake_operators.<locals>.meta_takes_foo_list_return5   s8    NN1NN1NN11ayr   c                 N    | j                  |      }| j                  |      }||fS r   r   )r   r(   r.   r/   s       r   meta_takes_foo_tuple_returnz<register_fake_operators.<locals>.meta_takes_foo_tuple_return;   s'    NN1NN11vr   c                 $    | j                  |      S r   r   )r   r(   s     r   <lambda>z)register_fake_operators.<locals>.<lambda>J   s    s~~a( r   )r   libraryregister_fakeopsr   takes_foo_list_returndefaultpy_impl_CDispatchKeyMetatakes_foo_tuple_return	takes_foo)r    r%   r)   r,   r1   r3   s         r   r	   r	   $   s^   
]]  !MN! O! ]]  !AB C ]]  !BC D ]]  !BC D
 
II!!77??GG!! " 
II!!88@@HH!!!# 
II!!++33;;EHH<P<P<U<UV(r   c                      t         j                  j                  d       G d d             } t         j                  j                  d       G d d             }y )Nz_TorchScriptTesting::_Fooc                   2    e Zd ZdedefdZed        Zd Zy)&register_fake_classes.<locals>.FakeFoor(   yc                      || _         || _        y r   r(   rD   )selfr(   rD   s      r   __init__z/register_fake_classes.<locals>.FakeFoo.__init__R   s    DFDFr   c                 $     | di t        |      S Nr   dictclsflattend_foos     r   __obj_unflatten__z8register_fake_classes.<locals>.FakeFoo.__obj_unflatten__V       ,l+,,r   c                 :    | j                   | j                  z   |z  S r   rF   )rG   r   s     r   r   z1register_fake_classes.<locals>.FakeFoo.add_tensorZ   s    FFTVVOq((r   N)__name__
__module____qualname__intrH   classmethodrP   r   r   r   r   FakeFoorC   P   s.    	c 	c 	 
	- 
	-	)r   rX   z$_TorchScriptTesting::_ContainsTensorc                   B    e Zd Zdej                  fdZed        Zd Zy)1register_fake_classes.<locals>.FakeContainsTensortc                     || _         y r   r[   )rG   r[   s     r   rH   z:register_fake_classes.<locals>.FakeContainsTensor.__init___   s	    DFr   c                 $     | di t        |      S rJ   rK   rM   s     r   rP   zCregister_fake_classes.<locals>.FakeContainsTensor.__obj_unflatten__b   rQ   r   c                     | j                   S r   r]   )rG   s    r   getz5register_fake_classes.<locals>.FakeContainsTensor.getf   s    66Mr   N)	rS   rT   rU   r   TensorrH   rW   rP   r`   r   r   r   FakeContainsTensorrZ   ]   s+    	ell 	 
	- 
	-	r   rb   )r   _libraryregister_fake_class)rX   rb   s     r   r
   r
   N   sT    
^^''(CD
) 
) E
) ^^''(NO	 	 P	r   c                      dd l } ddlm}m}m}m}m} |r| j                  d      |s|rt        d      }n|r	 |d      }n |d      }t        j                  j                  t        |             y )Nr   )find_library_location	IS_FBCODEIS_MACOSIS_SANDCASTLE
IS_WINDOWSz+non-portable load_library call used in testz5//caffe2/test/cpp/jit:test_custom_class_registrationsztorchbind_test.dllzlibtorchbind_test.so)unittest$torch.testing._internal.common_utilsrf   rg   rh   ri   rj   SkipTestr   r   r8   load_librarystr)rk   rf   rg   rh   ri   rj   lib_file_paths          r   r   r   j   sf       MNN	)TU	-.BC-.DE	II3}-.r   c              #      K   	  | j                  |      |       d  | j                  |= | j                  j                          y # | j                  |= | j                  j                          w xY wwr   )r;   
py_kernels_dispatch_cacheclear)op_overloadkeyfns      r   _register_py_impl_temporarilyrx      sf     , C $""3'##))+ ""3'##))+s   A3A (A3)A00A3)
contextlibpathlibr   typingr   r   r   r   ScriptObject__annotations__r   r   r	   r
   r   contextmanagerrx   r   r   r   <module>r      sp         % :> 8E$6$67 >
(U// 'T8/, , ,r   