
    Ig                     r   d dl Z d dlmZmZ d dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ d dlmZ d dlmZm Z m!Z! dede"defdZ#dedede$deee"   eee%      e$f   fdZ&de	fdZ'de	dedejP                  defdZ)de	dedejP                  defdZ*dede$deeee"   eee%      e$e$f   fdZ+dede$deeee"   eee%      e$e$f   fdZ, e       deddfd       Z- e       deddfd       Z. e       deddfd       Z/ e       deddfd        Z0y)!    N)ListTuple)
CollectionSettingsSystem)	GrpcSysDB)SysDB)VersionMismatchError)MetadataReaderVectorReader)GrpcMetadataSegment)GrpcVectorSegment)resetskip_if_not_cluster)	ClientAPI)wait_for_version_increase)RequestVersionContextSegmentScopeVectorQueryclientnamereturnc                 0    | j                  |dddd      S )N   )zhnsw:construction_efzhnsw:search_efzhnsw:M)r   metadata)create_collectionr   r   s     l/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/test/distributed/test_version_mismatch.pycreate_test_collectionr       s(    ##*-PST $      
collectionnc                 n   g }g }t        |      D ]  }|j                  t        |             |j                  t        j                         t        j                         t        j                         g       |j	                  t        |      g|d   g        t        | |j                  d      }|||fS )N)ids
embeddingsr   )r   collection_nameinitial_version)rangeappendstrrandomaddr   r   )r   r"   r#   r&   r'   ifinal_versions          r   *add_random_records_and_wait_for_compactionr1      s     CJ1X 


3q66==?FMMOV]]_MNQ"2' 	 	

 .zM 
M))r!   c                  2    t        dd      } t        |       S )N	localhosti  )chroma_coordinator_hostchroma_server_grpc_portr   )settingss    r   get_mock_frontend_systemr7   ,   s     +UH (r!   systemsysdbc                     |j                  |t        j                        d   }|d   i |d<   d|d   d<   t        | |      }|j	                          |S N)r"   scoper   r   zlocalhost:50053grpc_url)get_segmentsr   VECTORr   startr8   r9   r"   segmentret_segments        r   get_vector_segmentrD   3   sg       Jl>Q>Q RSTUGz" 
&7GJ
##FG4Kr!   c                     |j                  |t        j                        d   }|d   i |d<   d|d   d<   t        | |      }|j	                          |S r;   )r>   r   METADATAr   r@   rA   s        r   get_metadata_segmentrG   @   sg       Jl>S>S TUVWGz" 
&7GJ
#%fg6Kr!   c                 8   t        |        t        | d      }t        | ||      \  }}}| j                  |j                        j
                  j                  }t               }t        |      }|j                          t        |||j                        ||||fS Ntest_version_mismatchr   )r   r"   r#   )r8   r9   r"   )r   r    r1   get_collectionr   _modellog_positionr7   r	   r@   rD   id	r   r#   r"   r&   r'   versionrM   	fe_systemr9   s	            r   setup_vector_testrR   M   s     
&M'v<STJI* CW ((9@@MML(*Ii E	KKM 	)5Z]]S r!   c                 8   t        |        t        | d      }t        | ||      \  }}}| j                  |j                        j
                  j                  }t               }t        |      }|j                          t        |||j                        ||||fS rI   )r   r    r1   rK   r   rL   rM   r7   r	   r@   rG   rN   rO   s	            r   setup_metadata_testrT   d   s     
&M'v<STJI* CW ((9@@MML(*Ii E	KKM 	IUz}}U r!   c                    d}t        | |      \  }}}}}t        |d   gt        ||      ddd d       }|j                  |       |d	z   |d
   d<   	 |j                  |       y # t        $ r Y y t
        $ r}J d|        d }~ww xY w)Nd   r   r#   r   collection_versionrM   
   F)vectorsrequest_version_contextkinclude_embeddingsallowed_idsoptions)query   r\   rY   Unexpected exception )rR   r   r   query_vectorsr   	Exception)	r   Nreader_r'   compacted_versionrM   requestes	            r   $test_version_mistmatch_query_vectorsrl   {   s     	A=N>:FAz,l A 50|!
  	G w'?@1uG%&';<2W%  21-aS11u2s   A& &	B1B9
BBc                     d}t        | |      \  }}}}}t        ||      }|j                  d |       |dz   |d<   	 |j                  |       y # t        $ r Y y t        $ r}J d|        d }~ww xY w)NrV   rW   rX   )r&   r\   rb   rY   rc   )rR   r   get_vectorsr   re   r   rf   rg   rh   ri   rM   r\   rk   s           r   "test_version_mistmatch_get_vectorsrp      s     	A4E51FAq#\ 4,< 49PQ45E01223  21-aS11u2s   A 	A3A3$
A..A3c                     d}t        | |      \  }}}}}t        ||      }|j                  |       |dz   |d<   	 |j                  |       y # t        $ r Y y t        $ r}J d|        d }~ww xY w)NrV   rW   rX   )r\   rb   rY   rc   )rT   r   get_metadatar   re   ro   s           r   "test_version_mismatch_metadata_getrs      s     	A4G51FAq#\ 4,< 0GH45E01234  21-aS11u2s   A 	A2A2#
A--A2c                     d}t        | |      \  }}}}}t        ||      }|j                  |       |dz   |d<   	 |j                  |       y # t        $ r Y y t        $ r}J d|        d }~ww xY w)NrV   rW   rX   rb   rY   rc   )rT   r   countr   re   ro   s           r   $test_version_mismatch_metadata_countrv      s     	A4G51FAq#\ 4,< LL()45E012,-  21-aS11u2s   A 	A1A1"
A,,A1)1r-   typingr   r   uuidchromadb.api.models.Collectionr   chromadb.configr   r   chromadb.db.impl.grpc.clientr	   chromadb.db.systemr
   chromadb.errorsr   chromadb.segmentr   r   +chromadb.segment.impl.metadata.grpc_segmentr   )chromadb.segment.impl.vector.grpc_segmentr   chromadb.test.conftestr   r   chromadb.apir   -chromadb.test.utils.wait_for_version_increaser   chromadb.typesr   r   r   r,   r    intfloatr1   r7   UUIDrD   rG   rR   rT   rl   rp   rs   rv    r!   r   <module>r      s      5 , 2 $ 0 9 K G = " S K K9 C J **#-*25*
49d4;',-*$& 

 
.2ii



 
.2ii


<cDe$5sC?@.
>49d4;&7cAB. 22	2 2: 22	2 2, 22	2 2, 22	2 2r!   