
    _jo0                     F   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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"e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)multi_region_test)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/var/www/FlaskApp/flask-venv/lib/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/   r0   r3   s      r   get_collzCollectionStateMachine.get_collD   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 r7   )r)   r,   
invariantscollection_deletedr   delete_collectiondelete_from_modelr.   r/   r0   r9   )r   r%   s     r   delete_collz"CollectionStateMachine.delete_collN   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   collsr4   s      r   rB   z'CollectionStateMachine.list_collections[   se    ,,..5zzS__,,,, 	( 	(A6TZ'''''	( 	(r         )	min_value	max_valuer   limitoffsetrI   rJ   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 )NrH   r   )r   rB   count_collectionsr-   max)r   rI   rJ   rC   total_collections	all_colls	man_collss          r   "list_collections_with_limit_offsetz9CollectionStateMachine.list_collections_with_limit_offsetc   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%   rR   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/   r0   r   get_or_create_collectionr)   r+   r	   r,   r*   r2   r   )r   r%   rR   r4   s       r   get_or_create_collz)CollectionStateMachine.get_or_create_colly   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%   rR   new_namerV   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 )Nr8   r   r(   )r*   r)   )r)   r,   r.   r/   r0   r   r9   r	   r-   rT   r+   r*   modifyr?   r2   r   )r   r%   rR   rV   r4   	_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   r2   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   r5   r:   r
   r@   rB   stintegersintrQ   one_ofnonecollection_metadataMetadatarU   collection_namer[   r2   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   )rs   r   s    `r   test_collectionsrz      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%   rR   ig       im)7fGeK5jr%   rR   rV   )	r   r   rU   rc   rd   r   numpyfloat32r[   )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   rU   rc   rd   r   r   r   r[   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.   rx   hypothesis.strategiesrc   ri   !chromadb.test.property.invariantsr   !chromadb.test.property.strategiestestrq   chromadb.apir   chromadb.api.typesapirg   hypothesis.statefulr   r   r   r   r	   r
   r   r   chromadb.test.conftestr   r<   typingr   r   r   r   r   r   r   LogCaptureFixturerz   r   r    r   r   <module>r      s/     " " " " " " < < < < < < 6 6 6 6 6 6 6 6 6 6 6 6 " " " " " " " " " " " " " " "	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 5 4 4 4 4 4 6 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   