o
    )i                     @   sh   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlmZ G dd dZe ZdS )	    )MappingMutableMapping)Path)Optional)urlparseN)__version__c                       s  e Zd ZdZdddeddf fddZdejfd	d
Zde	j
fddZdefddZdedeeef fddZdddddededee deeeef  fddZddddedee deeeef  fddZdddedee defddZdddedee defd d!Zdddedee defd"d#Zdddedee defd$d%Zdddedee defd&d'Zdddedee defd(d)Zdd*d+ded,edee d-edef
d.d/Zdd*d+ded,edee d-edef
d0d1Z  Z S )2HTTPConnectionz#Helper class to send HTTP requests.T)reuse_clientr	   returnNc                   s    t    || _d | _d | _d S N)super__init__r	   _sync_client_async_client)selfr	   	__class__ \/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/connections.pyr      s   

zHTTPConnection.__init__c                 C   s    | j d u s| jst | _ | j S r   )r   r	   requestsSessionr   r   r   r   get_sync_client   s   
zHTTPConnection.get_sync_clientc                    s&   | j d u s	| jstjdd| _ | j S )NT)	trust_env)r   r	   aiohttpClientSessionr   r   r   r   get_async_client"   s   zHTTPConnection.get_async_clienturlc                 C   s   t |}|jdvrtdd S )N)httphttpszFInvalid HTTP URL: A valid HTTP URL must have scheme 'http' or 'https'.)r   scheme
ValueError)r   r   
parsed_urlr   r   r   _validate_http_url(   s   
z!HTTPConnection._validate_http_urlextrasc                 K   s   ddt  i|S )Nz
User-AgentzvLLM/)VLLM_VERSION)r   r$   r   r   r   _headers/   s   zHTTPConnection._headersF)streamtimeoutextra_headersr'   r(   r)   c                C   s8   |  | |  }|pi }|j|| jdi |||dS )N)headersr'   r(   r   )r#   r   getr&   )r   r   r'   r(   r)   clientr   r   r   get_response2   s   
zHTTPConnection.get_response)r(   r)   c                   s>   |  | |  I d H }|pi }|j|| jdi ||dS )N)r*   r(   r   )r#   r   r+   r&   )r   r   r(   r)   r,   r   r   r   get_async_responseD   s   
z!HTTPConnection.get_async_responser(   c                C   @   | j ||d}|  |jW  d    S 1 sw   Y  d S Nr/   )r-   raise_for_statuscontentr   r   r(   rr   r   r   	get_bytesT      $zHTTPConnection.get_bytesc             	      d   | j ||dI d H 4 I d H }|  | I d H W  d   I d H  S 1 I d H s+w   Y  d S r1   )r.   r2   readr4   r   r   r   async_get_bytesZ   
   0zHTTPConnection.async_get_bytesc                C   r0   r1   )r-   r2   textr4   r   r   r   get_texte   r7   zHTTPConnection.get_textc             	      r8   r1   )r.   r2   r<   r4   r   r   r   async_get_textk   r;   zHTTPConnection.async_get_textc                C   sB   | j ||d}|  | W  d    S 1 sw   Y  d S r1   )r-   r2   jsonr4   r   r   r   get_jsonv   s   $zHTTPConnection.get_jsonc             	      r8   r1   )r.   r2   r?   r4   r   r   r   async_get_json|   r;   zHTTPConnection.async_get_json   )r(   
chunk_size	save_pathrC   c             	   C   s   | j ||d7}|  |d}||D ]}|| qW d    n1 s)w   Y  W d    |S W d    |S 1 sAw   Y  |S Nr/   wb)r-   r2   openiter_contentwriter   r   rD   r(   rC   r5   fchunkr   r   r   download_file   s   

zHTTPConnection.download_filec             	      s   | j ||dI d H 4 I d H 8}|  |d}|j|2 z3 d H W }|| q 6 W d    n1 s7w   Y  W d   I d H  |S 1 I d H sMw   Y  |S rE   )r.   r2   rG   r3   Ziter_chunkedrI   rJ   r   r   r   async_download_file   s   z"HTTPConnection.async_download_file)!__name__
__module____qualname____doc__boolr   r   r   r   r   r   r   strr#   r   r&   r   floatr   r-   r.   bytesr6   r:   r=   r>   r@   rA   r   intrM   rN   __classcell__r   r   r   r   r      s    

 

 

 


r   )collections.abcr   r   pathlibr   typingr   urllib.parser   r   r   Zvllm.versionr   r%   r   Zglobal_http_connectionr   r   r   r   <module>   s    