§
    ˜ŠtjØ$  ã                   óÆ  — 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dS )é    )Úsleep)Ú	ClientAPI)ÚIndexingStatus)Úskip_if_not_cluster)Úget_collection_versionÚwait_for_version_increaseÚclientÚreturnNc                 ó  — |                       ¦   «          |                      d¬¦  «        }|                     ¦   «         }t          |t          ¦  «        sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚dS )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      úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/test/api/test_indexing_status.pyÚ%test_indexing_status_empty_collectionr      s¥   € ð ‡L‚L�N„N€Nà×)Ò)Ð/@Ð)ÑAÔA€JØ×+Ò+Ñ-Ô-€Få�f�nÑ-Ô-Ð-Ð-Ð-ØÔ! QÒ&Ð&Ð&Ð&ØÔ# qÒ(Ð(Ð(Ð(ØÔ˜qÒ Ð Ð Ð ØÔ&¨#Ò-Ð-Ð-Ð-Ð-Ð-ó    c                 óø  — |                       ¦   «          |                      d¬¦  «        }d„ t          d¦  «        D ¦   «         }d„ t          d¦  «        D ¦   «         }t          | |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	¦  «         |                     ¦   «         }t          |t          ¦  «        sJ ‚|j        dk    sJ ‚|j
        dk    sJ ‚|j        d
k    sJ ‚dS dS )z,Test indexing status after adding embeddingsr   r   c                 ó   — g | ]}d |› �‘ŒS )Úid_© ©Ú.0Úis     r   ú
<listcomp>z2test_indexing_status_after_add.<locals>.<listcomp>"   s   € Ð
)Ð
)Ð
)˜ˆ9�ˆ9ˆ9Ð
)Ð
)Ð
)r   é,  c                 ór   — g | ]4}t          |¦  «        t          |d z   ¦  «        t          |dz   ¦  «        g‘Œ5S ©é   é   ©Úfloatr!   s     r   r$   z2test_indexing_status_after_add.<locals>.<listcomp>#   ó9   € ÐMÐMÐM¸Q•5˜‘8”8�U 1 q¡5™\œ\­5°°Q±©<¬<Ð8ÐMÐMÐMr   ©ÚidsÚ
embeddingsr   ç        é<   r   N)r   r   Úranger   r   Úaddr   r   r   r   r   r   r   r   r   )r	   r   r.   r/   Úinitial_versionr   Úfinal_statuss          r   Útest_indexing_status_after_addr6      s¥  € ð ‡L‚L�N„N€Nà×)Ò)Ð/@Ð)ÑAÔA€Jà
)Ð
)�e C™jœjÐ
)Ñ
)Ô
)€CØMÐMÅ%ÈÁ*Ä*ÐMÑMÔM€JÝ,¨V°Z´_ÑEÔE€OØ‡N‚N�s z€NÑ2Ô2Ð2à×+Ò+Ñ-Ô-€FØÔ˜sÒ"Ð"Ð"Ð"àÕ0°¸¼ÑIÔIÒIÐIÝ˜&¥.Ñ1Ô1Ð1Ð1Ð1ØÔ'¨3Ò.Ð.Ð.Ð.ØÔ%¨Ò*Ð*Ð*Ð*ØÔ*¨cÒ1Ð1Ð1Ð1Ý! &¨*¬/¸?ÑKÔKÐKåˆb‰	Œ	ˆ	ð "×5Ò5Ñ7Ô7ˆÝ˜,­Ñ7Ô7Ð7Ð7Ð7ØÔ+¨sÒ2Ð2Ð2Ð2ØÔ-°Ò2Ð2Ð2Ð2ØÔ0°CÒ7Ð7Ð7Ð7ð JÐIð 8Ð7r   c                 ó|  — |                       ¦   «          |                      d¬¦  «        }t          | |j        ¦  «        }|                     ddgg d¢g d¢g¬¦  «         |                     ¦   «         }|j        dk    sJ ‚|t          | |j        ¦  «        k    rct          |t          ¦  «        sJ ‚|j	        dk    sJ ‚|j
        d	k    sJ ‚|j        d
k    sJ ‚t          | |j        |¦  «         t          d¦  «         |                     ddgg d¢g d¢g¬¦  «         |                     ¦   «         }|j        dk    sJ ‚dS )z,Test indexing status after upsert operationsr   r   Úid1Úid2©r   g       @g      @©g      @g      @g      @r-   r)   r   r0   r1   Úid3)gš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@©g      @g       @g      "@é   N)r   r   r   r   Úupsertr   r   r   r   r   r   r   r   r   )r	   r   r4   r   s       r   Ú!test_indexing_status_after_upsertr@   ;   sf  € ð ‡L‚L�N„N€Nà×)Ò)Ð/@Ð)ÑAÔA€JÝ,¨V°Z´_ÑEÔE€Oà×Ò˜5 %˜.°o°o°oÀÀÀÐ5WÐÑXÔXÐXà×+Ò+Ñ-Ô-€FØÔ˜qÒ Ð Ð Ð àÕ0°¸¼ÑIÔIÒIÐIÝ˜&¥.Ñ1Ô1Ð1Ð1Ð1ØÔ'¨1Ò,Ð,Ð,Ð,ØÔ%¨Ò*Ð*Ð*Ð*ØÔ*¨cÒ1Ð1Ð1Ð1Ý! &¨*¬/¸?ÑKÔKÐKÝˆb‰	Œ	ˆ	à×Ò˜5 %˜.°o°o°oÀÀÀÐ5WÐÑXÔXÐXà×+Ò+Ñ-Ô-€FØÔ˜qÒ Ð Ð Ð Ð Ð r   c                 óœ  — |                       ¦   «          |                      d¬¦  «        }t          | |j        ¦  «        }|                     g d¢g d¢g d¢g d¢g¬¦  «         |t          | |j        ¦  «        k    rw|                     ¦   «         }t          |t          ¦  «        sJ ‚|j        dk    sJ ‚|j	        d	k    sJ ‚|j
        d
k    sJ ‚t          | |j        |¦  «         t          d¦  «         |                     ¦   «         }|j        dk    sJ ‚|                     ddg¬¦  «         |                     ¦   «         }|j        dk    sJ ‚dS )z,Test indexing status after delete operationsr   r   )r8   r9   r<   r:   r;   r=   r-   é   r   r0   r1   r8   r9   )r.   é   N)r   r   r   r   r3   r   r   r   r   r   r   r   r   r   Údelete)r	   r   r4   r   Úinitial_statusÚstatus_after_deletes         r   Ú!test_indexing_status_after_deleterG   V   s}  € ð ‡L‚L�N„N€Nà×)Ò)Ð/@Ð)ÑAÔA€JÝ,¨V°Z´_ÑEÔE€Oà‡N‚NØ!Ð!Ð!Ø#�O�O _ _ _°o°o°oÐFð ñ ô ð ð
 Õ0°¸¼ÑIÔIÒIÐIØ×/Ò/Ñ1Ô1ˆÝ˜&¥.Ñ1Ô1Ð1Ð1Ð1ØÔ'¨1Ò,Ð,Ð,Ð,ØÔ%¨Ò*Ð*Ð*Ð*ØÔ*¨cÒ1Ð1Ð1Ð1Ý! &¨*¬/¸?ÑKÔKÐKÝˆb‰	Œ	ˆ	à×3Ò3Ñ5Ô5€NØÔ# qÒ(Ð(Ð(Ð(à×Ò˜5 %˜.ÐÑ)Ô)Ð)ð %×8Ò8Ñ:Ô:ÐØÔ(¨AÒ-Ð-Ð-Ð-Ð-Ð-r   c                 ó\  — |                       ¦   «          |                      d¬¦  «        }t          | |j        ¦  «        }|                     dgg d¢g¬¦  «         |                     ¦   «         }|t          | |j        ¦  «        k    rct          |t          ¦  «        sJ ‚|j        dk    sJ ‚|j	        dk    sJ ‚|j
        dk    sJ ‚t          | |j        |¦  «         t          d	¦  «         |                     ¦   «         }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n J ‚dS )z5Test that indexing status returns correct field typesÚfield_types_collectionr   Útype_test_idr:   r-   r(   r   r0   r1   r   N)r   r   r   r   r3   r   r   r   r   r   r   r   r   Úintr   r+   )r	   r   r4   r   r5   s        r   Ú test_indexing_status_field_typesrL   v   sÒ  € ð ‡L‚L�N„N€Nà×)Ò)Ð/GÐ)ÑHÔH€JÝ,¨V°Z´_ÑEÔE€Oà‡N‚N˜Ð'°_°_°_Ð4E€NÑFÔFÐFà×+Ò+Ñ-Ô-€FàÕ0°¸¼ÑIÔIÒIÐIÝ˜&¥.Ñ1Ô1Ð1Ð1Ð1ØÔ'¨1Ò,Ð,Ð,Ð,ØÔ%¨Ò*Ð*Ð*Ð*ØÔ*¨cÒ1Ð1Ð1Ð1Ý! &¨*¬/¸?ÑKÔKÐKÝˆb‰	Œ	ˆ	à×1Ò1Ñ3Ô3€Lå�lÔ2µCÑ8Ô8Ð8Ð8Ð8Ý�lÔ4µcÑ:Ô:Ð:Ð:Ð:Ý�lÔ,­cÑ2Ô2Ð2Ð2Ð2Ý�lÔ7½Ñ?Ô?Ð?Ð?Ð?àÔ'¨1Ò,Ð,Ð,Ð,ØÔ)¨QÒ.Ð.Ð.Ð.ØÔ! QÒ&Ð&Ð&Ð&Ø�,Ô3Ð:Ð:Ò:Ð:°sÒ:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r   c                 ó  — |                       ¦   «          |                      d¬¦  «        }t          | |j        ¦  «         d„ t	          d¦  «        D ¦   «         }d„ t	          d¦  «        D ¦   «         }|                     ||¬¦  «         d„ t	          dd¦  «        D ¦   «         }d	„ t	          dd¦  «        D ¦   «         }|                     ||¬¦  «         t          | |j        ¦  «        }t          d
ddd¬¦  «        t          dddd¬¦  «        t          dd
dd¬¦  «        g}d
}|dk     r^|                     ¦   «         }	|	|v sJ ‚t          d|	¦  «         |	j	        }t          | |j        |¦  «         t          d¦  «         |dk     °\dS dS )zITest indexing status with 2000 records based on index version progressionÚbatch_test_collectionr   c                 ó   — g | ]}d |› �‘ŒS ©Ú	batch_id_r    r!   s     r   r$   z:test_indexing_status_batch_progression.<locals>.<listcomp>    s   € Ð2Ð2Ð2 ˆ_˜ˆ_ˆ_Ð2Ð2Ð2r   iè  c                 ór   — g | ]4}t          |¦  «        t          |d z   ¦  «        t          |dz   ¦  «        g‘Œ5S r'   r*   r!   s     r   r$   z:test_indexing_status_batch_progression.<locals>.<listcomp>¡   s9   € ÐPÐPÐP¸q•U˜1‘X”X�u Q¨¡U™|œ|­U°1°q±5©\¬\Ð:ÐPÐPÐPr   r-   c                 ó   — g | ]}d |› �‘ŒS rP   r    r!   s     r   r$   z:test_indexing_status_batch_progression.<locals>.<listcomp>¤   s   € Ð8Ð8Ð8 ˆ_˜ˆ_ˆ_Ð8Ð8Ð8r   iÐ  c                 ór   — g | ]4}t          |¦  «        t          |d z   ¦  «        t          |dz   ¦  «        g‘Œ5S r'   r*   r!   s     r   r$   z:test_indexing_status_batch_progression.<locals>.<listcomp>¥   s9   € ÐVÐVÐV¸q•U˜1‘X”X�u Q¨¡U™|œ|­U°1°q±5©\¬\Ð:ÐVÐVÐVr   r   r0   )r   r   r   r   g      à?r   zwitnessed status: r1   N)r   r   r   r   r2   r3   r   r   Úprintr   r   r   )
r	   r   Úids_1Úembeddings_1Úids_2Úembeddings_2Úcurrent_versionÚallowed_statusesÚops_indexedr   s
             r   Ú&test_indexing_status_batch_progressionr]   —   sÔ  € ð ‡L‚L�N„N€Nà×)Ò)Ð/FÐ)ÑGÔG€JÝ˜6 :¤?Ñ3Ô3Ð3ð 3Ð2¥e¨D¡k¤kÐ2Ñ2Ô2€EØPÐPÅEÈ$ÁKÄKÐPÑPÔP€LØ‡N‚N�u¨€NÑ6Ô6Ð6à8Ð8¥e¨D°$Ñ&7Ô&7Ð8Ñ8Ô8€EØVÐVÅEÈ$ÐPTÑDUÔDUÐVÑVÔV€LØ‡N‚N�u¨€NÑ6Ô6Ð6å,¨V°Z´_ÑEÔE€Oõ 	ØØ"ØØ!$ð		
ñ 	
ô 	
õ 	Ø Ø"ØØ!$ð		
ñ 	
ô 	
õ 	Ø ØØØ!$ð		
ñ 	
ô 	
ðÐð* €KØ
˜Ò
Ð
Ø×/Ò/Ñ1Ô1ˆØÐ)Ð)Ð)Ð)Ð)ÝÐ" FÑ+Ô+Ð+ØÔ,ˆÝ! &¨*¬/¸?ÑKÔKÐKÝˆb‰	Œ	ˆ	ð ˜Ò
Ð
Ð
Ð
Ð
Ð
r   c                 ó.  — |                       ¦   «          |                      d¬¦  «        }|                      d¦  «         	 |                     ¦   «          J d¦   «         ‚# t          $ r«}dt          |¦  «                             ¦   «         v skdt          |¦  «                             ¦   «         v sNdt          |¦  «                             ¦   «         v s1dt          |¦  «                             ¦   «         v sJ ‚Y d	}~d	S Y d	}~d	S Y d	}~d	S Y d	}~d	S d	}~ww xY w)
z/Test indexing status on non-existent collectionÚtemp_collectionr   Fz.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_foundre   É   s5  € ð ‡L‚L�N„N€Nà×)Ò)Ð/@Ð)ÑAÔA€JØ
×ÒÐ.Ñ/Ô/Ð/ð	
Ø×&Ò&Ñ(Ô(Ð(ØFÐFÑFÔFˆuøÝð 
ð 
ð 
à�3˜q™6œ6Ÿ<š<™>œ>Ð)Ð)Ø¥3 q¡6¤6§<¢<¡>¤>Ð1Ð1Ø¥ Q¡¤§¢¡¤Ð/Ð/Ø%­¨Q©¬¯ª©¬Ð7Ð7Ð7ð8Ð)Ð)Ð)Ð)Ð)Ð)Ø1Ð1Ð1Ð1Ð1Ð1Ø/Ð/Ð/Ð/Ð/Ð/Ø7Ð7Ð7Ð7Ð7Ð7øøøøð
øøøs   ÁA Á
DÁ)BDÄDc                 ó  — |                       ¦   «          |                      d¬¦  «        }t          | |j        ¦  «        }d„ t	          d¦  «        D ¦   «         }d„ t	          d¦  «        D ¦   «         }|                     ||¬¦  «         t          ¦   «         }|                     ¦   «         }|                     |j        ¦  «         |t          | |j        ¦  «        k    r2|j        dk    sJ ‚t          | |j        |¦  «         t          d¦  «         |                     ¦   «         }|                     |j        ¦  «         |j        d	k    sJ ‚t          |¦  «        d
k    sJ d|› �¦   «         ‚t          dt          |¦  «        › �¦  «         dS )z4Test that progress values vary as indexing completesÚconcurrent_test_collectionr   c                 ó   — g | ]}d |› �‘ŒS )Úconcurrent_id_r    r!   s     r   r$   zFtest_indexing_status_concurrent_progress_variation.<locals>.<listcomp>å   s!   € Ð
4Ð
4Ð
4 AÐ˜AÐÐÐ
4Ð
4Ð
4r   r%   c                 ór   — g | ]4}t          |¦  «        t          |d z   ¦  «        t          |dz   ¦  «        g‘Œ5S r'   r*   r!   s     r   r$   zFtest_indexing_status_concurrent_progress_variation.<locals>.<listcomp>æ   r,   r   r-   r0   r1   r   r(   z5Expected variation in progress values, but only got: zUnique progress values: N)r   r   r   r   r2   r3   Úsetr   r   r   r   ÚlenrU   Úsorted)r	   r   r4   r.   r/   Úprogress_valuesr   r5   s           r   Ú2test_indexing_status_concurrent_progress_variationro   Ý   s’  € ð ‡L‚L�N„N€Nà×)Ò)Ð/KÐ)ÑLÔL€JÝ,¨V°Z´_ÑEÔE€Oà
4Ð
4­¨s©¬Ð
4Ñ
4Ô
4€CØMÐMÅ%ÈÁ*Ä*ÐMÑMÔM€JØ‡N‚N�s z€NÑ2Ô2Ð2å‘e”e€Oð ×+Ò+Ñ-Ô-€FØ×Ò˜Ô3Ñ4Ô4Ð4àÕ0°¸¼ÑIÔIÒIÐIØÔ*¨cÒ1Ð1Ð1Ð1Ý! &¨*¬/¸?ÑKÔKÐKåˆb‰	Œ	ˆ	ð ×1Ò1Ñ3Ô3€LØ×Ò˜Ô9Ñ:Ô:Ð:àÔ,°Ò3Ð3Ð3Ð3õ ˆÑÔ !Ò#Ð#Ð#ØQÀÐQÐQñ $Ô#Ð#õ 
Ð
>¥V¨OÑ%<Ô%<Ð
>Ð
>Ñ?Ô?Ð?Ð?Ð?r   )Útimer   Úchromadb.apir   Úchromadb.api.typesr   Úchromadb.test.conftestr   Ú-chromadb.test.utils.wait_for_version_increaser   r   r   r6   r@   rG   rL   r]   re   ro   r    r   r   ú<module>ru      sI  ðØ Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ÐÑÔð.°)ð .Àð .ð .ð .ñ Ôð.ð ÐÑÔð8¨9ð 8¸ð 8ð 8ð 8ñ Ôð8ð> ÐÑÔð!¨ið !¸Dð !ð !ð !ñ Ôð!ð4 ÐÑÔð.¨ið .¸Dð .ð .ð .ñ Ôð.ð> ÐÑÔð;¨Yð ;¸4ð ;ð ;ð ;ñ Ôð;ð@ ÐÑÔð.°9ð .Àð .ð .ð .ñ Ôð.ðb ÐÑÔð
¨9ð 
¸ð 
ð 
ð 
ñ Ôð
ð& ÐÑÔð"@¸yð "@ÈTð "@ð "@ð "@ñ Ôð"@ð "@ð "@r   