
    sOi                         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 d dlmZ d dl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$m%Z% dZ& G d de      Z'y)    N)deepcopy)TextIOWrapper)Any	GeneratorIterableMappingSequenceget_args)uuid4)show_warningshow_warning_once)to_dict)AsyncQdrantBase)common_types)models)LocalCollectionDEFAULT_VECTOR_NAMEignore_mentioned_ids_filterz	meta.jsonc            !       L    e Zd ZdZdZd|dededdf fdZedefd       Z	d	e
ddfd
Zd}dZd}dZdedefdZ	 	 	 	 	 	 	 d~dedej"                  ee   z  eeee   f   z  ej,                  z  ej.                  z  dej0                  dz  dej2                  dz  dededz  deee   z  ej6                  z  deee   z  dedz  d	e
deej8                     fdZ	 	 	 	 ddedej0                  dz  dedededz  d	e
dej<                  fdZ	 	 	 	 ddedej0                  dz  dedededz  d	e
dej@                  fdZ!dedejD                  dz  dedz  dejF                  dz  deejD                  e$ejJ                     f   f
dZ&deejN                     ejN                  z  dz  dedeejN                     fd Z(dejN                  dedejN                  fd!Z)	 	 	 	 	 	 	 	 	 	 	 ddedejD                  dz  dedz  dejN                  eejN                     z  dz  dej0                  dz  dej2                  dz  dededz  deee   z  ej6                  z  deee   z  dedz  dejF                  dz  d	e
dejT                  fd"Z+ded#eejX                     d	e
deejT                     fd$Z-	 	 	 	 	 	 	 	 	 	 	 	 dded%edejJ                  ee   z  eee      z  ej\                  z  ejD                  z  ej"                  z  ej^                  z  ej`                  z  ejb                  z  dz  dedz  dejN                  eejN                     z  dz  dej0                  dz  dej2                  dz  ded&edeee   z  ej6                  z  deee   z  dedz  d'ejd                  dz  dejF                  dz  d	e
dejf                  f d(Z4	 	 	 	 	 	 dded)ej0                  dz  ded*ejj                  dz  dejJ                  dz  deee   z  ej6                  z  deee   z  d	e
deeejl                     ejJ                  dz  f   fd+Z7	 	 dded,ej0                  dz  d-ed	e
dejp                  f
d.Z9	 	 	 dded/ed0ej0                  dz  ded-ed	e
dejt                  fd1Z;	 	 dded2ejx                  d3ej0                  dz  d4ejz                  dz  d	e
dej|                  fd5Z?	 dded2eej                     d3ej0                  dz  d	e
dej|                  f
d6ZAded7ee   d2ej                  d	e
dej|                  f
d8ZC	 	 dded9eejJ                     deee   z  ej6                  z  deee   z  d	e
deejl                     fd:ZDeEdd;edej|                  fd<       ZFded=ej                  d	e
dej|                  fd>ZG	 dded?ej                  d2ej                  d/edz  d	e
dej|                  fd@ZIded?ej                  d2ej                  d	e
dej|                  f
dAZJdedBee   d2ej                  d	e
dej|                  f
dCZKded=ej                  d	e
dej|                  fdDZLdedEeej                     d	e
deej|                     fdFZNdGeej                     d	e
defdHZPded	e
dej                  fdIZRd	e
dej                  fdJZSd	e
dej                  fdKZUded	e
dej                  fdLZWded	e
defdMZX	 	 ddedNeYeej                  f   dz  dOej                  dz  d	e
def
dPZ[dededz  fdQZ\ded	e
defdRZ]	 	 	 ddedSej                  eYeej                  f   z  dz  dNeYeej                  f   dz  dOej                  dz  d	e
defdTZ_	 	 	 ddedSej                  eYeej                  f   z  dz  dNeYeej                  f   dz  dOej                  dz  d	e
defdUZ`	 	 dded2eaej                     d3ej0                  dz  d4ejz                  dz  d	e
ddfdVZc	 	 dded2eaej                  ejl                  z     d3ej0                  dz  d4ejz                  dz  ddf
dWZd	 	 	 	 dded7eeeej"                  f   ej"                  z  eaej                     z  d?eaeee
e
f      dz  d9eaejJ                     dz  d3ej0                  dz  d4ejz                  dz  d	e
ddfdXZg	 	 ddedYedZej                  dz  d[ej                  dz  d	e
dej|                  fd\ZidedYed	e
dej|                  fd]Zjded	e
deej                     fd^Zlded	e
dej                  dz  fd_Zmded`ed	e
defdaZnd	e
deej                     fdbZod	e
dej                  fdcZpd`ed	e
defddZqdeded	e
defdeZrdedfed	e
deej                     fdgZsdedfed	e
dej                  dz  fdhZtdedfed`ed	e
def
diZudedfeded	e
def
djZv	 	 	 ddedkej                  dledz  dmedz  dnee   dz  d	e
defdoZxdedkej                  d	e
defdpZydej                  fdqZ{dedrej                  d	e
defdsZ}dedej                  fdtZdej                   fduZdefdvZdwed	e
defdxZded	e
dej                  fdyZded	e
dej                  fdzZd	e
d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.
    i N  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      m/volume1/homes/robertsu/coba/app/.venv/lib/python3.12/site-packages/qdrant_client/local/async_qdrant_local.pyr   zAsyncQdrantLocal.__init__2   sR     	/N, "j079')15

"    c                     | j                   S N)r"   r#   s    r%   closedzAsyncQdrantLocal.closedD   s    ||r&   kwargsc                   K   d| _         | j                  j                         D ]K  }||j                          t	        dt        | j                  j                                t        d       M 	 | j                  Q| j                  j                  s:dd l
}|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:    )messagecategory
stacklevelr   )r"   r   valuescloser   listkeysUserWarningr    r*   portalockerunlock	TypeError)r#   r+   
collectionr6   s       r%   r2   zAsyncQdrantLocal.closeH   s     **113J%  "jkopt  qA  qA  qF  qF  qH  lI  kJ  K( 	 4	+T5E5E5L5L"""4#3#34  &&(	 6M+
  		s+   A0C 3AC C 	CC CC c                 .   d}| 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        nt        |d      5 }t        j                  |      }|d   j                         D ]  \  }}|D ]  }|j                  |d         t        j                   di |}| j#                  |      }	t%        ||	| j&                        }
|
| j(                  |<   t+        |
j,                        | j.                  kD  st1        d	| j.                  d
d| dt+        |
j,                         dt2        d        |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      | _        dd l}	 |j;                  | j6                  |j<                  j>                  |j<                  j@                  z         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# |jB                  jD                  $ r tG        d| j                   d      w xY w)N)	init_fromTexist_okwr   r   rr   )r   z=Local mode is not recommended for collections with more than ,z points. Collection <z> contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.   )r/   r0   r   z.lockztmp lock filezr+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poprest_modelsCreateCollection_collection_pathr   r   r   lenidsLARGE_DATA_THRESHOLDr   r5   r   r    r6   lock	LockFlags	EXCLUSIVENON_BLOCKING
exceptionsLockExceptionRuntimeError)r#   deprecated_config_fields	meta_pathfmetacollection_nameconfig_jsonkeyconfigcollection_pathr9   lock_file_pathr6   s                r%   r!   zAsyncQdrantLocal._load\   s   #1 GGLL0BC	ww~~i(KK5i%

2"#EFG &% i%yy|484G4M4M4O0O[7#T2  8(99HKHF&*&;&;O&LO!0'8<8\8\"J
 9CD$$_5:>>*T-F-FF$[\`\u\uvw[x  yN  O^  N_  _j  kn  oy  o}  o}  k~  j  c  d%0'( 5P"  $I' &( dmmW=ww~~n-KK5nc*a( +5	  %%//+2G2G2T2TTA &% &%. +* %%33 	!$--  1h  i 	s9   
(J<B7K AKK4AK! <KKK!3L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*   r]   rD   rE   rF   r   rG   rJ   rK   rL   rM   r   rO   r   re   r   )r#   r_   r`   rb   r9   s        r%   _savezAsyncQdrantLocal._save   s    ;;^__GGLL0BC	)S!QGG

 BFAQAQAWAWAY(AY =* ,WZ5F5F-GGAY( $(<<
 "!(	 "!s   8C C7CCC(rb   c                     | j                   rt        d      || j                  v r| j                  |   S || j                  v r| j                  | j                  |      S t	        d| d      )Nri   Collection 
 not found)r*   r]   r   r   
ValueErrorr#   rb   s     r%   _get_collectionz AsyncQdrantLocal._get_collection   so    ;;^__d...##O44dll*##DLL$ABB;&7zBCCr&   query_vectorquery_filtersearch_paramslimitoffsetwith_payloadwith_vectorsscore_thresholdc
           	      T    | j                  |      }|j                  |||||||	      S )N)rq   rr   rt   ru   rv   rw   rx   )rp   search)r#   rb   rq   rr   rs   rt   ru   rv   rw   rx   r+   r9   s               r%   rz   zAsyncQdrantLocal.search   sA    " ))/:
  %%%%+ ! 
 	
r&   sampleusingc                 V   K   | j                  |      }|j                  ||||      S wN)rr   rt   r{   r|   )rp   search_matrix_offsetsr#   rb   rr   rt   r{   r|   r+   r9   s           r%   r   z&AsyncQdrantLocal.search_matrix_offsets   s9      ))/:
//%U6 0 
 	
   ')c                 V   K   | j                  |      }|j                  ||||      S wr~   )rp   search_matrix_pairsr   s           r%   r   z$AsyncQdrantLocal.search_matrix_pairs   s9      ))/:
--%U6 . 
 	
r   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 t        |t        j8                        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                    t        | t        t        j                              rt        | t        j
                        rt        |       } | }|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 rm   )
isinstancer
   typesPointIduuidUUIDstrrU   rn   npndarraytolistadd)
r   point_ididxvecr9   rb   collection_vectorslookup_collection_namementioned_idsvector_names
       r%   input_into_vectorz@AsyncQdrantLocal._resolve_query_input.<locals>.input_into_vector   s    ,(?@lDII6#&|#4L':>>1$vhZ7V%WXX nnX."44,[9#>C$w{m:%FGGc2::.**,C"&<<!%%h/
##r&   )positivenegative)r9   rp   r   vectorsparse_vectorsmultivectorsvectorssetr   VectorInputr   r   rQ   NearestQuerynearestRecommendQuery	recommendr   r   DiscoverQuerydiscovertargetcontextr3   ContextPairContextQueryOrderByQueryFusionQueryRrfQuery)r#   rb   r   r|   r   search_in_vector_namesparsemultir   r   pairspairr9   r   r   r   r   s    `          @@@@@r%   _resolve_query_inputz%AsyncQdrantLocal._resolve_query_input   so    <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<EMN }%%M {99:''3HMH`H`,H`%l3H`,( ''3HMH`H`,H`%l3H`,(@ }%%; {889$5enn6K6K$LENN! enn44d; &&nn,,-  "&
 "D	 ''.t}}=.t}}= "&ENN", }%% {778%/t%DEMM5==/E "
 "D	 ''.t}}=.t}}= "EM }%% {778
 }%%	 {667 }%% {334}%%I,,&s   N+ N0>N5>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   r3   rT   r   Prefetchextendr   r	   _resolve_prefetch_input)r#   r   rb   
prefetchess       r%   _resolve_prefetches_inputz*AsyncQdrantLocal._resolve_prefetches_input<  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   filterr3   r   r   )r#   r   rb   r   r   s        r%   r   z(AsyncQdrantLocal._resolve_prefetch_inputQ  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   rr   r|   rx   rt   ru   rv   rw   )rp   r   r   r3   r   query_points)r#   rb   r   r|   r   rr   rs   rt   ru   rv   rw   rx   r   r+   r9   r   s                   r%   r   zAsyncQdrantLocal.query_points_  s       ))/:
%)%>%>{&"UM 7|T-EXYL11(OL&&%+;Q%% ' 

 
	
s   A0A2requestsc                 L  K   |D cg c]  }| j                  ||j                  |j                  |j                  |j                  xs d|j
                  |j                  |j                  |j                  |j                  |j                         d {    c}S 7 	c c}w w)N
   )rb   r   r   rr   rt   ru   rv   rw   rx   r|   r   )r   r   r   r   rt   ru   rv   with_vectorrx   r|   r   )r#   rb   r   r+   requests        r%   query_batch_pointsz#AsyncQdrantLocal.query_batch_points  s     " $
 $ ## /mm ))$^^mm)r~~$11$00 ' 7 7mm#// $    $
 	

s)   B$BBB
BB$BB$group_by
group_sizewith_lookupc                 D  K   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }d }|=t	        |t
              r| j                  |      }n| j                  |j                        }|j                  |||||||	|
||||      S w)N)r   rr   r|   r   rt   r   r   rv   rw   rx   r   with_lookup_collection)rp   r   r   r3   r   r   r9   query_groups)r#   rb   r   r   r|   r   rr   rs   rt   r   rv   rw   rx   r   r   r+   r9   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 ' 
 	
s   BB scroll_filterorder_byc                 Z   K   | j                  |      }	|	j                  ||||||      S w)N)r   rt   r   ru   rv   rw   )rp   scroll)
r#   rb   r   rt   r   ru   rv   rw   r+   r9   s
             r%   r   zAsyncQdrantLocal.scroll  sB      ))/:
  '%% ! 
 	
s   )+count_filterexactc                 P   K   | j                  |      }|j                  |      S w)N)r   )rp   count)r#   rb   r   r   r+   r9   s         r%   r   zAsyncQdrantLocal.count  s,      ))/:
\::   $&rd   facet_filterc                 T   K   | j                  |      }|j                  |||      S w)N)rd   r   rt   )rp   facet)r#   rb   rd   r   rt   r   r+   r9   s           r%   r   zAsyncQdrantLocal.facet  s0      ))/:
Cl%PPs   &(pointsupdate_filterupdate_modec                 t   K   | j                  |      }|j                  |||       | j                         S wNr   r   )rp   upsert_default_update_result)r#   rb   r   r   r   r+   r9   s          r%   r   zAsyncQdrantLocal.upsert  s<      ))/:
&;W**,,   68c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r   )rp   update_vectorsr   )r#   rb   r   r   r+   r9   s         r%   r   zAsyncQdrantLocal.update_vectors  s:      ))/:
!!&!F**,,   57r   c                 p   K   | j                  |      }|j                  ||       | j                         S wr(   )rp   delete_vectorsr   )r#   rb   r   r   r+   r9   s         r%   r   zAsyncQdrantLocal.delete_vectors  s7      ))/:
!!'62**,,   46rU   c                 R   K   | j                  |      }|j                  |||      S wr(   )rp   retrieve)r#   rb   rU   rv   rw   r+   r9   s          r%   r   zAsyncQdrantLocal.retrieve  s-      ))/:
""3lCCs   %'operation_idc                 `    t        j                  |t        j                  j                        S )N)r   status)r   UpdateResultrQ   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(   )rp   deleter   r#   rb   r   r+   r9   s        r%   r   zAsyncQdrantLocal.delete*  s5      ))/:
/***,,s   35payloadc                 t   K   | j                  |      }|j                  |||       | j                         S w)N)r   selectorrd   )rp   set_payloadr   )r#   rb   r   r   rd   r+   r9   s          r%   r   zAsyncQdrantLocal.set_payload1  s<      ))/:
wSI**,,r   c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r   r   )rp   overwrite_payloadr   )r#   rb   r   r   r+   r9   s         r%   r   z"AsyncQdrantLocal.overwrite_payload=  s:      ))/:
$$Wv$F**,,r   r4   c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r4   r   )rp   delete_payloadr   )r#   rb   r4   r   r+   r9   s         r%   r   zAsyncQdrantLocal.delete_payloadH  s:      ))/:
!!tf!=**,,r   c                 p   K   | j                  |      }|j                  |       | j                         S w)N)r   )rp   clear_payloadr   r   s        r%   r   zAsyncQdrantLocal.clear_payloadS  s8      ))/:
  / :**,,r   update_operationsc                    K   | j                  |      }|j                  |       | j                         gt        |      z  S wr(   )rp   batch_update_pointsr   rT   )r#   rb   r   r+   r9   s        r%   r  z$AsyncQdrantLocal.batch_update_pointsZ  sD      ))/:
&&'89++-.5F1GGGs   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   rQ   CreateAliasOperationrp   create_aliasrb   r   
alias_nameDeleteAliasOperationrP   delete_aliasRenameAliasOperationrename_aliasnew_alias_nameold_alias_namern   rj   )r#   r  r+   	operationnew_nameold_names         r%   update_collection_aliasesz*AsyncQdrantLocal.update_collection_aliasesd  s     3I)[%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 3 	

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Nri   )r  rb   )r   r*   r]   r   CollectionsAliasesResponser   rO   rQ   AliasDescription)r#   rb   r+   r  names        r%   get_collection_aliasesz'AsyncQdrantLocal.get_collection_aliasesx  sx      ;;^__// +/,,*<*<*>*>&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_aliases  sn     ;;^__// +/,,*<*<*>*>&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)Nri   )r  )r   )r*   r]   r   CollectionsResponser   rO   rQ   CollectionDescription)r#   r+   r  _s       r%   get_collectionsz AsyncQdrantLocal.get_collections  sl     ;;^__(( "&!1!1!7!7!9!9IT1 11t<!9
 	
s   AA5 A/
&A5c                 L   K   | j                  |      }|j                         S wr(   )rp   info)r#   rb   r+   r9   s       r%   get_collectionzAsyncQdrantLocal.get_collection  s#     ))/:
  s   "$c                 N   K   	 | j                  |       y# t        $ r Y yw xY ww)NTF)rp   rn   r#   rb   r+   s      r%   collection_existsz"AsyncQdrantLocal.collection_exists  s-     	  1 		s   % %	"%"%sparse_vectors_configmetadatac                 d  K   | j                  |      }d}|,|j                         D ]  \  }}|j                  ||        d}|X|j                  j                  &|j                  j                  j                  |       nt        |      |j                  _        d}| j                          |S w)NFT)rp   rO   update_sparse_vectors_configre   r'  updater   rj   )	r#   rb   r&  r'  r+   _collectionupdatedr   vector_paramss	            r%   update_collectionz"AsyncQdrantLocal.update_collection  s      **?; ,.C.I.I.K*]88mT /LG!!**6""++228<.6x.@""+G

s   B.B0c                 r    | j                   r+t        j                  j                  | j                  d|      S y )Nr9   )r   rD   rE   rF   r   ro   s     r%   rS   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)Nri   T)ignore_errors)
r*   r]   r   rP   r   rO   rS   shutilrmtreerj   )r#   rb   r+   r+  r  r  rf   s          r%   delete_collectionz"AsyncQdrantLocal.delete_collection  s     ;;^__&&**?DA '+ll&8&8&:
&:"T& &:

 //@&MM/>


s   AB0B*&A
B0vectors_configc           	      |  K   | j                   rt        d      || j                  v rt        d| d      | j	                  |      }|t        j                  |d       t        t        j                  |xs i |t        |            || j                        }|| j                  |<   | j                          yw)Nri   rl   z already existsTr<   )r   r   r'  )r   r   )r*   r]   r   rn   rS   rD   rI   r   rQ   rR   r   r   rj   )r#   rb   r5  r&  r'  r+   rf   r9   s           r%   create_collectionz"AsyncQdrantLocal.create_collection  s      ;;^__d...{?*;?KLL//@&KK$7$((&,"4!(+
 %,0,P,P

 -7)

s   B:B<c                 ~   K   | j                  |       d {    | j                  ||||       d {   S 7 !7 w)N)r'  )r4  r7  )r#   rb   r5  r&  r'  r+   s         r%   recreate_collectionz$AsyncQdrantLocal.recreate_collection  sN      $$_555++^-BX , 
 
 	
 	6
s   =9=;==c                 .    | j                  ||||       y r   )_upload_points)r#   rb   r   r   r   r+   s         r%   upload_pointszAsyncQdrantLocal.upload_points  s      	V=k 	 	
r&   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idr   r   r   )rp   r   rQ   PointStructr?  r   r   )r#   rb   r   r   r   r9   points          r%   r;  zAsyncQdrantLocal._upload_points  s~     ))/:

 $	 $E ''xx(:EMMDWUW $	 (# 	 		
s   AA1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]u  \  }}}t'        j(                  t        |t*        j,                        rt        |      n|t        |t.        j0                        r|j                         n|xs i |xs i       w 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   rC   r&   r%   uuid_generatorz:AsyncQdrantLocal.upload_collection.<locals>.uuid_generator"  s     %'l" s   c              3   P   K   | ]  }t        |t        j                           y wr(   )r   r   r   ).0vs     r%   	<genexpr>z5AsyncQdrantLocal.upload_collection.<locals>.<genexpr>(  s     A0@1Z2::&0@r   r      z8Each named vector should have the same number of vectorsr>  r   )r   r   rp   r   dictanyr1   rT   r   shapenextiterranger4   r   r   zip	itertoolscyclerQ   r@  r   r   r   r   )r#   rb   r   r   rU   r   r   r+   rD  r9   arrnum_vectorsir  r   r   s                   r%   upload_collectionz"AsyncQdrantLocal.upload_collection  s   	#	#tT/ : 	# ))/:
gt$A0@A*
 C1AB1A#11ABCDIJIJItGNN$456<<Q?K {++A >E\\^L^Twt}Q'..00^L+   	 47+>+T']G<\yXZW[G\4	4/Xvw ''(28TYY(Gs8}X/9&"**/MFMMOSY`^`#Mr
4	 (# 	 	
 C M
	s%   2G$G.1G)G.A:G4)G.
field_namefield_schema
field_typec                 P   K   t        dt        dd       | j                         S w)NiPayload indexes have no effect in the local Qdrant. Please use server Qdrant if you need payload indexes.zcreate-local-payload-indexesrB   r.   r/   r   r0   r   r5   r   )r#   rb   rW  rX  rY  r+   s         r%   create_payload_indexz%AsyncQdrantLocal.create_payload_indexA  s-      	 .		
 **,,r   c                 P   K   t        dt        dd       | j                         S w)Nr[  zdelete-local-payload-indexesrB   r\  r]  )r#   rb   rW  r+   s       r%   delete_payload_indexz%AsyncQdrantLocal.delete_payload_indexQ  s-      	 .		
 **,,r   c                    K   g S wr(   rC   r$  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.NotImplementedErrorr$  s      r%   create_snapshotz AsyncQdrantLocal.create_snapshota        "s
 	
   snapshot_namec                     K   t        d      wrf  rg  )r#   rb   rl  r+   s       r%   delete_snapshotz AsyncQdrantLocal.delete_snapshoth  rj  rk  c                    K   g S wr(   rC   r#   r+   s     r%   list_full_snapshotsz$AsyncQdrantLocal.list_full_snapshotso  s     	rd  c                     K   t        d      wrf  rg  rp  s     r%   create_full_snapshotz%AsyncQdrantLocal.create_full_snapshotr       !s
 	
rk  c                     K   t        d      wrf  rg  )r#   rl  r+   s      r%   delete_full_snapshotz%AsyncQdrantLocal.delete_full_snapshotw  rt  rk  c                     K   t        d      wrf  rg  )r#   rb   r   r+   s       r%   recover_snapshotz!AsyncQdrantLocal.recover_snapshot|  rt  rk  shard_idc                    K   g S wr(   rC   r#   rb   ry  r+   s       r%   list_shard_snapshotsz%AsyncQdrantLocal.list_shard_snapshots  rc  rd  c                     K   t        d      wNz`Snapshots are not supported in the local Qdrant. Please use server Qdrant if you need snapshots.rg  r{  s       r%   create_shard_snapshotz&AsyncQdrantLocal.create_shard_snapshot        "n
 	
rk  c                     K   t        d      wr~  rg  )r#   rb   ry  rl  r+   s        r%   delete_shard_snapshotz&AsyncQdrantLocal.delete_shard_snapshot  r  rk  c                     K   t        d      wr~  rg  )r#   rb   ry  r   r+   s        r%   recover_shard_snapshotz'AsyncQdrantLocal.recover_shard_snapshot  r  rk  	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.rg  )r#   rb   r  r  r  r  r+   s          r%   create_shard_keyz!AsyncQdrantLocal.create_shard_key  s      "k
 	
rk  c                     K   t        d      wr  rg  )r#   rb   r  r+   s       r%   delete_shard_keyz!AsyncQdrantLocal.delete_shard_key  s      "k
 	
rk  c                 x   K   t         j                  j                  d      }t        j                  d|d       S w)Nzqdrant-clientzqdrant - vector search engine)titleversioncommit)	importlibr'  r  rQ   VersionInfo)r#   r  s     r%   r!  zAsyncQdrantLocal.info  s6     $$,,_=&&174
 	
s   8:cluster_operationc                     K   t        d      w)NznCluster collection update is not supported in the local Qdrant. Please use server Qdrant if you need a clusterrg  )r#   rb   r  r+   s       r%   cluster_collection_updatez*AsyncQdrantLocal.cluster_collection_update  s      "|
 	
rk  c                     K   t        d      w)NzlCollection cluster info is not supported in the local Qdrant. Please use server Qdrant if you need a clusterrg  ro   s     r%   collection_cluster_infoz(AsyncQdrantLocal.collection_cluster_info  s     !z
 	
rk  c                     K   t        d      w)NzcCluster status is not supported in the local Qdrant. Please use server Qdrant if you need a clusterrg  r)   s    r%   cluster_statuszAsyncQdrantLocal.cluster_status  s     !q
 	
rk  c                     K   t        d      w)NziRecover current peer is not supported in the local Qdrant. Please use server Qdrant if you need a clusterrg  r)   s    r%   recover_current_peerz%AsyncQdrantLocal.recover_current_peer  s     !w
 	
rk  peer_idc                     K   t        d      w)NzeRemove peer info is not supported in the local Qdrant. Please use server Qdrant if you need a clusterrg  )r#   r  r+   s      r%   remove_peerzAsyncQdrantLocal.remove_peer  rt  rk  c                     K   t        d      w)NzQGet optimizations is not supported in the local Qdrant. Please use server Qdrant.rg  r$  s      r%   get_optimizationsz"AsyncQdrantLocal.get_optimizations  s      "_
 	
rk  c                     K   t        d      w)NzdList shard keys is not supported in the local Qdrant. Please use server Qdrant if you need sharding.rg  r$  s      r%   list_shard_keysz AsyncQdrantLocal.list_shard_keys  s      "r
 	
rk  c                     K   t        d      w)NzgCluster telemetry is not supported in the local Qdrant. Please use server Qdrant if you need a cluster.rg  rp  s     r%   cluster_telemetryz"AsyncQdrantLocal.cluster_telemetry  s     !u
 	
rk  )F)r   N)NNr   NTFN)N   r   N)NNNNNr   NTFNN)NNNNNr   r  TFNNN)Nr   NNTF)NT)Nr   F)NNr(   )TF)r   )NNN)NNNN)__name__
__module____qualname____doc__rV   r   boolr   propertyr*   r   r2   r!   rj   r   rp   r   
NumpyArrayr	   floattupler3   NamedVectorNamedSparseVectorFilterSearchParamsintPayloadSelectorScoredPointrz   SearchMatrixOffsetsResponser   SearchMatrixPairsResponser   QueryLookupLocationr   r   r   r   r   r   QueryResponser   QueryRequestr   SparseVectorDocumentImageInferenceObjectWithLookupInterfaceGroupsResultr   OrderByRecordr   CountResultr   FacetResponser   Points
UpdateModer   r   PointVectorsr   PointsSelectorr   r   classmethodr   r   Payloadr   r   r   r   UpdateOperationr  AliasOperationsr  r  r  r  r  r  CollectionInfor"  r%  r   SparseVectorParamsr.  rS   r4  VectorParamsr7  r9  r   r@  r<  r;  rJ  VectorStructrV  PayloadSchemaTyper^  r`  SnapshotDescriptionrb  ri  rn  rq  rs  rv  rx  r|  r  r  r  ShardKeyr  r  r  r!  ClusterOperationsr  CollectionClusterInfor  ClusterStatusr  r  r  OptimizationsResponser  ShardKeysResponser  DistributedTelemetryDatar  __classcell__)r$   s   @r%   r   r   %   s    !# #t #X\ #$   C D (.`&Ds D D" -137!EI-2(,

 &&
5/
T%[ 
!" 

 
!
!	"
 llT)
 ))D0
 
 d

 Xc]*U-B-BB
 Xc]*
 
 
  
e	 !
> -1 

 llT)
 	

 
 Tz
 
 
	*	*
" -1 

 llT)
 	

 
 Tz
 
 
	(	(
Z&Z& {{T!Z& Tz	Z&
 ))D0Z& 
u{{C..	/Z&x
 05>>ADH
[^
	enn	
*9<	" %) AE,037!EI-2(,37!
!
 {{T!!
 Tz	!

 ..4#77$>!
 llT)!
 ))D0!
 !
 d
!
 Xc]*U-B-BB!
 Xc]*!
 !
 ))D0!
 !
 
		!
F
"
.6u7I7I.J
VY
	e!!	"
B  AE,037EI-2(,8<3714
4
 4
 }}
u+
tE{
 

 ++	
 

 .. ++ 

  		4
 Tz4
 ..4#77$>4
  llT)!4
" ))D0#4
$ %4
& '4
( Xc]*U-B-BB)4
* Xc]*+4
, -4
. ..5/4
0 ))D014
2 34
4 
		54
r .2)-'+EI-2

 ||d*
 	

 --$&
 $
 Xc]*U-B-BB
 Xc]*
 
 
tELL!5==4#77	8
0 -1	;; llT); 	;
 ; 
		; -1
Q
Q 
Q llT)	
Q
 
Q 
Q 
Q 
		
Q  .2/3
-
- 
- ||d*	
-
 %%,
- 
- 
		
-  .2		-	- ++,	- ||d*		-
 	- 
			-	-	- #	- $$		-
 	- 
			- FJ-2	D	D emm$	D Xc]*U-B-BB		D
 Xc]*	D 	D 
ell		D 
# 
e>P>P 
 

-"-5:5I5I-UX-			- 
-
- 
- $$	
-
 4Z
- 
- 
		
-	-	- 	- $$		-
 	- 
			-	-	- 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  PT)-	  'sE,D,D'DEL --$&	
  
, d
 s c d & X\OS)- **WS%:L:L5L-MMPTT  'sE,D,D'DEL	
 --$&  
> X\OS)-

 **WS%:L:L5L-MMPTT
  'sE,D,D'DEL	

 --$&
 
 

" .2/3



 **+

 ||d*	


 %%,

 

 


  .2/3

 **U\\9:
 ||d*	

 %%,
 

. 48.2-1/3'
'
 c5+++,u/?/??(5K]K]B^^'
 $sCx.)D0	'

 emm$t+'
 ||d*'
 %%,'
 '
 
'
Z 8<59-- - --4	-
 ++d2- - 
		- 	-"	-03	-?B	-				-".1	e''	(

"
.1
		"	"T	)

"
36
BE
	
# $u?X?X:Y 
3 
5;T;T 

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

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

".1=@	e''	(

"
.1
=@
		"	"T	)

"
.1
BE
QT
	

"
.1
=@
LO
	
 %))-&*

 >>
 Tz	

  $J
 9t#
 
 


"
/4~~
IL
	

E-- 

"
7<7N7N
Z]
	

S 
UE`E` 


e&9&9 


D 


 
 
 


"
.1
		$	$

"
.1
		 	 

 
8V8V 
r&   r   )(importlib.metadatar  rQ  rL   rD   r2  r   copyr   ior   typingr   r   r   r   r	   r
   r   numpyr   $qdrant_client.common.client_warningsr   r   qdrant_client._pydantic_compatr   qdrant_client.async_client_baser   qdrant_client.conversionsr   r   qdrant_client.httpr   rQ   $qdrant_client.local.local_collectionr   r   r   rG   r   rC   r&   r%   <module>r     sZ       	     H H   P 2 ; ; 4  ! |
 |
r&   