Ë
    lQêj’  ã                   ó¦   — d dl mZ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mZmZ  e
j(                  e«      Z G d„ de«      Zy)é    )ÚAnyÚDictÚMappingÚOptionalÚTypeVar)ÚquoteÚurlparseÚ
urlunparseN)Ú	ComponentÚSettingsÚSystemc                   óx  ‡ — e Zd ZU eed<   dZeed<   dZeed<   de	fˆ fd„Z
dej                  fd	„Zedej                  fd
„«       Z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j6                  ddfd„«       Zdeeef   fd„Zdefd„Zˆ xZ S )ÚBaseHTTPClientÚ	_settingsNÚpre_flight_checksg      D@ÚDEFAULT_KEEPALIVE_SECSÚsystemc                 óÎ   •— t         ‰| �  |«       |j                  | _        | j                  j                  }|�|nt
        j                  | _        | j                  «       | _	        y ©N)
ÚsuperÚ__init__Úsettingsr   Úchroma_http_keepalive_secsr   r   Úkeepalive_secsÚ_build_limitsÚ_http_limits)Úselfr   Úkeepalive_settingÚ	__class__s      €úb/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/api/base_http_client.pyr   zBaseHTTPClient.__init__   s\   ø€ Ü‰Ñ˜Ô ØŸ™ˆŒØ ŸN™N×EÑEÐð !Ð,ñ ä×6Ñ6ð 	Ôð
 !×.Ñ.Ó0ˆÕó    Úreturnc                 óÚ   — i }| j                   �| j                   |d<   | j                  j                  }|�||d<   | j                  j                  }|�||d<   t	        j
                  di |¤ŽS )NÚkeepalive_expiryÚmax_connectionsÚmax_keepalive_connections© )r   r   Úchroma_http_max_connectionsÚ%chroma_http_max_keepalive_connectionsÚhttpxÚLimits)r   Úlimit_kwargsr%   r&   s       r    r   zBaseHTTPClient._build_limits   sw   € Ø')ˆØ×ÑÐ*Ø/3×/BÑ/BˆLÐ+Ñ,àŸ.™.×DÑDˆØÐ&Ø.=ˆLÐ*Ñ+à$(§N¡N×$XÑ$XÐ!Ø$Ð0Ø8QˆLÐ4Ñ5ä�|‰|Ñ+˜lÑ+Ð+r!   c                 ó   — | j                   S r   )r   ©r   s    r    Úhttp_limitszBaseHTTPClient.http_limits.   s   € à× Ñ Ð r!   Úhostc                 ó²   — 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 - ú.r3   zŸInvalid 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)r0   Úparseds     r    Ú_validate_hostzBaseHTTPClient._validate_host2   sh   € ä˜$“ˆØ�$‰;˜6Ÿ=™=Ð0AÑAÜØ:¸6¿=¹=¸/ÈÐKóð ð �$‰; §¡°Ô 7Üð>óð ð !8ˆ;r!   Ú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 )
NFr3   z/Skipping port as the user is passing a full URLTr4   ú:Ú z//r2   )r   r:   r8   ÚloggerÚdebugr	   r6   ÚnetlocÚhostnameÚstrÚportÚpathÚendswithr
   r   Úreplace)r;   r<   r=   r>   Ú
_skip_portÚ_chroma_server_hostr9   r6   Únet_locrG   rH   Úfull_urls               r    Úresolve_urlzBaseHTTPClient.resolve_urlA   s  € ð ˆ
Ø0ÐÜ×%Ñ%Ð&9Ô:Ø×)Ñ)¨&Ô1Ü�L‰LÐJÔKØˆJÜÐ-Ó.ˆá5‘¸6¿=¹=Ò;RÈFˆØ—-‘-ÒH 6§?¡?ÒHÐ6HˆáEOˆC”#�f—k‘kÒ<Ð%<Ó=Ò=ÐUWð 	ð �{‰{Ò.Ð.ˆá�t˜w’Ù'7Ñ#¸RˆDØ�}‰}Ð-Ò3°Ô4Ù.>�4Ð*Ò*ÀBˆDÜØ˜�y  Ð'¬¨t¯|©|¸DÀ#Ó/FÓ)GÈÈRÐQSÐTó
ˆð ˆr!   ÚT)ÚboundÚparamsc                 ó\   — | j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}S c c}}w )z&Remove None values from provided dict.)Úitems)rR   ÚkÚvs      r    Ú_clean_paramszBaseHTTPClient._clean_paramsd   s*   € ð "(§¡£×A™˜˜A°1±=��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_statusr*   ÚHTTPStatusErrorÚjsonÚloadsÚtextÚerrorsÚerror_typesÚheadersÚgetÚtrace_idÚBaseExceptionÚ	Exception)rX   Úchroma_errorÚbodyrf   s       r    Ú_raise_chroma_errorz"BaseHTTPClient._raise_chroma_errori   s(  € ð	Ø×!Ñ!Ô#ØøÜ×$Ñ$ò 	Ùð	úð ˆð	Ü—:‘:˜dŸi™iÓ(ˆDØ˜$‰Ø˜‘=¤F×$6Ñ$6Ñ6Ü#)×#5Ñ#5°d¸7±mÑ#DÀTÈ)Á_Ó#U�Là#Ÿ|™|×/Ñ/Ð0AÓB�HÙØ08˜Ô-ùäò 	Ùð	úñ ØÐð	)Ø×!Ñ!Õ#øÜ×$Ñ$ò 	)Ø—|‘|×'Ñ'Ð(9Ó:ˆHÙÜ 4§9¡9 +¨\¸(¸À1Ð EÓFÐFÜ˜TŸY™YÓ'Ð(ð		)ús+   ‚ “)¨)¯A:B* Â*	B6Â5B6Â>C ÃA!D0c                 ó   — i S )z&Return headers used for HTTP requests.r'   r.   s    r    Úget_request_headersz"BaseHTTPClient.get_request_headers‹   s   € àˆ	r!   c                  ó   — y)z#Return the API URL for this client.rA   r'   r.   s    r    Úget_api_urlzBaseHTTPClient.get_api_url�   s   € àr!   )FrA   i@  )!Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   Úfloatr   r   r*   r+   r   Úpropertyr/   ÚstaticmethodrF   r:   r   ÚboolÚintrO   r   r   rP   rW   ÚResponserk   r   rm   ro   Ú__classcell__)r   s   @r    r   r      sX  ø… ØÓØ!Ð�sÓ!Ø$(Ð˜EÓ(ð	1˜võ 	1ð,˜uŸ|™|ó ,ð ð!˜UŸ\™\ò !ó ð!ð ð˜Sð  Tò ó ðð ð 5:Ø*,Ø15ñ	Øðà#+¨D¡>ðð # 3™-ðð "*¨#¡ð	ð
 
òó ðñ@ 	�˜4  S ™>Ô*€AàðB˜að B Aò Bó ðBð ð) %§.¡.ð )°Tò )ó ð)ðB W¨S°#¨XÑ%6ó ð˜S÷ r!   r   )Útypingr   r   r   r   r   Úurllib.parser   r	   r
   ÚloggingÚorjsonr_   r*   Úchromadb.errorsrb   Úchromadb.configr   r   r   Ú	getLoggerrp   rB   r   r'   r!   r    ú<module>r‚      sC   ðß 8Õ 8ß 4Ñ 4Û Û Û å  ß 7Ñ 7à	ˆ×	Ñ	˜8Ó	$€ô
B�Yõ Br!   