§
    ˜Štj’  ã                   óª   — 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dS )é    )ÚAnyÚDictÚMappingÚOptionalÚTypeVar)ÚquoteÚurlparseÚ
urlunparseN)Ú	ComponentÚSettingsÚSystemc                   óœ  ‡ — 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j        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        | _        |                      ¦   «         | _	        d S ©N)
ÚsuperÚ__init__Úsettingsr   Úchroma_http_keepalive_secsr   r   Úkeepalive_secsÚ_build_limitsÚ_http_limits)Úselfr   Úkeepalive_settingÚ	__class__s      €ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/api/base_http_client.pyr   zBaseHTTPClient.__init__   si   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒØ œNÔEÐð !Ð,ð ÐåÔ6ð 	Ôð
 !×.Ò.Ñ0Ô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   sk   € Ø')ˆØÔÐ*Ø/3Ô/BˆLÐ+Ñ,àœ.ÔDˆØÐ&Ø.=ˆLÐ*Ñ+à$(¤NÔ$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$|                      d¦  «        st          d¦  «        ‚d S d S )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   s‚   € å˜$‘”ˆØ�$ˆ;ˆ;˜6œ=Ð0AÐAÐAÝØK¸6¼=ÐKÐKÐKñô ð ð �$ˆ;ˆ; §¢°Ñ 7Ô 7ˆ;Ýð>ñô ð ð ˆ;ˆ;ˆ;r!   FÚ é@  Úchroma_server_hostÚchroma_server_ssl_enabledÚdefault_api_pathÚchroma_server_http_portc           
      ó  — d}| }t                                |¦  «         |                     d¦  «        rt                               d¦  «         d}t          |¦  «        }|rdn|j        pd}|j        p|j        p| }|sdt          |j
        p|¦  «        z   nd}	|j        p|}
|
r|
|k    r|r|nd}
|
                     |pd¦  «        s	|r|
|z   nd}
t          ||› |	› �t          |
                     dd	¦  «        ¦  «        dddf¦  «        }|S )
NFr3   z/Skipping port as the user is passing a full URLTr4   ú:r;   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_locrH   rI   Úfull_urls               r    Úresolve_urlzBaseHTTPClient.resolve_urlA   sY  € ð ˆ
Ø0ÐÝ×%Ò%Ð&9Ñ:Ô:Ð:Ø×)Ò)¨&Ñ1Ô1ð 	Ý�LŠLÐJÑKÔKÐKØˆJÝÐ-Ñ.Ô.ˆà5ÐR��¸6¼=Ð;RÈFˆØ”-ÐH 6¤?ÐHÐ6HˆàEOÐWˆC•#�f”kÐ<Ð%<Ñ=Ô=Ñ=Ð=ÐUWð 	ð Œ{Ð.Ð.ˆàð 	@�t˜w’�Ø'7Ð?Ð#Ð#¸RˆDØ�}Š}Ð-Ð3°Ñ4Ô4ð 	GØ.>ÐF�4Ð*Ñ*Ð*ÀBˆDÝØ˜Ð' Ð'Ð'­¨t¯|ª|¸DÀ#Ñ/FÔ/FÑ)GÔ)GÈÈRÐQSÐTñ
ô 
ˆð ˆr!   ÚT)ÚboundÚparamsc                 ó>   — d„ |                       ¦   «         D ¦   «         S )z&Remove None values from provided dict.c                 ó   — i | ]
\  }}|®||“ŒS r   r'   )Ú.0ÚkÚvs      r    ú
<dictcomp>z0BaseHTTPClient._clean_params.<locals>.<dictcomp>g   s   € ÐAÐAÐA™˜˜A°1°=��1°=°=°=r!   )Úitems)rS   s    r    Ú_clean_paramszBaseHTTPClient._clean_paramsd   s!   € ð BÐA §¢¡¤ÐAÑAÔAÐAr!   Úrespc                 óf  — 	 |                       ¦   «          dS # t          j        $ r Y nw xY wd}	 t          j        | j        ¦  «        }d|v r]|d         t          j        v rIt          j        |d                  |d         ¦  «        }| j         	                    d¦  «        }|r||_
        n# t          $ r Y nw xY w|r|‚	 |                       ¦   «          dS # t          j        $ rK | 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)r\   Úchroma_errorÚbodyrj   s       r    Ú_raise_chroma_errorz"BaseHTTPClient._raise_chroma_errori   sx  € ð	Ø×!Ò!Ñ#Ô#Ð#ØˆFøÝÔ$ð 	ð 	ð 	ØˆDð	øøøð ˆð	Ý”:˜dœiÑ(Ô(ˆDØ˜$ˆˆØ˜”=¥FÔ$6Ð6Ð6Ý#)Ô#5°d¸7´mÔ#DÀTÈ)Ä_Ñ#UÔ#U�Là#œ|×/Ò/Ð0AÑBÔB�HØð 9Ø08˜Ô-øøåð 	ð 	ð 	ØˆDð	øøøð ð 	ØÐð	)Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#øÝÔ$ð 	)ð 	)ð 	)Ø”|×'Ò'Ð(9Ñ:Ô:ˆHØð GÝ 4¤9Ð EÐ E¸(Ð EÐ EÐ EÑFÔFÐFÝ˜TœYÑ'Ô'Ð(ð		)øøøs+   ‚ ˜*©*°A:B+ Â+
B8Â7B8Ã 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                 ó   — dS )z#Return the API URL for this client.r;   r'   r.   s    r    Úget_api_urlzBaseHTTPClient.get_api_url�   s   € àˆrr!   )Fr;   r<   )!Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   Úfloatr   r   r*   r+   r   Úpropertyr/   ÚstaticmethodrG   r:   r   ÚboolÚintrP   r   r   rQ   r[   ÚResponsero   r   rq   rs   Ú__classcell__)r   s   @r    r   r      s  ø€ € € € € € ØÐÐÑØ!Ð�sÐ!Ð!Ñ!Ø$(Ð˜EÐ(Ð(Ñ(ð	1˜vð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð,˜uœ|ð ,ð ,ð ,ð ,ð ð!˜Uœ\ð !ð !ð !ñ „Xð!ð ð˜Sð  Tð ð ð ñ „\ðð ð 5:Ø*,Ø15ð	ð Øðà#+¨D¤>ðð # 3œ-ðð "*¨#¤ð	ð
 
ðð ð ñ „\ðð@ 	ˆ�˜4  S œ>Ð*Ñ*Ô*€AàðB˜að B Að Bð Bð Bñ „\ðBð ð) %¤.ð )°Tð )ð )ð )ñ „\ð)ðB W¨S°#¨XÔ%6ð ð ð ð ð˜Sð ð ð ð ð ð ð ð r!   r   )Útypingr   r   r   r   r   Úurllib.parser   r	   r
   ÚloggingÚorjsonrc   r*   Úchromadb.errorsrf   Úchromadb.configr   r   r   Ú	getLoggerrt   rC   r   r'   r!   r    ú<module>r†      së   ðØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø €€€Ø Ð Ð Ð Ø €€€à  Ð  Ð  Ð  Ð  Ð  Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à	ˆÔ	˜8Ñ	$Ô	$€ð
Bð Bð Bð Bð B�Yñ Bô Bð Bð Bð Br!   