
    3i                        S SK r S SKJrJr  S SKrS SKrS SKrS SKJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SKJr   " S S\
\	   5      rS	\4S
 jrS	\4S jr\R.                  \" 5       4S\
\	   S	\\R0                  SS4   4S jj5       r\" 5       SS4S\R0                  S\
\	   S\S\S	S4
S jjr\R8                  R:                  S\R0                  S	S4S j5       rg)    N)	Generatorcast)
EmbeddableEmbeddingFunction
EmbeddingsImageDocument)hashing_embedding_function)_exact_distances)Settingsc                   0    \ rS rSrSS jrS\S\4S jrSrg)	hashing_multimodal_ef   returnNc                 >    [        S[        R                  S9U l        g )N
   )dimdtype)r
   npfloat64_hef)selfs    ]/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/test/ef/test_multimodal_ef.py__init__hashing_multimodal_ef.__init__   s    .2RZZH	    inputc                    U Vs/ s H  n[        U5      PM     nn[        R                  " U R                  U5      5      nU[        R                  R                  USSS9-  n[        [        UR                  5       5      $ s  snf )N   T)axiskeepdims)	strr   arrayr   linalgnormr   r   tolist)r   r   ito_texts
embeddingss        r   __call__hashing_multimodal_ef.__call__   sk    $)*EqCFE*XXdii12
 	biinnZa$nGG
J
 1 1 344 +s   B)r   )r   N)	__name__
__module____qualname____firstlineno__r   r   r   r*   __static_attributes__ r   r   r   r      s    I5j 5Z 5r   r   r   c                  ^    [         R                  R                  SSS[         R                  S9$ )Nr      )r   r      )sizer   )r   randomrandintint64r1   r   r   random_imager9   !   s$    99Q+RXXFFr   c                  (    [        [        5       5      $ )N)r"   r9   r1   r   r   random_documentr;   %   s    |~r   
default_efc              #     #    [        5       n[        R                  R                  S5      (       a\  [        R                  R                  SS5      n[	        [        R                  R                  SS5      5      nSUl        X1l        X!l        [        R                  " US9nUR                  SU S	9nUv   UR                  5         g 7f)
NCHROMA_INTEGRATION_TEST_ONLYCHROMA_SERVER_HOST	localhostCHROMA_SERVER_HTTP_PORTr   zchromadb.api.fastapi.FastAPI)settingsmultimodal_collection)nameembedding_function)r   osenvirongetintchroma_api_implchroma_server_http_portchroma_server_hostchromadbClientcreate_collectionclear_system_cache)r<   rB   hostportclient
collections         r   rC   rC   )   s      zH	zz~~455zz~~2K@2::>>";Q?@#A +/(&*#__h/F))$ * J 
s   CCr   r4   rC   
n_examplesn_query_resultsc                    [         R                  R                  5       n[         R                  R                  S5        [	        U5       Vs/ s H  n[        U5      PM     nn[	        U5       Vs/ s H  n[        5       PM     nnU" U5      n	[	        USU-  5       Vs/ s H  n[        U5      PM     n
n[	        U5       Vs/ s H  n[        5       PM     nnU" U5      n[        R                  " [        SS9   U R                  US   US   US   S9  S S S 5        U R                  XS9  U R                  XhS9  U R                  S/S	9n[        US
   5      [        U
5      [        U5      -   :X  d   e[        US
   5       HO  u  p^X;   d  X;   d   eUS   c   eX;   a  US   U   XR                  U5         :X  d   eX;   d  MD  US   U   c  MO   e   [        5       nU" U/5      n[!        UX-   5      u  nnUS   S U  Vs/ s H  nXR:  a  Xe   OXU-     PM     nn[        5       nU" U/5      n[!        UX-   5      u  nnUS   S U  Vs/ s H  nXR:  a  Xe   OXU-     PM     nn[        R                  " [        5         U R#                  U/U/S9  S S S 5        U R#                  U/US/S9nUS
   S   U:X  d   eU R#                  U/US/S9nUS
   S   U:X  d   e[         R                  R%                  U5        g s  snf s  snf s  snf s  snf ! , (       d  f       GN= fs  snf s  snf ! , (       d  f       N= f)Nr      z|Exactly one of (images|documents|uris)(?:, (images|documents|uris))?(?:, (images|documents|uris))? must be provided in add\.)match)ids	documentsimagesrZ   r[   rZ   r\   r[   )includerZ   )query_imagesquery_texts)r`   	n_resultsr_   )ra   rb   r_   )r   r6   	get_stateseedranger"   r9   r;   pytestraises
ValueErroraddrH   len	enumerateindexr   query	set_state)rC   r<   rU   rV   random_stater'   	image_ids_r\   image_embeddingsdocument_idsr[   document_embeddings
get_resultidquery_imagequery_image_embeddingimage_neighbor_indicesnearest_image_neighbor_idsquery_documentquery_document_embeddingdocument_neighbor_indicesnearest_document_neighbor_idsquery_results                           r   test_multimodalr   >   s    99&&(LIINN1!&z!23!2AQ!2I3&+J&78&7ln&7F8!&)$)*a*n$EF$EqCF$ELF,1*,=>,=q",=I>$Y/ 
 N

 	!!!	!VAY 	" 	

 ,D); '**K=*AJz% !S%6Y%GGGG:e,-!R_44+&222k*1-;M;Mb;Q1RRRR?k*1-555 . .K&}5 0/E!A (*+;O<"<A 	LZ,HH<  " %&N)>*:;#3 "2"H$ q
 +1-.>?%?A 	LZ,HH? " % 
z	"##%^4D 	$ 	
 
# )..!]o} / L q!%???? )..#$+ / L q!%BBBBII%] 48 G>
 
D"% 
#	"s<   K?/LL	L9LL%L*L/
L"/
L=c                     [        5       n[        5       nSnU R                  X1S9  U R                  X2S9  U R	                  US/S9nUS   c   eUS   S   b   eg )N0r]   r^   r[   )rZ   r_   r   )r;   r9   ri   updaterH   )rC   documentimagerv   ru   s        r   !test_multimodal_update_with_imager      sx      HNE	B"9  R 6&**rK=*IJk"...k"1%---r   )rF   typingr   r   numpyr   rf   rM   chromadb.api.typesr   r   r   r   r	   !chromadb.test.property.strategiesr
   !chromadb.test.property.invariantsr   chromadb.configr   r   r9   r;   fixture
CollectionrC   rI   r   markxfailr   r1   r   r   <module>r      s#   	 "     I > $

5-j9 
5Ge G  0E0G !*- x""D$./   , 1F0G	X&#..X&!*-X& X& 	X&
 
X&v .#...	. .r   