o
    Vh                     @  sH   d dl mZ d dlmZmZmZ d dlZddlmZ G dd deZ	dS )    )annotations)AnyOptionalUnionN   )TVTensorc                   @  s4   e Zd ZdZdddddddZdddddZdS )Videoa  :class:`torch.Tensor` subclass for videos with shape ``[..., T, C, H, W]``.

    Args:
        data (tensor-like): Any data that can be turned into a tensor with :func:`torch.as_tensor`.
        dtype (torch.dtype, optional): Desired data type. If omitted, will be inferred from
            ``data``.
        device (torch.device, optional): Desired device. If omitted and ``data`` is a
            :class:`torch.Tensor`, the device is taken from it. Otherwise, the video is constructed on the CPU.
        requires_grad (bool, optional): Whether autograd should record operations. If omitted and
            ``data`` is a :class:`torch.Tensor`, the value is taken from it. Otherwise, defaults to ``False``.
    Ndtypedevicerequires_graddatar   r
   Optional[torch.dtype]r   'Optional[Union[torch.device, str, int]]r   Optional[bool]returnc                C  s*   | j ||||d}|jdk rt|| S )Nr	      )
_to_tensorndim
ValueErroras_subclass)clsr   r
   r   r   tensor r   Q/var/www/vscode/kcb/lib/python3.10/site-packages/torchvision/tv_tensors/_video.py__new__   s   

zVideo.__new__)tensor_contentsr   strc                C  s   |   S )N)
_make_repr)selfr   r   r   r   __repr__$   s   zVideo.__repr__)
r   r   r
   r   r   r   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc__r   r    r   r   r   r   r   
   s    r   )

__future__r   typingr   r   r   torch
_tv_tensorr   r   r   r   r   r   <module>   s
    