
    LKiY                         % S SK r S SKrS SKJr  S SKJrJrJrJ	r	J
r
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s  Jr  S SKrS SKJr  S SKJrJr  S SKJr  S SKJ r   S SKJ!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0  S S	K1J2r2J3r3J4r4  S S
KJ5r5  S SK6J7r7J8r8J9r9  S SK:J;r;  \Rx                  R{                  S 5        SSSS.r> " S S\?5      r@ " S S\@5      rA " S S\@5      rB " S S\@5      rC " S S\5      rDSrE\R                  " \ESS9rGSrH\R                  " \HSS9rI\R                  " \ESS9rJ\JR                  S 5      rJ\GR                  S 5      rG\IR                  S  5      rI\R                  " S!S"S#9rM\R                  " S$S$S$S%S&S'S(9rO\G\M\O\R                  " 5       /rQ\\\
\R\S\T\U4         \VS)'   S*\R2                  \   S+\R2                  \   S,\R2                  \   4S- jrWS.rX\R                  \R                  \R                  /r\\R                  \R                  \R                  /r`\R                  S/\R                  S,\T4S0 j5       rc\R                  " \R                  " 5       \R                  " \G\R                  " \Q6 5      5      rgS1\RS2\RS3\R                  S,\RH                  4S4 jriS1\RS2\RS3\R                  S,\R
                  R                  \   4S5 jrk " S6 S7\RF                  \!   5      rl " S8 S9\RF                  \!   5      rmS1\RS3\R                  S,\R2                  \RF                  \"      4S: jrn\  " S; S<5      5       ro\; " S= S>\5      5       rp\R                  S/\R                  S,\(4S? j5       rq\R                  S/\R                  S,\)4S@ j5       rr\R                  S/\R                  S,\\&   4SA j5       rs\R                  S/\R                  S,\\'   4SB j5       rt\R                  S/\R                  S,\\7   4SC j5       ru\  " SD SE5      5       rvSF\	\T\4   S,\	\T\4   4SG jrwSH\(S,\	\T\4   4SI jrx\R                  S/\R                  S,\\&\	\T\4   4   4SJ j5       ry\R                  S/\R                  S,\v4SK j5       rz\  " SL SM\o5      5       r{\R                  S$S$SS\R                  " S$5      SNSN4S/\R                  SO\USP\USQ\\U   SR\\U   SS\R2                  \U   ST\RSU\RS,\{4SV jj5       r}\R                    SrS/\R                  SW\{SX\RSY\\R   S,\\RJ                     4
SZ jj5       r~\R                  S/\R                  SW\{S,\R                  4S[ j5       r\R                  \}" 5       \GSS\SS S4S/\R                  S]\\{   S^\\T   SX\RSY\RS_\\R   S`\RSa\\R   S,\A4Sb jj5       rSc\2S,\\   4Sd jr\R                  S/\R                  SW\{S,\GR                  4Se j5       r\R                  S/\R                  SW\{S,\GR
                  4Sf j5       rSg\\GR                     S,\\GR                     4Sh jrSg\\GR
                     S,\\GR
                     4Si jr\R                  S/\R                  SW\{S,\GR                  4Sj j5       r\R                  S/\R                  SW\{S,\GR
                  4Sk j5       r " Sl Sm\5      r\R                   SsS/\R                  Sn\R2                  \{   So\R2                  \A   Sp\US,\4
Sq jj5       rg)t    N)AnyOptionalListDictUnioncastTuple)	TypedDict)SearchStrategy)SimpleEmbeddingFunction$DeterministicSparseEmbeddingFunction)NOT_CLUSTER_ONLY)	dataclass)	Documents
EmbeddableEmbeddingFunction
EmbeddingsMetadataSchemaCollectionMetadataVectorIndexConfigSparseVectorIndexConfigStringInvertedIndexConfigIntInvertedIndexConfigFloatInvertedIndexConfigBoolInvertedIndexConfigHnswIndexConfigSpannIndexConfigSpace)LiteralValueWhereOperatorLogicalOperator)is_spann_disabled_mode)CreateCollectionConfigurationCreateSpannConfigurationCreateHNSWConfiguration)register_embedding_function   )hnsw:construction_efhnsw:search_efhnsw:Mc                   8   ^  \ rS rSrSrSrS\4U 4S jjrSrU =r	$ )_TruncatedReprDictM   z`Dict subclass that truncates its repr to avoid overwhelming output in hypothesis error messages.  returnc                 z   > [         TU ]  5       n[        U5      U R                  ::  a  U$ US U R                   S-   $ )Nz...})super__repr__len_REPR_MAX_LEN)selffull	__class__s     c/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/test/property/strategies.pyr3   _TruncatedReprDict.__repr__R   s@    w!t9***K(d(()F22     )
__name__
__module____qualname____firstlineno____doc__r5   strr3   __static_attributes____classcell__)r8   s   @r9   r-   r-   M   s    jM3# 3 3r;   r-   c                   4   \ rS rSr% Sr\\R                  \\R                     4   \	S'   \
\\R                  \R                  4      \	S'   \
\\\
\R                        \R                  4      \	S'   \
\\\R                     \R                  4      \	S'   Srg)		RecordSetY   zp
A generated set of embeddings, ids, metadatas, and documents that
represent what a user would pass to the API.
ids
embeddings	metadatas	documentsr<   N)r=   r>   r?   r@   rA   r   typesIDr   __annotations__r   r   	Embeddingr   DocumentrC   r<   r;   r9   rF   rF   Y   s    
 
uxxehh'	((u//@ABBd8ENN#;<ennLMNNd5>>2ENNBCDDr;   rF   c                       \ rS rSr% Sr\\R                     \S'   \	\R                     \S'   \	\\	\R                           \S'   \	\\R                        \S'   Srg)	NormalizedRecordSete   z3
A RecordSet, with all fields normalized to lists.
rH   rI   rJ   rK   r<   N)r=   r>   r?   r@   rA   r   rL   rM   rN   r   r   r   rP   rC   r<   r;   r9   rR   rR   e   sU     
ehh))**Xenn5677U^^,--r;   rR   c                       \ rS rSr% Sr\\R                     \S'   \R                  \S'   \\
\R                        \S'   \\
\R                        \S'   Srg)	StateMachineRecordSetp   zG
Represents the internal state of a state machine in hypothesis tests.
rH   rI   rJ   rK   r<   N)r=   r>   r?   r@   rA   r   rL   rM   rN   r   r   r   rP   rC   r<   r;   r9   rU   rU   p   sK     
ehh   HU^^,--HU^^,--r;   rU   c                       \ rS rSr% Sr\R                  \S'   \\R                     \S'   \\R                     \S'   \\R                     \S'   Srg)	Record{   z
A single generated record.
id	embeddingmetadatadocumentr<   N)r=   r>   r?   r@   rA   rL   rM   rN   r   rO   r   rP   rC   r<   r;   r9   rX   rX   {   s?     	L((u~~&&u~~&&r;   rX   z@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_   )alphabetmin_sizez?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-   c                     U R                  S5      (       + =(       aP    U R                  S5      (       + =(       a3    U R                  S5      (       + =(       a    U R                  S5      (       + $ )N_-)
startswithendswithss    r9   <lambda>ri      s    cAR=R  >][\[g[ghk[lWl  >]uvuu  AD  vE  rE  >]  NO  NX  NX  Y\  N]  J]  >]r;   c                 .    U R                  S5      (       + $ N_sare   rg   s    r9   ri   ri      s    1<<+>'>r;   c                 .    U R                  S5      (       + $ rk   rm   rg   s    r9   ri   ri      s    eAT=Tr;      	min_value	max_valueF    g    .g    .A)allow_infinity	allow_nanallow_subnormalwidthrr   rs   safe_values
strategy_a
strategy_br0   c                     [         R                  " [         R                  " X5      [         R                  " U [         R                  " 5       5      [         R                  " [         R                  " 5       U5      5      $ N)stone_oftuplesnone)rz   r{   s     r9   one_or_bothr      sI     99
		*)
		*bggi(
		"'')Z( r;   zCabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_./+drawc                    [         R                  " S5      n[         R                  " S5      n[         R                  " S5      nU " [        R                  " U5      5      R	                  5       n[
        R                  " UR                  U5      (       + 5        [
        R                  " UR                  U5      (       + 5        U$ )Nz'^[a-zA-Z][a-zA-Z0-9-]{1,60}[a-zA-Z0-9]$z^([0-9]{1,3}\.){3}[0-9]{1,3}$z\.\.)	recompiler~   
from_regexstrip
hypothesisassumematchsearch)r   _collection_name_re_ipv4_address_re_two_periods_renames        r9   collection_namer      s    **%OPzz"BCjj)OR]]#678>>@D*00667/00667Kr;   dimcountdtypec           	          [        [        R                  [        R                  R                  SSX4S9R                  U5      R                  5       5      nU$ Ng            ?)lowhighsize)r   rL   r   nprandomuniformastypetolist)r   r   r   rI   s       r9   create_embeddingsr      sS    
 $(II\  
 VE]VX$J r;   c                 `    [         R                  R                  SSX4S9R                  U5      $ r   )r   r   r   r   )r   r   r   s      r9   create_embeddings_ndarrayr      s6    
 99\   fUm	r;   c                       \ rS rSrS\S\R                  SS4S jrS\R                  S\R                  4S jrS\4S	 jrS
rg)hashing_embedding_function   r   r   r0   Nc                     Xl         X l        g r}   r   r   )r6   r   r   s      r9   __init__#hashing_embedding_function.__init__   s    
r;   inputc                    U Vs/ s H?  n[        [        R                  " UR                  S5      5      R	                  5       5      PMA     nnU Vs/ s H9  nX R
                  [        U5      -  -  US U R
                  [        U5      -   -   PM;     nnU VVs/ s H@  n[        R                  " U Vs/ s H  n[        US5      S-  PM     snU R                  S9PMB     nnnU$ s  snf s  snf s  snf s  snnf )Nzutf-8   g      .@)r   )listhashlibsha256encode	hexdigestr   r4   r   arrayintr   )r6   r   texthashed_textspadded_textscharrI   s          r9   __call__#hashing_embedding_function.__call__   s     PU
OTtDG 45??ABu 	 
 %
$ HHD	)*T2HDHHs4y4H-II$ 	 
 %(
$ HHt<ttc$md*t<DJJO$ 	 (

 

 =(
s%   AC$A C)C32C.C3.C3c                 <    SU R                    SU R                   S3$ )Nzhashing_embedding_function(dim=z, dtype=)r   r6   s    r9   r3   #hashing_embedding_function.__repr__  s    0
(4::,aPPr;   r   )r=   r>   r?   r@   r   npt	DTypeLiker   rL   r   r   r   rB   r3   rC   r<   r;   r9   r   r      sK    C  $ eoo %2B2B &Q# Qr;   r   c                   &    \ rS rSrS\S\4S jrSrg)"not_implemented_embedding_functioni  r   r0   c                      S5       e)Nz*This embedding function is not implementedr<   )r6   r   s     r9   r   +not_implemented_embedding_function.__call__  s    BBBur;   r<   N)r=   r>   r?   r@   r   r   r   rC   r<   r;   r9   r   r     s    Ci CJ Cr;   r   c           	      j    [         R                  " [        [        [           [        X5      5      5      $ r}   )r~   justr   r   r   r   r   s     r9   embedding_function_strategyr     s+     77z*,Fs,RS r;   c                   r    \ rS rSr% Sr\\S'   \\R                     \S'   \\R                  \      \S'   Srg)ExternalCollectioni  z
An external view of a collection.

This strategy only contains information about a collection that a client of Chroma
sees -- that is, it contains none of Chroma's internal bookkeeping. It should
be used to test the API and client code.
r   r\   embedding_functionr<   N)r=   r>   r?   r@   rA   rB   rN   r   rL   r   r   r   rC   r<   r;   r9   r   r     s3     Iu~~&& !8!8!DEEr;   r   c                   &    \ rS rSrSrS\4S jrSrg)SimpleIpEmbeddingFunctioni-  z>Simple embedding function with ip space for persistence tests.r0   c                     g)Nipr<   r   s    r9   default_space'SimpleIpEmbeddingFunction.default_space1  s    r;   r<   N)r=   r>   r?   r@   rA   rB   r   rC   r<   r;   r9   r   r   -  s    Hs r;   r   c                    SnSnSnSnSnU " [         R                  " 5       5      (       a  U " [         R                  " / SQ5      5      nU " [         R                  " 5       5      (       a"  [        U " [         R                  " SSS95      S9nU " [         R                  " 5       5      (       a5  U " [         R
                  " [         R                  " S5      [        5      5      nU " [         R                  " / SQ5      5      nUS	:X  Ga6  [        U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " S
SS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSS9nGOUS:X  Ga  [        U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSU " [         R                  " 5       5      (       a  U " [         R                  " SSS95      OSS9n[        [        [        U5      UUUUS9$ )z\Generate VectorIndexConfig with optional space, embedding_function, source_key, hnsw, spann.Ncosinel2r   r^   r/   rq   r   	#document)hnswspannr   r      '  r         @)ef_constructionmax_neighbors	ef_searchsync_thresholdresize_factorr   r(   @      2      d   )search_nprobewrite_nprober   r   r   reassign_neighbor_countsplit_thresholdmerge_threshold)spacer   
source_keyr   r   )r~   booleanssampled_fromr   integersr   r   	safe_textr   floatsr   r   r   r   )r   r   r   r   r   r   index_choices          r9   vector_index_config_strategyr   5  s    EJDEBKKMR__%;<=BKKM6R[[1=>
 BKKM"))BGGK$8)DE
(ABCLvBKKM"" !qD!IJBKKM"" r{{Q$GHBKKM"" 2;;dCDBKKM""  a5 IJBKKM"" ryy3#FG
" 
	  BKKM"" r{{Q#FGBKKM"" bkkADEBKKM"" !qC!HIBKKM"" 2;;cBCBKKM"" r{{Q"EFBKKM"" %)qB)O$PBKKM"" !rS!IJBKKM"" !rS!IJ1
6 5% - r;   c                 X   SnSnSnU " [         R                  " 5       5      (       a?  [        5       nU " [         R                  " [         R                  " S5      [
        5      5      nU " [         R                  " 5       5      (       a  U " [         R                  " 5       5      n[        UUUS9$ )zTGenerate SparseVectorIndexConfig with optional embedding_function, source_key, bm25.Nr   )r   r   bm25)r~   r   r   r   r   r   r   )r   r   r   r   s       r9   #sparse_vector_index_config_strategyr     s     JDBKKMAC"))BGGK$8)DE
BKKMBKKM""- r;   c                    U " [         R                  " 5       5      (       a  g[        5       nU " [         R                  " SSS95      nSn[	        U5       GH  nU " [         R
                  " SS/5      5      nU " [         R
                  " / SQ5      5      nU " [         R                  " 5       5      nSnU(       a  US	:w  a  U " [        5      nUS:X  a  US
:X  a  UR                  [        5       US9  M  US:X  a  UR                  [        5       US9  M  US:X  a  UR                  [        5       US9  M  US:X  a  UR                  [        5       US9  M  US	:X  a#  U " [        5       5      n	UR                  U	SS9  GM%  US:X  aK  [        (       d=  U(       d3  U " [        5       5      n
Uc  U " [        5      nUR                  XS9  SnGMp  GMs  GMv  GMy  US:X  d  GM  US
:X  a  UR                  [        5       US9  GM  US:X  a  UR                  [        5       US9  GM  US:X  a  UR                  [        5       US9  GM  US:X  d  GM  UR                  [        5       US9  GM	     U$ )zKGenerate a Schema object with various create_index/delete_index operations.Nr      rq   Fcreate_indexdelete_index)string_invertedint_invertedfloat_invertedbool_invertedvectorsparse_vectorr   r   configkeyr   r   r   r   T)r~   r   r   r   ranger   r   r   r   r   r   r   r   r#   r   r   )r   schemanum_operationssparse_index_createdrc   	operationconfig_typeuse_keyr  vector_configsparse_configs              r9   schema_strategyr    s;    BKKMXF "++Q?@N >"..)IJK	OO	
 r{{}%{h.y/C&//##+D+FC#P.##+A+C#M 00##+C+E3#O/##+B+D##N( $%A%C D##=d#C..., $%H%J K;y/C##=#B'+$ - / / .(//##+D+FC#P.##+A+C#M 00##+C+E3#O/##+B+D##Nm #r Mr;   c                 
   0 nU " [         R                  " 5       5      (       a!  U " [         R                  " / SQ5      5      US'   U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      US'   U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      US'   U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      US'   U " [         R                  " 5       5      (       a  U " [         R                  " S	S
S95      US'   U " [         R                  " 5       5      (       a  U " [         R                  " SSS95      US'   U(       a  U$ S$ )z'Generate metadata with hnsw parameters.r   
hnsw:spacer^   r/   rq   r)   r*   r+   r   r   zhnsw:resize_factorr   r   hnsw:sync_thresholdN)r~   r   r   r   r   )r   r\   s     r9   metadata_with_hnsw_strategyr    s&    $&HBKKM!%boo6L&M!NBKKM+/KK!t4,
'( BKKM%)"++T*R%S!"BKKM!"++T"JKBKKM)-bii#QT.U)V%&BKKM*.KK!u5+
&'  8)T)r;   c           	         0 nU " [         R                  " 5       5      (       a%  [        U " [         R                  " SSS95      S9US'   U " [         R                  " / SQ5      5      nUS:X  a*  [        U " [         R                  " / SQ5      5      S	9US
'   GOSUS:X  a*  [        U " [         R                  " / SQ5      5      S	9US'   GO#US
:X  a  0 nU " [         R                  " 5       5      (       a!  U " [         R                  " / SQ5      5      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   X1S
'   GO>US:X  Ga7  0 nU " [         R                  " 5       5      (       a!  U " [         R                  " / SQ5      5      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SSS95      US'   U " [         R                  " SS S95      US!'   XAS'   U(       a  U$ S"$ )#zEGenerate CreateCollectionConfiguration with mutual exclusivity rules.r^   r/   rq   r   r   )space_only_hnswspace_only_spannr   r   r   r  r   )r   r   r  r   r   r   r   r   r   r   r   r   r   r   r(   r   r   r   r   r   r   r   r   r   r   N)r~   r   r   r   r   r&   r%   r   )r   configurationconfig_choicehnsw_configspann_configs        r9   create_configuration_strategyr    s   
 46M BKKM.GR[[1=>/
*+
 
L	
M )) 7r'=>?!
f 
,	,!9r'=>?"
g 
&	 /1#'8N(O#PK )-bkkAQU.V)W%&#'a4(P#QK '+BKK!t,T'UO$(,R[[1PU-V(W$%'+BIIs,S'TO$ +f	'	!13$(9O)P$QL!(,R[[1PS-T(U_%'+BKK!r,R'S^$*.r{{QRU/V*W&'$(qC)P$Q[!(,R[[1PR-S(T_%26KK!r23
./ +/r{{RSV/W*X&'*.r{{RSV/W*X&'!-g)=3t3r;   c                   n    \ rS rSr% Sr\\   \S'   \\   \S'   \\	   \S'   \\
\\4      \S'   \\S'   Srg	)
CollectionInputCombinationi3  z,
Input tuple for collection creation tests.
r\   r  r  schema_vector_infokindr<   N)r=   r>   r?   r@   rA   r   r   rN   r$   r   r   rB   r   rC   r<   r;   r9   r  r  3  sD     )**9::V c3h00
Ir;   r  itemsc                 b    U R                  5        VVs0 s H  u  pUc  M
  X_M     snn$ s  snnf r}   )r  )r  kvs      r9   non_none_itemsr!  @  s(    "[[]<]TQaDAD]<<<s   	++r  c                 v   S nU R                   bC  [        U R                   S5      (       a(  [        [        U R                   R	                  5       5      nU R
                  U R                  (       a  U R                  R                  SS9OS U R                  (       a  U R                  R                  SS9US.$ S US.$ )Nr   T)exclude_none)r   r   r    embedding_function_default_space)	r   hasattrr   rB   r   r   r   
model_dumpr   )r  embedding_default_spaces     r9   vector_index_to_dictr(  D  s    -1  ,!!?2 2 #'sF,E,E,S,S,U"V =C[[&&D&9d?E||((d(;,C	  RV,C	 r;   c                 p    [        5       nU " [        5       5      nUR                  US S9  U[        U5      4$ )Nr   )r   r   r   r(  )r   r  r
  s      r9   _schema_input_strategyr*  S  s=     XF578M
}$7'666r;   c                 0   U " [         R                  " / SQ5      5      nSnSnSnSnUS;   a   U " [        5       R                  S 5      5      nUS;   a   U " [	        5       R                  S 5      5      nUS:X  a  U " [        5       5      u  pE[        UUUUUS9$ )	zQ
Generate compatible combinations of metadata, configuration, and schema inputs.
)r   r\   r  metadata_configurationr  N)r\   r,  c                 4    U S L=(       a    [        U 5      S:  $ )Nr   )r4   values    r9   ri   8metadata_configuration_schema_strategy.<locals>.<lambda>y  s    e4/BCJNBr;   )r  r,  c                     U S L=(       a]    U R                  S5      S L=(       a    [        U S   5      S:  =(       d+    U R                  S5      S L=(       a    [        U S   5      S:  $ )Nr   r   r   )getr4   r.  s    r9   ri   r0    sb    e4/ YYv&d2Ms5=7IA7M T		'*$6R3uW~;NQR;Rr;   r  )r\   r  r  r  r  )r~   r   r  filterr  r*  r  )r   choicer\   r  r  schema_infos         r9   &metadata_configuration_schema_strategyr6  ]  s     
	

F .2H=AM#F,0K77')00B
 <<)+22
 "#9#;<%#& r;   c                       \ rS rSr% Sr\R                  \S'   \\S'   \	R                  \S'   \R                  \S'   \\   \S'   Sr\\S	'   Sr\\S
'   Sr\\   \S'   Srg)
Collectioni  z
An internal view of a collection.

This strategy contains all the information Chroma uses internally to manage a
collection. It is a superset of ExternalCollection and should be used to test
internal Chroma logic.
rZ   	dimensionr   known_metadata_keysknown_document_keywordsFhas_documentshas_embeddingsNcollection_configr<   )r=   r>   r?   r@   rA   uuidUUIDrN   r   r   r   rL   r   r   rB   r<  boolr=  r>  r   r$   rC   r<   r;   r9   r8  r8    sZ     			MN=='!#Y&M4 ND AEx =>Er;   r8  i  add_filterable_datawith_hnsw_paramsr=  r<  with_persistent_hnsw_paramsmax_hnsw_batch_sizemax_hnsw_sync_thresholdc                 h   USL a  USL a   eU " [        5       5      nU " [        5      n	U " [        R                  " SSS95      n
U " [        R                  " [
        5      5      nU " U5      nU(       a  U(       d  [        S5      eU(       a  U	c  0 n	U	R                  [        5        U(       aJ  U " [        R                  " SUS95      U	S'   U " [        R                  " S[        U	S   U/5      S95      U	S	'   U " [        R                  " 5       5      (       a!  U " [        R                  " / S
Q5      5      U	S'   Sn[        (       d%  U	(       a  U	R                  SS5      OSnUSSS.nSU0n0 nU(       aL  [        U5      S:  a=  U " [        5      nU " [        R                  " [         6 5      UU'   [        U5      S:  a  M=  Uc  U " [        R                  " 5       5      nUc   e["        (       d2  U(       a(  U(       a!  U " [        R$                  " [&        SSS95      nO4/ nO1U(       a(  U(       a!  U " [        R$                  " [        SSS95      nO/ nU(       d  SnOUc  U " [        R                  " 5       5      nUc   eU " [)        X5      5      n[+        [,        R.                  " 5       UU	U
UUUUUUUS9$ )zStrategy to generate a Collection object. If add_filterable_data is True, then known_metadata_keys and known_document_keywords will be populated with consistent data.Fr   i   rq   z@with_persistent_hnsw_params requires with_hnsw_params to be trueNra   r  zhnsw:batch_sizer   r  r      )r   r   r   r   r   r`   max_sizeT)rZ   r   r\   r9  r   r:  r<  r;  r=  r   r>  )r   collection_metadatar~   r   r   float_types
ValueErrorupdatetest_hnsw_configminr   r#   r2  r4   r   r   ry   r   listssafe_text_min_size_3r   r8  r?  uuid4)r   rB  rC  r=  r<  rD  rE  rF  r   r\   r9  r   use_persistent_hnsw_paramsr>  spann_spacer  r:  r  r;  r   s                       r9   collectionsrV    s     5(}/EGG!"D'(HR[[1=>I-.E!%&A!B!*:N
 	
 H()%.2a3JK/H*+ +/!!"78:MN+H&'  &*"//:P*Q%RH\"AE!!:Bhll<6 !'(2
 \
 >@%&*y/C'+BII{,C'D$ %&* R[[]+$$$ 0&*-AF'# ')#0&*288ITU+V&W#&(#!!"++-0N%%%9)KL::</# 7%-+ r;   
collectionr`   rJ  c           
         U " [         R                  " [        [         R                  " [        6 X#S95      nUR
                  (       a  UR
                  R                  5        H  nXT;   d  M
  XE	 M     UR
                  R                  5        VVs0 s H>  u  pg[        U[        [        [        45      (       d  M'  U[         R                  " U5      _M@     nnnUR                  U " [         R                  " 0 US95      5        U0 :X  a  gU$ s  snnf )zMStrategy for generating metadata that could be a part of the given collectionrI  )optionalN)r~   dictionariesr   r   ry   r:  keysr  
isinstancerB   r   floatr   rN  fixed_dictionaries)	r   rW  r`   rJ  r\   r  r  r   sampling_dicts	            r9   r\   r\     s      $
ryy+.	
 H %%11668CM 9 #66<<>O
>!c3./ ArwwqzM> 	 O

 	R222NOP2~OO
s   &D	8D	c                     [         (       d  SnUR                  (       a!  [        R                  " UR                  5      nO'[        R                  " S[        R
                  " US9S9n[        R                  " S[        R
                  " US9S9nU " [        R                  " [        R                  " X45      SS95      nSR                  U5      $ SnUR                  (       a!  [        R                  " UR                  5      nO'[        R                  " S[        R
                  " US9S9n[        R                  " S[        R
                  " US9S9nU " [        R                  " [        R                  " X45      SS95      nSR                  U5      $ )	zNStrategy for generating documents that could be a part of the given collection)CcCsPcPora   )blacklist_categories)r`   r_   r^   r`    )ra  rb  )	r   r;  r~   r   r   
charactersrQ  r   join)r   rW  re  known_words_strandom_words_stwordss         r9   r]   r]   :  s+      8--__Z-O-OPNWW<PQN
 ''DX!Y
 RXXbiiHSTUVxx ()))K)KL]]8LM

 ggR]]@TUO "))NDqQRE88E?r;   r   collection_strategyid_strategynum_unique_metadatamin_metadata_sizemax_metadata_sizec                    U " U5      n[        U " [        R                  " X#USS95      5      n	S n
UR                  (       a*  [	        UR
                  [        U	5      UR                  5      n
Ub  UO
[        U	5      nU " [        R                  " [        XUS9UUS95      n/ n[        [        U	5      5       H"  nUR                  X[        U5      -     5        M$     S nUR                  (       a7  U " [        R                  " [        U5      [        U	5      [        U	5      S95      n[        U	5      S:X  a  U " [        R                  " 5       5      (       a  U	S   OU	nU
b%  U " [        R                  " 5       5      (       a  U
S   OU
nU " [        R                  " 5       5      (       a  US   OUnUb%  U " [        R                  " 5       5      (       a  US   OUn[        UUUUS9$ [        U	U
UUS9$ )NT)r`   rJ  uniquerI  r^   r   )rH   rI   rJ   rK   )r   r~   rQ  r=  r   r9  r4   r   r\   r  appendr<  r]   r   rF   )r   rm  rn  r`   rJ  ro  rp  rq  rW  rH   rI   num_metadatagenerated_metadatasrJ   irK   	single_idsingle_embeddingsingle_metadatasingle_documents                       r9   
recordsetsr|  e  s    )*J
RXXkxPTUVC (,J  &z';';SXzGWGWX
*=*I&sSVxL
AR "!	
 I3s8_,5H1I-IJK  &*IHHXj)CHs3xP
	 3x1}59"++-5H5H3q6c	 %$r{{}*=*= qM 	 !//IaLY 	 &1d2;;=6I6IIaLy 	 '%%	
 	
 	 r;   r/  c                   ^  [        T [        5      (       a  [        R                  U 4S j5      $ [        T [        5      (       a  [
        R                  U 4S j5      $ [        T [        5      (       a(  [        R                  " 5       R                  U 4S j5      $ [        T [        5      (       a(  [        R                  " SSS9R                  U 4S j5      $ [        R                  " [        T 5      5      R                  U 4S j5      $ )	za
Returns a strategy that will generate all valid values except the input value - testing of $nin
c                    > U T:g  $ r}   r<   xr/  s    r9   ri    opposite_value.<locals>.<lambda>  s	    AJr;   c                    > U T:g  $ r}   r<   r  s    r9   ri   r    s	    !u*r;   c                    > U T:g  $ r}   r<   r  s    r9   ri   r    s	    a5jr;   ro   rp   rq   c                    > U T:g  $ r}   r<   r  s    r9   ri   r    s	    a5jr;   c                    > U T:g  $ r}   r<   r  s    r9   ri   r    s	    !u*r;   )r\  r]  safe_floatsr3  rB   r   rA  r~   r   r   r   	from_typetyper.  s   `r9   opposite_valuer    s     %!!"677	E3		 455	E4	 	 {{}##$899	E3		{{XCJJ 
 	
 ||DK(//0DEEr;   c                 f   [        UR                  R                  5       5      nU " [        R                  " U5      5      nUR                  U   nS/n[        U[        5      (       a  UR                  / SQ5        O[        U[        5      (       a  UR                  / SQ5        Oe[        U[        5      (       a  UR                  / SQ5        O<[        U[        5      (       a  UR                  / SQ5        O S[        U5       35       e[        U[        5      (       a?  X@" [        R                  " SS/5      5      -   n[        [        R                  " U5      5      nU " [        R                  " U5      5      nUc  X40$ US:X  aN  [        U[        5      (       a	  U(       d  0 $ X6U/[        S	5       Vs/ s H  op" [        U5      5      PM     snQ00$ US
:X  aK  [        U[        5      (       a	  U(       d  0 $ X6[        S	5       Vs/ s H  op" [        U5      5      PM     sn00$ X6U00$ s  snf s  snf )zLGenerate a filter that could be used in a query against the given collectionN)$eq$ne$in$nin)$gt$lt$lte$gte)r  r  r  r  r  r  r  r  zUnsupported type: gư>gưr  ra   r  )sortedr:  r[  r~   r   r\  rA  extendr]  r   rB   r  r   float32r  r  )r   rW  
known_keysr  r/  	legal_opsoprc   s           r9   where_clauser    s    
66;;=>J
rz*
+C**3/E&*VI%67	E5	!	!78	E3		TU	E3		678*4;-88u%R__dE];<<bjj'(R__Y78B	z|	ueS!!%I5Sq#RAD)>$?#RSTUU	veS!!%IaI14u 56IJKK%[!! $S Js   3H)
H.c                    [         (       dE  UR                  (       a'  U " [        R                  " UR                  5      5      nOQU " [        5      nODUR                  (       a'  U " [        R                  " UR                  5      5      nOU " [
        5      nU " [        R                  " SS/5      5      nUS:X  a  SU0$ US:X  d   eSU0$ )zPGenerate a where_document filter that could be used against the given collectionz	$containsz$not_contains)r   r;  r~   r   rR  r   )r   rW  wordr  s       r9   where_doc_clauser    s     --
(J(JKLD,-D--
(J(JKLD	?D
 
boo{O<=	>B	[T""_$$$&&r;   base_stc           	          [         R                  " SS/5      n[         R                  " U[         R                  " U SSS9SSS9$ Nz$andz$orr   )rJ  r`   r^   )r[  valuesr`   rJ  r~   r   rZ  rQ  r  r  s     r9   binary_operator_clauser  	  @     +-//65/*JB??xx!a8	 r;   c           	          [         R                  " SS/5      n[         R                  " U[         R                  " U SSS9SSS9$ r  r  r  s     r9   binary_document_operator_clauser    r  r;   c                 ^    [        U5      nU " [        R                  " U[        5      5      nU$ r}   )r  r~   	recursiver  r   rW  r  wheres       r9   recursive_where_clauser  !  s'    :&Gbll74JKLELr;   c                 ^    [        U5      nU " [        R                  " U[        5      5      nU$ r}   )r  r~   r  r  r  s       r9   recursive_where_doc_clauser  (  s.     z*G!%
W=>"E Lr;   c                   ~    \ rS rSr% \\R                     \S'   \\\	\
\	   4      \S'   \\R                     \S'   Srg)Filteri3  r  rH   where_documentr<   N)r=   r>   r?   r@   r   rL   WhererN   r   rB   r   WhereDocumentrC   r<   r;   r9   r  r  3  s:    EKK  	%T#Y'	((U0011r;   r  collection_strecordset_stinclude_all_idsc           
         U " U5      nU " U5      nU " [         R                  " [         R                  " 5       [        U5      5      5      nU " [         R                  " [         R                  " 5       [	        U5      5      5      n[        US   [        5      (       a  US   /nOUS   nU(       dn  U " [         R                  " [         R                  " 5       [         R                  " [         R                  " U5      SS95      5      nUb  [        [        U5      5      nUb4  [        U5      S:X  a%  U " [         R                  " 5       5      (       a  US   nXgUS.$ )NrH   r^   rf  r   )r  r  rH   )r~   r   r   r  r  r\  rB   rQ  r   r   setr4   r   )	r   r  r  r  rW  	recordsetr  where_document_clauserH   s	            r9   filtersr  9  s    m$J\"I		"'')-CJ-OPQL 
		"'')7
CD )E"C(( 299RWWY1EPQ(RST?s3x.C 3s8q=T"++--@-@!f!SVWWr;   )r   N)F)r   r   hypothesis.strategies
strategiesr~   typingr   r   r   r   r   r   r	   typing_extensionsr
   r?  numpyr   numpy.typingr   chromadb.api.typesapirL   r   *hypothesis.strategies._internal.strategiesr   !chromadb.test.api.test_schema_e2er   r   chromadb.test.conftestr   dataclassesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   chromadb.typesr    r!   r"   r#   %chromadb.api.collection_configurationr$   r%   r&   "chromadb.utils.embedding_functionsr'   r   seedrO  dictr-   rF   rR   rU   rX   sql_alphabetr   r   sql_alphabet_minus_underscorerR  tenant_database_namer3  r   safe_integersr   r  r   ry   r   r]  rB   rA  rN   r   legal_id_charactersfloat16r  float64rL  int16int32int64	int_types	compositeDrawFnr   r   r   rZ  rK  r   r   NDArrayr   r   r   r   r   r   r   r   r  r  r  r  r!  r(  r*  r6  r8  r   rV  r\   rP   r]   r|  r  r  r  r  r  r  r  r  r  r  r  r<   r;   r9   <module>r     s5	     " @ @ @ '    " " 	 E 4 !    $ H G 9 

 		q .   	3 	3	E" 	E., ... .'Y ' RGG\A6	E  ww(EPQR wwqA +22  4]  ^  >?	+223TU )
 ii
 KKM	CT.sE3'<!=>? !!#&464E4Ec4Js J  zz2::rzz2XXrxx*	 	")) 	 	 	 iiGGIry"))[*AB 	 == 	*				 ==	 YYs		Q!8!8!C Q8C)@)@)K C
	]]u..z:; F F F  7   Iryy I5F I IX bii <S  ( D")) D(8 D DN *bii *H=O4P * *0 74
))74+,74 74t 	 	 	=$sCx. =T#s(^ =!2 tCH~  7
))7
64S>!"7 7 3
))33 3l F# F F&  !&"%)$(;=775>##'m
))mm m TN	m
 D>m "$!2!24!8m m !m m m`  "	
))  sm	
 enn @ '299 '* ' ' 'T  7Bm'0 *.'+E
))E'
3E  $E 	E
 E "#E E  }E E EPF, F>#+> F$ ("ryy ("j ("U[[ (" ("V '299 '* 'ATAT ' '8	EKK(	EKK 		E//0	E''(	  
 u{{   
))!+
 2Y 2 
 "	X
))X$$Z0X ##I.X 	X
 X Xr;   