
    Ig:y                        U d dl Zd dlZd dlmZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ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! d d	l"m#Z# d dl$m%c m&c mZ d d
l m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m%c m&c m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9Z:d dl;Z;d dl<m=Z=m>Z>  e2d       a?ee@eAf   eBd<   de@ddfdZCdFdZD ej                   ej                  ej                        d      ZHej                  ee:j                  e:j                  e:j                  f      eBd<    ej                   ej                  dd      d      ZNej                  eA   eBd<   e G d d             ZO ej                   ejb                  d      d       ZP G d! d"e(      ZQ G d# d$eQ      ZRd%ej                  d&e!ddfd'ZTd&e!ddfd(ZUd%ej                  d&e!ddfd)ZVd&e!ddfd*ZWd&e!ddfd+ZXd&e!ddfd,ZYd&e!ddfd-ZZd&e!ddfd.Z[ej                  j                  d/0      d&e!ddfd1       Z^d&e!ddfd2Z_ej                  j                  d3d4d5gid6d5d7iid8d9d7iid5gd5d7id:d5gd9d7id;d5gd5d7id9d7id<g      d&e!d3eddfd=       Za e ej                  e:j                  e:j                  e:j                  eAedg      >      d?ee   ddfd@       Ze e ej                  e:j                  e:j                  e:j                  eAedg      >      d?ee   ddfdA       Zf e ej                  e@egg      B      dCee   ddfdD       ZhdFdEZiy)G    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resetNOT_CLUSTER_ONLY)wait_for_version_increaseget_collection_versionc                       yNr    r*       c/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/test/property/test_embeddings.py<lambda>r-   /   s    r+   traceskeyreturnc                 &    t         | xx   dz  cc<   y )N   )r.   r/   s    r,   tracer4   2   s    
3K1Kr+   c                  \    t         j                         D ]  \  } }t        |  d|         y )Nz: )r.   itemsprint)r/   values     r,   print_tracesr9   7   s.    lln !
URw !r+   dtyper3   dtype_shared_st   i   )	min_value	max_value	dimensiondimension_shared_stc                        e Zd ZdZdZdZdZdZy)EmbeddingStateMachineStatesr   add_embeddingsdelete_by_idsupdate_embeddingsupsert_embeddingsN)__name__
__module____qualname__r   rC   rD   rE   rF   r*   r+   r,   rB   rB   F   s    J%N#M++r+   rB   T)with_hnsw_paramscollc            
           e Zd ZU eed<    ed      Zee   ed<   dZde	f fdZ
 ee      dej                  fd       Zed&d
       Z ee ej"                  e            dej$                  dee   fd       Z e ej,                   ee      d            dedd	fd       Z ed        e ej"                  eedd            dej$                  dd	fd              Z ed        e ej"                  e ej8                  eej:                        dd            dej$                  dd	fd              Z e       d&d       Z  e       d&d       Z! e       d&d       Z" e       d&d       Z# ed        e       d&d              Z$de%fd Z&dej$                  dd	fd!Z'd"e(e)   dd	fd#Z*d$e+dd	fd%Z, xZ-S )'EmbeddingStateMachineBase
collectionembedding_idsFclientc                 x    t         |           || _        t        j                  j                  |       | _        y N)super__init__rP   
hypothesisstatefulRuleStrategy_rules_strategyselfrP   	__class__s     r,   rT   z"EmbeddingStateMachineBase.__init__W   s.    )22??Er+   rN   c                 b   t        | j                         | j                  j                  |j                  |j                  |j
                        | _        |j
                  | _        t        d       | j                  t        j                         t        j                  g g g g       | _        y )N)namemetadataembedding_functioninitids	metadatas	documents
embeddings)r$   rP   create_collectionr^   r_   r`   rN   r4   on_state_changerB   r   
strategiesStateMachineRecordSetrecord_set_state)rZ   rN   s     r,   r   z$EmbeddingStateMachineBase.initialize\   s    dkk++77(()<< 8 

 #-"?"?f8CCD * @ @bB2!
r+   r0   Nc                 b    | j                   j                  | j                  j                         y rR   )rP   delete_collectionrN   r^   rZ   s    r,   teardownz"EmbeddingStateMachineBase.teardownl   s    %%doo&:&:;r+   target
record_setrr   c                    t        d       | j                  t        j                         t	        j
                  |      }t        |d         dkD  rt        d       t        |d         j                  | j                  d         }t        |      dkD  rt        t        |d         j                  |            }|D cg c]  }|d   j                  |       }}|D cg c]
  }|d   |    c}|d   r|D cg c]
  }|d   |    c}nd |d   r|D cg c]
  }|d   |    c}nd |d   r|D cg c]
  }|d   |    c}nd d} | j                  j                  d	i | | j                  t!        t"        j$                  |             t'        |d    S  | j                  j                  d	i | | j                  t!        t"        j$                  |             t'        |d    S c c}w c c}w c c}w c c}w c c}w )
NrC   rc   r   add_more_embeddingsrd   re   rf   rb   r*   )r4   rh   rB   rC   
invariantswrap_alllensetintersectionrk   list
differenceindexrN   add_upsert_embeddingsr	   ri   	RecordSetr    )	rZ   rr   normalized_record_setry   new_idsidindicesifiltered_record_sets	            r,   rC   z(EmbeddingStateMachineBase.add_embeddingsp   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"=PGPAHIA-e4Q7I(5 NUU3K@CU(5 NUU3K@CU(6 PWW!4\B1EWC  DOO8"78##D)=)=?R$ST0788  DOO8"78##D)=)=?T$UV259::) QIU V Xs   ?G( G-:G2G72G<
r2   min_sizerc   rc   c                 $   t        d       | j                  t        j                         |D cg c]   }| j                  d   j                  |      " }}| j                  j                  |       | j                  t        |             y c c}w )Nzremove embeddingsrc   r   )
r4   rh   rB   rD   rk   r|   rN   delete_remove_embeddingsrx   )rZ   rc   r   indices_to_removes       r,   rD   z'EmbeddingStateMachineBase.delete_by_ids   sy    !"8FFGNQRT2259??CRR3'$5 67 Ss   %Bc                 8    t        | j                  d         dk\  S Nrc      rw   rk   rn   s    r,   r-   z"EmbeddingStateMachineBase.<lambda>       s4#8#8#?@AE r+   r   collection_strategyid_strategyr   max_sizerr   c                     t        d       | j                  t        j                          | j                  j
                  di | | j                  |       y )Nzupdate embeddingsr*   )r4   rh   rB   rE   rN   updater~   rZ   rr   s     r,   rE   z+EmbeddingStateMachineBase.update_embeddings   G     	!"8JJK,,
+r+   c                 8    t        | j                  d         dk\  S Nrc      r   rn   s    r,   r-   z"EmbeddingStateMachineBase.<lambda>   r   r+   c                     t        d       | j                  t        j                          | j                  j
                  di | | j                  |       y )Nzupsert embeddingsr*   )r4   rh   rB   rF   rN   upsertr~   r   s     r,   rF   z+EmbeddingStateMachineBase.upsert_embeddings   r   r+   c                     t        j                  | j                  t        t        j
                  | j                               y rR   )ru   countrN   r	   ri   r   rk   rn   s    r,   r   zEmbeddingStateMachineBase.count   s,    OOT*"6"68M8MN	
r+   c                 B    t        j                  | j                         y rR   )ru   no_duplicatesrN   rn   s    r,   r   z'EmbeddingStateMachineBase.no_duplicates   s      1r+   c                     t        j                  | j                  t        t        j
                  | j                        d| j                         y )Ngffffff?)rN   rr   
min_recallr`   )ru   ann_accuracyrN   r	   ri   r   rk   r`   rn   s    r,   r   z&EmbeddingStateMachineBase.ann_accuracy   s9    J00$2G2GH#66		
r+   c                 l   | j                         r | j                  j                         dk(  sJ y t        t        j
                  | j                        }t        j                  | j                  |       t        j                  | j                  |       t        j                  | j                  |       y r)   )_is_state_emptyrN   r   r	   ri   r   rk   ru   embeddings_matchmetadatas_matchdocuments_match)rZ   rk   s     r,   fields_matchz&EmbeddingStateMachineBase.fields_match   s    !??((*a///  $J$8$8$:O:OP''9IJ&&t8HI&&t8HIr+   c                 ,    t        | j                        S rR   )r#   rP   rn   s    r,   r-   z"EmbeddingStateMachineBase.<lambda>   s    )$++6 r+   c                     | j                   j                  }t        j                  || j                  g| j
                         y rR   )rP   _systemru   log_size_below_maxrN   has_collection_mutated)rZ   systems     r,   r   z,EmbeddingStateMachineBase.log_size_below_max   s5    
 ,,%%T__%t'B'B	
r+   c                 J    | j                   j                         D ]  }|s y y)NFT)rk   values)rZ   fields     r,   r   z)EmbeddingStateMachineBase._is_state_empty   s+    **113 	E	 r+   c           	         t        j                  |      }t        |d         D ][  \  }}|| j                  d   v r| j                  d   j	                  |      }|d   |d   |   | j                  d   |<   n@|d   J | j
                  J | j                  |d   |   g      d   | j                  d   |<   |d   || j                  d   |   }|Pt        t        t        t        t        t        t        f   f   |      }|d   |   |j                  |d   |          nn|d   |   | j                  d   |<   |d   |d   |   | j                  d   |<   7| j                  d   j                  |       |d   %| j                  d   j                  |d   |          nL| j
                  J |d   J | j                  d   j                  | j                  |d   |   g      d          |d   %| j                  d   j                  |d   |          n| j                  d   j                  d        |d   &| j                  d   j                  |d   |          >| j                  d   j                  d        ^ y )Nrc   rf   re   r   rd   )ru   rv   	enumeraterk   r|   r`   r	   r   strr
   intfloatr   append)rZ   rr   r   idxr   
target_idxrk   s          r,   r~   z,EmbeddingStateMachineBase._upsert_embeddings   s+   @J@S@SA
 !!6u!=> C	DGCT**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"
 %%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C	Dr+   r   c                     t        |      }|j                  d       |D ]B  }| j                  d   |= | j                  d   |= | j                  d   |= | j                  d   |= D y )NT)reverserc   rf   rd   re   )rz   sortrk   )rZ   r   indices_listr   s       r,   r   z,EmbeddingStateMachineBase._remove_embeddings@  sy    -.$' 	6A%%e,Q/%%l3A6%%k215%%k215		6r+   	new_statec                 :    |t         j                  k7  rd| _        y y )NT)rB   r   r   )rZ   r   s     r,   rh   z)EmbeddingStateMachineBase.on_state_changeJ  s    3>>>*.D' ?r+   r0   N).rG   rH   rI   r   __annotations__r   rO   r   r   r   rT   r   collection_stri   r   ro   r   
recordsetsr   r   rC   stlistsr   r   rD   r   rE   one_of	safe_textrF   r!   r   r   r   r   r   boolr   r~   r   r   r   r   rh   __classcell__r[   s   @r,   rM   rM   R   s    & 7M6":7"Fy F
 =)
Z%:%: 
 *
 < < 
(:((7%;)=)= %;/RTBU %;	%;N 
hbhhx.;<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+   rM   c            
           e Zd ZU  ed      Zee   ed<   def fdZ e	e
      dej                  f fd       Z	 ed        e       dd
              Z ee ej                   e
            dej"                  dee   f fd       Z e ej*                   ee      d            dedd	f fd       Z ed        e ej                   e
edd            dej"                  dd	f fd              Z ed        e ej                   e
 ej4                  eej6                        dd            dej"                  dd	f fd              Z xZS )EmbeddingStateMachinerO   rP   c                 $    t         |   |       y rR   )rS   rT   rY   s     r,   rT   zEmbeddingStateMachine.__init__R  s     r+   r\   rN   c                     t         |   |       t        d| j                  j                  d   d|j
                         d| _        t               | _        | j                  j                         d   | _
        y )Nz7[test_embeddings][initialize] Initialize collection id r   z$ hypothesis generated collection id r   version)rS   r   r7   rN   _modelr   log_operation_countrx   unique_ids_in_log	get_modelcollection_version)rZ   rN   r[   s     r,   r   z EmbeddingStateMachine.initializeU  se    :&EOO""4(2MM		
 $% *-%"&//";";"=i"Hr+   c                 f    t          xr) | j                  dkD  xr t        | j                        dkD  S )N
   r   )r%   r   rw   r   rn   s    r,   r-   zEmbeddingStateMachine.<lambda>c  s8    )) ,$$r),&&'!+ r+   r0   Nc                    t        | j                  | j                  j                        }|| j                  k\  sJ || j                  kD  r)t        d       || _        d| _        t               | _        y t        d|       t        | j                  | j                  j                  |d      }d| _        t               | _        || _        y )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'   rP   rN   r^   r   r7   r   rx   r   r&   )rZ   current_versionnew_versions      r,   wait_for_compactionz)EmbeddingStateMachine.wait_for_compactionb  s     1doo>R>RS$"9"9999 T444f '6D#'(D$%(UD"k 4T__11?TWK ()D$%(UD"&1D#r+   rp   rr   c           	      4   t         |   |      }t        j                  |      }t	        d|d   dt        |d                | xj                  t        |d         z  c_        |d   D ],  }|| j                  vs| j                  j                  |       . |S )Nz,[test_embeddings][add] Non Intersection ids rc    len )	rS   rC   ru   rv   r7   rw   r   r   r}   )rZ   rr   resr   r   r[   s        r,   rC   z$EmbeddingStateMachine.add_embeddings  s    
 g$Z0@J@S@SA
 	:!%(%e,-		
 	  C(=e(D$EE '. 	/B///&&**2.	/ 
r+   r2   r   r   rc   c                     t         |   |       t        d|dt        |             | xj                  t        |      z  c_        |D ],  }|| j
                  v s| j
                  j                  |       . y )Nz[test_embeddings][delete] ids r   )rS   rD   r7   rw   r   r   remove)rZ   rc   r   r[   s      r,   rD   z#EmbeddingStateMachine.delete_by_ids  si    c".Wc#hG  CH,  	2BT+++&&--b1	2r+   c                 8    t        | j                  d         dk\  S r   r   rn   s    r,   r-   zEmbeddingStateMachine.<lambda>  r   r+   r   r   r   c                     t         |   |       t        d|d   dt        t	        j
                  |d                      | xj                  t        t	        j
                  |d               z  c_        y )Nz[test_embeddings][update] ids rc   r   )rS   rE   r7   rw   ru   wrapr   )rZ   rr   r[   s     r,   rE   z'EmbeddingStateMachine.update_embeddings  sd     	!*-,u

5 123		
 	  C

58I(J$KK r+   c                 8    t        | j                  d         dk\  S r   r   rn   s    r,   r-   zEmbeddingStateMachine.<lambda>  r   r+   c                 z   t         |   |       t        d|d   dt        t	        j
                  |d                      | xj                  t        t	        j
                  |d               z  c_        t	        j
                  |d         D ],  }|| j                  vs| j                  j                  |       . y )Nz[test_embeddings][upsert] ids rc   r   )	rS   rF   r7   rw   ru   r   r   r   r}   )rZ   rr   r   r[   s      r,   rF   z'EmbeddingStateMachine.upsert_embeddings  s     	!*-,u

5 123		
 	  C

58I(J$KK //*U"34 	/B///&&**2.	/r+   r   )rG   rH   rI   r   rO   r   r   r   rT   r   r   ri   r   r   r   r   r   r   r   rC   r   r   r   r   rD   rE   r   r   rF   r   r   s   @r,   r   r   O  s    & 7M6":7!y ! =)
IZ%:%: 
I *
I 	,
 
V2 24 
(:((7)=)= /RTBU 	" 
hbhhx.;<2 2 2 =2 EF	(:(( -%	
LJ,@,@ LT L GL EF	(:(( -!		-1E1EF	
/J,@,@ /T / G/r+   r   caplogrP   c                     | j                  t        j                         t        fdt	        dt
        j                  g             t                y )Nc                      t               S rR   )r   )rP   s   r,   r-   z'test_embeddings_state.<locals>.<lambda>  s    %f- r+   i_ )deadlinesuppress_health_check)r   )	set_levelloggingERRORr   r   r   filter_too_muchr9   )r   rP   s    `r,   test_embeddings_stater     s=    
W]]#-;3N3N2O
 Nr+   c                 "   t        |       }|j                  t        j                  dddddd t	        j
                         dt        j                  i g dd
             |j                          |j                          |j                          |j                          |j                  g d	d
dgddgddgddgddgddggg dd d      \  }}}}}}|j                          |j                          |j                          |j                          |j                  |||||g       t        s|j                          |j                          |j                          |j                          |j                          |j!                          y )NA00   hnsw:construction_efhnsw:search_efhnsw:Mr<   FT
r^   r_   r`   r   r?   r:   known_metadata_keysknown_document_keywordshas_documentshas_embeddingsr\   )012345      ?     ?     P?     ?     ÿ     ?          ?     ?     Ϳ)NNNNNNrc   rf   rd   re   r   r   )r   r   ri   r   uuiduuid4npfloat16r   r   r   r   rC   rD   r%   r   ro   )rP   statev1v2v3v4v5v6s           r,   test_add_then_delete_n_minus_1r    s   !&)E	(((+"%
  $zz|** "$&
  $ 
	KKM		"111^, 01!>2"M200 >
 2 BBB 
	KKM			RRR01!!#		KKM			NNr+   c                    t        |      }|j                  t        j                  dddddd t	        j
                  d      dt        j                  i g dd
      	       |j                          |j                          |j                          |j                          |j                  g d
ddgddgddgddgddggg dd d      \  }}}}}|j                          |j                          |j                          |j                          |j                  |gddgg||igd d       |j                          |j                          y )Nr   r   r   z$2fb0c945-b877-42ab-9417-bfe0f6b172afr<   FTr   r\   )r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  )NNNNNr  r   g     ?g     ?)r   r   ri   r   r  UUIDr  r  r   r   r   r   rC   rE   ro   )r   rP   r  r  r  r  r  r  s           r,   test_update_noner     so   !&)E	(((+"%
  $yy?@** "$&
  $ 
	KKM		--,^, 01!>2"M20 8
 . BBB 
	KKM			4)+;<=r(	
   
	NNr+   c                    t        |       }|j                  t        j                  di dddddddd	d
dddddddddddddddddddddddd t	        j
                  d      dt        j                  i g dd
              |j                          |j                          |j                          |j                          |j                  g d!g d"g d#g d$g d%g d&g d'gd d d()      }d*}i }|D ]  }|||<   |d+z  } |j                          |j                          |j                          |j                          |j                  |d*   |d,   d-|d.   d/gg d0g d1g d2g d3g d4gd d d5)       |j                          |j                          |j                          |j                          t        s|j                          |j                          |j                          |j                          |j                          |j                  d6|d*   |d,   gg d7g d8g d9gd d d()       |j                          |j                          |j                          |j                          |j!                  |d:   |d+   |d.   |d,   |d   g;       |j                          |j                          |j                          |j                          |j                  d<d=d>d?|d+   gg d@g dAg dBg dCg dDgd d d5)      }dE}|D ]  }|||<   |d+z  } |j                          |j                          |j                          t        s|j                          y y )FNKR3cfUfmxsi3g    ~.AbMMvvrqM4MKmp5CJB8Ai  -T37PNiVkn5KZfkpod3ND5soL_KA4zcZL9lRN9   Oc8G7ysXmE8lp4Hos_POQe8Unz1uJBI930U   teFtyMg      R0ZiZmIOwir   r   r   r   z$284b6e99-b19e-49b2-96a4-a2a93a95447dr   r   r\   )255lz3-r   Nk9yPvT)g333333?gffffff@g      ?)      @      @r<   )r2   r<   r   )   r      )g!@g      "@   )r8  r9  ffffff@r  r   r   r2   r:  KWcDaHUVD6MxEiJr   PdlP1d6w)r2      r:  )r   r   	   )rA  r   r   )r   rA     )r2   r   r:  )rc   rf   re   rd   TpjiboLSuYWBJDbRW1zeNmC)r:  r;  r<  )r<  rA  r   )r2   r   r;  r<   r   oD3V84RtTDwlc9C8_evn)rA  g@g(\	@)gHzG?gQ@gp=
ף@)g#@g#@g?)gffffff#@r=  r8  )g333333@r=  gL#@r;  )r   r   ri   r   r  r  r  float32r   r   r   r   rC   rF   r%   r   rD   )rP   r  rf   r   emb_list	embeddings         r,   test_add_delete_addrK  C  s   !&)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                 p   t        |        | j                  d      }|j                  dgdgg       |j                         dk(  sJ |j                  dgdgg       |j                         dk(  sJ |j	                         }|d   dgk(  sJ |j                  dg       |j                         d	k(  sJ y )
Nfoor^   a        rc   rf   r2   rc   r   r   )r$   rg   r}   r   getr   )rP   rK   resultss      r,   test_multi_addrT    s    	&M###/DHH#SE7H+::<1 	HH#SE7H+::<1hhjG5>cU"""KKSEK::<1r+   c                    t        |        | j                  d      }t        j                  t        j
                        5  |j                  ddgdgdgg       d d d        t        j                  t        j
                        5  |j                  ddgdgdgg       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)NrM  rN  rO  rP  g?rQ  )r$   rg   pytestraiseserrorsDuplicateIDErrorr}   r   rP   rK   s     r,   test_dup_addr[    s    	&M###/D	v..	/ <c3ZcUSEN;<	v..	/ ?c
u~>? ?< <? ?s   B)B5)B25B>c           	         t        |        | j                  d      }g d}t        j                  j	                  dd      }t        j                  j	                  dd      }|j                  t        j                  j                  ||f      j                         |      }|D ]2  }||   }|J t        |D cg c]  }t        |      dk(   c}      r2J  y c c}w )	NrM  rN  )re   rd   rf   	distancesr2   i  d   )query_embeddingsincluder   )	r$   rg   r  randomrandintquerytolistallrw   )	rP   rK   fieldsNKrS  r   field_resultsresults	            r,   test_query_without_addrk    s    	&M###/DKF
		!T"A
		!S!Ajj))1a&188:F  G  C(((=ACK1$ABBBC Bs   9C
c                    t        |        | j                  d      }|j                  dgg d      }t        |d         dk(  sJ t        |d         dk(  sJ t        |d	         dk(  sJ t        |d
         dk(  sJ y )NrM  rN  rO  )re   rd   rf   )rc   r`  rc   r   rd   re   rf   )r$   rg   rR  rw   )rP   rK   rj  s      r,   test_get_non_existentrm    s    	&M###/DXX3%)QXRFve}"""vk"#q(((vk"#q(((vl#$)))r+   z9We don't properly escape SQL internally, causing problems)reasonc                     t        |        d}| j                  d      }|j                  |gdgg       |j                         dk(  sJ |j	                  |g       |j                         dk(  sJ y )	NrM  rN  rP  rQ  r2   r   r   )r$   rg   r}   r   r   )rP   r   rK   s      r,   test_escape_chars_in_idsrq    so    	&M	B###/DHH"C5'H*::<1KKRDK::<1r+   c                     t        |        | j                  d      }t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)NrM  rN  )r$   rg   rV  rW  
ValueErrorr   rZ  s     r,   test_delete_empty_failsrt    sF    	&M###/D	z	"   s   AAkwargsrc   rM  wherebarwhere_documentz	$contains)rc   rv  )rc   rx  )rc   rv  rx  c                 b    t        |        | j                  d      } |j                  di | y )NrM  rN  r*   )r$   rg   r   )rP   ru  rK   s      r,   test_delete_successrz    s/      
&M###/DDKK&r+   )supported_typesr{  c           	         t        j                  dd|       }t        t        t        t        |                  }t        |D cg c]  }t        |t        j                        xrz |j                  t        j                  k(  xs[ |j                  t        j                  k(  xs< |j                  t        j                  k(  xs |j                  t        j                  k(   c}      sJ y c c}w Nr   )ri   create_embeddingsr   r	   r   r   re  
isinstancer  ndarrayr:   rH  float64int32int64r{  embdsvalidated_embeddingsr8   s       r,   9test_autocasting_validate_embeddings_for_compatible_typesr  "  s     ((RAE. '	
  .		
  ubjj) rzz) +;;"**,+;;"((*+ ;;"((*		
  		
   BC*c           	         t        j                  dd|       }t        t        t        t        |                  }t        |D cg c]  }t        |t        j                        xrz |j                  t        j                  k(  xs[ |j                  t        j                  k(  xs< |j                  t        j                  k(  xs |j                  t        j                  k(   c}      sJ y c c}w r}  )ri   create_embeddings_ndarrayr   r	   r   r   re  r  r  r  r:   rH  r  r  r  r  s       r,   1test_autocasting_validate_embeddings_with_ndarrayr  ;  s     00RIE.Z-e45  .		
  ubjj) rzz) +;;"**,+;;"((*+ ;;"((*		
  		
r  )unsupported_typesr  c           	         t        j                  dd|       }t        j                  t              5 }t        t        t        t        |                   d d d        dt        j                        v sJ y # 1 sw Y   #xY w)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 )ri   r~  rV  rW  rs  r   r	   r   r   r   r8   )r  r  es      r,   7test_autocasting_validate_embeddings_incompatible_typesr  Q  su     ((R1BCE	z	" KaD-A%-HIJK 	~qww<			K Ks   #A66A?c                      t        j                  g       g} t        j                  t              5 }t        |        d d d        dt              v sJ y # 1 sw Y   xY w)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)r  arrayrV  rW  rs  r   r   )r  r  s     r,   test_0dim_embedding_validationr  _  sX    "E	z	" #aE"# 	mq6		# #s   AAr   )jhypothesis.statefulrU   hypothesis.strategiesr   rV  r   ri   r   r   r   r   typingr   r   r	   r
   r   r   r   dataclassesr   chromadb.api.typesr   r   r   r   r   r   chromadb.configr   chromadb.errorsrX  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.invariantsru   chromadb.test.conftestr#   r$   r%   numpyr  r  -chromadb.test.utils.wait_for_version_increaser&   r'   r.   r   r   r   r4   r9   sharedsampled_fromfloat_typesr;   SearchStrategyr  rH  r  integersr@   rB   r   rM   r   LogCaptureFixturer   r  r   rK  rT  r[  rk  rm  markxfailrq  rt  parametrizerz  r  r  r   r  r  r   r  r  r*   r+   r,   <module>r     s         " 3 3 A A A !  #   " 5 6 6   $ 6 6 P P   !,I 6CH 6s t 
! BIIobooj4457C ""	"**bjj"**
,- D /8biiBKK!t,+/ R&&s+ 
 , , , 		0*00$GVTz/ 5 z/z{/5 {/|&":": I RV 29 2 2j3V55 3y 3T 3l~$	 ~$d ~$B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
r+   