
    Ph                     r   U d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZ e	eeee   ee   df   Zeee      ZdedefdZi Zeeeeef   f   ed<   d Zd	d
dZd Zej0                  j3                         D  ch c]"  }  e| e      s e| ej:                        s!| $ c} Zd ZdddZ d Z!yc c} w )    N)AnyCallableDictListOptionalSequenceTypeUnion)
tv_tensorsinptreturnc                 p    t        | t        j                        xr t        | t        j                         S N)
isinstancetorchTensorr   TVTensor)r   s    vC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torchvision/transforms/v2/functional/_utils.pyis_pure_tensorr      s(    dELL)W*T:CVCV2W.WW    _KERNEL_REGISTRYc                 B     t        j                          fd       }|S )Nc                      | j                  t        j                        g|i |}t        j                  ||       S )Nlike)as_subclassr   r   r   wrap)r   argskwargsoutputkernels       r   wrapperz*_kernel_tv_tensor_wrapper.<locals>.wrapper   s9     ((6HHHvD11r   	functoolswrapsr!   r"   s   ` r   _kernel_tv_tensor_wrapperr'      s%    __V2 2 Nr   Ttv_tensor_wrapperc                r    t         j                  | i       v rt        d|  d d      fd}|S )NzFunctional z* already has a kernel registered for type .c                 `    t        t        j                        rrt        |       n| <   | S r   )
issubclassr   r   r'   )r!   
input_typeregistryr)   s    r   	decoratorz,_register_kernel_internal.<locals>.decorator*   s6     *j&9&9:?P &f- 	
 r   )r   
setdefault
ValueError)
functionalr.   r)   r0   r/   s    `` @r   _register_kernel_internalr4   %   sH    **:r:HX;zl2\]g\hhijkk r   c                     dd l }	 t        |j                  j                  j                  |       S # t
        $ r t        d|  d      d w xY w)Nr   z%Could not find functional with name 'z*' in torchvision.transforms.v2.functional.)$torchvision.transforms.v2.functionalgetattr
transformsv2r3   AttributeErrorr2   )nametorchvisions     r   _name_to_functionalr=   5   sU    /{--00;;TBB 3D69cd
	s	   )0 A
c                 b   t        | t              rt        |       } n6t        |       rt	        | dd      j                  d      st        d|  d      t        |t              rt        |t        j                        st        d| d      |t        v rt        d|       t        | |d	
      S )zDecorate a kernel to register it for a functional and a (custom) tv_tensor type.

    See :ref:`sphx_glr_auto_examples_transforms_plot_custom_tv_tensors.py` for usage
    details.
    )r;   
__module__ z$torchvision.transforms.v2.functionalzoKernels can only be registered on functionals from the torchvision.transforms.v2.functional namespace, but got r+   zZKernels can only be registered for subclasses of torchvision.tv_tensors.TVTensor, but got zHKernels cannot be registered for the builtin tv_tensor classes, but got Fr(   )r   strr=   callabler7   
startswithr2   typer-   r   r   _BUILTIN_DATAPOINT_TYPESr4   )r3   tv_tensor_clss     r   register_kernelrG   E   s     *c"(j9
Jb1<<=cd!l!%
 	

 }d+
=*J]J]0^$oQ(
 	

 00cdqcrstt$ZRWXXr   F)allow_passthroughc          	      &   t         j                  |       }|st        d| j                   d      |j                  D ]!  }||v r||   c S |t
        j                  u s! n |rd S t        d| j                   d|j                          d| d      )Nz$No kernel registered for functional r+   c                     | S r    )r   r   r   s      r   <lambda>z_get_kernel.<locals>.<lambda>q   s    Tr   zFunctional F.z supports inputs of type z
, but got z	 instead.)	r   getr2   __name____mro__r   r   	TypeErrorkeys)r3   r.   rH   r/   clss        r   _get_kernelrS   b   s    ##J/H?
@S@S?TTUVWW!!(?C= J'''  " 11


++,,EhmmoEV W,i	) r   c                 x    t         j                  | i       v rt        d|  d d      d fd}|S )NzFunctional 'z,' already has a kernel registered for type 'z'.c                 B     t        j                          fd       }|S )Nc                 V       g|i |}t        |      } | fd|D              S )Nc              3   L   K   | ]  }t        j                  |         yw)r   N)r   r   ).0or   s     r   	<genexpr>zY_register_five_ten_crop_kernel_internal.<locals>.wrap.<locals>.wrapper.<locals>.<genexpr>   s      !PA*//!$"?"?s   !$)rD   )r   r   r   r    container_typer!   s   `    r   r"   zF_register_five_ten_crop_kernel_internal.<locals>.wrap.<locals>.wrapper   s1    D24262F!&\N!!P!PPPr   r#   r&   s   ` r   r   z5_register_five_ten_crop_kernel_internal.<locals>.wrap   s'    		 	Q 
!	Q
 r   c                 V    t        t        j                        r |       n| <   | S r   )r-   r   r   )r!   r.   r/   r   s    r   r0   z:_register_five_ten_crop_kernel_internal.<locals>.decorator   s(    /9*jFYFY/ZtF|`fr   )r   r1   rP   )r3   r.   r0   r/   r   s    ` @@r   '_register_five_ten_crop_kernel_internalr]   {   sM    **:r:HX,zl2^_i^jjlmnn r   )"r$   typingr   r   r   r   r   r   r	   r
   r   r<   r   intfloat	_FillType_FillTypeJITboolr   r   __annotations__r'   r4   r=   __dict__valuesr   rD   r-   r   rE   rG   rS   r]   )objs   0r   <module>rh      s     M M M  "#uhsmXe_dBC	U$X X X
 :< $xdHn!556 ;$ LP   &&--//C:c43HZX[]g]p]pMqC/ 
Y: >C 2ws   =B4B4 B4