
    LKi0                     N   % S SK rS SKrS SKJr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr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	K"J#r#  S SK$J%s  J&s  Jr  S S
K J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0  S SK1J2r2  S SK3J%s  J&s  J4r4  S SK5J6r6J7r7J8r8  S SK9r:S SK;r;S SK<J=r=J>r>  \2" S 5      q?\\@\A4   \BS'   SrCS\@SS4S jrDSMS jrE\R                  " \R                  " \R                  5      SS9rI\R                  \\:R                  \:R                  \:R                  4      \BS'   \R                  " \R                  " SSS9SS9rO\R                  \A   \BS'   \ " S S5      5       rP\R                  " \Rb                  " SS 9S!S9rQ " S" S#\(5      rR " S$ S%\R5      rSS&\R                  S'\!SS4S( jrU\R                  R                  \7S)S*9S&\R                  S'\!SS4S+ j5       rXS'\!SS4S, jrYS'\!SS4S- jrZS&\R                  S'\!SS4S. jr[S'\!SS4S/ jr\S'\!SS4S0 jr]S'\!SS4S1 jr^S'\!SS4S2 jr_S'\!SS4S3 jr`\R                  R                  S4S*9S'\!SS4S5 j5       rbS'\!SS4S6 jrc\R                  R                  S7S8S9/0S:S9S;00S<S=S;00S9/S9S;0S>.S9/S=S;0S?.S9/S9S;0S=S;0S@./5      S'\!S7\SS4SA j5       re\" \R                  " \:R                  \:R                  \:R                  \A\h/5      SB9SC\\   SS4SD j5       ri\" \R                  " \:R                  \:R                  \:R                  \A\h/5      SB9SC\\   SS4SE j5       rj\" \R                  " \@\k/5      SF9SG\\   SS4SH j5       rlSMSI jrmS'\!SS4SJ jrnS'\!SS4SK jroS'\!SS4SL jrpg)N    N)	overrides)givensettingsHealthCheck)DictSetcastUnionDefaultDictAnyList)	dataclass)ID
EmbeddingsIncludeIDsvalidate_embeddingsnormalize_embeddings)System)	ClientAPI)
Collection)
BundleRuleBasedStateMachineMultipleResultsrule
initializepreconditionconsumesrun_state_machine_as_testmultiple	invariant)defaultdict)is_client_in_processNOT_CLUSTER_ONLYcreate_isolated_database)wait_for_version_increaseget_collection_versionc                      gNr    r*       h/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/test/property/test_embeddings.py<lambda>r-   3   s    Ar+   tracesi,  keyreturnc                 &    [         U ==   S-  ss'   g )N   )r.   r/   s    r,   tracer4   9   s    
3K1Kr+   c                  ^    [         R                  5        H  u  p[        U  SU 35        M     g )Nz: )r.   itemsprint)r/   values     r,   print_tracesr9   >   s'    lln
Rw  %r+   dtyper3   dtype_shared_st   i   )	min_value	max_value	dimensiondimension_shared_stc                   (    \ rS rSrSrSrSrSrSrSr	g)	EmbeddingStateMachineStatesM   r   add_embeddingsdelete_by_idsupdate_embeddingsupsert_embeddingsr*   N)
__name__
__module____qualname____firstlineno__r   rD   rE   rF   rG   __static_attributes__r*   r+   r,   rB   rB   M   s    J%N#M++r+   rB   T)with_hnsw_paramscollc            
         ^  \ rS rSr% \\S'   \" S5      r\\   \S'   Sr	S)S\
S\4U 4S jjjr\" \S9S\R                  4S	 j5       r\S*S j5       r\" \\R&                  " \5      S9S\R(                  S
\\   4S j5       r\" \R0                  " \" \5      SS9S9S\S
S4S j5       r\" S 5      \" \R&                  " \\SSS9S9S\R(                  S
S4S j5       5       r\" S 5      \" \R&                  " \\R<                  " \\R>                  5      SSS9S9S\R(                  S
S4S j5       5       r \!" 5       S*S j5       r"\!" 5       S*S j5       r#\!" 5       S*S j5       r$\!" 5       S*S j5       r%\" S  5      \!" 5       S*S! j5       5       r&S
\4S" jr'S\R(                  S
S4S# jr(S$\)\*   S
S4S% jr+S&\,S
S4S' jr-S(r.U =r/$ )+EmbeddingStateMachineBaseY   
collectionembedding_idsFclient
use_searchc                    > [         TU ]  5         Xl        X l        [        R
                  R                  U 5      U l        g N)super__init__rT   rU   
hypothesisstatefulRuleStrategy_rules_strategyselfrT   rU   	__class__s      r,   rY   "EmbeddingStateMachineBase.__init__^   s1    $)22??Er+   rR   c                 .   U R                   R                  UR                  UR                  UR                  S9U l        UR                  U l        [        S5        U R                  [        R                  5        [        R                  " / / / / S9U l        g )N)namemetadataembedding_functioninitids	metadatas	documents
embeddings)rT   create_collectionrd   re   rf   rR   r4   on_state_changerB   r   
strategiesStateMachineRecordSetrecord_set_state)r_   rR   s     r,   r   $EmbeddingStateMachineBase.initialized   s~    ++77(()<< 8 

 #-"?"?f8CCD * @ @bB2!
r+   r0   Nc                 b    U R                   R                  U R                  R                  5        g rW   )rT   delete_collectionrR   rd   r_   s    r,   teardown"EmbeddingStateMachineBase.teardowns   s    %%doo&:&:;r+   target
record_setrz   c           
      Z   [        S5        U R                  [        R                  5        [        R
                  " U5      n[        US   5      S:  a  [        S5        [        US   5      R                  U R                  S   5      n[        U5      S:  Ga,  [        [        US   5      R                  U5      5      nU Vs/ s H  oRS   R                  U5      PM     nn[        R                  " U Vs/ s H
  orS   U   PM     snUS   (       a  U Vs/ s H
  orS   U   PM     snOS US   (       a  U Vs/ s H
  orS   U   PM     snOS US   (       a  U Vs/ s H
  orS   U   PM     snOS S9nU R                  R                   " S	0 UD6  U R#                  [%        [        R&                  U5      5        [)        US   6 $ U R                  R                   " S	0 UD6  U R#                  [%        [        R&                  U5      5        [)        US   6 $ s  snf s  snf s  snf s  snf s  snf )
NrD   ri   r   add_more_embeddingsrj   rk   rl   rh   r*   )r4   rn   rB   rD   
invariantswrap_alllensetintersectionrq   list
differenceindexro   NormalizedRecordSetrR   add_upsert_embeddingsr	   	RecordSetr    )	r_   rz   normalized_record_setr   new_idsidindicesifiltered_record_sets	            r,   rD   (EmbeddingStateMachineBase.add_embeddingsw   s   
 	8GGH@J@S@SA
 $U+,q0'(078EE!!%(
 |q 34U;<GGUVGHOP"U399"=GP..BIJ'Qu5a8'J,[9 OVVg[A!DgV,[9 OVVg[A!DgV,\: QXXPW1l CA FPWX   OO8"78##D)=)=?R$ST0788 OO8"78##D)=)=?T$UV259::- Q KV W  Ys   H5HH
9H#H(r2   min_sizeri   ri   c                 "   [        S5        U R                  [        R                  5        U Vs/ s H   o R                  S   R                  U5      PM"     nnU R                  R                  US9  U R                  [        U5      5        g s  snf )Nzremove embeddingsri   r   )
r4   rn   rB   rE   rq   r   rR   delete_remove_embeddingsr   )r_   ri   r   indices_to_removes       r,   rE   'EmbeddingStateMachineBase.delete_by_ids   sx    !"8FFGNQRc2259??CcR3'$5 67 Ss   'Bc                 8    [        U R                  S   5      S:  $ Nri      r   rq   ru   s    r,   r-   "EmbeddingStateMachineBase.<lambda>       s4#8#8#?@AEr+   r   collection_strategyid_strategyr   max_sizerz   c                     [        S5        U R                  [        R                  5        U R                  R
                  " S0 UD6  U R                  U5        g )Nzupdate embeddingsr*   )r4   rn   rB   rF   rR   updater   r_   rz   s     r,   rF   +EmbeddingStateMachineBase.update_embeddings   E     	!"8JJK,,
+r+   c                 8    [        U R                  S   5      S:  $ Nri      r   ru   s    r,   r-   r      r   r+   c                     [        S5        U R                  [        R                  5        U R                  R
                  " S0 UD6  U R                  U5        g )Nzupsert embeddingsr*   )r4   rn   rB   rG   rR   upsertr   r   s     r,   rG   +EmbeddingStateMachineBase.upsert_embeddings   r   r+   c                     [         R                  " U R                  [        [        R
                  U R                  5      5        g rW   )r}   countrR   r	   ro   r   rq   ru   s    r,   r   EmbeddingStateMachineBase.count   s,    OOT*"6"68M8MN	
r+   c                 D    [         R                  " U R                  5        g rW   )r}   no_duplicatesrR   ru   s    r,   r   'EmbeddingStateMachineBase.no_duplicates   s      1r+   c                     [         R                  " U R                  [        [        R
                  U R                  5      SU R                  U R                  S9  g )Ngffffff?)rR   rz   
min_recallrf   rU   )	r}   ann_accuracyrR   r	   ro   r   rq   rf   rU   ru   s    r,   r   &EmbeddingStateMachineBase.ann_accuracy   s@    J00$2G2GH#66	
r+   c                 ~   U R                  5       (       a!  U R                  R                  5       S:X  d   eg [        [        R
                  U R                  5      n[        R                  " U R                  U5        [        R                  " U R                  U5        [        R                  " U R                  U5        g r)   )_is_state_emptyrR   r   r	   ro   r   rq   r}   embeddings_matchmetadatas_matchdocuments_match)r_   rq   s     r,   fields_match&EmbeddingStateMachineBase.fields_match   s    !!??((*a///  $J$8$8$:O:OP''9IJ&&t8HI&&t8HIr+   c                 ,    [        U R                  5      $ rW   )r#   rT   ru   s    r,   r-   r      s    )$++6r+   c                     U R                   R                  n[        R                  " XR                  /U R
                  5        g rW   )rT   _systemr}   log_size_below_maxrR   has_collection_mutated)r_   systems     r,   r   ,EmbeddingStateMachineBase.log_size_below_max   s3    
 ,,%%__%t'B'B	
r+   c                 X    U R                   R                  5        H  nU(       d  M    g   g)NFT)rq   values)r_   fields     r,   r   )EmbeddingStateMachineBase._is_state_empty   s(    **113Eu 4 r+   c           	      ,   [         R                  " U5      n[        US   5       GHk  u  p4X@R                  S   ;   Ga'  U R                  S   R	                  U5      nUS   b  US   U   U R                  S   U'   OBUS   c   eU R
                  c   eU R                  US   U   /5      S   U R                  S   U'   US   b~  U R                  S   U   nUbQ  [        [        [        [        [        [        [        4   4   U5      nUS   U   b  UR                  US   U   5        OOUS   U   U R                  S   U'   US   b  US   U   U R                  S   U'   GM=  GM@  U R                  S   R                  U5        US   b%  U R                  S   R                  US   U   5        ONU R
                  c   eUS   c   eU R                  S   R                  U R                  US   U   /5      S   5        US   b%  U R                  S   R                  US   U   5        OU R                  S   R                  S 5        US   b'  U R                  S   R                  US   U   5        GMM  U R                  S   R                  S 5        GMn     g )Nri   rl   rk   r   rj   )r}   r~   	enumeraterq   r   rf   r	   r   strr
   intfloatr   append)r_   rz   r   idxr   
target_idxrq   s          r,   r   ,EmbeddingStateMachineBase._upsert_embeddings  s$   @J@S@SA
 !!6u!=>GC**511!2259??C
(6B .l;C@ )),7" 1=III22>>> //.{;C@A  )),7" )5A (,'<'<['I*'U$'3+/ eCeO&<!<=?O,( 1=cBN,33 5k B3 G
 ! 2+>sC --k:& )5A .k:3? ))+6" B %%e,33B7(6B)),7>>-l;C@  22>>>0=III)),7>>//2;?DE
 )5A))+6==-k:3? ))+6==dC(5A))+6==-k:3? ))+6==dCG ?r+   r   c                     [        U5      nUR                  SS9  U HC  nU R                  S   U	 U R                  S   U	 U R                  S   U	 U R                  S   U	 ME     g )NT)reverseri   rl   rj   rk   )r   sortrq   )r_   r   indices_listr   s       r,   r   ,EmbeddingStateMachineBase._remove_embeddingsJ  st    -.$'A%%e,Q/%%l3A6%%k215%%k215	 r+   	new_statec                 <    U[         R                  :w  a  SU l        g g )NT)rB   r   r   )r_   r   s     r,   rn   )EmbeddingStateMachineBase.on_state_changeT  s    3>>>*.D' ?r+   )r]   rT   rR   rf   r   rq   rU   Fr0   N)0rH   rI   rJ   rK   r   __annotations__r   rS   r   r   r   boolrY   r   collection_stro   r   rv   r   
recordsetsr   r   rD   stlistsr   r   rE   r   rF   one_of	safe_textrG   r!   r   r   r   r   r   r   r   r   r   r   r   rn   rL   __classcell__r`   s   @r,   rP   rP   Y   s    & 7M6":7"Fy Fd F F =)
Z%:%: 
 *
 < < 
((7';)=)= ';/RTBU ';	';R 
bhhx.;<8 8 8 =8 EF	(( -%	
,J,@,@ ,T , G, EF	(( -		-1E1EF	
,J,@,@ ,T , G, [
 

 [2 2 [
 
 [
J 
J 6 [
 
 GDZ-A-A GDd GDR6CH 6 6/ / / /r+   rP   c            
         ^  \ rS rSr% \" S5      r\\   \S'   SS\S\	4U 4S jjjr
\" \S9S\R                  4U 4S jj5       r\" S	 5      \" 5       SS j5       5       r\" \\R$                  " \5      S9S\R&                  S
\\   4U 4S jj5       r\" \R.                  " \" \5      SS9S9S\S
S4U 4S jj5       r\" S 5      \" \R$                  " \\SSS9S9S\R&                  S
S4U 4S jj5       5       r\" S 5      \" \R$                  " \\R8                  " \\R:                  5      SSS9S9S\R&                  S
S4U 4S jj5       5       rSrU =r $ )EmbeddingStateMachineiY  rS   rT   rU   c                 $   > [         TU ]  X5        g rW   )rX   rY   r^   s      r,   rY   EmbeddingStateMachine.__init__\  s    ,r+   rb   rR   c                    > [         TU ]  U5        [        SU R                  R                  S   SUR
                  5        SU l        [        5       U l        U R                  R                  5       S   U l
        g )Nz7[test_embeddings][initialize] Initialize collection id r   z$ hypothesis generated collection id r   version)rX   r   r7   rR   _modelr   log_operation_countr   unique_ids_in_log	get_modelcollection_version)r_   rR   r`   s     r,   r    EmbeddingStateMachine.initialize_  se    :&EOO""4(2MM		
 $% *-%"&//";";"=i"Hr+   c                     [         (       + =(       a.    U R                  S:  =(       a    [        U R                  5      S:  $ )N
   r   )r$   r   r   r   ru   s    r,   r-   EmbeddingStateMachine.<lambda>m  s8    )) ,$$r),&&'!+,r+   r0   Nc                    [        U R                  U R                  R                  5      nXR                  :  d   eXR                  :  a(  [        S5        Xl        SU l        [        5       U l        g [        SU5        [        U R                  U R                  R                  U[        S9nSU l        [        5       U l        X l        g )NzT[test_embeddings][wait_for_compaction] collection version has changed, so reset to 0r   zY[test_embeddings][wait_for_compaction] wait for version to increase from current version )additional_time)r'   rT   rR   rd   r   r7   r   r   r   r&   VERSION_INCREASE_WAIT_TIME)r_   current_versionnew_versions      r,   wait_for_compaction)EmbeddingStateMachine.wait_for_compactionl  s     1doo>R>RS"9"9999 444f '6#'(D$%(UD"k 4$$ :	K ()D$%(UD"&1#r+   rx   rz   c           	      >  > [         TU ]  U5      n[        R                  " U5      n[	        SUS   S[        US   5      5        U =R                  [        US   5      -  sl        US    H/  nX@R                  ;  d  M  U R                  R                  U5        M1     U$ )Nz,[test_embeddings][add] Non Intersection ids ri    len )	rX   rD   r}   r~   r7   r   r   r   r   )r_   rz   resr   r   r`   s        r,   rD   $EmbeddingStateMachine.add_embeddings  s    
 g$Z0@J@S@SA
 	:!%(%e,-		
 	  C(=e(D$EE '.B///&&**2. / 
r+   r2   r   r   ri   c                    > [         TU ]  U5        [        SUS[        U5      5        U =R                  [        U5      -  sl        U H/  nX R
                  ;   d  M  U R
                  R                  U5        M1     g )Nz[test_embeddings][delete] ids r   )rX   rE   r7   r   r   r   remove)r_   ri   r   r`   s      r,   rE   #EmbeddingStateMachine.delete_by_ids  sb    c".Wc#hG  CH, B+++&&--b1 r+   c                 8    [        U R                  S   5      S:  $ r   r   ru   s    r,   r-   r     r   r+   r   r   r   c                    > [         TU ]  U5        [        SUS   S[        [        R
                  " US   5      5      5        U =R                  [        [        R
                  " US   5      5      -  sl        g )Nz[test_embeddings][update] ids ri   r   )rX   rF   r7   r   r}   wrapr   )r_   rz   r`   s     r,   rF   'EmbeddingStateMachine.update_embeddings  sd     	!*-,u

5 123		
 	  C

58I(J$KK r+   c                 8    [        U R                  S   5      S:  $ r   r   ru   s    r,   r-   r     r   r+   c                   > [         TU ]  U5        [        SUS   S[        [        R
                  " US   5      5      5        U =R                  [        [        R
                  " US   5      5      -  sl        [        R
                  " US   5       H/  nX R                  ;  d  M  U R                  R                  U5        M1     g )Nz[test_embeddings][upsert] ids ri   r   )	rX   rG   r7   r   r}   r  r   r   r   )r_   rz   r   r`   s      r,   rG   'EmbeddingStateMachine.upsert_embeddings  s     	!*-,u

5 123		
 	  C

58I(J$KK //*U"34B///&&**2. 5r+   )r   r   r   r   r   )!rH   rI   rJ   rK   r   rS   r   r   r   r   rY   r   r   ro   r   r   r   r   r   r   r   rD   r   r   r   r   rE   rF   r   r   rG   rL   r   r   s   @r,   r   r   Y  s    & 7M6":7-y -d - - =)
IZ%:%: 
I *
I 	,
 
V2 2: 
((7)=)= /RTBU 	" 
bhhx.;<2 2 2 =2 EF	(( -%	
LJ,@,@ LT L GL EF	(( -		-1E1EF	
/J,@,@ /T / G/r+   r   caplogrT   c                    ^ [        T5        U R                  [        R                  5        [	        U4S j[        S[        R                  /S9S9  [        5         g )Nc                     > [        T 5      $ rW   r   rT   s   r,   r-   'test_embeddings_state.<locals>.<lambda>  s    %f-r+   _ deadlinesuppress_health_checkr   	r%   	set_levelloggingERRORr   r   r   filter_too_muchr9   r  rT   s    `r,   test_embeddings_stater    sE    V$
W]]#-;3N3N2O
 Nr+   z-Search API only available in distributed mode)reasonc                    ^ [        T5        U R                  [        R                  5        [	        U4S j[        S[        R                  /S9S9  [        5         g)z@Test embeddings state machine using search API instead of query.c                     > [        T SS9$ )NT)rU   r  r  s   r,   r-   3test_embeddings_state_with_search.<locals>.<lambda>  s    %f>r+   r  r  r  Nr  r  s    `r,   !test_embeddings_state_with_searchr!    sG     V$
W]]#>;3N3N2O
 Nr+   c                 $   [        U 5        [        U 5      nUR                  [        R                  " SSSSS.S [
        R                  " 5       S[        R                  0 / SSS9
S9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  / S	QS
S/SS/SS/SS/SS/SS/// SQS S.S9u  p#pEpgUR                  5         UR                  5         UR                  5         UR                  5         UR                  X#XEU/S9  [        (       d  UR!                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR#                  5         g )NA00   hnsw:construction_efhnsw:search_efhnsw:Mr<   FT
rd   re   rf   r   r?   r:   known_metadata_keysknown_document_keywordshas_documentshas_embeddingsrb   )012345      ?     ?     P?     ?     ÿ     ?          ?     ?     Ϳ)NNNNNNri   rl   rj   rk   r   r   )r%   r   r   ro   r   uuiduuid4npfloat16r   r   r   r   rD   rE   r$   r   rv   )rT   statev1v2v3v4v5v6s           r,   test_add_then_delete_n_minus_1rJ    s   V$!&)E	(((+"%
  $zz|** "$&
  $ 
	KKM		"111^, 01!>2"M200 >
 2 BBB 
	KKM			RRR01!!#		KKM			NNr+   c                    [        U 5        [        U 5      nUR                  [        R                  " SSSSSSSSSS.S [
        R                  " S	5      S
[        R                  0 / SSS9
S9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  / SQS/S
-  S/S
-  S/S
-  S/S
-  S/S
-  S/S
-  /SSSSSSSS.S SSSS.SSS.SSSSSSS SS!S"S#.
S$S%S&S'S(S)S*SS+SS,.
/S S-.S.9u  nnnnnnUR                  5         UR                  5         UR                  5         UR                  5         UR                  S/S/S
-  /S S S-.S.9u  nUR                  5         UR                  5         UR                  5         UR                  5         UR                  S0S1/S/S
-  S/S
-  /S S2SS3SS4./S S-.S.9u  pUR                  5         UR                  5         UR                  5         UR                  5         UR                  / S5QS/S
-  S/S
-  S/S
-  /S6S7S8S9S:S;S<SS=.S>S?0S@SSASBSSSCSDSSSESF./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  SGSHSIUU	/S/S
-  S/S
-  S/S
-  S/S
-  S/S
-  /SJSKSSLSMSNSOSPSQ.SNSRSSST.SUSSVSWSX.SYSZSSS[S\.S /S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  UUU
UU/S/S
-  S/S
-  S/S
-  S/S
-  S/S
-  /0 S]S_S^S__S`S_SaS_SbSc_SdSe_SfS_SgSh_SiS_SjS_SeSk_SlSm_SnS_SoSp_SqS_SrSs_StSu_SSvSwSxSy.ES SzS{SS|S}.SNS~SS.SSSSSS*S7SS./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  X4X/S/S
-  S/S
-  S/S
-  S/S
-  /SSS.SSUSSSSS0SS0SNSSSSSSSSS./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  U/S/S
-  /SSlSSSSSS.S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  / SQS/S
-  S/S
-  S/S
-  S/S
-  /SSSSS.SS0SShS.SS0/S S-.S.9u  nnnnUR                  5         UR                  5         UR                  5         UR                  5         UR                  SSSU/S/S
-  S/S
-  S/S
-  S/S
-  /SS0S(SpSSSSS.S7SSSkSSSSSSS.
SjS0/S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  X;/S/S
-  S/S
-  /0 SS_SS_SS_SS_SS_SS_SS_SSN_SS_SSh_SS_SS_S|S_SS_SCS_SS_SS_SSSSSSSSSS.	ESSSSSSkS./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  U/S/S
-  /S S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  UUUUU/S/S
-  S/S
-  S/S
-  S/S
-  S/S
-  /SS0SSS.S SSSSSSSS.SSSSSSSS./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  X)SSU/S/S
-  S/S
-  S/S
-  S/S
-  S/S
-  /S SSSSSSSS.SSSSkSS.SSSSSS.SSSSSSS./S S-.S.9  UR                  5         UR                  5         UR                  5         UR                  5         UR!                  5         g )NfOIByFHtmYRTipiU5KdoaYsUQ_EWStV4r$  )z-7n92WhVE_zJ-sW
wPGA8hY7uX4rAr&  r'  r(  z$ff006990-82c3-494b-97d5-cbb05092c861i  Tr)  rb   )kgaT4dzC2h2YoNSgUqRyE-Tmxf3MTzODI-yOtbvCr   i{5DkqA9o6           g   `UUտVT)szd1wQJV-9hWf7gwQrbyHgPe0r6qQ5XYxeqPzXpiqBi|E)hqTZ6Ok767eCSwyvGEuig8aTRGxN1h8Ii)ATRsKF0Piig      vReDiig      <)
PcFwuPSWCgxEQtupcOfhueUzI4tOMfHM7uU58tW_muctZfSvOyiuDCOcywKhsii;[g      p>-g    .i)
iuTAKznMg6IdUKxaPioyzc0Zb3VTUktBu-uW6innbsomMXnpsEEEFul8JRjHi7lrYr>  r   uaK_yFsHiO5g      )
RiaaN9MNpqg9WxuexOHh2)SCeelWyLAWG_oHalYr1  iObg   >   ii     g    >A)0ZbYq40POT9sTxkMz-jrqsBEfrELJctJoVeLqtsPZp5M4XFtiilyDy6q7LZUWzKuQG8m-Ti  xGwkig   ;*A)fPAPtmtxKb6CG18Vr[  zc-G92nYTTBWs31rbM_L_PQDSCuxOGzFeGgh7cuT_ruA3mnzO3m3-X1ZNt2PF6M5_qIj0Yh6iKiM  34oWsr93EUl    ~.Ag   Xc80eze-QXuDdnxYMd)2fDAuv74Etz5hqGH60G-yZ6PWyM1BOkMjjGyTkwZvpmS5HbTAIbvqzPhLgg   `ff?)WKyGNZphPCKay88gsh3x_iJDcig)z_zVO2i-NtWHxoltu_E_fg9yGpikZnQ3ALwA2   iL)otM8EGeKm
skf71O0UKTzS8Kc8-l95Rpc4bGz1QmzbKVySN1yrXFl56CmDS08FhBFXAIAWx4dcB5i8w8mwQ5c7G9g2JVYzVQGb_r-hzoAg    M0lMigFg   ?dRDugrcoZv45Bg   @  zUG-sSVcri4cT1GidIii
xM0jUV4U2rmsuFYMwj_SXc)FqFWR__r2  vwo4WERBljY3aWjWnqLWFib@iHr3  )mf4UtV_NVCw   )VWuP7uF8r1  g      iL   )a1ML_Zl2Ir85KolESaXiJvAO8orMSr.  5AeE2q	6T9tEEC84i  )YxlGe5GMXUvsAljL5V5ELRv	yeLTrhAIq      ?iP      r  Rii&  ip )pzHn2YfdftMEd0C5ekByb7mhdbLJCViuLT5YOoVwEvq8Wf6iŭebEKOxi	g   uA)C1KbOOlKkzzLo9CGU2NHMfpu77F70Iclz	dz6fI-GppqVVWQrcq645F)F7Rig1RXiz_nC8-ii  g   @̼+A)FBtaPcQWV24vddLq1My3mbUL9IfIHLxuosTATUP1)AhCwm9AwPKim}4GJrAunf5
J8O0R8VGaYnK67gg    .Ag   `\A)K2cCgoObAcpaxafzpxnRCSPJUF4JZ2sKOIRDcznBaQ6F1O38etVMhss2angu-g   g    #
AiSNcMrT   )
UwbDWM2_r1  nfoovt
elaMLbhEvWr.  UOr  3ssGS4rSKXsKqRPFTBGrRPPsuGwVtTwei_qscyRBC_TPIXd	N0FG7Nta1g   >&woDB   IV0L3xImGgz9N--JBl0uH_au_KVmhtcAqrNfL6taIVpCXJXl
8YaEynJznBiONg   $AebBi  g   
@	cRl59jW_Og    ~.g      8g   @w)	fJz
QK8l3l4yP-r0  z	-XP899RRnA9UlxNwmcG1NoCdWRn5cD	HExeVM0iMiSh)zAbCKkEvE4shnFNUc9vXWYz-iRt88MxYq)55m28krQsTFdqMhYjhFiHg      ?VG7E7xmio#  1xXUHLklmIVSVgQd7EHUCu5wakl6)9SnviLf
Y0Jw4pLTwrv3E
Fx3jsbcdqyHz-USisBi
xtLNrNyRo2g    ),)rn  Qfm_6duLSh0LkduZt5qsRJrF8DMMZr  7OiaiD4eKi٨ii])tVsBzTRzbq6VslBBo2_12hgyKNPddxify34-np-F7FcZpODwCTHg91o4mKTjBL1Zjfyslg3z_TG-YhAQQ)1qrTKV8tLuQHsxar  UepiV6K_g    YR)prRUDZ_uRfFG6cZvICaGczunTbxz0qd2-AV1iC9OePgaBYi%D)EXXVBZUtJMO4oF8g8nr3  hv3i)r%   r   r   ro   r   r?  UUIDrA  rB  r   r   r   r   rD   rG   rF   rv   )rT   rC  embedding_ids_0embedding_ids_1embedding_ids_2embedding_ids_3embedding_ids_4embedding_ids_5embedding_ids_6embedding_ids_7embedding_ids_8embedding_ids_9embedding_ids_10embedding_ids_11embedding_ids_12s                  r,   test_embeddings_flake1rp  -  s   V$!&)E	((!")(+"%	  $yy?@** "$&'
  . 
	KKM		 	Qc	c	c	c	c	c	  .) #6# /90
 -f=#" #!*-1 +1'1 /$ $)";)T i5
 	 7	r 
	KKM		--39+	
 . _ 
	KKM		',';';&>39qcCi0", 3	 
 (< ($O  
	KKM			139qcCi!s; !* 5/3 #	 !$"*!!,1#%.4 ;
   B 
	KKM			  39qcCi!sQC#IsSyQ  & */+#$:"*	 1*;
 !5etT&"&$(5B 14 G$
  &N 
	KKM			   39qcCi!sQC#IsSyQus % 	
 D C $ "#6 d  *   . e  !" #$  %+7(+. IUcJ/5I*). (#1	7%L _0
  2f 
	KKM			#oW39qcCi!sQC#IF"t4$d#U$	 d3-1'"+!	( /
  6 
	KKM			#$39+&4#!( 
    
	KKM		 	139qcCi!sQC#IF %+&*$$	 $(;<f
 
 	 	& 
	KKM			3939qcCi!sQC#IFt$21!%,0/< !6$("3"1: e-0 7
  > 
	KKM			#539qcCi0* %  	
 2 * %d 5 % / d 3  !$   !" 5#$ &"'$!*0#"+5: $(' &*;%L S*
  ,Z 
	KKM			#$39+	
   
	KKM			 !  39qcCi!sQC#IsSyQg!U;/"&*"+5  %(,!&#. A!
  #H 
	KKM			#eT?S39qcCi!sQC#IsSyQ7=/4$% &%. $"$(&0  -$&"3!D K&
  (R 
	KKM			NNr+   c                    [        U5        [        U5      nUR                  [        R                  " SSSSS.S [
        R                  " S5      S[        R                  0 / SSS9
S	9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  / S
QSS/SS/SS/SS/SS/// SQS S.S9u  p4pVnUR                  5         UR                  5         UR                  5         UR                  5         UR                  U/SS//X30/S S.S9  UR                  5         UR                  5         g )Nr#  r$  r%  z$2fb0c945-b877-42ab-9417-bfe0f6b172afr<   FTr)  rb   )r.  r/  r0  r1  r2  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  )NNNNNr>  r   g     ?g     ?)r%   r   r   ro   r   r?  rb  rA  rB  r   r   r   r   rD   rF   rv   )r  rT   rC  rD  rE  rF  rG  rH  s           r,   test_update_nonerr  I  sq   V$!&)E	(((+"%
  $yy?@** "$&
  $ 
	KKM		--,^, 01!>2"M20 8
 . BBB 
	KKM			4)+;<=(	
   
	NNr+   c                    [        U 5        [        U 5      nUR                  [        R                  " S0 SS_SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S [
        R                  " S5      S[        R                  0 / SSS9
S 9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  / S!Q/ S"Q/ S#Q/ S$Q/ S%Q/ S&Q/ S'Q/S S S(.S)9nS*n0 nU H  nXTU'   US+-  nM     UR                  5         UR                  5         UR                  5         UR                  5         UR                  US*   US,   S-US.   S/// S0Q/ S1Q/ S2Q/ S3Q/ S4Q/S S S5.S)9  UR                  5         UR                  5         UR                  5         UR                  5         [        (       d  UR!                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  S6US*   US,   // S7Q/ S8Q/ S9Q/S S S(.S)9  UR                  5         UR                  5         UR                  5         UR                  5         UR#                  US:   US+   US.   US,   US   /S;9  UR                  5         UR                  5         UR                  5         UR                  5         UR                  S<S=S>S?US+   // S@Q/ SAQ/ SBQ/ SCQ/ SDQ/S S S5.S)9nSEnU H  nXTU'   US+-  nM     UR                  5         UR                  5         UR                  5         [        (       d  UR!                  5         g g )FNKR3cfUfmxsi3r  bMMvvrqM4MKmp5CJB8Ai  rt  T37PNiVkn5KZfkpod3ND5soL_KA4zcZL9lRN9   Oc8G7ysXmE8lp4Hos_POQe8Unz1uJBI930U   teFtyMr  R0ZiZr  IOwir&  r$  r'  r(  z$284b6e99-b19e-49b2-96a4-a2a93a95447dr   r)  rb   )255r"  z3-r   Nk9yPvT)g333333?gffffff@r  )      @      @r<   )r2   r<   r   )   r      )g!@g      "@   )r  r  ffffff@r>  r   r   r2   r  KWcDaHUVD6MxEiJr   PdlP1d6w)r2      r  )r   r   	   )r  r   r   )r   r     )r2   r   r  )ri   rl   rk   rj   TpjiboLSuYWBJDbRW1zeNmC)r  r  r  )r  r  r   )r2   r   r  r<   r   oD3V84RtTDwlc9C8_evn)r  g@g(\	@)gHzG?gQ@gp=
ף@)g#@g#@g?)gffffff#@r  r  )g333333@r  gL#@r  )r%   r   r   ro   r   r?  rb  rA  float32r   r   r   r   rD   rG   r$   r   rE   )rT   rC  rl   r   emb_list	embeddings         r,   test_add_delete_addr    s   V$!&)E	((8%u T 	
 #D  %m " e t  T v ' !#  #!$  $yy?@** "$&7
  > 
	KKM		%%9 
 & J 	
AH		Q   
	KKM			 ! &y)Y	R
   
	KKM		!!#		KKM			-x{HQKH$i;	
   
	KKM			a[(1+x{HQK!M   
	KKM		%%$D"   
 & J 	
A		Q   
	KKM	!!# r+   c                 `   [        U 5        U R                  SS9nUR                  S/S//S9  UR                  5       S:X  d   eUR                  S/S//S9  UR                  5       S:X  d   eUR	                  5       nUS   S/:X  d   eUR                  S/S9  UR                  5       S	:X  d   eg )
Nfoord   arX  ri   rl   r2   ri   r   r   )r%   rm   r   r   getr   )rT   rN   resultss      r,   test_multi_addr    s    V$###/DHH#SE7H+::<1 	HH#SE7H+::<1hhjG5>cU"""KKSEK::<1r+   c                    [        U 5        U R                  SS9n[        R                  " [        R
                  5         UR                  SS/S/S//S9  S S S 5        [        R                  " [        R
                  5         UR                  SS/S/S//S9  S S S 5        g ! , (       d  f       NR= f! , (       d  f       g = f)Nr  r  r  rX  g?r  )r%   rm   pytestraiseserrorsDuplicateIDErrorr   r   rT   rN   s     r,   test_dup_addr    s    V$###/D	v..	/c3ZcUSEN; 
0	v..	/c
u~> 
0	/ 
0	/	/	/s   B"B3"
B03
Cc           	         [        U 5        U R                  SS9n/ SQn[        R                  R	                  SS5      n[        R                  R	                  SS5      n[        R                  R                  X445      R                  5       nUR                  [        [        U5      US9nU H;  nXg   nUc   e[        U V	s/ s H  n	[        U	5      S:H  PM     sn	5      (       a  M;   e   g s  sn	f )	Nr  r  )rk   rj   rl   	distancesr2   i  d   )query_embeddingsincluder   )r%   rm   rA  randomrandinttolistqueryr	   r   allr   )
rT   rN   fieldsr$  r  r  r  r   field_resultsresults
             r,   test_query_without_addr    s    V$###/DKF
		!T"A
		!S!Ayy''/668jjj*:;V  G (((=A=CK1$=ABBBB  Bs   C-
c                     [        U 5        U R                  SS9nUR                  S// SQS9n[        US   5      S:X  d   e[        US   5      S:X  d   e[        US	   5      S:X  d   e[        US
   5      S:X  d   eg )Nr  r  r  )rk   rj   rl   )ri   r  ri   r   rj   rk   rl   )r%   rm   r  r   )rT   rN   r  s      r,   test_get_non_existentr  .  s    V$###/DXX3%)QXRFve}"""vk"#q(((vk"#q(((vl#$)))r+   z9We don't properly escape SQL internally, causing problemsc                     [        U 5        SnU R                  SS9nUR                  U/S//S9  UR                  5       S:X  d   eUR	                  U/S9  UR                  5       S:X  d   eg )	Nr  r  rX  r  r2   r   r   )r%   rm   r   r   r   )rT   r   rN   s      r,   test_escape_chars_in_idsr  9  sp    V$	B###/DHH"C5'H*::<1KKRDK::<1r+   c                     [        U 5        U R                  SS9n[        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr  r  )r%   rm   r  r  
ValueErrorr   r  s     r,   test_delete_empty_failsr  D  s>    V$###/D	z	" 
#	"	"s   A
Akwargsri   r  wherebarwhere_documentz	$contains)ri   r  )ri   r  )ri   r  r  c                 \    [        U 5        U R                  SS9nUR                  " S0 UD6  g )Nr  r  r*   )r%   rm   r   )rT   r  rN   s      r,   test_delete_successr  K  s.      V$###/DKK&r+   )supported_typesr  c           	         [         R                  " SSU 5      n[        [        [        [        U5      5      5      n[        U Vs/ s H  n[        U[        R                  5      =(       a    UR                  [        R                  :H  =(       de    UR                  [        R                  :H  =(       dA    UR                  [        R                  :H  =(       d    UR                  [        R                  :H  PM     sn5      (       d   eg s  snf Nr   )ro   create_embeddingsr   r	   r   r   r  
isinstancerA  ndarrayr:   r  float64int32int64r  embdsvalidated_embeddingsr8   s       r,   9test_autocasting_validate_embeddings_for_compatible_typesr  a  s     ((RAE. '	
  .		
 . ubjj) rzz) +;;"**,+;;"((*+ ;;"((* .		
   		
   B4Dc           	         [         R                  " SSU 5      n[        [        [        [        U5      5      5      n[        U Vs/ s H  n[        U[        R                  5      =(       a    UR                  [        R                  :H  =(       de    UR                  [        R                  :H  =(       dA    UR                  [        R                  :H  =(       d    UR                  [        R                  :H  PM     sn5      (       d   eg s  snf r  )ro   create_embeddings_ndarrayr   r	   r   r   r  r  rA  r  r:   r  r  r  r  r  s       r,   1test_autocasting_validate_embeddings_with_ndarrayr  z  s     00RIE.Z-e45  .		
 . ubjj) rzz) +;;"**,+;;"((*+ ;;"((* .		
   		
r  )unsupported_typesr  c           	         [         R                  " SSU 5      n[        R                  " [        5       n[        [        [        [        U5      5      5        S S S 5        S[        WR                  5      ;   d   eg ! , (       d  f       N*= f)Nr   zsExpected embeddings to be a list of floats or ints, a list of lists, a numpy array, or a list of numpy arrays, got )ro   r  r  r  r  r   r	   r   r   r   r8   )r  r  rm  s      r,   7test_autocasting_validate_embeddings_incompatible_typesr    sj     ((R1BCE	z	"aD-A%-HIJ 
# 	~qww<			 
#	"s   #A::
Bc                      [         R                  " / 5      /n [        R                  " [        5       n[        U 5        S S S 5        S[        W5      ;   d   eg ! , (       d  f       N = f)NzExpected each embedding in the embeddings to be a 1-dimensional numpy array with at least 1 int/float value. Got a 1-dimensional numpy array with no values at pos)rA  arrayr  r  r  r   r   )r  rm  s     r,   test_0dim_embedding_validationr    sQ    "E	z	"aE" 
# 	mq6		 
#	"s   A
A&c           	      L   [        U 5        U R                  SS9n[        XR                  5      n[	        SSS5       H8  nUR                  [	        X3S-   5       Vs/ s H  n[        U5      PM     snS9  M:     [        (       d  [        XR                  U[        5        g g s  snf )Nnoopr  r     r  r   )
r%   rm   r'   rd   ranger   r   r$   r&   r   )rT   rN   initial_versionbatchr   s        r,   test_no_op_compactionr    s    V$###0D,VYY?Oq$$uck)BC)BAQ)BCD %!II0J	
  Ds   B!
c           
      B   [        U 5        SnSnU R                  SS9n[        XR                  5      n[	        SX5       Hf  n[	        XUU-   5       Vs/ s H  ofPM     nnU Vs/ s H  n[        U5      PM     nnUR                  X Vs/ s H  nSU-  SU-  S-   /PM     snS9  Mh     [        (       d  [        XR                  U[        5        [        XR                  5      n[	        SX5       HJ  n[	        XUU-   5       Vs/ s H  ofPM     nnU Vs/ s H  n[        U5      PM     nnUR                  US	9  ML     [        (       d  [        XR                  U[        5        [        UR                  5       S
   5      S:X  d   eg s  snf s  snf s  snf s  snf s  snf )Nr  r  add_then_purger  r   r<   r2   r  r   ri   )r%   rm   r'   rd   r  r   r   r$   r&   r   r   r   r  )	rT   record_countbatch_countrN   witness_versionr  r   record_id_vals
record_idss	            r,   test_add_then_purger    s   V$LK##)9#:D,VYY?O q,4%*5+2E%FG%F!%FG&45nc!fn
5N'SNqQA	(:N'S 	 	
 5 !II0J	

 -VYY?Oq,4%*5+2E%FG%F!%FG&45nc!fn
5
# 5 !II0J	

 txxz% !Q&&&- H5'S H5s   F$F
FFFc                    [        U 5        U R                  S5      n[        XR                  5      nSn[	        X3S-   5       Vs/ s H  n[        U5      PM     nn[	        X3S-   5       Vs/ s H  oDS-  US-  /PM     nnUS-   nUR                  XVS9  UR                  US9  [        (       d  [        XR                  U[        5        [        XR                  5      nSn[	        X3U-   5       Vs/ s H  n[        U5      PM     nn[	        X3U-   5       Vs/ s H  oDS-  US-  /PM     nnUR                  XVS9  UR                  US9  UR                  XVS9  [        (       d  [        XR                  U[        5        UR                  5       n[        US   5      U:X  d   eU H  n	XS   ;   a  M   e   g s  snf s  snf s  snf s  snf )	Nencompassing_deleter   r  g      ?r  r      ri   )r%   rm   r'   rd   r  r   r   r   r$   r&   r   r  r   )
rT   colr  id_startr   ri   rl   
len_to_addget_resultsr   s
             r,   test_encompassing_deleter    s   V$

"
"#8
9C,VXX>OH a<8
98a3q68C
9.3Hl.KL.Ks7AG$.KJL!|HGGG+JJ3J!HHo/I	
 -VXX>O J j+@A
BAa3q6AC
B.3H>S.TU.Ts7AG$.TJUGGG+JJ3JGGG+!HHo/I	

 '')K{5!"j000'''' = :L CUs   F7+F<0GGr   )qhypothesis.statefulrZ   hypothesis.strategiesr   r  r  ro   r   r   r   r   typingr   r   r	   r
   r   r   r   dataclassesr   chromadb.api.typesr   r   r   r   r   r   chromadb.configr   chromadb.errorsr  chromadb.apir   chromadb.api.models.Collectionr   !chromadb.test.property.strategiestestpropertyr   r   r   r   r   r   r   r   r    r!   collectionsr"   !chromadb.test.property.invariantsr}   chromadb.test.conftestr#   r$   r%   numpyrA  r?  -chromadb.test.utils.wait_for_version_increaser&   r'   r.   r   r   r   r   r4   r9   sharedsampled_fromfloat_typesr;   SearchStrategyrB  r  r  integersr@   rB   r   rP   r   LogCaptureFixturer  markskipifr!  rJ  rp  rr  r  r  r  r  r  xfailr  r  parametrizer  r  r  r   r  r  r   r  r  r  r  r  r*   r+   r,   <module>r     s         " 3 3 A A A !  #   " 5 6 6   $ 6 6 
   !,I 6CH 6 ! s t 
! IIbooj4457C ""	"**bjj"**
,- D /1iiKK!t,+/ R&&s+ 
 , , , 		*00$GVT}/ 5 }/@~/5 ~/B	&":": 	I 	RV 	 :  
f.F.F 
PY 
^b 
	
39 3 3lY9 Y Yx4V55 4y 4T 4n$	 $d $D9  &? ?t ?C9 C C *) * * UVY 4  WI $  		5%.!	K/05%.1K+?@7U^*E2	
	 3 4  r

BHHbhhU'STU#Y	 V0 r

BHHbhhU'STU#Y	 V* #t56
Cy
	
 7
	
) 	
 	
'	 'd 'D&(Y &(4 &(r+   