
    Zi'0                     *   d dl Z d dl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 d dlmc mZ d dlmZmZmZmZmZmZmZmZ d dlmc m	c mZ d dlmZmZmZmZ d dlZd dlmZ  G d de          Z d	e j!        d
eddfdZ"d
eddfdZ#d
eddfdZ$dS )    N)check_metadata)	ClientAPI)BundleRuleBasedStateMachinerule
initializemultipleconsumesrun_state_machine_as_testMultipleResults)AnyDictMappingOptional)hashing_embedding_functionc            
           e Zd ZU eej                 ed<   eee	e
j                 f         ed<    ed          Zdef fdZ e            d"d            Z ee ej                              d	ej        deej                 fd
            Z ee          d	ej        ddfd            Z e ee                    d	ej        ddfd            Z e            d"d            Z e ej        dd           ej        dd                    dededdfd            Z ee ej         ej                    ej                   ej         ee           ej                                        d	ej        de	e
j                 deej                 fd            Z ee ee          ej         ej         ej                     ej                                         d	ej        de
j        de	e         deej                 fd            Z!dede	e
j                 ddfdZ"deddfd Z#e$deee	e
j                 f         fd!            Z% xZ&S )#CollectionStateMachinecollections_modelclientc                 d    t                                                       i | _        || _        d S N)super__init__r   r   )selfr   	__class__s     d/root/projects/butler/venv/lib64/python3.11/site-packages/chromadb/test/property/test_collections.pyr   zCollectionStateMachine.__init__   s+        returnNc                 F    | j                                          i | _        d S r   )r   resetr   r   s    r   r   z!CollectionStateMachine.initialize#   s!    r   )targetcollr$   c                 V   |j         | j        v s|j        t          |j                  dk    rkt	          j        t                    5  | j                            |j         |j        |j	                  }d d d            n# 1 swxY w Y   t                      S | j                            |j         |j        |j	                  }|                     |j         |j                   |j         |j         k    sJ t          | j        |j                  |j                   t          |          S Nr   namemetadataembedding_function)r(   modelr)   lenpytestraises	Exceptionr   create_collectionr*   r	   	set_modelr   r   r$   cs      r   create_collz"CollectionStateMachine.create_coll(   sN   
 9
""M%#dm*<*<*A*Ay))  K11!]'+'> 2                 ::K))]#6 * 
 

 	ty$-000v""""tz$),aj999~~s   -B  BB)r$   c                 x   |j         | j        v rY| j                            |j                   }|j         |j         k    sJ t	          | j        |j                  |j                   d S t          j        t                    5  | j                            |j                    d d d            d S # 1 swxY w Y   d S Nr(   )	r(   r+   r   get_collectionr   r)   r-   r.   r/   r2   s      r   get_collzCollectionStateMachine.get_collC   s    9
""**	*::A6TY&&&&4:di0!*=====y)) ; ;**	*:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   !B//B36B3c                 L   |j         | j        v rrt          j        | j        |j                   5  | j                            |j                    |                     |j                    d d d            n# 1 swxY w Y   nQt          j        t                    5  | j                            |j                    d d d            n# 1 swxY w Y   t          j        t                    5  | j        
                    |j                    d d d            d S # 1 swxY w Y   d S r6   )r(   r+   
invariantscollection_deletedr   delete_collectiondelete_from_modelr-   r.   r/   r8   )r   r$   s     r   delete_collz"CollectionStateMachine.delete_collM   s   9
"".t{DIFF 2 2--49-===&&ty1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 y)) > >--49-===> > > > > > > > > > > > > > > ]9%% 	7 	7K&&DI&666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   ;A55A9<A9!CCC+!DD Dc                     | j                                         }t          |          t          | j                  k    sJ |D ]}|j        | j        v sJ d S r   )r   list_collectionsr,   r+   r(   )r   collsr3   s      r   rA   z'CollectionStateMachine.list_collectionsZ   se    ,,..5zzS__,,,, 	( 	(A6TZ'''''	( 	(r         )	min_value	max_valuer   limitoffsetrH   rI   c                 X   | j                             ||          }| j                                         }| j                                         }||||z            }||z   |k    r0t          |          t	          ||z
  d          k    sJ ||k    sJ d S t          |          |k    sJ d S )NrG   r   )r   rA   count_collectionsr,   max)r   rH   rI   rB   total_collections	all_colls	man_collss          r   "list_collections_with_limit_offsetz9CollectionStateMachine.list_collections_with_limit_offsetb   s    
 ,,5,HH K99;; K0022	fv~56	 6>---u::%6%?!C!CCCCCI%%%%%% u::&&&&&&r   )r#   new_metadatar$   rQ   c                 <   |yt          |          dk    rft          j        t                    5  | j                            |j        ||j                  }d d d            n# 1 swxY w Y   t                      S |j        | j	        vr'||_
        |                     |j        |j
                   | j                            |j        ||j                  }|j        |j        k    sJ t          | j	        |j                 |j
                   t          |          S r&   )r,   r-   r.   r/   r   get_or_create_collectionr(   r*   r	   r+   r)   r1   r   )r   r$   rQ   r3   s       r   get_or_create_collz)CollectionStateMachine.get_or_create_collx   sQ   8 #L(9(9Q(>(>y))  K88)'+'> 9                 :: 9DJ&&(DMNN49dm444 K00!#6 1 
 
 v""""tz$),aj999~~s   (A##A'*A')r#   r$   rQ   new_namerU   c                    |j         | j        vr_t          j        t                    5  | j                            |j                   }d d d            n# 1 swxY w Y   t                      S | j                            |j                   }| j        |j                  }|j         }|t          |          dk    rft          j        t                    5  | j        	                    |j         ||j
                  }d d d            n# 1 swxY w Y   t                      S ||_        |}||| j        v ra||j         k    rVt          j        t                    5  |                    ||           d d d            n# 1 swxY w Y   t                      S |                     |j                    ||_         |}|                     ||           |                    ||           | j                            |j                   }|j         |j         k    sJ t          | j        |j                  |j                   t          |          S )Nr7   r   r'   )r)   r(   )r(   r+   r-   r.   r/   r   r8   r	   r,   rS   r*   r)   modifyr>   r1   r   )r   r$   rQ   rU   r3   	_metadata_names          r   modify_collz"CollectionStateMachine.modify_coll   s    9DJ&&y)) ? ?K..DI.>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?::K&&DI&6615DI1F	Y#<  A%%]9--  <<!Y!-+/+B =  A                zz!(DM$I4:%%(di*?*?]9-- C CHHlHBBBC C C C C C C C C C C C C C Czz!""49--- DIEui(((	)%000K&&DI&66v""""tz$),aj999~~s5   !AAA(D		DDE>>FFr(   r)   c                     | j         }|||<   d S r   r+   )r   r(   r)   r+   s       r   r1   z CollectionStateMachine.set_model   s    
 
dr   c                     | j         }||= d S r   r\   )r   r(   r+   s      r   r>   z(CollectionStateMachine.delete_from_model   s    
$KKKr   c                     | j         S r   )r   r"   s    r   r+   zCollectionStateMachine.model   s
    {r   )r   N)'__name__
__module____qualname__r   
strategiesExternalCollection__annotations__r   strr   typesCollectionMetadatar   r   r   r   r   r   r4   r9   r
   r?   rA   stintegersintrP   one_ofnonecollection_metadataMetadatarT   collection_namerZ   r1   r>   propertyr+   __classcell__)r   s   @r   r   r      s        
56666hu7889999&''Ky      
 Z\\   \ 
T#9:#9#;#;<<<1	6	7   =<4 
T{;Z: ;t ; ; ; ; 
Txx$$%%%
7
 = 
7$ 
7 
7 
7 &%
7 
TVV( ( ( V( 
TbkA333r{Q!444  ' 'S 'T ' ' '	 '$ 
TRYwrwyy**HIIRYxx,,.Dj.D.F.FGG  
0+0 u~.0 
6	7	0 0 0 
0d 
TXk""372799&@j&@&B&BCC	  ,+, n, 3-	,
 
6	7, , , ,\ 534 
	   c d     tC%*B!CCD    X    r   r   caplogr   r   c                 j    |                      t          j                   t          fd           d S )Nc                  "    t                     S r   )r   )r   s   r   <lambda>z"test_collections.<locals>.<lambda>   s    &<V&D&D r   )	set_levelloggingERRORr   )rr   r   s    `r   test_collectionsry      s7    
W]###DDDDEEEEEr   c           
         t          |           }|                                 |                    t          j        dd t          t          j        d                    d           \  }|                    t          j        dd t          t          j        d                    d           \  }|                    |dddd	d 
           |                    |d d 
           d S )Njjn2yjLW1zp2Ti_  )dtypedimr'   r$   rQ   ig       im)7fGeK5jr$   rQ   rU   )	r   r   rT   rb   rc   r   numpyfloat32rZ   )r   statev1v6s       r   test_previously_failing_oner      s   "6**E	 $$* 9SVWWW
 
 

  %  ER $$* 9SVWWW
 
 

  %  ER 
E$tDDt     
2D4@@@@@r   c                    t          |           }|                                 |                    t          j        di t          dt          j                            d           \  }|                    |dddd	d
dd          \  }|                    t          j        ddddddddt          dt          j                            dddddd           |                    |ddid          }|                    |d           }|                    t          j        dd t          d t          j	                            d            d S )!NC1030   )r}   r|   r'   r~   100qNYST)r   40p1nviWeL7fO7bVYWq4LEMWjCo
OF5F0MzbQgr   VS0QGhgj:Ui  ipSPFgh_   >)hA1uhUhLEEMfeC_kNweFB3DSaP6H533Ki{  i{  g?g    .G3EtXTZiv  )xVW09xUpDZAgzn1dUTalF-MYyugXZ_hKL35J2SK0l026Ai1iF  )
r   r   rT   rb   rc   r   r   r   rZ   float16)r   r   v13v15v17v18s         r   test_previously_failing_twor     s   "6**E	%%*9au}UUU
 
 

  &  FS  
 
   
 
FS 
*+",)   :     
 
 
 !%
 
    . 

(3e   C 
"
"$
"
?
?C	*9cWWW
 
 

       r   )%r-   rw   hypothesis.strategiesrb   rh   !chromadb.test.property.invariantsr   !chromadb.test.property.strategiestestrp   chromadb.apir   chromadb.api.typesapirf   hypothesis.statefulr   r   r   r   r	   r
   r   r   r;   typingr   r   r   r   r   r   r   LogCaptureFixturery   r   r    r   r   <module>r      s     " " " " " " < < < < < < 6 6 6 6 6 6 6 6 6 6 6 6 " " " " " " " " " " " " " " "	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7 6 6 6 6 6 6 6 6 6 6 6 / / / / / / / / / / / /  H H H H H HY Y Y Y Y2 Y Y YxFV5 Fy FT F F F FA	 Ad A A A A88	 8d 8 8 8 8 8 8r   