
    3i                        S SK r S SKJs  Js  Jr  S SKJs  Js  Jr  S SKrS SKJr	  S SK
r
S SKrS SKJr  S SKJrJr  S SKJr  S SKJr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"  \	RF                  " \RH                  " SS	9S
S9r% " S S\5      r&\" 5       S\RN                  S\ RP                  RR                  SS4S j5       r*g)    N)
Collection)resetskip_if_not_cluster)wait_for_version_increase)BundleRuleBasedStateMachinerule
initializemultipleconsumesrun_state_machine_as_testMultipleResults)	overrides)DictcastUnionTupleSetT)with_hnsw_paramssource)keyc            
       B  ^  \ rS rSr% \" S5      r\\\\R                  4      \
S'   \" S5      r\\\\R                  4      \
S'   \\   \
S'   S\R                  R                   4U 4S jjr\" \\S	9S
\R                  S\\\R                  4   4S j5       r\SS j5       r\" \" \5      \R0                  " 5       \S9S\\\R                  4   S\S\\\\R                  4      4S j5       r\" \" \5      \R6                  " \5      \S9S\\\R                  4   S\R8                  S\\\R                  4   4S j5       r\" \" \5      \S9S\\\R                  4   S\\\R                  4   4S j5       r\" \S9S\\\R                  4   SS4S j5       rSr U =r!$ )ForkStateMachine   changing_collectionsupdated_collectionscollectionsforked_collectionscollection_namesclientc                 L   > [         TU ]  5         Xl        [        5       U l        g N)super__init__r    setr   )selfr    	__class__s     Z/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/test/property/test_fork.pyr$   ForkStateMachine.__init__%   s     #    )
collectiontargetr+   returnc                     U R                   R                  UR                  UR                  UR                  S9nU R
                  R                  UR                  5        U[        R                  " / / / / S94$ )N)namemetadataembedding_function)ids	metadatas	documents
embeddings)	r    create_collectionr/   r0   r1   r   add
strategiesStateMachineRecordSet)r&   r+   r   s      r(   r
   ForkStateMachine.initialize*   ss     ..(()<< / 

 	!!&++.z77bB2
 
 	
r*   Nc                 .    [        U R                  5        g r"   )r   r    )r&   s    r(   teardownForkStateMachine.teardown8   s    dkkr*   )r   new_namer,   r   r>   c                 v   Uu  p4X R                   ;   a?  [        R                  " [        5         UR	                  U5        S S S 5        [        U5      $ UR	                  U5      nU R                   R                  UR                  5        [        X[        R                  " U5      45      $ ! , (       d  f       Np= fr"   )
r   pytestraises	Exceptionforkr   r7   r/   copydeepcopy)r&   r   r>   r+   
record_setr,   s         r(   rC   ForkStateMachine.fork<   s     "(
,,,y)) *F##*!!&++.z)B CDD *)s   B**
B8)cursordeltar,   rH   rI   c           	      8   Uu  p4[         R                  " U5      nUR                  " S0 UD6  [        US   5       GH  u  pgXtS   ;   a  US   R	                  U5      nUS   b  US   U   US   U'   O8US   c   eUR
                  c   eUR                  US   U   /5      S   US   U'   US   bg  [        [        [        [        [        [        [        4   4   US   U   5      n	U	b!  US   U   b  U	R                  US   U   5        OUS   U   US   U'   US   b  US   U   US   U'   M  M  US   R                  U5        US   b  US   R                  US   U   5        ODUR
                  c   eUS   c   eUS   R                  UR                  US   U   /5      S   5        US   b  US   R                  US   U   5        OUS   R                  S 5        US   b  US   R                  US   U   5        GM  US   R                  S 5        GM     X44$ )Nr2   r5   r4   r   r3    )
invariantswrap_allupsert	enumerateindex_embedding_functionr   r   strr   intfloatupdateappend)
r&   rH   rI   r+   record_set_statenormalized_deltaidxid
target_idxrecord_set_state_metadatas
             r(   rN   ForkStateMachine.upsertN   s    (.$
;E;N;Nu;U-,- !1%!89GCe,,-e4::2>
#L1=AQ$BB$\2:> ,K8DDD%99EEE #66)+6s;<  %\2" $K0<04S%S%"889(5jA1- 1<+K8=I5<< 0 =c B EU'EE(5jA $K0<@P#AA$[1*= =
 !'..r2#L1=$\299(6s; &99EEE+K8DDD$\299"66-k:3?@
 $K0<$[188(5c: %[188>#K0<$[188(5c: %[188>y :z ++r*   )rH   r,   c                     Uu  p#[        US   5      S-  nUS:X  a  X#4$ US   S U nUR                  U5        US   US  US'   US   US  US'   US   US  US'   US   US  US'   X#4$ )Nr2   
   r   r5   r3   r4   )lendelete)r&   rH   r+   rW   boundaryids_to_deletes         r(   ra   ForkStateMachine.delete   s     (.$
'./25q=//(/	:-("25"9()"D)9,)G	)R&(8(Ehi(P%(8(Ehi(P%++r*   )rH   c                    Uu  p#[        US   5      S:X  a  UR                  5       S:X  d   eg [        [        R                  U5      n[
        R                  " X$5        [
        R                  " X$5        [
        R                  " X$5        g )Nr2   r   )	r`   countr   r8   	RecordSetrL   embeddings_matchmetadatas_matchdocuments_match)r&   rH   r+   rW   rF   s        r(   verifyForkStateMachine.verify   ss     (.$
&'1,##%***j224DEJ''
?&&z>&&z>r*   )r    r   )r-   N)"__name__
__module____qualname____firstlineno__r   r   r   r   r8   r9   __annotations__r   r   rR   chromadbapi	ClientAPIr$   r
   collection_str   r<   r	   r   collection_namer   rC   
recordsetsrg   rN   ra   rk   __static_attributes____classcell__)r'   s   @r(   r   r      sX    	%& j*:::; '
 	} j*:::;  #h&x||55 &
 =1DE
$//
	z:;;;	<
 F
   
+,++-!
EJ
(H(HHIEUXE	z:+K+KKL	ME
E 
*+##M2"
E,j*"B"BBCE, ##E, 
z:;;;	<	E,
E,N 
*+",J
(H(HHI,	z:;;;	<,	, 
!
?J
(H(HHI
?	
?
?r*   r   caplogr    r-   c                 b   ^ U R                  [        R                  5        [        U4S j5        g )Nc                     > [        T 5      $ r"   )r   )r    s   r(   <lambda>test_fork.<locals>.<lambda>   s    &6v&>r*   )	set_levelloggingERRORr   )rz   r    s    `r(   	test_forkr      s    
W]]#>?r*   )+rr   !chromadb.test.property.invariantstestpropertyrL   !chromadb.test.property.strategiesr8   rD   hypothesis.strategieshystr   r@   chromadb.api.models.Collectionr   chromadb.test.conftestr   r   -chromadb.test.utils.wait_for_version_increaser   hypothesis.statefulr   r   r	   r
   r   r   r   r   r   typingr   r   r   r   r   sharedr   ru   r   LogCaptureFixturers   rt   r   rK   r*   r(   <module>r      s     6 6 6 6  $   5 = S	 	 	   0 0J22DIxX^?, ^?B @f.. @8N8N @SW @ @r*   