o
    )i	                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZ d dlZd dl	m
Z
 d dlmZmZ d dlmZmZ dd	lmZmZmZ e
eZeG d
d dZeeeeeef ef ZededZG dd dZdS )    N)Mapping)	dataclass)TypeVarUnion)init_logger)	GiB_bytesLRUCache)json_map_leavesjson_reduce_leaves   )MultiModalKwargsMultiModalKwargsItemNestedTensorsc                   @   s$   e Zd ZU eed< edddZdS )MultiModalCacheItemMetadatasizevalueMultiModalCacheValuec                 C   s   | t |dS )N)r   )MultiModalCacheget_item_size)clsr    r   a/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/multimodal/cache.pywraps   s   z!MultiModalCacheItemMetadata.wrapsN)r   r   )__name__
__module____qualname__int__annotations__classmethodr   r   r   r   r   r      s   
 r   _V)boundc                   @   s|   e Zd ZedddededefddZedddededefd	d
Z	eddde
dee dedeeef fddZdS )r   Fdebugleafr"   returnc                C   sr   t |tr| j| |dS t |tr#dd | D }| j||dS t |tjr,|jS t |t	r4|j
S t|S )Nr!   c                 S   s   i | ]\}}||j qS r   )data).0kvr   r   r   
<dictcomp>5   s    z1MultiModalCache.get_leaf_size.<locals>.<dictcomp>)
isinstancer   r   get_datar   itemstorchZTensornbytesr   r   sys	getsizeof)r   r#   r"   Z	leaf_datar   r   r   get_leaf_size(   s   



zMultiModalCache.get_leaf_sizer   c                   s<   t dd t fdd|}rtdt||t  |S )Nc                 S   s   | | S )Nr   )abr   r   r   <lambda>I   s    z/MultiModalCache.get_item_size.<locals>.<lambda>c                        j | dS Nr!   )r1   xr   r"   r   r   r4   J       z$Calculated size of %s to be %.2f GiB)r
   r	   loggerr"   typer   )r   r   r"   r   r   r9   r   r   A   s   zMultiModalCache.get_item_sizecapacity_gb
value_typec                   s   t t|  fdddS )Nc                    r5   r6   )r   r7   r9   r   r   r4   ^   r:   z/MultiModalCache.get_lru_cache.<locals>.<lambda>)r0   )r   r   )r   r=   r>   r"   r   r9   r   get_lru_cacheT   s   zMultiModalCache.get_lru_cacheN)r   r   r   r   objectboolr   r1   r   r   floatr<   r   r   strr?   r   r   r   r   r   &   s<    
r   )r/   collections.abcr   dataclassesr   typingr   r   r-   Zvllm.loggerr   Z
vllm.utilsr   r   Zvllm.utils.jsontreer	   r
   Zinputsr   r   r   r   r;   r   rC   r   r   r   r   r   r   r   <module>   s*   
