
    ugtg              	          d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
Zd dlmZ d dlmc mZ d dlmc mZ d dlmZ d dlmZmZmZ d dlmZmZmZmZm Z  d dl!m"Z"m#Z#m$Z$ d d	l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3  G d
 de      Z4 G d de      Z5de1de,dejb                  fdZ6dejb                  deee,f   fdZ7dejR                  de)fdZ8dej`                  dee(   fdZ9dej`                  dee0   fdZ:dej`                  de;deee0e(f      fdZ<de0dej`                  fdZ=dejT                  de/de'fdZ>dejZ                  de-fdZ?de-dejZ                  fd Z@d!ej\                  de.fd"ZAd!e.dej\                  fd#ZBd$eeCeDeEe;df   dej                  fd%ZGd&ejL                  de&fd'ZHd&e&dejL                  fd(ZIde)dejR                  fd)ZJd*e*dejT                  fd+ZKd,ejd                  de2fd-ZLd,e2de,dejd                  fd.ZMd/ejf                  de3fd0ZNd1ejV                  de+fd2ZOd1e+dejV                  fd3ZPd4edej2                  fd5ZQd6edej4                  fd7ZRd8e dej                  fd9ZTd:edej                  fd;ZVd<edej                  fd=ZXd>edej                  fd?ZZd@edej                  fdAZ\d@edej                  fdBZ^dCe"dejD                  fdDZ_dEej                  deDfdFZadGe#dejF                  fdHZbdIejh                  de4fdJZcdEej                  dee4   fdKZed<e$dejH                  fdLZfdIejj                  de5fdMZgdNej                  deee5      fdOZiy)P    )DictOptionalSequenceTuple	TypedDictUnioncast)UUIDN)NDArray)CollectionConfigurationInternal)	EmbeddingWhereWhereDocument)KNNFilterLimit
ProjectionScan)	CountPlanGetPlanKNNPlan)
Collection	LogRecordMetadata	OperationOperationRecordRequestVersionContextScalarEncodingSegmentSegmentScopeSeqIdUpdateMetadataVectorVectorEmbeddingRecordVectorQueryResultc                   H    e Zd ZU eed<   ee   ed<   ee   ed<   ee   ed<   y)ProjectionRecordiddocument	embeddingmetadataN)__name__
__module____qualname__str__annotations__r   r#   r        K/var/www/openai/venv/lib/python3.12/site-packages/chromadb/proto/convert.pyr'   r'   %   s'    Gsmx  r2   r'   c                   (    e Zd ZU eed<   ee   ed<   y)KNNProjectionRecordrecorddistanceN)r,   r-   r.   r'   r0   r   floatr1   r2   r3   r5   r5   ,   s    uor2   r5   vectorencodingreturnc                 *   |t         j                  k(  rNt        j                  | t        j                        j                         }t        j                   j                  }n|t         j                  k(  rNt        j                  | t        j                        j                         }t        j                   j                  }n0t        d| dt         j                   dt         j                         t        j                  | j                  ||      S )NdtypeUnknown encoding , expected one of z             or )	dimensionr9   r:   )r   FLOAT32nparrayfloat32tobytes	chroma_pbINT32int32
ValueErrorr#   size)r9   r:   as_bytesproto_encodings       r3   to_proto_vectorrN   2   s    >)))88F"**5==?"1199	^))	)88F"((3;;="1177z);N<R<R;S T$$%'
 	

 fkk(^\\r2   c                 "   | j                   }|t        j                  j                  k(  rCt	        j
                  | j                  t        j                        }t        j                  }||fS |t        j                  j                  k(  rCt	        j
                  | j                  t        j                        }t        j                  }||fS t        d| dt        j                  j                   dt        j                  j                         )Nr=   r?   z, expected one of             z or )r:   rG   r   rB   rC   
frombufferr9   rE   rH   rI   rJ   )r9   r:   as_arrayout_encodings       r3   from_proto_vectorrS   B   s    H9++333==bjjA%-- l## 
Y--33	3==bhh?%++ l## z *%%--.d93K3K3Q3Q2RT
 	
r2   	operationc                    | t         j                  j                  k(  rt        j                  S | t         j                  j                  k(  rt        j                  S | t         j                  j                  k(  rt        j                  S | t         j                  j
                  k(  rt        j
                  S t        d|        )NUnknown operation )rG   r   ADDUPDATEUPSERTDELETERuntimeErrorrT   s    r3   from_proto_operationr]   T   s    I''+++}}	i))00	0	i))00	0	i))00	0 /	{;<<r2   r+   c                 D    t        t        t           t        | d            S )NF)r	   r   r    _from_proto_metadata_handle_noner+   s    r3   from_proto_metadatara   b   s    "$DXu$UVVr2   c                 D    t        t        t           t        | d            S )NT)r	   r   r"   r_   r`   s    r3   from_proto_update_metadatarc   f   s#      "B8T"R r2   	is_updatec                    | j                   sy i }| j                   j                         D ]  \  }}|j                  d      r|j                  ||<   '|j                  d      r|j                  ||<   H|j                  d      r|j
                  ||<   i|j                  d      r|j                  ||<   |rd ||<   t        d| d       |S )N
bool_valuestring_value	int_valuefloat_valuezMetadata key z value cannot be None)r+   itemsHasFieldrf   rg   rh   ri   rJ   )r+   rd   out_metadatakeyvalues        r3   r_   r_   n   s     BDL''--/
U>>,' % 0 0L^^N+ % 2 2L^^K( %L^^M* % 1 1L $L}SE1FGHH 0 r2   c           
          t        j                  | j                         D ci c]  \  }}|t        |       c}}      S c c}}w )Nr`   )rG   r"   rj   to_proto_metadata_update_value)r+   kvs      r3   to_proto_update_metadatars      sB    ##CK>>CSTCS41a!3A66CST Ts   A
operation_recordseq_idc                     t        | j                        \  }}t        |t        | j                  ||t        | j                        t        | j                                    }|S )N)r(   r*   r:   r+   rT   )
log_offsetr6   )	rS   r9   r   r   r(   rc   r+   r]   rT   )rt   ru   r*   r:   r6   s        r3   from_proto_submitrx      sc     ,,<,C,CDIx""/0@0I0IJ*+;+E+EF
	F Mr2   segmentc                    t        t        | j                        | j                  t	        | j
                        t        | j                        | j                  d      rt        | j                        nd | j                  j                         D ci c]   \  }}||j                  D cg c]  }| c}" c}}}      S c c}w c c}}}w )Nhexr+   r(   typescope
collectionr+   
file_paths)r   r
   r(   r~   from_proto_segment_scoper   r   rk   ra   r+   r   rj   paths)ry   namer   paths       r3   from_proto_segmentr      s    GJJ\\&w}}5G../J' %W%5%56LSL^L^LdLdLfgLf[T5DEKK8KD4K88Lfg	 	 9gs   C+	C4CCc                 .   t        j                  | d   j                  | d   t        | d         | d   j                  | d   d nt	        | d         | d   j                         D ci c]  \  }}|t        j                  |       c}}      S c c}}w )	Nr(   r~   r   r   r+   r   )r   r}   )rG   r   r|   to_proto_segment_scopers   rj   	FilePaths)ry   r   r   s      r3   to_proto_segmentr      s    4=V_$WW%56<(,,:& %gj&9:NUVbNcNiNiNklNk{tUD)--E::Nkl	 	 ms   '!Bsegment_scopec                 ,   | t         j                  j                  k(  rt        j                  S | t         j                  j                  k(  rt        j                  S | t         j                  j                  k(  rt        j                  S t        d|        NzUnknown segment scope )rG   r    VECTORMETADATARECORDr[   r   s    r3   r   r      su    	..555"""	)0099	9$$$	)0077	7"""3M?CDDr2   c                 ,   | t         j                  k(  rt        j                   j                  S | t         j                  k(  rt        j                   j                  S | t         j                  k(  rt        j                   j                  S t        d|        r   )r    r   rG   r   r   r[   r   s    r3   r   r      su    +++%%,,,	,//	/%%...	,--	-%%,,,3M?CDDr2   rn   c                    t        | t              rt        j                  |       S t        | t              rt        j                  |       S t        | t
              rt        j                  |       S t        | t              rt        j                  |       S | t        j                         S t        dt        |        d      )N)rf   )rg   )rh   )ri   zUnknown metadata value type z6, expected one of str, int,             float, or None)	
isinstanceboolrG   UpdateMetadataValuer/   intr8   rJ   r~   )rn   s    r3   rp   rp      s     %,,>>	E3	,,%@@	E3	,,u==	E5	!,,??	,,..*4;- 8 
 	
r2   r   c                    t        t        | j                        | j                  t	        j
                  | j                        | j                  d      rt        | j                        nd | j                  d      r| j                  r| j                  nd | j                  | j                  | j                  | j                  	      S )Nr{   r+   rA   )	r(   r   configurationr+   rA   databasetenantversionlog_position)r   r
   r(   r   r   from_json_strconfiguration_json_strrk   ra   r+   rA   r   r   r   r   r   s    r3   from_proto_collectionr      s    JMM"__5CC--
 z* %Z%8%89{+
0D0D &&$$  "",, r2   c                     t        j                  | d   j                  | d   | j                         j	                         | d   d nt        | d         | d   | d   | d   | d   | d   		      S )
Nr(   r   r+   rA   r   r   r   r   )	r(   r   r   r+   rA   r   r   r   r   )rG   r   r|   get_configurationto_json_strrs   r   s    r3   to_proto_collectionr      s    d);;=IIKj!) %j&<=[)(#J'/9% r2   c                    | t         j                  k(  rt        j                   j                  S | t         j                  k(  rt        j                   j                  S | t         j                  k(  rt        j                   j                  S | t         j
                  k(  rt        j                   j
                  S t        d|  dt         j                   dt         j                   dt         j                   dt         j
                   
      )NrV   r@   z,             z, z, or )r   rW   rG   rX   rY   rZ   rJ   r\   s    r3   to_proto_operationr     s    IMM!""&&&	i&&	&"")))	i&&	&"")))	i&&	&""))) +=imm_ Mb!1!1 2%	8H8H7IK
 	
r2   submit_recordc           	          d }| d   | d   t        | d   | d         }d }| d   t        | d         }t        j                  | d   ||t	        | d               S )Nr*   r:   r+   r(   rT   )r(   r9   r+   rT   )rN   rs   rG   r   r   )r   r9   r+   s      r3   to_proto_submitr     s     F[!--
2K2W {!;]:=VWHZ ,+M*,EF$$$];%?@	 r2   embedding_recordc                 \    t        | j                  t        | j                        d         S )Nr   )r(   r*   )r$   r(   rS   r9   )r   s    r3   "from_proto_vector_embedding_recordr   *  s.     !#$4$;$;<Q? r2   c                 P    t        j                  | d   t        | d   |            S )Nr(   r*   )r(   r9   )rG   r$   rN   )r   r:   s     r3    to_proto_vector_embedding_recordr   3  s/     **D!/<hG r2   vector_query_resultc                 r    t        | j                  | j                  t        | j                        d         S )Nr   )r(   r7   r*   )r%   r(   r7   rS   r9   )r   s    r3   from_proto_vector_query_resultr   =  s7     !!$--#$7$>$>?B r2   request_version_contextc                 D    t        | j                  | j                        S )Ncollection_versionr   )r   r   r   r   s    r3   "from_proto_request_version_contextr   G  s#     !2EE,99 r2   c                 <    t        j                  | d   | d         S )Nr   r   r   )rG   r   r   s    r3    to_proto_request_version_contextr   P  s(     **23GH,^< r2   wherec           	         t        j                         }t        |       dk7  rt        d|        | j	                         D 	]  \  }}t        |t              st        d|       |dk(  s|dk(  rt        |t              st        d|       t        j                  |D cg c]  }t        |       c}      }|dk(  r t         j                  j                  |_        nt         j                  j                  |_        |j                  j                  |       |c S t        j                          }||_        t        |t$              st'        |      t        u rWt        j(                         }||_        t         j,                  j.                  |_        |j2                  j                  |       nzt'        |      t4        u rWt        j6                         }||_        t         j,                  j.                  |_        |j8                  j                  |       nt'        |      t:        u rWt        j<                         }	||	_        t         j,                  j.                  |	_        |j@                  j                  |	       nt'        |      tB        u rWt        jD                         }
||
_        t         j,                  j.                  |
_        |jF                  j                  |
       nBt        d|       |j	                         D ]   \  }|d	v rTt        t              st        d
|       t              dk(  stI        fdD              st        d       d }|dk(  rt         jJ                  jL                  }nt         jJ                  jN                  }t'        d         t        u r[t        jP                         }D ]  }|jR                  jU                  |g         ||_+        |jX                  j                  |       t'        d         t4        u r[t        jZ                         }D ]  }|jR                  jU                  |g         ||_+        |j\                  j                  |       tt'        d         t:        u r[t        j^                         }D ]  }|jR                  jU                  |g         ||_+        |j`                  j                  |       t'        d         tB        u r[t        jb                         }D ]  }|jR                  jU                  |g         ||_+        |jd                  j                  |       Rt        d       |dv rt'              t        u rt        j(                         }|_        |dk(  r t         j,                  j.                  |_        n3|dk(  r t         j,                  jf                  |_        nt        d|       |j2                  j                  |       t'              t4        u rt        j6                         }|_        |dk(  r t         j,                  j.                  |_        n3|dk(  r t         j,                  jf                  |_        nt        d|       |j8                  j                  |       t'              t:        u r$t        j<                         }	|	_        |dk(  r t         j,                  j.                  |	_        n|dk(  r t         j,                  jf                  |	_        n|dk(  r t         jh                  jj                  |	_6        n}|dk(  r t         jh                  jn                  |	_6        nX|dk(  r t         jh                  jp                  |	_6        n3|dk(  r t         jh                  jr                  |	_6        nt        d|       |j@                  j                  |	       t'              tB        u r$t        jD                         }|_        |dk(  r t         j,                  j.                  |_        n|dk(  r t         j,                  jf                  |_        n|dk(  r t         jh                  jj                  |_6        n}|dk(  r t         jh                  jn                  |_6        nX|dk(  r t         jh                  jp                  |_6        n3|dk(  r t         jh                  jr                  |_6        nt        d|       |jF                  j                  |       t        d       # |jt                  j                  |       	 |S c c}w )N   z1Expected where to have exactly one operator, got z$Expected where key to be a str, got $and$orzLExpected where value for $and or $or to be a list of where expressions, got childrenz8Expected where value to be a string, int, or float, got )$inz$ninzAExpected where value for $in or $nin to be a list of values, got r   c              3   N   K   | ]  }t        |t        d                  yw)r   N)r   r~   ).0xoperands     r3   	<genexpr>z!to_proto_where.<locals>.<genexpr>  s%      4AHA
1d71:&67s   "%z_Expected where operand value to be a non-empty list, and all values to be of the same type got r   zKExpected where operand value to be a list of strings, ints, or floats, got )$eq$ne$gt$lt$gte$lter   r   z.Expected where operator to be $eq or $ne, got r   r   r   r   zIExpected where operator to be one of $eq, $ne, $gt, $lt, $gte, $lte, got z@Expected where operand value to be a string, int, or float, got );rG   r   lenrJ   rj   r   r/   listWhereChildrento_proto_whereBooleanOperatorANDoperatorORr   CopyFromDirectComparisonrm   dictr~   SingleStringComparisonrn   GenericComparatorEQ
comparatorsingle_string_operandr   SingleBoolComparisonsingle_bool_operandr   SingleIntComparisongeneric_comparatorsingle_int_operandr8   SingleDoubleComparisonsingle_double_operandallListOperatorINNINStringListComparisonvaluesextendlist_operatorstring_list_operandBoolListComparisonbool_list_operandIntListComparisonint_list_operandDoubleListComparisondouble_list_operandNENumberComparatorGTnumber_comparatorLTGTELTEdirect_comparison)r   responserm   rn   wr   dcsscsbcsicsdcr   r   slor   bloilodlosfcr   s                      @r3   r   r   Y  s    H
5zQLUGTUUkkm
U#s#CC5IJJ&=C5LeT* bchbij  1:0G0G5:;U.+U;1H f}$-$=$=$A$A!$-$=$=$@$@!&&x0O
 '')%&E{c!668!	!*!<!<!?!?((11#6e$446!	!*!<!<!?!?&&//4e#335!	)2)D)D)G)G&%%..s3e%668!	)2)D)D)G)G&((11#6 NugV  &+[[]!'.%gt4(_`e_fg  7|q( 4AH4 1 )##*)-  %)M5((1(>(>(A(A(1(>(>(B(BGAJ'3.'<<>!(AJJ--qc2 "),9)..77<gaj)T1'::<!(AJJ--qc2 "),9),,55c:gaj)S0'99;!(AJJ--qc2 "),9)++44S9gaj)U2'<<>!(AJJ--qc2 "),9)..77<(ijqirs  !MMG}+'>>@$+	#u,-6-H-H-K-KCN%.-6-H-H-K-KCN","PQYPZ [#  0099#>g$.'<<>$+	#u,-6-H-H-K-KCN%.-6-H-H-K-KCN","PQYPZ [#  ..77<g#-';;=$+	#u,5>5P5P5S5SC2%.5>5P5P5S5SC2%.4=4N4N4Q4QC1%.4=4N4N4Q4QC1%/4=4N4N4R4RC1%/4=4N4N4R4RC1","kltku v#  --66s;g%/'>>@$+	#u,5>5P5P5S5SC2%.5>5P5P5S5SC2%.4=4N4N4Q4QC1%.4=4N4N4Q4QC1%/4=4N4N4R4RC1%/4=4N4N4R4RC1","kltku v#  0099#>(^_f^gh  o &3r 	""++B/] $^ OK <s   "e
where_documentc           	      f   t        j                         }t        |       dk7  rt        d|        | j	                         D ]g  \  }}|dk(  s|dk(  rt        |t              st        d|       t        j                  |D cg c]  }t        |       c}      }|dk(  r t         j                  j                  |_        nt         j                  j                  |_        |j                  j                  |       t        |t              st        d|       t        j                          }||_        |dk(  r t         j$                  j&                  |_        n3|d	k(  r t         j$                  j(                  |_        nt        d
|       |j*                  j                  |       j |S c c}w )Nr   z:Expected where_document to have exactly one operator, got r   r   z^Expected where_document value for $and or $or to be a list of where_document expressions, got r   z4Expected where_document operand to be a string, got z	$containsz$not_containszLExpected where_document operator to be one of $contains, $not_contains, got )rG   r   r   rJ   rj   r   r   WhereDocumentChildrento_proto_where_documentr   r   r   r   r   r   r/   DirectWhereDocumentr)   WhereDocumentOperatorCONTAINSNOT_CONTAINSdirect)r  r   r   r   r   r   dwds          r3   r  r    s   &&(H
>aHHXY
 	
 ,113'vU!2gt, tu|t}~  9B8W8W>EFg1!4gF9H 6!$-$=$=$A$A!$-$=$=$@$@!&&x0 gs+ J7)T  //1C"CL;&(>>GG_,(>>KK bckblm  OO$$S)C 4F O7 Gs   F.
scanc                     t        j                  t        | j                        t	        | j
                        t	        | j                        t	        | j                              S )N)r   knnr+   r6   )query_pbScanOperatorr   r   r   r  r+   r6   r  s    r3   to_proto_scanr  =  sE      &t7TXX&!$--0,	 r2   filterc                    t        j                  | j                   t        j                  | j                        nd | j
                  rt        | j
                        nd | j                  rt        | j                              S d       S )N)ids)r  r   r  )	r  FilterOperatoruser_idsrG   UserIdsr   r   r  r  )r  s    r3   to_proto_filterr  F  so    ""6<oo6QI&//2W[.4llnV\\*   /v/D/DE 
  r2   r  c           	          t        j                  | j                  D cg c]  }t        |t        j
                         c}| j                        S c c}w )N)r9   r:   )
embeddingsfetch)r  KNNOperatorr!  rN   r   rB   r"  )r  r*   s     r3   to_proto_knnr$  P  sQ     !^^
+	 9~7M7MN+
 ii 
s   "Alimitc                 X    t        j                  | j                  | j                        S )N)skipr"  )r  LimitOperatorr'  r"  )r%  s    r3   to_proto_limitr)  Z  s    !!uzzEEr2   
projectionc                 n    t        j                  | j                  | j                  | j                        S )N)r)   r*   r+   )r  ProjectionOperatorr)   r*   r+   r*  s    r3   to_proto_projectionr.  ^  s0    &&$$&&$$ r2   c                 V    t        j                  t        |       | j                        S )N)r*  r7   )r  KNNProjectionOperatorr.  rankr-  s    r3   to_proto_knn_projectionr2  f  s#    ))&z2Z__ r2   countc                 T    t        j                  t        | j                              S )Nr  )r  r   r  r  r3  s    r3   to_proto_count_planr6  l  s    =#<==r2   resultc                     | j                   S Nr5  )r7  s    r3   from_proto_count_resultr:  p  s    <<r2   getc                     t        j                  t        | j                        t	        | j
                        t        | j                        t        | j                              S )N)r  r  r%  r*  )
r  r   r  r  r  r  r)  r%  r.  r*  )r;  s    r3   to_proto_get_planr=  t  sE    388$szz*SYY'&s~~6	 r2   r6   c                     t        | j                  | j                  r| j                  nd | j                  t	        | j                        d   nd t        | j                              S )Nr   )r(   r)   r*   r+   )r'   r(   r)   r*   rS   ra   r+   r6   s    r3   from_proto_projection_recordr@  }  sU    99$*OO' $F$4$45a8$V__5 r2   c                 R    | j                   D cg c]  }t        |       c}S c c}w r9  )recordsr@  )r7  r6   s     r3   from_proto_get_resultrC    s$    ?E~~N~V(0~NNNs   $c                     t        j                  t        | j                        t	        | j
                        t        | j                        t        | j                              S )N)r  r  r  r*  )
r  r   r  r  r  r  r$  r  r2  r*  )r  s    r3   to_proto_knn_planrE    sE    388$szz*!*3>>:	 r2   c                 V    t        t        | j                        | j                        S )N)r6   r7   )r5   r@  r6   r7   r?  s    r3    from_proto_knn_projection_recordrG    s#     +FMM:V__ r2   resultsc           
          | j                   D cg c]%  }|j                  D cg c]  }t        |       c}' c}}S c c}w c c}}w r9  )rH  rB  rG  )rH  r7  r6   s      r3   from_proto_knn_batch_resultrJ    sK    
 oo%F AGOf	)&	1O% Os   A>AA)jtypingr   r   r   r   r   r   r	   uuidr
   numpyrC   numpy.typingr   chromadb.proto.chroma_pb2proto
chroma_pb2rG   !chromadb.proto.query_executor_pb2query_executor_pb2r  chromadb.api.configurationr   chromadb.api.typesr   r   r   &chromadb.execution.expression.operatorr   r   r   r   r   "chromadb.execution.expression.planr   r   r   chromadb.typesr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   r5   rN   rS   r]   ra   rc   r   r_   rs   rx   r   r   r   r   r/   r   r8   r   rp   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r#  r$  r(  r)  r,  r.  r0  r2  r6  CountResultr:  r=  r@  	GetResultrC  rE  rG  KNNBatchResultrJ  r1   r2   r3   <module>r\     s   J J J     - - 4 4 F > >  K J   $!y !) ]F ]n ]AQAQ ] $i.. $5N9R3S $$=I$7$7 =I =W)":": Wx?Q W&&n&&37eNH,-.,~ ):R:R //9>"
	 1 1 
g 

g 
)*;*; 
EI,B,B E| EE, E9;Q;Q E
c5$,-
""
0i&:&: z (J 93G3G  
) 
	0C0C 
 "&55+ $$"44&<<2$$t% tIOO tn*M *i>U>U *Z !6!6 F x'>'> c h22 F% FH$:$: FJ 83N3N 
 x7U7U >y >X-?-? >H$8$8 S 7 x'7'7 )B)B GW O("4"4 OBR9S O7 x'7'7 (($$h*+,r2   