
    .`i                         d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlZ e
d          Ze G d de	e                               Z G d	 d
ee	e                   ZdS )    )ABCabstractmethod)	dataclass)Path)AnyGenericTypeVarN_Tc                   l    e Zd ZU dZeed<   eed<   dej        fdZ	d Z
deeef         fdZd	efd
ZdS )MediaWithBytesa  
    Wrapper that couples a media object with its original encoded bytes.

    This ensures the raw bytes and media object remain synchronized,
    preventing cache corruption from in-place modifications.

    The wrapper delegates attribute access to the underlying media object,
    making it behave transparently like the wrapped type (e.g., PIL.Image).

    NOTE: Currently, this wrapper is used only for the image modality.
    mediaoriginal_bytesreturnc                 6    t          j        | j        g|R i |S )z2Allow np.array(obj) to return np.array(obj.media).)nparrayr   )selfargskwargss      n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/multimodal/media/base.py	__array__zMediaWithBytes.__array__   s$    x
4T444V444    c                 4    | j                                         S N)__dict__copy)r   s    r   __getstate__zMediaWithBytes.__getstate__#   s    }!!###r   statec                 :    | j                             |           d S r   )r   update)r   r   s     r   __setstate__zMediaWithBytes.__setstate__&   s    U#####r   namec                 ,    t          | j        |          S )z9Delegate attribute access to the underlying media object.)getattrr   )r   r"   s     r   __getattr__zMediaWithBytes.__getattr__)   s    tz4(((r   N)__name__
__module____qualname____doc__r
   __annotations__bytesr   ndarrayr   r   dictstrr   r!   r%    r   r   r   r      s         
 
 III5BJ 5 5 5 5$ $ $$$sCx. $ $ $ $) ) ) ) ) ) )r   r   c                   r    e Zd Zededefd            Zedededefd            Zede	defd            Z
dS )	MediaIOdatar   c                     t           r   NotImplementedError)r   r2   s     r   
load_byteszMediaIO.load_bytes/       !!r   
media_typec                     t           )zm
        List of media types:
        https://www.iana.org/assignments/media-types/media-types.xhtml
        r4   )r   r8   r2   s      r   load_base64zMediaIO.load_base643   s
     "!r   filepathc                     t           r   r4   )r   r;   s     r   	load_filezMediaIO.load_file;   r7   r   N)r&   r'   r(   r   r+   r
   r6   r.   r:   r   r=   r/   r   r   r1   r1   .   s        "u " " " " ^" "c " " " " " ^" "$ "2 " " " ^" " "r   r1   )abcr   r   dataclassesr   pathlibr   typingr   r   r	   numpyr   r
   r   r1   r/   r   r   <module>rC      s    $ # # # # # # # ! ! ! ! ! !       ( ( ( ( ( ( ( ( ( (    WT]] ) ) ) ) )WR[ ) ) )>" " " " "c72; " " " " "r   