
    'Xh                    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mZmZmZ d dl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l0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?  G d de%      Z@y)    N)get_all_start_methods)
Any	AwaitableCallableIterableMappingOptionalSequenceTypeUnion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            )       (    e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 ddee   dee   dededee   dee   d	ee   d
ee   dee   deeee	f      dee
eg ef   eg ee   f   f      dede	f fdZedefd       Zddee   de	ddfdZededeee   eee   ee   f   fd       ZddZddZddZddZddZedej6                  fd       Zedej:                  fd       Zedej>                  fd       Z edejB                  fd       Z"ede#e$   fd       Z%ede#e$   fd        Z&	 	 dd!ed"e'e(jR                     d#ee(jT                     d
ee   de	de+e+e(jX                        fd$Z-	 	 	 	 	 	 	 	 	 	 	 dd!ed%e
e'e   eee+e   f   e(j\                  e(j^                  e(j`                  f   d&ee(jb                     d'ee(jd                     d(ed)ee   d*e
ee'e   e(jf                  f   d+e
ee'e   f   d,ee   d-ed#ee(jT                     d.ee(jh                     d
ee   de	de+e(jX                     fd/Z5	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd!ed0e
e(jl                  e+e   e+e+e      e(jn                  e(jp                  e(j`                  e(jr                  e(jt                  e(jv                  df
   d1ee   d2e
e(jx                  e+e(jx                     df   d&ee(jb                     d'ee(jd                     d(ed)ee   d*e
ee'e   e(jf                  f   d+e
ee'e   f   d,ee   d3ee(jz                     d#ee(jT                     d.ee(jh                     d
ee   de	de(j|                  f"d4Z?	 	 dd!ed"e'e(j                     d#ee(jT                     d
ee   de	de+e(j|                     fd5ZA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd!ed6ed0e
e(jl                  e+e   e+e+e      e(jn                  e(jp                  e(j`                  e(jr                  e(jt                  e(jv                  df
   d1ee   d2e
e(jx                  e+e(jx                     df   d&ee(jb                     d'ee(jd                     d(ed7ed*e
ee'e   e(jf                  f   d+e
ee'e   f   d,ee   d8ee(j                     d3ee(jz                     d#ee(jT                     d.ee(jh                     d
ee   de	de(j                  f&d9ZD	 	 	 	 	 	 	 	 	 	 	 dd!ed%e
e'e   eee+e   f   e(j\                  e(j^                  e(j`                  f   d6ed&eeEjb                     d'eeEjd                     d(ed7ed*e
ee'e   eEjf                  f   d+e
ee'e   f   d,ee   d8ee(j                     d#ee(jT                     d.ee(jh                     d
ee   de	de(j                  f d:ZF	 	 	 	 	 	 	 dd!ed&ee(jb                     d(ed;ed1ee   d#ee(jT                     d.ee(jh                     d
ee   de	de(j                  fd<ZH	 	 	 	 	 	 	 dd!ed&ee(jb                     d(ed;ed1ee   d#ee(jT                     d.ee(jh                     d
ee   de	de(j                  fd=ZJ	 	 dd!ed"e'e(j                     d#ee(jT                     d
ee   de	de+e+e(jX                        fd>ZL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd!ed?ee'e(j                        d@ee'e(j                        d&ee(jb                     d'ee(jd                     d(ed)ed*e
ee+e   e(jf                  f   d+e
ee+e   f   d,ee   d1ee   d3ee(jz                     dAee(j                     d#ee(jT                     d.ee(jh                     d
ee   de	de+e(jX                     f$dBZO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd!ed6ed?ee'e
e(jl                  e+e   f         d@ee'e
e(jl                  e+e   f         d&eeEjb                     d'eeEjd                     d(ed7ed,ee   d*e
ee'e   eEjf                  f   d+e
ee'e   f   d1ee   d3eeEjz                     d8ee(j                     dAee(j                     d#ee(jT                     d.ee(jh                     d
ee   de	de(j                  f(dCZP	 	 	 	 	 	 	 	 	 	 	 	 	 dd!edDee(j                     dEee'e(j                        d&ee(jb                     d'ee(jd                     d(ed)ed*e
ee+e   e(jf                  f   d+e
ee+e   f   d1ee   d3ee(jz                     d#ee(jT                     d.ee(jh                     d
ee   de	de+e(jX                     f dFZS	 	 dd!ed"e'e(j                     d#ee(jT                     d
ee   de	de+e+e(jX                        fdGZU	 	 	 	 	 	 	 	 	 dd!edHee(jb                     d(edIee(j                     d)ee(jl                     d*e
ee'e   e(jf                  f   d+e
ee'e   f   d#ee(jT                     d.ee(jh                     d
ee   de	dee+e(j                     ee(jl                     f   fdJZX	 	 	 	 dd!edKee(jb                     dLed.ee(jh                     d
ee   de	de(j                  fdMZZ	 	 	 	 	 	 dd!edNedOee(jb                     d(edLed
ee   d#ee(jT                     d.ee(jh                     de	de(j                  fdPZ\	 	 	 dd!edQe(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fdTZ`	 	 	 dd!edQe'e(j                     dRedSee(j                     d.ee(jh                     de	de(j                  fdUZb	 	 	 dd!edVe'e   dQe(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fdWZd	 	 	 	 	 dd!edXe'e(jl                     d*e
ee'e   e(jf                  f   d+e
ee'e   f   d#ee(jT                     d.ee(jh                     d
ee   de	de+e(j                     fdYZeefdQe(j                  deej                  eejh                     f   fdZ       ZgefdQe(j                  d.ee(jh                     deEj                  fd[       Zhefd\ej                  de+ejl                     fd]       ZiefdQe(j                  deee+eEj                        eeEjb                     f   fd^       Zk	 	 	 dd!ed\e(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fd_Zl	 	 	 	 dd!ed`e(j                  dQe(j                  dNee   dRedSee(j                     d.ee(jh                     de	de(j                  fdaZn	 	 	 dd!ed`e(j                  dQe(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fdbZo	 	 	 dd!edce'e   dQe(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fddZp	 	 	 dd!ed\e(j                  dRedSee(j                     d.ee(jh                     de	de(j                  fdeZq	 	 dd!edfe'e(j                     dRedSee(j                     de	de+e(j                     fdgZs	 ddhe'e(j                     d
ee   de	defdiZud!ede	de(j                  fdjZwde	de(j                  fdkZxde	de(j                  fdlZzd!ede	de(j                  fdmZ|d!ede	defdnZ}	 	 	 	 	 	 	 	 dd!edoee(j                     dpee(j                     dqee(j                      dree(j                     dsee(j                     d
ee   dteeee(j                  f      duee(j
                     de	defdvZ	 dd!ed
ee   de	defdwZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd!edqee
e(j                  eee(j                  f   f      dxee   dyee   dzee   d{ee   dree(j                     doee(j                     d|ee(j                     dsee(j                     d}ee(j                     d
ee   dteeee(j                  f      d~ee(j                     duee(j
                     de	def"dZ	 	 	 	 	 	 	 	 	 	 	 	 	 dd!edqe
e(j                  eee(j                  f   f   dxee   dyee   dzee   d{ee   dree(j                     doee(j                     d|ee(j                     dsee(j                     d}ee(j                     d
ee   dteeee(j                  f      d~ee(j                     duee(j
                     de	def"dZedee   fd       Z	 	 	 	 dded!edededee   dRed.ee(jh                     ddfdZ	 	 	 	 	 	 dd!edee(j                     dededee   dedRed.ee(jh                     de	ddfdZ	 	 	 	 	 	 dd!edQee(j*                     dededee   dedRed.ee(jh                     de	ddfdZ	 	 	 	 	 	 	 	 dd!edVe
eee(j`                  f   e(j`                  ee(j.                     f   d`eeee	e	f         dXeee(jl                        dededee   dedRed.ee(jh                     de	ddfdZ	 	 	 	 dd!ededee(j2                     dee(j2                     dRedSee(j                     de	de(j                  fdZ	 	 dd!ededRedSee(j                     de	de(j                  fdZd!ede	de+e(j8                     fdZ	 dd!edRede	dee(j8                     fdZ	 dd!ededRede	dee   f
dZde	de+e(j8                     fdZddRede	de(j8                  fdZ	 ddedRede	dee   fdZ	 	 	 	 dd!ededee   dee   dee(jF                     dRede	dee   fdZd!edede	de+e(j8                     fdZ	 dd!ededRede	dee(j8                     f
dZ	 dd!edededRede	dee   fdZ	 	 	 	 dd!edededee   dee   dee(jF                     dRede	dee   fdZdede	de(jR                  fdZde	de(jR                  fdZde	de(jR                  fdZ	 	 	 	 dd!ede(jZ                  dee   dyee   dee+e      d
ee   de	defdZ	 dd!ede(jZ                  d
ee   de	def
dZde(j`                  fdZ xZS )QdrantRemote   Nurlport	grpc_portprefer_grpchttpsapi_keyprefixtimeouthostgrpc_optionsauth_token_providercheck_compatibilitykwargsc                    t        |   d0i | || _        || _        |
xs i | _        ||n|d u| _        | j
                  rdnd| _        |xs d| _        t        | j                        dkD  r&| j                  d   dk7  rd| j                   | _        ||	t        d| d|	       |	-|	j                  d      s|	j                  d	      rt        d
      |r
|j                  d      rd| }t        |      }|j                  |j                  c| _        | _        |j                   r%|j                   dk(  | _        |j                   | _        | j                  r| j                  n|| _        | j                  r'|j"                  rt        d| d|j"                         |j"                  r|j"                  | _        | j                  dvr*t        d| j                         |	xs d| _        || _        |t%        j&                  |      nd }|| _        || _        |j-                  dd       }|%| j                  dv rt/        j0                  d d      }|j-                  dd      }g | _        |j-                  di       j5                         D ci c]  \  }}||
 c}}| _        |M| j                  dk(  rt9        dt:        d       || j6                  d<   | j2                  j=                  d|f       t>        j@                  jC                  d      }tE        jF                         }d| d| }|| j6                  d<   || j                  d<   |j-                  d d       }|'tI        |tJ              stM        d!tO        |             |tJ        jP                  k(  rt        d"      || _)        | j                  | j                   d#| j                   n| j                  }| j                   d$| }tU        || j                        | _+        | j6                  |d%|| _,        ||| jX                  d<   ||| jX                  d&<   || _-        n| j\                  | _-        | j*                  E| j                  dk(  rt9        d't:        d       t_        | j*                        }|| jX                  d(<   ta        d0d)| jV                  i| jX                  | _1        d | _2        d | _3        d | _4        d | _5        d | _6        d | _7        d | _8        d | _9        d | _:        d| _;        |r	 t>        j@                  jC                  d      }ty        | jV                  | j6                  | jX                  j{                  d(            }|st9        d*t:        d       y t}        ||      st9        d+| d,| d-t:        d       y y y c c}}w # t~        $ r#}t        j                  d.| d/       Y d }~y d }~ww xY w)1Nr.   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 )r8   r.   zUnknown scheme: limits)r;   z	127.0.0.1)max_connectionsmax_keepalive_connectionshttp2F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?   r1   z8Auth token provider is used with an insecure connection.authr2   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 None )Bsuper__init___prefer_grpc
_grpc_port_grpc_options_https_scheme_prefixlen
ValueError
startswithr   r2   r+   _host_portschemepathmathceil_api_key_auth_token_providerpophttpxLimits_grpc_headersitems_rest_headersr   UserWarningappend	importlibr@   versionplatformpython_version
isinstancer   	TypeErrortypeDeflate_grpc_compressionr   rest_uri
_rest_args_timeoutDEFAULT_GRPC_TIMEOUTr   r!   openapi_client_grpc_channel_grpc_points_client_grpc_collections_client_grpc_snapshots_client_grpc_root_client_aio_grpc_points_client_aio_grpc_collections_client_aio_grpc_snapshots_client_aio_grpc_root_client_closedr   getr   	Exceptionloggingdebug)selfr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   
parsed_urlrq   r<   r?   kvclient_versionri   
user_agentrF   addressbase_urlbearer_authserver_versioner	__class__s                                E/RAG/venv/lib/python3.12/site-packages/qdrant_client/qdrant_remote.pyrL   zQdrantRemote.__init__1   s   $ 	"6"'#)/R$0egT6I"&++w6|t||q T\\!_%;t||n-DL?t/J3%zZ^Y_`aa!;tz?Z6 
 ~~k* 3%j'nJ%/__joo"DJ
  (//7:)00'+zztDJ||
 !U,z.?A  )||#44 #3DLL>!BCC,DJDJ #*"5DIIg4 	  $7!Hd+>zz77 dVWX

7E*/5zz*b/I/O/O/QR/Qtq!ad/QR||v%J(  -4Dy)%%y'&:;"++33OD!002%n%5Xn=MN
+5<(8B45 39**=OQU2V'
;K[0Y559:J5K4LN  {222x  "226**2HTZZL$**.djjll^3wi0$,,7&*&8&85SFS(.DOOH%)1DOOI&$DM 55DM$$0||v%V(  %T%>%>?K&1DOOF#3; 4
4
oo4

 ">B HL%DH#<@BF$LP)HL'@D""!*!3!3!;!;O!L!3MM4#5#5t7J7J67R" & !P!,#$	 '~~F "88H I##1"2 3b!b "-#$ G [ SF  4RD8YZ s%   V8"A-V> %V> >	W*W%%W*returnc                     | j                   S N)r}   r   s    r   closedzQdrantRemote.closed   s    ||    
grpc_gracec                 @   t        | d      r'| j                  	 | j                  j                          	 | j                  j                          d| _        y # t        $ r t	        dt
        d       Y @w xY w# t        $ r t	        dt
        d       Y d| _        y w xY w)Nrt   zKUnable to close grpc_channel. Connection was interrupted on the server siderA   rB   zNUnable to close http connection. Connection was interrupted on the server sideT)	hasattrrt   closeAttributeErrorr   RuntimeWarningrs   r   r}   )r   r   r6   s      r   r   zQdrantRemote.close   s    4)d.@.@.L""((*	%%' ! " i+   	h' 	s"   A A8 A54A58BBc                     t        |       }|j                  |j                  |j                  |j                  f\  }}}}||||fS r   )r   rX   r2   r+   rY   )r*   parse_resultrX   r2   r+   r0   s         r   
_parse_urlzQdrantRemote._parse_url  sP    %cN	&
"dF tT6))r   c           	         | j                   rt        d      | j                  ^t        | j                  | j
                  | j                  | j                  | j                  | j                  | j                        | _        y y )Nz=Client was closed. Please create a new QdrantClient instance.)r2   r+   sslr@   optionscompressionr4   )r}   RuntimeErrorrt   r   rV   rN   rP   ra   rO   rn   r]   r   s    r   _init_grpc_channelzQdrantRemote._init_grpc_channel  sn    <<^__%!,ZZ__KK++** 22 %)$=$=
"D &r   c                 l    | j                          t        j                  | j                        | _        y r   )r   r   
PointsStubrt   ru   r   s    r   _init_grpc_points_clientz%QdrantRemote._init_grpc_points_client"  s%    !#'??43E3E#F r   c                 l    | j                          t        j                  | j                        | _        y r   )r   r   CollectionsStubrt   rv   r   s    r   _init_grpc_collections_clientz*QdrantRemote._init_grpc_collections_client&  s'    !(,(<(<T=O=O(P%r   c                 l    | j                          t        j                  | j                        | _        y r   )r   r   SnapshotsStubrt   rw   r   s    r   _init_grpc_snapshots_clientz(QdrantRemote._init_grpc_snapshots_client*  s'    !&*&8&89K9K&L#r   c                 l    | j                          t        j                  | j                        | _        y r   )r   r   
QdrantStubrt   rx   r   s    r   _init_grpc_root_clientz#QdrantRemote._init_grpc_root_client.  s%    !!%1C1C!Dr   c                 R    | j                   | j                          | j                   S )zgRPC client for collections methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        )rv   r   r   s    r   grpc_collectionszQdrantRemote.grpc_collections2  s(     ((0..0,,,r   c                 R    | j                   | j                          | j                   S )z}gRPC client for points methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        )ru   r   r   s    r   grpc_pointszQdrantRemote.grpc_points=  s(     ##+))+'''r   c                 R    | j                   | j                          | j                   S )zgRPC client for snapshots methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        )rw   r   r   s    r   grpc_snapshotszQdrantRemote.grpc_snapshotsH  s(     &&.,,.***r   c                 R    | j                   | j                          | j                   S )z{gRPC client for info methods

        Returns:
            An instance of raw gRPC client, generated from Protobuf
        )rx   r   r   s    r   	grpc_rootzQdrantRemote.grpc_rootS  s(     !!)'')%%%r   c                     | j                   S ztREST Client

        Returns:
            An instance of raw REST API client, generated from OpenAPI schema
        rs   r   s    r   restzQdrantRemote.rest^       """r   c                     | j                   S r   r   r   s    r   r8   zQdrantRemote.httpg  r   r   collection_namerequestsconsistencyc           
      f   | j                   r |D cg c]4  }t        |t        j                        rt	        j
                  ||      n|6 }}t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||      ||n| j                        }|j                  D cg c]/  }|j                  D cg c]  }t        j                   |       c}1 c}}S |D cg c]3  }t        |t        j"                        rt        j$                  |      n|5 }}| j&                  j(                  j+                  |||t        j,                  |            j                  }	|	J d       |	S c c}w c c}w c c}}w c c}w )N)r   search_pointsread_consistencyr1   r1   searches)r   r   r1   search_request_batchzSearch batch returned None)rM   rj   r"   SearchRequestr   convert_search_requestr   ReadConsistencyconvert_read_consistencyr   SearchBatchr   SearchBatchPointsrq   resultr   convert_scored_pointSearchPointsconvert_search_pointsr8   
search_apisearch_batch_pointsSearchRequestBatch
r   r   r   r   r1   r6   rgrpc_reshithttp_ress
             r   search_batchzQdrantRemote.search_batchp  s     " "A "!V%9%9: 55aI "   +':6;Q;Q'RS(AA+N151A1A1M1M&&$3"*%0#	 $+#6DMM 2N 2H U]TcTcTcqJ#005JTc  "!A 9C1dFWFW8X11!4^__!  
 		$$88$3 +#)/)B)BH)U	 9 
 &  'E)EE'OO. Ks#   9FF()F#F(8F.#F(query_vectorquery_filtersearch_paramslimitoffsetwith_payloadwith_vectorsscore_thresholdappend_payloadshard_key_selectorc                    |
st        dt        dd       |
}t        |t        j                        r|j                         }| j                  r|d }d }t        |t        j                        r|j                  }|j                  }nt        |t        j                        rM|j                  }t        j                  |j                  j                        }|j                  j                  }n&t        |t               r|d   }|d   }nt#        |      }t        |t$        j&                        rt)        j*                  |      }t        |t$        j,                        rt)        j.                  |      }t        |t1        t$        j2                              rt)        j4                  |      }t        |t1        t$        j6                              rt)        j8                  |      }t        |t1        t$        j:                              rt)        j<                  |      }t        |t1        t$        j>                              rt)        j@                  |      }| jB                  jE                  t        jF                  ||||||||||	||||	      ||n| jH                  
      }|jJ                  D cg c]  }tM        jN                  |       c}S t        |t               rt        j                  |d   |d         }t        |t        j&                        rtM        j*                  |      }t        |t        j,                        rtM        j.                  |      }t        |t        jP                        rtM        jR                  |      }| jT                  jV                  jY                  |||t%        jZ                  ||||||||	|	            }|jJ                  }|J d       |S c c}w )NzUUsage of `append_payload` is deprecated. Please consider using `with_payload` insteadr)   zsearch-append-payloadrC   rD   rE   idxdatar      model)r   vectorvector_namefilterr   r   r   r   paramsr   r   r1   sparse_indicesr   r   namer   )	r   r   r   r   r   with_vectorr   r   	shard_key)r   r   r1   search_requestSearch returned None).r   DeprecationWarningrj   npndarraytolistrM   typesNamedVectorr   r   NamedSparseVectorr   SparseIndicesindicesvaluestuplelistr"   Filterr   convert_filterSearchParamsconvert_search_paramsr   WithPayloadInterfaceconvert_with_payload_interface
WithVectorconvert_with_vectorsr   r   ShardKeySelectorconvert_shard_key_selectorr   Searchr   rq   r   r   r   WithPayloadSelectorconvert_with_payload_selectorr8   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r6   r   r   r   resr   search_resultr   s                         r   searchzQdrantRemote.search  sK   . o++	 *LlBJJ/'..0LK!N,(9(9:%,,*//L%*A*AB*//!%!3!39L9L9T9T!U%,,33L%0*1o%al+,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"'+'7'7'>'>!!$3! +'!!-!-($3%0##1'9  $+#6DMM# (? (C( EHJJOJSJ33C8JOO ,.$00l1ol[\o^,4)88|L-):):; * @ @ O,(@(@A)GGU II00>> /'%33''!( ,!-$30
 	 ? M  9F8L8LF%='==%MC Ps   ,O"queryusingprefetchlookup_fromc                    | j                   r|t        j                  |      }t        |t        j
                        rt        j                  |      g}t        |t              r>|D cg c]3  }t        |t        j
                        rt        j                  |      n|5 }}t        |t        j                        rt        j                  |      }t        |t        j                        rt        j                  |      }t        |	t        t        j                              rt        j                  |	      }	t        |
t        t        j                              rt        j                   |
      }
t        |t        j"                        rt        j$                  |      }t        |t        t        j&                              rt        j(                  |      }t        |t        t        j*                              rt        j,                  |      }| j.                  j1                  t3        j4                  |||||||
|	|||||||      ||n| j6                        }|j8                  D cg c]  }t;        j<                  |       }}t	        j>                  |      S t        |t2        j0                        rt;        j                  |      }t        |t2        j@                        rt;        j                  |      }t        |t              r>|D cg c]3  }t        |t2        j@                        rt;        j                  |      n|5 }}t        |t2        j                        rt;        j                  |      }t        |t2        j                        rt;        j                  |      }t        |	t2        jB                        rt;        jD                  |	      }	t        |t2        j"                        rt;        j$                  |      }t	        jF                  ||||||||||
|	|      }| jH                  jJ                  jM                  ||||      }|j8                  }|J d       |S c c}w c c}w c c}w )Nr   )r   r  r  r   r   r   r   r   r   r   r  r  r1   r   r   r   points)r   r  r  r  r   r   r   r   r   r   r   r  )r   r   r1   query_requestr   )'rM   r   convert_queryrj   r"   Prefetchconvert_prefetch_queryr  r  r  r  r  r   r  r	  r
  r  LookupLocationconvert_lookup_locationr   r   r  r  r   Queryr   QueryPointsrq   r   r   r   QueryResponsePrefetchQueryr  r  QueryRequestr8   r   query_points)r   r   r  r  r  r   r   r   r   r   r   r   r  r   r   r1   r6   pr  r   scored_pointsr  query_resultr   s                           r   r&  zQdrantRemote.query_points  s   <  "007(FOO4&==hGH(D) &% =Gq&//<ZJ55a8`aa%  
 ,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+v'<'<=(@@M+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"&*&6&6&<&<  $3%'!!-!-($3 +#'9%0" $+#6DMM% '= 'C* NQZZXZcZ<<SAZMX''}== %,"007(D$6$67%<<XF(D)
 &	 & "!T%7%78 55a8 &	   ,4)88|L-):):; * @ @ O,(@(@A)GGU+t':':;(@@M"//,!#$ /()'M  99//<< /'+	 = L 6B5H5HF%='==%MK^ Ys   )8Q*,Q/8Q4c                    | j                   r|D cg c]4  }t        |t        j                        rt	        j
                  ||      n|6 }}t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||      ||n| j                        }|j                  D cg c]C  }t        j                  |j                  D cg c]  }t!        j"                  |       c}      E c}}S |D cg c]3  }t        |t        j$                        rt!        j&                  |      n|5 }}| j(                  j*                  j-                  |||t        j.                  |            j                  }	|	J d       |	S c c}w c c}w c c}}w c c}w )N)r   r&  r   r1   r   r  r   )r   r   r1   query_request_batchzQuery batch returned None)rM   rj   r"   r%  r   convert_query_requestr   r   r   r   
QueryBatchr   QueryBatchPointsrq   r   r#  r   r   r"  convert_query_pointsr8   r   query_batch_pointsQueryRequestBatchr   s
             r   r0  zQdrantRemote.query_batch_points  s     " "A "!V%8%89 44QH "   +':6;Q;Q'RS(AA+N040@0@0K0K%%$3!)%0#	 $+#6DMM 1L 1H "	 )A $$LMHHUHSJ;;C@HU )	  "!A 8B!TEUEU7V003\]]!  
 		$$77$3 +#(.(@(@((S	 8 
 &  'D)DD'OU0 Vs#   9F2"F<8F7
F<&8G7F<group_by
group_sizewith_lookupc                 	   | j                   r|t        j                  |      }t        |t        j
                        rt        j                  |      g}t        |t              r>|D cg c]3  }t        |t        j
                        rt        j                  |      n|5 }}t        |t        j                        rt        j                  |      }t        |t        j                        rt        j                  |      }t        |
t        t        j                              rt        j                  |
      }
t        |t        t        j                              rt        j                   |      }t        |t        j"                        rt        j$                  |      }t        |t&              rt)        j"                  |      }t        |t        j*                        rt        j,                  |      }t        |t        t        j.                              rt        j0                  |      }t        |t        t        j2                              rt        j4                  |      }| j6                  j9                  t)        j:                  di d|d|d|d|d|d|d	|
d
|d|d|d|d|	d|d|d|d|d|||n| j<                        j>                  }tA        jB                  |      S t        |t(        jD                        rtA        j                  |      }t        |t(        jF                        rtA        j                  |      }t        |t              r>|D cg c]3  }t        |t(        jF                        rtA        j                  |      n|5 }}t        |t(        j                        rtA        j                  |      }t        |t(        j                        rtA        j                  |      }t        |
t(        jH                        rtA        jJ                  |
      }
t        |t(        j"                        rtA        j$                  |      }t        |t(        j*                        rtA        j,                  |      }t	        jL                  ||||||||||	||
||      }| jN                  jP                  jS                  ||||      }|J d       |j>                  S c c}w c c}w )Nr   
collectionr   r  r  r   r   r   r   r   r   r  r2  r3  r4  r  r1   r   r   r   )r   r  r  r  r   r   r   r   r2  r3  r   r   r4  r  )r   r   r1   query_groups_requestz%Query points groups API returned NonerJ   )*rM   r   r  rj   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QueryPointGroupsrq   r   r   convert_groups_resultr!  r$  r  r  QueryGroupsRequestr8   r   query_points_groups)r   r   r2  r  r  r  r   r   r   r3  r   r   r   r4  r  r   r   r1   r6   r'  r   r  r)  s                          r   r@  z QdrantRemote.query_points_groups  s   @  "007(FOO4&==hGH(D) &% =Gq&//<ZJ55a8`aa%  
 ,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+v'8'89(<<[I+s+"ooE+v'<'<=(@@M+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"/3/?/?/K/K%% $3 & (	
   ". ". ) %4   &  * !, !, $  (:!" &1#& $+#6DMM) 0L 0* f+ , 33F;;%,"007(D$6$67%<<XF(D)
 &	 & "!T%7%78 55a8 &	   ,4)88|L-):):; * @ @ O,(@(@A)GGU+t7(<<[I+t':':;(@@M"55,!#$ /!%()''M"  99//CC /'%2	 D L  +T-TT+&&&[~s   )8S-&8S2c                    | j                   rd }d }t        |t        j                        rt	        j
                  |      }t        |t              rt        j                  |      }t        |t        j                        r|j                  }|j                  }nt        |t        j                        rM|j                  }t        j                  |j                  j                        }|j                  j                  }n&t        |t               r|d   }|d   }nt#        |      }t        |t        j$                        rt	        j&                  |      }t        |t        j(                        rt	        j*                  |      }t        |t-        t        j.                              rt	        j0                  |      }t        |	t-        t        j2                              rt	        j4                  |	      }	t        |t-        t        j6                              rt	        j8                  |      }t        |t-        t        j:                              rt	        j<                  |      }| j>                  jA                  t        jB                  di d|d|d|d	|d
|d|d|	d|d|d|
d|d|d|d|d|d|||n| jD                        jF                  }tI        jJ                  |      S t        |t        j                        rtI        j
                  |      }t        |t               r"tM        t        j                  |d   |d         }t        |tN        jP                        r|jS                         }t        |t        j$                        rtI        j&                  |      }t        |t        j(                        rtI        j*                  |      }t        |t        jT                        rtI        jV                  |      }tM        t        jX                  |||||	|
|||||      }| jZ                  j\                  j_                  ||||      jF                  S )Nr6  r   r   r   r   r   r   r   r   r   r3  r   r   r   r   r2  r   r4  r1   r   r   r   r   )r   r   r   r   r   r   r2  r3  r   r4  r   )search_groups_requestr   r   r1   rJ   )0rM   rj   r"   r9  r   r:  r;  r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r  r	  r
  r  r   r   r  r  r   SearchGroupsSearchPointGroupsrq   r   r   r>  r   r   r   r   r  r  SearchGroupsRequestrs   r   search_point_groups)r   r   r   r2  r   r   r   r3  r   r   r   r4  r   r   r1   r6   r   r   r   r   rB  s                        r   search_groupszQdrantRemote.search_groupsx  s   0 K!N+v'8'89(<<[I+s+"ooE,(9(9:%,,*//L%*A*AB*//!%!3!39L9L9T9T!U%,,33L%0*1o%al+,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"(,(8(8(E(E&& $3! !, (	
    * ". ". ) %4 & &1 !, $ $2  (:!$ $+#6DMM' )F )( f) , 33F;;+t7(<<[I,.(&&%a'?  ,

3+224,4)88|L-):):; * @ @ O,(@(@A)GGU$-**##$)( /!%',%! &&11EE&; /'	 F 
 fr   samplec	                 2   | j                   rt        |t        j                        rt	        j
                  |      }t        |t        t        j                              rt	        j                  |      }t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||||||      ||n| j                        }
t!        j"                  |
j$                        S t        |t        j                        rt!        j
                  |      }| j&                  j(                  j+                  |||t        j,                  |||||            j$                  }|J d       |S )Nr   r   r   rH  r   r  r1   r   r   r   r   r   rH  r  r   r   r   r1   search_matrix_requestz(Search matrix pairs returned None result)rM   rj   r"   r  r   r  r   r  r  r   r   r   SearchMatrixPairsr   SearchMatrixPointsrq   r   convert_search_matrix_pairsr   rs   r   search_matrix_pairsSearchMatrixRequestr   r   r   r   rH  r  r   r   r1   r6   responsesearch_matrix_results               r   rQ  z QdrantRemote.search_matrix_pairs  sl    ,6)88|L,.A&BYBY.Z[%/%J%JK]%^"+':6;Q;Q'RS(AA+N''99''$3'!#%0'9	 $+#6DMM : H 99(//JJlDKK0%44<HL#22==QQ+#"("<"<,##	  R  
 & 	 $/[1[[/##r   c	                 2   | j                   rt        |t        j                        rt	        j
                  |      }t        |t        t        j                              rt	        j                  |      }t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||||||      ||n| j                        }
t!        j"                  |
j$                        S t        |t        j                        rt!        j
                  |      }| j&                  j(                  j+                  |||t        j,                  |||||            j$                  }|J d       |S )Nr   rJ  r   rK  rL  z*Search matrix offsets returned None result)rM   rj   r"   r  r   r  r   r  r  r   r   r   SearchMatrixOffsetsr   rO  rq   r   convert_search_matrix_offsetsr   rs   r   search_matrix_offsetsrR  rS  s               r   rY  z"QdrantRemote.search_matrix_offsets5  sl    ,6)88|L,.A&BYBY.Z[%/%J%JK]%^"+':6;Q;Q'RS(AA+N'';;''$3'!#%0'9	 $+#6DMM < H ;;HOOLLlDKK0%44<HL#22==SS+#"("<"<,##	  T  
 & 	 $/]1]]/##r   c           
      T   | j                   r |D cg c]4  }t        |t        j                        rt	        j
                  ||      n|6 }}t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||      ||n| j                        }|j                  D cg c]/  }|j                  D cg c]  }t        j                   |       c}1 c}}S |D cg c]3  }t        |t        j"                        rt        j$                  |      n|5 }}| j&                  j(                  j+                  |||t        j,                  |            j                  }	|	S c c}w c c}w c c}}w c c}w )N)r   recommend_pointsr   r1   r   r   )r   r   r1   recommend_request_batch)rM   rj   r"   RecommendRequestr   convert_recommend_requestr   r   r   r   RecommendBatchr   RecommendBatchPointsrq   r   r   r   RecommendPointsconvert_recommend_pointsr8   r   recommend_batch_pointsRecommendRequestBatchr   s
             r   recommend_batchzQdrantRemote.recommend_batchm  s     " "A "!V%<%<= 88OL "   +':6;Q;Q'RS(AA+N151A1A1P1P))$3%-%0#	 $+#6DMM 2Q 2H U]TcTcTcqJ#005JTc  " "A "!T%9%9: 77: "   8<yy7K7K7b7b /'(.(D(Dh(W	 8c 8
 f  OQ. Ks#   9FF)FF8F%Fpositivenegativestrategyc                    |g }|g }| j                   rt        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t	        |t
        j                        rt        j                  |      }t	        |t
        j                        rt        j                  |      }t	        |t        t
        j                              rt        j                  |      }t	        |	t        t
        j                              rt        j                  |	      }	t	        |t
        j                        rt        j                   |      }t	        |t        t
        j"                              rt        j$                  |      }t	        |t&        t
        j(                  f      rt        j*                  |      }t	        |t        t
        j,                              rt        j.                  |      }| j0                  j3                  t5        j6                  di d|d|d|d|d|d|d|	d	|d
|d|
d|d|d|d|d|d|d|d|||n| j8                        }|j:                  D cg c]  }t=        j>                  |       c}S |D cg c]3  }t	        |t4        j@                        rt=        jB                  |      n|5 }}|D cg c]3  }t	        |t4        j@                        rt=        jB                  |      n|5 }}t	        |t4        j                        rt=        j                  |      }t	        |t4        j                        rt=        j                  |      }t	        |t4        jD                        rt=        jF                  |      }t	        |t4        j                        rt=        j                   |      }| jH                  jJ                  jM                  |||t        jN                  ||||||||	|
||||            j:                  }|J d       |S c c}w c c}w c c}w )Nr   r   rf  rg  r   r   r   r   r   r   r   r  r  r   rh  positive_vectorsnegative_vectorsr   r1   r   )r   rf  rg  r   r   r   r   r   r   r  r  rh  r   )r   r   r1   recommend_request"Recommend points API returned NonerJ   )(rM   r   !convert_recommend_examples_to_ids%convert_recommend_examples_to_vectorsrj   r"   r  r  r  r  r   r  r	  r
  r  r  r   r   r   r;  RecommendStrategyconvert_recommend_strategyr  r  r   	Recommendr   ra  rq   r   r   r   PointIdconvert_point_idr  r  rs   r   r[  r]  )r   r   rf  rg  r   r   r   r   r   r   r   r  r  rh  r   r   r1   r6   positive_idsrj  negative_idsrk  r  r   exampler   s                             r   	recommendzQdrantRemote.recommend  s=   ( HH%GGQL)OOPXY%GGQL)OOPXY,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+v'<'<=(@@M+':6;Q;Q'RS(AA+N(S&*B*B$CD%@@J,.A&BYBY.Z[%/%J%JK]%^"'+'7'7'A'A$$ $3) * (	
   " ". ". ) %4   !, &1 & &6  &6!" (:#$ $%( $+#6DMM+ (B (C0 EHJJOJSJ33C8JOO  (  (G "'4<<8 //8 !  (    (  (G "'4<<8 //8 !  (   ,4)88|L-):):; * @ @ O,(@(@A)GGU+t':':;(@@M((33DD /'"("9"9'%%(!!- ,$3 +%0#	 E & f' ( %K'KK%Mk Ps   Q08Q.8Qc                 	   ||ng }||ng }| j                   rt        |t        j                        rt	        j
                  |      }t        |t              rt        j                  |      }t	        j                  |      }t	        j                  |      }t	        j                  |      }t	        j                  |      }t        |t        j                        rt	        j                  |      }t        |t        j                        rt	        j                  |      }t        |
t        t        j                              rt	        j                   |
      }
t        |t        t        j"                              rt	        j$                  |      }t        |t        j&                        rt	        j(                  |      }t        |t        t        j*                              rt	        j,                  |      }t        |t        t        j.                  f      rt	        j0                  |      }t        |t        t        j2                              rt	        j4                  |      }| j6                  j9                  t        j:                  di d|d|d|d|d|d|d	|d
|d|
d|d|	d|d|d|d|d|d|d|d|d|||n| j<                        j>                  }|J d       tA        jB                  |      S t        |t        j                        rtA        j
                  |      }|D cg c]3  }t        |t        jD                        rtA        jF                  |      n|5 }}|D cg c]3  }t        |t        jD                        rtA        jF                  |      n|5 }}t        |t        j                        rtA        j                  |      }t        |t        j                        rtA        j                  |      }t        |
t        jH                        rtA        jJ                  |
      }
t        |t        j&                        rtA        j(                  |      }| jL                  jN                  jQ                  |||tS        t        jT                  f||||||||
||	|||||d      j>                  }|J d       |S c c}w c c}w )Nr6  r   r   rf  rg  r   r2  r   r3  r   r   r   r   r  r  r   r4  rh  rj  rk  r   r1   r   z"Recommend groups API returned None)rf  rg  r   r2  r   r3  r   r   r   r   r  r  r4  rh  r   )r   r   r1   recommend_groups_requestrm  rJ   )+rM   rj   r"   r9  r   r:  r;  r   rn  ro  r  r  r  r  r   r  r	  r
  r  r  r   r   r   rp  rq  r  r  r   RecommendGroupsRecommendPointGroupsrq   r   r   r>  rs  rt  r  r  rs   r   recommend_point_groupsr   RecommendGroupsRequest)r   r   r2  rf  rg  r   r   r   r3  r   r   r   r  r  r4  rh  r   r   r1   r6   ru  rj  rv  rk  r  point_idr   s                              r   recommend_groupszQdrantRemote.recommend_groups(  s   ,  (38'38+v'8'89(<<[I+s+"ooE%GGQL)OOPXY%GGQL)OOPXY,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+v'<'<=(@@M+':6;Q;Q'RS(AA+N(S&*B*B$CD%@@J,.A&BYBY.Z[%/%J%JK]%^"%)%5%5%E%E)) $3) * (	
 &    * ". ". ) %4   !, &1 !,  &!" &6#$ &6%& (:'( $), $+#6DMM/ &F &0 f1 4 ?H$HH?33C88+t7(<<[I !) !)H "(DLL9 //9!" !)   !) !)H "(DLL9 //9!" !)   ,4)88|L-):):; * @ @ O,(@(@A)GGU+t':':;(@@M((33JJ /')211*%%'%)(!- ,$3 + +%0!*	 K , f- 0 %K'KK%Mos   98S78Stargetcontextc                    |g }| j                   ra|8t        |t        t        j                              rt        j                  |      n|}|D cg c]3  }t        |t        j                        rt        j                  |      n|5 }}t        |t        j                        rt        j                  |      }t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        |	t        t        j                              rt        j                   |	      }	t        |t        j"                        rt        j$                  |      }t        |t        t        j&                              rt        j(                  |      }t        |t        t        j*                              rt        j,                  |      }| j.                  j1                  t3        j4                  |||||||	|||
||||      ||n| j6                        }|j8                  D cg c]  }t;        j<                  |       c}S |/t        |t2        j>                        rt;        j                  |      n|}|D cg c]3  }t        |t2        j                        rt;        j                  |      n|5 }}t        |t2        j                        rt;        j                  |      }t        |t2        j                        rt;        j                  |      }t        |t2        j@                        rt;        jB                  |      }t        |t2        j"                        rt;        j$                  |      }| jD                  jF                  jI                  |||t        jJ                  ||||||||	||
|            j8                  }|J d       |S c c}w c c}w c c}w )Nr   )r   r  r  r   r   r   r   r   r   r  r  r   r   r1   r   )r  r  r   r   r   r   r   r   r  r  r   )r   r   r1   discover_requestz!Discover points API returned None)&rM   rj   r   r"   RecommendExampler   convert_target_vectorContextExamplePairconvert_context_example_pairr  r  r  r  r  r	  r
  r  r  r   r   r   r  r  r   Discoverr   DiscoverPointsrq   r   r   r   TargetVectorr  r  rs   r   discover_pointsDiscoverRequest)r   r   r  r  r   r   r   r   r   r   r  r  r   r   r1   r6   pairr  r   r   s                       r   discoverzQdrantRemote.discover  s   $ ?G %v':6;R;R'ST 008 	  $ $D "$(A(AB ;;DA $   ,6)88|L-)<)<= * @ @ O,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+v'<'<=(@@M+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"'+'7'7'@'@##$3!#'!!-!-( +%0'9#  $+#6DMM# (A (C( EHJJOJSJ33C8JOO %*VT=N=N*O 008  $ $D "$(?(?@ ;;DA $   ,4)88|L-):):; * @ @ O,(@(@A)GGU+t':':;(@@M((33CC /'!'!7!7!#'(!!- , +0"	 D " f# $ %J'JJ%MEd Ps   8O=P*8Pc           
         | j                   r|D cg c]4  }t        |t        j                        rt	        j
                  ||      n|6 }}| j                  j                  t        j                  ||||      ||n| j                        }|j                  D cg c]/  }|j                  D cg c]  }t        j                  |       c}1 c}}S |D cg c]3  }t        |t        j                        rt        j                  |      n|5 }}| j                   j"                  j%                  |t        j&                  |      ||      j                  }	|	S c c}w c c}w c c}}w c c}w )N)r   r  r   r1   r   r   )r   discover_request_batchr   r1   )rM   rj   r"   r  r   convert_discover_requestr   DiscoverBatchr   DiscoverBatchPointsrq   r   r   r   r  convert_discover_pointsr8   r   discover_batch_pointsDiscoverRequestBatchr   s
             r   discover_batchzQdrantRemote.discover_batch@  s     " "A "!V%;%;< 77?K "   261A1A1O1O(($3$,%0#	 $+#6DMM 2P 2H U]TcTcTcqJ#005JTc  " "A "!T%8%89 66q9 "   8<yy7K7K7a7a /'-'B'BH'U'	 8b 8
 f  OK( Ks#   9EE&0E!E&8E,!E&scroll_filterorder_byc                    | j                   r(t        |t        t        j                              rt        j                  |      }t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        |	t        t        j                              rt        j                   |	      }	t        |t        t        j"                              rt        j$                  |      }| j&                  j)                  t+        j,                  |||||||||	|

      |
|
n| j.                        }|j0                  D cg c]  }t3        j4                  |       c}|j7                  d      r t3        j8                  |j:                        fS d fS t        |t*        j<                        rt3        j8                  |      }t        |t*        j                        rt3        j                  |      }t        |t*        j>                        rt3        j@                  |      }t        |t*        jB                        rt3        jD                  |      }| jF                  jH                  jK                  ||t        jL                  |||||||	      |
      j0                  }|J d       |jN                  |j:                  fS c c}w )Nr   )
r   r   r  r   r   r   r   r   r   r1   r   next_page_offset)r   r   r  r   r   r   r   )r   r   scroll_requestr1   z&Scroll points API returned None result)(rM   rj   r   r"   ExtendedPointIdr   convert_extended_point_idr  r  r  r	  r
  r  r   r   r  r  OrderByInterfaceconvert_order_by_interfacer   Scrollr   ScrollPointsrq   r   r   convert_retrieved_pointHasFieldrt  r  rs  OrderByconvert_order_byr  r  rs   
points_apiscroll_pointsScrollRequestr  )r   r   r  r   r  r   r   r   r   r   r1   r6   r  pointscroll_results                  r   scrollzQdrantRemote.scrollp  s    &"5f6L6L"MN#==fE-7 * 9 9 N,(;F<W<W(XY)HHV,(;F<M<M(NO)>>|L+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"($78O8O$PQ%@@J'+'7'7'>'>!!$3(%!!-!-%0'9# $+#6DMM (? (C  LO::V:%J66u=:V<< 23 ++C,@,@A    &$,,/#44V<-5 * 9 9 N(DLL1%66x@,(@(@A)GGU ##..<<$3 +#)#7#7,#!)%%1$0"4$ $ =  &   !,V.VV, '')G)GGGI Ws   $M!count_filterexactc           	         | j                   rt        |t        j                        rt	        j
                  |      }t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  |||||      ||n| j                        j                  }t        j                   |      S t        |t        j                        rt        j
                  |      }| j"                  j$                  j'                  |t        j(                  |||      |      j                  }|J d       |S )Nr   )r   r   r  r   r1   r   )r   r  r   )r   count_requestr1   z!Count points returned None result)rM   rj   r"   r  r   r  r   r  r  r   Countr   CountPointsrq   r   r   convert_count_resultrs   r  count_pointsCountRequest)	r   r   r  r  r   r1   r6   rT  count_results	            r   countzQdrantRemote.count  s<    ,6)88|L,.A&BYBY.Z[%/%J%JK]%^"''--  $3''9# $+#6DMM . 	 f  228<<lDKK0%44<HL**55BB+ --#,
  C 
 & 	 'L)LL'r   keyfacet_filterc	                    | j                   r't        |t        j                        rt	        j
                  |      }t        |t        t        j                              rt	        j                  |      }t        |t        t        j                              rt	        j                  |      }| j                  j                  t        j                  ||||||||      ||n| j                        }
t!        j"                  |
j$                  D cg c]  }t'        j(                  |       c}      S t        |t        j                        rt'        j
                  |      }| j*                  j,                  j/                  |||t        j0                  |||||            j2                  }|J d       |S c c}w )Nr   )r   r  r   r   r  r1   r   r   r   )hits)r   r  r   r   r  )r   r   r1   facet_requestz!Facet points returned None result)rM   rj   r"   r  r   r  r   r  r  r   r   r   Facetr   FacetCountsrq   r   FacetResponser  r   convert_facet_value_hitrs   r  facetFacetRequestr   )r   r   r  r  r   r  r1   r   r   r6   rT  r   facet_results                r   r  zQdrantRemote.facet  s    ,6)88|L,.A&BYBY.Z[%/%J%JK]%^"+':6;Q;Q'RS(AA+N''--  $3'#%0'9	 $+#6DMM . H &&IQW#j88=W  lDKK0%44<HL**55;;+# --,#	 < 
 & 	 'L)LL') Xs   F;r  waitorderingc                    | j                   rt        |t        j                        rt	        j
                  |j                  t        |j                              }t        t        |j                              D cg c]k  }t        j                  t	        j                  |j                  |         ||   |j                  "t	        j                  |j                  |         nd       m }}t        |t              r>|D 	cg c]3  }	t        |	t        j                        rt	        j                   |	      n|	5 }}	t        |t        j"                        rt	        j$                  |      }t        |t'        t        j(                              rt	        j*                  |      }| j,                  j/                  t        j0                  |||||      | j2                        j4                  }
|
J d       t7        j8                  |
      S t        |t              rU|D 	cg c]3  }	t        |	t        j                        rt7        j                   |	      n|	5 }}	t        j:                  ||      }t        |t        j                        rt        j<                  ||      }| j>                  j@                  jC                  ||||      j4                  }|J d       |S c c}w c c}	w c c}	w )N)idvectorspayloadr   r  r  r  r   r   Upsert returned None resultr  r   )batchr   )r   r  point_insert_operationsr  )"rM   rj   r"   Batchr   convert_batch_vector_structr  rS   idsranger   PointStructr  payloadsconvert_payloadr  convert_point_structWriteOrderingconvert_write_orderingr   r  r  r   UpsertUpsertPointsrq   r   r   convert_update_result
PointsListPointsBatchrs   r  upsert_points)r   r   r  r  r  r   r6   vectors_batchr   r  grpc_resulthttp_results               r   upsertzQdrantRemote.upsert0  s    &&,,/4>4Z4ZNNC

O5  %S_5  6 $$%??

3P -c 2  &: '66vs7KL!%  6   &$' "( "( &eV-?-?@ #77>"# "(   (F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"**11!!$3!%'9  2 	 f  *I,II*33K@@&$' "( "( &eT-=-=> #77>"# "(    **&DVW&&,,/++&DVW--88FF /(.!	 G 
 f  *I,II*A<s   ;A0K8K"8K'c           	         | j                   r|D cg c]  }t        j                  |       }}t        |t        j
                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }| j                  j                  t        j                  |||||      | j                        j                  }|J d       t!        j"                  |      S | j$                  j&                  j)                  ||t	        j                  ||      |      j                  S c c}w )Nr  r   r  r  )r   r  update_vectorsr  )rM   r   convert_point_vectorsrj   r"   r  r  r   r  r  r   UpdateVectorsr   UpdatePointVectorsrq   r   r   r  rs   r  r  )	r   r   r  r  r  r   r6   r  r  s	            r   r  zQdrantRemote.update_vectors  s6    KQR6%j66u=6FR(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"**88''$3!%'9  9 	 f  *I,II*33K@@&&11@@ /%33!0  " A  f+ Ss   Er  c                    | j                   r| j                  |      \  }}	|xs |	}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }| j                  j                  t        j                  ||t        j                  |      |||      | j                        j                   }
|
J d       t#        j$                  |
      S | j'                  |      \  }}| j(                  j*                  j-                  |||t/        t        j                  ||||            j                   S )N)names)r   r  r  points_selectorr  r   r   z#Delete vectors returned None result)r   r  r   r   )r   r  r  delete_vectors)rM   _try_argument_to_grpc_selectorrj   r"   r  r   r  r   r  r  r   DeleteVectorsr   DeletePointVectorsVectorsSelectorrq   r   r   r  '_try_argument_to_rest_points_and_filterrs   r  r  r   )r   r   r  r  r  r  r   r6   r  opt_shard_key_selectorr  _points_filters                r   r  zQdrantRemote.delete_vectors  sc    6:6Y6YZ`6a3O3!3!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"**88''$3 00% %4%'9	  9  f  *Q,QQ*33K@@#KKFSGW&&11@@ /!((("""0 	 A  fr   r  c                    | j                   rt        |t        t        j                              rt        j                  |      }|D 	cg c]<  }	t        |	t        t        j                              rt        j                  |	      n|	> }}	t        j                  |      }t        |t        t        j                              rt        j                  |      }t        |t        t        j                              rt        j                  |      }| j                  j                  t!        j"                  |||||||      ||n| j$                        j&                  }
|
J d       |
D cg c]  }t)        j*                  |       c}S t        |t         j,                        rt)        j.                  |      }|D 	cg c]3  }	t        |	t         j0                        rt)        j2                  |	      n|	5 }}	| j4                  j6                  j9                  ||t        j:                  ||||      |      j&                  }|J d       |S c c}	w c c}w c c}	w )N)r   r  r   r   r   r   r1   r   zRetrieve returned None result)r  r   r   r   )r   r   point_requestr1   z!Retrieve API returned None result)rM   rj   r   r"   r  r   r	  r  r  r  r   r   r  r  r   Getr   	GetPointsrq   r   r   r  r  r  rs  rt  rs   r  
get_pointsPointRequest)r   r   r  r   r   r   r   r1   r6   r   r   recordr  s                r   retrievezQdrantRemote.retrieve  sQ    ,(;F<W<W(XY)HHV  C "#':6;Q;Q'RS 88=    &::<HL+':6;Q;Q'RS(AA+N,.A&BYBY.Z[%/%J%JK]%^"%%))$3!-!-%0'9# $+#6DMM *  f  %F'FF%MSTV6J66v>VTT ,(@(@A)GGU C 6@T\\5R,,S1X[[  
 --88CC /'$11!- ,0	   D 
 f  *O,OO*o@ Us   
AI.I 8Ic                 T   d }t        |t              rtt        j                  t        j                  |D cg c]<  }t        |t        t        j                              rt        j                  |      n|> c}            }||fS t        |t        j                        r|}||fS t        |t        t        j                              rD|j                  t        j                  |j                        }t        j                  |      }||fS t        |t        j                        r2t        j                  t        t        j                   |            }||fS t        |t        j                        rt        j                  |      }||fS t#        dt%        |             c c}w )N)r  r  )r   "Unsupported points selector type: )rj   r  r   PointsSelectorPointsIdsListr   r"   r  r   r  r   r   r  convert_points_selectorr  r   FilterSelectorrT   rl   )clsr  r   r   r  s        r   r  z+QdrantRemote._try_argument_to_grpc_selector%  s    "fd#"11)) $* $*C  *#/B6CYCY/Z[ '@@E!$% $*	O4  222  3 34$O  222 )>)> ?@+%/%J%J6K[K[%\"(@@HO  222 .(@@&//?O  222	 ,"11@O  222 A$v,PQQ/s   AF%c                    t        |t              r\|D cg c]3  }t        |t        j                        rt	        j
                  |      n|5 }}t        t        j                  ||      }|S t        |t        j                        rt	        j                  |      }||_        |S t        |t        t        j                              r|}||_        |S t        |t        j                        rt        t        j                  ||      }|S t        |t        j                        r1t        t        j                  t	        j                  |      |      }|S t!        dt#        |             c c}w )Nr  )r   r   r  )rj   r  r   rs  r   rt  r   r"   PointIdsListr  r  r   r   r  r  r  rT   rl   )r  r  r   r   r  r  s         r   _try_argument_to_rest_selectorz+QdrantRemote._try_argument_to_rest_selectorG  sZ    fd# "!C 6@T\\5R,,S1X[[!   (##,O. %  3 34(@@HO(:O%   )>)> ?@$O(:O%  .'%%f@RO  ,'%%!008,O  A$v,PQQ5s   8E-r  c                 |    |j                  d      }|g S t        ||      }|dk(  rt        |j                        S g S )Npoints_selector_one_ofr  )
WhichOneofgetattrr  r  )r  r  r   vals       r   _points_selector_to_points_listz,QdrantRemote._points_selector_to_points_listk  sF     ))*BC<Iot,8= 	r   c                 :   d }d }t        |t              rB|D cg c]3  }t        |t        j                        rt	        j
                  |      n|5 }}||fS t        |t        j                        rit	        j                  |      }t        |t        j                        r|j                  }||fS t        |t        j                        r|j                  }||fS t        |t        j                        r|j                  }||fS t        |t        j                        r|j                  }||fS t        |t        j                        r|}||fS t        |t        j                        rt	        j                  |      }||fS t        dt!        |             c c}w )Nr  )rj   r  r   rs  r   rt  r  r  r"   r  r  r  r   r  r  rT   rl   )r  r  r  r  r   selectors         r   r  z4QdrantRemote._try_argument_to_rest_points_and_filtery  s    fd# "!C 6@T\\5R,,S1X[[!  * #  3 34!99&AH(F$7$78"//  Hf&;&;<"//   3 34mmG   5 56mmG  .G  , //7G  A$v,PQQ's   8Fc                 t   | j                   r| j                  |      \  }}|xs |}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        j                  | j                  j                  t        j                  |||||      | j                         j"                        S | j%                  ||      }| j&                  j(                  j+                  ||||      j"                  }|J d       |S )Nr  r   )r   r  r  r  zDelete points returned None)rM   r  rj   r"   r  r   r  r   r  r  r   r  r   Deleter   DeletePointsrq   r   r  rs   r  delete_points	r   r   r  r  r  r   r6   r  r   s	            r   deletezQdrantRemote.delete  sA    6:6Y6Y73O3 "4!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"33  ''%%(7!.!)+= !MM ( 	 &  #AA!3O 483F3F3Q3Q3_3_ / /!	 4` 4
 f  %D'DD%Mr   r  c                    | j                   r| j                  |      \  }	}
|xs |
}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        j                  | j                  j                  t        j                  ||t        j                   |      |	|||      | j"                        j$                        S | j'                  |      \  }}| j(                  j*                  j-                  |||t        j                  |||||            j$                  }|J d       |S )N)r   r  r  r  r  r   r  r   )r  r  r   r   r  r   r  r  set_payloadzSet payload returned None)rM   r  rj   r"   r  r   r  r   r  r  r   r  r   
SetPayloadr   SetPayloadPointsr  rq   r   r  rs   r  r  )r   r   r  r  r  r  r  r   r6   r  r  r  r  r   s                 r   r  zQdrantRemote.set_payload  se    6:6Y6YZ`6a3O3!3!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"33  ++))(7! * : :7 C(7!)+= !MM ,  &   $KKFSGW373F3F3Q3Q3]3] /!"--#""0	 4^ 4 f  %B'BB%Mr   c                    | j                   r| j                  |      \  }}	|xs |	}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        j                  | j                  j                  t        j                  ||t        j                   |      |||      | j"                        j$                        S | j'                  |      \  }
}| j(                  j*                  j-                  |||t        j.                  ||
||            j$                  }|J d       |S )N)r   r  r  r  r  r   r   )r  r  r   r   r  zOverwrite payload returned None)rM   r  rj   r"   r  r   r  r   r  r  r   r  r   OverwritePayloadr   r  r  rq   r   r  rs   r  overwrite_payloadr  )r   r   r  r  r  r  r   r6   r  r  r  r  r   s                r   r  zQdrantRemote.overwrite_payload  s_    6:6Y6YZ`6a3O3!3!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"33  11))(7! * : :7 C(7!)+= !MM 2 
 &   $KKFSGW##..@@$3% & 1 1 '&&"4	!	 A 
 &  %H'HH%Mr   keysc                    | j                   r| j                  |      \  }}	|xs |	}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        j                  | j                  j                  t        j                  ||||||      | j                         j"                        S | j%                  |      \  }
}| j&                  j(                  j+                  |||t        j                  ||
||            j"                  }|J d       |S )N)r   r  r  r  r  r   r   )r  r  r   r   )r   r  r  delete_payloadzDelete payload returned None)rM   r  rj   r"   r  r   r  r   r  r  r   r  r   DeletePayloadr   DeletePayloadPointsrq   r   r  rs   r  r  )r   r   r  r  r  r  r   r6   r  r  r  r  r   s                r   r  zQdrantRemote.delete_payload,	  sT    6:6Y6YZ`6a3O3!3!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"33  ..,,(7!!(7!)+= !MM / 
 &   $KKFSGW373F3F3Q3Q3`3` /!%33""0	 	 4a 
4 f  %E'EE%Mr   c                 t   | j                   r| j                  |      \  }}|xs |}t        |t        j                        rt        j                  |      }t        |t        t        j                              rt        j                  |      }t        j                  | j                  j                  t        j                  |||||      | j                         j"                        S | j%                  ||      }| j&                  j(                  j+                  ||||      j"                  }|J d       |S )Nr  r   )r   r  r  r  zClear payload returned None)rM   r  rj   r"   r  r   r  r   r  r  r   r  r   ClearPayloadr   ClearPayloadPointsrq   r   r  rs   r  clear_payloadr  s	            r   r%  zQdrantRemote.clear_payload\	  sA    6:6Y6Y73O3 "4!M7M(F$8$89%<<XF,.A&BYBY.Z[%/%J%JK]%^"33  --++(7!.!)+= !MM . 	 &  #AA!3O 483F3F3Q3Q3_3_ /! /	 4` 4
 f  %D'DD%Mr   update_operationsc                 F   | j                   r|D cg c]  }t        j                  |       }}t        |t        j
                        rt        j                  |      }| j                  j                  t        j                  ||||      | j                        j                  D cg c]  }t        j                  |       c}S | j                  j                   j#                  |||t	        j$                  |            j                  }|J d       |S c c}w c c}w )N)r   r  
operationsr  r   )r(  )r   r  r  r&  z!Batch update points returned None)rM   r   convert_update_operationrj   r"   r  r  r   UpdateBatchr   UpdateBatchPointsrq   r   r   r  rs   r  batch_updateUpdateOperations)r   r   r&  r  r  r6   	operationr   s           r   batch_update_pointsz QdrantRemote.batch_update_points	  s5    Pa!Pa9
33I>Pa  ! (F$8$89%<<XF #..::**(7!#4!)	 !MM ;  &F 008  ##..;;$3%&,&=&=IZ&[	 < 
 &  %J'JJ%M;!s   D(Dchange_aliases_operationsc                 x   | j                   r|D cg c]3  }t        |t        j                        st	        j
                  |      n|5 }}| j                  j                  t        j                  ||      ||      j                  S | j                        j                  S |D cg c]3  }t        |t        j                        rt        j
                  |      n|5 }}| j                  j                  j                  |t        j                   |            j                  }|J d       |S c c}w c c}w )N)r1   actionsr   )r2  )r1   change_aliases_operationzUpdate aliases returned None)rM   rj   r   AliasOperationsr   convert_alias_operationsr   UpdateAliasesChangeAliasesrq   r   r   r8   aliases_apiupdate_aliasesr"   ChangeAliasesOperation)r   r0  r1   r6   r.  r3  r   s          r   update_collection_aliasesz&QdrantRemote.update_collection_aliases	  sk     ";( ";I &i1E1EF 77	B"# "; % ( ((66""#4 $+#6 7  f
 =AMM 7  f 7$
 7	 i)=)=> 33I> 7 	! $
 "&!6!6!E!E%+%B%B0& "F "

 & 	 !A#AA!?( $
s   8D2(8D7c                    | j                   r|| j                  j                  t        j                  |      | j
                        j                  }t        j                  |D cg c]  }t        j                  |       c}      S | j                  j                  j                  |      j                  }|J d       |S c c}w )Nr   r   aliasesz$Get collection aliases returned None)rM   r   ListCollectionAliasesr   ListCollectionAliasesRequestrq   r?  r   CollectionsAliasesResponser   convert_alias_descriptionr8   r8  get_collection_aliasesr   )r   r   r6   rT  descriptionr   s         r   rD  z#QdrantRemote.get_collection_aliases	  s     ,,BB11/R C  g  33YaYa+J88EYa  II!!888Y`` 	 !I#II!s   %Cc                    | j                   rz| j                  j                  t        j                         | j
                        j                  }t        j                  |D cg c]  }t        j                  |       c}      S | j                  j                  j                         j                  }|J d       |S c c}w )Nr   r>  zGet aliases returned None)rM   r   ListAliasesr   ListAliasesRequestrq   r?  r   rB  r   rC  r8   r8  get_collections_aliasesr   r   r6   rT  rE  r   s        r   get_aliaseszQdrantRemote.get_aliases	  s    ,,88'')4== 9 g  33YaYa+J88EYa  II!!99;BB 	 !>#>>!   #C c                    | j                   rz| j                  j                  t        j                         | j
                        j                  }t        j                  |D cg c]  }t        j                  |       c}      S | j                  j                  j                         j                  }|J d       |S c c}w )Nr   )collectionszGet collections returned None)rM   r   Listr   ListCollectionsRequestrq   rN  r   CollectionsResponser   convert_collection_descriptionr8   collections_apiget_collectionsr   rJ  s        r   rT  zQdrantRemote.get_collections	  s    ,,11++-t}} 2 k  ,, (0'/ ==kJ'/  II%%557>> 	 !B#BB!rL  c                 @   | j                   rXt        j                  | j                  j	                  t        j                  |      | j                        j                        S | j                  j                  j                  |      j                  }|J d       |S )Nr=  r   zGet collection returned None)rM   r   convert_collection_infor   r  r   GetCollectionInfoRequestrq   r   r8   rS  get_collectionr   r   r6   r   s       r   rX  zQdrantRemote.get_collection
  s    55%%))11/R MM *  &	  261J1J1Y1Y+ 2Z 2

& 	 !A#AA!r   c                 B   | j                   rO| j                  j                  t        j                  |      | j
                        j                  j                  S | j                  j                  j                  |      j                  }|J d       |j                  S )Nr=  r   zCollection exists returned None)rM   r   CollectionExistsr   CollectionExistsRequestrq   r   existsr8   rS  collection_existsrY  s       r   r^  zQdrantRemote.collection_exists
  s    ((99,,_M :  fVV
 8<yy7P7P7b7b+ 8c 8

& 	 !D#DD!}}r   optimizers_configcollection_paramsvectors_confighnsw_configquantization_configsparse_vectors_configstrict_mode_configc
                    | j                   rt        |t        j                        rt	        j
                  |      }t        |t        j                        rt	        j                  |      }t        |t              rt	        j                  |      }t        |t        j                        rt	        j                  |      }t        |t        t        j                              rt	        j                  |      }t        |t              rt	        j                  |      }t        |	t        j                         rt	        j"                  |	      }	| j$                  j'                  t)        j*                  ||||||||	|	      ||      j.                  S | j,                        j.                  S t        |t(        j                        rt1        j
                  |      }t        |t(        j                        rt1        j                  |      }t        |t(        j2                        rt1        j                  |      }t        |t(        j                        rt1        j                  |      }t        |t(        j                        rt1        j                  |      }| j4                  j6                  j9                  |t        j*                  |||||||	      |      j.                  }|J d       |S )N)	r   r_  r   ra  rb  rc  rd  re  r1   r   )r_  r   r  rb  rc  sparse_vectorsre  )update_collectionr1   zUpdate collection returned None)rM   rj   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_configr   Updater   UpdateCollectionrq   r   r   VectorsConfigDiffr8   rS  rh  )r   r   r_  r`  ra  rb  rc  r1   rd  re  r6   r   s               r   rh  zQdrantRemote.update_collection+
  s    +V-H-HI$.$M$MN_$`!+V-H-HI$.$M$MN_$`!.$/!+!G!G!W+v'<'<=(AA+N-x8U8U/VW&0&Q&Q''# /6(2(O(O))% ,f.E.EF%/%J%JK]%^"((//%%$3&7,#1 +(;*?'9#
 $+#6 0  f =AMM 0  f ')B)BC * I IJ[ \')B)BC * I IJ[ \nd&<&<='CCNSNk4#6#67$==kJK)4+F+FG","M"MNa"b!%!:!:!L!L$55"3(&'$74#5  "M "
 & 	 !D#DD!r   c                 D   | j                   rY| j                  j                  t        j                  ||      ||      j                  S | j
                        j                  S | j                  j                  j                  ||      j                  }|J d       |S )N)r   r1   r   zDelete collection returned None)
rM   r   r  r   DeleteCollectionrq   r   r8   rS  delete_collection)r   r   r1   r6   r   s        r   r{  zQdrantRemote.delete_collection
  s     ((//%%owW#*#6 0  f<@MM 0  f
 "&!:!:!L!LW "M "

& 	 !D#DD!r   shard_numberreplication_factorwrite_consistency_factoron_disk_payload
wal_config	init_fromsharding_methodc                    |t        dt        dd       | j                  rt        |t        j
                  t        f      rt        j                  |      }t        |t        j                        rt        j                  |      }t        |t        j                        rt        j                  |      }t        |	t        j                        rt        j                  |	      }	t        |
t        t        j                               rt        j"                  |
      }
t        |t        j$                        rt        j&                  |      }t        |t              rt        j(                  |      }t        |t        j*                        rt        j,                  |      }t        |t        j.                        rt        j0                  |      }t3        j4                  |||	|||||||||
|||      }| j6                  j9                  || j:                        j<                  S t        |t2        j                        rt?        j                  |      }t        |t2        j                        rt?        j                  |      }t        |	t2        j                        rt?        j                  |	      }	t        |
t2        j                         rt?        j"                  |
      }
t        |t@              rt?        j&                  |      }t	        j4                  ||||||||	|
||||      }| jB                  jD                  jG                  |||      j<                  }|J d	       |S )
Nzinit_from is deprecatedr)   zcreate-collection-init-fromr   )r   rb  r  r_  r|  r  r1   ra  r}  r~  init_from_collectionrc  rd  r  re  r   )r  r|  r}  r~  r  rb  r_  r  rc  r  rg  r  re  )r   create_collectionr1   zCreate collection returned None)$r   r   rM   rj   r"   VectorParamsrm  r   convert_vectors_configro  rp  ri  rj  WalConfigDiffconvert_wal_config_diffr   QuantizationConfigconvert_quantization_configInitFromconvert_init_fromrs  ShardingMethodconvert_sharding_methodrt  ru  r   CreateCollectionr   Createrq   r   r   r;  r8   rS  r  )r   r   ra  r|  r}  r~  r  rb  r_  r  rc  r  r1   rd  r  re  r6   r  create_collection_requestr   s                       r   r  zQdrantRemote.create_collection
  s   *  1+1	 .6+>+>*EF!+!B!B>!R+v'<'<=(AA+N+V-H-HI$.$M$MN_$`!*f&:&:;'??
K
#223 '1&L&LM`&a#)V__5&88C	/6(2(O(O))% /6+@+@A","D"D_"U,f.E.EF%/%J%JK]%^" $ 5 5 /'%"3) /-#5)A%.$7&; /#5!" ((//0A4==/Y```k4#6#67$==kJK')B)BC * I IJ[ \j$"4"45#;;JGJ)4+B+BC","H"HI\"]i%"44Y?I$*$;$;"%1%=+#/! 30+1%
!  "&!:!:!L!L+7 "M "
 &	 	 !D#DD!r   c                 h    | j                  ||       | j                  |||||||||	|
|||||      S )Nr   )r   ra  r|  r}  r~  r  rb  r_  r  rc  r  r1   rd  r  re  )r{  r  )r   r   ra  r|  r}  r~  r  rb  r_  r  rc  r  r1   rd  r  re  r6   s                    r   recreate_collectionz QdrantRemote.recreate_collection  s\    & 	@%%+)%1%=+#/! 3"7+1 & 
 	
r   c                 2    | j                   rt        S t        S r   )rM   r$   r%   r   s    r   _updater_classzQdrantRemote._updater_class/  s    $$$$r   batches_iteratormax_retriesparallelmethodc                 0   |(|t               v r|}n)t        d| dt                      dt               v rdnd}| j                  rJ|| j                  | j                  || j
                  | j                  ||| j                  | j                  d
}	n|| j                  |||d| j                  }	|dk(  r3 | j                  j                  d	i |	}
|
j                  |      D ]  } y t        || j                  |      } |j                  |fi |	D ]  } y )
NzStart methods z& is not available, available methods: 
forkserverspawn)
r   r2   r+   r  r   r@   r  r   r   r1   )r   urir  r  r   r   )start_methodrJ   )r   rT   rM   rV   rN   rP   ra   rO   rq   ro   rp   r  startprocessr#   unordered_map)r   r  r   r  r  r  r  r   r  updater_kwargsupdater_pools                r   _upload_collectionzQdrantRemote._upload_collection6  s:    .00% $VH,RShSjRkl  ,8;P;R+R<X_L#2

*{{ ..&8--==N $3}}*&8 //N q=/d))//A.AG__%56 7 &h0C0CR^_D'T''(8KNK Lr   records
batch_sizec	           	      n    | j                   j                  ||      }
| j                  |
||||||       y )Nr  r  )r  r   r  r  r  r   r  r  iterate_records_batchesr  )r   r   r  r  r  r  r  r  r   r6   r  s              r   upload_recordszQdrantRemote.upload_recordsj  sP      ..FF
 G 
 	-+#1 	  	
r   c	           	      n    | j                   j                  ||      }
| j                  |
||||||       y )Nr  r  r   r  r  r  r  r   r  )r   r   r  r  r  r  r  r  r   r6   r  s              r   upload_pointszQdrantRemote.upload_points  sP      ..FFz G 
 	-+#1 	  	
r   c           	      r    | j                   j                  ||||      }| j                  ||||||	|
       y )N)r  r  r  r  r  )r  iterate_batchesr  )r   r   r  r  r  r  r  r  r  r  r   r6   r  s                r   upload_collectionzQdrantRemote.upload_collection  sV       ..>>!	 ? 
 	-+#1 	  	
r   
field_namefield_schema
field_typec                    |t        dt        dd       |}| j                  rd }t        |t        j
                        rt        j                  |      }t        |t              r(t        j                  t	        j
                  |            }t        |t              rt        |      }t        |t        t        j                              rt        j                  |      }t        |t        j                        r|}|j!                  d      }	t#        ||	      }
t        |
t        j$                        rt        j&                  j(                  }t        |
t        j*                        rt        j&                  j,                  }t        |
t        j.                        rt        j&                  j0                  }t        |
t        j2                        rt        j&                  j4                  }t        |
t        j6                        rt        j&                  j8                  }t        |
t        j:                        rt        j&                  j<                  }t        |
t        j>                        rt        j&                  j@                  }t        |
t        jB                        rt        j&                  jD                  }t        jF                  ||||||      }tI        jJ                  | jL                  jO                  || jP                        jR                        S t        |t              rtI        j                  |      }t        |t        j                        rtI        j                  |      }| jT                  jV                  jY                  |t	        jN                  ||      ||	      jR                  }|J d
       |S )Nz2field_type is deprecated, use field_schema insteadr)   zpayload-index-field-typer   index_params)r   r  r  field_index_paramsr  r  r   )r  r  )r   create_field_indexr  r  z Create field index returned None)-r   r   rM   rj   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   CreateFieldIndexrq   r   rs   indexes_apir  )r   r   r  r  r  r  r  r6   r  r   r  requestr   s                r   create_payload_indexz!QdrantRemote.create_payload_index  s    !L+.	 &L!%,(@(@A)EElS,,)EE,,\:  ,,
  AN,1K1K(LM)GGU,(?(?@%1")44^D&'94@lD,@,@A#'>>#?#?LlD,C,CD#'>>#B#BLlD,C,CD#'>>#B#BLlD,A,AB#'>>#@#@LlD,?,?@#'>>#>#>LlD,@,@A#'>>#?#?LlD,D,DE#'>>#C#CLlD,@,@A#'>>#?#?L55 /%'#5!G 33  11'4==1QXX  lC(%AA,OLlD$;$;<%CCLQL/3/B/B/N/N/a/a+%66%L   0b 0
 & 	 !E#EE!r   c                 P   | j                   r]t        j                  ||||      }t        j                  | j
                  j                  || j                        j                        S | j                  j                  j                  ||||      j                  }|J d       |S )N)r   r  r  r  r   z Delete field index returned None)rM   r   DeleteFieldIndexCollectionr   r  r   DeleteFieldIndexrq   r   rs   r  delete_field_index)r   r   r  r  r  r6   r  r   s           r   delete_payload_indexz!QdrantRemote.delete_payload_index  s     55 /%!	G 33  11'4==1QXX  04/B/B/N/N/a/a+!	 0b 0

 & 	 !E#EE!r   c                 j   | j                   rh| j                  j                  t        j                  |      | j
                        j                  }|D cg c]  }t        j                  |       c}S | j                  j                  j                  |      j                  }|J d       |S c c}w )Nr=  r   'List snapshots API returned None result)rM   r   rO  r   ListSnapshotsRequestrq   snapshot_descriptionsr   convert_snapshot_descriptionrs   snapshots_apilist_snapshotsr   )r   r   r6   	snapshotssnapshots        r   r  zQdrantRemote.list_snapshots:  s     ++00))/JTXTaTa 1 ##  W``V_(J;;HEV_``''55DD+ E 

& 	 $O&OO$ as   B0c                 0   | j                   rZ| j                  j                  t        j                  |      | j
                        j                  }t        j                  |      S | j                  j                  j                  ||      j                  S )Nr=  r   )r   r  )rM   r   r  r   CreateSnapshotRequestrq   snapshot_descriptionr   r  rs   r  create_snapshotr   )r   r   r  r6   r  s        r   r  zQdrantRemote.create_snapshotI  s     **11**?KUYUbUb 2 ""  ::8DD""00@@+$ A 

&	r   snapshot_namec                     | j                   r=| j                  j                  t        j                  ||      | j
                         y| j                  j                  j                  |||      j                  S )N)r   r  r   T)r   r  r  )
rM   r   r  r   DeleteSnapshotRequestrq   rs   r  delete_snapshotr   )r   r   r  r  r6   s        r   r  zQdrantRemote.delete_snapshotV  s|     &&**$3= 	 '  ""00@@+' A 
 &		r   c                 b   | j                   rf| j                  j                  t        j                         | j
                        j                  }|D cg c]  }t        j                  |       c}S | j                  j                  j                         j                  }|J d       |S c c}w )Nr   z,List full snapshots API returned None result)rM   r   ListFullr   ListFullSnapshotsRequestrq   r  r   r  rs   r  list_full_snapshotsr   )r   r6   r  r  s       r   r  z QdrantRemote.list_full_snapshotsh  s    ++44--/ 5  $#  W``V_(J;;HEV_``''55IIKRR	$T&TT$	 as   B,c                 *   | j                   rX| j                  j                  t        j                         | j
                        j                  }t        j                  |      S | j                  j                  j                  |      j                  S )Nr   )r  )rM   r   
CreateFullr   CreateFullSnapshotRequestrq   r  r   r  rs   r  create_full_snapshotr   )r   r  r6   r  s       r   r  z!QdrantRemote.create_full_snapshott  s|    #'#6#6#A#A..0$-- $B $"" ! ::;OPP""00EE4EPWWWr   c                     | j                   r<| j                  j                  t        j                  |      | j
                         y| j                  j                  j                  ||      j                  S )N)r  r   T)r  r  )
rM   r   
DeleteFullr   DeleteFullSnapshotRequestrq   rs   r  delete_full_snapshotr   )r   r  r  r6   s       r   r  z!QdrantRemote.delete_full_snapshot}  so     **..]K +  ""00EE'd F 

&	r   locationchecksumpriorityc           
          | j                   j                  j                  ||t        j                  ||||            j
                  S )Nr  r  r  r/   )r   r  snapshot_recover)rs   r  recover_from_snapshotr"   SnapshotRecoverr   )r   r   r  r/   r  r  r  r6   s           r   recover_snapshotzQdrantRemote.recover_snapshot  sP     ""00FF+#33!!!	 G 	
 &		r   shard_idc                 z    | j                   j                  j                  ||      j                  }|J d       |S )N)r   r  r  )rs   r  list_shard_snapshotsr   )r   r   r  r6   r  s        r   r  z!QdrantRemote.list_shard_snapshots  sP     ''55JJ+ K 
 & 	 $O&OO$r   c                 f    | j                   j                  j                  |||      j                  S )N)r   r  r  )rs   r  create_shard_snapshotr   )r   r   r  r  r6   s        r   r  z"QdrantRemote.create_shard_snapshot  s9     ""00FF+ G 
 &		r   c                 h    | j                   j                  j                  ||||      j                  S )N)r   r  r  r  )rs   r  delete_shard_snapshotr   )r   r   r  r  r  r6   s         r   r	  z"QdrantRemote.delete_shard_snapshot  s<     ""00FF+'	 G 

 &	r   c                     | j                   j                  j                  |||t        j                  ||||            j
                  S )Nr  )r   r  r  shard_snapshot_recover)rs   r  recover_shard_from_snapshotr"   ShardSnapshotRecoverr   )	r   r   r  r  r/   r  r  r  r6   s	            r   recover_shard_snapshotz#QdrantRemote.recover_shard_snapshot  sS     ""00LL+#)#>#>!!!	$	 M 

 &
	r   reasonc                     | j                   j                  j                  t        j                  |d            j
                  }|J d       |S )NT)error_messagewritezLock storage returned Noners   service_api
post_locksr"   LocksOptionr   )r   r  r6   r   s       r   lock_storagezQdrantRemote.lock_storage  sO    .2.A.A.M.M.X.XV4@/

& 	 !?#??!r   c                     | j                   j                  j                  t        j                  d            j
                  }|J d       |S )NF)r  zPost locks returned Noner  r   r6   r   s      r   unlock_storagezQdrantRemote.unlock_storage  sM    .2.A.A.M.M.X.XU+/

& 	 !=#==!r   c                 t    | j                   j                  j                         j                  }|J d       |S )NzGet locks returned None)rs   r  	get_locksr   r  s      r   r  zQdrantRemote.get_locks  s9    .2.A.A.M.M.W.W.Y.`.`!<#<<!r   r   shards_number	placementc                    | j                   rt        |t        t        j                              rt        j                  |      }| j                  j                  t        j                  ||t        j                  ||||xs g             ||      j                  S | j                        j                  S | j                  j                  j                  ||t        j                   ||||            j                  }|J d       |S )N)r   r  r}  r  r   r1   r  r   )r   r1   create_sharding_keyzCreate shard key returned None)rM   rj   r   r"   ShardKeyr   convert_shard_keyr   CreateShardKeyr   CreateShardKeyRequestrq   r   rs   distributed_apicreate_shard_keyCreateShardingKey)	r   r   r   r  r}  r  r1   r6   r   s	            r   r'  zQdrantRemote.create_shard_key  s    )%8%IJ&88C	((77**$3# //"+&3+="+/r		 $+#6 8  f =AMM 8  f ((88II /$*$<$<'"/'9'	% J 	 f  %G'GG%Mr   c           	         | j                   rt        |t        t        j                              rt        j                  |      }| j                  j                  t        j                  ||t        j                  |            ||      j                  S | j                        j                  S | j                  j                  j                  ||t        j                   |            j                  }|J d       |S )N)r   r   r   )r   r1   drop_sharding_keyzDelete shard key returned None)rM   rj   r   r"   r"  r   r#  r   DeleteShardKeyr   DeleteShardKeyRequestrq   r   rs   r&  delete_shard_keyDropShardingKey)r   r   r   r1   r6   r   s         r   r-  zQdrantRemote.delete_shard_key  s    )%8%IJ&88C	((77**$3# //"+ $+#6 8 	 f	 =AMM 8 	 f	 ((88II /"("8"8'# J  f  %G'GG%Mr   c                    | j                   rN| j                  j                  t        j                         | j
                        }t        j                  |      S | j                  j                  j                         }|J d       |S )Nr   zHealthcheck returned None)rM   r   HealthCheckr   HealthCheckRequestrq   r   convert_health_check_replyr   r  root)r   version_infos     r   infozQdrantRemote.info5  sy    >>55'')4== 6 L 88FFyy,,113'D)DD'r   )Ni  i  FNNNNNNNTr   )r   N)NN)NN
   NTFNTNNN)NNNNNr6  NTFNNNNN)NNNNNr6     TFNNNNNN)NNr6  r   TFNNNNN)Nr7  r6  NNNN)NNNNr6  r   TFNNNNNNN)NNNNr6  r   NTFNNNNNNN)NNNNr6  r   TFNNNNN)	Nr6  NNTFNNN)NTNN)Nr6  FNNN)TNN)TFNNN)TN)NNNNNNNN)NNNNNNNNNNNNNN)NNNNNNNNNNNNN)r   NFN)@   r   Nr7  FN)NNr8  r   Nr7  FN)NNTN)T)NNNT)NNNN)__name__
__module____qualname__rr   r	   r;  r  boolrm  r   r   r   r   rL   propertyr   floatr   staticmethodr  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r    r   r8   r
   r   r   r   r  ScoredPointr   r   r   
NumpyArrayr  r  PayloadSelectorr  r  rs  SparseVectorr!  DocumentImageInferenceObjectr  r  r#  r&  r%  r0  WithLookupInterfaceGroupsResultr@  r"   rG  SearchMatrixPairsResponserQ  SearchMatrixOffsetsResponserY  r]  re  r  rp  rx  r  r  r  r  r  r  r  Recordr  CountResultr  r  r  Pointsr  UpdateResultr  PointVectorsr  r  r  r  classmethodr  r  r  r  r  r  Payloadr  r  r  r%  UpdateOperationr/  r4  r;  rB  rD  rK  rQ  rT  CollectionInforX  r^  ri  rk  rx  ro  rq  r   SparseVectorParamsrt  rh  r{  r  r  r  r  r  r  r  r   r&   r  r   r  r  r  r  VectorStructr  r  r  r  SnapshotDescriptionr  r  r  r  r  r  SnapshotPriorityr  r  r  r	  r  r  r  r  r  r"  r'  r-  VersionInfor5  __classcell__)r   s   @r   r(   r(   .   s%    ""! $!% $!%"15 $(yc]y smy 	y
 y ~y #y y #y smy tCH~.y &(2s7#Xb)C..@%AAB
y "y  !yv    # $ , * *hsmS(3-RU&V W * *"GQME -$"6"6 - - (T__ ( ( + 2 2 + + &4?? & & #hy) # # #hy) # # 8<!%00 5../0 e334	0
 #0 0 
d5$$%	&0x 046: $JN38+/#7;?C!%){{ UO#tE{"###	
{ u||,{   2 23{ { { D(3-1F1FFG{ D(3-/0{  "%!{" #{$ e334%{& %U%;%;<'{( #){* +{, 
e	 -{V #FJ/36: $JN38+/6:7;?C!%7KK MMKeKKNNKK!!	
K }K  U^^(<dBC!K" u||,#K$   2 23%K& 'K( )K* D(3-1F1FFG+K, D(3-/0-K. "%/K0 e2231K2 e3343K4 %U%;%;<5K6 #7K8 9K: 
		;Kb 8<!%33 5--.3 e334	3
 #3 3 
e!!	"3H #FJ/36:JN38+/;?6:7;?C!%;U'U' U' MMKeKKNNKK!!	
	U'  }!U'" U^^(<dBC#U'$ u||,%U'&   2 23'U'( )U'* +U', D(3-1F1FFG-U'. D(3-/0/U'0 "%1U'2 e7783U'4 e2235U'6 e3347U'8 %U%;%;<9U': #;U'< =U'> 
		?U'D 157;KO38+/;?7;?C!%+CC UO#tE{"###	
C C v}}-C   3 34C C C D(3-1G1GGHC  D(3-/0!C" "%#C$ e778%C& e334'C( %U%;%;<)C* #+C, -C. 
		/CP 04#7;?C!%6$6$ u||,6$ 	6$
 6$ }6$ e3346$ %U%;%;<6$ #6$ 6$ 
	(	(6$v 04#7;?C!%6$6$ u||,6$ 	6$
 6$ }6$ e3346$ %U%;%;<6$ #6$ 6$ 
	*	*6$x 8<!%11 51121 e334	1
 #1 1 
d5$$%	&1l @D?C/36:FJ/4+/#6:6:7;?C!%#FF 8E$:$:;<F 8E$:$:;<	F
 u||,F   2 23F F F D$s)U-B-BBCF D$s)O,F "%F }F e223F 5223F e334F  %U%;%;<!F" ##F$ %F& 
e	 'FX KOJN047;+/KO38#7;;?6:7;?C!%'UU U 8E%--e*D$EFG	U
 8E%--e*D$EFGU v}}-U   3 34U U U "%U D(3-1G1GGHU D(3-/0U }U f334U e778U  5223!U" e334#U$ %U%;%;<%U& #'U( )U* 
		+Ut 04@D/36:FJ/4#6:7;?C!% ++, (5#;#;<=	
 u||,   2 23   D$s)U-B-BBC D$s)O, } e223 e334 %U%;%;< #  !" 
e	 #J 8<!%.. 5001. e334	.
 #. . 
d5$$%	&.f 15,0*.JN387;?C!%XHXH  -XH 	XH
 5==)XH 'XH D(3-1F1FFGXH D(3-/0XH e334XH %U%;%;<XH #XH XH 
tELL!8EMM#::	;XHz 04?C!%)) u||,) 	)
 %U%;%;<) #) ) 
		)^ 04!%7;?C99 9 u||,	9
 9 9 #9 e3349 %U%;%;<9 9 
		9~ 26?CNN N 	N
 5../N %U%;%;<N N 
		Nh 26?C'' ++,' 	'
 5../' %U%;%;<' ' 
		'\ 26?C22 #2 $$	2
 2 5../2 %U%;%;<2 2 
		2p KO387;?C!%FF emm$F D(3-1F1FFG	F
 D(3-/0F e334F %U%;%;<F #F F 
ell	FP 3))3	t""HT-B-B$CC	D3 3B !$$! %U%;%;<! 
			! !F "11	dll	   )) 	xV3345x7NN	O   B 26?C,, --, 	,
 5../, %U%;%;<, , 
		,f "26?C22 2 $$	2
 c]2 2 5../2 %U%;%;<2 2 
		2r 26?C11 1 $$	1
 1 5../1 %U%;%;<1 1 
		1p 26?C.. sm. $$	.
 . 5../. %U%;%;<. . 
		.h 26?C,, --, 	,
 5../, %U%;%;<, , 
		,d 26&& $E$9$9:& 	&
 5../& & 
e  	!&V "&&#+E,A,A#B& #& 	&
 
&P".1		)	)(C E,L,L   0I0I $c S UEYEY      CGBF<@6:FJ!%RV?CSS $E$>$>?S $E$>$>?	S
 !!8!89S e223S &e&B&BCS #S  (U5M5M0M(NOS %U%;%;<S S 
Sl >B"-5c]MP	( &*,026*.6:BF48BF.2!%RV:>?C%ww !%$$gc53E3E.E&FFG
w smw %SMw #+3-w "$w e223w $E$>$>?w U001w &e&>&>?w ENN+w #w   (U5M5M0M(NO!w" "%"6"67#w$ %U%;%;<%w& 'w( 
)wz '+,026*.6:BF48BF.2!%RV:>?C!%
%
 e00'#u?Q?Q:Q2RRS%
 sm	%

 %SM%
 #+3-%
 "$%
 e223%
 $E$>$>?%
 U001%
 &e&>&>?%
 ENN+%
 #%
  (U5M5M0M(NO%
 "%"6"67%
  %U%;%;<!%
" #%
$ 
%%
N %\ 2 % %  $?C2"2 2 	2
 2 2 2 %U%;%;<2 
2p  $?C

 %,,'
 	

 
 
 
 
 %U%;%;<
 
 

:  $?C

 **+
 	

 
 
 
 
 %U%;%;<
 
 

@ 7;15 $?C

 e&&&')9)98EDVDV;WW

 (4S>23
 hu}}-.
 
 
 
 
 
 %U%;%;<
 
 

J ;?8<26^^ ^ u667	^
 U445^ ^ 5../^ ^ 
		^H 26  	
 5../  
		8".1	e''	(  26"*.AD	%++	, FJ"36>BUX	$$
C 
D9R9R4S 
X X XHaHa X 04 (,?B	$$ "&"&59  #	
 3- 5112   
$*".1=@	e''	( AE".19=PS	%++	,   	
   
$( "&"&59  	
 # 3- 5112   
$.3 # %:K:K s u/@/@ # %*;*;  (,,0)-!%'' >>'  }	'
 %SM' DI&' #' ' 
'Z "&	 >> #	
  
@e'' r   r(   )Aimportlib.metadatarf   r   rZ   rh   multiprocessingr   typingr   r   r   r   r   r	   r
   r   r   r   r_   numpyr   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(   rJ   r   r   <module>ro     s{        1      '   P & 4 ) 0 P 0 ; F 
 ; : ? B B 8O4: O4r   