
    LKi@                     <   S SK r S SKJrJrJrJrJrJr  S SKJ	r	J
r
  S SKrS SKJrJr  S SKJr  S SKrS SKJr  S SKrS SKrS SKr\R.                  S\\SS4   4S j5       r\R.                  S\\SS4   4S	 j5       r\S
\4   r\R.                  " SS/S9S\R6                  S\\SS4   4S j5       r\R.                  " 5       S\S\\SS4   4S j5       rS\SS4S jrS\SS4S jrS\SS4S jr S\SS4S jr!S\SS4S jr"S\\S
\4   \\#\4   4   4S jr$SS jr%g)    N)AnyCallable	GeneratorcastDictTuple)	MagicMockpatch)SettingsSystem)	ClientAPI)FastAPIreturnc               #      #    [         R                  R                  S5      (       a  [        R                  " S5        [
        R                  " 5       n U v   U R                  5         g 7f)NCHROMA_INTEGRATION_TEST_ONLYIntegration test only)osenvirongetpytestskipchromadbEphemeralClientclear_system_cacheclients    [/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/test/test_client.pyephemeral_apir      sE     	zz~~455+,%%'F
L
s   A%A'c               #      #    [         R                  R                  S5      (       a  [        R                  " S5        [
        R                  " [        R                  " 5       S-   S9n U v   U R                  5         g 7f)Nr   r   z/test_server)path)
r   r   r   r   r   r   PersistentClienttempfile
gettempdirr   r   s    r   persistent_apir$      sZ     	zz~~455+,&&  "^3F L
s   A:A<.sync_clientasync_client)paramsrequestc              #     #    U R                   S:X  a;  [        S5         [        S5         [        R                  v   S S S 5        S S S 5        g [        S5         [        S5         S[        S[        S[        4S	 jn[        [        U5      v   S S S 5        S S S 5        g ! , (       d  f       Ni= f! , (       d  f       g = f! , (       d  f       N9= f! , (       d  f       g = f7f)
Nr%   z4chromadb.api.client.Client._validate_tenant_databasez,chromadb.api.client.Client.get_user_identityz?chromadb.api.async_client.AsyncClient._validate_tenant_databasez7chromadb.api.async_client.AsyncClient.get_user_identityargskwargsr   c                  v    [         R                  " 5       R                  [        R                  " U 0 UD65      nU$ N)asyncioget_event_looprun_until_completer   AsyncHttpClient)r*   r+   clss      r   factory!http_api_factory.<locals>.factory1   s5    !002EE 00$A&AC J    )paramr
   r   
HttpClientr   r   HttpAPIFactory)r(   r3   s     r   http_api_factoryr9   %   s      }}%IJEF))) G KJ TUPQ3 # #  >733 R VU GF KJ
 RQ VUsb   C$B1B B1C$C%*CC	C$ 
B.	*B11
B?;C$
C	C
C!C$r9   c              #      #    [         R                  R                  S5      b/  [        [         R                  R                  S5      5      nU " US9nOU " 5       nUv   UR	                  5         g 7f)NCHROMA_SERVER_HTTP_PORT)port)r   r   r   intr   )r9   r<   r   s      r   http_apir>   :   sT     	zz~~/0<2::>>";<=!t,!#
L
s   A,A.r   c                 F    U R                  5       nUR                  SL d   eg )NFget_settingsis_persistent)r   settingss     r   test_ephemeral_clientrD   E   s$    ))+H!!U***r5   r$   c                 F    U R                  5       nUR                  SL d   eg )NTr@   )r$   rC   s     r   test_persistent_clientrF   J   s$    **,H!!T)))r5   r>   c                 j    U R                  5       nUR                  S:X  d  UR                  S:X  d   eg g )Nchromadb.api.fastapi.FastAPIz'chromadb.api.async_fastapi.AsyncFastAPI)rA   chroma_api_impl)r>   rC   s     r   test_http_clientrJ   O   sB    $$&H  $BB##'PP	QP 	Cr5   c                 p     U " [        SS9S9  g ! [         a  n[        U5      S:X  d   e S nAg S nAff = f)Nz	127.0.0.1)chroma_server_host)rC   znChroma server host provided in settings[127.0.0.1] is different to the one provided in HttpClient: [localhost]r   
ValueErrorstrr9   es     r   0test_http_client_with_inconsistent_host_settingsrR   W   s?    
(k"JK 
F@	
@
s    
505c                 r     U " S[        SS9S9  g ! [         a  n[        U5      S:X  d   e S nAg S nAff = f)NiB  iA  )chroma_server_http_port)r<   rC   ziChroma server http port provided in settings[8001] is different to the one provided in HttpClient: [8002]rM   rP   s     r   0test_http_client_with_inconsistent_port_settingsrU   c   sJ    
(,	
  
Fz{	
{
s    
616c                  D   ^ 0 mS[         S[         S[         4U4S jjn U T4$ )N_r+   r   c                  L   > TR                  U5        [        5       n0 Ul        U$ r-   )updater	   headers)rW   r+   sessioncaptureds      r   r3   )make_sync_client_factory.<locals>.factoryx   s"    +r5   )r   )r3   r\   s    @r   make_sync_client_factoryr^   t   s/    !HC 3 3  Hr5   c            
         [        SSSSSSSS9n [        U 5      n[        5       u  p#[        R                  " [
        S	[        5       [        5       /S
9   [        SUS
9   [        U5      nS S S 5        S S S 5        WR                  5         US   nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUS   b   eUS   SL d   eg ! , (       d  f       Nt= f! , (       d  f       N}= f)NrH   	localhosti(#  Tg      )@@      )rI   rL   rT   chroma_server_ssl_verifychroma_http_keepalive_secschroma_http_max_connections%chroma_http_max_keepalive_connectionsrequire)side_effectz!chromadb.api.fastapi.httpx.Clientlimitstimeoutverify)r   r   r^   r
   objectr   r	   stopkeepalive_expirymax_connectionsmax_keepalive_connections)rC   systemr3   r\   apiri   s         r   +test_fastapi_uses_http_limits_from_settingsrs      s    6& $!%#'$&.0H HF02G	gyy{IK6P	Q6GL&/C M 
R HHJhF""d***!!R'''++r111I&&&H%%% ML 
R	Qs$   C)C*C)
C&	"C))
C7)r   N)&r.   typingr   r   r   r   r   r   unittest.mockr	   r
   r   chromadb.configr   r   chromadb.apir   chromadb.server.fastapichromadb.api.fastapir   r   r"   r   fixturer   r$   r8   FixtureRequestr9   r>   rD   rF   rJ   rR   rU   rO   r^   rs    r5   r   <module>r}      s    > > *  , "  (   	  yD$!67      	)T4"78     #y.) ~674""4~tT)*4 84(  ~  )ItT<Q2R    + +t +
*9 * *
y T 	
$	
		

$
	
"
%c(:DcN(J"K 
&r5   