o
    -i                     @   s\   d dl mZmZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z G dd dZe ZdS )    )MappingMutableMapping)PathN)	parse_url)__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dedededB deeef dB def
ddZdddddededB deeef dB defddZddddededB dedefdd ZddddededB dedefd!d"Zdd#dededB defd$d%Zdd#dededB defd&d'Zdd#dededB defd(d)Zdd#dededB defd*d+Zdd,d-ded.ededB d/edef
d0d1Zdd,d-ded.ededB d/edef
d2d3Z  ZS )4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__ M/home/ubuntu/veenaModal/venv/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_headersallow_redirectsr&   r'   r(   r)   c                C   s:   |  | |  }|pi }|j|| jdi ||||dS )N)headersr&   r'   r)   r   )r"   r   getr%   )r   r   r&   r'   r(   r)   clientr   r   r   get_response2   s   
	zHTTPConnection.get_response)r'   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   r   r   get_async_responseH   s   
z!HTTPConnection.get_async_responser'   r)   c                C   sB   | j |||d}|  |jW  d    S 1 sw   Y  d S Nr/   )r-   raise_for_statuscontentr   r   r'   r)   rr   r   r   	get_bytes\   s   $zHTTPConnection.get_bytesc             	      sf   | 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 r0   )r.   r1   readr3   r   r   r   async_get_bytesf   s   0zHTTPConnection.async_get_bytesr'   c                C   s@   | j ||d}|  |jW  d    S 1 sw   Y  d S Nr8   )r-   r1   textr   r   r'   r4   r   r   r   get_textt   s   $zHTTPConnection.get_textc             	      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 r9   )r.   r1   r:   r;   r   r   r   async_get_textz   
   0zHTTPConnection.async_get_textc                C   sB   | j ||d}|  | W  d    S 1 sw   Y  d S r9   )r-   r1   jsonr;   r   r   r   get_json   s   $zHTTPConnection.get_jsonc             	      r=   r9   )r.   r1   r@   r;   r   r   r   async_get_json   r?   zHTTPConnection.async_get_json   )r'   
chunk_size	save_pathrD   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 Nr8   wb)r-   r1   openiter_contentwriter   r   rE   r'   rD   r4   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 rF   )r.   r1   rH   r2   iter_chunkedrJ   rK   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%   floatr   r-   r.   bytesr5   r7   r<   r>   rA   rB   r   intrN   rP   __classcell__r   r   r   r   r      s    



 

 


r   )collections.abcr   r   pathlibr   r   r   urllib3.utilr   vllm.versionr   r$   r   global_http_connectionr   r   r   r   <module>   s    ,