
    IgK              
       \   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZ  ej2                         Zej6                  d	        Zej6                  d
        ZddefdZdde defdZ!ejD                  jG                  deg      d        Z$ejD                  jG                  deg      d        Z%ejD                  jG                  deg      d        Z&ejD                  jG                  deg      d        Z'd Z(d Z)d Z*g dg dgddgdZ+d Z,d Z-d Z.g dg dgddgdZ/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5d% Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>d. Z?d/ Z@d0 ZAd1 ZBd2 ZCd3 ZDd4 ZEd5 ZFd6 ZGd7 ZHg dg dgd8d9gd:d;d<d=d>d?igd@ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOg dg dgd8d9gdGdHdIiidGg dJigd@ZPdK ZQdL ZRdM ZSdN ZTg dg dgd8d9gd:d;d<d=d?dOdPdQgd@ZUdR ZVdS ZWdT ZXdU ZYdV ZZdW Z[dX Z\g dYg dZgd8d9gdZ]d[g dYg dZgiZ^g dg dgd\d]Z_d^ Z`d_ Zad` Zbg dg dgdadbgd8d9gd:d;d<d=d?dOdPdQgdcZcdd Zdde Zedf Zfg dg dg dgg dhgg did:d;d<djdkd?dOdPdjdldmdndodjdldpdqdrdjdlgg dsdtZgdu Zhdv Zig dwg dgd8d9gd:d;d<d=d>d?igdxdygdtZjdz Zkd{ Zld| Zmd} Znd~ Zod Zpd Zqd Zrd Zsd Ztd Zud Zvd Zwd Zxd Zyg dwg dg dgg dd:d;d<d=d>d?iddoigg ddtZzg dg dgd8dgd:dd<d=d>dpigddgdtZ{d Z|d Z}d Z~d Zd Zd Zd Zy)    N)ChromaError)FastAPI)QueryResultEmbeddingFunctionDocument)Settings)InvalidCollectionException)datetime	timedelta)DefaultEmbeddingFunctionc               #     K   t        j                  t        dddddddt                    } |  | j	                          t
        j                  j                  t              rt        j                  t        d       y y wNzchromadb.api.segment.SegmentAPIz chromadb.db.impl.sqlite.SqliteDBz7chromadb.segment.impl.manager.local.LocalSegmentManagerT)chroma_api_implchroma_sysdb_implchroma_producer_implchroma_consumer_implchroma_segment_manager_implallow_resetis_persistentpersist_directory)ignore_errors
chromadbClientr   persist_dirclear_system_cacheospathexistsshutilrmtreeclients    S/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/test/test_api.pylocal_persist_apir%      j     __=@!C!C(a)		
F L
	ww~~k"k6 #   A?Bc               #     K   t        j                  t        dddddddt                    } |  | j	                          t
        j                  j                  t              rt        j                  t        d       y y wr   r   r"   s    r$   local_persist_api_cache_bustr)   .   r&   r'   returnc                 $    t        | |z
        |k  S )N)absab	tolerances      r$   approx_equalr1   B   s    q1u:	!!    r0   c                     t        |       t        |      k7  ryt        t        | |      D  cg c]  \  } }t        | ||       c}}       S c c}} w )NF)lenallzipr1   r-   s      r$   vector_approx_equalr7   F   sA    
1vQ#a)D$!QQ9-DEEDs   A
api_fixturec                    |j                  d      }|j                          |j                  d      }|j                  dd       |j                  d      }|j	                  d      }g d}|j                  ddg d	      }|j                         D ]H  }||v s|d
k(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )Nr%   testid1helloids	documentsr)   
embeddingsr?   	metadatas	distances   query_texts	n_resultsincluder>   included)	getfixturevalueresetcreate_collectionaddget_collectionquerykeysr4   set)r8   requestr#   
collectionapi2includesnnkeys           r$   test_persist_index_loadingrX   L   s    $$%89F
LLN))&1JNNuN0""#ABD$$V,JDH			E 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?#r2   c                      G d dt         t                 }|j                  d      }|j                          |j	                  d |             }|j                  dd       |j                  d	      }|j                  d |             }g d
}|j                  dd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )Nc                       e Zd Zd Zy)=test_persist_index_loading_embedding_function.<locals>.TestEFc                 z    t        t        |            D cg c]  }t        j                  g d       c}S c c}w NrD         ranger4   nparrayselfinput_s      r$   __call__zFtest_persist_index_loading_embedding_function.<locals>.TestEF.__call__h   (    16s5z1BCABHHY'CCC   8N__name__
__module____qualname__ri    r2   r$   TestEFr[   g       	Dr2   rq   r%   r:   embedding_functionr;   r<   r=   r)   r@   rD   rE   r>   rI   )r   r   rJ   rK   rL   rM   rN   rO   rP   r4   rQ   )	r8   rR   rq   r#   rS   client2rU   rV   rW   s	            r$   -test_persist_index_loading_embedding_functionrv   e   s   D"8, D $$%89F
LLN))&VX)NJNNuN0%%&DEG''68'LJDH			 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?#r2   c                     G d dt         t                 }|j                  d      }|j                          |j	                  d |             }|j                  dd       |j                  d	      }|j	                  d |             }g d
}|j                  dd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  |d   dggk(  sJ |d   d   d   j                         g dk(  sJ |d   dggk(  sJ |d   dggk(  sJ y )Nc                       e Zd Zd Zy)Ctest_persist_index_get_or_create_embedding_function.<locals>.TestEFc                 z    t        t        |            D cg c]  }t        j                  g d       c}S c c}w r]   ra   re   s      r$   ri   zLtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.__call__   rj   rk   Nrl   rp   r2   r$   rq   ry      rr   r2   rq   r%   r:   rs   r;   r<   r=   r)   r@   rD   rE   r>   rI   rA   r   r^   r?   rC   )r   r   rJ   rK   get_or_create_collectionrM   rO   rP   r4   rQ   tolist)	r8   rR   rq   apirS   rT   rU   rV   rW   s	            r$   3test_persist_index_get_or_create_embedding_functionr~      sx   D"8, D 
!
!"5
6CIIK--f-RJNNuN0""#ABD..v&(.SJDH			 
 
B wwy #8Or#w<1$$$Jr#w<3x=000c7?"?# e9%	!!!lAq!((*i777k?yk)))k?se###r2   c                    |j                  | j                        }|j                          |j                  d      } |j                  di t
         |j                         dk(  sJ |j                  | j                        }|j                  d      }|j                         dk(  sJ |j                  d       |j                  | j                        }|j                         g k(  sJ y N	testspacer_   rp   )
rJ   rm   rK   rL   rM   batch_recordscountrN   delete_collectionlist_collections)r8   rR   r#   rS   s       r$   test_persistr      s    $$[%9%9:F
LLN))+6JJNN#]#"""$$[%9%9:F&&{3J"""
[)$$[%9%9:F""$***r2   c                     | j                         }t        |t              sJ |dz  }t        j                  |      }|t        j
                         t        d      z
  kD  sJ y )Ni ʚ;
   )seconds)	heartbeat
isinstanceintr
   fromtimestampnowr   )r#   heartbeat_nsheartbeat_sr   s       r$   test_heartbeatr      sX    ##%LlC(((%'K&&{3Ix||~	"(=====r2   c                 H    t        |        | j                         }|dkD  sJ y )Nr   )printget_max_batch_size)r#   
batch_sizes     r$   test_max_batch_sizer      s#    	&M**,J>>r2   c                    t        | t              st        j                  d       t	        j
                  | j                   d      }|j                  dk(  sJ |j                         J d|j                         j                         v sJ y )NzNot a FastAPI instancez/pre-flight-checks   max_batch_size)
r   r   pytestskiphttpxget_api_urlstatus_codejsonrP   )r#   resps     r$   test_pre_flight_checksr      sw    fg&,-99((:;<Ds"""99;"""tyy{//1111r2   皙?ffffff@皙	@333333?Q@r   zhttps://example.com/1zhttps://example.com/2rA   r>   c                     | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ y r   )rK   rL   rM   r   r   r#   rS   s     r$   test_addr      sC    
LLN))+6JJNN#]#"""r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5   |j                  di t         d d d        y # 1 sw Y   y xY wNr:   Collection .* does not exist.matchrp   )rK   rL   r   r   raisesr	   rM   r   r   s     r$   2test_collection_add_with_invalid_collection_throwsr      sc    
LLN))&1J
V$	"*J
 ( 	
''( ( (   A..A7c                 f   | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ t        j                  t              5  | j                  d      }d d d        | j                  d      }|j	                         dk(  sJ y # 1 sw Y   0xY wr   )	rK   rL   rM   r   r   r   r   	Exceptionr{   r   s     r$   test_get_or_creater      s    
LLN))+6JJNN#]#"""	y	! ;--k:
; 00=J"""; ;s   &B''B0c                     | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ y r   )rK   rL   rM   minimal_recordsr   r   s     r$   test_add_minimalr     sC    
LLN))+6JJNN%_%"""r2   c                 T   | j                          | j                  d      } |j                  di t         g d}|j	                  |      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )Nr   rA   r?   rB   rH   r>   r_   rI   rp   )rK   rL   rM   r   r   rP   r4   rQ   )r#   rS   rU   recordsrW   s        r$   test_get_from_dbr     s    
LLN))+6JJNN#]#7HnnXn.G||~ (8Ows|$)))Jws|$H5553<'''(r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                          d d d        y # 1 sw Y   y xY wNr:   r   r   )rK   rL   r   r   r   r	   r   r   s     r$   2test_collection_get_with_invalid_collection_throwsr     s\    
LLN))&1J
V$	"*J
  	     A((A1c                     | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ | j                          t        | j                               dk(  sJ y )Nr   r_   r   rp   )rK   rL   rM   r   r   r4   r   r   s     r$   test_reset_dbr   *  sh    
LLN))+6JJNN#]#"""
LLNv&&()Q...r2   c                 *   | j                          | j                  d      } |j                  d
i t         g d}|j	                  g dd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  |j	                  g dgd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  |j	                  g dg dgd|      }|j                         D ]H  }||v s|dk(  rt        ||         d	k(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )Nr   r@   r   rD   query_embeddingsrG   rH   r>   rI   )皙?r         @r_   rp   )rK   rL   rM   r   rO   rP   r4   rQ   r#   rS   rU   rV   rW   s        r$   test_get_nearest_neighborsr   5  s   
LLN))+6JJNN#]#DH			( 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?# 
		)* 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?# 
		)?; 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?#r2   c                    | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY wr   )	rK   rL   rM   r   r   r   r   r   deleter   s     r$   test_deleter   c  sp    
LLN))+6JJNN#]#"""	y	!   s   &B  B	c                     | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ |j                  t        d         J y )Nr   r_   r>   r>   rp   )rK   rL   rM   r   r   r   r   s     r$   test_delete_returns_noner   l  sb    
LLN))+6JJNN#]#"""u!56>>>r2   c                     | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ |j                  g dgd       y )Nr   r_   r   rD   r   rG   rp   )rK   rL   rM   r   r   rO   r   s     r$   test_delete_with_indexr   s  sY    
LLN))+6JJNN#]#"""&71Er2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                  dg       d d d        y # 1 sw Y   y xY w)Nr:   r   r   r;   r   )rK   rL   r   r   r   r	   r   r   s     r$   5test_collection_delete_with_invalid_collection_throwsr   {  se    
LLN))&1J
V$	"*J
 ' 	ug&' ' '   A++A4c                     | j                          | j                  d      }|j                         dk(  sJ  |j                  di t         |j                         dk(  sJ y )Nr   r   r_   rp   )rK   rL   r   rM   r   r   s     r$   
test_countr     sZ    
LLN))+6J"""JNN#]#"""r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                          d d d        y # 1 sw Y   y xY wr   )rK   rL   r   r   r   r	   r   r   s     r$   4test_collection_count_with_invalid_collection_throwsr     s^    
LLN))&1J
V$	"*J
  	  r   c                     | j                          | j                  d      }|j                  d       |j                  dk(  sJ y Nr   
testspace2name)rK   rL   modifyr   r   s     r$   test_modifyr     s@    
LLN))+6J<( ??l***r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr:   r   r   test2r   )rK   rL   r   r   r   r	   r   r   s     r$   5test_collection_modify_with_invalid_collection_throwsr     sc    
LLN))&1J
V$	"*J
 ( 	w'( ( (s   A**A3c                     | j                          | j                  d       | j                  d      }t        j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY wr   rK   rL   r   r   r   r   )r#   c2s     r$   "test_modify_error_on_existing_namer     sX    
LLN
[)		!	!,	/B	y	! $
		{	#$ $ $s   A((A1c                     | j                          | j                  d      }t        j                  t        d      5  |j                  ddi       d d d        y # 1 sw Y   y xY w)Nr   znot supportedr   
hnsw:spacecosinemetadatar   )r#   caplogrS   s      r$   test_modify_warn_on_DF_changer     sT    
LLN))+6J	y	8 =L(#;<= = =s   AA$c                 X   | j                          ddd}| j                  d|      }|j                  J |j                  d   dk(  sJ |j                  d   dk(  sJ | j                  d      }|j                  J |j                  d   dk(  sJ |j                  d   dk(  sJ |j	                  ddd	       |j                  d   dk(  sJ |j                  d
   dk(  sJ d|j                  vsJ | j                  d      }|j                  J |j                  d   dk(  sJ |j                  d
   dk(  sJ d|j                  vsJ | j                  d      }|j                  J |j                  d   dk(  sJ |j                  d
   dk(  sJ | j                  d      }|j                  J | j                         }|D ]f  }|j                  dk(  r7|j                  J |j                  d   dk(  sJ |j                  d
   dk(  rGJ |j                  dk(  sY|j                  fJ  y )NrD   r_   )r.   r/   r   r   r.   r/   r`   )r.   cr   r   )rK   rL   r   rN   r   r{   r   r   )r#   
metadata_arS   collectionss       r$   test_metadata_crur     s   
LLNq!J))+
)KJ***s#q(((s#q((( &&{3J***s#q(((s#q((( QQ/0s#q(((s#q(((j))))) &&{3J***s#q(((s#q(((j))))) 00=J***s#q(((s#q((( 00>J&&& ))+K! /
??k)&&222&&s+q000&&s+q000__,&&.../r2   c                    | j                          | j                  d      } |j                  d	i t         |j	                         dk(  sJ g d}|j                  g dgd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )
Nr   r_   r@   r   rD   r   r>   rI   rp   )	rK   rL   rM   r   r   rO   rP   r4   rQ   r   s        r$   test_increment_index_onr     s    
LLN))+6JJNN#]#"""DH			)* 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?#r2   c                    | j                          | j                  d       | j                  d      }|j                  dk(  sJ t	        j
                  t              5  | j                  d      }d d d        y # 1 sw Y   y xY w)Nr   r   )rK   rL   rN   r   r   r   r   r   s     r$   test_add_a_collectionr     sp    
LLN
[) &&{3J??k))) 
y	! 9**<8
9 9 9s   A88Bc                     | j                          t        j                  t              5 }| j	                  d       d d d        j
                  j                  J y # 1 sw Y   "xY w)Nr   )rK   r   r   r   rN   valuetrace_id)http_clienterrors     r$   test_error_includes_trace_idr    sW    	{	# 1u""<01 ;;+++1 1s   AA&c                     | j                          | j                  d       | j                  d       | j                         }t        |      dk(  sJ y )Nr   r   r_   rK   rL   r   r4   r#   r   s     r$   test_list_collectionsr    sJ    
LLN
[)
\* ))+K{q   r2   c                    | j                          | j                  d       | j                  d       | j                         }t        |      dk(  sJ | j                          | j                         }t        |      dk(  sJ y )Nr   r   r_   r   r  r  s     r$   
test_resetr  '  st    
LLN
[)
\* ))+K{q   
LLN))+K{q   r2   c                 v   | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ |j                         }|j                         D ]J  }|dv s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        g d      k(  rBJ ||   JJ  y )Nr   r_   r   r>   rI   rA   rB   r?   rp   )	rK   rL   rM   r   r   peekrP   r4   rQ   )r#   rS   r
  rW   s       r$   	test_peekr  5  s    
LLN))+6JJNN#]#""" ??Dyy{ %::cUltCy>Q&&&JtCy>S)Q%RRRR9$$$%r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                          d d d        y # 1 sw Y   y xY wr   )rK   rL   r   r   r   r	   r
  r   s     r$   3test_collection_peek_with_invalid_collection_throwsr  F  s\    
LLN))&1J
V$	"*J
  	  r   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                  dg       d d d        y # 1 sw Y   y xY w)Nr:   r   r   )rF   )rK   rL   r   r   r   r	   rO   r   s     r$   4test_collection_query_with_invalid_collection_throwsr  Q  se    
LLN))&1J
V$	"*J
 / 	fX./ / /r   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5  |j                  dgdg       d d d        y # 1 sw Y   y xY w)Nr:   r   r   r;   r=   )rK   rL   r   r   r   r	   updater   s     r$   5test_collection_update_with_invalid_collection_throwsr  \  si    
LLN))&1J
V$	"*J
 ; 	ug&:; ; ;s   A--A6r;   id2rD   onejt?	int_valuestring_valuefloat_valuer  r_   rA   r>   rB   c                 f   | j                          | j                  d      } |j                  di t         |j	                  ddg      }|d   d   d   dk(  sJ |d   d   d	   d
k(  sJ |d   d   d   dk(  sJ t        |d   d   d   t              sJ t        |d   d   d	   t              sJ y )Ntest_intr;   r  r   rB   r   r  rD   r  r  r_   rp   )rK   rL   rM   metadata_recordsr   r   r   floatr#   rS   itemss      r$   test_metadata_add_get_int_floatr!  t  s    
LLN))*5JJNN&%&NNu~N.Ea -222a /5888a -222eK(+K8#>>>eK(+M:EBBBr2   c                 p   | j                          | j                  d      } |j                  d
i t         |j	                  g dgd      }|d   J |d   d   d   d   dk(  sJ |d   d   d   d   d	k(  sJ t        |d   d   d   d   t              sJ t        |d   d   d   d   t              sJ y )Nr  r   rD   r   rB   r   r  r  r  rp   )rK   rL   rM   r  rO   r   r   r  r  s      r$   !test_metadata_add_query_int_floatr#    s    
LLN))*5JJNN&%&#)))*a * E )))a #K0A555a #M2e;;;eK(+A.{;SAAAeK(+A.}=uEEEr2   c                     | j                          | j                  d      } |j                  d	i t         |j	                  ddi      }|d   d   d   dk(  sJ |d   d   d   dk(  sJ y )
Nr  r  r  whererB   r   r  rD   rp   rK   rL   rM   r  r   r  s      r$   test_metadata_get_where_stringr(    s|    
LLN))*5JJNN&%&NN.%!8N9Ea -222a 0E999r2   c                     | j                          | j                  d      } |j                  d	i t         |j	                  ddi      }|d   d   d   dk(  sJ |d   d   d   dk(  sJ y )
Nr  r  rD   r%  rB   r   r  r  rp   r'  r  s      r$   test_metadata_get_where_intr*    s|    
LLN))*5JJNN&%&NN+q!1N2Ea -222a 0E999r2   c                     | j                          | j                  d      } |j                  di t         |j	                  ddi      }|d   d   d   dk(  sJ |d   d   d	   d
k(  sJ |d   d   d   dk(  sJ y )Nr  r  r  r%  rB   r   r  rD   r  r  rp   r'  r  s      r$   test_metadata_get_where_floatr,    s    
LLN))*5JJNN&%&NN-!7N8Ea -222a 0E999a /5888r2   c                 *   | j                          | j                  d      } |j                  di t         |j	                  dgddddg       |j                  dg      }|d	   d
   d   dk(  sJ |d	   d
   d   dk(  sJ |d	   d
   d   dk(  sJ y )Nr  r;   r_   twojt @r  r>   rB   r   rB   r   r  r  r  rp   )rK   rL   rM   r  r  r   r  s      r$   "test_metadata_update_get_int_floatr1    s    
LLN))*5JJNN&%&G!"E%PQ   NNwN'Ea -222a 0E999a /5888r2   r   nested5r^   c                     | j                          | j                  d      }t        j                  t        d      5   |j
                  di t         d d d        y # 1 sw Y   y xY w)Ntest_metadata_validationr   r   rp   )rK   rL   r   r   
ValueErrorrM   bad_metadata_recordsr   s     r$   test_metadata_validation_addr8    sQ    
LLN))*DEJ	z	4 /
.-./ / /   AA&c                    | j                          | j                  d      } |j                  d	i t         t	        j
                  t        d      5  |j                  dgdddii       d d d        y # 1 sw Y   y xY w)
Nr5  r   r   r;   r   r2  r3  r0  rp   )rK   rL   rM   r  r   r   r6  r  r   s     r$   test_metadata_validation_updater;    ss    
LLN))*DEJJNN&%&	z	4 Mug'Hc?1KLM M Ms   A55A>c                     | j                          | j                  d      }t        j                  t        d      5  |j                  dddii       d d d        y # 1 sw Y   y xY w)Ntest_where_validationr&  r   r   r2  r3  r%  )rK   rL   r   r   r6  r   r   s     r$   test_where_validation_getr>    sV    
LLN))*ABJ	z	1 9g#789 9 9r9  c                     | j                          | j                  d      }t        j                  t        d      5  |j                  g ddddii       d d d        y # 1 sw Y   y xY w)	Nr=  r&  r   r   r   r   r   r2  r3  )r   r&  )rK   rL   r   r   r6  rO   r   s     r$   test_where_validation_queryrA    s`    
LLN))*ABJ	z	1 W)GhPS_;UVW W Ws   A  A)r/  r.  )r  r  r  c                     | j                          | j                  d      } |j                  di t         |j	                  dddii      }t        |d         dk(  sJ y )	Ntest_where_ltr  $ltr_   r%  rB   rD   rp   rK   rL   rM   operator_recordsr   r4   r  s      r$   rC  rC    s^    
LLN))/:JJNN&%&NN+qz!:N;Eu[!"a'''r2   c                     | j                          | j                  d      } |j                  di t         |j	                  dddii      }t        |d         dk(  sJ y )	Ntest_where_lter  z$lteg       @r%  rB   r_   rp   rE  r  s      r$   rH  rH    s_    
LLN))*:;JJNN&%&NN+}!=N>Eu[!"a'''r2   c                     | j                          | j                  d      } |j                  di t         |j	                  dddii      }t        |d         dk(  sJ y )	NrH  r  $gtgffffffr%  rB   r_   rp   rE  r  s      r$   test_where_gtrK    s_    
LLN))*:;JJNN&%&NN-%!?N@Eu[!"a'''r2   c                     | j                          | j                  d      } |j                  di t         |j	                  dddii      }t        |d         dk(  sJ y )	NrH  r  $gter/  r%  rB   rD   rp   rE  r  s      r$   test_where_gterN    s_    
LLN))*:;JJNN&%&NN-&%!ANBEu[!"a'''r2   c                     | j                          | j                  d      } |j                  di t         |j	                  dddii      }t        |d         dk(  sJ y )	NrH  r  $ner.  r%  rB   rD   rp   rE  r  s      r$   test_where_ne_stringrQ    s_    
LLN))*:;JJNN&%&NN.5%.!ANBEu[!"a'''r2   c                    | j                          | j                  d      } |j                  d
i t         |j	                  dddii      }t        |d         dk(  sJ |j	                  ddd	ii      }t        |d         dk(  sJ y )NrH  r  rP  rD   r%  rB   r  $eqr/  rp   rE  r  s      r$   test_where_ne_eq_numberrT    s    
LLN))*:;JJNN&%&NN+qz!:N;Eu[!"a'''NN-%!@NAEu[!"a'''r2   c                    | j                          | j                  d      } |j                  di t         t	        j
                  t              5  |j                  dddii       d d d        t	        j
                  t              5  |j                  dddii       d d d        t	        j
                  t              5  |j                  dddd	i       d d d        t	        j
                  t              5  |j                  d
dddiii       d d d        t	        j
                  t              5  |j                  ddidddiid       d d d        t	        j
                  t              5  |j                  ddddiidddiigi       d d d        t	        j
                  t              5  |j                  ddddiigi       d d d        t	        j
                  t              5  |j                  dg i       d d d        t	        j
                  t              5  |j                  dddii       d d d        t	        j
                  t              5  |j                  ddddiiddigi       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Ntest_where_valid_operatorsr  z$invalidr_   r%  rD  2rD   )rD  rJ  $andrJ  )r  $orrY  r.   	$containsr:   firstsecondrp   )rK   rL   rM   rF  r   r   r6  r   r   s     r$   rV  rV    s   
LLN))*FGJJNN&%&	z	" =kJ?;<= 
z	" :kE3<89: 
z	" Bk1Q+?@AB 
z	" Bf{UAJ&?@AB 
z	" 
!&
K%3LM 	 	


 
z	" 
K%4{UAJ6OPQ 	 	


 
z	" Ce{UAJ&?%@ABC 
z	" *eR[)* 
z	" ;cK#89:; 
z	" 
;01 (+ 	 	

 
A= =: :B BB B
 


 

C C* *; ;
 
sx   J 	JJ:J'4J41K1K,K"K'K3 J
JJ$'J14J>KKK$'K03K<)r   r   r   r   )r   r   r   r   r   d   r   c                 ,   | j                          | j                  d      } |j                  di t         t	        j
                  t              5 } |j                  di t         d d d        dt        j                        v sJ y # 1 sw Y   #xY w)Ntest_dimensionality_validationdimensionalityrp   )
rK   rL   rM   r   r   r   r   bad_dimensionality_recordsstrr   r#   rS   es      r$   "test_dimensionality_validation_addre  ]  sx    
LLN))*JKJJNN%_%	y	! 5Q
4345s177|+++5 5   B

Bc                 ,   | j                          | j                  d      } |j                  di t         t	        j
                  t              5 } |j                  di t         d d d        dt        j                        v sJ y # 1 sw Y   #xY w)N$test_dimensionality_validation_queryr`  rp   )rK   rL   rM   r   r   r   r   rO   bad_dimensionality_queryrb  r   rc  s      r$   rh  rh  g  sz    
LLN))*PQJJNN%_%	y	! 5Q
4345s177|+++5 5rf  c                    | j                          | j                  d      } |j                  di t         t	        j
                  t        d      5  |j                  dddii       d d d        t	        j
                  t        d      5  |j                  g dd	di
       d d d        t	        j
                  t        d      5  |j                  d	g i       d d d        t	        j
                  t              5  |j                  dddii       d d d        t	        j
                  t              5  |j                  dddiddigi       d d d        t	        j
                  t              5  |j                  dd	digi       d d d        t	        j
                  t              5  |j                  dg i       d d d        t	        j
                  t              5  |j                  ddd	digid	digi       d d d        y # 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   GxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrV  zwhere documentr   rD  z$nestedr_   where_documentr@  rZ  )r   rl  rX  z$unsupporteddocrY  rp   )	rK   rL   rM   rF  r   r   r6  r   rO   r   s     r$   #test_query_document_valid_operatorsrn  q  s@   
LLN))*FGJJNN&%&	z)9	: ?uy!n&=>? 
z)9	: V)[RSDTUV 
z)9	: 9{B&789 
z	" Iv/F&GHI 
z	" 
!^U$;ne=T#UV 	 	


 
z	" GuU/C.D&EFG 
z	" 3ubk23 
z	" 
;"6!78;:NO 	 	

 
1? ?V V9 9I I
 

G G3 3
 
s`   HHH">H/6H<2I+I!I HH"H,/H9<III I)zthis is doc1 and it's great!zdoc2 is also great!)rA   r?   r>   rB   c                 \   | j                          | j                  d      } |j                  di t         |j	                  ddi      }t        |d         dk(  sJ |j	                  ddi      }t        |d         dk(  sJ |j	                  dd	i      }t        |d         d
k(  sJ y )Ntest_get_where_documentrZ  doc1rk  rB   rD   greatr_   badr   rp   )rK   rL   rM   contains_recordsr   r4   r  s      r$   rp  rp    s    
LLN))*CDJJNN&%&NN;*?N@Eu[!"a'''NN;*@NAEu[!"a'''NN;*>N?Eu[!"a'''r2   c                    | j                          | j                  d      } |j                  di t         |j	                  g dddid      }t        |d   d         dk(  sJ |j	                  g d	dd
id      }t        |d   d         dk(  sJ t        j                  t              5 }|j	                  g d	ddid      }dt        |j                        v sJ 	 d d d        y # 1 sw Y   y xY w)Ntest_query_where_document)rD   r   r   rZ  rq  rD   )r   rl  rG   rB   r   r@  rr  r_   rs  
datapointsrp   )rK   rL   rM   rt  rO   r4   r   r   r   rb  r   )r#   rS   r   rd  s       r$   rv  rv    s   
LLN))*EFJJNN&%&"K3HTU  E u[!!$%***"K3IUV  E u[!!$%***	y	! ,Q  &U7KWX ! 
 s177|+++	, , ,s   -2C))C2c                 h   | j                          | j                  d      } |j                  d	i t         |j	                  ddi       |j                         dk(  sJ |j	                  ddi       |j                         dk(  sJ |j	                  ddi       |j                         dk(  sJ y )
Ntest_delete_where_documentrZ  rq  rk  rD   rs  rr  r   rp   )rK   rL   rM   rt  r   r   r   s     r$   ry  ry    s    
LLN))*FGJJNN&%&k6%:;"""k5%9:"""k7%;<"""r2   )g?g      @r   )gffffff?gGz@r   )r;   r  id3id4rm  )r  r  r  is)r  r  r  r|  r`   g/$@three   gjt@four)z this document is first and greatz!this document is second and greatz this document is third and greatz!this document is fourth and great)rA   r>   rB   r?   c           	         | j                          | j                  d      } |j                  di t         |j	                  dddddiiddd	iigid
digi      }t        |d         dk(  sJ |j	                  dddddiidddiigiddddiidddiigigi      }t        |d         dk(  sJ |j	                  dddddiidddiigiddddiidddiigigi      }t        |d         dk(  sJ y )Ntest_logical_operatorsrX  rY  r  rM  r`   r  rD  gffffff?r|  rm  r%  rB   rS  r  r}  r~  r  r_   rD   r.  r  rp   rK   rL   rM   logical_operator_recordsr   r4   r  s      r$   test_where_logical_operatorsr    s   
LLN))*BCJJNN.-.NN+{3meS\5RSTu
  E u[!"a'''NN$uaj1'%)9: $uaj1'%9
  E$ u[!"a'''NN$uaj1'%8 $uaj1'%8
  E$ u[!"a'''r2   c                    | j                          | j                  d      } |j                  di t         |j	                  dddiddigi      }t        |d         dk(  sJ |j	                  d	ddidd
igi      }t        |d         dk(  sJ |j	                  d	ddidd
igidddii      }t        |d         dk(  sJ y )Ntest_document_logical_operatorsrX  rZ  r[  rm  rk  rB   rD   rY  r\  r_   r  rP  )rl  r&  rp   r  r  s      r$   %test_where_document_logical_operatorsr  #  s   
LLN))*KLJJNN.-.NNg&e$
  E u[!"a'''NNg&h'
  E u[!"a'''NNg&h'
 %
  
E u[!"a'''r2   r@  this document is firstthis document is secondc                 x   | j                          | j                  d      } |j                  di t         g d}|j	                  g d|d      }|d   J |d   d   d   d	k(  sJ |d
   d   d   d   dk(  sJ t        |d         t        |      k(  sJ g d}|j	                  g d|d      }|d
   J |d   d   d   d	k(  sJ t        |d         t        |      k(  sJ |j	                  g dg dgg d      }|d   J |d
   J |d   J |d   J |d   d   d   d	k(  sJ |d   d   d   dk(  sJ y )Ntest_query_includerB   r?   rC   r@  rD   r   rH   rG   rA   r>   r   r;   rB   r  rI   )rA   r?   rC   )rD   r_   r   r_   r?   rC   r  rp   )rK   rL   rM   r   rO   rQ   r#   rS   rH   r   s       r$   r  r  W  s   
LLN))*>?JJNNW5G"  E
 &&&<?1&&&a #K0A555uZ !S\1116G"  E
 %%%<?1&&&uZ !S\111#[1  E
 %%%%%%&&&%%%<?1&&&<?1&&&r2   c                    | j                          | j                  d      } |j                  di t         ddg}|j	                  |ddi      }|d   J |d   d	   d
k(  sJ |d   d	   d   dk(  sJ |d   d	   dk(  sJ t        |d         t        |      k(  sJ ddg}|j	                  |      }|d   J |d   d	   d
k(  sJ t        |d   d   d	   d      sJ t        |d         t        |      k(  sJ |j	                  g       }|d   J |d   J |d   J |d   d	   d
k(  sJ |d   g k(  sJ t        j                  t        d      5  |j	                  ddg      }d d d        t        j                  t        d      5  |j	                  d       }d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Ntest_get_includerB   r?   r  rD   )rH   r&  rA   r>   r   r;   r  rI   r   r   rH   r   	undefinedrp   )
rK   rL   rM   r   r   rQ   r1   r   r   r6  r  s       r$   r  r  ~  s%   
LLN))*<=JJNNWK(GNN7;2BNCE&&&<?e###a -222a $<<<<uZ !S\111[)GNN7N+E%%%<?e###l+A.q13777uZ !S\111NN2N&E%%%%%%&&&<?e###"""	z	3 C['ABC 
z	3 -t,- -C C- -s   F(F4(F14F=c                     | j                          | j                  d      } |j                  di t         |j	                  g dg dd      }|d   d   d   dk(  sJ |d   d   d	   d
k(  sJ y )Ntest_query_orderr   r  r_   r  r?   r   r  rD   r  rp   rK   rL   rM   r   rO   r  s      r$   r  r    s    
LLN))*<=JJNNW)7  E a #'@@@@a #'????r2   c                 l   | j                          | j                  d      }t        j                  t              5 }|j                  g ddgi g       d d d        dt        j                        v sJ t        j                  t              5 }|j                  d       d d d        dt        |j                        v sJ t        j                  t              5 }|j                  ddg       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   ;xY w)	Ntest_invalid_idr@  rD   r  IDr   validr   )
rK   rL   r   r   r6  rM   rb  r   r   r   rc  s      r$   r  r    s   
LLN))*;<J	z	" Fa)!EF3qww< 
z	" a13qww< 
z	" ,awl+,3qww<F F
 
, ,s#   DDD*DD'*D3c                 r   d}| j                          | j                  d      } |j                  di t         |j	                  g dd      }|d   d   d   d	kD  sJ | j                          | j                  dd
ddd      } |j                  di t         |j	                  g dd      }|d   d   d   d|z
  kD  sJ |d   d   d   d|z   k  sJ | j                          | j                  dddi      } |j                  di t         |j	                  g dd      }|d   d   d   dk  sJ y )Ng-q=test_index_paramsr   )g333333?gQ?g?rD   r   rC   r   r~  r         )r   zhnsw:construction_efzhnsw:Mr   r   r   iprp   r  )r#   EPSrS   r   s       r$   r  r    s   
C
LLN))/B)CJJNNW)  E a #a''' LLN))  ("PQR * J JNNW)  E a #a#g---a #a#g--- LLN)) L$+? * J JNNW)  E a #b(((r2   c                    | j                          t        j                  t              5  | j	                  dddi      } |j
                  di t         d d d        t        j                  t              5  | j	                  dddi      } |j
                  di t         d d d        y # 1 sw Y   WxY w# 1 sw Y   y xY w)Nr  zhnsw:foobarblargr  r   foobarrp   )rK   r   r   r   rL   rM   r   r   s     r$   test_invalid_index_paramsr    s    
LLN	y	! "--$w/G . 

 	
!!	" 
y	! "--$h/G . 

 	
!!	" "" "" "s   ,B,7,B8,B58Cc                    |j                  d      } | j                          | j                  dddi      }|j                  dd       |j                  d	      }|j	                  d      }|j
                  d   dk(  sJ g d
}|j                  dd|      }|j                         D ]H  }||v s|dk(  rt        ||         dk(  rJ |dk(  rt        ||         t        |      k(  r@J ||   HJ  y )Nr%   r:   r   r  r   r;   r<   r=   r)   r@   rD   rE   r>   rI   )
rJ   rK   rL   rM   rN   r   rO   rP   r4   rQ   )r#   rR   rS   rT   rU   rV   rW   s          r$   !test_persist_index_loading_paramsr    s   $$%89F
LLN))% * J NNuN0""#ABD$$J |,444DH			 
 
B
 wwy #8Or#w<1$$$Jr#w<3x=000c7?"?#r2   c                    | j                          | j                  d      }t        j                  j	                  dd      j                  t        j                        j                         }|j                  |t        t        |            D cg c]  }d| 	 c}       |j                         t        |      k(  sJ y c c}w )Nr   i     zhttp://example.com/r   )rK   rL   rc   randomrandastypefloat32r|   rM   rb   r4   r   )r#   rS   large_recordsis       r$   test_add_larger    s    
LLN))+6J IINN4-44RZZ@GGIMNN 05c-6H0IJ1"1#&J  
 ]!3333 Ks   C
c                 t    | j                          | j                         }dd l}|j                  d|      sJ y )Nr   z\d+\.\d+\.\d+)rK   get_versionrer   )r#   versionr  s      r$   test_get_versionr  .  s3    
LLN  "G 88$g...r2   c                    | j                          | j                  d      } |j                  di t         t	        | j                               dk(  sJ | j                  d       t	        | j                               dk(  sJ y )Ntest_delete_collectionrD   r   rp   )rK   rL   rM   r   r4   r   r   r   s     r$   r  r  9  st    
LLN))*BCJJNNWv&&()Q...
56v&&()Q...r2   c                      t               } t        d      D cg c]  }d }} | |      }t        |      dk(  sJ y c c}w )N@   zthis is a test)r   rb   r4   )rt   rh   docsrA   s       r$   test_default_embeddingr  D  sD    13&+Bi00D0#D)Jz?b    1s   	<c                    t         j                  j                  dd      j                  t         j                        j                         }t         j                  j                  dd      j                  t         j                        j                         }t        t        |            D cg c]  }d| 	 }}t        t        |            D cg c]  }d| 	 }}| j                          | j                  d      }|j                  ||       | j                  d      }|j                  ||       t        | j                               dk(  sJ |j                         t        |      k(  sJ |j                         t        |      k(  sJ |j                  |d	   d
      }|j                  |d	   d
      }	|d   d	   d	   |d	   k(  sJ |	d   d	   d	   |d	   k(  sJ y c c}w c c}w )Nr   r  zhttp://example.com/1/zhttp://example.com/2/coll1r   coll2r_   r   rD   r   r>   )rc   r  r  r  r  r|   rb   r4   rK   rL   rM   r   r   rO   )
r#   embeddings1embeddings2r  ids1ids2r  r  results1results2s
             r$   test_multiple_collectionsr  K  s   ))..S)00<CCEK))..S)00<CCEK16s;7G1HIA#A3'IDI16s;7G1HIA#A3'IDI
LLN$$W-E	II$I/$$W-E	II$I/v&&()Q...;;=C,,,,;;=C,,,,{{KNa{HH{{KNa{HHE?1a DG+++E?1a DG+++% JIs   -G$G)c                    | j                          | j                  d      } |j                  di t         t        d   d   gg dgdgddigd} |j                  di | |j                  |d	   d
g d      }t        |d   d         d
k(  sJ |d   d   d   |d   d   k(  sJ |d   d   d   |d   d   k(  sJ |d   d   d   d   dk(  sJ t        |d	   d   d   |d	   d         sJ y )Ntest_update_queryr>   r   )r   g?g333333?zupdated documentfoobar)r>   rA   r?   rB   rA   rD   r   r   r?   rB   rp   )rK   rL   rM   r   r  rO   r4   r7   )r#   rS   updated_recordsresultss       r$   r  r  c  sR   
LLN))*=>JJNNW q!"&'()en%	O J(( (68  G
 wu~a !Q&&&5>!Q?5#9!#<<<<;"1%)Ea)HHHH;"1%e,555a #_\%B1%E  r2   c                 d   | j                          | j                  d      } |j                  d
i t         g d}|j	                  g dgd|      }|j                         D ]K  }||v s|dk(  rt        ||   d         dk(  r!J |d	k(  rt        ||         t        |      k(  rCJ ||   KJ  y )Nr   r@   r   r  r   r>   r   r_   rI   rp   )rK   rL   rM   r   rO   rP   r4   rQ   )r#   rS   rU   r  rW   s        r$   <test_get_nearest_neighbors_where_n_results_more_than_elementr    s    
LLN))+6JJNNWDH)*  G
 ||~ ((?cUlws|A'1,,,Jws|$H5553<'''(r2   c                 F   | j                          | j                  d      } |j                  d	i t         t	        j
                  t              5 }|j                  g dgdg d       d d d        dt        j                        v sJ |j                  t        k(  sJ t	        j
                  t              5 }|j                  g dgdg d       d d d        dt        |j                        v sJ |j                  t        k(  sJ y # 1 sw Y   xY w# 1 sw Y   DxY w)
Nr   r   r@   r   z<Number of requested results -1, cannot be negative, or zero.r  r   rp   )rK   rL   rM   r   r   r   	TypeErrorrO   rb  r   typer6  )r#   rS   excs      r$   test_invalid_n_results_paramr    s   
LLN))+6JJNNW	y	! 
S-.I 	 	

 JS		N    88y   	z	" 
c-.I 	 	

 C		N"""88z!!!%
 

 
s   D:DDD )g@gQ	@g@)r;   r  rz  r  )r  r  zthis document is third)      @r  r   )r   g(\@g@r{  
one_of_onez this document is even more firstzthis document is new and fourthc                    | j                          | j                  d      } |j                  di t         |j	                         dk(  sJ  |j
                  di t         |j	                         dk(  sJ |j                  g dt        d   d         }t        |d   d   t        d   d         sJ |d	   d   t        d	   d   k(  sJ |d
   d   t        d
   d   k(  sJ |j                  |d   dg d      }t        |d   d   d   t        d   d         sJ |d	   d   d   t        d	   d   k(  sJ |d
   d   d   t        d
   d   k(  sJ |j                  t        d   d          |j                  t        d   d   g dgddig       |j	                         dk(  sJ |j                  g ddg      }t        |d   d   g d      sJ |d	   d   ddik(  sJ |d
   d   J y )Nr:   r`   r~  r	  r>   r   )rH   r>   rA   rB   r?   rD   r   r_   r   )r   gGz?gGz@r  za new string value)r>   rA   rB   rz  rp   )rK   rL   rM   initial_recordsr   upsertnew_recordsr   r7   rO   r   )r#   rS   
get_resultquery_results       r$   test_upsertr    sy   
LLN))&1JJNN%_%"""J$$"""8k%>PQR>S   J < #[%>q%A   k"1%[)A!)DDDDk"1%[)A!)DDDD###L18 $ L
 \"1%a(+l*CA*F   $Q'*k+.Fq.IIII$Q'*k+.Fq.IIII/%034E"1%%&"$89:  
 """8ug   J z,7:<MNNNk"1%.:N)OOOOk"1%---r2   c                     | j                          | j                  d      }| j                  d       t        j                  t
        d      5   |j                  di t         d d d        y # 1 sw Y   y xY wr   )rK   rL   r   r   r   r	   r  r  r   s     r$   5test_collection_upsert_with_invalid_collection_throwsr    se    
LLN))&1J
V$	"*J
 - 	
,O,- - -r   c                 z   | j                          | j                  d      }g dg dgddgd}t        j                  t              5 } |j
                  di | d d d        dt        j                        v sJ t        j                  t              5 }|j                  g dgd	
       d d d        dt        |j                        v sJ dgdgdggdgdgdgggddgd}t        j                  t              5 } |j                  di | d d d        dt        |j                        v sJ g dgg dggddgd}t        j                  t              5 } |j                  di | d d d        dt        |j                        v sJ y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w)Ntest_invalid_embeddings)0r  r  )z1.2z2.243.2r;   r  r   	embedding)z1.1z2.3r  rD   r   r   r   r   r   r   r   rp   )rK   rL   r   r   r6  rM   rb  r   rO   r  r  )r#   rS   invalid_recordsrd  s       r$   r  r    s   
LLN))*CDJ '(>?u~O 
z	" *a
))*#agg,&&& 
z	" 
a34 	 	


 #agg,&&& aS1##(>?u~O 
z	" -a
,O,-#agg,&&& ((+;*<=u~O 
z	" -a
,O,-#agg,&&&9* *

 
- -- -s0   FF;F%F1FF"%F.1F:c                 ,   | j                          | j                  d      } |j                  di t         t	        j
                  t              5 } |j                  di t         d d d        dt        j                        v sJ y # 1 sw Y   #xY w)N$test_dimensionality_update_exceptionr`  rp   )rK   rL   rM   r   r   r   r   r  ra  rb  r   rc  s      r$   $test_dimensionality_exception_updater  1  z    
LLN))*PQJJNN%_%	y	! 8Q
7678s177|+++8 8rf  c                 ,   | j                          | j                  d      } |j                  di t         t	        j
                  t              5 } |j                  di t         d d d        dt        j                        v sJ y # 1 sw Y   #xY w)N$test_dimensionality_upsert_exceptionr`  rp   )rK   rL   rM   r   r   r   r   r  ra  rb  r   rc  s      r$   $test_dimensionality_exception_upsertr  >  r  rf  c                     t         j                  j                  d      rt        j                  d       | j                          y )NCHROMA_INTEGRATION_TEST_ONLY"Skipping test for integration test)r   environr   r   r   r   )
client_ssls    r$   test_ssl_self_signedr  H  s,    	zz~~4589r2   c                 0   t         j                  j                  d      rt        j                  d       | j                          | j                  j                  j                  }t        j                  t              5 }t        j                  d|       d d d        t        j                  t        j                         |j                   |j                   j"                        }| j%                          ddj'                  |      v sJ y # 1 sw Y   wxY w)Nr  r  T)sslportCERTIFICATE_VERIFY_FAILED )r   r  r   r   r   r   _server	_settingschroma_server_http_portr   r6  r   
HttpClient	tracebackformat_exceptionr  r   __traceback__r   join)r  _portrd  stack_traces       r$   'test_ssl_self_signed_without_ssl_verifyr   N  s    	zz~~4589((@@E	z	" 2a512,,QWWqww 5 5K !!#&"''+*>>>>2 2s   >DD)gư>)r  r   r   chromadb.errorsr   chromadb.api.fastapir   chromadb.api.typesr   r   r   chromadb.configr   r	   chromadb.server.fastapir   tempfilenumpyrc   r   r    r
   r   "chromadb.utils.embedding_functionsr   mkdtempr   fixturer%   r)   boolr1   r  r7   markparametrizerX   rv   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r#  r(  r*  r,  r1  r7  r8  r;  r>  rA  rF  rC  rH  rK  rN  rQ  rT  rV  ra  ri  bad_number_of_results_queryre  rh  rn  rt  rp  rv  ry  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rp   r2   r$   <module>r     s4      ' ( G G $ 6     	  ( h  7 7( 7 7&"$ "F F$ F ):(;<# =#0 ):(;<# =#8 ):(;<$ =$D ):(;<+ =+*>2 #$45#%<=#(#$ #$45#%<=#(/+#\?F'#+($=./b#,
9,!!%"/; #$455>uE	a 
CF::99  #$455>XsO,w	.BC /M9W #$455>uEuE ((((((,
b ()>?5>  -/DE 
 )*:; ,,!
J #$4502GH5>uEuE	 (,,#" 		 (uERuERweTvUS	 .5(p$(T ./5>uE	a +,EF$'N-J@$ &$)N" #<4"//!,0:(("4 .0@A uE	a	!
  #$455>eL	a
 	+)+.\-%'V,,?r2   