
    Bvh5                     `   U d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZmZ d dl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)c m*c m,Z, d dl-m.Z/ d dl0Z0d dl1Z1d dl2m3Z3 d dl4m5Z6 d dl7m8Z8m9Z9m:Z: ddgZ; e0jx                  d      Z=g dZ>dee?   fdZ@de	e?e
f   de	e?e
f   fdZAdej                  dej                  de3ddfdZDdej                  dej                  de3ddfdZEdeDfdeEfgZFeee?eej                  ej                  e3gdf   f      eGd <   d!e?dej                  dej                  de3ddf
d"ZHd#e
d!e?defd$ZId%ee?   deee?e3f      fd&ZJ e@       ZK ej                         ZM ej                  d# eJeK      '      deee?e3f   ddf   fd(       ZO G d) d*ee         ZPd!e?de3d+ej                  d,ej                  d-eddfd.ZQ ej                   ej                  d/d/d0d0 ej                         1      d23      ZUej                  ej                     eGd4<    eeU ej                  eUd56      7       ed8      d9ee?e3f   d+ej                  d,ej                  ddfd:              ZXy);    )
ConnectionN)	GeneratorListTupleDictAnyCallableType)givensettings)request)config)ConfigurationParameter$EmbeddingsQueueConfigurationInternal)	DocumentsEmbeddingFunction
Embeddings)SqliteDB),trigger_vector_segments_max_seq_id_migration)SegmentManager)LocalSegmentManager)version)Settings)Client)switch_to_versioninstall_versionget_path_to_version_installz0.4.1z0.5.3z^[0-9]+\.[0-9]+\.[0-9]+$)pydanticnumpy
tokenizersreturnc                  b   d} t        j                  t        j                  t        j                  |                   }t        |d   j                               }|D cg c]  }t        j                  |      s| }}|j                  t        j                         t        |d   gz   S c c}w )zFReturns the pinned minimum version and the latest version of chromadb.z#https://pypi.org/pypi/chromadb/jsonreleaseskey)jsonloadr   urlopenRequestlistkeys
version_rematchsortpackaging_versionVersionBASELINE_VERSIONS)urldataversionsvs       [/RAG/venv/lib/python3.12/site-packages/chromadb/test/property/test_cross_version_persist.pyr5   r5   ,   s    
/C99W__W__S%9:;DD$))+,H#;8az'7'7':8H;MM'//M0~-- <s   B,9B,metadatac                     | j                  d | j                         D               | j                  d | j                         D               | S )Nc              3   4   K   | ]  \  }}|d u s|df  yw)T   N .0kr6   s      r7   	<genexpr>z_bool_to_int.<locals>.<genexpr>8   s!     E'7tq!19QF'7   	c              3   4   K   | ]  \  }}|d u s|df  yw)Fr   Nr<   r=   s      r7   r@   z_bool_to_int.<locals>.<genexpr>9   s!     F'7tq!1:QF'7rA   )updateitems)r8   s    r7   _bool_to_intrE   7   s9    OOEx~~'7EEOOFx~~'7FFO    
collection
embeddingsr   c                    | j                   }|t        |       |d   bt        |d   t              r*|d   D ]!  }|t        |t              st        |       # y t        |d   t              r|d   }t        |       y y y )N	metadatas)r8   rE   
isinstancer+   dict)rG   rH   r   collection_metadatar8   s        r7   _patch_boolean_metadatarN   =   s     %--&()+*j-t4&{3'Jx,F * 4 
;/6!+.H" 7 +rF   c                     d|_         y )Nz"chromadb.telemetry.posthog.Posthog)chroma_telemetry_impl)rG   rH   r   s      r7   _patch_telemetry_clientrQ   R   s     &JH"rF   z0.4.30.4.14version_patchesr   c                     t         D ];  \  }}t        j                  |       t        j                  |      k  s2 ||||       = y)zwOverride aspects of the collection and embeddings, before testing, to account for
    breaking changes in old versions.N)rS   r0   r1   )r   rG   rH   r   patch_versionpatchs         r7   patch_for_versionrW   d   sE     !0u$$W-1B1J1J2
 
 *j(3	 !0rF   modulec                     t        j                  |      t        j                  d      k  r| j                  j                  S | j                  j                  S )NrR   )r0   r1   apiAPI	ServerAPI)rX   r   s     r7   api_import_for_versionr]   t   s?      )->-F-Fx-PPzz~~::rF   r5   c                     | D cg c]=  }|t        dt        j                  v rdndddddddt        j                               f? c}S c c}w )NCHROMA_RUST_BINDINGS_TEST_ONLYz!chromadb.api.rust.RustBindingsAPIchromadb.api.segment.SegmentAPIz chromadb.db.impl.sqlite.SqliteDBz7chromadb.segment.impl.manager.local.LocalSegmentManagerT)chroma_api_implchroma_sysdb_implchroma_producer_implchroma_consumer_implchroma_segment_manager_implallow_resetis_persistentpersist_directory)r   osenvirontempfilemkdtemp)r5   r   s     r7   configurationsrm   z   sm    "  !   G 3rzzA !D6"D%G%G,e ""*"2"2"4	
  !  s   AA
)scopeparamsc              #     K   | j                   }|d   }t        |i        | t        |      }t        j                  |       |d   j
                  }t        j                  j                  |      rt        j                  |d       y y w)Nr   r;   T)ignore_errors)	paramr   r   shutilrmtreerh   ri   pathexists)r   configurationr   ru   	data_paths        r7   version_settingsry      sr     MMMAGGR 
&w/D
MM$a 22I	ww~~i it4 !s   B	Bc                   0    e Zd ZdedefdZdededdfdZy)not_implemented_efinputr!   c                     J d       )Nz'Embedding function should not be calledr<   )selfr|   s     r7   __call__znot_implemented_ef.__call__   s    ???urF   argskwargsNc                      y Nr<   )r~   r   r   s      r7   __init__znot_implemented_ef.__init__   s    rF   )__name__
__module____qualname__r   r   r   r   r   r<   rF   r7   r{   r{      s2    @i @J @c S T rF   r{   collection_strategyembeddings_strategyconnc                    	 t        | t              }dt        j                  v r2t	        j
                  |       t	        j
                  d      k  rd|_        |j                  j                  |      }|j                  t        ||             }|j                          |j                          t	        j
                  |       t	        j
                  d      k\  r/|j                  j                  j                  j!                  |      }|j#                  |j$                  |j&                  t)                     } |j*                  d
i | t-        j.                  |      }	|j1                         t3        |	d   xs g       k(  sJ |j5                         }
|
d   }t7        |	d         D ci c]  \  }}||
 c}}t9        |fd	      }||	d   k(  sJ |j                  t:              j=                           |j>                  d
i | |j=                          y c c}}w # t@        $ r}|jC                  |       |d }~ww xY w)Nr_   z0.7.0r`   z0.5.4)namer8   embedding_functionrH   idsc                     |    S r   r<   )idembedding_id_to_indexs    r7   <lambda>z9persist_generated_data_with_old_version.<locals>.<lambda>   s    7LR7PrF   r$   r<   )"r   VERSIONED_MODULESri   rj   r0   r1   ra   r   Systeminstancer]   startresetrZ   clientr   from_systemcreate_collectionr   r8   r{   add
invariantswrap_allcountlenget	enumeratesortedr   stopupsert	Exceptionsend)r   r   r   r   r   
old_modulesystemrZ   collcheck_embeddingsresult
actual_idsir   er   s                  @r7   'persist_generated_data_with_old_versionr      s   1&w0AB
+rzz9>O>W>W?
%%g.?/ (IH$""))(3oo4ZIJ		
 $$W-1B1J1J71SS..''..::6BC$$$))(1113	 % 
 	'&'
 &../BCzz|s#3L#A#GRHHHHE]
4=>Nu>U4V W4V51bQ4V WJ,PQ
-e4444
 	+,113*)* 	 !X  		!s+   F&H  )H6A#H  H   	I)H<<IT
   )with_hnsw_paramshas_embeddingsmax_hnsw_sync_thresholdmax_hnsw_batch_sizewith_persistent_hnsw_paramsr   r$   collection_st   )max_size)r   r   )deadlinery   c                 >   | \  }}|d   i k(  rd |d<   |d   ;t        |d   t              r(|d   D cg c]  }|t        |      dkD  r|nd  c}|d<   t        ||||       d |_        i |_        t        j                  d      }t        j                         \  }}|j                  t        |||||f      }	|	j                          |	j                          |j                         r|j                         }
|
|	j                          t!        j"                  |      }|j                          t%        j&                  |      }|j)                  |j*                  t-                     }|j/                  t0              }t3        j4                  |      t3        j4                  d      k  r)|j                   j7                  d      j8                  du sJ |j;                  t=        t?        dd	      g             d
t@        jB                  v rtE        jF                  ||       n:tI        ||j/                  tJ                     |jM                  |jN                         tE        jP                  ||gd	        |jR                  di | tE        jF                  ||       tE        jT                  ||       tE        jV                  ||       tE        jX                  ||       tE        jZ                  ||       tE        jP                  ||gd	       |j]                          y c c}w )NrJ   r   spawn)targetr   )r   r   z0.5.7automatically_purgeFTr_   r<   )/rK   r+   r   rW   r   known_metadata_keysmultiprocessingget_contextPipeProcessr   r   joinpollrecvcloser   r   ClientCreatorr   get_collectionr   r{   r   r   r0   r1   get_parametervalue
set_configr   r   ri   rj   r   r   r   r   	purge_logr   log_size_below_maxr   metadatas_matchdocuments_match	ids_matchann_accuracyr   )ry   r   r   r   r   mctxconn1conn2pr   r   r   r   embeddings_queues                  r7   test_cycle_versionsr      s    )GX ;'2-+/K(;'3
K($9
 )5,
5 c!fqjAd25,
K(
 g24GR .2*.0+
 
%
%g
.C"'')LE56x!46I5Q 	 	A GGIFFHzz|JJLGGI ]]8$F
LLN&&v.F   %%-/ ! D
 x0   ),=,E,E-  ##112GHNNRWW	
W ,#$94@A	
 (2::5234foon=	
 	""477+!!&4&$7 DHH#"#T./t%89t%8923D"56!!&4&$7 KKMe,
s   L)Ymultiprocessing.connectionr   ri   rs   rk   typingr   r   r   r   r   r	   r
   
hypothesisr   r   hypothesis.strategies
strategiesstpytestr'   urllibr   chromadbr   chromadb.api.configurationr   r   chromadb.api.typesr   r   r   chromadb.db.impl.sqliter   chromadb.ingest.impl.utilsr   chromadb.segmentr   #chromadb.segment.impl.manager.localr   !chromadb.test.property.strategiestestproperty!chromadb.test.property.invariantsr   	packagingr   r0   rer   chromadb.configr   chromadb.api.clientr   r   !chromadb.test.utils.cross_versionr   r   r   r2   compiler-   r   strr5   rE   
Collection	RecordSetrN   rQ   rS   __annotations__rW   r]   rm   test_old_versionsrl   base_install_dirfixturery   r{   r   sharedcollectionsbooleansr   SearchStrategy
recordsetsr   r<   rF   r7   <module>r      s   1 	   D D D & "     H G , S + C 6 6 6 6 2 	  $ 7  g& RZZ34
 8 .$s) .4S> d38n #%%#$$# # 
	#*J%%J$$J J 
	J %&&' 	#x..
0D0DhOQUUV
VW 44%%4 $$4 	4
 
4  3      T#Y 4c8m0D+E * J #8##% 
 h~6G'HI55h+?t+K!L 5 J5*95 888 $..8 $--	8
 8 
8x ;D"))J "$/BKKM 	
;r  !6!67 
 %-
--mcJ 
4cCM*c#..c $--c 
	c 	
crF   