
    Ph                         d dl Z d dlmc mZ d dlmZ  G d de j                        Z G d de j                  j                  j                        Zy)    N)return_and_correct_aliasingc                   N    e Zd Zed        Zd Zd Zd Zed        Ze	d        Z
y)	TwoTensorc                    |j                   |j                   k(  rK|j                  |j                  k(  r2|j                  |j                  k(  r|j                  |j                  k(  sJ |j                  }i }|j                         |d<   |j                         |d<   |j                   |d<   |j                  |d<   |j                  |d<   |j                  |d<   t        j                  j                  | |fi |}|j                  |j                  k(  sJ |j                         |j                         k(  sJ |j                         |j                         k(  sJ |S )Nstridesstorage_offsetdevicelayoutrequires_graddtype)
r	   r
   r   r   shapestrider   torchTensor_make_wrapper_subclass)clsabr   kwargsouts         mC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/testing/_internal/two_tensor.py__new__zTwoTensor.__new__   s)    HH AHH$1??2177"		
# HHJy#$#3#3#5 88x88x"#//''wll11#uGGww!''!!!xxzQXXZ'''!Q%5%5%7777
    c                      || _         || _        y N)r   r   )selfr   r   s      r   __init__zTwoTensor.__init__    s    r   c                 h    t        | j                        }t        | j                        }d| d| dS )Nz
TwoTensor(z, ))reprr   r   )r   a_reprb_reprs      r   __repr__zTwoTensor.__repr__$   s1    dffdffF82fXQ//r   c                     ddgd fS Nr   r    )r   s    r   __tensor_flatten__zTwoTensor.__tensor_flatten__)   s    Sz4r   c                 6    |J | d   | d   }}t        ||      S r%   )r   )inner_tensorsmetar   r   s       r   __tensor_unflatten__zTwoTensor.__tensor_unflatten__,   s+    ||S!=#51Ar   c                 r   |i }t        j                  t        d |      }t        j                  t        d |      }t        j                  t        d |      }t        j                  t        d |      } ||i |}	 ||i |}
t        |	      t        |
      k(  sJ t        j                  |	      \  }}t        j
                  |
      }t        ||      D cg c]-  \  }}t        |t        j                        rt        ||      n|/ }}}t        j                  ||      }t        ||||      S c c}}w )Nc                     | j                   S r   r   xs    r   <lambda>z.TwoTensor.__torch_dispatch__.<locals>.<lambda>6       133r   c                     | j                   S r   r   r/   s    r   r1   z.TwoTensor.__torch_dispatch__.<locals>.<lambda>7   r2   r   c                     | j                   S r   r.   r/   s    r   r1   z.TwoTensor.__torch_dispatch__.<locals>.<lambda>9       QSSr   c                     | j                   S r   r4   r/   s    r   r1   z.TwoTensor.__torch_dispatch__.<locals>.<lambda>:   r6   r   )pytreetree_map_onlyr   typetree_flattentree_leaveszip
isinstancer   r   tree_unflattenr   )r   functypesargsr   args_aargs_bkwargs_akwargs_bout_aout_b
out_a_flatspec
out_b_flato_ao_bout_flatr   s                     r   __torch_dispatch__zTwoTensor.__torch_dispatch__2   s%   >F%%iE%%iE''	=&I''	=&If))f))E{d5k)))!..u5
D''.

  
J7
7S $.c5<<#@Ic3cI7 	 
 ##Hd3*4vsCC
s   2D3N)__name__
__module____qualname__staticmethodr   r   r#   r'   r+   classmethodrO   r&   r   r   r   r      sM     .0
   
 D Dr   r   c                       e Zd ZddZy)TwoTensorModeNc                      ||i |}t         j                  j                  j                  |      rt	        ||j                               }|S r   )r   _subclassesfake_tensor_is_tensor_constructorr   clone)r   r@   rA   rB   r   r   s         r   rO   z TwoTensorMode.__torch_dispatch__L   sB    D#F#((??EC-C
r   )r&   N)rP   rQ   rR   rO   r&   r   r   rV   rV   K   s    r   rV   )r   torch.utils._pytreeutils_pytreer8   torch.utils._python_dispatchr   r   r   _python_dispatchTorchDispatchModerV   r&   r   r   <module>rb      sB     $ $ DAD ADHEKK00BB r   