
    eiD                         d Z ddlZddlZddlmZ ddl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mZmZmZ d	ed
dfdZd	ed
dfdZd	ed
dfdZd	ed
dfdZd	ed
dfdZd	ed
dfdZd	ed
dfdZd	ed
dfdZy)z@
Integration test for the Collection statistics wrapper methods
    N)Any)Client)SparseVector)System)get_collection_versionwait_for_version_increase)attach_statistics_functiondetach_statistics_functionget_statisticsget_statistics_fn_namebasic_http_clientreturnc           
         t        j                  |       }|j                          |j                  dddi      }t	        |d      \  }}|J |du sJ |j
                  dk(  sJ |j                  dk(  sJ t        ||j                        }|j                  g d	g d
ddddddddddddg       t        ||j                  |       t        j                  d       t        |d      }t        d       t        t        j                   |d             d|v sJ d|v sJ |d   d   dk(  sJ d|d   v sJ d|d   d   v sJ d|d   d   v sJ |d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ d|d   v sJ d|d   d   v sJ d|d   d   v sJ |d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ d|d   v sJ d |d   d   v sJ d!|d   d   v sJ |d   d   d    d   dk(  sJ |d   d   d!   d   dk(  sJ |j#                  t%        |            }|j
                  dk(  sJ t'        |d"      }|du sJ |j)                  d      }	|	J y)#z1Test the statistics wrapper methods on Collectiontest_collectiondescriptionzTest collection for statistics)namemetadatatest_collection_statisticsNT
statisticsdoc1doc2doc3ztest document 1ztest document 2ztest document 3A
   categoryscoreactiveBF   ids	documents	metadatas<   z
Statistics output:   indentsummarytotal_count   r   count   r   1020r    truefalsedelete_stats_collection)ClientCreatorfrom_systemresetget_or_create_collectionr	   function_nameoutput_collectionr   r   addr   timesleepr   printjsondumpsget_attached_functionr   r
   get_collection)
r   client
collectionattached_fncreatedinitial_versionstatsstats_fnsuccessstats_collections
             {/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/chromadb/test/distributed/test_statistics_wrapper.pytest_statistics_wrapperrN      sa   &&'89F
LLN 00!AB 1 J 6jB^_K"""d??$$444((,HHHH,VZ__EO NN$KrT:rU;rT:
   fjooGJJrN :'CDE	
 !	$**U1
%& 5    M*a/// |,,,,%%j1111%%j1111z*3/8A===z*3/8A=== eL))))5&w////5&w////w'-g6!;;;w'-g6!;;; u\****U<(2222eL)(3333x(09Q>>>x(1':a??? //0Fz0RSH!!\111 )USGd?? ,,-IJ'''    c           
         t        j                  |       }|j                          |j                  d      }t	        ||j
                        }|j                  g dg dddddd	dd
dddddg       t        ||j
                  |       t	        ||j
                        }t        |d      \  }}|du sJ |j                  dk(  sJ |j                  dk(  sJ t        ||j
                  |       t        |d      }|J d|v sJ d|v sJ |d   d   dk(  sJ d|d   v sJ d|d   d   v sJ d	|d   d   v sJ |d   d   d   d   dk(  sJ |d   d   d	   d   dk(  sJ d|d   v sJ d|d   d   v sJ d|d   d   v sJ |d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ d|d   v sJ d|d   d   v sJ d|d   d   v sJ |d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ t        |d      }|du sJ y)zTest backfill statisticsmy_collectionr   r   r   r   r   Tr   r!   Fr"   r#   my_collection_statisticsr   Nr+   r,   r-   r   r.   r(   r/   r   r0   r1   r    r2   r3   r4   )r6   r7   r8   create_collectionr   r   r<   r   r	   r:   r;   r   r
   )r   rD   rE   rH   rF   rG   rI   rK   s           rM   test_backfill_statisticsrU   k   s   &&'89F
LLN)))?J,VZ__EO NN$KrT:rU;rT:
   fjooG,VZ__EO 6jB\]Kd??$$444((,FFFF fjooG:'ABE5    M*a/// |,,,,%%j1111%%j1111z*3/8A===z*3/8A=== eL))))5&w////5&w////w'-g6!;;;w'-g6!;;; u\****U<(2222eL)(3333x(09Q>>>x(1':a??? )TRGd??rO   c                    t        j                  |       }|j                          |j                  d      }t	        |d      \  }}|du sJ |j
                  dk(  sJ t        ||j                        }|j                  dgdgdd	ig
       t        ||j                  |       t        |d      }d|v sJ d|d   v sJ t        |d       y)z2Test statistics with custom output collection namerQ   rR   my_custom_stats)stats_collection_nameTid1r   keyvaluer#   r   r4   N)r6   r7   r8   rT   r	   r;   r   r   r<   r   r   r
   )r   rD   rE   rF   rG   rH   rI   s          rM   0test_statistics_wrapper_custom_output_collectionr\      s    &&'89F
LLN)))?J 6*;K d??((,====,VZ__EO NNG(7#$   fjooG :'89E5   E,'''' z4HrO   c           
      b   t        j                  |       }|j                          |j                  d      }t	        |d      \  }}|du sJ t        ||j                        }|j                  g dg ddddd	d
ddd	dddd	g       t        ||j                  |       t        j                  d       t        |d      }d|d   v sJ d|d   v sJ d|d   v sJ t        |ddg      }d|d   v sJ d|d   vsJ d|d   vsJ |d   d   d   d   dk(  sJ |d   d   d
   d   dk(  sJ d|v sJ |d   d   dk(  sJ t        |ddg      }d|d   v sJ d|d   vsJ d|d   vsJ |d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ d|v sJ |d   d   dk(  sJ t        |d       y)z-Test get_statistics with key filter parameterkey_filter_testrR   key_filter_test_statisticsTr   r   r   r   r   r!   Fr"   r#   r'   r   r   r   r    keysr.   r(   r/   r+   r,   r-   r0   r1   r4   N)r6   r7   r8   rT   r	   r   r   r<   r   r=   r>   r   r
   )	r   rD   rE   _rG   rH   	all_statscategory_statsscore_statss	            rM   "test_statistics_wrapper_key_filterrf      s   &&'89F
LLN))/@)AJ ,J8TUJAwd??,VZ__EO NN$KrT:rU;rT:
   fjooGJJrN z+GHI<0000i----y.... $0
|N 5555.6666>,7777,'
3C8AQFFF,'
3C8AQFFF&&&)$]3q888 !0yK k,////[6666;|4444|$W-d3G<AAA|$W-d3G<AAA###y!-0A555 z4HrO   c                    t        j                  |       }|j                          |j                  d      }t	        |d       t        d      D cg c]  }d| 	 }}t        j                  t              5 }t        |d|       ddd       dt        j                        v sJ d	t        |j                        v sJ t        |d
       yc c}w # 1 sw Y   NxY w)zNTest that get_statistics raises ValueError when more than 30 keys are providedtoo_many_keys_testrR   too_many_keys_test_statistics   key_r`   NzToo many keys provided: 31zMaximum allowed is 30Tr4   )r6   r7   r8   rT   r	   rangepytestraises
ValueErrorr   strr[   r
   )r   rD   rE   itoo_many_keysexc_infos         rM   0test_statistics_wrapper_key_filter_too_many_keysrt     s    &&'89F
LLN))/C)DJ z+JK */r3AtA3Z3M3 
z	" Xhz#BWX (3x~~+>>>>"c(..&9999 z4H 4X Xs   C8CCc                    t        j                  |       }|j                          |j                  d      }t	        |d      \  }}|du sJ t        ||j                        }|j                  ddgddgd	d
id	d
ig       t        ||j                  |       t        ||j                        }t        |d      }|d   d	   d
   d   dk(  sJ |d   d   dk(  sJ |j                  ddgddgd	did	d
ig       t        ||j                  |       t        j                  d       t        |d      }|d   d	   d
   d   dk(  sJ |d   d	   d   d   dk(  sJ |d   d   dk(  sJ t        |d       y)z.Test that statistics are updated incrementallyincremental_testrR   incremental_test_statisticsTrY   id2r   r   r   r   r#   r   r.   r(   r+   r,   id3id4r   doc4r!   F   r-   r/      r4   N)r6   r7   r8   rT   r	   r   r   r<   r   r   r=   r>   r
   )r   rD   rE   rb   rG   rH   next_versionrI   s           rM   +test_statistics_wrapper_incremental_updatesr   (  s   &&'89F
LLN))/A)BJ+J8UVJAwd??,VZ__EO NNEN6"$z3&78   fjooG)&*//BL :'DEEz*3/8A===M*a/// NNEN6"$z3&78   fjoo|D 	JJrN :'DEEz*3/8A===z*3/8A===M*a///z4HrO   c           	         t        j                  |       }|j                          |j                  d      }t	        g dg dg d      }t	        ddgd	d
gddg      }t	        ddgddgddg      }|j                  g dg dd|dd|dd|dg       t        |d      \  }}|du sJ t        ||j                        }t        ||j                  |       t        |d      }	t        d       t        t        j                  |	d             d|	v sJ d|	v sJ |	d   d    d!k(  sJ d"|	d   v sJ d|	d   d"   v sJ d|	d   d"   v sJ |	d   d"   d   d#   dk(  sJ |	d   d"   d   d#   d$k(  sJ d%|	d   v sJ d|	d   d%   v sJ d&       d|	d   d%   v sJ d'       d|	d   d%   v sJ d(       d|	d   d%   v sJ d)       |	d   d%   d   d#   dk(  sJ |	d   d%   d   d#   dk(  sJ |	d   d%   d   d#   dk(  sJ |	d   d%   d   d#   d$k(  sJ y*)+z7Test statistics with sparse vector that includes labelssparse_vector_test1rR   )d      ,  )g      ?       @      @)applebananacherry)indicesvalueslabelsr   i  g      ?g      @r   dater   r   r   r   r   r   )rY   rx   ry   r   r   )r   vecr!   r#   sparse_vector_test1_statisticsTz!
Sparse vector statistics output:r(   r)   r   r+   r,   r-   r   r.   r/   r   z$Should use label 'apple' not hash IDz%Should use label 'banana' not hash IDz%Should use label 'cherry' not hash IDz#Should use label 'date' not hash IDN)r6   r7   r8   rT   r   r<   r	   r   r   r   r   r?   r@   rA   )
r   rD   rE   sparse_vec1sparse_vec2sparse_vec3rb   rG   rH   rI   s
             rM   test_sparse_vector_statisticsr   W  s   &&'89F
LLN))/D)EJ ,K
 c
C:w6GK c
C:x6JK
 NN!*[1[1[1
   ,J8XYJAwd??,VZ__EOfjooG :'GHE	
./	$**U1
%&5   M*a/// |,,,,%%j1111%%j1111z*3/8A===z*3/8A=== E,''''eL)%00X2XX0E,'.././. 	E,'.././.U<(//V1VV/ u%g.w71<<<u%h/8A===u%h/8A===u%f-g6!;;;rO   c           	         t        j                  |       }|j                          |j                  d      }d}d}t	        |      D cg c]  }d| 	 }}t	        |      D cg c]  }d| 	 }}g }t	        |      D ]3  }i }	t	        |      D ]  }
d|
 d| |	d	|
 <    |j                  |	       5 d
}t        ||j                        }t	        d||      D ](  }|j                  ||||z    ||||z    ||||z           * t        ||j                  |       t        ||j                        }t        |d      \  }}|du sJ t        ||j                  |       t        |d      }d|v sJ t	        |      D ]S  }
d	|
 }||d   v sJ |d   |   }t        |      |k(  sJ t	        |      D ]  }d|
 d| }||v sJ ||   d   dk(  rJ  U |d   d   |k(  sJ t        |d       yc c}w c c}w )z.Test statistics with high cardinality metadatahigh_cardinality_testrR   i  r   iddocvalue_rb   field_r   r   r#    high_cardinality_test_statisticsTr   r.   r/   r+   r,   r4   N)r6   r7   r8   rT   rl   appendr   r   r<   r   r	   r   lenr
   )r   rD   rE   num_docs
num_fieldsrq   r$   r%   r&   metaj
batch_sizerH   rb   rG   rI   	field_keyfield_statsr[   s                      rM    test_statistics_high_cardinalityr     s|   &&'89F
LLN))/F)GJ HJ"8_
-Rs8
-C
-$)(O4q3qc4I4&(I8_ !z" 	2A#)!AaS!1D6!	2	 J,VZ__EO1h
+ 
AJ'A
N3A
N3 	 	

 fjooG,VZ__EO ,J8Z[JAwd?? fjooG :'IJE5    : 4QCL	E,////L))4;8+++ x 	4AQCq$EK'''u%g.!333	44 M*h666z4Hm .4s   	G,$G1)__doc__r@   r=   typingr   rm   chromadb.api.clientr   r6   chromadb.base_typesr   chromadb.configr   -chromadb.test.utils.wait_for_version_increaser   r   chromadb.utils.statisticsr	   r
   r   r   rN   rU   r\   rf   rt   r   r   r    rO   rM   <module>r      s        7 , " N(v N($ N(b@ @4 @FI ISW ID<I& <IT <I~I ISW I2,I6 ,Id ,I^D<V D< D<N@I @I4 @IrO   