
    Ig                     
   d dl Zd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dl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( d dl)m*Z*m+Z+m,Z, dZ- G d de       Z.y)    N)deepcopy)TextIOWrapper)AnyDict	GeneratorIterableListMappingOptionalSequenceTupleUnionget_argsSet)uuid4)to_dict)AsyncQdrantBase)common_types)models)RecommendExample)LocalCollectionDEFAULT_VECTOR_NAMEignore_mentioned_ids_filterz	meta.jsonc            #           e Zd ZdZddededdf fdZedefd       Zde	ddfd	Z
dd
ZddZdedefdZdedeej"                     de	deeej&                        fdZ	 	 	 	 	 	 	 ddedeej,                  ee   eeee   f   ej2                  ej4                  f   deej8                     deej:                     dedee   deeee   ej>                  f   deeee   f   dee   de	deej&                     fdZ 	 	 	 	 ddedeej8                     dededee   de	dejB                  fdZ"	 	 	 	 ddedeej8                     dededee   de	dejF                  fdZ$	 	 	 	 	 	 	 	 ddedeej,                  ee   eeee   f   ej2                  f   dedee%j8                     dee%j:                     dededeeee   e%j>                  f   deeee   f   dee   deejL                     de	dejN                  fd Z(ded!eejR                     dee   d"eejT                     deejR                  e+ejX                     f   f
d#Z-d$eeeej\                     ej\                  f      dedeej\                     fd%Z/d$ej\                  dedej\                  fd&Z0	 	 	 	 	 	 	 	 	 	 	 dded!eejR                     dee   d$eej\                  eej\                     df   deej8                     deej:                     dedee   deeee   ej>                  f   deeee   f   dee   d"eejT                     de	dejb                  fd'Z2dedeejf                     de	deejb                     fd(Z4	 	 	 	 	 	 	 	 	 	 	 	 ddeded!eejX                  ee   eee      ejj                  ejR                  ej,                  ejl                  df   dee   d$eej\                  eej\                     df   deej8                     deej:                     dededeeee   ej>                  f   deeee   f   dee   deejL                     d"eejT                     de	dejN                  f d)Z7dedeejp                     de	deeej&                        fd*Z9	 	 	 	 	 	 	 	 	 	 	 	 dded+eee:      d,eee:      deej8                     deej:                     dededeeee   ej>                  f   deeee   f   dee   dee   d"eejT                     d-eejv                     de	deej&                     fd.Z<	 	 	 	 	 	 	 	 	 	 	 	 	 ddeded+eeeejX                  ee   f         d,eeeejX                  ee   f         deej8                     deej:                     dededee   deeee   ej>                  f   deeee   f   dee   d"eejT                     deejL                     d-eejv                     de	dejN                  f"d/Z=	 	 	 	 	 	 	 	 	 	 	 	 dded0eej|                     d1eeej~                        deej8                     deej:                     dededeeee   ej>                  f   deeee   f   dee   d"eejT                     d2eej                     d3ee   de	deej&                     fd4ZAdedeej                     de	deeej&                        fd5ZC	 	 	 	 	 	 dded6eej8                     ded7eej                     deejX                     deeee   ej>                  f   deeee   f   de	deeej                     eejX                     f   fd8ZF	 	 dded9eej8                     d:ede	dej                  f
d;ZH	 	 	 dded<ed=eej8                     ded:ede	dej                  fd>ZJded?ej                  de	dej                  fd@ZMded?eej                     de	dej                  fdAZOdedBee   d?ej                  de	dej                  f
dCZQ	 	 ddedDeejX                     deeee   ej>                  f   deeee   f   de	deej                     fdEZReSddFedej                  fdG       ZTdedHej                  de	dej                  fdIZU	 ddedJej                  d?ej                  d<ee   de	dej                  fdKZWdedJej                  d?ej                  de	dej                  f
dLZXdedMee   d?ej                  de	dej                  f
dNZYdedHej                  de	dej                  fdOZZdedPeej                     de	deej                     fdQZ\dReej                     de	defdSZ^dede	dej                  fdTZ`de	dej                  fdUZade	dej                  fdVZcdede	dej                  fdWZedede	defdXZf	 ddedYeegeej                  f      de	defdZZidedee   fd[Zjdede	defd\Zk	 	 dded]eej                  egeej                  f   f   d^eej                     dYeegeej                  f      de	defd_Zn	 	 dded]eej                  egeej                  f   f   d^eej                     dYeegeej                  f      de	defd`Zoded?epej                     de	ddfdaZrdedbepej                     de	ddfdcZsded?epeej                  ej                  f      ddfddZt	 	 ddedBeeueej,                  f   ej,                  epej                     f   dJeepeue	e	f         dDeepejX                        de	ddfdeZw	 	 ddedfedgeej                     dheej                     de	dej                  fdiZydedfede	dej                  fdjZzdede	deej                     fdkZ|dede	deej                     fdlZ}dedmede	defdnZ~de	deej                     fdoZde	dej                  fdpZdmede	defdqZdedede	defdrZdedsede	deej                     fdtZdedsede	deej                     fduZdedsedmede	def
dvZdedsedede	def
dwZdxede	dej                  fdyZde	dej                  fdzZde	dej                  fd{Z	 	 	 dded|ej                  d}ee   d~ee   deee      de	defdZded|ej                  de	defdZdej                  fdZ xZS )AsyncQdrantLocalaD  
    Everything Qdrant server can do, but locally.

    Use this implementation to run vector search without running a Qdrant server.
    Everything that works with local Qdrant will work with server Qdrant as well.

    Use for small-scale data, demos, and tests.
    If you need more speed or size, use Qdrant server.
    locationforce_disable_check_same_threadreturnNc                     t         |           || _        || _        |dk7  | _        i | _        i | _        d| _        | j                          d| _	        y)a$  
        Initialize local Qdrant.

        Args:
            location: Where to store data. Can be a path to a directory or `:memory:` for in-memory storage.
            force_disable_check_same_thread: Disable SQLite check_same_thread check. Use only if you know what you are doing.
        z:memory:NF)
super__init__r   r   
persistentcollectionsaliases_flock_file_load_closed)selfr   r   	__class__s      c/var/www/html/answerous/venv/lib/python3.12/site-packages/qdrant_client/local/async_qdrant_local.pyr!   zAsyncQdrantLocal.__init__>   sR     	/N, "j079')48

"    c                     | j                   S N)r'   )r(   s    r*   closedzAsyncQdrantLocal.closedP   s    ||r+   kwargsc                   K   d| _         | j                  j                         D ]N  }||j                          t	        j
                  dt        | j                  j                                       P 	 | j                  Q| j                  j                  s:t        j                  | j                         | j                  j                          y y y # t        $ r Y y w xY ww)NTzLCollection appears to be None before closing. The existing collections are: )r'   r#   valuescloseloggingwarninglistkeysr%   r.   portalockerunlock	TypeError)r(   r/   
collections      r*   r2   zAsyncQdrantLocal.closeT   s     **113 	J%  "bcghlhxhxh}h}h  dA  cB  C			+T5E5E5L5L""4#3#34  &&( 6M+  		s+   A3C#6AC C#	C C#C  C#c                 P   | j                   sy t        j                  j                  | j                  t
              }t        j                  j                  |      s^t        j                  | j                  d       t        |d      5 }|j                  t        j                  i i d             d d d        nt        |d      5 }t        j                  |      }|d   j                         D ]P  \  }}t        j                  di |}| j!                  |      }t#        ||| j$                        | j&                  |<   R |d   | _        d d d        t        j                  j                  | j                  d	      }t        j                  j                  |      sGt        j                  | j                  d       t        |d      5 }|j                  d
       d d d        t        |d      | _        	 t-        j.                  | j*                  t,        j0                  j2                  t,        j0                  j4                  z         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t,        j6                  j8                  $ r t;        d| j                   d      w xY w)NTexist_okwr#   r$   rr#   )r   r$   z.lockztmp lock filezr+zStorage folder zw is already accessed by another instance of Qdrant client. If you require concurrent access, use Qdrant server instead. )r"   ospathjoinr   META_INFO_FILENAMEexistsmakedirsopenwritejsondumpsloaditemsrest_modelsCreateCollection_collection_pathr   r   r#   r$   r%   r7   lock	LockFlags	EXCLUSIVENON_BLOCKING
exceptionsLockExceptionRuntimeError)	r(   	meta_pathfmetacollection_nameconfig_jsonconfigcollection_pathlock_file_paths	            r*   r&   zAsyncQdrantLocal._loadd   s&   GGLL0BC	ww~~i(KK5i% H

2"#EFGH H i% 
/yy|484G4M4M4O 0O[(99HKHF&*&;&;O&LO8G'8<8\8\9D$$_5  $I
/ dmmW=ww~~n-KK5nc* )a()5	  %%//+2G2G2T2TT+H H
/ 
/) ) %%33 	!$--  1h  i 	s2   (I	BI	I"5AI. 	II"I+.7J%c                    | j                   sy | j                  rt        d      t        j                  j                  | j                  t              }t        |d      5 }|j                  t        j                  | j                  j                         D ci c]  \  }}|t        |j                         c}}| j                   d             d d d        y c c}}w # 1 sw Y   y xY w)N=QdrantLocal instance is closed. Please create a new instance.r>   r?   )r"   r.   rW   rB   rC   rD   r   rE   rH   rI   rJ   rK   r#   rM   r   r]   r$   )r(   rX   rY   r[   r:   s        r*   _savezAsyncQdrantLocal._save   s    ;;^__GGLL0BC	)S! 	QGG

 BFAQAQAWAWAY( =* ,WZ5F5F-GG( $(<<
	 	(		 	s   8C C7CCC(r[   c                     | j                   rt        d      || j                  v r| j                  |   S || j                  v r| j                  | j                  |      S t	        d| d      )Nra   Collection 
 not found)r.   rW   r#   r$   
ValueErrorr(   r[   s     r*   _get_collectionz AsyncQdrantLocal._get_collection   so    ;;^__d...##O44dll*##DLL$ABB;&7zBCCr+   requestsc                   K   | j                  |      }|D cg c]`  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                        b c}S c c}w wN)query_vectorquery_filterlimitoffsetwith_payloadwith_vectorsscore_threshold)	rh   searchvectorfilterrn   ro   rp   with_vectorrr   r(   r[   ri   r/   r:   requests         r*   search_batchzAsyncQdrantLocal.search_batch   s      ))/:
 $
  $^^$^^mm~~$11$00 ' 7 7  
 	
 
s   BA%B =Brl   rm   search_paramsrn   ro   rp   rq   rr   c
           	      \   K   | j                  |      }|j                  |||||||	      S wrk   )rh   rs   )r(   r[   rl   rm   rz   rn   ro   rp   rq   rr   r/   r:   s               r*   rs   zAsyncQdrantLocal.search   sE     & ))/:
  %%%%+ ! 
 	
s   *,sampleusingc                 V   K   | j                  |      }|j                  ||||      S wN)rm   rn   r|   r}   )rh   search_matrix_offsetsr(   r[   rm   rn   r|   r}   r/   r:   s           r*   r   z&AsyncQdrantLocal.search_matrix_offsets   s9      ))/:
//%U6 0 
 	
   ')c                 V   K   | j                  |      }|j                  ||||      S wr   )rh   search_matrix_pairsr   s           r*   r   z$AsyncQdrantLocal.search_matrix_pairs   s9      ))/:
--%U6 . 
 	
r   group_by
group_sizewith_lookupc                    K   | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||	|
||
      S w)N)
rl   rm   rn   r   r   rp   rq   rr   r   with_lookup_collection)rh   
isinstancestrr:   search_groups)r(   r[   rl   r   rm   rz   rn   r   rp   rq   rr   r   r/   r:   r   s                  r*   r   zAsyncQdrantLocal.search_groups   s     " ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&''%%!%%+##9 ( 
 	
s   A.A0querylookup_fromc           	      @   |r|j                   n| j                        ||nt        }||j                  |j                  n|j                  v }j
                  v }|rj                  n|rj
                  nj                  t               dt        j                  dt        j                  ffd}t        |      }t        |t        j                        r ||j                        |_        |fS t        |t        j                        r|j                   j"                  9|j                   j"                  D 	cg c]
  }	 ||	       c}	|j                   _        |j                   j$                  9|j                   j$                  D 	cg c]
  }	 ||	       c}	|j                   _        |fS t        |t        j&                        r ||j(                  j*                        |j(                  _        t        |j(                  j,                  t.              r|j(                  j,                  n|j(                  j,                  g}
|
D cg c]9  }t        j0                   ||j$                         ||j"                              ; c}|j(                  _        |fS t        |t        j2                        rt        |j,                  t.              r|j,                  n|j,                  g}
|
D cg c]9  }t        j0                   ||j$                         ||j"                              ; c}|_        |fS t        |t        j4                        r	 |fS t        |t        j6                        r	 |fS c c}	w c c}	w c c}w c c}w )z
        Resolves any possible ids into vectors and returns a new query object, along with a set of the mentioned
        point ids that should be filtered when searching.
        vector_inputr   c                 f   t        | t        t        j                              r| }|j                  vrt        d| d      j                  |   }	v r		   |   }nt        d	 d      t        |t        j                        r|j                         }k(  rj                  |       |S | S )NzPoint z is not found in the collectionzVector re   )
r   r   typesPointIdidsrf   npndarraytolistadd)
r   point_ididxvecr:   r[   collection_vectorslookup_collection_namementioned_idsvector_names
       r*   input_into_vectorz@AsyncQdrantLocal._resolve_query_input.<locals>.input_into_vector1  s    ,(?@':>>1$vhZ7V%WXX nnX."44,[9#>C$w{m:%FGGc2::.**,C"&<<!%%h/
##r+   )positivenegative)r:   rh   r   rt   sparse_vectorsmultivectorsvectorssetr   VectorInputr   r   rN   NearestQuerynearestRecommendQuery	recommendr   r   DiscoverQuerydiscovertargetcontextr5   ContextPairContextQueryOrderByQueryFusionQuery)r(   r[   r   r}   r   search_in_vector_namesparsemultir   r   pairspairr:   r   r   r   r   s    `          @@@@@r*   _resolve_query_inputz%AsyncQdrantLocal._resolve_query_input  s4    <G!7!7O))*@A
).):@S &;+=+=+I & 	
 
 9 99z666!+!:!:!+!8!8!+!3!3,/E	$E,=,= 	$%BSBS 	$ 	$$ e[556-emm<EMJ }%%I {99:''3HMH`H`,8D%l3,( ''3HMH`H`,8D%l3,(< }%%7 {889$5enn6K6K$LENN! enn44d; &&nn,,-  "&
 	 ''.t}}=.t}}=&ENN"( }%% {778%/t%DEMM5==/E "
 	 ''.t}}=.t}}=EM }%%	 {778 }%% {667}%%E,,&s   N N>N>Nprefetchc                    |g S t        |t              rt        |      dk(  rg S g }t        |t        j                        rF|g}|j                  t        |j                  t              r|j                  n|j                  g       nt        |t              rt        |      }|D cg c]  }|| j                  ||       c}S c c}w )Nr   )	r   r5   lenr   Prefetchextendr   r   _resolve_prefetch_input)r(   r   r[   
prefetchess       r*   _resolve_prefetches_inputz*AsyncQdrantLocal._resolve_prefetches_inputl  s    
 Ih%#h-1*<I
h/"J%/0A0A4%H!!xO`O`Na (+hJ '
# ((?C
 	
 
s   &Cc                 :   |j                   |S t        |      }| j                  ||j                   |j                  |j                        \  }}||_         t        |j                  t        |            |_        | j                  |j                  |      |_	        |S r-   )
r   r   r   r}   r   r   ru   r5   r   r   )r(   r   r[   r   r   s        r*   r   z(AsyncQdrantLocal._resolve_prefetch_input  s     >>!OH%!%!:!:X^^X^^X=Q=Q"
 5hootMGZ[ ::8;L;Lo^r+   c                    K   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }| j	                  ||      }|j                  |||||||xs d|	|
	      S w)Nr   )	r   r   rm   r}   rr   rn   ro   rp   rq   )rh   r   r   r5   r   query_points)r(   r[   r   r}   r   rm   rz   rn   ro   rp   rq   rr   r   r/   r:   r   s                   r*   r   zAsyncQdrantLocal.query_points  s       ))/:
%)%>%>{&"UM 7|T-EXYL11(OL&&%+;Q%% ' 

 
	
s   A0A2c                   K   | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  xs d|j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd        c}S c c}w w)Nr   )r   r   rm   rn   ro   rp   rq   rr   r}   lookup_from_collectionlookup_from_vector_name)rh   r   r   r   ru   rn   ro   rp   rv   rr   r}   r   r:   rt   rw   s         r*   query_batch_pointsz#AsyncQdrantLocal.query_batch_points  s      ))/:
& $%
$ # ##mm ))$^^mm~~*$11$00 ' 7 7mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B $ 
 	
 
s   C4CC/,C4c                 D  K   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }d }|=t	        |t
              r| j                  |      }n| j                  |j                        }|j                  |||||||	|
||||      S w)N)r   rm   r}   r   rn   r   r   rp   rq   rr   r   r   )rh   r   r   r5   r   r   r:   query_groups)r(   r[   r   r   r}   r   rm   rz   rn   r   rp   rq   rr   r   r   r/   r:   r   r   s                      r*   query_points_groupsz$AsyncQdrantLocal.query_points_groups  s     6 ))/:
%)%>%>{&"UM 7|T-EXYL!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&&&%!%%+##9 ' 
 	
   BB c                   K   | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd |j                         c}S c c}w wN)r   r   rm   rn   ro   rp   rq   rr   r}   r   r   strategy)rh   r   r   r   ru   rn   ro   rp   rv   rr   r}   r   r:   rt   r   rw   s         r*   recommend_batchz AsyncQdrantLocal.recommend_batch  s      ))/:
( $'
& %    )) ))$^^mm~~$11$00 ' 7 7mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B ))! ! 
 	
 
s   C;CC63C;r   r   r   c                    K   | j                  |      }|j                  |||||||	|
||r| j                  |j                        nd |r|j                  |      S d |      S wr   )rh   r   r:   rt   )r(   r[   r   r   rm   rz   rn   ro   rp   rq   rr   r}   r   r   r/   r:   s                   r*   r   zAsyncQdrantLocal.recommend  s     " ))/:
##%%%+ $(#7#78N8N#O:EK$6$6 $ 
 	
 LP $ 
 	
s   A A"c                 D  K   | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||
||	||r| j                  |j                        nd |r|j
                  nd |||      S w)N)r   r   r   r   rm   rn   rp   rq   rr   r}   r   r   r   r   r   )rh   r   r   r:   recommend_groupsrt   )r(   r[   r   r   r   rm   rz   rn   r   rr   rp   rq   r}   r   r   r   r/   r:   r   s                      r*   r   z!AsyncQdrantLocal.recommend_groups@  s     & ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&**!%%%+ $(#7#78N8N#O:EK$6$64##9# + 
 	
r   r   r   consistencytimeoutc                    K   | j                  |      }|j                  |||||||	|
|r| j                  |j                        nd |r|j                  
      S d 
      S wN)
r   r   rm   rn   ro   rp   rq   r}   r   r   )rh   r   r:   rt   )r(   r[   r   r   rm   rz   rn   ro   rp   rq   r}   r   r   r   r/   r:   s                   r*   r   zAsyncQdrantLocal.discovern  s     " ))/:
""%%% $(#7#78N8N#O:EK$6$6 # 
 	
 LP # 
 	
s   AAc                   K   | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd 
       c}S c c}w wr   )rh   r   r   r   ru   rn   ro   rp   rv   r}   r   r:   rt   rw   s         r*   discover_batchzAsyncQdrantLocal.discover_batch  s      ))/:
$ $#
" ! ~~$^^mm~~$11$00mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B   
 	
 
s   C%CC C%scroll_filterorder_byc                 Z   K   | j                  |      }	|	j                  ||||||      S w)N)r   rn   r   ro   rp   rq   )rh   scroll)
r(   r[   r   rn   r   ro   rp   rq   r/   r:   s
             r*   r   zAsyncQdrantLocal.scroll  sB      ))/:
  '%% ! 
 	
s   )+count_filterexactc                 P   K   | j                  |      }|j                  |      S w)N)r   )rh   count)r(   r[   r   r   r/   r:   s         r*   r   zAsyncQdrantLocal.count  s,      ))/:
\::   $&keyfacet_filterc                 T   K   | j                  |      }|j                  |||      S w)N)r   r   rn   )rh   facet)r(   r[   r   r   rn   r   r/   r:   s           r*   r   zAsyncQdrantLocal.facet  s0      ))/:
Cl%PP   &(pointsc                 n   K   | j                  |      }|j                  |       | j                         S wr-   )rh   upsert_default_update_resultr(   r[   r   r/   r:   s        r*   r   zAsyncQdrantLocal.upsert  s5      ))/:
&!**,,   35c                 n   K   | j                  |      }|j                  |       | j                         S wr-   )rh   update_vectorsr   r   s        r*   r   zAsyncQdrantLocal.update_vectors  s5      ))/:
!!&)**,,r   r   c                 p   K   | j                  |      }|j                  ||       | j                         S wr-   )rh   delete_vectorsr   )r(   r[   r   r   r/   r:   s         r*   r   zAsyncQdrantLocal.delete_vectors  s7      ))/:
!!'62**,,   46r   c                 R   K   | j                  |      }|j                  |||      S wr-   )rh   retrieve)r(   r[   r   rp   rq   r/   r:   s          r*   r   zAsyncQdrantLocal.retrieve  s-      ))/:
""3lCCs   %'operation_idc                 `    t        j                  |t        j                  j                        S )N)r   status)r   UpdateResultrN   UpdateStatus	COMPLETED)clsr   s     r*   r   z'AsyncQdrantLocal._default_update_result  s&    !!%k.F.F.P.P
 	
r+   points_selectorc                 n   K   | j                  |      }|j                  |       | j                         S wr-   )rh   deleter   r(   r[   r   r/   r:   s        r*   r   zAsyncQdrantLocal.delete  s5      ))/:
/***,,r   payloadc                 t   K   | j                  |      }|j                  |||       | j                         S w)N)r   selectorr   )rh   set_payloadr   )r(   r[   r   r   r   r/   r:   s          r*   r  zAsyncQdrantLocal.set_payload  s<      ))/:
wSI**,,s   68c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r   r  )rh   overwrite_payloadr   )r(   r[   r   r   r/   r:   s         r*   r  z"AsyncQdrantLocal.overwrite_payload  s:      ))/:
$$Wv$F**,,   57r6   c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r6   r  )rh   delete_payloadr   )r(   r[   r6   r   r/   r:   s         r*   r  zAsyncQdrantLocal.delete_payload  s:      ))/:
!!tf!=**,,r  c                 p   K   | j                  |      }|j                  |       | j                         S w)N)r  )rh   clear_payloadr   r   s        r*   r
  zAsyncQdrantLocal.clear_payload%  s8      ))/:
  / :**,,r   update_operationsc                    K   | j                  |      }|j                  |       | j                         gt        |      z  S wr-   )rh   batch_update_pointsr   r   )r(   r[   r  r/   r:   s        r*   r  z$AsyncQdrantLocal.batch_update_points,  sD      ))/:
&&'89++-.5F1GGG   A Achange_aliases_operationsc                   K   |D ]A  }t        |t        j                        r]| j                  |j                  j
                         |j                  j
                  | j                  |j                  j                  <   {t        |t        j                        r1| j                  j                  |j                  j                  d        t        |t        j                        rV|j                  j                  }|j                  j                  }| j                  j                  |      | j                  |<   6t        d|        | j!                          yw)NzUnknown operation: T)r   rN   CreateAliasOperationrh   create_aliasr[   r$   
alias_nameDeleteAliasOperationpopdelete_aliasRenameAliasOperationrename_aliasnew_alias_nameold_alias_namerf   rb   )r(   r  r/   	operationnew_nameold_names         r*   update_collection_aliasesz*AsyncQdrantLocal.update_collection_aliases6  s     3 	DI)[%E%EF$$Y%;%;%K%KL**:: Y33>>? I{'G'GH  !7!7!B!BDII{'G'GH$11@@$11@@)-)9)9()CX& #6yk!BCC	D 	

s   EEc           
         K   | j                   rt        d      t        j                  | j                  j                         D cg c]!  \  }}||k(  rt        j                  ||      # c}}      S c c}}w wNra   )r  r[   )r$   r.   rW   r   CollectionsAliasesResponser$   rM   rN   AliasDescription)r(   r[   r/   r  names        r*   get_collection_aliasesz'AsyncQdrantLocal.get_collection_aliasesJ  sr      ;;^__// +/,,*<*<*>&Z?* ,,
TXY
 	
s   AA;&A5
,A;c           
         K   | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  ||       c}}      S c c}}w wr   r!  )r(   r/   r  r$  s       r*   get_aliaseszAsyncQdrantLocal.get_aliasesW  sh     ;;^__// +/,,*<*<*>&Z ,,
TXY
 	
s   AA6!A0
'A6c           	         K   | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  |       c}}      S c c}}w w)Nra   )r$  )r#   )r.   rW   r   CollectionsResponser#   rM   rN   CollectionDescription)r(   r/   r$  _s       r*   get_collectionsz AsyncQdrantLocal.get_collectionsa  sg     ;;^__(( "&!1!1!7!7!9T1 11t<
 	
s   AA5 A/
&A5c                 L   K   | j                  |      }|j                         S wr-   )rh   info)r(   r[   r/   r:   s       r*   get_collectionzAsyncQdrantLocal.get_collectionk  s#     ))/:
  s   "$c                 N   K   	 | j                  |       y# t        $ r Y yw xY wwNTF)rh   rf   r(   r[   r/   s      r*   collection_existsz"AsyncQdrantLocal.collection_existso  s-     	  1 		s   % %	"%"%sparse_vectors_configc                    K   | j                  |      }|+|j                         D ]  \  }}|j                  ||        yywr1  )rh   rM   update_sparse_vectors_config)r(   r[   r4  r/   _collectionr   vector_paramss          r*   update_collectionz"AsyncQdrantLocal.update_collectionv  sS      **?; ,.C.I.I.K U*]88mTUr  c                 r    | j                   r+t        j                  j                  | j                  d|      S y )Nr:   )r"   rB   rC   rD   r   rg   s     r*   rP   z!AsyncQdrantLocal._collection_path  s'    ??77<<|_MMr+   c                 d  K   | j                   rt        d      | j                  j                  |d       }~| j                  j                         D ci c]  \  }}||k7  r|| c}}| _        | j                  |      }|t        j                  |d       | j                          yc c}}w w)Nra   T)ignore_errors)
r.   rW   r#   r  r$   rM   rP   shutilrmtreerb   )r(   r[   r/   r7  r  r$  r^   s          r*   delete_collectionz"AsyncQdrantLocal.delete_collection  s     ;;^__&&**?DA '+ll&8&8&:
"T& 

 //@&MM/>


s   AB0B*&A
B0vectors_config	init_fromc                   K   | j                   rt        d      d }d }|/t        |t              r|n|j                  }| j                  |      }|| j                  v rt        d| d      | j                  |      }|t        j                  |d       t        t        j                  ||      || j                        }	|	| j                  |<   |rl|rjd}
| j                  |d	d
       d {   \  }}| j!                  ||       |5| j                  |||
d       d {   \  }}| j!                  ||       |5| j#                          y7 a7 /w)Nra   rd   z already existsTr<   )r   r   )r   r   d      )rn   rq   )ro   rn   rq   )r.   rW   r   r   r:   rh   r#   rf   rP   rB   rG   r   rN   rO   r   r   upload_recordsrb   )r(   r[   r@  rA  r4  r/   src_collectionfrom_collection_namer^   r:   
batch_sizerecordsnext_offsets                r*   create_collectionz"AsyncQdrantLocal.create_collection  s~     ;;^__# '	37	Y=Q=Q ! "112FGNd...{?*;?KLL//@&KK$7$((&7L %,0,P,P

 -7)2J+/;;$AD ,7 , &"Wk 9)/3{{(J]a 0; 0 *&+ ##OW=	 )
 	

&
*s*   C-E/E03E#E$E EEc                 |   K   | j                  |       d {    | j                  ||||       d {   S 7  7 wr-   )r?  rK  )r(   r[   r@  rA  r4  r/   s         r*   recreate_collectionz$AsyncQdrantLocal.recreate_collection  sI      $$_555++^Y8M
 
 	
 	6
s   <8<:<<c                 (    | j                  ||       y r-   _upload_points)r(   r[   r   r/   s       r*   upload_pointszAsyncQdrantLocal.upload_points  s     	OV4r+   rI  c                 (    | j                  ||       y r-   rO  )r(   r[   rI  r/   s       r*   rE  zAsyncQdrantLocal.upload_records  s     	OW5r+   c                     | j                  |      }|j                  |D cg c]@  }t        j                  |j                  |j
                  xs i |j                  xs i       B c}       y c c}w )Nidrt   r   )rh   r   rN   PointStructrU  rt   r   )r(   r[   r   r:   points        r*   rP  zAsyncQdrantLocal._upload_points  sj     ))/:

 $	  ''xx(:EMMDWUW	
s   AA.c                    dt         t        d d f   fd}| j                  |      }t        |t              rt        d |j                         D              rt        t        |j                         D cg c]  }|j                  d    c}            dk(  sJ d       t        t        |j                                     j                  d   }	t        |	      D 
cg c]5  }
|j                         D ci c]  }|||   |
   j                          c}7 }}
}|j                  t!        |xs  |       t        |      |xs t#        j$                  i g            D cg c]P  \  }}}t'        j(                  |t        |t*        j,                        r|j                         n|xs i |xs i       R c}}}       y c c}w c c}w c c}}
w c c}}}w )Nr   c               3   8   K   	 t        t                      wr-   )r   r   rA   r+   r*   uuid_generatorz:AsyncQdrantLocal.upload_collection.<locals>.uuid_generator  s     %'l"    c              3   P   K   | ]  }t        |t        j                           y wr-   )r   r   r   ).0vs     r*   	<genexpr>z5AsyncQdrantLocal.upload_collection.<locals>.<genexpr>  s     A1Z2::&Ar   r      z8Each named vector should have the same number of vectorsrT  )r   r   rh   r   dictanyr1   r   r   shapenextiterranger6   r   r   zip	itertoolscyclerN   rV  r   r   )r(   r[   r   r   r   r/   rZ  r:   arrnum_vectorsir$  r   rt   s                 r*   upload_collectionz"AsyncQdrantLocal.upload_collection  s   	#	#tT/ : 	# ))/:
gt$A0@A*
 C1AB#1BCDIJIJItGNN$456<<Q?K {+ >E\\^LTwt}Q'..00LG  	 47+>+T']G<\yXZW[G\4	 	 0Xvw ''/9&"**/MFMMOSY`^`#Mr		
 C M
	s%   2F<G1GGAGG
field_namefield_schema
field_typec                 T   K   t        j                  d       | j                         S wNziPayload indexes have no effect in the local Qdrant. Please use server Qdrant if you need payload indexes.r3   r4   r   )r(   r[   rn  ro  rp  r/   s         r*   create_payload_indexz%AsyncQdrantLocal.create_payload_index  s(      	w	
 **,,r   c                 T   K   t        j                  d       | j                         S wrr  rs  )r(   r[   rn  r/   s       r*   delete_payload_indexz%AsyncQdrantLocal.delete_payload_index  s(      	w	
 **,,r   c                    K   g S wr-   rA   r2  s      r*   list_snapshotszAsyncQdrantLocal.list_snapshots%        	   c                     K   t        d      wNzeSnapshots are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.NotImplementedErrorr2  s      r*   create_snapshotz AsyncQdrantLocal.create_snapshot*        "s
 	
   snapshot_namec                     K   t        d      wr|  r}  )r(   r[   r  r/   s       r*   delete_snapshotz AsyncQdrantLocal.delete_snapshot1  r  r  c                    K   g S wr-   rA   r(   r/   s     r*   list_full_snapshotsz$AsyncQdrantLocal.list_full_snapshots8  s     	rz  c                     K   t        d      wr|  r}  r  s     r*   create_full_snapshotz%AsyncQdrantLocal.create_full_snapshot;       !s
 	
r  c                     K   t        d      wr|  r}  )r(   r  r/   s      r*   delete_full_snapshotz%AsyncQdrantLocal.delete_full_snapshot@  r  r  c                     K   t        d      wr|  r}  )r(   r[   r   r/   s       r*   recover_snapshotz!AsyncQdrantLocal.recover_snapshotE  r  r  shard_idc                    K   g S wr-   rA   r(   r[   r  r/   s       r*   list_shard_snapshotsz%AsyncQdrantLocal.list_shard_snapshotsJ  ry  rz  c                     K   t        d      wNz`Snapshots are not supported in the local Qdrant. Please use server Qdrant if you need snapshots.r}  r  s       r*   create_shard_snapshotz&AsyncQdrantLocal.create_shard_snapshotO        "n
 	
r  c                     K   t        d      wr  r}  )r(   r[   r  r  r/   s        r*   delete_shard_snapshotz&AsyncQdrantLocal.delete_shard_snapshotV  r  r  c                     K   t        d      wr  r}  )r(   r[   r  r   r/   s        r*   recover_shard_snapshotz'AsyncQdrantLocal.recover_shard_snapshot]  r  r  reasonc                     K   t        d      wNzaLocks are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.r}  )r(   r  r/   s      r*   lock_storagezAsyncQdrantLocal.lock_storaged       !o
 	
r  c                     K   t        d      wr  r}  r  s     r*   unlock_storagezAsyncQdrantLocal.unlock_storagei  r  r  c                 8   K   t        j                  d d      S w)NF)error_messagerI   )r   LocksOptionr  s     r*   	get_lockszAsyncQdrantLocal.get_locksn  s       t5AAr[  	shard_keyshards_numberreplication_factor	placementc                     K   t        d      wNz]Sharding is not supported in the local Qdrant. Please use server Qdrant if you need sharding.r}  )r(   r[   r  r  r  r  r/   s          r*   create_shard_keyz!AsyncQdrantLocal.create_shard_keyq  s      "k
 	
r  c                     K   t        d      wr  r}  )r(   r[   r  r/   s       r*   delete_shard_keyz!AsyncQdrantLocal.delete_shard_key~  s      "k
 	
r  c                 x   K   t         j                  j                  d      }t        j                  d|d       S w)Nzqdrant-clientzqdrant - vector search engine)titleversioncommit)	importlibmetadatar  rN   VersionInfo)r(   r  s     r*   r.  zAsyncQdrantLocal.info  s6     $$,,_=&&174
 	
s   8:)F)r   N)NN
   NTFN)N   r  N)NNr  r`  TFNN)NNNNNr  NTFNN)NNNNNr  r  TFNNN)NNNNr  r   TFNNNN)NNNNr  r`  NTFNNNN)Nr  NNTF)NT)Nr  F)TF)r   r-   )NN)NNN)__name__
__module____qualname____doc__r   boolr!   propertyr.   r   r2   r&   rb   r   rh   r   r   SearchRequestr	   ScoredPointry   r   
NumpyArrayfloatr   NamedVectorNamedSparseVectorr   FilterSearchParamsintPayloadSelectorrs   SearchMatrixOffsetsResponser   SearchMatrixPairsResponser   rN   WithLookupInterfaceGroupsResultr   QueryLookupLocationr   r   r   r   r   r   QueryResponser   QueryRequestr   SparseVectorDocumentr   RecommendRequestr   r   RecommendStrategyr   r   TargetVectorContextExamplePairReadConsistencyr   DiscoverRequestr   OrderByRecordr   CountResultr   FacetResponser   Pointsr   r   PointVectorsr   PointsSelectorr   r   classmethodr   r   Payloadr  r  r  r
  UpdateOperationr  AliasOperationsr  r"  r%  r'  r)  r,  CollectionInfor/  r3  r
   SparseVectorParamsr9  rP   r?  VectorParamsInitFromrK  rM  r   rV  rQ  rE  rP  r   VectorStructrm  PayloadSchemaTypert  rv  SnapshotDescriptionrx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ShardKeyr  r  r  r.  __classcell__)r)   s   @r*   r   r   3   s   # #t #X\ #$   C D  "H&Ds D D
"
.6u7J7J.K
WZ
	d5$$%	&
6 046: $JN38+/!

 UO#tE{"###	%

 u||,
   2 23
 
 
 D(3-1F1FFG
 D(3-/0
  "%!
" #
$ 
e	 %
B 04#

 u||,
 	

 
 }
 
 
	*	*
" 04#

 u||,
 	

 
 }
 
 
	(	(
* 6:<@PT38+/;?#
#
 huouS$u+5E/FHYHYY
#
 #
 {112#
   8 89#
 #
 #
 D(3-1L1LLM#
 D(3-/0#
 "%#
 e778#
 #
  
		!#
JV&V& $V& }	V&
 e223V& 
u{{C..	/V&p
5%..!95>>!IJK
 
 
enn		
.9<	" (,#FJ/36: $JN38+/6:!
!
 $!
 }	!

 U^^(<dBC!
 u||,!
   2 23!
 !
 !
 D(3-1F1FFG!
 D(3-/0!
 "%!
 e223!
 !
 
		!
F
"
.6u7I7I.J
VY
	e!!	"
L #FJ/36:JN38+/;?6:14
4
 4
 MMKeKKNN	
	4
 }4
 U^^(<dBC4
  u||,!4
"   2 23#4
$ %4
& '4
( D(3-1F1FFG)4
* D(3-/0+4
, "%-4
. e778/4
0 e22314
2 34
4 
		54
l
"
.6u7M7M.N
Z]
	d5$$%	&
: :>9=/36:FJ/4+/#6:6:!
!
 8$456!
 8$456	!

 u||,!
   2 23!
 !
 !
 D$s)U-B-BBC!
 D$s)O,!
 "%!
 }!
 e223!
 5223!
 !
  
e	 !!
N KOJN/36:+/JN38#6:;?6:!,
,
 ,
 8E%--e*D$EFG	,

 8E%--e*D$EFG,
 u||,,
   2 23,
 ,
 ,
 "%,
 D(3-1F1FFG,
 D(3-/0,
 },
 e223,
 e778,
  5223!,
" #,
$ 
		%,
b 04@D/36:FJ/4#6:7;!%

 ++,
 (5#;#;<=	

 u||,
   2 23
 
 
 D$s)U-B-BBC
 D$s)O,
 }
 e223
 e334
 #
 
  
e	 !
B
"
.6u7L7L.M
Y\
	d5$$%	&
6 15,0*.JN38

  -
 	

 5==)
 '
 D(3-1F1FFG
 D(3-/0
 
 
tELL!8EMM#::	;
0 04	;; u||,; 	;
 ; 
		; 04
Q
Q 
Q u||,	
Q
 
Q 
Q 
Q 
		
Q-"-,1LL-DG-			--"-,4U5G5G,H-TW-			-	-	- #	- $$		-
 	- 
			- KO38	D	D emm$	D D(3-1F1FFG		D
 D(3-/0	D 	D 
ell		D 
# 
e>P>P 
 

-"-5:5I5I-UX-			- "
-
- 
- $$	
-
 c]
- 
- 
		
-	-	- 	- $$		-
 	- 
			-	-	- sm	- $$		-
 	- 
			--"-5:5I5I-UX-			-HH $E$9$9:H 	H
 
e  	!H)1%2G2G)HTW	(
"
.1
		)	)

# 
%2R2R 

c 
e6O6O 
!C !3 !5K_K_ !s c d  SW  (U5M5M0M(NO 	
 
  s c d ( /3RV** e00'#u?Q?Q:Q2RRS* ENN+	*
  (U5M5M0M(NO* * 
*` /3RV

 e00'#u?Q?Q:Q2RRS
 ENN+	

  (U5M5M0M(NO
 
 

5"5,4U5F5F,G5SV5	5
6"6-5ell-C6OR6	6

"
,4U5;L;Lell;Z5[,\
	
& 7;15%
%
 e&&&')9)98EDVDV;WW
%
 (4S>23%
 hu}}-.%
 %
 
%
V ;?8<-- - u667	-
 U445- - 
		--"-03-?B-			-".1	e''	(

"
.1
	%++	,

"
36
BE
	
# $u?X?X:Y 
3 
5;T;T 


 
s 
t 


c 
S 
TW 
\` 

".1=@	e''	(

"
.1
=@
	%++	,

"
.1
BE
QT
	

"
.1
=@
LO
	

 
 
@Q@Q 


S 
U5F5F 

B B0A0A B (,,0)-

 >>
  }	

 %SM
 DI&
 
 


"
/4~~
IL
	

E-- 
r+   r   )/importlib.metadatar  rh  rJ   r3   rB   r=  copyr   ior   typingr   r   r   r   r	   r
   r   r   r   r   r   r   uuidr   numpyr   r7   qdrant_client._pydantic_compatr   qdrant_client.async_client_baser   qdrant_client.conversionsr   r   qdrant_client.httpr   rN    qdrant_client.http.models.modelsr   $qdrant_client.local.local_collectionr   r   r   rE   r   rA   r+   r*   <module>r     sm        	          2 ; ; 4 =  ! V
 V
r+   