Ë
    lQêjØ$  ã                   ód  — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
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„«       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„«       Zy)é    )Úsleep)Ú	ClientAPI)ÚIndexingStatus)Úskip_if_not_cluster)Úget_collection_versionÚwait_for_version_increaseÚclientÚreturnNc                 ó  — | j                  «        | j                  d¬«      }|j                  «       }t        |t        «      sJ ‚|j
                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y)z(Test indexing status on empty collectionÚtest_collection©Únamer   ç      ð?N)	ÚresetÚcreate_collectionÚget_indexing_statusÚ
isinstancer   Únum_indexed_opsÚnum_unindexed_opsÚ	total_opsÚop_indexing_progress)r	   Ú
collectionÚstatuss      úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/api/test_indexing_status.pyÚ%test_indexing_status_empty_collectionr      s�   € ð ‡L�L„Nà×)Ñ)Ð/@Ð)ÓA€JØ×+Ñ+Ó-€Fä�fœnÔ-Ð-Ð-Ø×!Ñ! QÒ&Ð&Ð&Ø×#Ñ# qÒ(Ð(Ð(Ø×Ñ˜qÒ Ð Ð Ø×&Ñ&¨#Ò-Ð-Ñ-ó    c           	      óJ  — | j                  «        | j                  d¬«      }t        d«      D �cg c]  }d|› �‘Œ	 }}t        d«      D �cg c](  }t        |«      t        |dz   «      t        |dz   «      g‘Œ* }}t	        | |j
                  «      }|j                  ||¬«       |j                  «       }|j                  dk(  sJ ‚|t	        | |j
                  «      k(  r½t        |t        «      sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  d	k(  sJ ‚t        | |j
                  |«       t        d
«       |j                  «       }t        |t        «      sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚yyc c}w c c}w )z,Test indexing status after adding embeddingsr   r   é,  Úid_é   é   ©ÚidsÚ
embeddingsr   ç        é<   r   N)r   r   ÚrangeÚfloatr   r   Úaddr   r   r   r   r   r   r   r   r   )r	   r   Úir#   r$   Úinitial_versionr   Úfinal_statuss           r   Útest_indexing_status_after_addr-      s“  € ð ‡L�L„Nà×)Ñ)Ð/@Ð)ÓA€Jä# C›jÖ
)˜ˆS��Š9Ð
)€CÐ
)ÜBGÈÃ*ÖM¸Q”5˜“8œU 1 q¡5›\¬5°°Q±«<Ò8ÐM€JÐMÜ,¨V°Z·_±_ÓE€OØ‡N�N�s z€NÔ2à×+Ñ+Ó-€FØ×Ñ˜sÒ"Ð"Ð"àÔ0°¸¿¹ÓIÒIÜ˜&¤.Ô1Ð1Ð1Ø×'Ñ'¨3Ò.Ð.Ð.Ø×%Ñ%¨Ò*Ð*Ð*Ø×*Ñ*¨cÒ1Ð1Ð1Ü! &¨*¯/©/¸?ÔKäˆbŒ	ð "×5Ñ5Ó7ˆÜ˜,¬Ô7Ð7Ð7Ø×+Ñ+¨sÒ2Ð2Ð2Ø×-Ñ-°Ò2Ð2Ð2Ø×0Ñ0°CÒ7Ð7Ñ7ð Jùò *ùÚMs   °FÁ-F c                 ód  — | j                  «        | j                  d¬«      }t        | |j                  «      }|j	                  ddgg d¢g d¢g¬«       |j                  «       }|j                  dk(  sJ ‚|t        | |j                  «      k(  rgt        |t        «      sJ ‚|j                  dk(  sJ ‚|j                  d	k(  sJ ‚|j                  d
k(  sJ ‚t        | |j                  |«       t        d«       |j	                  ddgg d¢g d¢g¬«       |j                  «       }|j                  dk(  sJ ‚y)z,Test indexing status after upsert operationsr   r   Úid1Úid2©r   g       @g      @©g      @g      @g      @r"   r!   r   r%   r&   Úid3)gš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@©g      @g       @g      "@é   N)r   r   r   r   Úupsertr   r   r   r   r   r   r   r   r   )r	   r   r+   r   s       r   Ú!test_indexing_status_after_upsertr7   ;   s$  € ð ‡L�L„Nà×)Ñ)Ð/@Ð)ÓA€JÜ,¨V°Z·_±_ÓE€Oà×Ñ˜5 %˜.²oÂÐ5WÐÔXà×+Ñ+Ó-€FØ×Ñ˜qÒ Ð Ð àÔ0°¸¿¹ÓIÒIÜ˜&¤.Ô1Ð1Ð1Ø×'Ñ'¨1Ò,Ð,Ð,Ø×%Ñ%¨Ò*Ð*Ð*Ø×*Ñ*¨cÒ1Ð1Ð1Ü! &¨*¯/©/¸?ÔKÜˆbŒ	à×Ñ˜5 %˜.²oÂÐ5WÐÔXà×+Ñ+Ó-€FØ×Ñ˜qÒ Ð Ñ r   c                 ó|  — | j                  «        | j                  d¬«      }t        | |j                  «      }|j	                  g d¢g d¢g d¢g d¢g¬«       |t        | |j                  «      k(  rw|j                  «       }t        |t        «      sJ ‚|j                  dk(  sJ ‚|j                  d	k(  sJ ‚|j                  d
k(  sJ ‚t        | |j                  |«       t        d«       |j                  «       }|j                  dk(  sJ ‚|j                  ddg¬«       |j                  «       }|j                  dk(  sJ ‚y)z,Test indexing status after delete operationsr   r   )r/   r0   r3   r1   r2   r4   r"   é   r   r%   r&   r/   r0   )r#   é   N)r   r   r   r   r)   r   r   r   r   r   r   r   r   r   Údelete)r	   r   r+   r   Úinitial_statusÚstatus_after_deletes         r   Ú!test_indexing_status_after_deleter>   V   s2  € ð ‡L�L„Nà×)Ñ)Ð/@Ð)ÓA€JÜ,¨V°Z·_±_ÓE€Oà‡N�NÚ!Ú#¢_²oÐFð ô ð
 Ô0°¸¿¹ÓIÒIØ×/Ñ/Ó1ˆÜ˜&¤.Ô1Ð1Ð1Ø×'Ñ'¨1Ò,Ð,Ð,Ø×%Ñ%¨Ò*Ð*Ð*Ø×*Ñ*¨cÒ1Ð1Ð1Ü! &¨*¯/©/¸?ÔKÜˆbŒ	à×3Ñ3Ó5€NØ×#Ñ# qÒ(Ð(Ð(à×Ñ˜5 %˜.ÐÔ)ð %×8Ñ8Ó:ÐØ×(Ñ(¨AÒ-Ð-Ñ-r   c                 ó\  — | j                  «        | j                  d¬«      }t        | |j                  «      }|j	                  dgg d¢g¬«       |j                  «       }|t        | |j                  «      k(  rgt        |t        «      sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        | |j                  |«       t        d	«       |j                  «       }t        |j                  t        «      sJ ‚t        |j                  t        «      sJ ‚t        |j                  t        «      sJ ‚t        |j                  t        «      sJ ‚|j                  dk\  sJ ‚|j                  dk\  sJ ‚|j                  dk\  sJ ‚d|j                  cxk  rd
k  sJ ‚ J ‚y)z5Test that indexing status returns correct field typesÚfield_types_collectionr   Útype_test_idr1   r"   r    r   r%   r&   r   N)r   r   r   r   r)   r   r   r   r   r   r   r   r   Úintr   r(   )r	   r   r+   r   r,   s        r   Ú test_indexing_status_field_typesrC   v   s�  € ð ‡L�L„Nà×)Ñ)Ð/GÐ)ÓH€JÜ,¨V°Z·_±_ÓE€Oà‡N�N˜Ð'²_Ð4E€NÔFà×+Ñ+Ó-€FàÔ0°¸¿¹ÓIÒIÜ˜&¤.Ô1Ð1Ð1Ø×'Ñ'¨1Ò,Ð,Ð,Ø×%Ñ%¨Ò*Ð*Ð*Ø×*Ñ*¨cÒ1Ð1Ð1Ü! &¨*¯/©/¸?ÔKÜˆbŒ	à×1Ñ1Ó3€Lä�l×2Ñ2´CÔ8Ð8Ð8Ü�l×4Ñ4´cÔ:Ð:Ð:Ü�l×,Ñ,¬cÔ2Ð2Ð2Ü�l×7Ñ7¼Ô?Ð?Ð?à×'Ñ'¨1Ò,Ð,Ð,Ø×)Ñ)¨QÒ.Ð.Ð.Ø×!Ñ! QÒ&Ð&Ð&Ø�,×3Ñ3Ô:°sÒ:Ð:Ñ:Ð:Ñ:r   c           	      óˆ  — | j                  «        | j                  d¬«      }t        | |j                  «       t	        d«      D �cg c]  }d|› �‘Œ	 }}t	        d«      D �cg c](  }t        |«      t        |dz   «      t        |dz   «      g‘Œ* }}|j                  ||¬«       t	        dd«      D �cg c]  }d|› �‘Œ	 }}t	        dd«      D �cg c](  }t        |«      t        |dz   «      t        |dz   «      g‘Œ* }}|j                  ||¬«       t        | |j                  «      }t        d	ddd
¬«      t        dddd¬«      t        dd	dd¬«      g}d	}	|	dk  rW|j                  «       }
|
|v sJ ‚t        d|
«       |
j                  }	t        | |j                  |«       t        d«       |	dk  rŒVyyc c}w c c}w c c}w c c}w )zITest indexing status with 2000 records based on index version progressionÚbatch_test_collectionr   iè  Ú	batch_id_r    r!   r"   iÐ  r   r%   )r   r   r   r   g      à?r   zwitnessed status: r&   N)r   r   r   r   r'   r(   r)   r   r   Úprintr   r   r   )r	   r   r*   Úids_1Úembeddings_1Úids_2Úembeddings_2Úcurrent_versionÚallowed_statusesÚops_indexedr   s              r   Ú&test_indexing_status_batch_progressionrO   —   sÄ  € ð ‡L�L„Nà×)Ñ)Ð/FÐ)ÓG€JÜ˜6 :§?¡?Ô3ô ',¨D£kÖ2 ˆy˜˜Š_Ð2€EÐ2ÜDIÈ$ÃKÖP¸q”U˜1“Xœu Q¨¡U›|¬U°1°q±5«\Ò:ÐP€LÐPØ‡N�N�u¨€NÔ6ä&+¨D°$Ó&7Ö8 ˆy˜˜Š_Ð8€EÐ8ÜDIÈ$ÐPTÓDUÖV¸q”U˜1“Xœu Q¨¡U›|¬U°1°q±5«\Ò:ÐV€LÐVØ‡N�N�u¨€NÔ6ä,¨V°Z·_±_ÓE€Oô 	ØØ"ØØ!$ô		
ô 	Ø Ø"ØØ!$ô		
ô 	Ø ØØØ!$ô		
ðÐð* €KØ
˜Ò
Ø×/Ñ/Ó1ˆØÐ)Ñ)Ð)Ð)ÜÐ" FÔ+Ø×,Ñ,ˆÜ! &¨*¯/©/¸?ÔKÜˆbŒ	ð ˜Õ
ùòA 3ùÚPùò 9ùÚVs   ÁF0Á!-F5Â1F:Ã-F?c                 ó¾  — | j                  «        | j                  d¬«      }| j                  d«       	 |j                  «        J d«       ‚# t        $ r‡}dt        |«      j                  «       v sbdt        |«      j                  «       v sBdt        |«      j                  «       v s"dt        |«      j                  «       v sJ ‚Y d}~yY d}~yY d}~yY d}~yd}~ww xY w)	z/Test indexing status on non-existent collectionÚtemp_collectionr   z.Expected exception for non-existent collectionz	not foundzdoes not existzsoft deletedzcollection not foundN)r   r   Údelete_collectionr   Ú	ExceptionÚstrÚlower)r	   r   Úes      r   Útest_indexing_status_not_foundrW   É   sÂ   € ð ‡L�L„Nà×)Ñ)Ð/@Ð)ÓA€JØ
×ÑÐ.Ô/ð	
Ø×&Ñ&Ô(ØFÐFÓFˆuøÜò 
àœ3˜q›6Ÿ<™<›>Ñ)Ø¤3 q£6§<¡<£>Ñ1Ø¤ Q£§¡£Ñ/Ø%¬¨Q«¯©«Ñ7ð		
ð8ô 8ô 0ô 2ô *ûð
ús   µA Á	CÁA.CÃCc           	      ó4  — | j                  «        | j                  d¬«      }t        | |j                  «      }t	        d«      D �cg c]  }d|› �‘Œ	 }}t	        d«      D �cg c](  }t        |«      t        |dz   «      t        |dz   «      g‘Œ* }}|j                  ||¬«       t        «       }|j                  «       }|j                  |j                  «       |t        | |j                  «      k(  r3|j                  dk(  sJ ‚t        | |j                  |«       t        d	«       |j                  «       }|j                  |j                  «       |j                  d
k(  sJ ‚t        |«      dkD  s
J d|› �«       ‚t        dt        |«      › �«       yc c}w c c}w )z4Test that progress values vary as indexing completesÚconcurrent_test_collectionr   r   Úconcurrent_id_r    r!   r"   r%   r&   r   z5Expected variation in progress values, but only got: zUnique progress values: N)r   r   r   r   r'   r(   r)   Úsetr   r   r   r   ÚlenrG   Úsorted)	r	   r   r+   r*   r#   r$   Úprogress_valuesr   r,   s	            r   Ú2test_indexing_status_concurrent_progress_variationr_   Ý   sz  € ð ‡L�L„Nà×)Ñ)Ð/KÐ)ÓL€JÜ,¨V°Z·_±_ÓE€Oä).¨s«Ö
4 Aˆ^˜A˜3ÒÐ
4€CÐ
4ÜBGÈÃ*ÖM¸Q”5˜“8œU 1 q¡5›\¬5°°Q±«<Ò8ÐM€JÐMØ‡N�N�s z€NÔ2ä“e€Oð ×+Ñ+Ó-€FØ×Ñ˜×3Ñ3Ô4àÔ0°¸¿¹ÓIÒIØ×*Ñ*¨cÒ1Ð1Ð1Ü! &¨*¯/©/¸?ÔKäˆbŒ	ð ×1Ñ1Ó3€LØ×Ñ˜×9Ñ9Ô:à×,Ñ,°Ò3Ð3Ð3ô ˆÓ !Ò#ð Ø
?ÀÐ?PÐQóÐ#ô 
Ð$¤V¨OÓ%<Ð$=Ð
>Õ?ùò7 5ùÚMs   ÁFÁ!-F)Útimer   Úchromadb.apir   Úchromadb.api.typesr   Úchromadb.test.conftestr   Ú-chromadb.test.utils.wait_for_version_increaser   r   r   r-   r7   r>   rC   rO   rW   r_   © r   r   ú<module>rf      sD  ðÝ å "Ý -Ý 6÷ñ Óð.°)ð .Àò .ó ð.ñ Óð8¨9ð 8¸ò 8ó ð8ñ> Óð!¨ið !¸Dò !ó ð!ñ4 Óð.¨ið .¸Dò .ó ð.ñ> Óð;¨Yð ;¸4ò ;ó ð;ñ@ Óð.°9ð .Àò .ó ð.ñb Óð
¨9ð 
¸ò 
ó ð
ñ& Óð"@¸yð "@ÈTò "@ó ñ"@r   