
    j#                       d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlZd dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZ d dlm Z m!Z! d d	lm"Z# d d
l$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddl*mRZRmSZSmTZTmUZUmVZV  G d d          ZWdS )    N)Path)AnyCallableDictListMappingOptionalUnion)parse)cygrpc)ignore_unimplementedretry_on_rpc_failureupgrade_reminder)AmbiguousIndexNameDescribeCollectionException	ErrorCodeExceptionsMessageMilvusException
ParamError)
common_pb2milvus_pb2_grpc)
milvus_pb2)Config   )entity_helperinterceptorts_utilsutils)AnnSearchRequest
BaseRankerCollectionSchemaMutationResultSearchResult)CreateIndexFutureFlushFutureLoadPartitionsFutureMutationFutureSearchFuture)check_pass_paramis_legal_hostis_legal_port)Prepare)BulkInsertStateCompactionPlansCompactionStateDatabaseInfoDataType	ExtraList	GrantInfoGroup
IndexState	LoadStatePlanReplicaResourceGroupConfigResourceGroupInfoRoleInfoShardStateStatusUserInfoget_cost_extra)check_invalid_binary_vectorcheck_statusget_server_typeis_successfullen_ofc                      e Zd Zej        dddfdedededeej                 ddf
dZ	d	e
fd
Zd ZdedededefdZd Zd ZdedededefdZddee         fdZd ZdefdZdededefdZdefdZd Zd efd!Zd"efd#Zddedefd$Zed%             Zd& Z 	 dded'ed(edee         fd)Z! e"            	 dd*ed+e#dee         fd,            Z$ e"            dd*edee         fd-            Z% e"            	 dd*ed.e#dee         fd/            Z& e"            dd*edee         fd0            Z' e"            dd*edee         fd1            Z( e"            ddee         fd2            Z) e"            	 	 dd3ed4ed5edee         fd6            Z* e"            	 dd*ed7edee         fd8            Z+ e"            	 dd*ed7edee         fd9            Z, e"            	 dd*ed7edee         fd:            Z- e"            	 dd*ed7edee         fd;            Z. e"            dd*edee         fd<            Z/ e"            	 dd*ed7edee         fd=            Z0dd*edee         fd>Z1 e"            	 	 	 dd*ed?ee2e#e2         f         d7ee         d@ee3         dee         f
dA            Z4	 	 	 dd*edBee#e2         e2f         d7ee         d@ee3         dee         f
dCZ5	 	 dd*ed?e#d7ee         dee         fdDZ6 e"            	 	 dd*ed?e#d7ee         dee         fdE            Z7 e"            	 	 dd*edFed7ee         dee         fdG            Z8	 	 dd*ed?e#d7ee         dee         fdHZ9 e"            	 	 dd*ed?e#d7ee         dee         fdI            Z:	 	 dd*edJe#d7ee         dee         fdKZ; e"            	 	 dd*ed?e#d7ee         dee         fdL            Z<	 ddMe=j>        dee         fdNZ?	 ddMe=j@        dee         fdOZA e"dPQ          	 	 	 	 	 dd*edSee#e#e                  eBjC        f         dTedUe2dVedFee         dWee#e                  dXee#e                  dYedee         fdZ            ZD e"dPQ          	 	 	 	 dd*ed[e#eE         d\eFdVedWee#e                  dXee#e                  dYedee         fd]            ZG e"            dd*edefd_            ZH e"            	 dd*ed`edee         fda            ZI e"            dd`edee         fdb            ZJ e"            	 dd*ed`edee         fdc            ZK e"            dd`edee         fdd            ZL e"            dd*edee         fde            ZM e"            	 dd*edfedge2dee         fdh            ZN e"            	 dd*ediedje3dee         fdk            ZO e"            dd*edee         fdl            ZP e"            	 	 dd*ediedee         dmee         fdn            ZQ e"            	 dd*ediedee         fdo            ZR e"            	 	 dd*ediedee         dmee         fdp            ZS e"            	 dd*ediedee         fdq            ZT e"            	 	 dd*edsedee         fdt            ZU e"            dd*edee         fdu            ZV e"            	 dd*edee         dweWfdx            ZX e"            dd*edee         fdy            ZY e"            	 	 dd*edWe#e         dsedee         fdz            ZZ e"            	 	 dd*edWe#e         dee         dweWfd{            Z[ e"            	 	 	 dd*edWee#e                  dee         dweWfd|            Z\ e"            ddedee         fd}            Z] e"            ddedee         fd~            Z^ e"            ddee         fd            Z_ e"            	 dded.e3dee         fd            Z` e"            ddedee         fd            Za e"            	 	 dd*edWee#e                  dee         fd            Zb e"            	 dd*edWe#e         dee         fd            Zc e"            	 dd*edWe#e         dee         fd            Zd e"            dd*edee         fd            Ze e"            	 dde#e         d*ededee         fd            Zf e"            	 dd*edee         fd            Zg	 dde#e         d*ededee         fdZh e"            ddeidee         fd            Zj e"            	 dd*edfediedee         fd            Zk e"            ddeldee         fd            Zm e"            ddee         fd            Zn e"            	 	 	 dd*ede#e         dXee#e                  dWee#e                  dee         f
d            Zo e"            	 	 	 dd*ededXee#e                  dWee#e                  dee         f
d            Zp e"            	 dd*edede#e         de#e         dee         f
d            Zq e"            	 	 dd*edeeW         dee         defd            Zr e"            	 ddedee         desfd            Zt e"            	 ddedee         fd            Zu e"            	 ddedee         devfd            Zw e"            	 dd*edee         dexfd            Zy e"            	 dd*ed7ede#e         dee         def
d            Zz e"            	 ddedee         de{fd            Z| e"            	 ddVed*edee         deifd            Z} e"            ddededee         fd            Z~ e"            	 dded'ed(edee         fd            Z e"            ddedee         fd            Z e"            ddee         fd            Z e"            ddedee         fd            Z e"            ddedee         fd            Z e"            	 ddededee         fd            Z e"            	 ddededee         fd            Z e"            	 ddedeWdee         fd            Z e"            ddeWdee         fd            Z e"            	 ddedeWdee         fd            Z e"            ddeWdee         fd            Z e"            	 ddedededededee         fd            Z e"            	 ddedededededee         fd            Z e"            	 ddededee         fd            Z e"            	 ddededededee         f
d            Z e"            ddee         defd            Z e"            ddedee         fd            Z e"            	 ddeeef         dee         fd            Z e"            ddedee         fd            Z e"            ddee         fd            Z e"            	 ddedee         defdÄ            Z e"            	 ddedededee         fdǄ            Z e"            	 ddeded*ededee         f
dɄ            Z e"            ddedee         fd˄            Zddedee         fd̄Z e"            ddee         fd̈́            Z e"            edededefd΄                        Z e"             edϦ          ddee         defdЄ                        ZdS )GrpcHandler Nurihostportchannelreturnc                 |   d | _         || _        |                    d          }||n|                     |||          | _        d | _        d | _        |                    d          | _         | j        di | | 	                    |                    d                     | 
                                 g | _        d S )Naddressuserdb_name )_stub_channelget_GrpcHandler__get_address_address
_log_level_request_id_user_set_authorization_setup_db_interceptor_setup_grpc_channel	callbacks)selfrI   rJ   rK   rL   kwargsaddrs          f/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/pymilvus/client/grpc_handler.py__init__zGrpcHandler.__init__K   s     
zz)$$ $ 0d6H6HdTX6Y6YZZ''
))&)))""6::i#8#8999  """    callbackc                 r    | j                             |           | j                            |d           d S )NT)try_to_connect)r^   appendrT   	subscriber_   re   s     rb   register_state_change_callbackz*GrpcHandler.register_state_change_callback`   s9    h'''>>>>>rd   c                 \    | j         D ]}| j                            |           g | _         d S N)r^   rT   unsubscriberj   s     rb   !deregister_state_change_callbacksz-GrpcHandler.deregister_state_change_callbacksd   s7     	0 	0HM%%h////rd   c                     |dk    r+|dk    r%t          |          rt          |          r| d| S 	 t          j        |          }n)# t          $ r}t          d| d|           |d }~ww xY w|j        S )NrH   :zIllegal uri: [z], message)r*   r+   r   urlparse	Exceptionr   netloc)r_   rI   rJ   rK   
parsed_uries         rb   __get_addresszGrpcHandler.__get_addressi   s    2::$"**t)<)<*tATAT*##T###	J,,JJ 	J 	J 	J%Ac%A%Aa%A%ABBBI	J  s   A 
A.A))A.c                 F   |                     dd          }t          |t                    st          d          || _        |                     dd          | _        |                     dd          | _        |                     dd          | _        |                     d	d          | _        |                     d
d          | _	        d | _
        |                     |                     d          |                     d          |                     d                     d S )NsecureFzsecure must be bool typerr   client_pem_pathrH   client_key_pathca_pem_pathserver_pem_pathserver_namerP   passwordtoken)rU   
isinstanceboolr   _secure_client_pem_path_client_key_path_ca_pem_path_server_pem_path_server_name_authorization_interceptor _setup_authorization_interceptor)r_   r`   r{   s      rb   r[   zGrpcHandler._set_authorizations   s	   He,,&$'' 	A%?@@@@ &

+<b A A &

+<b A A"JJ}b99 &

+<b A A"JJ}b99*.'--JJvJJz""JJw	
 	
 	
 	
 	
rd   c                     | S rm   rR   r_   s    rb   	__enter__zGrpcHandler.__enter__   s    rd   r_   exc_typeexc_valexc_tbc                     d S rm   rR   )r_   r   r   r   s       rb   __exit__zGrpcHandler.__exit__   s    rd   
   timeoutc                 v   | j         t          t          j        d          	 t	          j        | j                                       |           |                     | j        |           d S # t          j	        $ r*}t          t          j        d| j
         d          |d }~wt          $ r}||d }~ww xY w)Nz6No channel in handler, please setup grpc channel first)coders   r   zFail connecting to server on z1, illegal connection params or server unavailable)rT   r   r>   CONNECT_FAILEDgrpcchannel_ready_futureresult_setup_identifier_interceptorrZ   FutureTimeoutErrorrW   ru   )r_   r   rx   s      rb   _wait_for_channel_readyz#GrpcHandler._wait_for_channel_ready   s    = !*P   
		%dm44;;G;LLL..tz7.KKKKK& 	 	 	!*xxxx     	 	 	N	s$   A	A/ /B8>%B##B80B33B8c                 `    |                                   | j                                         d S rm   )ro   rT   closer   s    rb   r   zGrpcHandler.close   s.    ..000rd   rQ   c                     |                      |           |                                  |                     | j                   d S rm   )r\   r]   r   rZ   r_   rQ   s     rb   reset_db_namezGrpcHandler.reset_db_name   sD    ""7+++  """**4:66666rd   rP   r   r   c                    g }g }|rRt          j        |                                           }|                    d           |                    |           nY|rW|rUt          j        | d|                                           }|                    d           |                    |           t	          |          dk    r/t	          |          dk    rt          j        ||          | _        d S d S d S )Nauthorizationrq   r   )base64	b64encodeencoderh   lenr   header_adder_interceptorr   )r_   rP   r   r   keysvaluesr   s          rb   r   z,GrpcHandler._setup_authorization_interceptor   s     	)",Z->->-@-@AAMKK(((MM-(((( 	)h 	)",-A-Ax-A-A-H-H-J-JKKMKK(((MM-(((t99q==S[[1__.9.RSWY_.`.`D+++ =__rd   c                 t    |	d | _         d S t          |           t          j        dg|g          | _         d S )NrQ   dbname)_db_interceptorr)   r   r   r   s     rb   r\   z!GrpcHandler._setup_db_interceptor   sG    ?#'D   W----#.#G
U\T]#^#^D   rd   c                    | j         2t          j        j        dft          j        j        dfddg}| j        s"t          j        | j        |          | _         n| j	        dk    r|
                    d| j	        f           d\  }}}| j        dk    rUt          | j                                      d	          5 }|                                }ddd           n# 1 swxY w Y   n| j        dk    r| j        dk    r| j        dk    rt          | j                                      d	          5 }|                                }ddd           n# 1 swxY w Y   t          | j                                      d	          5 }|                                }ddd           n# 1 swxY w Y   t          | j                                      d	          5 }|                                }ddd           n# 1 swxY w Y   t          j        |||
          }t          j        | j        ||          | _         | j         | _        | j        r$t          j        | j        | j                  | _        | j        r$t          j        | j        | j                  | _        | j        rBt3          j        dg| j        g          }t          j        | j        |          | _        d| _        | j        rBt3          j        dg| j        g          }t          j        | j        |          | _        d| _        t9          j        | j                  | _        dS )zCreate a ddl grpc channelN)zgrpc.enable_retriesr   )zgrpc.keepalive_time_msi  )optionsrH   zgrpc.ssl_target_name_overrideNNNrb)root_certificatesprivate_keycertificate_chain	log_levelclient_request_id)rT   r   ChannelArgKeymax_send_message_lengthmax_receive_message_lengthr   r   insecure_channelrW   r   rh   r   r   openreadr   r   r   ssl_channel_credentialssecure_channel_final_channelr   intercept_channelr   rX   r   r   rY   r   MilvusServiceStubrS   )	r_   opts	root_cert	private_k
cert_chainfcredslog_level_interceptorrequest_id_interceptors	            rb   r]   zGrpcHandler._setup_grpc_channel   s.   = %=rB%@"E*1	D < " $ 5M ! ! !
 $**KK!@$BS TUUU3C0	9j(B..d34499$?? -1$%FFHH	- - - - - - - - - - - - - - - )R//-33)R//d/0055d;; -q$%FFHH	- - - - - - - - - - - - - - -d34499$?? -1$%FFHH	- - - - - - - - - - - - - - -d34499$?? .1%&VVXX
. . . . . . . . . . . . . . . 4&/ )&0  
 !% 3M ! ! ! #m* 	"&"8#T%D# #D  	d"&"89LdNb"c"cD? 	#$/$H0% %! #'"89LNc"d"dD"DO 	$%0%I$%(8'9& &" #'"8#%;# #D  $D$6t7JKK


sH   9CC!C1EEEF%%F),F)G88G<?G<r   c                 <    || _         |                                  d S rm   )rX   r]   )r_   r   s     rb   set_onetime_loglevelz GrpcHandler.set_onetime_loglevel   s!    #  """""rd   req_idc                 <    || _         |                                  d S rm   )rY   r]   )r_   r   s     rb   set_onetime_request_idz"GrpcHandler.set_onetime_request_id  s"    !  """""rd   c                 F   t          j                    }|                     |||          | _        t	          j        dgt          | j                  g          | _        t          j	        | j
        | j                  | _
        t          j        | j
                  | _        d S )Nr   
identifier)socketgethostname_GrpcHandler__internal_register_identifierr   r   str_identifier_interceptorr   r   r   r   r   rS   )r_   rP   r   rJ   s       rb   r   z)GrpcHandler._setup_identifier_interceptor  s    !##33D$3PP'2'KNS!1223(
 (
$ #4!=
 
 %6t7JKK


rd   c                     | j         S )zServer network address)rW   r   s    rb   server_addresszGrpcHandler.server_address  s     }rd   c                 \    t          | j                            d          d                   S )Nrq   r   )rC   r   splitr   s    rb   rC   zGrpcHandler.get_server_type  s&    t288==a@AAArd   old_passwordnew_passwordc                     |                      ||||           |                     ||d           |                                  dS )zA
        reset password and then setup the grpc channel.
        r   N)update_passwordr   r]   )r_   rP   r   r   r   s        rb   reset_passwordzGrpcHandler.reset_password  sQ     	T<wOOO--dL$GGG  """""rd   collection_namefieldsc                    t          ||           t          j        ||fi |}| j        j                            ||          }|                    dd          r|S |                                }t          |           d S )Nr   r   r   _asyncF)	r)   r,   create_collection_requestrS   CreateCollectionfuturerU   r   rB   )r_   r   r   r   r`   requestrfstatuss           rb   create_collectionzGrpcHandler.create_collection)  s     	'JJJJ3OVVVvVVZ(///II::h&& 	IVtrd   c                     t          ||           t          j        |          }| j        j                            ||          }|                                }t          |           d S Nr   r   )r)   r,   drop_collection_requestrS   DropCollectionr   r   rB   )r_   r   r   r   r   r   s         rb   drop_collectionzGrpcHandler.drop_collection7  sc    'JJJJ1/BBZ&--gw-GGVrd   
propertiesc                     t          |||           t          j        ||          }| j        j                            ||          }|                                }t          |           d S )N)r   r   r   r   )r)   r,   alter_collection_requestrS   AlterCollectionr   r   rB   )r_   r   r   r   r`   r   r   r   s           rb   alter_collectionzGrpcHandler.alter_collection@  sj     	ZY`aaaa2?JOOZ'..w.HHVrd   c                    t          ||           t          j        |          }| j        j                            ||          }|                                }|j        j        t          j
        k    rd|j        j        v rdS |j        j        t          j        k    rdS t          |j                  rdS |j        j        t          j        k    rdS t#          |j        j        |j        j        |j        j                  )Nr   r   zcan't find collectionFT)r)   r,   describe_collection_requestrS   DescribeCollectionr   r   r   
error_coder   UnexpectedErrorreasonCollectionNotExistsrD   r   r   COLLECTION_NOT_FOUNDr   )r_   r   r   r`   r   r   replys          rb   has_collectionzGrpcHandler.has_collectionJ  s    'JJJJ5oFFZ*11'71KK		 L#z'AAA'5<+>>>5<"j&DDD5&& 	4<	 >>>5el/1DelF]^^^rd   c                 f   t          ||           t          j        |          }| j        j                            ||          }|                                }|j        }t          |          r"t          |          
                                S t          |j        |j        |j                  )Nr   r   )raw)r)   r,   r   rS   r   r   r   r   rD   r!   dictr   r   r  r   r_   r   r   r`   r   r   responser   s           rb   describe_collectionzGrpcHandler.describe_collectionc  s    'JJJJ5oFFZ*11'71KK99;;   	9#11166888)&+v}fFWXXXrd   c                     t          j                    }| j        j                            ||          }|                                }|j        }t          |           t          |j	                  S Nr   )
r,   show_collections_requestrS   ShowCollectionsr   r   r   rB   listcollection_names)r_   r   r   r   r
  r   s         rb   list_collectionszGrpcHandler.list_collectionsp  s`    244Z'..w.HH99;;VH-...rd   old_namenew_namenew_db_namec                     t          ||           t          |           |rt          |           t          j        |||          }| j        j                            ||          }|                                }t          |           d S )Nr   r   r   r   )r)   r,   rename_collections_requestrS   RenameCollectionr   r   rB   )r_   r  r  r  r   r   r   r
  s           rb   rename_collectionszGrpcHandler.rename_collectionsy  s     	7CCCC2222 	2[11114XxUUZ(///II99;;Xrd   partition_namec                     t          |||           t          j        ||          }| j        j                            ||          }|                                }t          |           d S N)r   r  r   r   )r)   r,   create_partition_requestrS   CreatePartitionr   r   rB   r_   r   r  r   r`   r   r   r
  s           rb   create_partitionzGrpcHandler.create_partition  su     	+NT[	
 	
 	
 	
 2?NSSZ'..w.HH99;;Xrd   c                     t          |||           t          j        ||          }| j        j                            ||          }|                                }t          |           d S r  )r)   r,   drop_partition_requestrS   DropPartitionr   r   rB   r   s           rb   drop_partitionzGrpcHandler.drop_partition  su     	+NT[	
 	
 	
 	
 0.QQZ%,,Wg,FF99;;Xrd   c                     t          |||           t          j        ||          }| j        j                            ||          }|                                }|j        }t          |           |j	        S r  )
r)   r,   has_partition_requestrS   HasPartitionr   r   r   rB   value)	r_   r   r  r   r`   r   r   r
  r   s	            rb   has_partitionzGrpcHandler.has_partition  s~     	+NT[	
 	
 	
 	
 /PPZ$++GW+EE99;;V~rd   c                     t          j        ||          }| j        j                            ||          }|                                }|j        }t          |           |j        }i }	|D ]}
|
j	        |	|
j
        <   |	S r  )r,   partition_stats_requestrS   DescribePartitionr   r   r   rB   
statisticsr)  key)r_   r   r  r   r   r   r
  r   r.  	info_dictkvs              rb   get_partition_infozGrpcHandler.get_partition_info  s     1/>RRZ)00'0JJ99;;V(
	 	) 	)B "Ibfrd   c                 
   t          ||           t          j        |          }| j        j                            ||          }|                                }|j        }t          |           t          |j
                  S r   )r)   r,   show_partitions_requestrS   ShowPartitionsr   r   r   rB   r  partition_namesr	  s           rb   list_partitionszGrpcHandler.list_partitions  su    'JJJJ1/BBZ&--gw-GG99;;VH,---rd   c                     t          ||           t          j        ||          }| j        j                            ||          }|                                }|j        }t          |           |j	        S r   )
r)   r,   get_partition_stats_requestrS   GetPartitionStatisticsr   r   r   rB   stats)	r_   r   r  r   r`   reqr   r
  r   s	            rb   get_partition_statszGrpcHandler.get_partition_stats  sp     	'JJJJ1/>RR299#w9OO==??V~rd   c                     |                     d          }|s|                     ||          }|                     d          }|                     dd          }||fS )Nschemar   r   enable_dynamic_fieldF)rU   r  )r_   r   r   r`   r?  fields_infoenable_dynamics          rb   	_get_infozGrpcHandler._get_info  sd    H%% 	P--ow-OOFjj**$:EBBN**rd   entitiesr?  c                      | j         ||||fi |}| j                            ||          }t          |j                   t          j        ||j                   t          |          S )N)r   r   )	_prepare_row_insert_requestrS   InsertrB   r   r   update_collection_ts	timestampr"   )	r_   r   rD  r  r?  r   r`   r   resps	            rb   insert_rowszGrpcHandler.insert_rows  s}     3$2X~w
 
BH
 
 z  ' BBT[!!!%ot~FFFd###rd   entity_rowsc                    t          |t                    r|g}t          |t                    s|                     ||          }|                    d          }|                    dd          }t	          j        |||||          S )Nr   r   r@  FrB  )r   r  r  rU   r,   row_insert_param)	r_   r   rL  r  r?  r   r`   rA  rB  s	            rb   rF  z'GrpcHandler._prepare_row_insert_request  s     k4(( 	(&-K&$'' 	P--ow-OOFjj**$:EBB')
 
 
 	
rd   c                 b   |                     d          }|r*t          |t          j                  st	          d          t          |t
                    st	          d          |                     d          }|s | j        |fd|i|}|d         }|r|nt          j        ||||          S )Ninsert_paramz*The value of key 'insert_param' is invalidrr   -None entities, please provide valid entities.r?  r   r   )	rU   r   milvus_typesInsertRequestr   r  r  r,   batch_insert_param	r_   r   rD  r  r   r`   paramr?  rA  s	            rb   _prepare_batch_insert_requestz)GrpcHandler._prepare_batch_insert_request       

>** 	SE<+EFF 	S%QRRRR(D)) 	V%TUUUUH%% 	Z-T-oYYwYRXYYFX& dEE+OX~Wbcc	
rd   c                    t          |          st          d          	  | j        ||||fi |}| j        j                            ||          }|                    dd          rN|                    d          }t          ||fd|i|}	|	                    t          j
        |                     |	S |                                }
t          |
j                   t          |
          }t          j        ||j                   |S # t"          $ r4}|                    dd          rt          d d |          cY d }~S ||d }~ww xY w)N!Invalid binary vector data existsrr   r   r   F	_callbackr   )rA   r   rX  rS   rG  r   rU   r'   add_callbackr   update_ts_on_mutationr   rB   r   r"   rH  rI  ru   r_   r   rD  r  r   r`   r   r   cbr   r
  merrs                rb   batch_insertzGrpcHandler.batch_insert(  s    +844 	J%HIIII	8d8>7 FL G "))'7)CCBzz(E** ZZ,,"2rEE7EfEEx=oNNOOOyy{{H)))x((A)/1;GGG H  	 	 	zz(E** 7%dD#666666663	s+   BD
 7AD
 

E&E:E EE
expressionc                    t          ||           	 t          j        |||f|                    dd          |                    dd           d|}| j        j                            ||          }|                    dd          rN|                    d	          }t          ||fd
|i|}	|		                    t          j        |                     |	S |                                }
t          |
j                   t          |
          }t          j        ||j                   |S # t$          $ r4}|                    dd          rt          d d |          cY d }~S ||d }~ww xY w)Nr   consistency_levelr   
param_name)rf  rg  r   r   Fr\  r   )r)   r,   delete_requestrU   poprS   Deleter   r'   r]  r   r^  r   rB   r   r"   rH  rI  ru   )r_   r   rd  r  r   r`   r<  r   r`  r   r
  ra  rb  s                rb   deletezGrpcHandler.deleteJ  s    	'JJJJ	( #)**-@!"D"D!::lD99   C Z&--c7-CCFzz(E** ZZ,,"62IIwI&IIx=oNNOOO}}H)))x((A)/1;GGG H  	 	 	zz(E** 7%dD#666666663	s+   CD* AD* *
E(4&E#E( E##E(c                 b   |                     d          }|r*t          |t          j                  st	          d          t          |t
                    st	          d          |                     d          }|s | j        |fd|i|}|d         }|r|nt          j        ||||          S )Nupsert_paramz*The value of key 'upsert_param' is invalidrr   rR  r?  r   r   )	rU   r   rS  UpsertRequestr   r  r  r,   batch_upsert_paramrV  s	            rb   _prepare_batch_upsert_requestz)GrpcHandler._prepare_batch_upsert_requestp  rY  rd   c                    t          |          st          d          	  | j        ||||fi |}| j        j                            ||          }|                    dd          du rN|                    d          }t          ||fd|i|}	|	                    t          j
        |                     |	S |                                }
t          |
j                   t          |
          }t          j        ||j                   |S # t"          $ r4}|                    dd          rt          d d |          cY d }~S ||d }~ww xY w)	Nr[  rr   r   r   FTr\  r   )rA   r   rp  rS   Upsertr   rU   r'   r]  r   r^  r   rB   r   r"   rH  rI  ru   r_  s                rb   upsertzGrpcHandler.upsert  s    +844 	J%HIIII	8d8>7 FL G "))'7)CCBzz(E**d22ZZ,,"2rEE7EfEEx=oNNOOOyy{{H)))x((A)/1;GGG H  	 	 	zz(E** 7%dD#666666663	s+   BD 9AD 
E
&E<E
EE
rowsc                     t          |t                    st          d           | j        ||fi |\  }}t	          j        |||||          S )Nz)None rows, please provide valid row data.rr   rN  )r   r  r   rC  r,   row_upsert_param)r_   r   rt  r  r   r`   rA  rB  s           rb   _prepare_row_upsert_requestz'GrpcHandler._prepare_row_upsert_request  ss     $%% 	R%PQQQQ&4dn_g&X&XQW&X&X#^')
 
 
 	
rd   c                 <   t          |t                    r|g} | j        ||||fi |}| j        j                            ||          }|                                }t          |j                   t          |          }	t          j        ||	j                   |	S r  )r   r  rw  rS   rr  r   r   rB   r   r"   r   rH  rI  )
r_   r   rD  r  r   r`   r   r   r
  ra  s
             rb   upsert_rowszGrpcHandler.upsert_rows  s     h%% 	" zH2$2X~w
 
BH
 
 Z%%gw%??99;;X_%%%8$$%oq{CCCrd   r   c                    	 |                     dd          rF| j        j                            ||          }|                     d          }t	          ||          S | j                            ||          }t          |j                   |                     dd          }t          |j        ||j                  S # t          $ r4}|                     dd          rt	          d d |          cY d }~S ||d }~ww xY wNr   Fr   r\  round_decimalr   )r   )
rU   rS   Searchr   r(   rB   r   r#   resultsru   	r_   r   r   r`   r   funcr
  r|  rx   s	            rb   _execute_searchzGrpcHandler._execute_search  s   	zz(E** 2*11'71KKzz+..#FD111z(('(BBH)))"JJ;;M 0-XXXX 	 	 	zz(E** 3#D$22222222N	+   AC  A!C   
C>
&C90C>6C99C>c                    	 |                     dd          rF| j        j                            ||          }|                     d          }t	          ||          S | j                            ||          }t          |j                   |                     dd          }t          |j        ||j                  S # t          $ r4}|                     dd          rt	          d d |          cY d }~S ||d }~ww xY wr{  )
rU   rS   HybridSearchr   r(   rB   r   r#   r~  ru   r  s	            rb   _execute_hybrid_searchz"GrpcHandler._execute_hybrid_search  s   	zz(E** 20777QQzz+..#FD111z..w.HHH)))"JJ;;M 0-XXXX 	 	 	zz(E** 3#D$22222222N	r  T)retry_on_inconsistent_requeryr   data
anns_fieldrW  limitr6  output_fieldsr|  c                     t          ||	|||||                    d          |
           t          j        |||||||||	f	i |} | j        ||
fd|	i|S )Nguarantee_timestamp)r  r|  r  search_datapartition_name_arrayr  r  r   r|  )r)   rU   r,   search_requests_with_exprr  )r_   r   r  r  rW  r  rd  r6  r  r|  r   r`   r   s                rb   searchzGrpcHandler.search  s     	'!!0' &

+@ A A		
 		
 		
 		
 3
 
 
 
 $t#GW\\M\U[\\\rd   reqsrerankc	           	      f   t          |||||	                    d          |           g }
|D ]J}t          j        ||j        |j        |j        |j        |j        f||d|	}|
	                    |           Kt          j
        ||
|                                ||||fi |	} | j        ||fd|i|	S )Nr  )r  r|  r  r  r  r   )r6  r|  r|  )r)   rU   r,   r  r  r  rW  r  exprrh   !hybrid_search_request_with_rankerr  r  )r_   r   r  r  r  r6  r  r|  r   r`   requestsr<  search_requesthybrid_search_requests                 rb   hybrid_searchzGrpcHandler.hybrid_search#  s#    	'!0' &

+@ A A	
 	
 	
 	
  	, 	,C$>		
 !0+
 
 
 
N OON++++ ' IKKMM	!
 	!
 	!
 	!
 +t*!7
 
:G
KQ
 
 	
rd      c                     t          j        |          }| j        j                            ||          }|                                }|j        }t          |           |j        S r  )	r,   get_query_segment_info_requestrS   GetQuerySegmentInfor   r   r   rB   infos)r_   r   r   r`   r<  r   r
  r   s           rb   get_query_segment_infoz"GrpcHandler.get_query_segment_infoV  sY    4_EE/66sG6LL==??V~rd   aliasc                     t          ||           t          j        ||          }| j        j                            ||          }|                                }t          |           d S r   )r)   r,   create_alias_requestrS   CreateAliasr   r   rB   r_   r   r  r   r`   r   r   r
  s           rb   create_aliaszGrpcHandler.create_alias_  sg     	'JJJJ.FFZ#**7G*DD99;;Xrd   c                     t          j        |          }| j        j                            ||          }|                                }t          |           d S r  )r,   drop_alias_requestrS   	DropAliasr   r   rB   )r_   r  r   r`   r   r   r
  s          rb   
drop_aliaszGrpcHandler.drop_aliasi  sP    ,U33Z!(('(BB99;;Xrd   c                     t          ||           t          j        ||          }| j        j                            ||          }|                                }t          |           d S r   )r)   r,   alter_alias_requestrS   
AlterAliasr   r   rB   r  s           rb   alter_aliaszGrpcHandler.alter_aliasp  sg     	'JJJJ-ouEEZ"))'7)CC99;;Xrd   c                 .   t          ||           t          j        |          }| j        j                            ||          }|                                }t          |j                   d|i}|j	        r
|j	        |d<   |j
        r
|j
        |d<   |S )N)r  r   r   r  r   rQ   )r)   r,   describe_alias_requestrS   DescribeAliasr   r   rB   r   
collectionrQ   )r_   r  r   r`   r   r   r
  rets           rb   describe_aliaszGrpcHandler.describe_aliasz  s    ug6666077Z%,,Wg,FF99;;X_%%%U
  	9%-%8C!" 	.%-C	N
rd   c                    t          |           |rt          |           t          j        ||                    dd                    }| j        j                            ||          }|                                }t          |j	                   dg i}|j
        r
|j
        |d<   |j        r
|j        |d<   |d                             |j                   |S )Nr   r  rQ   rH   aliasesr   )r)   r,   list_aliases_requestrU   rS   ListAliasesr   r   rB   r   r   rQ   extendr  )r_   r   r   r`   r   r   r
  r  s           rb   list_aliaseszGrpcHandler.list_aliases  s    )))) 	>_====.

9VX@Y@YZZZ#**7G*DD99;;X_%%%r
 # 	>%-%=C!" 	.%-C	NIh.///
rd   
field_nameparamsc                                          dt          j                  t          j                  }  j        fdi|}d}|d         D ]T}	|	d         k    rd}|	d         t          j        t          j        t          j	        t          j
        t          j        hvr nU|st          d 	                              d
d          }
dd
<   t          j        |          } j        j                            |          }|
r\ fd}t'          |          }|                    |                               d          }|r|                    |           |S |                                }t-          |                               dd          r.                               \  }}|st          |	          t1          |j        |j                  S )N
index_namer   Fr   nameTtypez*cannot create index on non-existed field: rr   r   )r  r   c                                           dd          r.                              \  } }| st          |          d S d S )NsyncTr   r  r   r  rr   )rU   wait_for_creating_indexr   )index_successfail_reasonr   r  r  r`   r_   r   s     rb   _checkz(GrpcHandler.create_index.<locals>._check  sz    ::fd++ C151M1M(7#- '#-	 2N 2 2.M; ) C-kBBBBC CC Crd   r\  r  r  )ri  r   	IndexNamecopydeepcopyr  r1   FLOAT_VECTORBINARY_VECTORFLOAT16_VECTORBFLOAT16_VECTORSPARSE_FLOAT_VECTORr   rU   r,   create_index_requestrS   CreateIndexr   r$   r]  r   rB   r  r>   r   r  )r_   r   r  r  r   r`   copy_kwargscollection_descvalid_fieldr   r   index_paramr   r  index_futureuser_cbr   r  r  r  s   ``` ``             @rb   create_indexzGrpcHandler.create_index  si    ZZf.>??
mF++2$2?ccGcWbcc%h/ 	 	FVF^++Kf~%&'(,&     	e!*cWa*c*cdddd He,, x2ZJ
 
 
 '..{G.LL 	 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C -V44L%%f---jj--G 3))'222V::fd## 	;)-)E)E /%%	 *F * *&M; ! ;%k::::fk6=111rd   r  extra_paramsc                    t          |||           |t          d          t          j        |||          }| j        j                            ||          }|                                }t          |           d S )N)r   r  r   zextra_params should not be Nonerr   r   )	r)   r   r,   alter_index_requestrS   
AlterIndexr   r   rB   )	r_   r   r  r  r   r`   r   r   r
  s	            rb   alter_indexzGrpcHandler.alter_index  s     	ZY`aaaa%FGGGG-oz<XXZ"))'7)CC99;;Xrd   c                    t          ||           t          j        |d          }| j        j                            ||          }|                                }|j        }t          |          r|j	        S |j
        t          j        k    s|j        t          j        k    rg S t!          |j
        |j        |j                  Nr   rH   r   )r)   r,   describe_index_requestrS   DescribeIndexr   r   r   rD   index_descriptionsr   r   INDEX_NOT_FOUNDr   r>   INDEX_NOT_EXISTr   r  r	  s           rb   list_indexeszGrpcHandler.list_indexes  s    'JJJJ0"EEZ%,,Wg,FF99;;   	/..;)333v7HFLb7b7bIfk6=&:KLLLrd   rI  c                 z   t          ||           t          j        |||          }| j        j                            ||          }|                                }|j        }	|	j        t          j
        k    s|	j        t          j        k    rd S t          |	           t          |j                  dk    rd |j        d         j        D             }
|j        d         j        |
d<   |j        d         j        |
d<   |
                    d	          rt+          j        |
d	                   |
d	<   |j        d         j        |
d
<   |j        d         j        |
d<   |j        d         j        |
d<   t4          j                            |j        d         j                  |
d<   |
S t=          t>          j                  )Nr   )rI  r   r   c                 (    i | ]}|j         |j        S rR   )r/  r)  ).0r1  s     rb   
<dictcomp>z.GrpcHandler.describe_index.<locals>.<dictcomp>  s    ZZZbZZZrd   r   r  r  r  
total_rowsindexed_rowspending_index_rowsstaterr   ) r)   r,   r  rS   r  r   r   r   r   r   r  r   r>   r  rB   r   r  r  r  r  rU   jsonloadsr  r  r  r   r5   Namer  r   r   )r_   r   r  r   rI  r`   r   r   r
  r   r0  s              rb   describe_indexzGrpcHandler.describe_index
  s    	'JJJJ0*XabbbZ%,,Wg,FF99;;;)333v7HFLb7b7b4Vx*++q00ZZH4OPQ4R4YZZZI&.&A!&D&OIl#&.&A!&D&OIl#}}X&& F&*j81D&E&E	(#&.&A!&D&OIl#(0(CA(F(SIn%.6.I!.L._I*+!+!6!;!;H<WXY<Z<`!a!aIg ):)MNNNNrd   c                    t          j        ||          }| j        j                            ||          }|                                }|j        }t          |           t          |j	                  dk    rE|j	        d         }|j
        |j        |j        t          j                            |j                  dS t#          t$          j                  )Nr   r   r   )r  r  r  r  rr   )r,   r  rS   r  r   r   r   rB   r   r  r  r  r  r   r5   r  r  r   r   )	r_   r   r  r   r   r   r
  r   
index_descs	            rb   get_index_build_progressz$GrpcHandler.get_index_build_progress*  s     0*MMZ%,,Wg,FF99;;Vx*++q00!4Q7J(3 * 7&0&C#.33J4DEE	   !):)MNNNNrd   c                    t          j        |||          }| j        j                            ||          }|                                }|j        }	t          |	           t          |j	                  dk    r|j	        d         }
|
j
        |
j        fS |                    dd          }|dk    r%|j	        D ]}
|
j        |k    r|
j
        |
j        fc S t          t          j                  )Nr   r   r   r  rH   rr   )r,   r  rS   r  r   r   r   rB   r   r  r  index_state_fail_reasonri  r  r   r   )r_   r   r  r   rI  r`   r   r   r
  r   r  r  s               rb   get_index_statezGrpcHandler.get_index_state=  s     0*iXXZ%,,Wg,FF99;;Vx*++q00!4Q7J#Z%GGGZZb11
&9 P P
(J66%+Z-OOOOO 7 !):)MNNNNrd   c                    |                                  }t          j                    }	 t          j        d            | j        ||f||d|\  }}|t          j        k    rd|fS |t          j        k    rd|fS t          j                    }	t          |t                    r%|	|z
  |k    rd| d| d| d}
t          |
	          )
NT      ?)r   rI  Fzcollection z create index z timeout in srr   )
alloc_timestamptimesleepr  r5   FinishedFailedr   intr   )r_   r   r  r   r`   rI  startr  r  endmsgs              rb   r  z#GrpcHandler.wait_for_creating_indexX  s    ((**			3JsOOO!5!5"5<	" "U[" "E; 
+++[((
)))k)))++C'3'' 3C%K',A,A-/ - - - -")- - -  &c2222	3rd   r   replica_numberc           	         t          |||           |                    d|                    dd                    }|                    d|                    d                    }|                    d|                    d                    }|                    d	|                    d
d                    }t          j        d||||||          }	| j        j                            |	|          }
|
                                }t          |           |                    dd          }|s| 	                    |||           d S d S )N)r   r  r   refresh_refreshFresource_groups_resource_groupsload_fields_load_fieldsskip_load_dynamic_field_skip_load_dynamic_fieldrH   r   r   
is_refresh)
r)   rU   r,   load_collectionrS   LoadCollectionr   r   rB   wait_for_loading_collection)r_   r   r  r   r`   r  r  r	  r  r   r   r
  r   s                rb   r  zGrpcHandler.load_collectiono  s[    	+NT[	
 	
 	
 	
 **Y

:u(E(EFF **%6

CU8V8VWWjj

>0J0JKK"(**%vzz2Le'T'T#
 #
 )#
 
 Z&--gw-GG99;;XHe,, 	[,,_gRY,ZZZZZ	[ 	[rd   c                 @    |                      ||          }d|ddiS )z%Return loading progress of collectionr   loading_progress.0f%get_loading_progress)r_   r   r   progresss       rb   load_collection_progressz$GrpcHandler.load_collection_progress  s7     ,,_g,NN8 2 2 2 2
 	
rd   Fr  c                 h   t          j                     dt          dt          ffd} |t          j                               rZ|                     ||          }|dk    rd S t          j        t
          j                    |t          j                               Zt          d|           )NtrM   c                     dn| z   k    S NTrR   r  r   r   s    rb   can_loopz9GrpcHandler.wait_for_loading_collection.<locals>.can_loop      "?44ego0FFrd   r   r  d   z1wait for loading collection timeout, collection: rr   r  r  r   r  r  r   WaitTimeDurationWhenLoadr   )r_   r   r   r  r  r  r   s     `   @rb   r  z'GrpcHandler.wait_for_loading_collection  s     		G 	G 	G 	G 	G 	G 	G 	G 	G hty{{## 	800Z 1  H 3Jv6777 hty{{## 	8 YYY
 
 
 	
rd   c                     t          ||           t          j        d|          }| j        j                            ||          }|                                }t          |           d S r  )r)   r,   release_collectionrS   ReleaseCollectionr   r   rB   )r_   r   r   r`   r   r   r
  s          rb   r&  zGrpcHandler.release_collection  se    'JJJJ,RAAZ)00'0JJ99;;Xrd   c           
          t          ||                               d                    dd                                        d                    d                    }                    d                    d                    }                    d	                    d
d                    }t          j        d||||          }	 j        j                            |	|          }
                    dd          r[ fd}t          |
          }|                    |                               d          }|r|                    |           |S |
	                                }t          |                               dd          }|r                                d S d S )N)r   r  r  r   r  r  Fr  r  r	  r
  r  r  rH   r   r   c                  h                         dd          r                                d S d S )Nr  Tr  )rU   wait_for_loading_partitions)r   r`   r6  r  r_   s   rb   r  z+GrpcHandler.load_partitions.<locals>._check  sQ    ::fd++ 44'W 5      rd   r\  r  Tr  )r)   rU   r,   load_partitionsrS   LoadPartitionsr   r&   r]  r   rB   r*  )r_   r   r6  r  r   r`   r  r	  r  r   r   r  load_partitions_futurer  r
  r  r  s   ```  `          @rb   r+  zGrpcHandler.load_partitions  s    	+!0)		
 	
 	
 	
 **Y

:u(E(EFF **%6

CU8V8VWWjj

>0J0JKK"(**%vzz2Le'T'T#
 #
 )#	
 	
 *11'71KK::h&& 	*         &:&%A%A""//777jj--G =&33G<<<))==??Xzz&$'' 	,,_oZa,bbb4trd   c                 p   t          j                     dt          dt          ffd} |t          j                               r[|                     |||          }|dk    rd S t          j        t
          j                    |t          j                               [t          d| d|           )	Nr  rM   c                     dn| z   k    S r  rR   r  s    rb   r  z9GrpcHandler.wait_for_loading_partitions.<locals>.can_loop   r   rd   r!  r"  z0wait for loading partition timeout, collection: z, partitions: rr   r#  )r_   r   r6  r   r  r  r  r   s      `   @rb   r*  z'GrpcHandler.wait_for_loading_partitions  s     		G 	G 	G 	G 	G 	G 	G 	G 	G hty{{## 	800'j 1  H 3Jv6777 hty{{## 	8 wwwfuww
 
 
 	
rd   c                     t          j        ||          }| j        j                            ||                                          }t          |j                   |r|j        S |j	        S r  )
r,   r  rS   GetLoadingProgressr   r   rB   r   refresh_progressr  )r_   r   r6  r   r  r   r
  s          rb   r  z GrpcHandler.get_loading_progress  si     .PP:0777QQXXZZX_%%% 	-,,  rd   c                     t          j        |fi |}| j                            ||          }t	          |           d S r  )r,   create_database_reqrS   CreateDatabaserB   )r_   rQ   r   r`   r   r   s         rb   create_databasezGrpcHandler.create_database  sH    -g@@@@**7G*DDVrd   c                     t          j        |          }| j                            ||          }t	          |           d S r  )r,   drop_database_reqrS   DropDatabaserB   )r_   rQ   r   r   r   s        rb   drop_databasezGrpcHandler.drop_database#  s@    +G44(('(BBVrd   c                     t          j                    }| j                            ||          }t	          |j                   t          |j                  S r  )r,   list_database_reqrS   ListDatabasesrB   r   r  db_namesr_   r   r   r
  s       rb   list_databasezGrpcHandler.list_database)  sK    +--:++GW+EEX_%%%H%&&&rd   c                     t          j        ||          }| j                            ||          }t	          |           d S r  )r,   alter_database_reqrS   AlterDatabaserB   )r_   rQ   r   r   r`   r   r   s          rb   alter_databasezGrpcHandler.alter_database0  sD     ,WjAA))'7)CCVrd   c                     t          j        |          }| j                            ||          }t	          |j                   t          |          S )Nr   r   )r,   describe_database_reqrS   DescribeDatabaserB   r   r0   )r_   rQ   r   r   rJ  s        rb   describe_databasezGrpcHandler.describe_database8  sM    /@@@z**7G*DDT[!!!D!!!rd   c                     t          j        ||          }| j        j                            ||                                          }t          |j                   t          |j	                  S r  )
r,   get_load_staterS   GetLoadStater   r   rB   r   r6   r  )r_   r   r6  r   r   r
  s         rb   rJ  zGrpcHandler.get_load_state?  s_     (/JJ:*11'71KKRRTTX_%%%(((rd   c                 @    |                      |||          }d|ddiS )z%Return loading progress of partitionsr  r  r  r  )r_   r   r6  r   r  s        rb   load_partitions_progressz$GrpcHandler.load_partitions_progressK  s6    
 ,,_owWW8 2 2 2 2
 	
rd   c                     t          |||           t          j        d||          }| j        j                            ||          }|                                }t          |           d S )N)r   r  r   rH   r   )r)   r,   release_partitionsrS   ReleasePartitionsr   r   rB   )r_   r   r6  r   r`   r   r   r
  s           rb   rO  zGrpcHandler.release_partitionsU  sw     	+/[b	
 	
 	
 	
 ,R/RRZ)00'0JJ99;;Xrd   c                     t          ||           t          j        |          }| j        j                            ||          }|                                }|j        }t          |           |j	        S r   )
r)   r,   get_collection_stats_requestrS   GetCollectionStatisticsr   r   r   rB   r;  )r_   r   r   r`   r  r   r
  r   s           rb   get_collection_statsz GrpcHandler.get_collection_statse  sm    'JJJJ:?KK3::;PW:XX==??V~rd   segment_idsflush_tsc                     t          j        |||          }| j        j                            ||          }|                                }|j        }	t          |	           |j        S r  )	r,   get_flush_state_requestrS   GetFlushStater   r   r   rB   flushed)
r_   rU  r   rV  r   r`   r<  r   r
  r   s
             rb   get_flush_statezGrpcHandler.get_flush_stateo  s`     -k?HUU)00g0FF==??Vrd   c                     t          j        |          }| j        j                            ||          }|                                }t          |j                   |j        S r  )	r,   #get_persistent_segment_info_requestrS   GetPersistentSegmentInfor   r   rB   r   r  )r_   r   r   r`   r<  r   r
  s          rb   get_persistent_segment_infosz(GrpcHandler.get_persistent_segment_infos  sV     9/JJ4;;C;QQ==??X_%%%~rd   c                     d}t          j                     }|s_ | j        ||||fi |}t          j                     }|||z
  |k    rt          d| d|           |st          j        d           |]d S d S )NFz$wait for flush timeout, collection: z, flusht_ts: rr   r  )r  r[  r   r  )	r_   rU  r   rV  r   r`   	flush_retr   r  s	            rb   _wait_for_flushedzGrpcHandler._wait_for_flushed  s     		 	 ,,_h CI I )++C"sU{W'<'<%k?kkaikk      
3  	  	  	  	  	 rd   r  c                 \   
 d g fv st          t                    st          d          t                     D ]}t          |           t	          j                  } j        j                            |          

	                                }t          |j                   
 fd}|                    dd          rRt          
          }|                    |           |                    d          }	|	r|                    |	           |S  |             d S )	Nz-Collection name list can not be None or emptyrr   r   r  c                      D ]^}                                  j        |          j        }                                 j        |          }                    || |           _d S r  )r   coll_segIDsr  coll_flush_tsrb  )r   rU  rV  r  r   r_   r   s      rb   r  z!GrpcHandler.flush.<locals>._check  sn    #3 ` `$mmoo9/JO!==??8I&&{OXW^&____` `rd   r   Fr\  )r   r  r   r)   r,   flush_paramrS   Flushr   r   rB   r   rU   r%   r]  )r_   r  r   r`   r  r   r
  r  flush_futurer  r   s   ```       @rb   flushzGrpcHandler.flush  sb   bz))<Ld1S1S)%TUUUU))))$ 	3 	3DT22222%&677!(('(BB==??X_%%%	` 	` 	` 	` 	` 	` 	` 	` ::h&& 	 &v..L%%f---jj--G 3))'222trd   c                     t          ||           t          j        |||          }| j        j                            ||          }|                                }t          |           d S r   )r)   r,   drop_index_requestrS   	DropIndexr   r   rB   )	r_   r   r  r  r   r`   r   r   r
  s	            rb   
drop_indexzGrpcHandler.drop_index  si     	'JJJJ,_j*UU%,,Wg,FF==??Xrd   request_typec                     t          j        |          }| j        j                            ||          }|                                S r  )r,   dummy_requestrS   Dummyr   r   )r_   ro  r   r`   r   r   s         rb   dummyzGrpcHandler.dummy  s=    '55!(('(BB}}rd   c                     t          j                    }| j        j                            ||          }|                                j        S r  )r,   register_link_requestrS   RegisterLinkr   r   r   )r_   r   r   r   s       rb   fake_register_linkzGrpcHandler.fake_register_link  s>    /11(///II}}%%rd   idsc                     t          j        ||||          }| j        j                            ||          }|                                S r  )r,   retrieve_requestrS   Retriever   r   )r_   r   rx  r  r6  r   r   r   s           rb   rU   zGrpcHandler.get  sF     *?CP_``$++GW+EE}}rd   r  c                 b   |&t          |t          f          st          d          t          j        ||||fi |}| j        j                            ||          }|                                }	t          j
        |	j        j        |	j        j        hv rg S t          |	j                   t          |	j                  }
|
dk    rt#          d          t%          |	j                  }t'          t)          |                    t+          fd|D                       st#          d          t-          j        |	          \  }}g }t1                    D ]2}t-          j        |	j        ||          }|                    |           3t7          |t9          |	j                            S )	Nz4Invalid query format. 'output_fields' must be a listrr   r   r   zNo fields returnedc              3   >   K   | ]}t          |          k    V  d S rm   )rE   )r  
field_datanum_entitiess     rb   	<genexpr>z$GrpcHandler.query.<locals>.<genexpr>  s0      KK*6*%%5KKKKKKrd   z)The length of fields data is inconsistent)extra)r   r  r   r,   query_requestrS   Queryr   r   r>   EMPTY_COLLECTIONr   r   r   rB   r   fields_datar   iterrE   nextallr   !extract_dynamic_field_from_resultrange!extract_row_data_from_fields_datarh   r2   r@   )r_   r   r  r  r6  r   r`   r   r   r
  
num_fieldsit_dynamic_fieldsr~  indexentity_row_datar  s                    @rb   queryzGrpcHandler.query  s    $Zw-O-O$%[\\\\'T=/
 
EK
 
 !(('(BB==??"x';X_=W&XXXIX_%%%-..
??!*>???? (&''d2hh''KKKKKKKKK 	W!*UVVVV)KHUU><(( 	, 	,E+M$e^ O NN?++++x(G(GHHHHrd   src_node_iddst_node_idssealed_segment_idsc                     t          j        ||||          }| j        j                            ||          }|                                }	t          |	           d S r  )r,   load_balance_requestrS   LoadBalancer   r   rB   )
r_   r   r  r  r  r   r`   r<  r   r   s
             rb   load_balancezGrpcHandler.load_balance  s`     *[,8J
 
 '..sG.DDVrd   is_clusteringc                    t          j        |          }| j        j                            ||          }|                                }t          |j                   t          j        |j	        |          }| j        j
                            ||          }	|	                                }t          |j                   |j        S r  )r,   r   rS   r   r   r   rB   r   manual_compactioncollectionIDManualCompactioncompactionID)
r_   r   r  r   r`   r   r   r
  r<  r   s
             rb   compactzGrpcHandler.compact)  s     5oFFZ*11'71KK99;;X_%%%'(=}MM,33C3II==??X_%%%$$rd   compaction_idc                 .   t          j        |          }| j        j                            ||          }|                                }t          |j                   t          |t          j
        |j                  |j        |j        |j                  S r  )r,   get_compaction_staterS   GetCompactionStater   r   rB   r   r/   r=   newr  executingPlanNotimeoutPlanNocompletedPlanNo)r_   r  r   r`   r<  r   r
  s          rb   r  z GrpcHandler.get_compaction_state=  s     *=99.55c75KK==??X_%%%Ihn%%$"$
 
 	
rd   c                 &   t          j                     }	 t          j        d            | j        ||fi |}|j        t          j        k    rdS |t          j        k    rdS t          j                     }|||z
  |k    rt          d|           ~)NTr  Fz-get compaction state timeout, compaction id: rr   )r  r  r  r  r=   	CompletedUndefiedStater   )r_   r  r   r`   r   compaction_stater  s          rb   wait_for_compaction_completedz)GrpcHandler.wait_for_compaction_completedO  s     		JsOOO8t8ZZSYZZ%88t5#666u)++C"sU{W'<'<%[M[[   	rd   c                    t          j        |          }| j        j                            ||          }|                                }t          |j                   t          ||j	                  }d |j
        D             |_        |S )Nr   c                 B    g | ]}t          |j        |j                  S rR   )r7   sourcestarget)r  ra  s     rb   
<listcomp>z4GrpcHandler.get_compaction_plans.<locals>.<listcomp>m  s&    KKK!DAH--KKKrd   )r,   get_compaction_state_with_plansrS   GetCompactionStateWithPlansr   r   rB   r   r.   r  
mergeInfosplans)r_   r  r   r`   r<  r   r
  cps           rb   get_compaction_plansz GrpcHandler.get_compaction_plansa  s|     5mDD7>>sG>TT==??X_%%%]HN;;KKx7JKKK	rd   c           
          | j         ||fi |d         }t          j        |          }| j        j                            ||          }|                                }t          |j                   g }|j	        D ]M}	d |	j
        D             }
|                    t          |	j        |
|	j        |	j        |	j                             Nt#          |          S )Ncollection_idr   c                 N    g | ]"}t          |j        |j        |j                  #S rR   )r<   dm_channel_namenode_idsleaderID)r  r  s     rb   r  z,GrpcHandler.get_replicas.<locals>.<listcomp>  s8       EFa'QZ@@  rd   )r  r,   get_replicasrS   GetReplicasr   r   rB   r   replicasshard_replicasrh   r4   	replicaIDr  resource_group_namenum_outbound_noder8   )r_   r   r   r`   r  r<  r   r
  groupsreplicashardss              rb   r  zGrpcHandler.get_replicasq  s     10'TTVTT
 "=11'..sG.DD==??X_%%%( 	 	G JQJ`  F MM%$/-     vrd   filesc                 P   t          j        |||fi |}| j        j                            ||          }|                                }t          |j                   t          |j	                  dk    r%t          t          j        dt          j                  |j	        d         S )Nr   r   zno task id returned from server)r,   do_bulk_insertrS   Importr   r   rB   r   r   tasksr   r   UNEXPECTED_ERRORr   r   )	r_   r   r  r  r   r`   r<  r   r
  s	            rb   r  zGrpcHandler.do_bulk_insert  s     $_neVVvVV"))#w)??==??X_%%%x~!##!*1*  
 ~a  rd   task_idc                    t          j        |          }| j        j                            ||          }|                                }t          |j                   t          ||j	        |j
        |j        |j        |j                  S r  )r,   get_bulk_insert_staterS   GetImportStater   r   rB   r   r-   r  	row_countid_listr  	create_ts)r_   r  r   r`   r<  r   rJ  s          rb   r  z!GrpcHandler.get_bulk_insert_state  sw     +G44*11#w1GG}}T[!!!TZtz4>
 
 	
rd   c                     t          j        ||          }| j        j                            ||          }|                                }t          |j                   d |j        D             S )Nr   c           
      r    g | ]4}t          |j        |j        |j        |j        |j        |j                  5S rR   )r-   idr  r  r  r  r  )r  r  s     rb   r  z6GrpcHandler.list_bulk_insert_tasks.<locals>.<listcomp>  sF     
 
 
 AD!'1;	17AKXX
 
 
rd   )	r,   list_bulk_insert_tasksrS   ListImportTasksr   r   rB   r   r  )r_   r  r   r   r`   r<  r   rJ  s           rb   r  z"GrpcHandler.list_bulk_insert_tasks  ss     ,UODD+2232HH}}T[!!!
 
Z
 
 
 	
rd   c                     t          |||           t          j        ||          }| j                            ||          }t          |           d S )N)rP   r   r   r   )r)   r,   create_user_requestrS   CreateCredentialrB   )r_   rP   r   r   r`   r<  rJ  s          rb   create_userzGrpcHandler.create_user  sW    dXwGGGG)$99z**3*@@Trd   c                     t          j        |||          }| j                            ||          }t	          |           d S r  )r,   update_password_requestrS   UpdateCredentialrB   )r_   rP   r   r   r   r`   r<  rJ  s           rb   r   zGrpcHandler.update_password  sF     -dL,OOz**3*@@Trd   c                     t          j        |          }| j                            ||          }t	          |           d S r  )r,   delete_user_requestrS   DeleteCredentialrB   )r_   rP   r   r`   r<  rJ  s         rb   delete_userzGrpcHandler.delete_user  s@    )$//z**3*@@Trd   c                     t          j                    }| j                            ||          }t	          |j                   |j        S r  )r,   list_usernames_requestrS   ListCredUsersrB   r   	usernamesr_   r   r`   r<  rJ  s        rb   list_usernameszGrpcHandler.list_usernames  sB    ,..z''W'==T[!!!~rd   	role_namec                     t          j        |          }| j                            |d|          }t	          |           d S NT)wait_for_readyr   )r,   create_role_requestrS   
CreateRolerB   r_   r  r   r`   r<  rJ  s         rb   create_rolezGrpcHandler.create_role  sB    ))44z$$Sw$OOTrd   c                     t          j        |          }| j                            |d|          }t	          |           d S r  )r,   drop_role_requestrS   DropRolerB   r  s         rb   	drop_rolezGrpcHandler.drop_role  sB    '	22z""3tW"MMTrd   usernamec                     t          j        ||t          j        j                  }| j                            |d|          }t          |           d S r  )r,   operate_user_role_requestrS  OperateUserRoleTypeAddUserToRolerS   OperateUserRolerB   r_   r  r  r   r`   r<  rJ  s          rb   add_user_to_rolezGrpcHandler.add_user_to_role  sU     /i!A!O
 
 z))#dG)TTTrd   c                     t          j        ||t          j        j                  }| j                            |d|          }t          |           d S r  )r,   r  rS  r  RemoveUserFromRolerS   r  rB   r  s          rb   remove_user_from_rolez!GrpcHandler.remove_user_from_role  sU     /i!A!T
 
 z))#dG)TTTrd   include_user_infoc                     t          j        ||          }| j                            |d|          }t	          |j                   t          |j                  S r  r,   select_role_requestrS   
SelectRolerB   r   r;   r~  )r_   r  r  r   r`   r<  rJ  s          rb   select_one_rolezGrpcHandler.select_one_role  sS     ))5FGGz$$Sw$OOT[!!!%%%rd   c                     t          j        d |          }| j                            |d|          }t	          |j                   t          |j                  S r  r  )r_   r  r   r`   r<  rJ  s         rb   select_all_rolezGrpcHandler.select_all_role  Q    )$0ABBz$$Sw$OOT[!!!%%%rd   include_role_infoc                     t          j        ||          }| j                            |d|          }t	          |j                   t          |j                  S r  r,   select_user_requestrS   
SelectUserrB   r   r?   r~  )r_   r  r  r   r`   r<  rJ  s          rb   select_one_userzGrpcHandler.select_one_user  sS     )(4EFFz$$Sw$OOT[!!!%%%rd   c                     t          j        d |          }| j                            |d|          }t	          |j                   t          |j                  S r  r  )r_   r  r   r`   r<  rJ  s         rb   select_all_userzGrpcHandler.select_all_user  r  rd   objectobject_name	privilegec                     t          j        |||||t          j        j                  }| j                            |d|          }	t          |	           d S r  )r,   operate_privilege_requestrS  OperatePrivilegeTypeGrantrS   OperatePrivilegerB   
r_   r  r  r  r  rQ   r   r`   r<  rJ  s
             rb   grant_privilegezGrpcHandler.grant_privilege  s`     /-3
 
 z**3tW*UUTrd   c                     t          j        |||||t          j        j                  }| j                            |d|          }	t          |	           d S r  )r,   r  rS  r  RevokerS   r  rB   r  s
             rb   revoke_privilegezGrpcHandler.revoke_privilege5  s`     /-4
 
 z**3tW*UUTrd   c                     t          j        |d d |          }| j                            |d|          }t	          |j                   t          |j                  S r  r,   select_grant_requestrS   SelectGrantrB   r   r3   rD  )r_   r  rQ   r   r`   r<  rJ  s          rb   select_grant_for_one_rolez%GrpcHandler.select_grant_for_one_roleK  sV     *9dD'JJz%%c$%PPT[!!!'''rd   c                     t          j        ||||          }| j                            |d|          }t	          |j                   t          |j                  S r  r"  )	r_   r  r  r  rQ   r   r`   r<  rJ  s	            rb    select_grant_for_role_and_objectz,GrpcHandler.select_grant_for_role_and_objectT  sV     *9fk7SSz%%c$%PPT[!!!'''rd   c                     t          j                    }| j                            ||          }t	          |j                   |j        S r  )r,   get_server_versionrS   
GetVersionrB   r   versionr  s        rb   r)  zGrpcHandler.get_server_versionc  sB    (**z$$S'$::T[!!!|rd   r  c                     t          j        |fi |}| j                            |d|          }t	          |           d S r  )r,   create_resource_grouprS   CreateResourceGrouprB   r_   r  r   r`   r<  rJ  s         rb   r-  z!GrpcHandler.create_resource_groupj  sK    +D;;F;;z--c$PW-XXTrd   configsc                     t          j        |          }| j                            |d|          }t	          |           d S r  )r,   update_resource_groupsrS   UpdateResourceGroupsrB   )r_   r0  r   r`   r<  rJ  s         rb   r2  z"GrpcHandler.update_resource_groupsp  sE     ,W55z..s4QX.YYTrd   c                     t          j        |          }| j                            |d|          }t	          |           d S r  )r,   drop_resource_grouprS   DropResourceGrouprB   r/  s         rb   r5  zGrpcHandler.drop_resource_groupx  sB    )$//z++Cg+VVTrd   c                     t          j                    }| j                            |d|          }t	          |j                   t          |j                  S r  )r,   list_resource_groupsrS   ListResourceGroupsrB   r   r  r  r  s        rb   r8  z GrpcHandler.list_resource_groups~  sM    *,,z,,Sw,WWT[!!!D()))rd   c                     t          j        |          }| j                            |d|          }t	          |j                   t          |j                  S r  )r,   describe_resource_grouprS   DescribeResourceGrouprB   r   r:   resource_groupr/  s         rb   r;  z#GrpcHandler.describe_resource_group  sR     -d33z//DRY/ZZT[!!! !4555rd   sourcer  num_nodec                     t          j        |||          }| j                            |d|          }t	          |           d S r  )r,   transfer_noderS   TransferNoderB   )r_   r>  r  r?  r   r`   r<  rJ  s           rb   rA  zGrpcHandler.transfer_node  sH     #FFH==z&&s4&QQTrd   num_replicac                     t          j        ||||          }| j                            |d|          }t	          |           d S r  )r,   transfer_replicarS   TransferReplicarB   )	r_   r>  r  r   rC  r   r`   r<  rJ  s	            rb   rE  zGrpcHandler.transfer_replica  sJ     &vvTTz))#dG)TTTrd   flush_all_tsc                     t          j        ||                    dd                    }| j                            ||          }|j        }t          |           |j        S )NdbrH   r   )r,   get_flush_all_state_requestrU   rS   GetFlushAllStater   rB   rZ  )r_   rG  r   r`   r<  r
  r   s          rb   get_flush_all_statezGrpcHandler.get_flush_all_state  s[    1,

4QS@T@TUU:..sG.DDVrd   c                     d}t          j                     }|sZ | j        ||fi |}t          j                     }|||z
  |k    rt          d|           |st          j        d           |Xd S d S )NFz*wait for flush all timeout, flush_all_ts: rr      )r  rL  r   r  )r_   rG  r   r`   ra  r   r  s          rb   _wait_for_flush_allzGrpcHandler._wait_for_flush_all  s    		 		00wQQ&QQI)++C"sU{W'<'<%WWW     
1  		 		 		 		 		rd   c                     t          j                            dd                    } j        j                            |          }|                                t          j                    fd}                    dd          rRt          |          }|
                    |                               d          }|r|
                    |           |S  |             d S )NrI  rH   r   c                  0     j         j        fi   d S rm   )rO  rG  )r`   r
  r_   r   s   rb   r  z%GrpcHandler.flush_all.<locals>._check  s)    $D$X%:GNNvNNNNNrd   r   Fr\  )r,   flush_all_requestrU   rS   FlushAllr   r   rB   r   r%   r]  )	r_   r   r`   r   r   r  ri  r  r
  s	   ```     @rb   	flush_allzGrpcHandler.flush_all  s
   +FJJtR,@,@AA$++GW+EE==??X_%%%	O 	O 	O 	O 	O 	O 	O 	O ::h&& 	 &v..L%%f---jj--G 3))'222trd   c                     t          j        ||          }| j                            |          }t	          |j                   |j        S )N)r   )r,   register_requestrS   ConnectrB   r   r   )r_   rP   rJ   r`   r<  r
  s         rb   __internal_registerzGrpcHandler.__internal_register  sG     &tT22:%%c%22X_%%%""rd   r   c                     t          j                    }| j                            ||          }t	          |j                   |j        S r  )rS  AllocTimestampRequestrS   AllocTimestamprB   r   rI  r?  s       rb   r  zGrpcHandler.alloc_timestamp  sE     466:,,Wg,FFX_%%%!!rd   )r   rm   )rH   Nr   )NN)NNNr   N)NNr   N)r  )r   N)NF)NNF)FN)__name__
__module____qualname__r   GRPC_URIr   r	   r   Channelrc   r   rk   ro   rV   r[   r   r  r   r
   floatr   r   r   r   r\   r]   r   r  r   r   propertyr   rC   r   r   r   r   r   r   r  r  r  r  r!  r%  r*  r2  r7  r=  rC  r   r  rK  rF  rX  rc  rk  rp  rs  rw  ry  rS  SearchRequestr  HybridSearchRequestr  r   SparseMatrixInputTyper  r   r    r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r&  r+  r*  r  r6  r:  r@  rD  rH  rJ  rM  rO  rT  r[  r_  rb  r  rj  rn  r   rs  rw  rU   r  r  r  r/   r  r  r.   r  r8   r  r  r-   r  r  r  r   r  r  r  r  r  r  r  r
  r  r  r  r   r%  r'  r)  r-  r   r9   r2  r5  r8  r:   r;  rA  rE  rL  rO  rT  r   r   r   r  rR   rd   rb   rG   rG   H   s$       
 ?*.   	
 $,' 
   *?x ? ? ? ?  
! !C !s !s ! ! ! !
 
 
$  v  & &     uU|    $  7S 7 7 7 7
aS aC aPS a a a a_S _ _ _ _CL CL CLJ#c # # # ##S # # # #	L 	L# 	L 	L 	L 	L 	L   XB B B $(# ## # 	#
 %# # # # MQ ",0;CE?     s Xe_     QU "04?G    _ _c _HUO _ _ _ _0 
Y 
Y3 
Y% 
Y 
Y 
Y 
Y / / / / / / 
 #'   	
 %     TX	 	"	47	BJ5/	 	 	 	 TX
 
"
47
BJ5/
 
 
 
 TX "47BJ5/    TX "47BJ5/    . .s .Xe_ . . . . TX	 	"	47	BJ5/	 	 	 	+ + +x + + + + 
 )-!%#'$ $$ d4j()$ !	$
 $ %$ $ $ $* )-!%#'
 

 4:t+,
 !	

 
 %
 
 
 
< )-#'
 

 
 !	

 %
 
 
 
4 
 )-#'   !	
 %   B 
 )-#'# ## # !	#
 %# # # #R )-#'
 

 
 !	

 %
 
 
 
4 
 )-#'   !	
 %   J )-#'
 

 
 !	

 %
 
 
 
( 
 )-#'   !	
 %   * OS #1<DUO   ( UY #7BJ5/   & === %)/3-1#'%] %]%] De%u'BBC%] 	%]
 %] %] SM%] "$s),%]  S	*%] %] %%] %] %] >=%]N === 04-1#'0
 0
0
 #$0
 	0

 0
 "$s),0
  S	*0
 0
 %0
 0
 0
 >=0
d  c E     KO "+.9A%      huo     KO "+.9A%     C (5/      C (5/    $  $(I2 I2I2 I2 	I2
 %I2 I2 I2 I2V  $(   	
 %   $ M MC M(5/ M M M M 
 $(#'O OO O %	O
 C=O O O O> PTO O"O03O>FuoO O O O$ 
 $(#'O OO O %	O
 C=O O O O4 PT3 3"3033>Fuo3 3 3 3,   #'	"[ "["[ "[ %	"[ "[ "[ "[H 
 
 
huo 
 
 
 
 X]
 
"
-5e_
QU
 
 
 
&  #      
  #'; ;; c; 	;
 %; ; ; ;z 
 $( 
 

 c
 %	

 
 
 
 
.  04#' ! !! "$s),! %	!
 ! ! ! !  s Xe_    
  S 8E?    
 ' 'Xe_ ' ' ' ' IM (,7?    " " "x " " " "  04#'		) 	)	) "$s),	) %		) 	) 	) 	) [_
 
"
59#Y
IQRW
 
 
 
 
 $(	  c %	     C (5/      $(   #Y    	 
 %         ?C "-5e_    $(   #Y    	 
 %       .  d Xe_    @  $(   	
 %     #      & &(5/ & & & & 
 .2/3#'  #Y  S	*	
 "$s), %    
 .2/3#'(I (I(I (I  S	*	(I
 "$s),(I %(I (I (I (IT  $(   3i	
 !I %      ).#'	% %%  ~% %	% 
% % % %& =A
 
 
+3E?
	
 
 
 
" =A  +3E?   " =A  +3E?	    ?C "-5e_	   :  $(! !! ! Cy	!
 %! 
! ! ! !( 7;	
 	
	
%-e_	
		
 	
 	
 	
 KO
 

+.
9A%
	
 
 
 
   s Xe_      $(
 

 
 	

 %
 
 
 
   huo    
  huo      S 8E?    
  3 %    
 HL (+6>uo    HL (+6>uo    RV& &&15&@H& & & & & & & & & & & QU& &&04&?G& & & & & & & & & & &  $(   	
   %   *  $(   	
   %   * GK( (('*(5=e_( ( ( (  $(( (( ( 	(
 ( %( ( ( (  (5/ s      #     
 UY s$778CKE?      huo    
 * *HUO * * * * 486 66"*5/6	6 6 6 6 RV #&25@H     $(   	
  %         huo          huo      %    , # #3 #S # # #  # !" "x "# " " "  " " "rd   rG   )Xr   r  r  r   r  pathlibr   typingr   r   r   r   r   r	   r
   urllibr   r   grpc._cythonr   pymilvus.decoratorsr   r   r   pymilvus.exceptionsr   r   r   r   r   r   pymilvus.grpc_genr   r   r   rS  pymilvus.settingsr   rH   r   r   r   r   abstractr   r    r!   r"   r#   asynchr$   r%   r&   r'   r(   checkr)   r*   r+   preparer,   typesr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rG   rR   rd   rb   <module>rs     s              F F F F F F F F F F F F F F F F F F              \ \ \ \ \ \ \ \ \ \                : 9 9 9 9 9 9 9 8 8 8 8 8 8 $ $ $ $ $ $ 9 9 9 9 9 9 9 9 9 9 9 9 b b b b b b b b b b b b b b                      
                                                 ,             W" W" W" W" W" W" W" W" W" W"rd   