o
    :i,                    @   s  d dl Z d dlmZmZmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ zd dlmZ W n	 ey=   Y nw d dlmZ d d	lmZmZmZmZ d d
lmZ d dlmZmZ d dlm Z  dede!de"fddZ#dedefddZ$dedefddZ%de&e!ef de&e!ef fddZ'de
e!ef de&e!ef fddZ(dej)dej*fddZ+dej*dej)fd d!Z,G d"d# d#Z-G d$d% d%Z.dS )&    N)datedatetimetimezone)AnyMappingSequenceget_args)
MessageMap)MessageToDict)	Timestamp)MessageMapContainer)grpc)	ListValue	NullValueStructValue)models)	constructto_jsonable_python)get_args_subscribedmessagefieldreturnc                 C   s>   z|  |W S  ty   tdd |  D }||v  Y S w )a  
    Same as protobuf HasField, but also works for primitive values
    (https://stackoverflow.com/questions/51918871/check-if-a-field-has-been-set-in-protocol-buffer-3)

    Args:
        message (Any): protobuf message
        field (str): name of the field
    c                 S   s   g | ]\}}|j qS  name).0
descriptor_valuer   r   q/home/aiteam/pcaa-dev/dashboard-backend/venv/lib/python3.10/site-packages/qdrant_client/conversions/conversion.py
<listcomp>!       zhas_field.<locals>.<listcomp>)HasField
ValueErrorset
ListFields)r   r   
all_fieldsr   r   r   	has_field   s   	r'   payloadc                 C   s   | d u r
t tjdS t| trt | dS t| trt | dS t| tr(t | dS t| tr2t | dS t| tt	frFt t
dd | D dd	S t| tr\t ttd
d |  D ddS t| tsft| trmt t| dS td|  )N)
null_value)
bool_valueinteger_value)double_valuestring_valuec                 S   s   g | ]}t |qS r   json_to_value)r   vr   r   r   r    1   s    z!json_to_value.<locals>.<listcomp>)values)
list_valuec                 s        | ]\}}|t |fV  qd S Nr0   )r   kr2   r   r   r   	<genexpr>4       z json_to_value.<locals>.<genexpr>fields)struct_valuezNot supported json value: )r   r   
NULL_VALUE
isinstanceboolintfloatstrlisttupler   dictr   itemsr   r   r   r#   r(   r   r   r   r1   %   s&   








r1   valuec                 C   s   t | trt| dd}n| }d|v rt|d S d|v r |d S d|v r(|d S d|v r0|d S d|v rKd|d vr<i S td	d
 |d d  D S d|v rdd|d v rbtdd
 |d d D S g S d|v rjd S td| )NF)preserving_proto_field_nameintegerValuedoubleValuestringValue	boolValuestructValuer;   c                 s   r5   r6   value_to_jsonr   keyvalr   r   r   r8   N   s    
z value_to_json.<locals>.<genexpr>	listValuer3   c                 s   s    | ]}t |V  qd S r6   rO   )r   rS   r   r   r   r8   S   s    	nullValuezNot supported value: )r>   r   r
   r@   rE   rF   rC   r#   )rH   value_r   r   r   rP   ;   s0   
rP   c                 C      t dd |  D S )Nc                 s   r5   r6   r0   rQ   r   r   r   r8   \   r9   z"payload_to_grpc.<locals>.<genexpr>rE   rF   rG   r   r   r   payload_to_grpc[      rY   grpc_c                 C   rW   )Nc                 s   r5   r6   rO   rQ   r   r   r   r8   `   r9   z"grpc_to_payload.<locals>.<genexpr>rX   )r[   r   r   r   grpc_to_payload_   rZ   r\   modelc                 C      | t jjkr
t jjS | t jjkrt jjS | t jjkrt jjS | t jj	kr(t jj
S | t jjkr2t jjS | t jjkr<t jjS | t jjkrFt jjS | t jjkrPt jjS td|  Nz!invalid PayloadSchemaType model: )r   PayloadSchemaTypeKeyword	FieldTypeFieldTypeKeywordIntegerFieldTypeIntegerFloatFieldTypeFloatBoolFieldTypeBoolGeoFieldTypeGeoTextFieldTypeTextDatetimeFieldTypeDatetimeUuidFieldTypeUuidr#   r]   r   r   r   !grpc_payload_schema_to_field_typec   "   rs   c                 C   r^   )Nzinvalid FieldType model: )r   rb   rc   r`   ra   re   rd   rg   rf   ri   rh   rk   rj   rm   rl   ro   rn   rq   rp   r#   rr   r   r   r   !grpc_field_type_to_payload_schemax   rt   ru   c                
   @   s  e Zd ZedejdejfddZedejdejfddZ	edej
dej
fddZededefd	d
ZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedej dej fddZ!edej dej"fddZ#edej$dej$fdd Z%edej&dej'fd!d"Z(edej)dej)fd#d$Z*edej+dej,fd%d&Z-ede.e/ej0f de.e/ej1f fd'd(Z2edej0dej1fd)d*Z3edej4dej5fd+d,Z6edej7dej7fd-d.Z8edej9dej9fd/d0Z:edej;dej;fd1d2Z<edej=dej=fd3d4Z>edej?dej?fd5d6Z@edejAdejAfd7d8ZBedejCdejDfd9d:ZEedejFdejFfd;d<ZGedejHdejHfd=d>ZIedejJdejJfd?d@ZKedejLdejLfdAdBZMedejNdejNfdCdDZOedejPdejPfdEdFZQedejRdejRfdGdHZSedejTdejTfdIdJZUedejVdejVfdKdLZWedejXdejXfdMdNZYeddOdejZfdPdQZ[edej\dej\fdRdSZ]edej^dej^fdTdUZ_edej`dej`fdVdWZaedejbdejbfdXdYZcedejddejdfdZd[Zeedej+dej+fd\d]Zfedejgdejgfd^d_Zhedej&dej&fd`daZiedejjdejjfdbdcZkedejldejlfdddeZmedejndejnfdfdgZoedejpdejpfdhdiZqe	jdddejrdkejsdjB dejrfdldmZtedejudejvfdndoZwedejudejvfdpdqZxedejydejzfdrdsZ{edejydejzfdtduZ|edej}dej}fdvdwZ~edejdejfdxdyZedejdejfdzd{Zedejdejfd|d}Zedejdejfd~dZedejdejfddZedejdejfddZedejejB dee/djB ee eee  B ejB ejB ejB ejB f fddZedejdee eee  B ejB ejB ejB ejB fddZedejdee eee  B ejB fddZedejde.e/ejf fddZedejde.e/ejf fddZedejdejfddZedejdejfddZedejdee fddZedejdejfddZedejdeee  fddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdee/ fddÄZedejdejfddńZedejdejfddǄZedejdejfddɄZedejdejfdd˄Zedejdejfdd̈́ZedejdejfddτZedejdejfddфZedejdejfddӄZedejdejfddՄZedejdejfddׄZedejdejfddلZedejdejfddۄZedejdejfdd݄Zedejdejfdd߄ZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZ edejdejfddZedejdejfddZedejdejfddZedejdejfddZ	edej
dej
fddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfd dZedejdejfddZedejdejfddZedejdejfddZedejdejfdd	Zedejdejfd
dZ edej!dej!fddZ"edej#dej$fddZ%edej&dej&fddZ'edej(dej(fddZ)edej*de.e/ej(f fddZ+edej,dej,fddZ-edej.dej.fddZ/edejsdejsfddZ0edej1dej1fddZ2edej3ej4B ej5B ej6B ej7B ej8B ej9B ej:B dej;fddZ<edej3dej3fd d!Z=edej6dej6fd"d#Z>edej4dej4fd$d%Z?edej5dej5fd&d'Z@edej7dejAfd(d)ZBedej8dejCfd*d+ZDedej9dej9fd,d-ZEedej:dej:fd.d/ZFedejGdejGfd0d1ZHedejIdejIfd2d3ZJedejKdejKfd4d5ZLedejMdejMfd6d7ZNedejOdejOfd8d9ZPedejQdejRfd:d;ZSedejTdejUfd<d=ZVedejWdejWfd>d?ZXedejYdejZfd@dAZ[edej\dej]fdBdCZ^edej_dej_fdDdEZ`edejadejafdFdGZbedejcdejcfdHdIZdedejedejefdJdKZfedejgdejgfdLdMZhedejgdejifdNdOZjedejadejkfdPdQZledejedejmfdRdSZnedejcdejofdTdUZpedej_dejqfdVdWZredejsdejtfdXdYZuedejvdejvfdZd[Zwedejxdejxfd\d]Zyedejzdejzfd^d_Z{edej|dej|fd`daZ}edej~dej~fdbdcZdjS (e  
GrpcToRestr]   r   c                 C      | d}|d u rtd| t||}|dkr| |S |dkr'| |S |dkr0| |S |dkr9| |S |dkrB| |S |dkrK| |S |d	krT| 	|S td| )
Ncondition_one_ofinvalid Condition model: r   filterhas_id
has_vectoris_emptyis_nullnested)

WhichOneofr#   getattrconvert_field_conditionconvert_filterconvert_has_id_conditionconvert_has_vector_conditionconvert_is_empty_conditionconvert_is_null_conditionconvert_nested_conditionclsr]   r   rS   r   r   r   convert_condition   s&   








zGrpcToRest.convert_conditionc                    st   t j fdd|jD  fdd|jD  fdd|jD |dr6t j fdd|jjD |jj	ddS d dS )	Nc                       g | ]}  |qS r   r   r   	conditionr   r   r   r       r!   z-GrpcToRest.convert_filter.<locals>.<listcomp>c                    r   r   r   r   r   r   r   r       r!   c                    r   r   r   r   r   r   r   r       r!   
min_shouldc                    r   r   r   r   r   r   r   r           
conditions	min_count)mustshouldmust_notr   )
restFilterr   r   r   r"   	MinShouldr   r   r   r   r]   r   r   r   r      s   	
zGrpcToRest.convert_filterc                 C   V   t j|dr
|jnd |dr|jnd |dr|jnd |dr'|jdS d dS Ngtgteltlte)r   r   r   r   )r   Ranger"   r   r   r   r   r   r   r   r   convert_range      zGrpcToRest.convert_rangec                 C   s   |j tjdS )N)tzinfo)
ToDatetimer   utcr   r   r   r   convert_timestamp      zGrpcToRest.convert_timestampc                 C   sn   t j|dr| |jnd |dr| |jnd |dr%| |jnd |dr3| |jdS d dS r   )r   DatetimeRanger"   r   r   r   r   r   r   r   r   r   convert_datetime_range      z!GrpcToRest.convert_datetime_rangec                 C      t j| |j|jdS N)centerradius)r   	GeoRadiusconvert_geo_pointr   r   r   r   r   r   convert_geo_radius      zGrpcToRest.convert_geo_radiusc                       t j fdd|jD dS )Nc                    r   r   r   r   pointr   r   r   r       r!   z6GrpcToRest.convert_geo_line_string.<locals>.<listcomp>points)r   GeoLineStringr   r   r   r   r   convert_geo_line_string      z"GrpcToRest.convert_geo_line_stringc                    4   t j |j|jr fdd|jD dS d dS )Nc                    r   r   r   r   interiorr   r   r   r       r!   z2GrpcToRest.convert_geo_polygon.<locals>.<listcomp>exterior	interiors)r   
GeoPolygonr   r   r   r   r   r   r   convert_geo_polygon   s   
zGrpcToRest.convert_geo_polygonc                 C      t j|jdS Nr   )r   CollectionDescriptionr   r   r   r   r   convert_collection_description      z)GrpcToRest.convert_collection_descriptionc              	   C   sB   t j| |j| |j| |j|j| 	|j
|j|jpddS )Nr   )configoptimizer_statuspayload_schemasegments_countstatuspoints_countindexed_vectors_count)r   CollectionInfoconvert_collection_configr   convert_optimizer_statusr   convert_payload_schemar   r   convert_collection_statusr   r   r   r   r   r   r   convert_collection_info   s   



z"GrpcToRest.convert_collection_infoc                 C   s   |j rtjjS tj|jdS )N)error)okr   OptimizersStatusOneOfOKOptimizersStatusOneOf1r   r   r   r   r   r      s   z#GrpcToRest.convert_optimizer_statusc              
   C   s~   t j| |j| |j| |j| |j	|
dr!| |jnd |
dr-| |jnd |jd ur;| |jdS d dS )Nquantization_configstrict_mode_config)hnsw_configoptimizer_configparams
wal_configr   r   metadata)r   CollectionConfigconvert_hnsw_configr   convert_optimizer_configr   convert_collection_paramsr   convert_wal_configr   r"   convert_quantization_configr   !convert_strict_mode_config_outputr   r   convert_payloadr   r   r   r   r      s   



z$GrpcToRest.convert_collection_configc              
   C      t j|dr
|jnd |dr|jnd |dr|jnd |dr%|jnd |dr.|jnd |dr7|jnd |drB|j	dS d dS 	Nef_constructmfull_scan_thresholdmax_indexing_threadson_disk	payload_minline_storage)r   r   r   r   r   r   r   )
r   HnswConfigDiffr"   r   r   r   r   r   r   r   r   r   r   r   convert_hnsw_config_diff     z#GrpcToRest.convert_hnsw_config_diffc              
   C   r   r   )
r   
HnswConfigr"   r   r   r   r   r   r   r   r   r   r   r   r     r   zGrpcToRest.convert_hnsw_configc                 C   sj   | d}|d u rtd| |dkr'|jtjjjkr tjj	S td| |dkr.|j
S td| )Nvariant&invalid MaxOptimizationThreads model: settingrH   )r   r#   r   r   MaxOptimizationThreadsSettingAutor   MaxOptimizationThreadsSettingAUTOrH   r   r]   r   r   r   r    convert_max_optimization_threads/  s   
z+GrpcToRest.convert_max_optimization_threadsc                 C   s   d }| dr|j}n| dr| |j}|tjjkrd }tj| dr(|jnd | dr1|j	nd | dr:|j
nd | drC|jnd || drM|jnd | drV|jnd | d	ra|jd
S d d
S N#deprecated_max_optimization_threadsmax_optimization_threadsdefault_segment_numberdeleted_thresholdflush_interval_secindexing_thresholdmax_segment_sizememmap_thresholdvacuum_min_vector_number)r  r	  r
  r  r  r  r  r  )r"   r  r  r  r   r  r  OptimizersConfigr  r	  r
  r  r  r  r  r   r]   r  r   r   r   r   C  s,   

z#GrpcToRest.convert_optimizer_configc                 C   ^   |t jjkr
tjjS |t jjkrtjjS |t jjkrtjjS |t jj	kr(tjj
S td| Nzinvalid Distance model: )r   DistanceCosiner   COSINEEuclidEUCLID	Manhattan	MANHATTANDotDOTr#   r   r   r   r   convert_distancej     zGrpcToRest.convert_distancec                 C   2   t j|dr
|jnd |dr|jdS d dS Nwal_capacity_mbwal_segments_aheadr   r!  )r   	WalConfigr"   r   r!  r   r   r   r   r   w     zGrpcToRest.convert_wal_configc                    s    fdd|  D S )Nc                    s   i | ]
\}}|  |qS r   )convert_payload_schema_info)r   rR   infor   r   r   
<dictcomp>      z5GrpcToRest.convert_payload_schema.<locals>.<dictcomp>)rF   r   r   r   r   r     s   z!GrpcToRest.convert_payload_schemac                 C   s0   t j| |j|dr| |jnd |jdS )Nr   	data_typer   r   )r   PayloadIndexInfoconvert_payload_schema_typer*  r"   convert_payload_schema_paramsr   r   r   r   r   r   r%    s   
z&GrpcToRest.convert_payload_schema_infoc           
      C   s   | dr|j}| |S | dr|j}| |S | dr'|j}| |S | dr4|j}| |S | drA|j	}| 
|S | drN|j}| |S | dr[|j}| |S | drh|j}	| |	S td	| )
Ntext_index_paramsinteger_index_paramskeyword_index_paramsfloat_index_paramsgeo_index_paramsbool_index_paramsdatetime_index_paramsuuid_index_paramsz"invalid PayloadIndexParams model: )r"   r.  convert_text_index_paramsr/  convert_integer_index_paramsr0  convert_keyword_index_paramsr1  convert_float_index_paramsr2  convert_geo_index_paramsr3  convert_bool_index_paramsr4  convert_datetime_index_paramsr5  convert_uuid_index_paramsr#   )
r   r]   r.  r/  r0  r1  r2  r3  r4  r5  r   r   r   r-    s2   















z(GrpcToRest.convert_payload_schema_paramsc                 C      |t jjkr
tjjS |t jjkrtjjS |t jjkrtjjS |t jj	kr(tjj
S |t jjkr2tjjS |t jjkr<tjjS |t jjkrFtjjS |t jjkrPtjjS td| r_   )r   r`   rf   r   FLOATrj   GEOrd   INTEGERra   KEYWORDrh   BOOLrl   TEXTrn   DATETIMErp   UUIDr#   r   r   r   r   r,    "   z&GrpcToRest.convert_payload_schema_typec                 C   r  Nz invalid CollectionStatus model: )r   CollectionStatusGreenr   GREENYellowYELLOWRedREDGreyGREYr#   r   r   r   r   r     r  z$GrpcToRest.convert_collection_statusc                 C      t j|j| |jdS N)operation_idr   )r   UpdateResultrT  convert_update_statusr   r   r   r   r   convert_update_result     
z GrpcToRest.convert_update_resultc                 C   6   |t jjkr
tjjS |t jjkrtjjS td| Nzinvalid UpdateStatus model: )r   UpdateStatusAcknowledgedr   ACKNOWLEDGED	Completed	COMPLETEDr#   r   r   r   r   rV    
   z GrpcToRest.convert_update_statusc                    r   )Nc                    r   r   convert_point_idr   idxr   r   r   r      r!   z7GrpcToRest.convert_has_id_condition.<locals>.<listcomp>r{   )r   HasIdConditionr{   r   r   r   r   r     r   z#GrpcToRest.convert_has_id_conditionc                 C   r   Nr|   )r   HasVectorConditionr|   r   r   r   r   r     r   z'GrpcToRest.convert_has_vector_conditionc                 C   s4   | d}|dkr|jS |dkr|jS td| )Npoint_id_optionsnumuuidzinvalid PointId model: )r   rk  rl  r#   r  r   r   r   rb    s   
zGrpcToRest.convert_point_idc                 C   r   N)
alias_name)r   DeleteAliasrn  r   r   r   r   convert_delete_alias  r   zGrpcToRest.convert_delete_aliasc                 C      t j|j|jdS N)old_alias_namenew_alias_name)r   RenameAliasrs  rt  r   r   r   r   convert_rename_alias     zGrpcToRest.convert_rename_aliasc                 C      t jt j|jddS )NrR   r}   )r   IsEmptyConditionPayloadFieldrR   r   r   r   r   r        z%GrpcToRest.convert_is_empty_conditionc                 C   rx  )Nry  r~   )r   IsNullConditionr|  rR   r   r   r   r   r     r}  z$GrpcToRest.convert_is_null_conditionc                 C   s    t jt j|j| |jddS )NrR   rz   r   )r   NestedConditionNestedrR   r   rz   r   r   r   r   r   	  s   
z#GrpcToRest.convert_nested_conditionc                 C   st   t j|dr
|jnd |dr|jnd |dr| |jnd |dr(|jnd |dr6| |j	dS d dS )Nhnsw_efexactquantizationindexed_onlyacornr  r  r  r  r  )
r   SearchParamsr"   r  r  "convert_quantization_search_paramsr  r  convert_acorn_search_paramsr  r   r   r   r   convert_search_params  s   z GrpcToRest.convert_search_paramsc                 C   r  )Nenablemax_selectivityr  r  )r   AcornSearchParamsr"   r  r  r   r   r   r   r  "     z&GrpcToRest.convert_acorn_search_paramsc                 C   rq  N)collection_namern  )r   CreateAliasr  rn  r   r   r   r   convert_create_alias)     zGrpcToRest.convert_create_aliasc                 C   sP   | d}|d u rtd| t||}|dkr|S |dkr!|S td| )Nr   invalid OrderValue model: r@   rA   r   r#   r   r   r   r   r   convert_order_value-  s   

zGrpcToRest.convert_order_valuec                 C   s   t tj| |jt|dr| |jnd |j|	dr!| 
|jnd |j|	dr/| |jnd |	dr=| |jdS d dS )Nr(   vectors	shard_keyorder_value)idr(   scorevectorversionr  r  )r   r   ScoredPointrb  r  r'   r   r(   r  r"   convert_vectors_outputr  r  convert_shard_keyr  r  r  r   r   r   r   convert_scored_point<  s   
zGrpcToRest.convert_scored_pointr   c                    s   t  fdd D S )Nc                 3   s     | ]}|t  | fV  qd S r6   rO   r   rR   rr   r   r   r8   S  r9   z-GrpcToRest.convert_payload.<locals>.<genexpr>)rE   r   r   rr   r   r   Q  r}  zGrpcToRest.convert_payloadc                 C   r   r   )r   ValuesCountr"   r   r   r   r   r   r   r   r   convert_values_countU  r   zGrpcToRest.convert_values_countc                 C      t j| |j| |jdS )N)bottom_righttop_left)r   GeoBoundingBoxr   r  r  r   r   r   r   convert_geo_bounding_box^     

z#GrpcToRest.convert_geo_bounding_boxc                 C   s:   t j| |j| |j|dr| |jdS d dS )Nr  )r  r(   r  )	r   PointStructrb  r  r   r(   r"   convert_vectorsr  r   r   r   r   convert_point_structe     

zGrpcToRest.convert_point_structc           
      C   s   | dr| |jnd }| dr| |jnd }| dr%| |jnd }| dr2| |jnd }d }| drB| 	|j
}n| drM| |j}| drX| |jnd }| drb|jnd }| d	rl|jnd }	tj|j||||||||	d
	S )Ngeo_bounding_box
geo_radiusgeo_polygonmatchrangedatetime_rangevalues_countr}   r~   )	rR   r  r  r  r  r  r  r}   r~   )r"   r  r  r   r  r   r  convert_matchr  r   r  r   r  r  r  r}   r~   r   FieldConditionrR   )
r   r]   r  r  r  r  range_r  r}   r~   r   r   r   r   m  s>   

z"GrpcToRest.convert_field_conditionc                 C   s(  | d}|d u rtd| t||}|dkrtj|dS |dkr)tj|dS |dkr3tj|dS |dkr=tj|dS |d	krJtjt|jd
S |dkrWtjt|j	d
S |dkrhtj
di dt|jiS |dkrytj
di dt|j	iS |dkrtj|dS |dkrtj|dS td| )Nmatch_valueinvalid Match model: integerrH   booleankeywordtextr  keywords)anyintegersexcept_keywordsexceptexcept_integersphraser  text_anyr  r   )r   r#   r   r   
MatchValue	MatchTextMatchAnyrC   stringsr  MatchExceptMatchPhraseMatchTextAnyr   r   r   r   r    s2   

zGrpcToRest.convert_matchc                 C   r  r  )r   WalConfigDiffr"   r   r!  r   r   r   r   convert_wal_config_diff  r$  z"GrpcToRest.convert_wal_config_diffc                 C   s   t j|dr| |jnd |j|j|dr|jnd |dr#|jnd |dr,|j	nd |dr8| 
|jnd |drF| |jdS d dS )Nvectors_configreplication_factorread_fan_out_factorwrite_consistency_factorsparse_vectors_configsharding_method)r  shard_numberon_disk_payloadr  r  r  sparse_vectorsr  )r   CollectionParamsr"   convert_vectors_configr  r  r  r  r  r  convert_sparse_vector_configr  convert_sharding_methodr  r   r   r   r   r     s&   z$GrpcToRest.convert_collection_paramsc                 C   s   d }| dr|j}n| dr| |j}tj| dr |jnd | dr)|jnd | dr2|jnd | dr;|j	nd || drE|j
nd | drN|jnd | d	rY|jd
S d d
S r  )r"   r  r  r  r   OptimizersConfigDiffr  r	  r
  r  r  r  r  r  r   r   r   convert_optimizers_config_diff  s(   

z)GrpcToRest.convert_optimizers_config_diffc              	   C   s   t j|dr| |jnd |dr| |jnd |dr%| |jnd |dr1| 	|j
nd |dr=| |jnd |jd urK| |jdS d dS )Nr  optimizers_configr   r   r   )r  r  r   r   r   r   )r   UpdateCollectionr"   convert_vectors_config_diffr  r  r  convert_collection_params_diffr   r   r    convert_quantization_config_diffr   r   r   r   r   r   r   convert_update_collection	  s(   z$GrpcToRest.convert_update_collectionc                 C   rq  )N)latlon)r   GeoPointr  r  r   r   r   r   r   (     zGrpcToRest.convert_geo_pointc                 C      | d}|d u rtd| t||}|dkr"tj| |dS |dkr/tj| |dS |dkr<tj| 	|dS td| )	Nactioninvalid AliasOperations model: rename_aliasr  create_aliasr  delete_aliasr  )
r   r#   r   r   RenameAliasOperationrv  CreateAliasOperationr  DeleteAliasOperationrp  r   r   r   r   convert_alias_operations/  s   

z#GrpcToRest.convert_alias_operationsc                 C   rq  N)rn  r  )r   AliasDescriptionrn  r  r   r   r   r   convert_alias_description?  r  z$GrpcToRest.convert_alias_descriptionNshard_key_selectorc                    sz   | d}|d u rtd| t||}|dkr(tj fdd|jD |dS |dkr6tj ||dS td| )	Npoints_selector_one_ofinvalid PointsSelector model: r   c                    r   r   ra  r   r   r   r   r    S  r!   z6GrpcToRest.convert_points_selector.<locals>.<listcomp>)r   r  rz   )rz   r  )r   r#   r   r   PointIdsListidsFilterSelectorr   )r   r]   r  r   rS   r   r   r   convert_points_selectorF  s   

z"GrpcToRest.convert_points_selectorc                 C   sp   | d}|d u rtd| t||}|dkr|S |dkr$t|jS |dkr1tjt|jdS td| )Nselector_optionsz#invalid WithPayloadSelector model: r  includeexcluder
  )r   r#   r   rC   r;   r   PayloadSelectorExcluder   r   r   r   convert_with_payload_selector]  s   


z(GrpcToRest.convert_with_payload_selectorc                 C   
   |  |S r6   )r  r   r   r   r   convert_with_payload_interfaceo     
z)GrpcToRest.convert_with_payload_interfacec                 C   sj   t j| |j| |j|dr| |jnd |dr#| 	|j
nd |dr1| |jdS d dS )Nr  r  r  )r  r(   r  r  r  )r   Recordrb  r  r   r(   r"   r  r  r  r  r  r  r   r   r   r   convert_retrieved_pointu  s   

z"GrpcToRest.convert_retrieved_pointc                 C   r  r6   )r  r   r   r   r   convert_record     
zGrpcToRest.convert_recordc                 C   r   N)count)r   CountResultr  r   r   r   r   convert_count_result  r   zGrpcToRest.convert_count_resultc                 C   s,   t j|j|dr|j  nd |jdS )Ncreation_timer   r  size)r   SnapshotDescriptionr   r"   r  r   	isoformatr  r   r   r   r   convert_snapshot_description  s   z'GrpcToRest.convert_snapshot_descriptionc                 C   J   |t jjkr
tjjS |t jjkrtjjS |t jjkrtjjS t	d| Nzinvalid Datatype model: )
r   DatatypeFloat32r   FLOAT32Uint8UINT8Float16FLOAT16r#   r   r   r   r   convert_datatype     zGrpcToRest.convert_datatypec              
   C   s   t j|j| |j|dr| |jnd |dr | |j	nd |dr)|j
nd |dr5| |jnd |drC| |jdS d dS )Nr   r   r   datatypemultivector_configr  distancer   r   r   r*  r+  )r   VectorParamsr  r  r-  r"   r   r   r   r   r   r(  r*  convert_multivector_configr+  r   r   r   r   convert_vector_params  s    
z GrpcToRest.convert_vector_paramsc                 C      t j| |jdS N)
comparator)r   MultiVectorConfigconvert_multivector_comparatorr3  r   r   r   r   r/       
z%GrpcToRest.convert_multivector_configc                 C   "   |t jjkr
tjjS td| Nz%invalid MultiVectorComparator model: )r   MultiVectorComparatorMaxSimr   MAX_SIMr#   r   r   r   r   r5       z)GrpcToRest.convert_multivector_comparatorc                    sn   | d}|d u rtd| t||}|dkr |S |dkr0t fdd|j D S td| )Nr   invalid VectorsConfig model: r   
params_mapc                 3   "    | ]\}}|  |fV  qd S r6   r0  r   rR   
vec_paramsr   r   r   r8         
z4GrpcToRest.convert_vectors_config.<locals>.<genexpr>)r   r#   r   r0  rE   maprF   r   r   r   r   r    s   


z!GrpcToRest.convert_vectors_configc                    s   | d}|du rN|dr"dtj|jjdd |jdd dfS |drE|j}|jt|  d fddtdt D fS d|jdd fS t	||}|d	kr^d| 
|fS |d
krid| |fS |dkrtd| |fS ||fS )a@  Parse common parts of vector structs

        Args:
            model: Vector or VectorOutput

        Returns:
            Tuple of name and value, name is None if the struct was parsed and returned with the converted value,
            otherwise it's propagated for further processing along with the raw value
        r  NindicesrE  r3   vectors_countc                    s   g | ]
}||   qS r   r   )r   istepr  r   r   r      r(  z.GrpcToRest._convert_vector.<locals>.<listcomp>r   densesparsemulti_dense)r   r"   r   SparseVectorrE  datarG  lenr  r   convert_dense_vectorconvert_sparse_vectorconvert_multi_dense_vector)r   r]   r   rG  rS   r   rI  r   _convert_vector  s$   

(
$
zGrpcToRest._convert_vectorc                 C   s^   |  |\}}|d u r|S |dkr| |S |dkr| |S |dkr(| |S td| )Ndocumentimageobjectinvalid Vector model: )rT  convert_documentconvert_imageconvert_inference_objectr#   r   r   r   r   convert_vector  s   


zGrpcToRest.convert_vectorc                 C   s(   |  |\}}|d u r|S td| )NrX  )rT  r#   r   r   r   r   convert_vector_output*  s   z GrpcToRest.convert_vector_outputc                 C   *   i }|j  D ]\}}| |||< q|S r6   )r  rF   r\  r   r]   r  r   r  r   r   r   convert_named_vectors3  s   z GrpcToRest.convert_named_vectorsc                 C   r^  r6   )r  rF   r]  r_  r   r   r   convert_named_vectors_output;  s   z'GrpcToRest.convert_named_vectors_outputc                 C   \   | d}|d u rtd| t||}|dkr| |S |dkr'| |S td| )Nvectors_optionszinvalid Vectors model: r  r  )r   r#   r   r\  r`  r   r   r   r   r  E     



zGrpcToRest.convert_vectorsc                 C   rb  )Nrc  zinvalid VectorsOutput model: r  r  )r   r#   r   r]  ra  r   r   r   r   r  R  rd  z!GrpcToRest.convert_vectors_outputc                 C      |j d d  S r6   rO  r   r   r   r   rQ  _  r   zGrpcToRest.convert_dense_vectorc                 C   s"   t j|jd d  |jd d  dS )NrF  )r   rN  rE  r3   r   r   r   r   rR  c  s   "z GrpcToRest.convert_sparse_vectorc                        fdd|j D S )Nc                    r   r   rQ  r   r  r   r   r   r    i  r!   z9GrpcToRest.convert_multi_dense_vector.<locals>.<listcomp>r  r   r   r   r   rS  g     z%GrpcToRest.convert_multi_dense_vectorc                 C   s   t j|j|jt|jdS N)r  r]   options)r   Documentr  r]   r\   rm  r   r   r   r   rY  k  s
   zGrpcToRest.convert_documentc                 C      t jt|j|jt|jdS N)rV  r]   rm  )r   ImagerP   rV  r]   r\   rm  r   r   r   r   rZ  s  
   zGrpcToRest.convert_imagec                 C   ro  N)rW  r]   rm  )r   InferenceObjectrP   rW  r]   r\   rm  r   r   r   r   r[  {  rr  z#GrpcToRest.convert_inference_objectc                 C   rw   )
Nr   invalid VectorInput model: r  rK  rL  rM  rU  rV  rW  )
r   r#   r   rb  rQ  rR  rS  rY  rZ  r[  r   r   r   r   convert_vector_input  s&   








zGrpcToRest.convert_vector_inputc                    sJ   t j fdd|jD  fdd|jD |dr! |jdS d dS )Nc                    r   r   rv  ri  r   r   r   r      r!   z6GrpcToRest.convert_recommend_input.<locals>.<listcomp>c                    r   r   rw  ri  r   r   r   r      r!   strategypositivenegativerx  )r   RecommendInputrz  r{  r"   convert_recommend_strategyrx  r   r   r   r   convert_recommend_input  s   z"GrpcToRest.convert_recommend_inputc                 C   r  N)rz  r{  )r   ContextPairrv  rz  r{  r   r   r   r   convert_context_input_pair  r  z%GrpcToRest.convert_context_input_pairc                    rg  )Nc                    r   r   r  r   pairr   r   r   r      r!   z4GrpcToRest.convert_context_input.<locals>.<listcomp>pairsr   r   r   r   convert_context_input  rk  z GrpcToRest.convert_context_inputc                 C      t j| |j| |jdS N)targetcontext)r   DiscoverInputrv  r  r  r  r   r   r   r   convert_discover_input  r  z!GrpcToRest.convert_discover_inputc                 C   6   |t jjkr
tjjS |t jjkrtjjS td| Nzinvalid Fusion model: )r   FusionRRFr   DBSFr#   r   r   r   r   convert_fusion  
   zGrpcToRest.convert_fusionc                 C   r7  Nzinvalid Sample model: )r   SampleRandomr   RANDOMr#   r   r   r   r   convert_sample     zGrpcToRest.convert_samplec                 C   s    t |j}tj| |j|dS )N)formuladefaults)r\   r  r   FormulaQueryconvert_expression
expression)r   r]   r  r   r   r   convert_formula_query  s   
z GrpcToRest.convert_formula_queryc                 C   s  | d}|d u rtd| |dkr|jS |dkr|jS |dkr(| |jS |dkr3tj|jdS |dkr>tj	|j
d	S |d
krH| |jS |dkrR| |jS |dkr\| |jS |dkrjtj| |jdS |dkrxtj| |jdS |dkrtj| |jdS |dkrtj| |jdS |dkrtj| |jdS |dkrtj| |jdS |dkr| |jS |dkr|  |j!S |dkrtj"| #|j$dS |dkrtj%| #|j&dS |dkrtj'| #|j(d S td!| )"Nr   invalid Query model: constantvariabler   r   r   datetime_keyr  summultdivabsr  negr  log10r  lnr  sqrtr  expr  powgeo_distance	lin_decayr  	exp_decayr  gauss_decayr  zUnknown function name: ))r   r#   r  r  r   r   r   DatetimeExpressionr   DatetimeKeyExpressionr  convert_sum_expressionr  convert_mult_expressionr  convert_div_expressionr  AbsExpressionr  r  NegExpressionr  Log10Expressionr  LnExpressionr  SqrtExpressionr  ExpExpressionr  convert_pow_expressionr  convert_geo_distancer  LinDecayExpressionconvert_decay_params_expressionr  ExpDecayExpressionr  GaussDecayExpressionr  r  r   r   r   r    s`   



zGrpcToRest.convert_expressionc                    r   )Nc                    r   r   r  r   exprr   r   r   r      r!   z5GrpcToRest.convert_sum_expression.<locals>.<listcomp>r  )r   SumExpressionr  r   r   r   r   r    r   z!GrpcToRest.convert_sum_expressionc                    r   )Nc                    r   r   r  r  r   r   r   r      r!   z6GrpcToRest.convert_mult_expression.<locals>.<listcomp>r  )r   MultExpressionr  r   r   r   r   r  	  r   z"GrpcToRest.convert_mult_expressionc                 C   sH   |  |j}|  |j}|dr|jnd }tj|||d}tj|dS )Nby_zero_defaultleftrightr  r  )r  r  r  r"   r  r   	DivParamsDivExpression)r   r]   r  r  r  r   r   r   r   r    s
   z!GrpcToRest.convert_div_expressionc                 C   s2   |  |j}|  |j}tj||d}tj|dS )Nbaseexponentr  )r  r  r  r   	PowParamsPowExpression)r   r]   r  r  r   r   r   r   r    s   z!GrpcToRest.convert_pow_expressionc                 C   s(   |  |j}tj||jd}tj|dS )Norigintor  )r   r  r   GeoDistanceParamsr  GeoDistance)r   r]   r  r   r   r   r   r    s   zGrpcToRest.convert_geo_distancec                 C   sT   t j| |j|dr| |jnd |dr|jnd |dr&|jdS d dS )Nr  midpointscalexr  r  r  )r   DecayParamsExpressionr  r  r"   r  r  r  r   r   r   r   r  "  s   
z*GrpcToRest.convert_decay_params_expressionc                 C   r  )N	diversitycandidates_limitr  r  )r   Mmrr"   r  r  r   r   r   r   convert_mmr-  s   zGrpcToRest.convert_mmrc                 C   s^  | d}|d u rtd| t||}|dkr"tj| |dS |dkr/tj| |dS |dkr<tj| 	|dS |d	krItj
| |d
S |dkrVtj| |dS |dkrctj| |dS |dkrptj| |dS |dkry| |S |dkr|j}tj| |j| |jdS |dkr|j}tjtj|dr|jnd ddS td| )Nr   r  nearestr  	recommendr  discoverr  r  r  order_byr  fusionr  sampler  r  nearest_with_mmrr  mmrrrfr7   )r7   r  )r   r#   r   r   NearestQueryrv  RecommendQueryr~  DiscoverQueryr  ContextQueryr  OrderByQueryconvert_order_byFusionQueryr  SampleQueryr  r  r   r  r  r  r  RrfQueryRrfr"   r7   )r   r]   r   rS   r  r   r   r   convert_query6  s:   


$zGrpcToRest.convert_queryc                    s   t jt|jdkr fdd|jD nd |dr |jnd |dr(|jnd |dr4 |j	nd |dr@ 
|jnd |drI|jnd |d	rR|jnd |d
r` |jdS d dS )Nr   c                    r   r   convert_prefetch_queryr   prefetchr   r   r   r    e  r!   z5GrpcToRest.convert_prefetch_query.<locals>.<listcomp>queryusingrz   r   score_thresholdlimitlookup_fromr  r  r  rz   r   r  r  r  )r   PrefetchrP  r  r"   r  r  r  r   rz   r  r   r  r  convert_lookup_locationr  r   r   r   r   r  a  s   z!GrpcToRest.convert_prefetch_queryc                 C   re  r6   namesr   r   r   r   convert_vectors_selectorv  r   z#GrpcToRest.convert_vectors_selectorc                 C   V   | d}|d u rtd| t||}|dkr|S |dkr$| |S td| )Nr  z#invalid WithVectorsSelector model: r  r	  )r   r#   r   r  r   r   r   r   convert_with_vectors_selectorz  s   


z(GrpcToRest.convert_with_vectors_selectorc                    s"  t j|dr |jnd t|jdkr fdd|jD nd |dr+ |jnd |dr4|j	nd |dr@ 
|jnd |drL |jnd |d	rU|jnd |d
r^|jnd |drg|jnd |drs |jnd |dr |jnd |dr |jdS d dS )Nr  r   c                    r   r   r  r  r   r   r   r      r!   z3GrpcToRest.convert_query_points.<locals>.<listcomp>r  r  rz   r   r  r  offsetwith_vectorswith_payloadr  )r  r  r  r  rz   r   r  r  r!  with_vectorr#  r  )r   QueryRequestr"   convert_shard_key_selectorr  rP  r  r  r  r  r   rz   r  r   r  r  r!  r   r"  r  r#  r  r  r   r   r   r   convert_query_points  s2   zGrpcToRest.convert_query_pointsc                 C   sd   |t jkrd 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 j
kr+tjjS td| Nzinvalid TokenizerType model: )r   UnknownPrefixr   TokenizerTypePREFIX
Whitespace
WHITESPACEWordWORDMultilingualMULTILINGUALr#   r   r   r   r   convert_tokenizer_type  s   




z!GrpcToRest.convert_tokenizer_typec                 C   s   t jd| |j|dr|jnd |dr|jnd |dr"|jnd |dr+|jnd |dr7| 	|j
nd |dr@|jnd |drL| |jnd |d	rW|jd

S d d

S )Nr  min_token_lenmax_token_len	lowercasephrase_matching	stopwordsr   stemmerascii_folding)
type	tokenizerr4  r5  r6  r7  r8  r   r9  r:  )r   TextIndexParamsr3  r<  r"   r4  r5  r6  r7  convert_stopwordsr8  r   convert_stemmerr9  r:  r   r   r   r   r6    s    
z$GrpcToRest.convert_text_index_paramsc                 C   sH   |j d d  }|jd d  }t|dkr|st|d S tj||dS )N   r   	languagescustom)rB  rC  rP  r   LanguageStopwordsSet)r   r]   rB  rC  r   r   r   r>    s
   zGrpcToRest.convert_stopwordsc                 C   sJ   | d}|d u rtd| t||}|dkr| |S td| )Nstemming_params!invalid StemmingAlgorithm model: snowball)r   r#   r   convert_snowball_parametersr   r   r   r   r?    s   


zGrpcToRest.convert_stemmerc                 C   s   t jt jjt |jdS )N)r;  language)r   SnowballParamsSnowballSNOWBALLSnowballLanguagerJ  r   r   r   r   rI       z&GrpcToRest.convert_snowball_parametersc                 C   s@   t jt jj|j|j|dr|jnd |dr|jdS d dS )Nis_principalr   )r;  r  lookuprP  r   )	r   IntegerIndexParamsIntegerIndexTyperA  r  rQ  r"   rP  r   r   r   r   r   r7    s   z'GrpcToRest.convert_integer_index_paramsc                 C   8   t jt jj|dr|jnd |dr|jdS d dS N	is_tenantr   )r;  rV  r   )r   KeywordIndexParamsKeywordIndexTyperB  r"   rV  r   r   r   r   r   r8       z'GrpcToRest.convert_keyword_index_paramsc                 C   rT  NrP  r   )r;  rP  r   )r   FloatIndexParamsFloatIndexTyper?  r"   rP  r   r   r   r   r   r9       z%GrpcToRest.convert_float_index_paramsc                 C   &   t jt jj|dr|jdS d dS Nr   )r;  r   )r   GeoIndexParamsGeoIndexTyper@  r"   r   r   r   r   r   r:       z#GrpcToRest.convert_geo_index_paramsc                 C   r^  r_  )r   BoolIndexParamsBoolIndexTyperC  r"   r   r   r   r   r   r;    rb  z$GrpcToRest.convert_bool_index_paramsc                 C   rT  rZ  )r   DatetimeIndexParamsDatetimeIndexTyperE  r"   rP  r   r   r   r   r   r<    rY  z(GrpcToRest.convert_datetime_index_paramsc                 C   rT  rU  )r   UuidIndexParamsUuidIndexTyperF  r"   rV  r   r   r   r   r   r=    r]  z$GrpcToRest.convert_uuid_index_paramsc                 C   r   )Nr  r  r  r  )r  r  r  r  )r   CollectionParamsDiffr"   r  r  r  r  r   r   r   r   r  $  s   z)GrpcToRest.convert_collection_params_diffc                 C   s$   t j|j|dr|jdS d dS )Nvector_name)
collectionr  )r   LookupLocationr  r"   rj  r   r   r   r   r  7  s   z"GrpcToRest.convert_lookup_locationc                 C   sP   |j tjjkrtjjS |j tjjkrtjjS |j tjj	kr!tjj
S td| )Ninvalid WriteOrdering model: )r;  r   WriteOrderingTypeWeakr   WriteOrderingWEAKMediumMEDIUMStrongSTRONGr#   r   r   r   r   convert_write_ordering>  s   z!GrpcToRest.convert_write_orderingc                 C   r  )NrH   invalid ReadConsistency model: factorr;  )r   r#   r   convert_read_consistency_typer   r   r   r   convert_read_consistencyH  s   


z#GrpcToRest.convert_read_consistencyc                 C   sD   |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| Nz#invalid ReadConsistencyType model: )
r   Allr   ReadConsistencyTypeALLMajorityMAJORITYQuorumQUORUMr#   r   r   r   r   ry  T  s   


z(GrpcToRest.convert_read_consistency_typec                 C   rT  )Nquantile
always_ramr;  r  r  )r   ScalarQuantizationConfig
ScalarTypeINT8r"   r  r  r   r   r   r   "convert_scalar_quantization_config`  rY  z-GrpcToRest.convert_scalar_quantization_configc                 C   s*   t j| |j|dr|jdS d dS )Nr  compressionr  )r   ProductQuantizationConfigconvert_compression_ratior  r"   r  r   r   r   r   #convert_product_quantization_configj  s   
z.GrpcToRest.convert_product_quantization_configc                 C   sP   t j|dr
|jnd |dr| |jnd |dr$| |jdS d dS )Nr  encodingquery_encodingr  r  r  )r   BinaryQuantizationConfigr"   r  $convert_binary_quantization_encodingr  *convert_binary_quantization_query_encodingr  r   r   r   r   "convert_binary_quantization_configs  s   z-GrpcToRest.convert_binary_quantization_configc                 C   r  Nz*invalid BinaryQuantizationEncoding model: )
r   BinaryQuantizationEncodingOneBitr   ONE_BITTwoBitsTWO_BITSOneAndHalfBitsONE_AND_HALF_BITSr#   r   r   r   r   r       z/GrpcToRest.convert_binary_quantization_encodingc                 C   s   | d}|d u rtd| t||}|dkrL|tjjjkr$tjjS |tjjj	kr/tjj
S |tjjjkr:tjjS |tjjjkrEtjjS td| td| )Nr   /invalid BinaryQuantizationQueryEncoding model: r   z1invalid BinaryQuantizationQueryEncoding setting: )r   r#   r   r   BinaryQuantizationQueryEncodingr   Defaultr   DEFAULTBinaryBINARYScalar4BitsSCALAR4BITSScalar8BitsSCALAR8BITSr   r   r   r   r    s&   

z5GrpcToRest.convert_binary_quantization_query_encodingc                 C   sh   |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 jkr-tjjS td| Nz invalid CompressionRatio model: )r   x4r   CompressionRatioX4x8X8x16X16x32X32x64X64r#   r   r   r   r   r    s   




z$GrpcToRest.convert_compression_ratioc                 C   r  )	Nr  "invalid QuantizationConfig model: scalarr  productr  binaryr  )
r   r#   r   r   ScalarQuantizationr  ProductQuantizationr  BinaryQuantizationr  r   r   r   r   r     s   

z&GrpcToRest.convert_quantization_configc                 C   sD   t j|dr
|jnd |dr|jnd |dr|jdS d dS )Nignorerescoreoversamplingr  r  r  )r   QuantizationSearchParamsr"   r  r  r  r   r   r   r   r    s   z-GrpcToRest.convert_quantization_search_paramsc                 C   r  )N)r  r  )r   PointVectorsrb  r  r  r  r   r   r   r   convert_point_vectors  r  z GrpcToRest.convert_point_vectorsc                    r   )Nc                    r   r   convert_point_groupr   groupr   r   r   r      r!   z4GrpcToRest.convert_groups_result.<locals>.<listcomp>groups)r   GroupsResultr  r   r   r   r   convert_groups_result     z GrpcToRest.convert_groups_resultc                    sB   t j |j fdd|jD |dr |jdS d dS )Nc                    r   r   r  )r   hitr   r   r   r      r!   z2GrpcToRest.convert_point_group.<locals>.<listcomp>rQ  r  hitsrQ  )r   
PointGroupconvert_group_idr  r  r"   r  rQ  r   r   r   r   r       
zGrpcToRest.convert_point_groupc                 C   .   | d}|d u rtd| t||}|S )Nkindinvalid GroupId model: r  r   r   r   r   r    
   

zGrpcToRest.convert_group_idc                 C   B   t j|j|dr| |jnd |dr| |jdS d dS )Nr#  r"  )rk  r#  r"  )r   
WithLookuprk  r"   r  r#  r   r"  r   r   r   r   convert_with_lookup  s   
zGrpcToRest.convert_with_lookupc                 C   s   | d}|d u rtd| t||}|dkr"tj| |dS |dkr/tj| |dS |dkr<tj| 	|dS |d	krDtj
jS td| )
Nr  &invalid QuantizationConfigDiff model: r  r  r  r  r  r  disabled)r   r#   r   r   r  r  r  r  r  r  DisabledDISABLEDr   r   r   r   r    s   

z+GrpcToRest.convert_quantization_config_diffc                 C   sP   t j|dr| |jnd |dr| |jnd |dr$|jdS d dS )Nr   r   r   r   r   r   )r   VectorParamsDiffr"   r   r   r  r   r   r   r   r   r   convert_vector_params_diff  s   z%GrpcToRest.convert_vector_params_diffc                    sr   | d}|d u rtd| t||}|dkr d |iS |dkr2t fdd|j D S td| )Nr   !invalid VectorsConfigDiff model: r    r>  c                 3   r?  r6   r  rA  r   r   r   r8   *  
    
z9GrpcToRest.convert_vectors_config_diff.<locals>.<genexpr>)r   r#   r   r  rE   rD  rF   r   r   r   r   r     s   

z&GrpcToRest.convert_vectors_config_diffc           	         s  | d}|d u rtd| t||}|dkrG|dr$ |jnd }|dr1 |jnd }tj	tj
 fdd|jD ||dd	S |d
krc|drS|jnd } j|j|d}tj|dS |dkr|dro|jnd } j|j|d}d }d }t|tjr|j}nt|tjr|j}ntd| tjtj |j|||dr|jnd ddS |dkr|dr|jnd } j|j|d}d }d }t|tjr|j}nt|tjr|j}ntd| tjtj |j|||dr|jnd ddS |dkrJ|dr|jnd } j|j|d}d }d }t|tjr&|j}nt|tjr1|j}ntd| tjtjdd |jD ||ddS |dkrh|drX|jnd } j|j|d}tj|dS |dkr|dry |jnd }|dr |jnd }tjtj fdd|jD ||ddS |dkr|dr|jnd } j|j|d}d }d }t|tjr|j}nt|tjr|j}ntd| tjtj dd |j!j"D ||dd S td!| )"N	operationz%invalid PointsUpdateOperation model: upsertr  update_filterc                    r   r   r  r   r   r   r   r    D  r!   z>GrpcToRest.convert_points_update_operation.<locals>.<listcomp>)r   r  r  r  delete_points)r  )deleteset_payloadr  rR   )r(   r   rz   rR   r  overwrite_payloadr  delete_payloadc                 S      g | ]}|qS r   r   r  r   r   r   r          )keysr   rz   r  clear_payloadr  update_vectorsc                    r   r   r  r   r   r   r   r      r!   r  delete_vectorsc                 S   r  r   r   )r   r   r   r   r   r      r  )r  r   rz   r  invalid UpdateOperation model: )#r   r#   r   r"   r  r  r   r  r   UpsertOperation
PointsListr   r  DeleteOperationpoints_selectorr>   r  r  rz   SetPayloadOperation
SetPayloadr   r(   rR   OverwritePayloadOperationDeletePayloadOperationDeletePayloadr  ClearPayloadOperationUpdateVectorsOperationUpdateVectorsDeleteVectorsOperationDeleteVectorsr  r  )	r   r]   r   rS   r  r  r  r   filter_r   r   r   convert_points_update_operation0  s  







z*GrpcToRest.convert_points_update_operationc                 C   r  Nz!invalid RecommendStrategy model: )
r   RecommendStrategyAverageVectorr   AVERAGE_VECTOR	BestScore
BEST_SCORE	SumScores
SUM_SCORESr#   r   r   r   r   r}    s   z%GrpcToRest.convert_recommend_strategyc                 C   sJ   t j|dr
|jnd |dr|jnd |dr!| |jdS d dS )Nr   r   r*  r   r   r*  )r   SparseIndexParamsr"   r   r   r(  r*  r   r   r   r   convert_sparse_index_config     z&GrpcToRest.convert_sparse_index_configc                 C   s:   |t jjkr
tjjS |tt jdkrtjjS td| NNonezinvalid Modifier model: )r   ModifierIdfr   IDFr   NONEr#   r   r   r   r   convert_modifier  s
   zGrpcToRest.convert_modifierc                 C   sB   t j|dd ur| |jnd |dr| |jdS d dS )Nindexmodifierr#  r$  )r   SparseVectorParamsr"   r  r#  r"  r$  r   r   r   r   convert_sparse_vector_params  s   z'GrpcToRest.convert_sparse_vector_paramsc                       t  fdd|j D S )Nc                 3   r?  r6   r'  rQ   r   r   r   r8          z:GrpcToRest.convert_sparse_vector_config.<locals>.<genexpr>)rE   rD  rF   r   r   r   r   r    s   z'GrpcToRest.convert_sparse_vector_configc                 C   r  )NrR   invalid ShardKey model: r  r   r   r   r   r    r  zGrpcToRest.convert_shard_keyc                 C      |t jjkr
tjjS |t jjkrtjjS |t jjkrtjjS |t jj	kr(tjj
S |t jjkr2tjjS |t jjkr<tjjS |t jjkrFtjjS |t jjkrPtjjS |t jjkrZtjjS |t jjkrdtjjS td| Nzinvalid ReplicaState model: )r   ReplicaStateActiver   ACTIVEDeadDEADPartialPARTIALInitializingINITIALIZINGListenerLISTENERPartialSnapshotPARTIALSNAPSHOTRecoveryRECOVERY
Resharding
RESHARDINGReshardingScaleDownRESHARDINGSCALEDOWN
ActiveRead
ACTIVEREADr#   r   r   r   r   convert_replica_state  *   z GrpcToRest.convert_replica_statec                    s   d }| dr
|j}t|jdkr.|d u r |jd S tj |jd  |jdS |r8td| d fdd|jD S )	Nfallbackr@  r   )r  rE  zFallback shard key z4 can only be set when a single shard key is providedc                    r   r   r  )r   r  r   r   r   r    A  r!   z9GrpcToRest.convert_shard_key_selector.<locals>.<listcomp>)r"   rE  rP  
shard_keysr  r   ShardKeyWithFallbackr#   )r   r]   rE  r   r   r   r&  -  s"   


z%GrpcToRest.convert_shard_key_selectorc                 C   2   |t jkr	tjjS |t jkrtjjS td| Nzinvalid ShardingMethod model: )r   r   r   ShardingMethodr  CustomCUSTOMr#   r   r   r   r   r  C  
   

z"GrpcToRest.convert_sharding_methodc                 C   s  t |tjrtj| |dS t |tjrtj| |dS t |tj	r-tj
| |dS t |tjr<tj| |dS t |tjrKtj| |dS t |tjrZtj| |dS t |tjritj| |dS t |tjrxtj| |dS td	t| )
N)
move_shard)replicate_shard)abort_transfer)drop_replica)create_sharding_key)drop_sharding_key)restart_transfer)replicate_pointsz$unsupported cluster operation type: )r>   r   	MoveShardr   MoveShardOperationconvert_move_shardReplicateShardReplicateShardOperationconvert_replicate_shardAbortShardTransferAbortTransferOperationconvert_abort_shard_transferReplicaDropReplicaOperationconvert_replicaCreateShardKeyCreateShardingKeyOperationconvert_create_shard_keyDeleteShardKeyDropShardingKeyOperationconvert_delete_shard_keyRestartTransferRestartTransferOperationconvert_restart_transferReplicatePointsReplicatePointsOperationconvert_replicate_pointsr#   r;  r   r   r   r   convert_cluster_operationsK  s6   z%GrpcToRest.convert_cluster_operationsc                 C   s2   t j|j|j|j|dr| |jdS d dS )Nmethodshard_idfrom_peer_id
to_peer_idrp  )r   rW  rr  rs  rt  r"   convert_shard_transfer_methodrp  r   r   r   r   rY  {  s   zGrpcToRest.convert_move_shardc                 C   rq  N)rr  peer_id)r   r`  rr  rw  r   r   r   r   rb    r  zGrpcToRest.convert_replicac                 C   sD   | dr	tdtj|j|j|j| dr| |jdS d dS )Nto_shard_idHto_shard_id is a field for internal purposes, can't be converted to restrp  rq  )	r"   r#   r   rZ  rr  rs  rt  ru  rp  r   r   r   r   r\    s   
z"GrpcToRest.convert_replicate_shardc                 C   s(   | dr	tdtj|j|j|jdS )Nrx  ry  )rr  rt  rs  )r"   r#   r   r]  rr  rt  rs  r   r   r   r   r_    s   
z'GrpcToRest.convert_abort_shard_transferc                 C   sX   t j| |j|dr|jnd |dr|jnd |j|dr(| |j	dS d dS )Nshards_numberr  initial_stater  rz  r  	placementr{  )
r   CreateShardingKeyr  r  r"   rz  r  r}  rC  r{  r   r   r   r   re    s   
	z#GrpcToRest.convert_create_shard_keyc                 C   r1  N)r  )r   DropShardingKeyr  r  r   r   r   r   rh    rk  z#GrpcToRest.convert_delete_shard_keyc                 C   s2   | dr	tdtj|j|j|j| |jdS )Nrx  ry  rq  )	r"   r#   r   ri  rr  rs  rt  ru  rp  r   r   r   r   rk    s   

z#GrpcToRest.convert_restart_transferc                 C   s6   t j|dr| |jnd | |j| |jdS )Nrz   )rz   from_shard_keyto_shard_key)r   rl  r"   r   rz   r  r  r  r   r   r   r   rn    s
   

z#GrpcToRest.convert_replicate_pointsc                 C   r  Nz#invalid ShardTransferMethod model: )r   ShardTransferMethodStreamRecordsr   STREAM_RECORDSSnapshotSNAPSHOTWalDelta	WAL_DELTAReshardingStreamRecordsRESHARDING_STREAM_RECORDSr#   r   r   r   r   ru       z(GrpcToRest.convert_shard_transfer_methodc                 C   rI  Nzinvalid Direction model: )r   Ascr   	DirectionASCDescDESCr#   r   r   r   r   convert_direction  rN  zGrpcToRest.convert_directionc                 C   sN   | dr|jS | dr|jS | dr| |j}|S | dr%|jS d S )Nr  rA   	timestampr   )r"   r  rA   r   r  r   )r   r]   dtr   r   r   convert_start_from  s   



zGrpcToRest.convert_start_fromc                 C   r  )N	direction
start_fromrR   r  r  )r   OrderByrR   r"   r  r  r  r  r   r   r   r   r
       zGrpcToRest.convert_order_byc                 C   r  )Nr   invalid FacetValue model: r  r   r   r   r   convert_facet_value  s
   

zGrpcToRest.convert_facet_valuec                 C   r   N)rH   r  )r   FacetValueHitr  rH   r  r   r   r   r   convert_facet_value_hit	     
z"GrpcToRest.convert_facet_value_hitc                 C   s(   t j|j|j|dr|jdS d dS )Ncommittitler  r  )r   VersionInfor  r  r"   r  r   r   r   r   convert_health_check_reply	  s   z%GrpcToRest.convert_health_check_replyc                 C   "   t j| |j| |j|jdS N)abr  )r   SearchMatrixPairrb  r  r  r  r   r   r   r   convert_search_matrix_pair	  
   

z%GrpcToRest.convert_search_matrix_pairc                    r   )Nc                    r   r   r  r  r   r   r   r    #	  r!   z:GrpcToRest.convert_search_matrix_pairs.<locals>.<listcomp>r  )r   SearchMatrixPairsResponser  r   r   r   r   convert_search_matrix_pairs	     z&GrpcToRest.convert_search_matrix_pairsc                    4   t jt|jt|jt|j fdd|jD dS )Nc                    r   r   ra  r   p_idr   r   r   r    .	  r!   z<GrpcToRest.convert_search_matrix_offsets.<locals>.<listcomp>offsets_rowoffsets_colscoresr  )r   SearchMatrixOffsetsResponserC   r  r  r  r  r   r   r   r   convert_search_matrix_offsets&	     z(GrpcToRest.convert_search_matrix_offsetsc                 C       t j|dr|jdS d dS Nmax_vectorsr  )r   StrictModeMultivectorr"   r  r   r   r   r   convert_strict_mode_multivector1	  
   z*GrpcToRest.convert_strict_mode_multivectorc                    r(  )Nc                 3   r?  r6   r  rQ   r   r   r   r8   =	  r  zDGrpcToRest.convert_strict_mode_multivector_config.<locals>.<genexpr>rE   r+  rF   r   r   r   r   &convert_strict_mode_multivector_config9	     z1GrpcToRest.convert_strict_mode_multivector_configc                 C   r  N
max_lengthr  )r   StrictModeSparser"   r  r   r   r   r   convert_strict_mode_sparseB	  s
   z%GrpcToRest.convert_strict_mode_sparsec                    r(  )Nc                 3   r?  r6   r  rQ   r   r   r   r8   L	  rC  z?GrpcToRest.convert_strict_mode_sparse_config.<locals>.<genexpr>rE   sparse_configrF   r   r   r   r   !convert_strict_mode_sparse_configH	  s   z,GrpcToRest.convert_strict_mode_sparse_configc                 C     t jdi d|dr|jnd d|dr|jnd d|dr#|jnd d|dr.|jnd d|dr9|jnd d|drD|jnd d|drO|j	nd d|drZ|j
nd d	|d	re|jnd d
|d
rp|jnd d|dr{|jnd d|dr|jnd d|dr|jnd d|dr|jnd d|dr|jnd d|dr|jnd d|dr| |jnd d|dr| |jnd d|dr|jS d S Nenabledmax_query_limitmax_timeoutunindexed_filtering_retrieveunindexed_filtering_updatesearch_max_hnsw_efsearch_allow_exactsearch_max_oversamplingupsert_max_batchsize max_collection_vector_size_bytesread_rate_limitwrite_rate_limit!max_collection_payload_size_bytesmax_points_countfilter_max_conditionscondition_max_sizer+  r  max_payload_index_countr   )r   StrictModeConfigr"   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   convert_strict_mode_configP	  s   
!#'+.15:>?z%GrpcToRest.convert_strict_mode_configc                 C   r  r  )r   StrictModeConfigOutputr"   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  -convert_strict_mode_multivector_config_outputr+  (convert_strict_mode_sparse_config_outputr  r  r   r   r   r   r   	  s   
!#'+.15:>?z,GrpcToRest.convert_strict_mode_config_outputc                    r(  )Nc                 3   r?  r6   &convert_strict_mode_multivector_outputrQ   r   r   r   r8   	  r  zKGrpcToRest.convert_strict_mode_multivector_config_output.<locals>.<genexpr>r  r   r   r   r   r  	  r  z8GrpcToRest.convert_strict_mode_multivector_config_outputc                    r(  )Nc                 3   r?  r6   !convert_strict_mode_sparse_outputrQ   r   r   r   r8   	  r  zFGrpcToRest.convert_strict_mode_sparse_config_output.<locals>.<genexpr>r  r   r   r   r   r  	  r  z3GrpcToRest.convert_strict_mode_sparse_config_outputc                 C   r  r  )r   StrictModeSparseOutputr"   r  r   r   r   r   r  	  r  z,GrpcToRest.convert_strict_mode_sparse_outputc                 C   r  r  )r   StrictModeMultivectorOutputr"   r  r   r   r   r   r  	  r  z1GrpcToRest.convert_strict_mode_multivector_outputc              	      sZ   t j|j|j fdd|jD  fdd|jD  fdd|jD  fdd|jD dS )Nc                    r   r   convert_local_shard_infor   local_shardr   r   r   r    
      
z>GrpcToRest.convert_collection_cluster_info.<locals>.<listcomp>c                    r   r   convert_remote_shard_infor   remote_shardr   r   r   r    
  r  c                    r   r   convert_shard_transfer_infor   shard_transfer_infor   r   r   r    	
  r   c                    r   r   convert_resharding_infor   resharding_operationr   r   r   r    
  r   rw  shard_countlocal_shardsremote_shardsshard_transfersresharding_operations)r   CollectionClusterInforw  r  r  r  r  r  r   r   r   r   convert_collection_cluster_info	  s    



z*GrpcToRest.convert_collection_cluster_infoc                 C   4   t j|j|dr| |jnd |j| |jdS )Nr  rr  r  r   state)	r   LocalShardInforr  r"   r  r  r   rC  r
  r   r   r   r   r  
     
z#GrpcToRest.convert_local_shard_infoc                 C   r  )Nr  rr  r  rw  r
  )	r   RemoteShardInforr  r"   r  r  rw  rC  r
  r   r   r   r   r  
  r  z$GrpcToRest.convert_remote_shard_infoc                 C   s:   t jd|j|dr|jnd |j|jddt|diS )Nrx  rr  rx  r  syncfromr   )r   ShardTransferInforr  r"   rx  r  r  r   r   r   r   r   r  )
  s   z&GrpcToRest.convert_shard_transfer_infoc                 C   s8   t j| |j|j|j|dr| |jdS d dS )Nr  r  rr  rw  r  )	r   ReshardingInfoconvert_resharding_directionr  rr  rw  r"   r  r  r   r   r   r   r  7
  s   
z"GrpcToRest.convert_resharding_infoc                 C   rY  Nz"Unsupported resharding direction: )r   ReshardingDirectionUpr   UPDownDOWNr#   r   r   r   r   r  B
  
   z'GrpcToRest.convert_resharding_directionr6   (  __name__
__module____qualname__classmethodr   	Conditionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   OptimizerStatusOptimizersStatusr   r   r   r   r   r   r   r   r  r  r  r   r  r  r  r#  r   rE   rB   PayloadSchemaInfor+  r   r%  PayloadIndexParamsPayloadSchemaParamsr-  r`   r,  rI  r   rU  rW  r[  rV  rf  r   ri  r   PointIdExtendedPointIdrb  ro  rp  ru  rv  r{  r   r  r   r  r   r  r  r  r  r  r  
OrderValuer  r  r  Payloadr   r  r  r  r  r  r  r  r   Matchr  r  r  r   r  r  r  r  r   AliasOperationsr  r  r   PointsSelectorShardKeySelectorr  WithPayloadSelectorWithPayloadInterfacer  r  RetrievedPointr  r  r  r  r  r  r  r!  r(  r.  r0  r4  r/  r9  r5  VectorsConfigr  VectorVectorOutputrD   rC   rA   rN  rn  rq  rt  rT  r\  r]  NamedVectorsr`  NamedVectorsOutputra  VectorsVectorStructr  VectorsOutputVectorStructOutputr  DenseVectorrQ  rR  MultiDenseVectorrS  rY  rZ  r[  VectorInputrv  r|  r~  ContextInputPairr  r  ContextInputr  r  r  r  r  r  r  Formular  r  
Expressionr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Queryr  PrefetchQueryr  r  VectorsSelectorr  WithVectorsSelector
WithVectorr   QueryPointsr%  r'  r+  r3  r=  r6  rE  StopwordsInterfacer>  StemmingAlgorithmr?  rK  rI  rR  r7  rW  r8  r[  r9  r`  r:  rc  r;  re  r<  rg  r=  ri  r  rl  r  rp  rv  ReadConsistencyrz  r}  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  QuantizationConfigr   r  r  r  r  r  r  r  r  GroupIdr  r  r  QuantizationConfigDiffr  r  r  VectorsConfigDiffr  PointsUpdateOperationUpdateOperationr  r  r}  SparseIndexConfigr  r  r  r"  r&  r'  SparseVectorConfigr  ShardKeyr  r.  rC  r&  rK  r  rW  rZ  r]  r`  rc  rf  ri  rl  ClusterOperationsro  rY  rb  r\  r_  r~  re  r  rh  rk  rn  r  ru  r  r  	StartFromr  r  r
  
FacetValuer  FacetHitr  r  HealthCheckReplyr  r  r  r  SearchMatrixPairsr  r  SearchMatrixOffsetsr  r  r  r  StrictModeMultivectorConfigr  r  r  StrictModeSparseConfigr  r  r  r  r   !StrictModeMultivectorConfigOutputr  StrictModeSparseConfigOutputr  r  r  r  r  CollectionClusterInfoResponser  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rv      s   
&	- &


0
 		4
*$
					"""" ""	"	"""!"
/"
"""""""""""""
""CE"
"
""
rv   c                	   @   s  e Zd ZedejdejfddZedejdejfddZ	ede
eB defddZedejdejfd	d
ZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedee ej!f dee ej"f fddZ#edej!dej"fddZ$edej%dej&fddZ'edej(dej(fdd Z)edej*dej*fd!d"Z+edej,dej,fd#d$Z-edej.dej.fd%d&Z/edej0dej0fd'd(Z1edej2dej2fd)d*Z3edej4dej4fd+d,Z5edej6dej6fd-d.Z7edej8dej8fd/d0Z9edej:dej:fd1d2Z;edej<dej<fd3d4Z=edej>dej>fd5d6Z?edej@dej@fd7d8ZAedejBdejBfd9d:ZCedejDdejDfd;d<ZEedejFdejFfd=d>ZGedejHdejHfd?d@ZIedejJdejJfdAdBZKedejLdee ejMf fdCdDZNedejOdejOfdEdFZPedejQdejQfdGdHZRedejSdejSfdIdJZTedejUdejUfdKdLZVedejWdejOfdMdNZXedejYdejSfdOdPZZedej[dej[fdQdRZ\edej]dej]fdSdTZ^edej_dej_fdUdVZ`edejadejbfdWdXZcedejbdejbfdYdZZdedejed[e dejefd\d]Zfedejgdejgfd^d_Zhedejidejifd`daZjedejkdejkfdbdcZledejmdejmfdddeZnedejodejpfdfdgZqedejodejrfdhdiZsedejtdejufdjdkZvedejwdejwfdldmZxedejydejyfdndoZzedej{dej|fdpdqZ}edej{dej|fdrdsZ~edejdej|fdtduZedejdejfdvdwZedejdejfdxdyZedejdejfdzd{Zedejdejfd|d}Zedejdejfd~dZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdedeej fddZedejdeee ejdB e dB f fddZedee dejfddZedejodejofddZedeee  dejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddÄZedejdejfddńZedejdejfddǄZedejdejfddɄZedejdejfdd˄Zedejdejfdd̈́ZedejdejfddτZedejdejfddфZedejd[e dejfddӄZedejd[e dejfddՄZedejdejfddׄZedejdejfddلZedejdejfddۄZedejdejfdd݄Zedejdejfdd߄ZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZ edejdejfddZedejdejfddZedejdejfddZedejdejfddZedej	dej	fddZ
edejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfddZedejdejfd dZedejdejfddZedejdejfddZedejdejfddZedej dej fdd	Z!edej"dej"fd
dZ#edej$dej$fddZ%edej&dej&fddZ'edej(dej(fddZ)edej*dej*fddZ+edej,dej,fddZ-edej.deejJ fddZ/edej0dej1fddZ2edej0dej1fddZ3edej4dej4fddZ5edej6dej7fddZ8edej9dej9fd d!Z:edej;dej;fd"d#Z<ede=e ej;f dej>fd$d%Z?edej@dej@fd&d'ZAedejBdejBfd(d)ZCedejDdejDfd*d+ZEedejFdejFfd,d-ZGedejHdejIejJB ejKB ejLB ejMB ejNB ejOB ejPB fd.d/ZQedejIdejIfd0d1ZRedejJdejJfd2d3ZSedejKdejKfd4d5ZTedejLdejLfd6d7ZUedejVdejNfd8d9ZWedejXdejMfd:d;ZYedejOdejOfd<d=ZZedejPdejPfd>d?Z[edej\dej\fd@dAZ]edej^dej_fdBdCZ`edejadejafdDdEZbedejcdejdfdFdGZeedejfdejgfdHdIZhedejidejifdJdKZjedejkdejkfdLdMZledejmdejmfdNdOZnedejodejofdPdQZpedejqdejqfdRdSZredejsdejqfdTdUZtedejudejkfdVdWZvedejwdejofdXdYZxedejydejifdZd[Zzedej{dejmfd\d]Z|edej}dej~fd^d_Zedejdejfd`daZedejdejfdbdcZedejdejfdddeZedejdejfdfdgZedejdejfdhdiZdS (j  
RestToGrpcr]   r   c                    s   dt tj tjB dt tj f fdd}tj|jd ur ||jnd |jd ur+||jnd |jd ur6||jnd |jd urKtj	||jj
|jjddS d dS )Nr   r   c                    s"   t | ts| g}  fdd| D S )Nc                    r   r   r   r   r   r   r   r    ]
  r!   zIRestToGrpc.convert_filter.<locals>.convert_conditions.<locals>.<listcomp>)r>   rC   )r   r   r   r   convert_conditionsX
  s   
z5RestToGrpc.convert_filter.<locals>.convert_conditionsr   )r   r   r   r   )rC   r   r!  r   r   r   r   r   r   r   r   r   )r   r]   ra  r   r   r   r   V
  s"   


zRestToGrpc.convert_filterc                 C      t j|j|j|j|jdS N)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   m
     zRestToGrpc.convert_rangec                 C   s:   t |trt |tst|tj }t }|| |S r6   )r>   r   r   combinemintimer   FromDatetimer   r]   tsr   r   r   convert_datetimev
  s
   
zRestToGrpc.convert_datetimec                 C   sn   t j|jd ur| |jnd |jd ur| |jnd |jd ur%| |jnd |jd ur3| |jdS d dS rc  )r   r   r   rk  r   r   r   r   r   r   r   r   ~
  r   z!RestToGrpc.convert_datetime_rangec                 C   r   r   )r   r   r   r   r   r   r   r   r   r   
  r   zRestToGrpc.convert_geo_radiusc                    r   )Nc                    r   r   r   r   r   r   r   r    
  r!   z6RestToGrpc.convert_geo_line_string.<locals>.<listcomp>r   )r   r   r   r   r   r   r   r   
  r   z"RestToGrpc.convert_geo_line_stringc                    r   )Nc                    r   r   r   r   r   r   r   r    
  r!   z2RestToGrpc.convert_geo_polygon.<locals>.<listcomp>r   )r   r   r   r   r   r   r   r   r   r   
  s   
zRestToGrpc.convert_geo_polygonc                 C   r   r   )r   r   r   r   r   r   r   r   
  r   z)RestToGrpc.convert_collection_descriptionc                 C   sR   t j|jr| |jnd | |j|jd ur| |jnd |j| 	|j
|jdS )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
  s   


z"RestToGrpc.convert_collection_infoc                 C   r  rH  )r   rI  rO  r   rN  rM  rL  rK  rJ  rQ  rP  r#   r   r   r   r   r   
  r  z$RestToGrpc.convert_collection_statusc                 C   sB   t |tjrtjddS t |tjrtjd|jdS td| )NT)r   F)r   r   z invalid OptimizersStatus model: )r>   r   r   r   r"  r   r   r#   r   r   r   r   r   
  s   z#RestToGrpc.convert_optimizer_statusc                    s   t  fdd| D S )Nc                 3   r?  r6   )convert_payload_index_inforQ   r   r   r   r8   
  r*  z4RestToGrpc.convert_payload_schema.<locals>.<genexpr>rX   r   r   r   r   r   
  s   z!RestToGrpc.convert_payload_schemac                 C   s2   |j }tj| |j|d ur| |nd |jdS )Nr)  )r   r   r$  r,  r*  r-  r   )r   r]   r   r   r   r   rl  
  s   
z%RestToGrpc.convert_payload_index_infoc                 C   s   t |tjrtj| |dS t |tjrtj| |dS t |tjr-tj| 	|dS t |tj
r<tj| |dS t |tjrKtj| |dS t |tjrZtj| |dS t |tjritj| |dS t |tjrxtj| |dS td	| )
N)r.  )r/  )r0  )r1  )r2  )r3  )r4  )r5  z#invalid PayloadSchemaParams model: )r>   r   r=  r   r%  r6  rR  r7  rW  r8  r[  r9  r`  r:  rc  r;  re  r<  rg  r=  r#   r   r   r   r   r-  
  s2   z(RestToGrpc.convert_payload_schema_paramsc                 C   r>  r_   )r   r`   rB  r   ra   rA  rd   r?  rf   rC  rh   r@  rj   rD  rl   rE  rn   rF  rp   r#   r   r   r   r   r,  
  rG  z&RestToGrpc.convert_payload_schema_typec                 C   rR  rS  )r   rU  rT  convert_update_statsr   r   r   r   r   rW    rX  z RestToGrpc.convert_update_resultc                 C   rY  rZ  )r   r[  r_  r   r^  r]  r\  r#   r   r   r   r   rm    r`  zRestToGrpc.convert_update_statsc                    r   )Nc                    r   r   convert_extended_point_idrc  r   r   r   r    !  r!   z7RestToGrpc.convert_has_id_condition.<locals>.<listcomp>re  )r   rf  r{   r   r   r   r   r     r  z#RestToGrpc.convert_has_id_conditionc                 C   r   rg  )r   ri  r|   r   r   r   r   r   $  r   z'RestToGrpc.convert_has_vector_conditionc                 C   r   rm  )r   ro  rn  r   r   r   r   rp  *  r   zRestToGrpc.convert_delete_aliasc                 C   rq  rr  )r   ru  rs  rt  r   r   r   r   rv  .  rw  zRestToGrpc.convert_rename_aliasc                 C      t j|jjdS Nry  )r   r{  r}   rR   r   r   r   r   r   4     z%RestToGrpc.convert_is_empty_conditionc                 C   rp  rq  )r   r  r~   rR   r   r   r   r   r   8  rr  z$RestToGrpc.convert_is_null_conditionc                 C   s   t j|jj| |jjdS )Nr  )r   r  r   rR   r   rz   r   r   r   r   r   <  s   z#RestToGrpc.convert_nested_conditionc                 C   sJ   t j|j|j|jd ur| |jnd |j|jd ur!| |jdS d dS )Nr  )	r   r  r  r  r  r  r  r  r  r   r   r   r   r  C  s   

z RestToGrpc.convert_search_paramsc                 C   s2   t j|jd ur
|jnd |jd ur|jdS d dS )Nr  )r   r  r  r  r   r   r   r   r  S  r  z&RestToGrpc.convert_acorn_search_paramsc                 C   rq  r  )r   r  r  rn  r   r   r   r   r  Z  r  zRestToGrpc.convert_create_aliasc                 C   :   t |trtj|dS t |trtj|dS td| )N)r@   rA   r  )r>   r@   r   r)  rA   r#   r   r   r   r   r  ^  s
   

zRestToGrpc.convert_order_valuec              
   C   sx   t j| |j|jd ur| |jnd |j|jd ur | |jnd |j	|j
r,| |j
nd |jr8| |jdS d dS )N)r  r(   r  r  r  r  r  )r   r  ro  r  r(   r   r  r  convert_vector_struct_outputr  r  r  r  r  r   r   r   r   r  f  s   

zRestToGrpc.convert_scored_pointc                 C   rb  rc  )r   r  r   r   r   r   r   r   r   r   r  v  rd  zRestToGrpc.convert_values_countc                 C   r  )N)r  r  )r   r  r   r  r  r   r   r   r   r    r  z#RestToGrpc.convert_geo_bounding_boxc                 C   s:   t j| |j| |j|jd ur| |jdS d dS N)r  r  r(   )r   r  ro  r  convert_vector_structr  r(   r   r   r   r   r   r    r  zRestToGrpc.convert_point_structc                 C   s   t dd | D S )Nc                 s   r5   r6   r0   rQ   r   r   r   r8     r9   z-RestToGrpc.convert_payload.<locals>.<genexpr>rX   r   r   r   r   r     r}  zRestToGrpc.convert_payloadc              	   C   &   t j|j|j|j|j|j|j|jdS N)r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   r   r   r   r   r        z#RestToGrpc.convert_hnsw_config_diffc                 C   sF  |j d urtj|j| |j dS |jd ur<t|jtjr)tj|j| 	|jdS t|jtj
r<tj|j| |jdS |jd urMtj|j| |jdS |jd ur^tj|j| |jdS |jd urotj|j| |jdS |jd urtj|j| |jdS |jd urtj|j|jdS |jd urtj|j|jd	S td
| )N)rR   r  )rR   r  )rR   r  )rR   r  )rR   r  )rR   r  )rR   r  )rR   r}   )rR   r~   zinvalid FieldCondition model: )r  r   r  rR   r  r  r>   r   r   r   r   r   r  r  r  r   r  r   r  r  r}   r~   r#   r   r   r   r   r     s@   









z"RestToGrpc.convert_field_conditionc                 C   rq  Nr"  r   r  r   r!  r   r   r   r   r    r  z"RestToGrpc.convert_wal_config_diffc              
   C   s~   t j| |j| |j| |j| |j	|j
d ur!| |j
nd |jd ur-| |jnd |jd ur;| |jdS d dS )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   convert_optimizers_configr   r   r   r   r   r   r   r   r   r   r   r   r   r     s   





z$RestToGrpc.convert_collection_configc              	   C   rx  ry  rz  r   r   r   r   r     r{  zRestToGrpc.convert_hnsw_configc                 C   rq  r|  r}  r   r   r   r   r     r  zRestToGrpc.convert_wal_configc                 C   r  r  )r   r  r  r   r  r  r  r  r  r  r  r#   r   r   r   r   r    r  zRestToGrpc.convert_distancec                 C   sn   t j|jd ur| |jnd |j|jpd|j|j|j|j	d ur%| 
|j	nd |jd ur3| |jdS d dS )NF)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     s   


z$RestToGrpc.convert_collection_paramsc                 C   sB   |t jjkrtjtjjjdS t|trtj|dS t	d| )Nr   r  r   )
r   r  r  r   r   r   r   r>   r@   r#   r   r   r   r   r    s
   
z+RestToGrpc.convert_max_optimization_threadsc                 C   sB   t j|j|j|j|j|jd ur| |jnd |j|j	|j
|jd	S N)	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~    s   
z$RestToGrpc.convert_optimizers_configc                 C   sV   d }t |jtr|j}tj|j|j|j|j|jd ur | 	|jnd |j
|j|j|d	S r  )r>   r  r@   r   r  r  r	  r
  r  r  r  r  r  )r   r]   r  r   r   r   r  0  s    
z)RestToGrpc.convert_optimizers_config_diffr  c              
   C   s   t j||jd ur| |jnd |jd ur| |jnd |jd ur&| |jnd |jd ur2| 	|jnd |j
d ur>| |j
nd |jd urL| |jdS d dS )N)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  H  s*   




z$RestToGrpc.convert_update_collectionc                 C   rq  )N)r  r  )r   r  r  r  r   r   r   r   r   j  r  zRestToGrpc.convert_geo_pointc                 C   s  t |tjr-t |jtrtj|jdS t |jtr tj|jdS t |jtr-tj|jdS t |tj	r:tj|j
dS t |tjr~t|jdkrQtjtjg ddS t |jd trdtjtj|jddS t |jd trwtjtj|jddS td	| t |tjrt|jdkrtjtjg dd
S t |jd trtjtj|jdd
S t |jd trtjtj|jddS td| t |tjrtj|jdS t |tjrtj|jdS td| )N)r  r  r  r  r   )r  )r  )r  zinvalid MatchAny model: )r  )r  zinvalid MatchExcept model: r  r  r  )r>   r   r  rH   r?   r   r+  r@   rB   r  r  r  rP  r  RepeatedStringsRepeatedIntegersr#   r  except_r  r  r  r  r   r   r   r   r  n  s<   zRestToGrpc.convert_matchc                 C   n   t |tjrtj| |jdS t |tjr tj| |j	dS t |tj
r0tj| |jdS td| )Nr  r  r  r  )r>   r   r  r   r,  r  r  r  rp  r  r  rv  r  r#   r   r   r   r   r    s   z#RestToGrpc.convert_alias_operationsc                 C   rq  r  )r   r  rn  r  r   r   r   r   r     r  z$RestToGrpc.convert_alias_descriptionc                 C      t jt j|j|jddS Nr3   rE  rL  )r   r3  rN  r3   rE  r   r   r   r   convert_sparse_vector_to_vector     z*RestToGrpc.convert_sparse_vector_to_vectorc                 C   r  r  )r   r4  rN  r3   rE  r   r   r   r   &convert_sparse_vector_to_vector_output  r  z1RestToGrpc.convert_sparse_vector_to_vector_outputc                 C   sN   t |trtj|dS t |tjrt|}t |tr tj|dS td| )N)rk  )rl  zinvalid ExtendedPointId model: )r>   r@   r   r'  rl  rF  rB   r#   r   r   r   r   ro    s   

z$RestToGrpc.convert_extended_point_idc                    s^   t |tjrtjtj fdd|jD ddS t |tjr(tj |j	dS t
d| )Nc                    r   r   rn  r   r   r   r   r      r!   z6RestToGrpc.convert_points_selector.<locals>.<listcomp>)r  r   rz   r  )r>   r   r  r   r-  PointsIdsListr   r  r   rz   r#   r   r   r   r   r    s   z"RestToGrpc.convert_points_selectorc                 C   s   t |tjrtj| |dS t |tjrtj| |dS t |tjr-tj| 	|dS t |tj
r<tj| |dS t |tjrKtj| |dS t |tjrZtj| |dS t |tjritj| |dS td| )	N)r   rz  r~  re  rh  r  r  ry   )r>   r   r  r   r!  r   r{  r   r  r   rf  r   ri  r   r   r   r  r   r#   r   r   r   r   r     s   zRestToGrpc.convert_conditionc                 C   sR   t |tjrtjtj|jddS t |tjr"tjtj|j	ddS t
d| )Nr:   r	  r  zinvalid PayloadSelector model: )r>   r   PayloadSelectorIncluder   r/  PayloadIncludeSelectorr	  r  PayloadExcludeSelectorr
  r#   r   r   r   r   convert_payload_selector  s   z#RestToGrpc.convert_payload_selectorc                 C   r  r6   )r  r   r   r   r   r    r  z(RestToGrpc.convert_with_payload_selectorc                 C   s\   t |trtj|dS t |trtjtj|ddS t |ttjr'| 	|S t
d| )Nr  r:   r  z$invalid WithPayloadInterface model: )r>   r?   r   r/  rC   r  r   r   PayloadSelectorr  r#   r   r   r   r   r    s   


z)RestToGrpc.convert_with_payload_interfacec                 C   sp   t |trtj|dS t |trtj|dS t |tr&| |}tj|dS t |tr1tj|dS td| )Nr  rt  )r  r  zinvalid StartFrom model: )	r>   r@   r   rU  rA   r   rk  rB   r#   ri  r   r   r   r    s   




zRestToGrpc.convert_start_fromc                 C   rY  r  )r   r  r  r   r  r  r  r#   r   r   r   r   r  
  s
   zRestToGrpc.convert_directionc                 C   B   t j|j|jd ur| |jnd |jd ur| |jdS d dS )Nr  )r   r  rR   r  r  r  r  r   r   r   r   r
    r  zRestToGrpc.convert_order_byc                 C   s:   t |trtj|dS t |tjr| |S td| )Nry  z invalid OrderByInterface model: )r>   rB   r   r  r   r
  r#   r   r   r   r   convert_order_by_interface  s
   

z%RestToGrpc.convert_order_by_interfacec                 C   rs  )Nr.   r+   r  )r>   rB   r   rV  r@   r#   r   r   r   r   r  '  
   

zRestToGrpc.convert_facet_valuec                 C   r   r  )r   rW  r  rH   r  r   r   r   r   r  0  r  z"RestToGrpc.convert_facet_value_hitc                 C   sb   t j| |j| |j|jd ur| |jnd |jr!| 	|jnd |j
r-| |j
dS d dS )N)r  r(   r  r  r  )r   r1  ro  r  r   r(   r  ru  r  r  r  r  r   r   r   r   r  7  s   


	zRestToGrpc.convert_recordc                 C   r  r6   )r  r   r   r   r   r  E  r  z"RestToGrpc.convert_retrieved_pointc                 C   r   r  )r   r  r  r   r   r   r   r  I  r   zRestToGrpc.convert_count_resultc                 C   s,   t  }|t|j tj|j||jdS )Nr  )	r   rh  r   fromisoformatr  r   r  r   r  )r   r]   r  r   r   r   r  M  s   z'RestToGrpc.convert_snapshot_descriptionc                 C   r  r   )
r   r!  r#  r   r"  r%  r$  r'  r&  r#   r   r   r   r   r(  Y  r)  zRestToGrpc.convert_datatypec              
   C   s   t j|j| |j|jd ur| |jnd |jd ur | |jnd |j	|j
d ur.| |j
nd |jd ur<| |jdS d dS )Nr,  )r   r.  r  r  r-  r   r   r   r   r   r*  r(  r+  r/  r   r   r   r   r0  d  s    




z RestToGrpc.convert_vector_paramsc                 C   r1  r2  )r   r4  r5  r3  r   r   r   r   r/  |  r6  z%RestToGrpc.convert_multivector_configc                 C   r7  r8  )r   r9  r;  r   r:  r#   r   r   r   r   r5    r<  z)RestToGrpc.convert_multivector_comparatorc                    s`   t |tjrtj |dS t |tr)tjtjt fdd| D ddS t	d| )Nr   c                 3   r?  r6   r@  rQ   r   r   r   r8     r*  z4RestToGrpc.convert_vectors_config.<locals>.<genexpr>rD  r>  r=  )
r>   r   r.  r   r2  r0  rE   VectorParamsMaprF   r#   r   r   r   r   r    s   
z!RestToGrpc.convert_vectors_configc                 C   s  dt t t t t  B dtjfdd}t|t rtj||dS t|tri }| D ]b\}}t|t r=||||i q*t|t	j
rN||| |i q*t|t	jrc||tj| |di q*t|t	jrx||tj| |di q*t|t	jr||tj| |di q*tjtj|d	d	S t|t	jrtjtj| |ddS t|t	jrtjtj| |ddS t|t	jrtjtj| |ddS td
| )Nr  r   c                 S   L   t | dkrt| d trtjtjdd | D ddS tjtj| ddS )Nr   c                 S      g | ]}t j|d qS rf  r   r;  r   inner_vectorr   r   r   r          
zLRestToGrpc.convert_vector_struct.<locals>.convert_vector.<locals>.<listcomp>rj  rM  rf  rK  )rP  r>   rC   r   r3  r<  r;  r  r   r   r   r\       z8RestToGrpc.convert_vector_struct.<locals>.convert_vectorr  rU  rV  rW  rj  zinvalid VectorStruct model: )rC   rA   r   r3  r>   r7  rE   rF   updater   rN  r  rn  rY  rq  rZ  rt  r[  r5  r#   r   r]   r\  r  rR   rS   r   r   r   rw    s:   



z RestToGrpc.convert_vector_structc                 C   s   dt t t t t  B dtjfdd}t|t rtj||dS t|trXi }| D ]#\}}t|t r=||||i q*t|t	j
rM||| |i q*tjtj|ddS td| )Nr  r   c                 S   r  )Nr   c                 S   r  r  r  r  r   r   r   r      r  zSRestToGrpc.convert_vector_struct_output.<locals>.convert_vector.<locals>.<listcomp>rj  r  rf  r  )rP  r>   rC   r   r4  r<  r;  r  r   r   r   r\    r  z?RestToGrpc.convert_vector_struct_output.<locals>.convert_vectorr  rj  z"invalid VectorStructOutput model: )rC   rA   r   r4  r>   r9  rE   rF   r  r   rN  r  r6  r#   r  r   r   r   ru    s"   



z'RestToGrpc.convert_vector_struct_outputc                 C   sB   t |trtj|dS t |trtjtj|ddS td| )Nr  r  r  zinvalid WithVectors model: )r>   r?   r   rE  rC   rD  r#   r   r   r   r   convert_with_vectors  s
   

zRestToGrpc.convert_with_vectorsnum_recordsc                    s   t |tr fdd|D S t |tr=dd t|D }| D ]\}}t|D ]
\}}||| |< q(q  fdd|D S td| )Nc                    r   r   rw  r   itemr   r   r   r      r!   z:RestToGrpc.convert_batch_vector_struct.<locals>.<listcomp>c                 S   s   g | ]}i qS r   r   )r   _r   r   r   r      r  c                    r   r   r  r  r   r   r   r      r!   z!invalid BatchVectorStruct model: )r>   rC   rE   r  rF   	enumerater#   )r   r]   r  resultrR   rS   rH  r  r   r   r   convert_batch_vector_struct  s   

z&RestToGrpc.convert_batch_vector_structNc                 C   sd   t |tr
|d d fS t |tjr|jd |jfS t |tjr+|jjtj	|jj
d|jfS td| )Nrf  z!invalid NamedVectorStruct model: )r>   rC   r   NamedVectorr  r   NamedSparseVectorr3   r   SparseIndicesrE  r#   r   r   r   r   convert_named_vector_struct  s   

z&RestToGrpc.convert_named_vector_structc                 C   s   t j|dS )Nrf  r  r   r   r   r   rQ    s   zRestToGrpc.convert_dense_vectorc                 C   rq  )Nr  )r   rN  r3   rE  r   r   r   r   rR    r  z RestToGrpc.convert_sparse_vectorc                    s   t j fdd|D dS )Nc                    r   r   rh  ri  r   r   r   r      r!   z9RestToGrpc.convert_multi_dense_vector.<locals>.<listcomp>rj  )r   r<  r   r   r   r   rS    rO  z%RestToGrpc.convert_multi_dense_vectorc                 C   s,   t j|j|j|jd urt|jdS d dS rl  )r   rn  r  r]   rm  rY   r   r   r   r   rY    s   zRestToGrpc.convert_documentc                 C   0   t jt|j|j|jd urt|jdS d dS rp  )r   rq  r1   rV  r]   rm  rY   r   r   r   r   rZ  !     zRestToGrpc.convert_imagec                 C   r  rs  )r   rt  r1   rW  r]   rm  rY   r   r   r   r   r[  )  r  z#RestToGrpc.convert_inference_objectc                 C   s   t |tr$t|dkrt |d trtj| |dS tj| |dS t |tjr3tj| 	|dS t |t
tjrDtj| |dS t |tjrStj| |dS t |tjrbtj| |dS t |tjrqtj| |dS td	| )
Nr   r  r  r  )r  r  r  r  ru  )r>   rC   rP  r   r=  rS  rQ  r   rN  rR  r   r(  ro  rn  rY  rq  rZ  rt  r[  r#   r   r   r   r   rv  1  s"   
zRestToGrpc.convert_vector_inputc                    sf   t j|jd ur fdd|jD nd |jd ur! fdd|jD nd |jd ur/ |jdS d dS )Nc                    r   r   rw  ri  r   r   r   r    J  r!   z6RestToGrpc.convert_recommend_input.<locals>.<listcomp>c                    r   r   rw  ri  r   r   r   r    O  r!   ry  )r   r|  rz  r{  rx  r}  r   r   r   r   r~  F  s   



z"RestToGrpc.convert_recommend_inputc                 C   r  r  )r   r>  rv  rz  r{  r   r   r   r   r  Z  r  z%RestToGrpc.convert_context_input_pairc                    sR   t |trtj fdd|D dS t |tjr"tj |gdS td| )Nc                    r   r   r  r  r   r   r   r    e  r!   z4RestToGrpc.convert_context_input.<locals>.<listcomp>r  zinvalid ContextInput model: )r>   rC   r   r?  r   r  r  r#   r   r   r   r   r  a  s   
z RestToGrpc.convert_context_inputc                 C   r  r  )r   r  rv  r  r  r  r   r   r   r   r  l  r  z!RestToGrpc.convert_discover_inputc                 C   r  r  )r   r  r  r   r  r#   r   r   r   r   r  s  r  zRestToGrpc.convert_fusionc                 C   r7  r  )r   r  r  r   r  r#   r   r   r   r   r  }  r  zRestToGrpc.convert_samplec                 C   rq  )Nr  )r   r  r  r  r   r   r   r   r    r  zRestToGrpc.convert_mmrc                 C   sv  t |tjr*|jd ur tj| |j| |jd}tj	|dS tj	| |jdS t |tj
r:tj	| |jdS t |tjrJtj	| |jdS t |tjrZtj	| |jdS t |tjrjtj	| |jdS t |tjrztj	| |jdS t |tjrtj	| |jd	S t |tjrtj	| |d
S t |tjrt }|j j!d ur|j j!|_!tj	|dS t"d| )Nr  )r   r  r  r  r  r  r  r  )r  r  r  )#r>   r   r  r  r   NearestInputWithMmrrv  r  r  rB  r  r~  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r7   r#   )r   r]   r   r  r   r   r   r    s6   

zRestToGrpc.convert_queryc                 C   s2   |j d ur
t|j nd }| |j}tj||dS )N)r  r  )r  rY   r  r  r   r@  )r   r]   r  r  r   r   r   r    s   z RestToGrpc.convert_formula_queryc                 C   sJ  t |trtj|dS t |trtj|dS t |ttjr'tj| |dS t |tj	r4tj|j
dS t |tjrAtj|jdS t |tjrQtj| |jdS t |tjr`tj| |dS t |tjrotj| |dS t |tjr~tj| |d	S t |tjrtj| |d
S t |tjrtj| |jdS t |tjrtj| |jdS t |tjrtj| |jdS t |tjrtj| |jdS t |tj rtj| |j!dS t |tj"rtj| #|dS t |tj$rtj| %|j&dS t |tj'rtj| %|j(dS t |tj)rtj| %|j*dS t+d| )N)r  )r  )r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  zinvalid Expression model: ),r>   rA   r   rA  rB   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  r  r  r  r  r  r  r  r  r  r#   r   r   r   r   r    sR   


zRestToGrpc.convert_expressionc                    r   )Nc                    r   r   r  r  r   r   r   r      r!   z5RestToGrpc.convert_sum_expression.<locals>.<listcomp>r  )r   r  r  r   r   r   r   r    r   z!RestToGrpc.convert_sum_expressionc                    r   )Nc                    r   r   r  r  r   r   r   r      r!   z6RestToGrpc.convert_mult_expression.<locals>.<listcomp>r  )r   r  r  r   r   r   r   r    r   z"RestToGrpc.convert_mult_expressionc                 C   s(   t j| |jj| |jj|jjdS )Nr  )r   r  r  r  r  r  r  r   r   r   r   r    s
   z!RestToGrpc.convert_div_expressionc                 C   s"   t j| |jj| |jjdS )Nr  )r   r  r  r  r  r  r   r   r   r   r    s   z!RestToGrpc.convert_pow_expressionc                 C   s   t j| |jj|jjdS )Nr  )r   r  r   r  r  r  r   r   r   r   r    s   zRestToGrpc.convert_geo_distancec                 C   s4   t j| |j|jd ur| |jnd |j|jdS )Nr  )r   r  r  r  r  r  r  r   r   r   r   r    s   
z*RestToGrpc.convert_decay_params_expressionc                 C   sJ   t |ttjrtj| |dS t |ttjr| |S t	d| )Nr  zinvalid QueryInterface: )
r>   r   r   r=  r   rB  rv  r   r  r#   r   r   r   r   convert_query_interface  s
   
z"RestToGrpc.convert_query_interfacec                    s   d }t |jtjr |jg}nt |jtr! fdd|jD }tj||jd ur/ 	|jnd |j
d ur8|j
nd |jd urD |jnd |jd urP |jnd |j|jd ur[|jnd |jd uri |jdS d dS )Nc                    r   r   r  r  r   r   r   r      r!   z5RestToGrpc.convert_prefetch_query.<locals>.<listcomp>r  )r>   r  r   r  r  rC   r   rC  r  r  r  rz   r   r   r  r  r  r  r  )r   r]   r  r   r   r   r    s$   

z!RestToGrpc.convert_prefetch_queryc                    s  t |jtjr|jgn|j}tj||jd ur fdd|D nd |jd ur+ |jnd |j|j	d ur9 
|j	nd |jd urE |jnd |j|j|j|jd urW |jnd |jd urc |jnd |jd uro |jnd |jd ur} |jdS d dS )Nc                    r   r   r  )r   pr   r   r   r    7  r!   z4RestToGrpc.convert_query_request.<locals>.<listcomp>)r  r  r  r  rz   r   r  r  r!  r"  r#  r  r  )r>   r  r   r  r   rG  r  r  r  rz   r   r   r  r  r  r!  r$  r  r#  r  r  r&  r  r  )r   r]   r  r  r   r   r   convert_query_request-  s8   





 z RestToGrpc.convert_query_requestc                 C   s   |  ||S r6   )r  r  r   r   r   r'  X  s   zRestToGrpc.convert_query_pointsc                 C   r  r(  )r   r+  r0  r   r/  r.  r-  r,  r*  r2  r1  r#   r   r   r   r   r3  ^  r  z!RestToGrpc.convert_tokenizer_typec                 C   s|   t j|jd ur| |jnd |j|j|j|j|jd ur!| 	|jnd |j
|jd ur/| |jnd |jd ur:|jd	S d d	S )N)	r<  r6  r4  r5  r   r8  r7  r9  r:  )r   r=  r<  r3  r6  r4  r5  r   r8  r>  r7  r9  r?  r:  r   r   r   r   r6  k  s"   

z$RestToGrpc.convert_text_index_paramsc                 C   s\   t |tjrtj|jgdS t |tjr'tj|jr!dd |jD nd |jdS td| )N)rB  c                 S   r  r   r   )r   langr   r   r   r      r  z0RestToGrpc.convert_stopwords.<locals>.<listcomp>rA  z"invalid StopwordsInterface model: )	r>   r   rD  r   rE  rH   rB  rC  r#   r   r   r   r   r>    s   zRestToGrpc.convert_stopwordsc                 C   s0   t |tjrtjtj|jddS td| )N)rJ  )rH  rG  )r>   r   rK  r   rI  rJ  r#   r   r   r   r   r?    s   zRestToGrpc.convert_stemmerc                 C   rb  )N)rQ  r  rP  r   )r   rR  rQ  r  rP  r   r   r   r   r   r7       z'RestToGrpc.convert_integer_index_paramsc                 C   rq  N)rV  r   )r   rW  rV  r   r   r   r   r   r8       z'RestToGrpc.convert_keyword_index_paramsc                 C   rq  N)rP  r   )r   r[  rP  r   r   r   r   r   r9    r  z%RestToGrpc.convert_float_index_paramsc                 C   r   N)r   )r   r`  r   r   r   r   r   r:    r   z#RestToGrpc.convert_geo_index_paramsc                 C   r   r  )r   rc  r   r   r   r   r   r;    r   z$RestToGrpc.convert_bool_index_paramsc                 C   rq  r  )r   re  rP  r   r   r   r   r   r<    r  z(RestToGrpc.convert_datetime_index_paramsc                 C   rq  r  )r   rg  rV  r   r   r   r   r   r=    r  z$RestToGrpc.convert_uuid_index_paramsc                 C   rb  )N)r  r  r  r  )r   ri  r  r  r  r  r   r   r   r   r    r  z)RestToGrpc.convert_collection_params_diffc                 C   rq  )N)r  rj  )r   rl  rk  r  r   r   r   r   r    r  z"RestToGrpc.convert_lookup_locationc                 C   sB   t |trtj|dS t |tjrtj| |dS td| )N)rx  r;  rw  )r>   r@   r   rJ  r   r}  ry  r#   r   r   r   r   rz    s   
z#RestToGrpc.convert_read_consistencyc                 C   r  r{  )
r   r}  r  r   r  r~  r|  r  r  r#   r   r   r   r   ry    s   z(RestToGrpc.convert_read_consistency_typec                 C   sb   |t jjkrtjtjjdS |t jjkrtjtjjdS |t jjkr*tjtjj	dS t
d| )Nr  rm  )r   rp  rq  r   rn  ro  rs  rr  ru  rt  r#   r   r   r   r   rv    s   z!RestToGrpc.convert_write_orderingc                 C   s   t jt jj|j|jdS )Nr  )r   r  QuantizationTypeInt8r  r  r   r   r   r   r    s
   z-RestToGrpc.convert_scalar_quantization_configc                 C   r   )Nr  )r   r  r  r  r  r   r   r   r   r    s   
z.RestToGrpc.convert_product_quantization_configc                 C   r  )Nr  )r   r  r  r  r  r  r  r   r   r   r   r    s   


z-RestToGrpc.convert_binary_quantization_configc                 C   r  r  )
r   r  r  r   r  r  r  r  r  r#   r   r   r   r   r    r  z/RestToGrpc.convert_binary_quantization_encodingc                 C   s   |t jjkrtjtjjjdS |t jjkrtjtjjjdS |t jjkr-tjtjjj	dS |t jj
kr<tjtjjjdS td| )Nr  r  )r   r  r  r   r   r  r  r  r  r  r  r  r#   r   r   r   r   r  !  s&   z5RestToGrpc.convert_binary_quantization_query_encodingc                 C   sr   |t jjkr
tjjS |t jjkrtjjS |t jjkrtjjS |t jj	kr(tjj
S |t jjkr2tjjS td| r  )r   r  r  r   r  r  r  r  r  r  r  r  r  r#   r   r   r   r   r  =  s   z$RestToGrpc.convert_compression_ratioc                 C   r  )Nr  r  r  r  )r>   r   r  r   rK  r  r  r  r  r  r  r  r  r#   r   r   r   r   r   L  s   


z&RestToGrpc.convert_quantization_configc                 C      t j|j|j|jdS )Nr  )r   r  r  r  r  r   r   r   r   r  _  s
   z-RestToGrpc.convert_quantization_search_paramsc                 C   r  )N)r  r  )r   r  ro  r  rw  r  r   r   r   r   r  i  r  z RestToGrpc.convert_point_vectorsc                    r   )Nc                    r   r   r  r  r   r   r   r    s  r!   z4RestToGrpc.convert_groups_result.<locals>.<listcomp>r  )r   r  r  r   r   r   r   r  p  r  z RestToGrpc.convert_groups_resultc                    sB   t j |j fdd|jD |jd ur |jdS d dS )Nc                    r   r   r  r   r   r   r   r    z  r!   z2RestToGrpc.convert_point_group.<locals>.<listcomp>r  )r   r  r  r  r  rQ  r  r   r   r   r   r  v  r  zRestToGrpc.convert_point_groupc                 C   sN   t |trtj|dS t |tr |dkrtj|dS tj|dS td| )Nr.   r   )unsigned_valuer+   r  )r>   rB   r   rL  r@   r#   r   r   r   r   r  ~  s   

zRestToGrpc.convert_group_idc                 C   r  )N)rk  r"  r#  )r   r  rk  r"  r  r#  r  r   r   r   r   r    s   



zRestToGrpc.convert_with_lookupc                 C   s   t |tjrtj| |jdS t |tjr tj| |j	dS t |tj
r0tj| |jdS |tjjkr>tjt dS td| )Nr  r  r  )r  r  )r>   r   r  r   rM  r  r  r  r  r  r  r  r  r  r  r#   r   r   r   r   r    s"   


z+RestToGrpc.convert_quantization_config_diffc                 C   s>   t j|jd ur| |jnd |jd ur| |jnd |jdS )Nr  )r   r  r   r   r   r  r   r   r   r   r   r    s   

z%RestToGrpc.convert_vector_params_diffc                    sv   t |trt|dkrd|v rtj |d dS t |tr4tjtjt fdd| D ddS td| )	Nr@  r  r  c                 3   r?  r6   r  rQ   r   r   r   r8     rC  z9RestToGrpc.convert_vectors_config_diff.<locals>.<genexpr>r  r  r  )	r>   rE   rP  r   rN  r  VectorParamsDiffMaprF   r#   r   r   r   r   r    s   
z&RestToGrpc.convert_vectors_config_diffc                    sr   t tjr" jjtjjfddttjjD S t tj	r2 fddj
D S td )Nc              	      sL   g | ]"}t jt jj| |  jjd ur t jj| nd dqS rv  )r   r  r`  ro  batchr  payloadsr   rc  )r]   vectors_batchr   r   r      s    
z=RestToGrpc.convert_point_insert_operation.<locals>.<listcomp>c                    r   r   r  r   r   r   r   r      r!   z%invalid PointInsertOperations model: )r>   r   PointsBatchr  r  r  rP  r  r  r  r   r#   r   r   )r   r]   r  r   convert_point_insert_operation  s   
z)RestToGrpc.convert_point_insert_operationc                 C   r  r6   )r  r   r   r   r   convert_update_operation  r  z#RestToGrpc.convert_update_operationc                    s  t |tjr1|jjr |jjnd }|jjr |jjnd }tj	tj	j
 |j||ddS t |tjrX|jjrB |jjnd } |j}tj	j||d}tj	|dS t |tjr|jjrktj|jjd}n|jjrxtj|jjd}ntd| |jjr |jjnd }tj	tj	j |jj |||jjdd	S t |tjr|jjrtj|jjd}n|jjrtj|jjd}ntd
| |jjrֈ |jjnd }tj	tj	j |jj |||jjddS t |tjr:|jjrtj|jjd}n|jjrtj|jjd}ntd| |jjr& |jjnd }tj	tj	j |jj! ||ddS t |tj"rc|j#jrM |j#jnd } |j#}tj	j$||d}tj	|dS t |tj%r|j&jrv |j&jnd }|j&jr |j&jnd }tj	tj	j' fdd|j&jD ||ddS t |tj(r|j)jrtj|j)jd}n|j)jrtj|j)jd}ntd| |j)jr҈ |j)jnd }tj	tj	j* |tj+|j)j,d|ddS td| )N)r   r  r  r  )r   r  )r  r   r  z#invalid SetPayloadOperation model: )r(   r  r  rR   r  z)invalid OverwritePayloadOperation model: r  z&invalid DeletePayloadOperation model: )r  r  r  r  r  c                    r   r   r  r   r   r   r   r    x  r  z>RestToGrpc.convert_points_update_operation.<locals>.<listcomp>r  r  )r  r  r  r  r  )-r>   r   r   r  r  r&  r  r   r   rO  PointStructListr  r  r  r  DeletePointsr  r  r   r  rz   r  r#   r  r   r(   rR   r  r  OverwritePayloadr  r  r  r  r	  r  ClearPayloadr
  r  r  r  r  r  rD  r  )r   r]   r  r  r  r  r  r   r   r   r    s  



	

z*RestToGrpc.convert_points_update_operationc                 C   r  r  )
r   r  r  r   r  r  r  r  r  r#   r   r   r   r   r}    r)  z%RestToGrpc.convert_recommend_strategyc                 C   sJ   t j|jd ur
|jnd |jd ur|jnd |jd ur!| |jdS d dS )Nr  )r   rQ  r   r   r*  r(  r   r   r   r   convert_sparse_index_params  r  z&RestToGrpc.convert_sparse_index_paramsc                 C   s:   |t jjkr
tjjS |t jjkrttjdS td| r  )r   r  r   r   r  r!  r   r#   r   r   r   r   r"    s
   zRestToGrpc.convert_modifierc                 C   s>   t j|jd ur| |jnd |jd ur| |jdS d dS )Nr%  )r   r&  r#  r  r$  r"  r   r   r   r   r'    s   z'RestToGrpc.convert_sparse_vector_paramsc                    "   t jt fdd| D dS )Nc                 3   r?  r6   r)  rQ   r   r   r   r8     r*  z:RestToGrpc.convert_sparse_vector_config.<locals>.<genexpr>r  )r   rR  rE   rF   r   r   r   r   r    s   z'RestToGrpc.convert_sparse_vector_configc                 C   rs  )N)numberr  r+  )r>   r@   r   rS  rB   r#   r   r   r   r   r    r  zRestToGrpc.convert_shard_keyc                 C   r,  r-  )r   r.  r0  r   r/  r2  r1  r4  r3  r6  r5  r8  r7  r:  r9  r<  r;  r>  r=  r@  r?  rB  rA  r#   r   r   r   r   rC    rD  z RestToGrpc.convert_replica_statec                    s   t |tjrtj |jg |jdS t |ttj	r(tj |gdS t |t
r:tj fdd|D dS td| )N)rG  rE  )rG  c                    r   r   rF  r  r   r   r   r      r!   z9RestToGrpc.convert_shard_key_selector.<locals>.<listcomp>z invalid ShardKeySelector model: )r>   r   rH  r   r.  r  r  rE  r   rS  rC   r#   r   r   r   r   r&    s   

z%RestToGrpc.convert_shard_key_selectorc                 C   s2   |t jjkr	tjS |t jjkrtjS td| rJ  )r   rK  r  r   r   rM  rL  r#   r   r   r   r   r  
  s
   z"RestToGrpc.convert_sharding_methodc                 C   s  t |tjr|j}| |S t |tjr|j}| |S t |tjr*|j	}| 
|S t |tjr8|j}| |S t |tjrF|j}| |S t |tjrT|j}| |S t |tjrb|j}| |S t |tjrp|j}| |S t |tjrztdt |tjrtdtd| )Nz0StartReshardingOperation has no grpc counterpartz1AbortReshardingOperation has not grpc counterpartz!invalid ClusterOperations model: )r>   r   rX  rO  rY  r[  rP  r\  r^  rQ  r_  ra  rR  rb  rd  rS  re  rg  rT  rh  rj  rU  rk  rm  rV  rn  StartReshardingOperationr#   AbortReshardingOperation)r   r]   r  r   r   r   ro    s:   







z%RestToGrpc.convert_cluster_operationsc                 C   4   t j|jd |j|j|jd ur| |jdS d dS N)rr  rx  rs  rt  rp  )r   rW  rr  rs  rt  rp  ru  r   r   r   r   rY  H     

zRestToGrpc.convert_move_shardc                 C   r  r  )r   rZ  rr  rs  rt  rp  ru  r   r   r   r   r\  T  r  z"RestToGrpc.convert_replicate_shardc                 C   s   t j|jd |j|jdS )N)rr  rx  rs  rt  )r   r]  rr  rs  rt  r   r   r   r   r_  `  s   z'RestToGrpc.convert_abort_shard_transferc                 C   rq  rv  )r   r`  rr  rw  r   r   r   r   rb  k  r  zRestToGrpc.convert_replicac                 C   r1  r  )r   rf  r  r  r   r   r   r   rh  o  rk  z#RestToGrpc.convert_delete_shard_keyc                 C   sf   t j| |j|jd ur|jnd |jd ur|jnd |jd ur!|jnd |jd ur/| |jdS d dS )Nr|  )	r   rc  r  r  rz  r  r}  r{  rC  r   r   r   r   re  s  s   



	z#RestToGrpc.convert_create_shard_keyc                 C   s"   t j|jd |j|j| |jdS r  )r   ri  rr  rs  rt  ru  rp  r   r   r   r   rk    s   
z#RestToGrpc.convert_restart_transferc                 C   s:   t j| |j| |j|jd ur| |jdS d dS )N)r  r  rz   )r   rl  r  r  r  rz   r   r   r   r   r   rn    r  z#RestToGrpc.convert_replicate_pointsc                 C   r  r  )r   r  r  r   r  r  r  r  r  r  r  r#   r   r   r   r   ru    r  z(RestToGrpc.convert_shard_transfer_methodc                 C   r  )Nr  )r   rX  r  r  r  r   r   r   r   r    s
   z%RestToGrpc.convert_health_check_replyc                 C   r  r  )r   r  ro  r  r  r  r   r   r   r   r    r  z%RestToGrpc.convert_search_matrix_pairc                    r   )Nc                    r   r   r  r  r   r   r   r      r!   z:RestToGrpc.convert_search_matrix_pairs.<locals>.<listcomp>r  )r   rY  r  r   r   r   r   r    r  z&RestToGrpc.convert_search_matrix_pairsc                    r  )Nc                    r   r   rn  r  r   r   r   r      r!   z<RestToGrpc.convert_search_matrix_offsets.<locals>.<listcomp>r  )r   rZ  rC   r  r  r  r  r   r   r   r   r    r  z(RestToGrpc.convert_search_matrix_offsetsc                 C   r   Nr  r   r  r  r   r   r   r   r       z*RestToGrpc.convert_strict_mode_multivectorc                    r  )Nc                 3   r?  r6   r  rQ   r   r   r   r8     rC  zDRestToGrpc.convert_strict_mode_multivector_config.<locals>.<genexpr>r+  r   r[  rE   rF   r   r   r   r   r    
   z1RestToGrpc.convert_strict_mode_multivector_configc                 C   r   Nr  r   r  r  r   r   r   r   r    s   z%RestToGrpc.convert_strict_mode_sparsec                    r  )Nc                 3   r?  r6   r  rQ   r   r   r   r8     rC  z?RestToGrpc.convert_strict_mode_sparse_config.<locals>.<genexpr>r  r   r\  rE   rF   r   r   r   r   r    r  z,RestToGrpc.convert_strict_mode_sparse_configc                 C      t jdi d|jd|jd|jd|jd|jd|jd|jd|j	d	|j
d
|jd|jd|jd|jd|jd|jd|jd|jrN| |jnd d|jrZ| |jnd d|jS d|jS 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    s`   
	
z%RestToGrpc.convert_strict_mode_configc                 C   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   r   
  s`   
	
z,RestToGrpc.convert_strict_mode_config_outputc                    r  )Nc                 3   r?  r6   r  rQ   r   r   r   r8   1  r  zKRestToGrpc.convert_strict_mode_multivector_config_output.<locals>.<genexpr>r  r  r   r   r   r   r  ,  s
   z8RestToGrpc.convert_strict_mode_multivector_config_outputc                    r  )Nc                 3   r?  r6   r  rQ   r   r   r   r8   <  rC  zFRestToGrpc.convert_strict_mode_sparse_config_output.<locals>.<genexpr>r  r  r   r   r   r   r  7  r  z3RestToGrpc.convert_strict_mode_sparse_config_outputc                 C   r   r  r  r   r   r   r   r  A  r  z1RestToGrpc.convert_strict_mode_multivector_outputc                 C   r   r  r  r   r   r   r   r  I  r  z,RestToGrpc.convert_strict_mode_sparse_outputc              	      s^   t j|j|j fdd|jD  fdd|jD  fdd|jD  fdd|jp*g D dS )Nc                    r   r   r  r  r   r   r   r    X  r  z>RestToGrpc.convert_collection_cluster_info.<locals>.<listcomp>c                    r   r   r  r  r   r   r   r    [  r  c                    r   r   r  r  r   r   r   r    ^  r   c                    r   r   r  r  r   r   r   r    b  r   r   )r   r_  rw  r  r  r  r  r  r   r   r   r   r  Q  s    



z*RestToGrpc.convert_collection_cluster_infoc                 C   4   t j|j|jd ur| |jnd |j| |jdS )Nr	  )r   r  rr  r  r  r   rC  r
  r   r   r   r   r  h     

z#RestToGrpc.convert_local_shard_infoc                 C   r  )Nr  )r   r  rr  r  r  rw  rC  r
  r   r   r   r   r  s  r  z$RestToGrpc.convert_remote_shard_infoc                 C   s:   d|j i}tjd|j|jd ur|jnd |j|jd|S )Nr  r  r   )from_r   r  rr  rx  r  r  )r   r]   
ugly_paramr   r   r   r  ~  s   
z&RestToGrpc.convert_shard_transfer_infoc                 C   s8   t j| |j|j|j|jd ur| |jdS d dS )Nr  )r   r  r  r  rr  rw  r  r  r   r   r   r   r    s   


z"RestToGrpc.convert_resharding_infoc                 C   rY  r  )r   r  r  r   r  r  r  r#   r   r   r   r   r    r  z'RestToGrpc.convert_resharding_direction(  r  r  r  r   r   r   r   r   r   r   r   r   r   rk  r   r   r   r   r   r   r   r   r   r   r   r   rI  r   r#  r"  r   rE   rB   r+  r$  r   rl  r&  r%  r-  r`   r,  rU  rW  r[  rm  rf  r   ri  r   ro  rp  ru  rv  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   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   rN  r3  r  r4  r  r(  r'  ro  r-  r  r!  r   r  r/  r  r  r0  r  rU  r  r  r  r  r
  OrderByInterfacer  rV  r  r  rW  r  r  r1  r  r  r  r  r  r  r!  r(  r.  r0  r4  r/  r9  r5  r2  r  r8  r7  rw  r:  r9  ru  rF  rE  r  BatchVectorStructr@   rC   r  NamedVectorStructrD   rA   r  r  r;  rQ  rR  r<  rS  rn  rY  rq  rZ  rt  r[  r=  rv  r|  r~  r  r>  r  r?  r  r  r  r  r  r  r  r  r  rB  r  r  r@  r  rA  r  r  r  r  r  r  r  r  r  r  r  r  r  QueryInterfacer  r  rC  r  r%  rG  r  r'  r+  r3  r=  r6  rH  rE  r>  rI  r?  rR  r7  rW  r8  r[  r9  r`  r:  rc  r;  re  r<  rg  r=  ri  r  rl  r  rJ  rz  r}  ry  rp  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rK  r   r  r  r  r  r  r  r  r  rL  r  r  r  rM  r  r  r  rN  r  PointInsertOperationsr  rP  rO  r  r  r  r}  r  rQ  r  r  r"  r&  r'  r   rR  r  rS  r  r.  rC  r.  r&  rK  r  rT  rW  rZ  r]  r`  rc  rf  ri  rl  ro  rY  r\  r_  rb  r  rh  r~  re  rk  rn  r  ru  r  rX  r  r  r  r  rY  r  r  rZ  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  r  r  r  r  r  r   r   r   r   r`  U
  sx   	% #	! 
	
*
	',
	*


	"	"""""""" %"
"	"""!""4""
""""	"""
	"	"!
	"
"
""
r`  )/rl  r   r   r   typingr   r   r   r   #google.protobuf.internal.containersr	   google.protobuf.json_formatr
   google.protobuf.timestamp_pb2r   google.protobuf.pyext._messager   ImportErrorqdrant_clientr   qdrant_client.grpcr   r   r   r   qdrant_client.http.modelsr   r   qdrant_client._pydantic_compatr   r   &qdrant_client.conversions.common_typesr   rB   r?   r'   r1   rP   rE   rY   r\   r`   rb   rs   ru   rv   r`  r   r   r   r   <module>   sX    " "                   [