Ë
    lQêj  ã                   ó¨  — d dl Z d dlmZmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ  G d„ de
e	   «      Zd	efd
„Zd	efd„Zej.                   e«       fde
e	   d	eej0                  ddf   fd„«       Z e«       ddfdej0                  de
e	   deded	df
d„Zej8                  j:                  dej0                  d	dfd„«       Zy)é    N)Ú	GeneratorÚcast)Ú
EmbeddableÚEmbeddingFunctionÚ
EmbeddingsÚImageÚDocument)Úhashing_embedding_function)Ú_exact_distances)ÚSettingsc                   ó$   — e Zd Zdd„Zdedefd„Zy)Úhashing_multimodal_efÚreturnNc                 óD   — t        dt        j                  ¬«      | _        y )Né
   )ÚdimÚdtype)r
   ÚnpÚfloat64Ú_hef)Úselfs    úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/ef/test_multimodal_ef.pyÚ__init__zhashing_multimodal_ef.__init__   s   € Ü.°2¼R¿Z¹ZÔHˆ�	ó    Úinputc                 ó
  — |D �cg c]  }t        |«      ‘Œ }}t        j                  | j                  |«      «      }|t        j                  j                  |dd¬«      z  }t        t        |j                  «       «      S c c}w )Né   T)ÚaxisÚkeepdims)	Ústrr   Úarrayr   ÚlinalgÚnormr   r   Útolist)r   r   ÚiÚto_textsÚ
embeddingss        r   Ú__call__zhashing_multimodal_ef.__call__   sj   € Ø$)Ö*˜q”C˜•FÐ*ˆÐ*Ü—X‘X˜dŸi™i¨Ó1Ó2ˆ
ð 	”b—i‘i—n‘n Z°aÀ$�nÓGÑGˆ
Ü”J 
× 1Ñ 1Ó 3Ó4Ð4ùò +s   …B )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r(   © r   r   r   r      s   „ óIð5˜jð 5¨Zô 5r   r   r   c                  ód   — t         j                  j                  dddt         j                  ¬«      S )Nr   éÿ   )r   r   é   )Úsizer   )r   ÚrandomÚrandintÚint64r,   r   r   Úrandom_imager4   !   s$   € Ü�9‰9×Ñ˜Q ¨+¼R¿X¹XÐÓFÐFr   c                  ó(   — t        t        «       «      S )N)r    r4   r,   r   r   Úrandom_documentr6   %   s   € ÜŒ|‹~ÓÐr   Ú
default_efc              #   ó”  K  — t        «       }t        j                  j                  d«      r^t        j                  j                  dd«      }t	        t        j                  j                  dd«      «      }d|_        ||_        ||_        t        j                  |¬«      }|j                  d| ¬	«      }|–— |j                  «        y ­w)
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)r7   r=   ÚhostÚportÚclientÚ
collections         r   r>   r>   )   s£   è ø€ ô ‹z€HÜ	‡z�z‡~�~Ð4Ô5Ü�z‰z�~‰~Ð2°KÓ@ˆÜ”2—:‘:—>‘>Ð";¸QÓ?Ó@ˆØ#AˆÔ Ø+/ˆÔ(Ø&*ˆÔ#ä�_‰_ hÔ/€FØ×)Ñ)Ø$¸ð *ó €Jð ÒØ
×ÑÕùs   ‚CCr   r/   r>   Ú
n_examplesÚn_query_resultsc                 ón  — t         j                  j                  «       }t         j                  j                  d«       t	        |«      D �cg c]  }t        |«      ‘Œ }}t	        |«      D �cg c]  }t        «       ‘Œ }} ||«      }	t	        |d|z  «      D �cg c]  }t        |«      ‘Œ }
}t	        |«      D �cg c]  }t        «       ‘Œ }} ||«      }t        j                  t        d¬«      5  | j                  |d   |d   |d   ¬«       d d d «       | j                  |
|¬«       | j                  ||¬«       | j                  dg¬	«      }t        |d
   «      t        |
«      t        |«      z   k(  sJ ‚t        |d
   «      D ]H  \  }}||
v s||v sJ ‚|d   €J ‚||
v r|d   |   ||
j                  |«         k(  sJ ‚||v sŒ?|d   |   €ŒHJ ‚ t        «       } ||g«      }t!        ||	|z   «      \  }}|d   d | D �cg c]  }||k  r||   n|
||z     ‘Œ }}t        «       } ||g«      }t!        ||	|z   «      \  }}|d   d | D �cg c]  }||k  r||   n|
||z     ‘Œ }}t        j                  t        «      5  | j#                  |g|g¬«       d d d «       | j#                  |g|dg¬«      }|d
   d   |k(  sJ ‚| j#                  |g|dg¬«      }|d
   d   |k(  sJ ‚t         j                  j%                  |«       y c c}w c c}w c c}w c c}w # 1 sw Y   �Œ	xY wc c}w c c}w # 1 sw Y   ŒšxY w)Nr   é   z|Exactly one of (images|documents|uris)(?:, (images|documents|uris))?(?:, (images|documents|uris))? must be provided in add\.)Úmatch)ÚidsÚ	documentsÚimages©rU   rV   ©rU   rW   rV   )ÚincluderU   )Úquery_imagesÚquery_texts)r[   Ú	n_resultsrZ   )r\   r]   rZ   )r   r1   Ú	get_stateÚseedÚranger    r4   r6   ÚpytestÚraisesÚ
ValueErrorÚaddrC   ÚlenÚ	enumerateÚindexr   ÚqueryÚ	set_state)r>   r7   rP   rQ   Úrandom_stater%   Ú	image_idsÚ_rW   Úimage_embeddingsÚdocument_idsrV   Ú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Ð  € ô —9‘9×&Ñ&Ó(€LÜ‡I�I‡N�N�1Ôä!& zÓ!2Ö3˜A”�Q•Ð3€IÐ3Ü&+¨JÓ&7Ö8 Œl�nÐ8€FÐ8Ù! &Ó)Ðä$)¨*°a¸*±nÓ$EÖF˜q”C˜•FÐF€LÐFÜ,1°*Ó,=Ö> q”Õ"Ð>€IÐ>Ù$ YÓ/Ðô 
�‰Üð Nô
ñ 
ð
 	×!Ñ!Ø˜!‘¨	°!©¸VÀA¹Yð 	"ô 	
÷
ð ×Ñ ,¸)ÐÔDà×Ñ )°FÐÔ;ð '×*Ñ*°K°=Ð*ÓA€JÜˆz˜%Ñ Ó!¤S¨Ó%6¼¸Y»Ñ%GÒGÐGÐGÜ˜: eÑ,Ó-ò 6‰ˆˆ2Ø�\Ñ! R¨9¡_Ð4Ð4Ø˜+Ñ&Ð2Ð2Ð2Ø�ÑØ˜kÑ*¨1Ñ-°¸<×;MÑ;MÈbÓ;QÑ1RÒRÐRÐRØ�Š?Ø˜kÑ*¨1Ñ-Ñ5Ð5Ð5ð6ô “.€KÙ&¨ }Ó5Ðä 0ØÐ/Ð2EÑEó!ÑÐ˜Að (¨Ñ*Ð+;¨OÐ<ö"àð ˜Jšˆ	�!Š¨L¸¸Z¹Ñ,HÑHð"Ðð "ô %Ó&€NÙ)¨>Ð*:Ó;ÐÜ#3Ø Ð"2Ð5HÑ"Hó$Ñ Ð˜qð
 +¨1Ñ-Ð.>¨Ð?ö%àð ˜Jšˆ	�!Š¨L¸¸Z¹Ñ,HÑHð%Ð!ð %ô 
�‰”zÓ	"ñ 
Ø×#Ñ#Ø%˜°^Ð4Dð 	$ô 	
÷
ð )×.Ñ.Ø!�]¨oÈÀ}ð /ó €Lð ˜Ñ˜qÑ!Ð%?Ò?Ð?Ð?ð )×.Ñ.Ø#Ð$°È+Èð /ó €Lð ˜Ñ˜qÑ!Ð%BÒBÐBÐBÜ‡I�I×Ñ˜Õ%ùò] 4ùÚ8ùò GùÚ>÷
ñ 
üòD"ùò%÷
ð 
ús<   ÁL Á,LÂL
Â9LÃ/LÇ>L!ÉL&É<L+ÌLÌ+L4c                 óÆ   — t        «       }t        «       }d}| j                  ||¬«       | j                  ||¬«       | j	                  |dg¬«      }|d   €J ‚|d   d   �J ‚y )NÚ0rX   rY   rV   )rU   rZ   r   )r6   r4   rd   ÚupdaterC   )r>   ÚdocumentÚimagerq   rp   s        r   Ú!test_multimodal_update_with_imager�   ™   s|   € ô Ó €HÜ‹N€EØ	€Bà×Ñ "°ÐÔ9à× Ñ  R°Ð Ô6à&×*Ñ*¨r¸K¸=Ð*ÓI€JØ�kÑ"Ð.Ð.Ð.Ø�kÑ" 1Ñ%Ð-Ð-Ñ-r   )rA   Útypingr   r   Únumpyr   ra   rH   Úchromadb.api.typesr   r   r   r   r	   Ú!chromadb.test.property.strategiesr
   Ú!chromadb.test.property.invariantsr   Úchromadb.configr   r   r4   r6   ÚfixtureÚ
Collectionr>   rD   r{   ÚmarkÚxfailr�   r,   r   r   ú<module>rŒ      s#  ðÛ 	ß "Û Û Û ÷õ õ IÝ >Ý $ô

5Ð-¨jÑ9ô 
5ðG�eó Gð˜ó ð ‡�á0EÓ0Gñ Ø! *Ñ-ð àˆx×"Ñ" D¨$Ð.Ñ/ò ó ð ñ, 1FÓ0GØØñ	X&Ø#×.Ñ.ðX&à! *Ñ-ðX&ð ðX&ð ð	X&ð
 
óX&ðv ‡�×Ñð.Ø#×.Ñ.ð.à	ò.ó ñ.r   