
    3i5                     P   % S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
JrJr  S SKJrJr  S SKJr  S SKrS SKrS SKJr  S SKJr  S SKJrJr  S SKJrJrJr  S S	K J!r!  S S
K"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)s  J*s  Jr  S SK+J)s  J*s  J,r,  S SK-J.r/  S SK0r0S SK1r1S SK2J3r3  S SK4J5r6  S SK7J8r8J9r9J:r:  SS/r;\0Rx                  " S5      r=/ SQr>S\\?   4S jr@S\	\?\
4   S\	\?\
4   4S jrAS\R                  S\R                  S\3SS4S jrDS\R                  S\R                  S\3SS4S jrES\D4S\E4/rF\\\?\\R                  \R                  \3/S4   4      \GS '   S!\?S\R                  S\R                  S\3SS4
S" jrHS#\
S!\?S\4S$ jrIS%\\?   S\\\?\34      4S& jrJ\@" 5       rK\R                  " 5       rM\R                  " S#\J" \K5      S'9S\\\?\34   SS4   4S( j5       rO " S) S*\\   5      rPS!\?S\3S+\R                  S,\R                  S-\SS4S. jrQ\R                  " \R                  " S/S/S0S0\R                  " 5       S19S2S39rU\R                  \R                     \GS4'   \" \U\R                  " \US5S69S79\" SS89S9\\?\34   S+\R                  S,\R                  SS4S: j5       5       rXg);    )
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                  t   Sn [         R                  " [        R                  " [        R                  " U 5      5      5      n[        US   R                  5       5      nU Vs/ s H!  n[        R                  U5      (       d  M  UPM#     nnUR                  [        R                  S9  [        US   /-   $ s  snf )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       k/home/james-whalen/.local/lib/python3.13/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   !B5B5metadatac                     U R                  S U R                  5        5       5        U R                  S U R                  5        5       5        U $ )Nc              3   <   #    U  H  u  pUS L d  M  US4v   M     g7f)T   N .0kr6   s      r7   	<genexpr>_bool_to_int.<locals>.<genexpr>8   s      E'7tq19FQF'7   c              3   <   #    U  H  u  pUS L d  M  US4v   M     g7f)Fr   Nr<   r=   s      r7   r@   rA   9   s      F'7tq1:FQF'7rB   )updateitems)r8   s    r7   _bool_to_intrF   7   s9    OOEx~~'7EEOOFx~~'7FFO    
collection
embeddingsr   c                 0   U R                   nUb  [        U5        US   bv  [        US   [        5      (       a4  US    H*  nUc  M  [        U[        5      (       d  M  [        U5        M,     g [        US   [        5      (       a  US   n[        U5        g g g )N	metadatas)r8   rF   
isinstancer+   dict)rH   rI   r   collection_metadatar8   s        r7   _patch_boolean_metadatarO   =   s     %--&()+*j-t44&{3'Jx,F,F * 4 
;/66!+.H" 7 +rG   c                     SUl         g )Nz"chromadb.telemetry.posthog.Posthog)chroma_telemetry_impl)rH   rI   r   s      r7   _patch_telemetry_clientrR   R   s     &JH"rG   z0.4.30.4.14version_patchesr   c                     [          H>  u  pE[        R                  " U 5      [        R                  " U5      ::  d  M5  U" XU5        M@     g)zsOverride aspects of the collection and embeddings, before testing, to account for
breaking changes in old versions.N)rT   r0   r1   )r   rH   rI   r   patch_versionpatchs         r7   patch_for_versionrX   d   sA     !0$$W-1B1J1J2
 
 *(3	 !0rG   modulec                     [         R                  " U5      [         R                  " S5      ::  a  U R                  R                  $ U R                  R                  $ )NrS   )r0   r1   apiAPI	ServerAPI)rY   r   s     r7   api_import_for_versionr^   t   s?      )->-F-Fx-PPzz~~::rG   r5   c                     U  Vs/ s H>  nU[        S[        R                  ;   a  SOSSSSSSS[        R                  " 5       S94PM@     sn$ s  snf )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   configurationsrn   z   sm    "  !   G 3rzzA !D6"D%G%G,e ""*"2"2"4	
  !  s   AA)scopeparamsc              #   "  #    U R                   nUS   n[        U0 5        Uv   [        U5      n[        R                  " U5        US   R
                  n[        R                  R                  U5      (       a  [        R                  " USS9  g g 7f)Nr   r;   T)ignore_errors)	paramr   r   shutilrmtreeri   rj   pathexists)r   configurationr   rv   	data_paths        r7   version_settingsrz      st     MMMAGGR 
&w/D
MM$a 22I	ww~~i  it4 !s   BBc                   <    \ rS rSrS\S\4S jrS\S\SS4S jrS	r	g)
not_implemented_ef   inputr!   c                      S5       e)Nz'Embedding function should not be calledr<   )selfr~   s     r7   __call__not_implemented_ef.__call__   s    ???urG   argskwargsNc                     g Nr<   )r   r   r   s      r7   __init__not_implemented_ef.__init__   s    rG   r<   )
__name__
__module____qualname____firstlineno__r   r   r   r   r   __static_attributes__r<   rG   r7   r|   r|      s2    @i @J @c S T rG   r|   collection_strategyembeddings_strategyconnc                   ^  [        U [        5      nS[        R                  ;   a5  [        R
                  " U 5      [        R
                  " S5      :  a  SUl        UR                  R                  U5      nUR                  [        XP5      5      nUR                  5         UR                  5         [        R
                  " U 5      [        R
                  " S5      :  a/  UR                  R                  R                  R!                  U5      nUR#                  UR$                  UR&                  [)        5       S9nUR*                  " S
0 UD6  [,        R.                  " U5      n	UR1                  5       [3        U	S   =(       d    / 5      :X  d   eUR5                  5       n
U
S   n[7        U	S   5       VVs0 s H  u  pX_M	     snnm[9        UU4S jS	9nXS   :X  d   eUR                  [:        5      R=                  5         UR>                  " S
0 UD6  UR=                  5         g s  snnf ! [@         a  nURC                  U5        UeS nAff = f)Nr`   z0.7.0ra   z0.5.4)namer8   embedding_functionrI   idsc                    > TU    $ r   r<   )idembedding_id_to_indexs    r7   <lambda>9persist_generated_data_with_old_version.<locals>.<lambda>   s    7LR7PrG   r$   r<   )"r   VERSIONED_MODULESrj   rk   r0   r1   rb   r   Systeminstancer^   startresetr[   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systemr[   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 W4V514V WJ,PQ
e4444
 	+,113*)* 	 !X  		!s+   F1H* 4H$A!H* $H* *
I4I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   )deadlinerz   c                 Z   U u  p4US   0 :X  a  S US'   US   bE  [        US   [        5      (       a-  US    Vs/ s H  nUb  [        U5      S:  a  UOS PM     snUS'   [        X1X$5        S Ul        0 Ul        [        R                  " S5      n[        R                  " 5       u  pxUR                  [        X4XU4S9n	U	R                  5         U	R                  5         UR                  5       (       a  UR                  5       n
U
eU	R                  5         [         R"                  " U5      nUR                  5         [$        R&                  " U5      nUR)                  UR*                  [-        5       S9nUR/                  [0        5      n[2        R4                  " U5      [2        R4                  " S5      :  a*  UR                   R7                  S5      R8                  SL d   eUR;                  [=        [?        SS	5      /5      5        S
[@        RB                  ;   a  [D        RF                  " X5        O9[I        XR/                  [J        5      5        URM                  URN                  5        [D        RP                  " X/S	5        URR                  " S0 UD6  [D        RF                  " X5        [D        RT                  " X5        [D        RV                  " X5        [D        RX                  " X5        [D        RZ                  " X5        [D        RP                  " X/S	5        UR]                  5         g s  snf )NrK   r   spawn)targetr   )r   r   z0.5.7automatically_purgeFTr`   r<   )/rL   r+   r   rX   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   rj   rk   r   r   r   r   	purge_logr   log_size_below_maxr   metadatas_matchdocuments_match	ids_matchann_accuracyr   )rz   r   r   r   r   mctxconn1conn2pr   r   r   r   embeddings_queues                  r7   test_cycle_versionsr      s    )G ;'2-+/K(;'3
K($9 9
 )5,
5 c!fqjAd25,
K(
 g4GR .2*.0+
 
%
%g
.C"'')LE6!45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34oon=	
 	""477+!!&&$7 	HH#"#T/t9t93D6!!&&$7 KKMe,
s    L()Ymultiprocessing.connectionr   rj   rt   rl   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   rF   
Collection	RecordSetrO   rR   rT   __annotations__rX   r^   rn   test_old_versionsrm   base_install_dirfixturerz   r|   r   sharedcollectionsbooleansr   SearchStrategy
recordsetsr   r<   rG   r7   <module>r     s   1 	   D D D & "     H G , S + C 6 6 6 6 2 	  $ 7  g& ZZ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 ##% 
 h~6G'HI55h+?t+K!L 5 J5*95 888 $..8 $--	8
 8 
8x ;=)) "$&KKM 	
;r  !6!67 
 %"--mcJ 
4cCM*c#..c $--c 
	c 	
crG   