
    ugR                        d dl Z d dlmZmZmZmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlZd dlZd dlZej                   deeddf   fd       Zej                   deeddf   fd       Zed	ef   Z ej                   d
dg      dej(                  deeddf   fd       Z ej                          dedeeddf   fd       ZdeddfdZdeddfdZdeddfdZdeddfdZdeddfdZy)    N)AnyCallable	Generatorcast)patch)Settings)	ClientAPIreturnc               #   \   K   t        j                         } |  | j                          y wN)chromadbEphemeralClientclear_system_cacheclients    N/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/test_client.pyephemeral_apir      s%     %%'F
L
s   *,c               #      K   t        j                  t        j                         dz         } |  | j	                          y w)Nz/test_server)path)r   PersistentClienttempfile
gettempdirr   r   s    r   persistent_apir      s:     &&  "^3F L
s   AA.sync_clientasync_client)paramsrequestc              #     K   | j                   dk(  r;t        d      5  t        d      5  t        j                   d d d        d d d        y t        d      5  t        d      5  dt        dt        dt        fd	}t        t        |       d d d        d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w# 1 sw Y   *xY w# 1 sw Y   y xY ww)
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                  r    t        j                         j                  t        j                  | i |      }|S r   )asyncioget_event_looprun_until_completer   AsyncHttpClient)r   r    clss      r   factoryz!http_api_factory.<locals>.factory+   s5    !002EE 00$A&AC J    )paramr   r   
HttpClientr   r   HttpAPIFactory)r   r'   s     r   http_api_factoryr,      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B*BB*CC$)B6C	CB'	#B**B3/C6B?	;CCCr,   c              #   B   K    |        }| |j                          y wr   )r   )r,   r   s     r   http_apir.   4   s     F
L
s   r   c                 D    | j                         }|j                  du sJ y )NFget_settingsis_persistent)r   settingss     r   test_ephemeral_clientr4   ;   s$    ))+H!!U***r(   r   c                 D    | j                         }|j                  du sJ y )NTr0   )r   r3   s     r   test_persistent_clientr6   @   s$    **,H!!T)))r(   r.   c                 f    | j                         }|j                  dk(  s|j                  dk(  sJ y y )Nzchromadb.api.fastapi.FastAPIz'chromadb.api.async_fastapi.AsyncFastAPI)r1   chroma_api_impl)r.   r3   s     r   test_http_clientr9   E   sB    $$&H  $BB##'PP	QP 	Cr(   c                 x    	  | t        d             y # t        $ r}t        |      dk(  sJ Y d }~y d }~ww xY w)Nz	127.0.0.1)chroma_server_host)r3   znChroma server host provided in settings[127.0.0.1] is different to the one provided in HttpClient: [localhost]r   
ValueErrorstrr,   es     r   0test_http_client_with_inconsistent_host_settingsrA   M   s?    
(k"JK 
F@	
@
s    	949c                 z    	  | dt        d             y # t        $ r}t        |      dk(  sJ Y d }~y d }~ww xY w)NiB  iA  )chroma_server_http_port)portr3   ziChroma server http port provided in settings[8001] is different to the one provided in HttpClient: [8002]r<   r?   s     r   0test_http_client_with_inconsistent_port_settingsrE   Y   sJ    
(,	
  
Fz{	
{
s    	:5:)r"   typingr   r   r   r   unittest.mockr   r   chromadb.configr   chromadb.apir	   chromadb.server.fastapipytestr   fixturer   r   r+   FixtureRequestr,   r.   r4   r6   r9   rA   rE    r(   r   <module>rO      si    1 1   $ "     yD$!67      	)T4"78     #y.) ~674""4~tT)*4 84(  ~  )ItT<Q2R    + +t +
*9 * *
y T 	
$	
		

$
	
r(   