
    ugM                         d dl mZmZmZmZ d dlmZmZmZ d dl	Z	d dl
Zd dlZd dlmZ d dlmZ  e	j"                  e      Z G d d      Zy)    )AnyDictOptionalTypeVar)quoteurlparse
urlunparseN)Settingsc                       e Zd ZU eed<   dZeed<   ededdfd       Z	e	 	 	 dded	e
e   d
e
e   de
e   def
d       Z edeeef         Zededefd       Zedej&                  ddfd       Zy)BaseHTTPClient	_settings_max_batch_sizehostreturnNc                     t        |       }d| v r'|j                  dvrt        d|j                   d      d| v r| j                  d      st        d      y y )N/>   httphttpsz%Invalid URL. Unrecognized protocol - .r   zInvalid URL. Seems that you are trying to pass URL as a host but without                   specifying the protocol. Please add http:// or https:// to the host.)r   scheme
ValueError
startswith)r   parseds     R/var/www/openai/venv/lib/python3.12/site-packages/chromadb/api/base_http_client.py_validate_hostzBaseHTTPClient._validate_host   sh    $$;6==0AA:6==/K  $; 7>  !8;    chroma_server_hostchroma_server_ssl_enableddefault_api_pathchroma_server_http_portc           
         d}| }t         j                  |       |j                  d      rt        j	                  d       d}t        |      }|rdn|j                  xs d}|j                  xs |j                  xs | }|sdt        |j                  xs |      z   nd}	|j                  xs |}
|
r|
|k(  r|r|nd}
|
j                  |xs d      s	|r|
|z   nd}
t        || |	 t        |
j                  dd	            dddf      }|S )
NFr   z/Skipping port as the user is passing a full URLTr   : z//r   )r   r   r   loggerdebugr   r   netlochostnamestrportpathendswithr	   r   replace)r   r   r    r!   
_skip_port_chroma_server_hostr   r   net_locr*   r+   full_urls               r   resolve_urlzBaseHTTPClient.resolve_url    s    
0%%&9:))&1LLJKJ-.56==;RF--H6??H6HEOC#fkk<%<==UW 	 {{..tw'7#RD}}-34.>4**BDy't||D#/F)GRQST
 r   T)boundparamsc                 \    | j                         D ci c]  \  }}|	|| c}}S c c}}w )z&Remove None values from provided dict.)items)r5   kvs      r   _clean_paramszBaseHTTPClient._clean_paramsC   s.     "(AA1=1AAAs   
((respc                 f   	 | j                          y# t        j                  $ r Y nw xY wd}	 t        j                  | j
                        }d|v rW|d   t        j                  v rBt        j                  |d      |d         }| j                  j                  d      }|r||_
        n# t        $ r Y nw xY w|r|	 | j                          y# t        j                  $ rN | j                  j                  d      }|rt        | j
                   d| d      t        | j
                        w xY w)zKRaises an error if the response is not ok, using a ChromaError if possible.Nerrormessagezchroma-trace-idz (trace ID: ))raise_for_statushttpxHTTPStatusErrorjsonloadstexterrorserror_typesheadersgettrace_idBaseException	Exception)r;   chroma_errorbodyrJ   s       r   _raise_chroma_errorz"BaseHTTPClient._raise_chroma_errorH   s(   	!!#$$ 		 	::dii(D$=F$6$66#)#5#5d7m#DT)_#UL#||//0ABH08- 		 	)!!#$$ 	)||''(9:H499+\(1 EFFTYY'(		)s+    ))A:B* *	B65B6>C A!D0)Fr$   i@  )__name__
__module____qualname__r
   __annotations__r   intstaticmethodr)   r   r   boolr2   r   r   r   r3   r:   rA   ResponserO    r   r   r   r      s    OSS T    5:*,15	#+D> #3- "*#	
 
 @ 	4S>*ABa BA B B )%.. )T ) )r   r   )typingr   r   r   r   urllib.parser   r   r	   loggingorjsonrC   rA   chromadb.errorsrF   chromadb.configr
   	getLoggerrP   r%   r   rX   r   r   <module>r`      s>    / / 4 4      $			8	$[) [)r   