o
    :iץ                    @   sd  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mZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dl'm(Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; G dd de!Z<dS )    N)get_all_start_methods)Any	AwaitableCallableIterableMappingSequenceTypeget_args)Compression)Url	parse_url)urljoin)show_warningshow_warning_once)grpc)	construct)
BearerAuth)
QdrantBase)is_compatibleget_server_version)get_channel)common_types)get_args_subscribed)
GrpcToRest
RestToGrpc!grpc_payload_schema_to_field_type)	ApiClientSyncApismodels)ParallelWorkerPool)GrpcBatchUploader)RestBatchUploader)BaseUploaderc                '       sF  e Zd ZdZdZ													ddedB d	edB d
edededB dedB dedB dedB dedB deee	f dB de
g ef e
g ee f B dB dededB de	f fddZedefddZddedB de	ddfddZededeedB eedB edB f fddZdefd d!Zdd"d#Zdd$d%Zdd&d'Zdd(d)Zdd*d+Zdefd,d-Zedejfd.d/Zedejfd0d1Zedej fd2d3Z!edej"fd4d5Z#ede$e% fd6d7Z&ede$e% fd8d9Z'						:								dd;ed<e(j)e*e B e*e*e  B e(j+B e(j,B e(j-B e(j.B e(j/B e(j0B dB d=edB d>e(j1e*e(j1 B dB d?e(j2dB d@e(j3dB dAedBedB dCee4e B e(j5B dDee4e B dEedB dFe(j6dB dGe(j7dB dHe(j8dB dedB de	de(j9f"dIdJZ:		dd;edKe4e(j; dGe(j7dB dedB de	de*e(j9 fdLdMZ<						:									dd;edNed<e(j)e*e B e*e*e  B e(j+B e(j,B e(j-B e(j.B e(j/B e(j0B dB d=edB d>e(j1e*e(j1 B dB d?e(j2dB d@e(j3dB dAedOedCee4e B e(j5B dDee4e B dEedB dPe(j=dB dFe(j6dB dGe(j7dB dHe(j8dB dedB de	de(j>f&dQdRZ?			:				dd;ed?e(j2dB dAedSed=edB dGe(j7dB dHe(j8dB dedB de	de(j@fdTdUZA			:				dd;ed?e(j2dB dAedSed=edB dGe(j7dB dHe(j8dB dedB de	de(jBfdVdWZC		:							dd;edXe(j2dB dAedYe(jDdB dBe(j)dB dCee4e B e(j5B dDee4e B dGe(j7dB dHe(j8dB dedB de	dee*e(jE e(j)dB f fdZd[ZF					dd;ed\e(j2dB d]edHe(j8dB dedB dGe(j7dB de	de(jGfd^d_ZH		:				dd;ed`edae(j2dB dAed]ededB dGe(j7dB dHe(j8dB de	de(jIfdbdcZJ				dd;edde(jKdeedfe(jLdB dHe(j8dB dge(j2dB de	de(jMfdhdiZN				dd;edde4e(jO deedfe(jLdB dHe(j8dB dge(j2dB de	de(jMfdjdkZP			d d;edle4e dde(jQdeedfe(jLdB dHe(j8dB de	de(jMfdmdnZR					dd;edoe4e(j) dCee4e B e(j5B dDee4e B dGe(j7dB dHe(j8dB dedB de	de*e(jE fdpdqZSeTdde(jQdeejQej8dB f fdrdsZUeTdde(jQdHe(j8dB deVjQfdtduZWeTdvejQde*ej) fdwdxZXeTdde(jQdee*eVjY dB eVj2dB f fdydzZZ			d d;edve(jQdeedfe(jLdB dHe(j8dB de	de(jMfd{d|Z[				dd;ed}e(j\dde(jQd`edB deedfe(jLdB dHe(j8dB de	de(jMfd~dZ]			d d;ed}e(j\dde(jQdeedfe(jLdB dHe(j8dB de	de(jMfddZ^			d d;ede4e dde(jQdeedfe(jLdB dHe(j8dB de	de(jMfddZ_			d d;edve(jQdeedfe(jLdB dHe(j8dB de	de(jMfddZ`		dd;ede4e(ja deedfe(jLdB de	de*e(jM fddZb	dde4e(jc dedB de	defddZdd;ede	de(jefddZfde	de(jefddZgde	de(jhfddZid;ede	de(jjfddZkd;ede	defddZl									dd;ede(jmdB de(jndB de(jodB de(jpdB de(jqdB dedB deree(jsf dB de(jtdB de(j\dB de	defddZu	dd;ededB de	defddZv														dd;ede(jweree(jwf B dB dedB dedB dedB dedB de(jpdB de(jmdB de(jxdB de(jydB dedB deree(jsf dB de(jzdB de(jtdB de(j\dB de	def"ddZ{														dd;ede(jweree(jwf B dB dedB dedB dedB dedB de(jpdB de(jmdB de(jxdB de(jydB dedB deree(jsf dB de(jzdB de(jtdB de(j\dB de	def"ddZ|ede}e~ fddZ					dded;ededededB deedHe(j8dB dge(j2dB ddfddZ							dd;eddee(j dedededB dedeedHe(j8dB dge(j2dB de	ddfddZ									dd;edleee(j-f e(j-B ee(j B d}eee	e	f  dB doee(j) dB dedededB dedeedHe(j8dB dge(j2dB de	ddfddZ				d	d;edede(jdB de(jdB deedfe(jLdB de	de(jMfddZ		dd;ededeedfe(jLdB de	de(jMfddZd;ede	de*e(j fddĄZ	d
d;edeede	de(jdB fddƄZ	d
d;ededeede	dedB f
ddɄZde	de*e(j fdd˄Zd
deede	de(jfdd̈́Z	d
dedeede	dedB fddτZ				dd;edededB dedB de(jdB deede	dedB fddԄZd;edede	de*e(j fddׄZ	d
d;ededeede	de(jdB f
ddلZ	d
d;edededeede	dedB fddۄZ				dd;ededededB dedB de(jdB deede	dedB fdd݄Z					dd;ede(jdedB dedB de*e dB de(jdB dedB de	defddZ	dd;ede(jdedB de	def
ddZde(jfddZ	dd;ede(jdedB de	def
ddZde(jfddZdefddZ		ddededB dedB de	def
ddZd;ede(jfddZ  ZS (  QdrantRemote      N    FTurlport	grpc_portprefer_grpchttpsapi_keyprefixtimeouthostgrpc_optionsauth_token_providercheck_compatibility	pool_sizekwargsc              
      s  t  jd6i | || _|| _|
pi | _|d ur|n|d u| _| jr$dnd| _d | _|d ur6td|}|| _|p9d| _	t
| j	dkrP| j	d dkrPd| j	 | _	|d urb|	d urbtd| d|	 |	d urt|	d	sp|	d
rttd|r|drd| }t|}|j|j| _| _|jr|jdk| _|j| _| jr| jn|| _| j	r|jrtd| d|j |jr|j| _	| jdvrtd| j n|	pd| _|| _|d urt|nd }|| _|| _|dd }|d u r| jdv rtjd dd}n| jd urtj| jd}n| jd urtd| d| |dd}g | _dd |di  D | _|d urN| jdkrAtdtdd || jd < | j d |f t!j"#d!}t$% }d"| d#| }|| jd$< || jd%< |d&d }|d urt&|t'st(d't)| |t'j*krtd(|| _+| jd ur| j d)| j n| j}| j d*| }t,|| j	| _-| j|d+|| _.|d ur|| j.d< |d ur|| j.d,< || _/n| j0| _/| jd ur| jdkrtd-tdd t1| j}|| j.d.< t2d6d/| j-i| j.| _3g | _4d | _5d | _6d | _7d | _8d| _9d | _:d | _;d | _<d | _=d| _>d | _?|rz=t!j"#d!}t@| j-| j| j.Ad.| _?| j?sItd0tdd W d S tB|| j?sbtd1| d2| j? d3tdd W d S W d S  tCy } ztDEd4| d5 W Y d }~d S d }~ww d S )7Nr-   http    r   /z+Only one of (url, host) can be set. url is z
, host is zhttp://zhttps://zk`host` param is not expected to contain protocol (http:// or https://). Try to use `url` parameter instead.	localhostz//z9Prefix can be set either in `url` or in `prefix`. url is z, prefix is )r7   r-   zUnknown scheme: limits)r;   z	127.0.0.1)max_connectionsmax_keepalive_connections)r=   z>`pool_size` and `limits` are mutually exclusive. `pool_size`: z, `limit`: http2Fc                 S   s   i | ]\}}||qS  r@   ).0kvr@   r@   h/home/aiteam/pcaa-dev/dashboard-backend/venv/lib/python3.10/site-packages/qdrant_client/qdrant_remote.py
<dictcomp>       z)QdrantRemote.__init__.<locals>.<dictcomp>metadataz,Api key is used with an insecure connection.   messagecategory
stacklevelzapi-keyzqdrant-clientzpython-client/z python/z
User-Agentzgrpc.primary_user_agentgrpc_compressionzLExpected 'grpc_compression' to be of type grpc.Compression or None, but got zfgrpc.Compression.Deflate is not supported. Try grpc.Compression.Gzip or grpc.Compression.NoCompression:z://)headersr?   r0   z8Auth token provider is used with an insecure connection.authr1   zFailed to obtain server version. Unable to check client-server compatibility. Set check_compatibility=False to skip version check.zQdrant client version z% is incompatible with server version z. Major versions should match and minor version difference must not exceed 1. Set check_compatibility=False to skip version check.zUnable to get server version: z!, server version defaults to Noner@   )Fsuper__init___prefer_grpc
_grpc_port_grpc_options_https_scheme
_pool_sizemax_prefixlen
ValueError
startswithr   r1   r*   _host_portschemepathmathceil_api_key_auth_token_providerpophttpxLimits_grpc_headersitems_rest_headersr   UserWarningappend	importlibrG   versionplatformpython_version
isinstancer   	TypeErrortypeDeflate_grpc_compressionr   rest_uri
_rest_args_timeoutDEFAULT_GRPC_TIMEOUTr   r   openapi_client_grpc_channel_pool_grpc_points_client_pool_grpc_collections_client_pool_grpc_snapshots_client_pool_grpc_root_client_pool_grpc_client_next_index_aio_grpc_points_client_aio_grpc_collections_client_aio_grpc_snapshots_client_aio_grpc_root_client_closedserver_versionr   getr   	Exceptionloggingdebug)selfr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   
parsed_urlry   r<   r?   client_versionrq   
user_agentrM   addressbase_urlbearer_auther	__class__r@   rD   rR   /   s6  












$






zQdrantRemote.__init__returnc                 C      | j S N)r   r   r@   r@   rD   closed   s   zQdrantRemote.closed
grpc_gracec              	   K   s   t | dr(t| jdkr(| jD ]}z|  W q ty'   tdtdd Y qw z| j  W n ty?   tdtdd Y nw d| _	d S )Nr|   r   zKUnable to close grpc_channel. Connection was interrupted on the server siderH   rI   zNUnable to close http connection. Connection was interrupted on the server sideT)
hasattrr[   r|   closeAttributeErrorr   RuntimeWarningr{   r   r   )r   r   r6   channelr@   r@   rD   r      s*   



zQdrantRemote.closec                 C   s0   t | }|j|j|j|jf\}}}}||||fS r   )r   r`   r1   r*   ra   )r)   parse_resultr`   r1   r*   r/   r@   r@   rD   
_parse_url  s   zQdrantRemote._parse_urlc                 C   s   | j dur| j S | jS )z
        Returns the pool size to use for GRPC connection pool.
        This method should be preferred over accessing `self._pool_size` directly as it applies the
        default value if no pool_size was provided.
        N)rX   DEFAULT_GRPC_POOL_SIZEr   r@   r@   rD   _get_grpc_pool_size   s   
z QdrantRemote._get_grpc_pool_sizec              
   C   s   | j rtdz2g }t| jdkr7t|  D ]}t| j| j| j	| j
| j| j| jd}|| q|| _W d S W d S  tyL } ztd| d }~ww )Nz=Client was closed. Please create a new QdrantClient instance.r   )r1   r*   sslrG   optionscompressionr3   z+Error initializing the grpc connection(s): )r   RuntimeErrorr[   r|   ranger   r   r^   rT   rV   ri   rU   rv   re   rm   r   )r   channel_pool_r   er@   r@   rD   _init_grpc_channel,  s,   zQdrantRemote._init_grpc_channelc                 C      |    dd | jD | _d S )Nc                 S      g | ]}t |qS r@   )r   
PointsStubrA   r   r@   r@   rD   
<listcomp>I      
z9QdrantRemote._init_grpc_points_client.<locals>.<listcomp>)r   r|   r}   r   r@   r@   rD   _init_grpc_points_clientG     z%QdrantRemote._init_grpc_points_clientc                 C   r   )Nc                 S   r   r@   )r   CollectionsStubr   r@   r@   rD   r   O  r   z>QdrantRemote._init_grpc_collections_client.<locals>.<listcomp>)r   r|   r~   r   r@   r@   rD   _init_grpc_collections_clientM  r   z*QdrantRemote._init_grpc_collections_clientc                 C   r   )Nc                 S   r   r@   )r   SnapshotsStubr   r@   r@   rD   r   U  r   z<QdrantRemote._init_grpc_snapshots_client.<locals>.<listcomp>)r   r|   r   r   r@   r@   rD   _init_grpc_snapshots_clientS  r   z(QdrantRemote._init_grpc_snapshots_clientc                 C   r   )Nc                 S   r   r@   )r   
QdrantStubr   r@   r@   rD   r   [  r   z7QdrantRemote._init_grpc_root_client.<locals>.<listcomp>)r   r|   r   r   r@   r@   rD   _init_grpc_root_clientY  r   z#QdrantRemote._init_grpc_root_clientc                 C   s   | j }| j d |   | _ |S )Nr8   )r   r   )r   current_indexr@   r@   rD   _next_grpc_client_  s
   zQdrantRemote._next_grpc_clientc                 C   .   | j du r	|   | j dusJ | j |   S )zgRPC client for collections methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        N)r~   r   r   r   r@   r@   rD   grpc_collectionsf     
zQdrantRemote.grpc_collectionsc                 C   r   )z}gRPC client for points methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        N)r}   r   r   r   r@   r@   rD   grpc_pointsr  r   zQdrantRemote.grpc_pointsc                 C   r   )zgRPC client for snapshots methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        N)r   r   r   r   r@   r@   rD   grpc_snapshots~  r   zQdrantRemote.grpc_snapshotsc                 C   r   )z{gRPC client for info methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        N)r   r   r   r   r@   r@   rD   	grpc_root  r   zQdrantRemote.grpc_rootc                 C   r   ztREST Client

        Returns:
            An instance of raw REST API client, generated from OpenAPI schema
        r{   r   r@   r@   rD   rest     zQdrantRemote.restc                 C   r   r   r   r   r@   r@   rD   r7     r   zQdrantRemote.http
   collection_namequeryusingprefetchquery_filtersearch_paramslimitoffsetwith_payloadwith_vectorsscore_thresholdlookup_fromconsistencyshard_key_selectorc                 K   s  | j r|d urt|}t|tjrt|g}t|tr$dd |D }t|tjr0tj	|d}t|tj
r;t|}t|	ttjrHt|	}	t|
ttjrUt|
}
t|tjr`t|}t|ttjrmt|}t|ttjrzt|}| jjtj|||||||
|	|||||||d|d ur|n| jd}dd |jD }tj|dS t|tjrtj	|d}t|tj
rt|}t|	tjrt |	}	t|tjrt|}tj!||||||||||
|	|d}| j"j#j$||||d	}|j}|d usJ d
|S )Nc                 S   &   g | ]}t |tjrt|n|qS r@   rr   r   Prefetchr   convert_prefetch_queryrA   pr@   r@   rD   r         z-QdrantRemote.query_points.<locals>.<listcomp>model)r   r   r   filterr   r   r   r   paramsr   r   r   r0   r   read_consistencyr0   c                 S   r   r@   r   convert_scored_pointrA   hitr@   r@   rD   r     rF   points)	shard_keyr   r   r   r   r   r   r   r   with_vectorr   r   )r   r   r0   query_requestzSearch returned None)%rS   r   convert_queryrr   r   r   r   listFilterconvert_filterSearchParamsconvert_search_paramsr   WithPayloadInterfaceconvert_with_payload_interface
WithVectorconvert_with_vectorsLookupLocationconvert_lookup_locationReadConsistencyconvert_read_consistencyShardKeySelectorconvert_shard_key_selectorr   Queryr   QueryPointsry   resultQueryResponser   WithPayloadSelectorconvert_with_payload_selectorQueryRequestr7   
search_apiquery_points)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r6   resscored_pointsr   query_resultr   r@   r@   rD   r    s   










zQdrantRemote.query_pointsrequestsc                    s   | j r7 fdd|D }t|ttjrt|}| jjt	j
 |||d|d ur*|n| jd}dd |jD S | jjj ||tj|ddj}|d usOJ d|S )	Nc                    s(   g | ]}t |tjrt| n|qS r@   )rr   r   r  r   convert_query_requestrA   rr   r@   rD   r   .  s    
z3QdrantRemote.query_batch_points.<locals>.<listcomp>)r   r  r   r0   r   c                 S   s$   g | ]}t jd d |jD dqS )c                 S   r   r@   r   r   r@   r@   rD   r   F  rF   z>QdrantRemote.query_batch_points.<locals>.<listcomp>.<listcomp>r   )r   r   r   r  r@   r@   rD   r   D  s    )searches)r   r   r0   query_request_batchzQuery batch returned None)rS   rr   r   r   r   r   r   r   
QueryBatchr   QueryBatchPointsry   r   r7   r  query_batch_pointsQueryRequestBatch)r   r   r	  r   r0   r6   grpc_reshttp_resr@   r  rD   r  %  s8   
	


zQdrantRemote.query_batch_pointsgroup_by
group_sizewith_lookupc                 K   sh  | j r|d urt|}t|tjrt|g}t|tr$dd |D }t|tjr0tj	|d}t|tj
r;t|}t|
ttjrHt|
}
t|ttjrUt|}t|tjr`t|}t|trktj|d}t|tjrvt|}t|ttjrt|}t|ttjrt|}| jjtjdi d|d|d|d|d	|d
|d|
d|d|d|d|d|	d|d|d|d|d||d ur|n| jdj}t !|S t|tjrt j	|d}t|tj
rt |}t|
tj"rt #|
}
t|tjr
t |}tj$||||||||||	||
||d}| j%j&j'||||d}|d us1J d|jS )Nc                 S   r   r@   r   r   r@   r@   rD   r   z  r   z4QdrantRemote.query_points_groups.<locals>.<listcomp>r   )
collectionr   r   r   r   r   r   r   r   r   r   r  r  r  r   r0   r   r   r   )r   r   r   r   r   r   r   r   r  r  r   r   r  r   )r   r   r0   query_groups_requestz%Query points groups API returned Noner@   )(rS   r   r   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   
WithLookupconvert_with_lookupstrr   r   r   r   r   r   r   r   QueryGroupsQueryPointGroupsry   r   r   convert_groups_resultr  r  QueryGroupsRequestr7   r  query_points_groups)r   r   r  r   r   r   r   r   r   r  r   r   r   r  r   r   r   r0   r6   r   r   r  r@   r@   rD   r"  T  s   










	




z QdrantRemote.query_points_groupssamplec	                 K      | j rIt|tjrtj|d}t|ttjrt|}t|ttj	r)t
|}| jjtj||||||||d|d ur>|n| jd}
t|
jS t|tjrUtj|d}| jjj|||tj|||||ddj}|d usqJ d|S )Nr   r   r   r#  r   r   r0   r   r   r   r   r   r#  r   r   r   r   r0   search_matrix_requestz(Search matrix pairs returned None result)rS   rr   r   r   r   r   r   r   r   r   r   r   SearchMatrixPairsr   SearchMatrixPointsry   r   convert_search_matrix_pairsr   r{   r  search_matrix_pairsSearchMatrixRequestr   r   r   r   r#  r   r   r   r0   r6   responsesearch_matrix_resultr@   r@   rD   r,    N   


z QdrantRemote.search_matrix_pairsc	                 K   r$  )Nr   r%  r   r&  r'  z*Search matrix offsets returned None result)rS   rr   r   r   r   r   r   r   r   r   r   r   SearchMatrixOffsetsr   r*  ry   r   convert_search_matrix_offsetsr   r{   r  search_matrix_offsetsr-  r.  r@   r@   rD   r4    r1  z"QdrantRemote.search_matrix_offsetsscroll_filterorder_byc                 K   s  | j rt|ttjrt|}t|tjrtj|d}t|ttj	r)t
|}t|ttjr6t|}t|ttjrCt|}t|	ttjrPt|	}	t|ttjr]t|}| jjtj|||||||||	|
d
|
d urt|
n| jd}dd |jD |drt|jfS d fS t|tjrt|}t|tjrtj|d}t|tjrt|}t|tj rt!|}| j"j#j$||tj%|||||||	d|
dj}|d usJ d	|j&|jfS )
Nr   )
r   r   r6  r   r   r   r   r   r   r0   r   c                 S   r   r@   r   convert_retrieved_pointrA   pointr@   r@   rD   r   |  rF   z'QdrantRemote.scroll.<locals>.<listcomp>next_page_offset)r   r   r6  r   r   r   r   )r   r   scroll_requestr0   z&Scroll points API returned None result)'rS   rr   r   r   ExtendedPointIdr   convert_extended_point_idr   r   r   r   r   r   r   r   r   r   OrderByInterfaceconvert_order_by_interfacer   Scrollr   ScrollPointsry   r   HasFieldr   convert_point_idr;  PointIdOrderByconvert_order_byr  r  r{   
points_apiscroll_pointsScrollRequestr   )r   r   r5  r   r6  r   r   r   r   r   r0   r6   r  scroll_resultr@   r@   rD   scrollH  s|   








	zQdrantRemote.scrollcount_filterexactc           
   	   K   s   | j rGt|tjrtj|d}t|ttjrt|}t|ttj	r)t
|}| jjtj||||||d|d ur<|n| jdj}t|S t|tjrStj|d}| jjj|tj|||d||dj}	|	d usmJ d|	S )Nr   )r   r   rN  r   r0   r   r   )r   rN  r   )r   count_requestr   r0   z!Count points returned None result)rS   rr   r   r   r   r   r   r   r   r   r   r   Countr   CountPointsry   r   r   convert_count_resultr{   rH  count_pointsCountRequest)
r   r   rM  rN  r   r0   r   r6   r/  count_resultr@   r@   rD   count  sJ   




	
zQdrantRemote.countkeyfacet_filterc	                 K   s   | j rOt|tjrtj|d}t|ttjrt|}t|ttj	r)t
|}| jjtj||||||||d|d ur>|n| jd}
tjdd |
jD dS t|tjr[tj|d}| jjj|||tj|||||ddj}|d uswJ d	|S )
Nr   )r   rW  r   r   rN  r0   r   r   r   c                 S   r   r@   )r   convert_facet_value_hitr   r@   r@   rD   r     rF   z&QdrantRemote.facet.<locals>.<listcomp>)hits)r   rW  r   r   rN  )r   r   r0   facet_requestz!Facet points returned None result)rS   rr   r   r   r   r   r   r   r   r   r   r   Facetr   FacetCountsry   typesFacetResponserZ  r   r{   rH  facetFacetRequestr   )r   r   rW  rX  r   rN  r0   r   r   r6   r/  facet_resultr@   r@   rD   r`    sR   


zQdrantRemote.facetr   waitorderingupdate_filterc           
   	      sl  | j rrt tjr"t jt j fddt	t jD  t t
r.dd  D  t|tjr9t|}t|ttjrFt|}t|tjrRtj|d}| jjtj|| |||d| jdj}|d usmJ dt|S t|tjr~tj|d}t t
rdd  D  tj ||d	 t tjrtj ||d
 | jjj|| |dj}	|	d usJ d|	S )Nc              	      sF   g | ]}t jt j| |  jd urt j| nd dqS )N)idvectorspayload)r   PointStructr   r>  idspayloadsconvert_payloadrA   idxr   vectors_batchr@   rD   r     s    

z'QdrantRemote.upsert.<locals>.<listcomp>c                 S   r   r@   )rr   r   ri  r   convert_point_structr9  r@   r@   rD   r   *      
r   r   rc  r   rd  r   re  r   Upsert returned None resultc                 S   r   r@   )rr   r   ri  r   rq  r9  r@   r@   rD   r   O  rr  r   r   re  )batchr   re  )r   rc  point_insert_operationsrd  )rS   rr   r   Batchr   convert_batch_vector_structrg  r[   rj  r   r   WriteOrderingconvert_write_orderingr   r   r   r   r   r   Upsertr   UpsertPointsry   r   r   convert_update_result
PointsListPointsBatchr{   rH  upsert_points)
r   r   r   rc  rd  r   re  r6   grpc_resulthttp_resultr@   ro  rD   upsert  sp   


	




	zQdrantRemote.upsertc           	   	   K   s   | j rNdd |D }t|tjrt|}t|ttjr"t|}t|tj	r.tj
|d}| jjtj||||||d| jdj}|d usIJ dt|S t|tj	rZtj
|d}| jjj||tj|||d|djS )	Nc                 S   r   r@   )r   convert_point_vectorsr9  r@   r@   rD   r   u  rF   z/QdrantRemote.update_vectors.<locals>.<listcomp>r   rs  r   rt  ru  )r   rc  update_vectorsrd  )rS   rr   r   rz  r   r{  r   r   r   r   r   r   UpdateVectorsr   UpdatePointVectorsry   r   r   r~  r{   rH  r  )	r   r   r   rc  rd  r   re  r6   r  r@   r@   rD   r  j  sJ   




	zQdrantRemote.update_vectorsrg  c                 K   s   | j rJ| |\}}	|p|	}t|tjrt|}t|ttjr&t	|}| j
jtj||tj|d|||d| jdj}
|
d usEJ dt|
S | |\}}| jjj|||ttj||||ddjS )N)names)r   rc  rg  points_selectorrd  r   r   z#Delete vectors returned None result)vectorr   r   r   )r   rc  rd  delete_vectors)rS   _try_argument_to_grpc_selectorrr   r   rz  r   r{  r   r   r   r   DeleteVectorsr   DeletePointVectorsVectorsSelectorry   r   r   r~  '_try_argument_to_rest_points_and_filterr{   rH  r  r   )r   r   rg  r   rc  rd  r   r6   r  opt_shard_key_selectorr  _points_filterr@   r@   rD   r    sN   




zQdrantRemote.delete_vectorsrj  c              
   K   s  | j r_t|ttjrt|}dd |D }t|}t|ttjr)t	|}t|ttj
r6t|}| jjtj|||||||d|d urJ|n| jdj}	|	d usXJ ddd |	D S t|tjrjt|}dd |D }| jjj||tj||||d|d	j}
|
d usJ d
|
S )Nc                 S   *   g | ]}t |ttjrt|n|qS r@   rr   r   r   r=  r   r>  rm  r@   r@   rD   r         z)QdrantRemote.retrieve.<locals>.<listcomp>)r   rj  r   r   r   r   r0   r   zRetrieve returned None resultc                 S   r   r@   r7  )rA   recordr@   r@   rD   r     rF   c                 S   r   r@   rr   r   rE  r   rD  rm  r@   r@   rD   r     r   )rj  r   r   r   )r   r   point_requestr0   z!Retrieve API returned None result)rS   rr   r   r   r   r   r   r   r   r   r   r   r   Getr   	GetPointsry   r   r  r   r  r{   rH  
get_pointsPointRequest)r   r   rj  r   r   r   r   r0   r6   r   r  r@   r@   rD   retrieve  s^   

	

	

zQdrantRemote.retrievec                 C   s   d }t |trtjtjdd |D dd}||fS t |tjr&|}||fS t |ttjrB|jd ur9t	|j}t
|}||fS t |tjrVt
ttj|d}||fS t |tjrftj|d}||fS tdt| )Nc                 S   r  r@   r  rm  r@   r@   rD   r      r  z?QdrantRemote._try_argument_to_grpc_selector.<locals>.<listcomp>)rj  r   )r   "Unsupported points selector type: )rr   r   r   PointsSelectorPointsIdsListr
   r   r   r   r   convert_points_selectorr   r   FilterSelectorr\   rt   )clsr   r   r  r@   r@   rD   r    s6   


	z+QdrantRemote._try_argument_to_grpc_selectorc                 C   s   t |trdd |D }ttj||d}|S t |tjr&t|}||_	|S t |t
tjr5|}||_	|S t |tjrEttj||d}|S t |tjrXttjt||d}|S tdt| )Nc                 S   r   r@   r  rm  r@   r@   rD   r   A  r   z?QdrantRemote._try_argument_to_rest_selector.<locals>.<listcomp>)r   r   )r   r   r  )rr   r   r   r   PointIdsListr   r  r   r  r   r
   r   r  r   r\   rt   )r  r   r   r  r  r@   r@   rD   _try_argument_to_rest_selector:  s>   

z+QdrantRemote._try_argument_to_rest_selectorr  c                 C   s6   | d}|d u rg S t||}|dkrt|jS g S )Npoints_selector_one_ofr   )
WhichOneofgetattrr   rj  )r  r  namevalr@   r@   rD   _points_selector_to_points_list^  s   


z,QdrantRemote._points_selector_to_points_listc                 C   s   d }d }t |trdd |D }||fS t |tjr9t|}t |tjr,|j}||fS t |tj	r5|j
}||fS t |tjrF|j}||fS t |tj	rS|j
}||fS t |tjr_|}||fS t |tjrnt|}||fS tdt| )Nc                 S   r   r@   r  rm  r@   r@   rD   r   s  r   zHQdrantRemote._try_argument_to_rest_points_and_filter.<locals>.<listcomp>r  )rr   r   r   r  r   r  r   r  r   r  r   r   r   r\   rt   )r  r   r  r  selectorr@   r@   rD   r  l  s8   



z4QdrantRemote._try_argument_to_rest_points_and_filterc           	   
   K   s   | j r;| |\}}|p|}t|tjrt|}t|ttjr&t	|}t
| jjtj|||||d| jdjS | ||}| jjj||||dj}|d usUJ d|S )Nr   rc  r   rd  r   r   )r   rc  r  rd  zDelete points returned None)rS   r  rr   r   rz  r   r{  r   r   r   r   r~  r   Deleter   DeletePointsry   r   r  r{   rH  delete_points	r   r   r  rc  rd  r   r6   r  r   r@   r@   rD   delete  F   	

	zQdrantRemote.deleterh  c                 K   s   | j r@| |\}	}
|p|
}t|tjrt|}t|ttjr&t	|}t
| jjtj||t||	|||d| jdjS | |\}}| jjj|||tj|||||ddj}|d uscJ d|S )N)r   rc  rh  r  rd  r   rW  r   )rh  r   r   r   rW  r   rc  rd  set_payloadzSet payload returned None)rS   r  rr   r   rz  r   r{  r   r   r   r   r~  r   
SetPayloadr   SetPayloadPointsrl  ry   r   r  r{   rH  r  )r   r   rh  r   rW  rc  rd  r   r6   r  r  r  r  r   r@   r@   rD   r    sN   

	zQdrantRemote.set_payloadc                 K   s   | j r?| |\}}	|p|	}t|tjrt|}t|ttjr&t	|}t
| jjtj||t||||d| jdjS | |\}
}| jjj|||tj||
||ddj}|d usaJ d|S )N)r   rc  rh  r  rd  r   r   )rh  r   r   r   r  zOverwrite payload returned None)rS   r  rr   r   rz  r   r{  r   r   r   r   r~  r   OverwritePayloadr   r  rl  ry   r   r  r{   rH  overwrite_payloadr  )r   r   rh  r   rc  rd  r   r6   r  r  r  r  r   r@   r@   rD   r    sJ   




zQdrantRemote.overwrite_payloadkeysc                 K   s   | j r<| |\}}	|p|	}t|tjrt|}t|ttjr&t	|}t
| jjtj||||||d| jdjS | |\}
}| jjj|||tj||
||ddj}|d us^J d|S )N)r   rc  r  r  rd  r   r   )r  r   r   r   )r   rc  rd  delete_payloadzDelete payload returned None)rS   r  rr   r   rz  r   r{  r   r   r   r   r~  r   DeletePayloadr   DeletePayloadPointsry   r   r  r{   rH  r  )r   r   r  r   rc  rd  r   r6   r  r  r  r  r   r@   r@   rD   r    sJ   




zQdrantRemote.delete_payloadc           	   
   K   s   | j r;| |\}}|p|}t|tjrt|}t|ttjr&t	|}t
| jjtj|||||d| jdjS | ||}| jjj||||dj}|d usUJ d|S )Nr  r   )r   rc  rd  r  zClear payload returned None)rS   r  rr   r   rz  r   r{  r   r   r   r   r~  r   ClearPayloadr   ClearPayloadPointsry   r   r  r{   rH  clear_payloadr  r@   r@   rD   r  M  r  zQdrantRemote.clear_payloadupdate_operationsc                 K   s   | j r+dd |D }t|tjrt|}dd | jjtj	||||d| j
djD S | jjj|||tj|ddj}|d usCJ d|S )	Nc                 S   r   r@   )r   convert_update_operationrA   	operationr@   r@   rD   r     r   z4QdrantRemote.batch_update_points.<locals>.<listcomp>c                 S   r   r@   )r   r~  )rA   r   r@   r@   rD   r         )r   rc  
operationsrd  r   )r  )r   rc  rd  r  z!Batch update points returned None)rS   rr   r   rz  r   r{  r   UpdateBatchr   UpdateBatchPointsry   r   r{   rH  batch_updateUpdateOperations)r   r   r  rc  rd  r6   r   r@   r@   rD   batch_update_points{  s8   

z QdrantRemote.batch_update_pointschange_aliases_operationsc                 K   s   | j r"dd |D }| jjtj||d|d ur|djS | jdjS dd |D }| jjj	|t
j|ddj}|d us?J d|S )	Nc                 S   s&   g | ]}t |tjst|n|qS r@   )rr   r   AliasOperationsr   convert_alias_operationsr  r@   r@   rD   r     rr  z:QdrantRemote.update_collection_aliases.<locals>.<listcomp>)r0   actionsr   c                 S   r   r@   )rr   r   r  r   r  r  r@   r@   rD   r     rr  )r  )r0   change_aliases_operationzUpdate aliases returned None)rS   r   UpdateAliasesr   ChangeAliasesry   r   r7   aliases_apiupdate_aliasesr   ChangeAliasesOperation)r   r  r0   r6   r  r   r@   r@   rD   update_collection_aliases  s<   
z&QdrantRemote.update_collection_aliasesc                 K   s^   | j r| jjtj|d| jdj}tjdd |D dS | j	j
j|dj}|d us-J d|S )Nr  r   c                 S   r   r@   r   convert_alias_descriptionrA   descriptionr@   r@   rD   r     r   z7QdrantRemote.get_collection_aliases.<locals>.<listcomp>aliasesz$Get collection aliases returned None)rS   r   ListCollectionAliasesr   ListCollectionAliasesRequestry   r  r^  CollectionsAliasesResponser7   r  get_collection_aliasesr   )r   r   r6   r/  r   r@   r@   rD   r    s    
z#QdrantRemote.get_collection_aliasesc                 K   V   | j r| jjt | jdj}tjdd |D dS | j	j
 j}|d us)J d|S )Nr   c                 S   r   r@   r  r  r@   r@   rD   r     r   z,QdrantRemote.get_aliases.<locals>.<listcomp>r  zGet aliases returned None)rS   r   ListAliasesr   ListAliasesRequestry   r  r^  r  r7   r  get_collections_aliasesr   r   r6   r/  r   r@   r@   rD   get_aliases  s   
zQdrantRemote.get_aliasesc                 K   r  )Nr   c                 S   r   r@   )r   convert_collection_descriptionr  r@   r@   rD   r     r  z0QdrantRemote.get_collections.<locals>.<listcomp>)collectionszGet collections returned None)rS   r   Listr   ListCollectionsRequestry   r  r^  CollectionsResponser7   collections_apiget_collectionsr   r  r@   r@   rD   r    s   
zQdrantRemote.get_collectionsc                 K   sN   | j rt| jjtj|d| jdjS | j	j
j|dj}|d us%J d|S )Nr  r   zGet collection returned None)rS   r   convert_collection_infor   r  r   GetCollectionInfoRequestry   r   r7   r  get_collectionr   r   r6   r   r@   r@   rD   r    s   
zQdrantRemote.get_collectionc                 K   sL   | j r| jjtj|d| jdjjS | jj	j
|dj}|d us#J d|jS )Nr  r   zCollection exists returned None)rS   r   CollectionExistsr   CollectionExistsRequestry   r   existsr7   r  collection_existsr  r@   r@   rD   r    s   
zQdrantRemote.collection_existsoptimizers_configcollection_paramsvectors_confighnsw_configquantization_configsparse_vectors_configstrict_mode_configrG   c                 K   s  | j rzt|tjrt|}t|tjrt|}t|tr#t	|}t|tj
r.t|}t|ttjr;t|}t|trEt|}t|	tjrPt|	}	t|
trZt|
}
| jjtj||||||||	||
d
|d urt|djS | jdjS t|tjrt|}t|tjrt|}t|tjrt	|}t|tj
rt|}t|tjrt|}| jjj|tj|||||||	|
d|dj}|d usJ d|S )N)
r   r  r   r  r  r  r  r  r0   rG   r   )r  r   rg  r  r  sparse_vectorsr  rG   )update_collectionr0   zUpdate collection returned None)rS   rr   r   OptimizersConfigDiffr   convert_optimizers_config_diffCollectionParamsDiffconvert_collection_params_diffdictconvert_vectors_config_diffHnswConfigDiffconvert_hnsw_config_diffr
   QuantizationConfigDiff convert_quantization_config_diffconvert_sparse_vector_configStrictModeConfigconvert_strict_mode_configrl  r   Updater   UpdateCollectionry   r   r   VectorsConfigDiffr7   r  r   )r   r   r  r  r  r  r  r0   r  r  rG   r6   r   r@   r@   rD   r     s   















zQdrantRemote.update_collectionc                 K   s^   | j r| jjtj||d|d ur|djS | jdjS | jjj	||dj}|d us-J d|S )Nr   r0   r   zDelete collection returned None)
rS   r   r  r   DeleteCollectionry   r   r7   r  delete_collection)r   r   r0   r6   r   r@   r@   rD   r  u  s$   
zQdrantRemote.delete_collectionshard_numberreplication_factorwrite_consistency_factoron_disk_payload
wal_configsharding_methodc                 K   s  | j rt|tjtfrt|}t|tjrt|}t|tj	r&t
|}t|	tjr1t|	}	t|
ttjr>t|
}
t|trHt|}t|tjrSt|}t|tjr^t|}t|trht|}tj|||	||||||||
||||d}| jj|| jdjS t|tjrt|}t|tj	rt
|}t|	tjrt|	}	t|
tjrt|
}
tj||||||||	|
||||d}| jjj|||dj}|d usJ d|S )N)r   r  r  r  r  r  r0   r  r  r  r  r  r  r  rG   r   )rg  r  r  r  r  r  r  r  r  r  r  r  rG   )r   create_collectionr0   zCreate collection returned None) rS   rr   r   VectorParamsr  r   convert_vectors_configr  r  r  r  WalConfigDiffconvert_wal_config_diffr
   QuantizationConfigconvert_quantization_configr  ShardingMethodconvert_sharding_methodr  r  rl  r   CreateCollectionr   Createry   r   r   r7   r  r  )r   r   r  r  r  r  r  r  r  r  r  r0   r  r  r  rG   r6   r  create_collection_requestr   r@   r@   rD   r    s   













zQdrantRemote.create_collectionc                 K   s6   | j ||d | j|||||||||	|
|||||dS )Nr   )r   r  r  r  r  r  r  r  r  r  r0   r  r  r  rG   )r  r  )r   r   r  r  r  r  r  r  r  r  r  r0   r  r  r  rG   r6   r@   r@   rD   recreate_collection  s$   z QdrantRemote.recreate_collectionc                 C   s   | j rtS tS r   )rS   r!   r"   r   r@   r@   rD   _updater_class  s   zQdrantRemote._updater_classr8   batches_iteratormax_retriesparallelmethodc	                 C   s   |d ur|t  v r|}	ntd| dt   dt  v rdnd}	| jr8|| j| j|| j| j||| j| j|d}
n|| j	||||d| j
}
|dkr\| jjd	i |
}||D ]}qWd S t|| j|	d}|j|fi |
D ]}qmd S )
NzStart methods z& is not available, available methods: 
forkserverspawn)r   r1   r*   r)  r   rG   rc  r   r   r0   re  )r   urir)  rc  r   re  r8   )start_methodr@   )r   r\   rS   r^   rT   rV   ri   rU   ry   rw   rx   r'  startprocessr    unordered_map)r   r(  r   r)  r*  r+  rc  r   re  r/  updater_kwargsupdaterr   poolr@   r@   rD   _upload_collection  sL   

zQdrantRemote._upload_collection@   
batch_sizec
              
   K   s.   | j j||d}| j||||||||	d d S )N)recordsr8  r(  r   r)  r*  r+  rc  r   re  )r'  iterate_records_batchesr6  )r   r   r   r8  r*  r+  r)  rc  r   re  r6   r(  r@   r@   rD   upload_pointsU  s   
zQdrantRemote.upload_pointsc              
   K   s2   | j j||||d}| j||||||	|
|d d S )N)rg  rh  rj  r8  r:  )r'  iterate_batchesr6  )r   r   rg  rh  rj  r8  r*  r+  r)  rc  r   re  r6   r(  r@   r@   rD   upload_collectionq  s    
zQdrantRemote.upload_collection
field_namefield_schema
field_typec                 K   s  |d urt dtddd |}| jrd }t|tjrt|}t|tr+tt|}t|t	r4t
|}t|ttjrAt|}t|tjr|}|d}	t||	}
t|
tjr]tjj}t|
tjrgtjj}t|
tjrqtjj}t|
tjr{tjj}t|
tjrtjj}t|
tjrtjj}t|
tjrtjj }t|
tj!rtjj"}tj#||||||d}t$%| j&j'|| j(dj)S t|t	rt$|}t|tjrt$|}| j*j+j,|tj'||d||d	j)}|d usJ d
|S )Nz2field_type is deprecated, use field_schema insteadr%   zpayload-index-field-type)rJ   rK   rL   rn  index_params)r   r?  rA  field_index_paramsrc  rd  r   )r?  r@  )r   create_field_indexrc  rd  z Create field index returned None)-r   DeprecationWarningrS   rr   r   PayloadSchemaTyper   convert_payload_schema_typer  intr   r
   PayloadSchemaParamsconvert_payload_schema_paramsr   PayloadIndexParamsr  r  TextIndexParams	FieldTypeFieldTypeTextIntegerIndexParamsFieldTypeIntegerKeywordIndexParamsFieldTypeKeywordFloatIndexParamsFieldTypeFloatGeoIndexParamsFieldTypeGeoBoolIndexParamsFieldTypeBoolDatetimeIndexParamsFieldTypeDatetimeUuidIndexParamsFieldTypeUuidCreateFieldIndexCollectionr   r~  r   CreateFieldIndexry   r   r{   indexes_apirD  )r   r   r?  r@  rA  rc  rd  r6   rC  r  rB  requestr   r@   r@   rD   create_payload_index  s   









z!QdrantRemote.create_payload_indexc                 K   s^   | j rtj||||d}t| jj|| jdjS | j	j
j||||dj}|d us-J d|S )N)r   r?  rc  rd  r   z Delete field index returned None)rS   r   DeleteFieldIndexCollectionr   r~  r   DeleteFieldIndexry   r   r{   r_  delete_field_index)r   r   r?  rc  rd  r6   r`  r   r@   r@   rD   delete_payload_index  s(   z!QdrantRemote.delete_payload_indexc                 K   sV   | j r| jjtj|d| jdj}dd |D S | jjj	|dj
}|d us)J d|S )Nr  r   c                 S   r   r@   r   convert_snapshot_descriptionrA   snapshotr@   r@   rD   r   	  rF   z/QdrantRemote.list_snapshots.<locals>.<listcomp>'List snapshots API returned None result)rS   r   r  r   ListSnapshotsRequestry   snapshot_descriptionsr{   snapshots_apilist_snapshotsr   )r   r   r6   	snapshotsr@   r@   rD   rn  	  s   zQdrantRemote.list_snapshotsc                 K   s@   | j r| jjtj|d| jdj}t|S | j	j
j||djS )Nr  r   )r   rc  )rS   r   r$  r   CreateSnapshotRequestry   snapshot_descriptionr   rg  r{   rm  create_snapshotr   )r   r   rc  r6   ri  r@   r@   rD   rr  	  s   
zQdrantRemote.create_snapshotsnapshot_namec                 K   s<   | j r| jjtj||d| jd dS | jjj|||dj	S )N)r   rs  r   T)r   rs  rc  )
rS   r   r  r   DeleteSnapshotRequestry   r{   rm  delete_snapshotr   )r   r   rs  rc  r6   r@   r@   rD   ru  *	  s   zQdrantRemote.delete_snapshotc                 K   sN   | j r| jjt | jdj}dd |D S | jj	 j
}|d us%J d|S )Nr   c                 S   r   r@   rf  rh  r@   r@   rD   r   B	  rF   z4QdrantRemote.list_full_snapshots.<locals>.<listcomp>z,List full snapshots API returned None result)rS   r   ListFullr   ListFullSnapshotsRequestry   rl  r{   rm  list_full_snapshotsr   )r   r6   ro  r@   r@   rD   rx  <	  s   z QdrantRemote.list_full_snapshotsc                 K   s:   | j r| jjt | jdj}t|S | j	j
j|djS )Nr   )rc  )rS   r   
CreateFullr   CreateFullSnapshotRequestry   rq  r   rg  r{   rm  create_full_snapshotr   )r   rc  r6   rq  r@   r@   rD   r{  H	  s   

z!QdrantRemote.create_full_snapshotc                 K   s8   | j r| jjtj|d| jd dS | jjj||dj	S )N)rs  r   T)rs  rc  )
rS   r   
DeleteFullr   DeleteFullSnapshotRequestry   r{   rm  delete_full_snapshotr   )r   rs  rc  r6   r@   r@   rD   r~  Q	  s   
z!QdrantRemote.delete_full_snapshotlocationchecksumpriorityc              	   K   s$   | j jj||tj||||ddjS )Nr  r  r  r.   )r   rc  snapshot_recover)r{   rm  recover_from_snapshotr   SnapshotRecoverr   )r   r   r  r.   r  r  rc  r6   r@   r@   rD   recover_snapshot_	  s   
	zQdrantRemote.recover_snapshotshard_idc                 K   s(   | j jj||dj}|d usJ d|S )N)r   r  rj  )r{   rm  list_shard_snapshotsr   )r   r   r  r6   ro  r@   r@   rD   r  t	  s   z!QdrantRemote.list_shard_snapshotsc                 K   s   | j jj|||djS )N)r   r  rc  )r{   rm  create_shard_snapshotr   )r   r   r  rc  r6   r@   r@   rD   r  ~	  s   z"QdrantRemote.create_shard_snapshotc                 K   s   | j jj||||djS )N)r   r  rs  rc  )r{   rm  delete_shard_snapshotr   )r   r   r  rs  rc  r6   r@   r@   rD   r  	  s   z"QdrantRemote.delete_shard_snapshotc           	   
   K   s&   | j jj|||tj||||ddjS )Nr  )r   r  rc  shard_snapshot_recover)r{   rm  recover_shard_from_snapshotr   ShardSnapshotRecoverr   )	r   r   r  r  r.   r  r  rc  r6   r@   r@   rD   recover_shard_snapshot	  s   
z#QdrantRemote.recover_shard_snapshotr   shards_number	placementinitial_statec           
      K   s   | j r>t|ttjrt|}t|tjrt|}| j	j
tj||tj
||||p*g |dd|d ur8|djS | jdjS | jjj||tj|||||ddj}	|	d usYJ d|	S )N)r   r  r  r  r  r   r0   r`  r   )r   r0   create_sharding_keyzCreate shard key returned None)rS   rr   r   r   ShardKeyr   convert_shard_keyReplicaStateconvert_replica_stater   CreateShardKeyr   CreateShardKeyRequestry   r   r{   distributed_apicreate_shard_keyCreateShardingKey)
r   r   r   r  r  r  r  r0   r6   r   r@   r@   rD   r  	  sP   



zQdrantRemote.create_shard_keyc                 K   s   | j r-t|ttjrt|}| jjt	j
||t	j|dd|d ur'|djS | jdjS | jjj||tj|ddj}|d usDJ d|S )N)r   r  r   )r   r0   drop_sharding_keyzDelete shard key returned None)rS   rr   r   r   r  r   r  r   DeleteShardKeyr   DeleteShardKeyRequestry   r   r{   r  delete_shard_keyDropShardingKey)r   r   r   r0   r6   r   r@   r@   rD   r  	  s<   

		zQdrantRemote.delete_shard_keyc                 C   sF   | j r| jjt | jd}t|S | jj	
 }|d us!J d|S )Nr   zHealthcheck returned None)rS   r   HealthCheckr   HealthCheckRequestry   r   convert_health_check_replyr   service_apiroot)r   version_infor@   r@   rD   info	  s   

zQdrantRemote.infocluster_operationc                 K   s4  | j rt|}i }t|tjr||d< nTt|tjr ||d< nIt|tjr+||d< n>t|tjr6||d< n3t|tj	rA||d< n(t|tj
rL||d< nt|tjrW||d< nt|tjrb||d< ntd	| | jjtjd||d
||d ur|djS | jdjS | jjj|||dj}|d usJ d|S )N
move_shardreplicate_shardabort_transferdrop_replicar  r  restart_transferreplicate_pointszUnknown cluster operation: r  r   )r   cluster_operationsr0   z'Cluster collection update returned Noner@   )rS   r   convert_cluster_operationsrr   r   	MoveShardReplicateShardAbortShardTransferReplicar  r  RestartTransferReplicatePointsrs   r   UpdateCollectionClusterSetup#UpdateCollectionClusterSetupRequestry   r   r   r  update_collection_cluster)r   r   r  r0   r6   grpc_operationupdate_resultr@   r@   rD   cluster_collection_update
  sR   









z&QdrantRemote.cluster_collection_updatec                 C   "   | j j j}|d usJ d|S )NzCluster status returned None)r   r  cluster_statusr   )r   status_resultr@   r@   rD   r  0
     zQdrantRemote.cluster_statusc                 C   r  )Nz"Recover current peer returned None)r   r  recover_current_peerr   )r   recover_resultr@   r@   rD   r  6
  r  z!QdrantRemote.recover_current_peerpeer_idforcec                 K   s*   | j jj|||dj}|d usJ d|S )N)r  r  r0   zRemove peer returned None)r   r  remove_peerr   )r   r  r  r0   r6   r  r@   r@   rD   r  <
  s   zQdrantRemote.remove_peerc                 C   sP   | j r| jjtj|d| jd}t|S | jj	j
|dj}|d us&J d|S )Nr  r   z%Collection cluster info returned None)rS   r   CollectionClusterInfor   CollectionClusterInfoRequestry   r   convert_collection_cluster_infor   r  collection_cluster_infor   )r   r   collection_infor@   r@   rD   r  L
  s   

z$QdrantRemote.collection_cluster_info)Nr'   r(   FNNNNNNNTNr   )r   N)NNNNNr   NTFNNNNN)NN)NNNNNr   r&   TFNNNNNN)Nr&   r   NNNN)	Nr   NNTFNNN)NTNNN)Nr   FNNN)TNNN)TNN)TFNNN)NTNN)TN)	NNNNNNNNN)NNNNNNNNNNNNNN)r8   NFNN)r7  r8   Nr&   FNN)	NNr7  r8   Nr&   FNN)NNTN)T)NNNT)NNNNN)__name__
__module____qualname__rz   r   r  rH  boolr  r   r   r   rR   propertyr   floatr   staticmethodtupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r^  rE  r   SparseVectorr   
NumpyArrayDocumentImageInferenceObjectr   r   r   r   PayloadSelectorr   r   r   r   r  r  r  WithLookupInterfaceGroupsResultr"  SearchMatrixPairsResponser,  SearchMatrixOffsetsResponser4  rF  RecordrL  CountResultrV  r_  r`  Pointsrz  UpdateResultr  PointVectorsr  r  r  r  classmethodr  r   r  r  r=  r  r  Payloadr  r  r  r  UpdateOperationr  r  r  r  r  r  r  r  CollectionInfor  r  r  r  r  r  r	  r   SparseVectorParamsr  r   r  r  r  r  r!  r  r&  r	   r#   r'  r   r6  ri  r<  VectorStructr>  rF  ra  re  SnapshotDescriptionrn  rr  ru  rx  r{  r~  SnapshotPriorityr  r  r  r  r  r  r  r  r  VersionInfor  ClusterOperationsr  ClusterStatusr  r  r  r  r  __classcell__r@   r@   r   rD   r$   +   sV   	
 L,






	

 
<
	

 	

;	

;
	

]	
5	

?	
`	
7	
8
	

H!#!
3	

9	
6	
4
2
)
(
	

\
	

o	

'	

;	

 	

%	
d





	



	


	

3
 
*	
r$   )=importlib.metadatarn   r   rb   rp   multiprocessingr   typingr   r   r   r   r   r   r	   r
   rg   r   r   urllib3.utilr   r   urllib.parser   $qdrant_client.common.client_warningsr   r   qdrant_clientqdrant_client._pydantic_compatr   qdrant_client.authr   qdrant_client.client_baser   "qdrant_client.common.version_checkr   r   qdrant_client.connectionr   qdrant_client.conversionsr   r^  &qdrant_client.conversions.common_typesr   $qdrant_client.conversions.conversionr   r   r   qdrant_client.httpr   r   r    qdrant_client.parallel_processorr    $qdrant_client.uploader.grpc_uploaderr!   $qdrant_client.uploader.rest_uploaderr"   qdrant_client.uploader.uploaderr#   r$   r@   r@   r@   rD   <module>   s4    (