
    ug              
       \   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    K/var/www/openai/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   sE    
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C1BABHHY'1B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~      ss   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      s^    
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     sW    
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  sg    
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   {  s`    
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     sY    
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     s^    
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     sO    
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     sK    
LLN))+6J	y	8L(#;< 
9	8	8s   AA$c                 z   | 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 ]w  }| j                  |      }|j                  dk(  r7|j                  J |j                  d   dk(  sJ |j                  d
   dk(  rXJ |j                  dk(  sj|j                  wJ  y )NrD   r_   )r.   r/   r   r   r.   r/   r`   )r.   cr   r   )rK   rL   r   rN   r   r{   r   r   )r#   
metadata_arS   collectionscollection_names        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     sg    
LLN
[) &&{3J??k))) 
y	!**<8
 
"	!	!s   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    sP    	{	#u""<0 
$ ;;+++ 
$	#s   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  6  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  G  sW    
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  R  s`    
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  ]  sd    
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"  u  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_floatr2    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_addr9    sH    
LLN))*DEJ	z	4
.-. 
5	4	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)
Nr6  r   r   r;   r   r3  r4  r1  rp   )rK   rL   rM   r  r   r   r7  r  r   s     r$   test_metadata_validation_updater<    sf    
LLN))*DEJJNN&%&	z	4ug'Hc?1KL 
5	4	4s   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   r3  r4  r&  )rK   rL   r   r   r7  r   r   s     r$   test_where_validation_getr?    sM    
LLN))*ABJ	z	1g#78 
2	1	1r:  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   r3  r4  )r   r'  )rK   rL   r   r   r7  rO   r   s     r$   test_where_validation_queryrB    sS    
LLN))*ABJ	z	1)GhPS_;UV 
2	1	1s   A  A)r0  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$   rD  rD    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   rF  r   s      r$   rI  rI    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 )	NrI  r  $gtgffffffr&  rB   r_   rp   rF  r   s      r$   test_where_gtrL    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 )	NrI  r  $gter0  r&  rB   rD   rp   rF  r   s      r$   test_where_gterO    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 )	NrI  r  $ner/  r&  rB   rD   rp   rF  r   s      r$   test_where_ne_stringrR    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 )NrI  r  rQ  rD   r&  rB   r  $eqr0  rp   rF  r   s      r$   test_where_ne_eq_numberrU    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&  rE  2rD   )rE  rK  $andrK  )r  $orrZ  r.   	$containsr:   firstsecondrp   )rK   rL   rM   rG  r   r   r7  r   r   s     r$   rW  rW    s|   
LLN))*FGJJNN&%&	z	"kJ?;< 
# 
z	"kE3<89 
# 
z	"k1Q+?@A 
# 
z	"f{UAJ&?@A 
# 
z	"!&
K%3LM 	 	
 
#
 
z	"K%4{UAJ6OPQ 	 	
 
#
 
z	"e{UAJ&?%@AB 
# 
z	"eR[) 
# 
z	"cK#89: 
# 
z	";01 (+ 	 	
 
#	"A 
#	" 
#	" 
#	" 
#	" 
#	"
 
#	"
 
#	" 
#	" 
#	" 
#	"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_addrf  ^  sq    
LLN))*JKJJNN%_%	y	!Q
434 
"s177|+++ 
"	!   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_queryra  rp   )rK   rL   rM   r   r   r   r   rO   bad_dimensionality_queryrc  r   rd  s      r$   ri  ri  h  ss    
LLN))*PQJJNN%_%	y	!Q
434 
"s177|+++ 
"	!rg  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)NrW  zwhere documentr   rE  z$nestedr_   where_documentrA  r[  )r   rm  rY  z$unsupporteddocrZ  rp   )	rK   rL   rM   rG  r   r   r7  r   rO   r   s     r$   #test_query_document_valid_operatorsro  r  s   
LLN))*FGJJNN&%&	z)9	:uy!n&=> 
; 
z)9	:)[RSDTU 
; 
z)9	:{B&78 
; 
z	"v/F&GH 
# 
z	"!^U$;ne=T#UV 	 	
 
#
 
z	"uU/C.D&EF 
# 
z	"ubk2 
# 
z	";"6!78;:NO 	 	
 
#	"1 
;	: 
;	: 
;	: 
#	" 
#	"
 
#	" 
#	" 
#	"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_documentr[  doc1rl  rB   rD   greatr_   badr   rp   )rK   rL   rM   contains_recordsr   r4   r   s      r$   rq  rq    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   r[  rr  rD   )r   rm  rG   rB   r   rA  rs  r_   rt  
datapointsrp   )rK   rL   rM   ru  rO   r4   r   r   r   rc  r   )r#   rS   r!  re  s       r$   rw  rw    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_documentr[  rr  rl  rD   rt  rs  r   rp   )rK   rL   rM   ru  r   r   r   s     r$   rz  rz    s    
LLN))*FGJJNN&%&k6%:;"""k5%9:"""k7%;<"""r2   )g?g      @r   )gffffff?gGz@r   )r;   r  id3id4rn  )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_operatorsrY  rZ  r  rN  r`   r  rE  gffffff?r}  rn  r&  rB   rT  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_operatorsrY  r[  r\  rn  rl  rB   rD   rZ  r]  r_   r  rQ  )rm  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   rA  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   rA  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  X  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   r7  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['AB 
4 
z	3t, 
4	3 
4	3 
4	3s   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_idrA  rD   r  IDr   validr   )
rK   rL   r   r   r7  rM   rc  r   r   r   rd  s      r$   r  r    s    
LLN))*;<J	z	"a)!E 
#3qww< 
z	"a1 
#3qww< 
z	"awl+ 
#3qww< 
#	"
 
#	"
 
#	"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J0I1"1#&0I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  :  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  E  sE    13&+Bi0iiD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  L  s   ))..S)00<CCEK))..S)00<CCEK16s;7G1HI1HA#A3'1HDI16s;7G1HI1HA#A3'1HD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  d  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   rc  r   typer7  )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  r{  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   r{  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    s`    
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   r7  rM   rc  r   rO   r  r  )r#   rS   invalid_recordsre  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_exceptionra  rp   )rK   rL   rM   r   r   r   r   r  rb  rc  r   rd  s      r$   $test_dimensionality_exception_updater  2  s    
LLN))*PQJJNN%_%	y	!Q
767 
"s177|+++ 
"	!rg  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_exceptionra  rp   )rK   rL   rM   r   r   r   r   r  rb  rc  r   rd  s      r$   $test_dimensionality_exception_upsertr  ?  r  rg  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  I  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   r7  r   
HttpClient	tracebackformat_exceptionr  r   __traceback__r   join)r  _portre  stack_traces       r$   'test_ssl_self_signed_without_ssl_verifyr  O  s    	zz~~4589((@@E	z	"a51 
#,,QWWqww 5 5K !!#&"''+*>>>> 
#	"s   >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-  r2  r8  r9  r<  r?  rB  rG  rD  rI  rL  rO  rR  rU  rW  rb  rj  bad_number_of_results_queryrf  ri  ro  ru  rq  rw  rz  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'#+($=//d#,
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   