
    Ng                        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.dS )    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            #       F    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j        ej        f         deej                 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j                 dededee         d	e	dej!        fdZ"	 	 	 	 ddedeej                 dededee         d	e	dej#        fd Z$	 	 	 	 	 	 	 	 ddedeej        ee         eeee         f         ej        f         d"edee%j                 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j&                 d	e	dej'        fd%Z(ded&eej)                 dee         d'eej*                 deej)        e+ej,                 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j)                 dee         d)eej.        eej.                 df         deej                 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j*                 d	e	dej1        fd,Z2dedeej3                 d	e	deej1                 fd-Z4	 	 	 	 	 	 	 	 	 	 	 	 dded"ed&eej,        ee         eee                  ej5        ej)        ej        ej6        df         dee         d)eej.        eej.                 df         deej                 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j&                 d'eej*                 d	e	dej'        f d.Z7dedeej8                 d	e	deeej                          fd/Z9	 	 	 	 	 	 	 	 	 	 	 	 dded1eee:                  d2eee:                  deej                 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j*                 d3eej;                 d	e	deej                 fd4Z<	 	 	 	 	 	 	 	 	 	 	 	 	 dded"ed1eeeej,        ee         f                           d2eeeej,        ee         f                           deej                 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j*                 d$eej&                 d3eej;                 d	e	dej'        f"d5Z=	 	 	 	 	 	 	 	 	 	 	 	 dded6eej>                 d7eeej?                          deej                 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j*                 d8eej@                 d9ee         d	e	deej                 fd:ZAdedeejB                 d	e	deeej                          fd;ZC	 	 	 	 	 	 dded<eej                 ded=eejD                 deej,                 deeee         ej        f         deeee         f         d	e	deeejE                 eej,                 f         fd>ZF	 	 dded?eej                 d@ed	e	dejG        f
dAZH	 	 	 ddedBedCeej                 ded@ed	e	dejI        fdDZJdedEejK        d	e	dejL        fdFZMdedEeejN                 d	e	dejL        fdGZOdedHee         dEejP        d	e	dejL        f
dIZQ	 	 ddedJeej,                 deeee         ej        f         deeee         f         d	e	deejE                 fdKZReSddLedejL        fdM            ZTdedNejP        d	e	dejL        fdOZU	 ddedPejV        dEejP        dBee         d	e	dejL        fdQZWdedPejV        dEejP        d	e	dejL        f
dRZXdedSee         dEejP        d	e	dejL        f
dTZYdedNejP        d	e	dejL        fdUZZdedVeej[                 d	e	deejL                 fdWZ\dXeej]                 d	e	defdYZ^ded	e	dej_        fdZZ`d	e	dej_        fd[Zad	e	dejb        fd\Zcded	e	dejd        fd]Zeded	e	defd^Zf	 dded_eegeejh        f                  d	e	defd`Zidedee         fdaZjded	e	defdbZk	 	 ddedceejl        egeejl        f         f         ddeejm                 d_eegeejh        f                  d	e	defdeZn	 	 ddedceejl        egeejl        f         f         ddeejm                 d_eegeejh        f                  d	e	defdfZodedEepejq                 d	e	ddfdgZrdedhepejE                 d	e	ddfdiZsdedEepeejq        ejE        f                  ddfdjZt	 	 ddedHeeueej        f         ej        epejv                 f         dPeepeue	e	f                           dJeepej,                          d	e	ddfdkZw	 	 ddedledmeejx                 dneejx                 d	e	dejL        fdoZydedled	e	dejL        fdpZzded	e	deej{                 fdqZ|ded	e	deej{                 fdrZ}dedsed	e	defdtZ~d	e	deej{                 fduZd	e	dej{        fdvZdsed	e	defdwZdeded	e	defdxZdedyed	e	deej{                 fdzZdedyed	e	deej{                 fd{Zdedyedsed	e	def
d|Zdedyeded	e	def
d}Zd~ed	e	dej        fdZd	e	dej        fdZd	e	dej        fdZ	 	 	 ddedej        dee         dee         deee                  d	e	defdZdede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.
    Flocationforce_disable_check_same_threadreturnNc                     t                                                       || _        || _        |dk    | _        i | _        i | _        d| _        |                                  d| _	        dS )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      b/var/www/html/ai-engine/env/lib/python3.11/site-packages/qdrant_client/local/async_qdrant_local.pyr!   zAsyncQdrantLocal.__init__>   se     	/N, "j079')48

"    c                     | j         S N)r'   )r(   s    r*   closedzAsyncQdrantLocal.closedP   s
    |r+   kwargsc                   K   d| _         | j                                        D ]T}||                                 t	          j        dt          | j                                                              U	 | j        @| j        j	        s6t          j        | j                   | j                                         d S d S d S # t          $ r Y d S w xY 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3 	 	J%  """" Ccghlhxh}h}hh  dA  dA  C  C   	+T5E5L+"4#3444 &&((((( ,+++  	 	 	DD	s   9AC 
CCc                    | j         sd S t          j                            | j        t
                    }t          j                            |          snt          j        | j        d           t          |d          5 }|	                    t          j        i i d                     d d d            n# 1 swxY w Y   nt          |d          5 }t          j        |          }|d                                         D ]J\  }}t          j        di |}|                     |          }t#          ||| j                  | j        |<   K|d         | _        d d d            n# 1 swxY w Y   t          j                            | j        d	          }t          j                            |          sXt          j        | j        d           t          |d          5 }|	                    d
           d d d            n# 1 swxY w Y   t          |d          | _        	 t-          j        | j        t,          j        j        t,          j        j        z             d S # t,          j        j        $ 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?    	FGLL0BCC	w~~i(( 	/K5555i%% H
2"#E#EFFGGGH H H H H H H H H H H H H H H i%% 
/y||484G4M4M4O4O  0O[(9HHKHHF&*&;&;O&L&LO8G'8<8\9 9 9D$_55
  $I
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ 
/ dmW==w~~n-- 	)K5555nc** )a((() ) ) ) ) ) ) ) ) ) ) ) ) ) )55	 %/+2G2TT     %3 	 	 	 i$-  i  i  i  	sC   >+B55B9<B9BE$$E(+E(H  HH!;I -Jc                    | j         sd S | j        rt          d          t          j                            | j        t                    }t          |d          5 }|	                    t          j        d | j                                        D             | j        d                     d d d            d S # 1 swxY w Y   d S )N=QdrantLocal instance is closed. Please create a new instance.r>   c                 >    i | ]\  }}|t          |j                  S rA   )r   r]   ).0r[   r:   s      r*   
<dictcomp>z*AsyncQdrantLocal._save.<locals>.<dictcomp>   s9     ( ( ( =* ,WZ5F-G-G( ( (r+   r?   )r"   r.   rW   rB   rC   rD   r   rE   rH   rI   rJ   rK   r#   rM   r$   )r(   rX   rY   s      r*   _savezAsyncQdrantLocal._save   s    	F; 	`^___GLL0BCC	)S!! 	QGG
( (AEAQAWAWAYAY( ( ( $(<  
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AB88B<?B<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   st    ; 	`^___d...#O44dl**#DL$ABBBBBBCCCr+   requestsc                 N   K   |                      |          fd|D             S )Nc                     g | ]A}                     |j        |j        |j        |j        |j        |j        |j                   BS )query_vectorquery_filterlimitoffsetwith_payloadwith_vectorsscore_threshold)searchvectorfilterrr   rs   rt   with_vectorrv   )rc   requestr:   s     r*   
<listcomp>z1AsyncQdrantLocal.search_batch.<locals>.<listcomp>   sf     
 
 
  $^$^m~$1$0 ' 7   
 
 
r+   rk   r(   r[   rl   r/   r:   s       @r*   search_batchzAsyncQdrantLocal.search_batch   sI       ))/::

 
 
 
 $
 
 
 	
r+   
   Trp   rq   search_paramsrr   rs   rt   ru   rv   c
           	      h   K   |                      |          }|                    |||||||	          S )Nro   )rk   rw   )r(   r[   rp   rq   r   rr   rs   rt   ru   rv   r/   r:   s               r*   rw   zAsyncQdrantLocal.search   sM      & ))/::
  %%%%+ ! 
 
 	
r+      sampleusingc                 b   K   |                      |          }|                    ||||          S N)rq   rr   r   r   )rk   search_matrix_offsetsr(   r[   rq   rr   r   r   r/   r:   s           r*   r   z&AsyncQdrantLocal.search_matrix_offsets   sA       ))/::
//%U6 0 
 
 	
r+   c                 b   K   |                      |          }|                    ||||          S r   )rk   search_matrix_pairsr   s           r*   r   z$AsyncQdrantLocal.search_matrix_pairs   sA       ))/::
--%U6 . 
 
 	
r+      group_by
group_sizewith_lookupc                    K   |                      |          }d }|Et          |t                    r|                      |          }n|                      |j                  }|                    |||||||	|
||
  
        S )N)
rp   rq   rr   r   r   rt   ru   rv   r   with_lookup_collection)rk   
isinstancestrr:   search_groups)r(   r[   rp   r   rq   r   rr   r   rt   ru   rv   r   r/   r:   r   s                  r*   r   zAsyncQdrantLocal.search_groups   s      " ))/::
!%"+s++ V)-)=)=k)J)J&&)-)=)=k>T)U)U&''%%!%%+##9 ( 
 
 	
r+   querylookup_fromc                   	
 |r|j         n|                               	||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                  |_        nt          |t          j                  r^|j        j        "fd|j        j        D             |j        _        |j        j        "fd|j        j        D             |j        _        nt          |t          j                  rp |j        j                  |j        _        t          |j        j        t.                    r|j        j        n|j        j        g}fd|D             |j        _        nt          |t          j                  r=t          |j        t.                    r|j        n|j        g}fd|D             |_        n6t          |t          j                  rnt          |t          j                  r	 |fS )	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.
        Nvector_inputr   c                    t          | t          t          j                            r| }|j        vrt          d| d          j        |         }	v r	         |         }nt          d	 d          t          |t          j                  r|                                }k    r	                    |           |S | S )NzPoint z is not found in the collectionzVector rh   )
r   r   typesPointIdidsri   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1$%Wh%W%W%WXXX nX."444,[9#>CC$%F{%F%F%FGGGc2:.. '**,,C"&<<<!%%h///
##r+   c                 &    g | ]} |          S rA   rA   rc   r   r   s     r*   r|   z9AsyncQdrantLocal._resolve_query_input.<locals>.<listcomp>H  2     , , ,8D%%l33, , ,r+   c                 &    g | ]} |          S rA   rA   r   s     r*   r|   z9AsyncQdrantLocal._resolve_query_input.<locals>.<listcomp>L  r   r+   c                 t    g | ]4}t          j         |j                   |j                             5S )positivenegativerN   ContextPairr   r   rc   pairr   s     r*   r|   z9AsyncQdrantLocal._resolve_query_input.<locals>.<listcomp>V  s]     & & &
 	 '..t}==..t}==  & & &r+   c                 t    g | ]4}t          j         |j                   |j                             5S r   r   r   s     r*   r|   z9AsyncQdrantLocal._resolve_query_input.<locals>.<listcomp>_  s]       
 	 '..t}==..t}==    r+   )r:   rk   r   rx   sparse_vectorsmultivectorsvectorssetr   VectorInputr   r   rN   NearestQuerynearestRecommendQuery	recommendr   r   DiscoverQuerydiscovertargetcontextr5   ContextQueryOrderByQueryFusionQuery)r(   r[   r   r   r   search_in_vector_namesparsemultipairsr:   r   r   r   r   r   s    `       @@@@@@r*   _resolve_query_inputz%AsyncQdrantLocal._resolve_query_input  s	    <G![!7!7O))*@AA
).):@S &;+=+I & 	
 
 99z66 	4!+!: 	4!+!8!+!3,/EE	$E,= 	$%BS 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ e[566 %	--em<<EMM{9:: #	'3, , , ,HMH`, , ,( '3, , , ,HMH`, , ,( {899 	$5$5en6K$L$LEN! en4d;;.&&n,- 
& & & &
 "& & &EN"" {788 	%/t%D%DYEMM5=/E   
 "  EMM {788 	{677 	}%%r+   prefetchc                     |g S t          |t                    rt          |          dk    rg S g }t          |t          j                  r@|g}|                    t          |j        t                    r|j        n|j        g           n$t          |t                    rt          |          } fd|D             S )Nr   c                 @    g | ]}|                     |          S r-   )_resolve_prefetch_input)rc   r   r[   r(   s     r*   r|   z>AsyncQdrantLocal._resolve_prefetches_input.<locals>.<listcomp>}  s9     
 
 
# ((?CC###r+   )r   r5   lenr   Prefetchextendr   r   )r(   r   r[   
prefetchess   ` ` r*   _resolve_prefetches_inputz*AsyncQdrantLocal._resolve_prefetches_inputl  s    
 Ih%% 	#h--1*<*<I
h// 	("J%/0A4%H%Ha!!xO`Na    (++ 	(hJ
 
 
 
 
&
 
 
 	
r+   c                 &   |j         |S t          |          }|                     ||j         |j        |j                  \  }}||_         t          |j        t          |                    |_        |                     |j	        |          |_	        |S r-   )
r   r   r   r   r   r   ry   r5   r   r   )r(   r   r[   r   r   s        r*   r   z(AsyncQdrantLocal._resolve_prefetch_input  s     >!OH%%!%!:!:X^X^X=Q"
 "
 5hotMGZGZ[[ ::8;Lo^^r+   c                   K   |                      |          }|8|                     ||||          \  }}t          |t          |                    }|                     ||          }|                    |||||||pd|	|
	  	        S )Nr   )	r   r   rq   r   rv   rr   rs   rt   ru   )rk   r   r   r5   r   query_points)r(   r[   r   r   r   rq   r   rr   rs   rt   ru   rv   r   r/   r:   r   s                   r*   r   zAsyncQdrantLocal.query_points  s        ))/::
%)%>%>{& &"UM 7|T-EXEXYYL11(OLL&&%+;Q%% ' 

 

 
	
r+   c                 R    K                         |           fd|D             S )Nc                     g | ]}                     |j        |j        |j        |j        |j        pd |j        |j        |j        |j	        |j
        r                    |j
        j                  nd|j
        r|j
        j        nd          S )r   N)r   r   rq   rr   rs   rt   ru   rv   r   lookup_from_collectionlookup_from_vector_name)r   r   r   ry   rr   rs   rt   rz   rv   r   r   rk   r:   rx   rc   r{   r:   r(   s     r*   r|   z7AsyncQdrantLocal.query_batch_points.<locals>.<listcomp>  s     
 
 
$ # ##m )$^m~*$1$0 ' 7m&(t';';G<O<Z'['['[&)(;(B(B $  
 
 
r+   r}   r~   s   `   @r*   query_batch_pointsz#AsyncQdrantLocal.query_batch_points  sO       ))/::

 
 
 
 
$ $%
 
 
 	
r+   c                 x  K   |                      |          }|8|                     ||||          \  }}t          |t          |                    }d }|Et	          |t
                    r|                      |          }n|                      |j                  }|                    |||||||	|
||||          S )N)r   rq   r   r   rr   r   r   rt   ru   rv   r   r   )rk   r   r   r5   r   r   r:   query_groups)r(   r[   r   r   r   r   rq   r   rr   r   rt   ru   rv   r   r   r/   r:   r   r   s                      r*   query_points_groupsz$AsyncQdrantLocal.query_points_groups  s      6 ))/::
%)%>%>{& &"UM 7|T-EXEXYYL!%"+s++ V)-)=)=k)J)J&&)-)=)=k>T)U)U&&&%!%%+##9 ' 
 
 	
r+   c                 R    K                         |           fd|D             S )Nc                 (   g | ]}                     |j        |j        |j        |j        |j        |j        |j        |j        |j	        |j
        r                    |j
        j                  nd |j
        r|j
        j        nd |j                  S N)r   r   rq   rr   rs   rt   ru   rv   r   r   r   strategy)r   r   r   ry   rr   rs   rt   rz   rv   r   r   rk   r:   rx   r   r   s     r*   r|   z4AsyncQdrantLocal.recommend_batch.<locals>.<listcomp>  s     
 
 
& %    ) )$^m~$1$0 ' 7m&(t';';G<O<Z'['['[&)(;(B(B )! !  
 
 
r+   r}   r~   s   `   @r*   recommend_batchz AsyncQdrantLocal.recommend_batch  sO       ))/::

 
 
 
 
& $'
 
 
 	
r+   r   r   r   r   c                    K   |                      |          }|                    |||||||	|
||r|                      |j                  nd |r|j        nd |          S r   )rk   r   r:   rx   )r(   r[   r   r   rq   r   rr   rs   rt   ru   rv   r   r   r   r/   r:   s                   r*   r   zAsyncQdrantLocal.recommend  s      " ))/::
##%%%+$4#7#78N#O#O#O:E$OK$6$64 $ 
 
 	
r+   c                 T  K   |                      |          }d }|Et          |t                    r|                      |          }n|                      |j                  }|                    |||||||
||	||r|                      |j                  nd |r|j        nd |||          S )N)r   r   r   r   rq   rr   rt   ru   rv   r   r   r   r   r   r   )rk   r   r   r:   recommend_groupsrx   )r(   r[   r   r   r   rq   r   rr   r   rv   rt   ru   r   r   r   r   r/   r:   r   s                      r*   r   z!AsyncQdrantLocal.recommend_groups@  s      & ))/::
!%"+s++ V)-)=)=k)J)J&&)-)=)=k>T)U)U&**!%%%+$4#7#78N#O#O#O:E$OK$6$64##9# + 
 
 	
r+   r   r   consistencytimeoutc                    K   |                      |          }|                    |||||||	|
|r|                      |j                  nd |r|j        nd 
  
        S N)
r   r   rq   rr   rs   rt   ru   r   r   r   )rk   r   r:   rx   )r(   r[   r   r   rq   r   rr   rs   rt   ru   r   r   r   r   r/   r:   s                   r*   r   zAsyncQdrantLocal.discovern  s      " ))/::
""%%%$4#7#78N#O#O#O:E$OK$6$64 # 
 
 	
r+   c                 R    K                         |           fd|D             S )Nc                    g | ]}                     |j        |j        |j        |j        |j        |j        |j        |j        |j	        r
                    |j	        j                  nd |j	        r|j	        j        nd 
  
        S r   )r   r   r   ry   rr   rs   rt   rz   r   r   rk   r:   rx   r   s     r*   r|   z3AsyncQdrantLocal.discover_batch.<locals>.<listcomp>  s     
 
 
" ! ~$^m~$1$0m&(t';';G<O<Z'['['[&)(;(B(B    
 
 
r+   r}   r~   s   `   @r*   discover_batchzAsyncQdrantLocal.discover_batch  sO       ))/::

 
 
 
 
" $#
 
 
 	
r+   scroll_filterorder_byc                 f   K   |                      |          }	|	                    ||||||          S )N)r   rr   r   rs   rt   ru   )rk   scroll)
r(   r[   r   rr   r   rs   rt   ru   r/   r:   s
             r*   r   zAsyncQdrantLocal.scroll  sJ       ))/::
  '%% ! 
 
 	
r+   count_filterexactc                 \   K   |                      |          }|                    |          S )N)r   )rk   count)r(   r[   r   r   r/   r:   s         r*   r   zAsyncQdrantLocal.count  s2       ))/::
\:::r+   keyfacet_filterc                 `   K   |                      |          }|                    |||          S )N)r   r   rr   )rk   facet)r(   r[   r   r   rr   r   r/   r:   s           r*   r   zAsyncQdrantLocal.facet  s6       ))/::
Cl%PPPr+   pointsc                    K   |                      |          }|                    |           |                                 S r-   )rk   upsert_default_update_resultr(   r[   r   r/   r:   s        r*   r   zAsyncQdrantLocal.upsert  sA       ))/::
&!!!**,,,r+   c                    K   |                      |          }|                    |           |                                 S r-   )rk   update_vectorsr   r   s        r*   r  zAsyncQdrantLocal.update_vectors  sA       ))/::
!!&)))**,,,r+   r   c                    K   |                      |          }|                    ||           |                                 S r-   )rk   delete_vectorsr   )r(   r[   r   r   r/   r:   s         r*   r  zAsyncQdrantLocal.delete_vectors  sC       ))/::
!!'6222**,,,r+   r   c                 ^   K   |                      |          }|                    |||          S r-   )rk   retrieve)r(   r[   r   rt   ru   r/   r:   s          r*   r  zAsyncQdrantLocal.retrieve  s3       ))/::
""3lCCCr+   operation_idc                 L    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.P
 
 
 	
r+   points_selectorc                    K   |                      |          }|                    |           |                                 S r-   )rk   deleter   r(   r[   r  r/   r:   s        r*   r  zAsyncQdrantLocal.delete  sA       ))/::
/*****,,,r+   payloadc                    K   |                      |          }|                    |||           |                                 S )N)r  selectorr   )rk   set_payloadr   )r(   r[   r  r   r   r/   r:   s          r*   r  zAsyncQdrantLocal.set_payload  sH       ))/::
wSIII**,,,r+   c                    K   |                      |          }|                    ||           |                                 S )N)r  r  )rk   overwrite_payloadr   )r(   r[   r  r   r/   r:   s         r*   r  z"AsyncQdrantLocal.overwrite_payload  sF       ))/::
$$Wv$FFF**,,,r+   r6   c                    K   |                      |          }|                    ||           |                                 S )N)r6   r  )rk   delete_payloadr   )r(   r[   r6   r   r/   r:   s         r*   r  zAsyncQdrantLocal.delete_payload  sF       ))/::
!!tf!===**,,,r+   c                    K   |                      |          }|                    |           |                                 S )N)r  )rk   clear_payloadr   r  s        r*   r  zAsyncQdrantLocal.clear_payload%  sD       ))/::
  / :::**,,,r+   update_operationsc                    K   |                      |          }|                    |           |                                 gt          |          z  S r-   )rk   batch_update_pointsr   r   )r(   r[   r  r/   r:   s        r*   r  z$AsyncQdrantLocal.batch_update_points,  sS       ))/::
&&'8999++--.5F1G1GGGr+   change_aliases_operationsc                 :  K   |D ] }t          |t          j                  r>|                     |j        j                   |j        j        | j        |j        j        <   [t          |t          j                  r&| j        	                    |j
        j        d            t          |t          j                  r;|j        j        }|j        j        }| j        	                    |          | j        |<   t          d|           |                                  dS )NzUnknown operation: T)r   rN   CreateAliasOperationrk   create_aliasr[   r$   
alias_nameDeleteAliasOperationpopdelete_aliasRenameAliasOperationrename_aliasnew_alias_nameold_alias_nameri   re   )r(   r  r/   	operationnew_nameold_names         r*   update_collection_aliasesz*AsyncQdrantLocal.update_collection_aliases6  s      3 	D 	DI)[%EFF D$$Y%;%KLLL*: Y3>?? I{'GHH D  !7!BDIIIII{'GHH D$1@$1@)-)9)9()C)CX&& !By!B!BCCC

tr+   c                    K   | j         rt          d          t          j        fd| j                                        D                       S )Nra   c                 N    g | ]!\  }}|k    t          j        ||           "S )r"  r[   rN   AliasDescriptionrc   r"  namer[   s      r*   r|   z;AsyncQdrantLocal.get_collection_aliases.<locals>.<listcomp>P  sC       &Z?** ,
TXYYY***r+   r$   r.   rW   r   CollectionsAliasesResponser$   rM   r(   r[   r/   s    ` r*   get_collection_aliasesz'AsyncQdrantLocal.get_collection_aliasesJ  sq       ; 	`^___/   *.,*<*<*>*>  
 
 
 	
r+   c                    K   | j         rt          d          t          j        d | j                                        D                       S )Nra   c                 @    g | ]\  }}t          j        ||           S r0  r1  )rc   r"  r4  s      r*   r|   z0AsyncQdrantLocal.get_aliases.<locals>.<listcomp>[  s=       &Z ,
TXYYY  r+   r5  r6  r(   r/   s     r*   get_aliaseszAsyncQdrantLocal.get_aliasesW  sd      ; 	`^___/ *.,*<*<*>*>  
 
 
 	
r+   c                    K   | j         rt          d          t          j        d | j                                        D                       S )Nra   c                 >    g | ]\  }}t          j        |           S ))r4  )rN   CollectionDescription)rc   r4  _s      r*   r|   z4AsyncQdrantLocal.get_collections.<locals>.<listcomp>e  s:       T1 1t<<<  r+   )r#   )r.   rW   r   CollectionsResponser#   rM   r<  s     r*   get_collectionsz AsyncQdrantLocal.get_collectionsa  se      ; 	`^___( !%!1!7!7!9!9  
 
 
 	
r+   c                 X   K   |                      |          }|                                S r-   )rk   info)r(   r[   r/   r:   s       r*   get_collectionzAsyncQdrantLocal.get_collectionk  s)      ))/::
   r+   c                 X   K   	 |                      |           dS # t          $ r Y dS w xY wNTF)rk   ri   r8  s      r*   collection_existsz"AsyncQdrantLocal.collection_existso  sF      	  1114 	 	 	55	s    
))sparse_vectors_configc                    K   |                      |          }|2|                                D ]\  }}|                    ||           dS dS rH  )rk   rM   update_sparse_vectors_config)r(   r[   rJ  r/   _collectionr   vector_paramss          r*   update_collectionz"AsyncQdrantLocal.update_collectionv  sf       **?;; ,.C.I.I.K.K U U*]88mTTTT4ur+   c                 `    | j         r&t          j                            | j        d|          S d S )Nr:   )r"   rB   rC   rD   r   rj   s     r*   rP   z!AsyncQdrantLocal._collection_path  s+    ? 	7<<|_MMM4r+   c                 F  K   | j         rt          d          | j                            d           }~fd| j                                        D             | _        |                               }|t          j        |d           | 	                                 dS )Nra   c                 (    i | ]\  }}|k    ||S rA   rA   r3  s      r*   rd   z6AsyncQdrantLocal.delete_collection.<locals>.<dictcomp>  s4     
 
 
"T&& &&&r+   T)ignore_errors)
r.   rW   r#   r$  r$   rM   rP   shutilrmtreere   )r(   r[   r/   rM  r^   s    `   r*   delete_collectionz"AsyncQdrantLocal.delete_collection  s      ; 	`^___&**?DAA
 
 
 
&*l&8&8&:&:
 
 

 //@@&M/>>>>

tr+   vectors_config	init_fromc                   K   | j         rt          d          d }d }|3t          |t                    r|n|j        }|                     |          }|| j        v rt          d| d          |                     |          }|t          j
        |d           t          t          j        ||          || j                  }	|	| j        |<   |rw|rud}
|                     |d	d
           d {V \  }}|                     ||           |:|                     |||
d           d {V \  }}|                     ||           |:|                                  dS )Nra   rg   z already existsTr<   )r   r   )r   r   d      )rr   ru   )rs   rr   ru   )r.   rW   r   r   r:   rk   r#   ri   rP   rB   rG   r   rN   rO   r   r   upload_recordsre   )r(   r[   rW  rX  rJ  r/   src_collectionfrom_collection_namer^   r:   
batch_sizerecordsnext_offsets                r*   create_collectionz"AsyncQdrantLocal.create_collection  s      ; 	`^___# '	377Q		Y=Q ! "112FGGNd...K?KKKLLL//@@&K$7777$(&7L   %,0,P
 
 

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

tr+   c                 x   K   |                      |           d {V  |                     ||||           d {V S r-   )rV  rb  )r(   r[   rW  rX  rJ  r/   s         r*   recreate_collectionz$AsyncQdrantLocal.recreate_collection  sn       $$_555555555++^Y8M
 
 
 
 
 
 
 
 	
r+   c                 2    |                      ||           d S r-   _upload_points)r(   r[   r   r/   s       r*   upload_pointszAsyncQdrantLocal.upload_points  s      	OV44444r+   r`  c                 2    |                      ||           d S r-   rf  )r(   r[   r`  r/   s       r*   r\  zAsyncQdrantLocal.upload_records  s      	OW55555r+   c                 n    |                      |          }|                    d |D                        d S )Nc                 b    g | ],}t          j        |j        |j        pi |j        pi            -S )idrx   r  )rN   PointStructrm  rx   r  )rc   points     r*   r|   z3AsyncQdrantLocal._upload_points.<locals>.<listcomp>  sT         'x(:EMDWUW    r+   )rk   r   )r(   r[   r   r:   s       r*   rg  zAsyncQdrantLocal._upload_points  sW     ))/::
  $	  	
 	
 	
 	
 	
r+   c           
         dt           t          d d f         fd}|                     |          }t          t                    rt          d                                 D                       rt          t          d                                 D                                 dk    s
J d            t          t                                                              j        d         }fdt          |          D             |                    d	 t          |p	 |            t                    |pt          j        i g                    D                        d S )
Nr   c               3   D   K   	 t          t                                V  r-   )r   r   rA   r+   r*   uuid_generatorz:AsyncQdrantLocal.upload_collection.<locals>.uuid_generator  s&      #%''ll"""#r+   c              3   J   K   | ]}t          |t          j                  V  d S r-   )r   r   r   )rc   vs     r*   	<genexpr>z5AsyncQdrantLocal.upload_collection.<locals>.<genexpr>  s.      AA1Z2:&&AAAAAAr+   c                 (    g | ]}|j         d          S r   )shape)rc   arrs     r*   r|   z6AsyncQdrantLocal.upload_collection.<locals>.<listcomp>  s    BBB#1BBBr+   r   z8Each named vector should have the same number of vectorsr   c                 T    g | ]#fd                                  D             $S )c                 R    i | ]#}||                                                   $S rA   )r   )rc   r4  ir   s     r*   rd   zAAsyncQdrantLocal.upload_collection.<locals>.<listcomp>.<dictcomp>   s0    LLLTwt}Q'..00LLLr+   )r6   )rc   r|  r   s    @r*   r|   z6AsyncQdrantLocal.upload_collection.<locals>.<listcomp>  sJ        MLLLLW\\^^LLL  r+   c           	          g | ]O\  }}}t          j        |t          |t          j                  r|                                n|pi |pi            PS rl  )rN   rn  r   r   r   r   )rc   r   rx   r  s       r*   r|   z6AsyncQdrantLocal.upload_collection.<locals>.<listcomp>  ss     	 	 	 0Xvw '/9&"*/M/MYFMMOOOSY`^`#Mr  	 	 	r+   )r   r   rk   r   dictanyr1   r   r   nextiterrx  ranger   zip	itertoolscycle)	r(   r[   r   r  r   r/   rr  r:   num_vectorss	     `      r*   upload_collectionz"AsyncQdrantLocal.upload_collection  s   	#	#tT/ : 	# 	# 	# 	# ))/::
gt$$ 
	AA0@0@AAA*
 *
 
	 CBB1A1ABBBCCDDIIII JIItGNN$4$45566<Q?K   {++  G 		 	 47+>>++T']]G<\yXZW[G\G\4 4	 	 		
 	
 	
 	
 	
r+   
field_namefield_schema
field_typec                 V   K   t          j        d           |                                 S NziPayload indexes have no effect in the local Qdrant. Please use server Qdrant if you need payload indexes.r3   r4   r   )r(   r[   r  r  r  r/   s         r*   create_payload_indexz%AsyncQdrantLocal.create_payload_index  s3       	w	
 	
 	
 **,,,r+   c                 V   K   t          j        d           |                                 S r  r  )r(   r[   r  r/   s       r*   delete_payload_indexz%AsyncQdrantLocal.delete_payload_index  s3       	w	
 	
 	
 **,,,r+   c                 
   K   g S r-   rA   r8  s      r*   list_snapshotszAsyncQdrantLocal.list_snapshots%         	r+   c                 $   K   t          d          NzeSnapshots are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.NotImplementedErrorr8  s      r*   create_snapshotz AsyncQdrantLocal.create_snapshot*         "s
 
 	
r+   snapshot_namec                 $   K   t          d          r  r  )r(   r[   r  r/   s       r*   delete_snapshotz AsyncQdrantLocal.delete_snapshot1  r  r+   c                 
   K   g S r-   rA   r<  s     r*   list_full_snapshotsz$AsyncQdrantLocal.list_full_snapshots8  s      	r+   c                 $   K   t          d          r  r  r<  s     r*   create_full_snapshotz%AsyncQdrantLocal.create_full_snapshot;        !s
 
 	
r+   c                 $   K   t          d          r  r  )r(   r  r/   s      r*   delete_full_snapshotz%AsyncQdrantLocal.delete_full_snapshot@  r  r+   c                 $   K   t          d          r  r  )r(   r[   r   r/   s       r*   recover_snapshotz!AsyncQdrantLocal.recover_snapshotE  r  r+   shard_idc                 
   K   g S r-   rA   r(   r[   r  r/   s       r*   list_shard_snapshotsz%AsyncQdrantLocal.list_shard_snapshotsJ  r  r+   c                 $   K   t          d          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          r  r  )r(   r[   r  r  r/   s        r*   delete_shard_snapshotz&AsyncQdrantLocal.delete_shard_snapshotV  r  r+   c                 $   K   t          d          r  r  )r(   r[   r  r   r/   s        r*   recover_shard_snapshotz'AsyncQdrantLocal.recover_shard_snapshot]  r  r+   reasonc                 $   K   t          d          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          r  r  r<  s     r*   unlock_storagezAsyncQdrantLocal.unlock_storagei  r  r+   c                 2   K   t          j        d d          S )NF)error_messagerI   )r   LocksOptionr<  s     r*   	get_lockszAsyncQdrantLocal.get_locksn  s       t5AAAAr+   	shard_keyshards_numberreplication_factor	placementc                 $   K   t          d          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          r  r  )r(   r[   r  r/   s       r*   delete_shard_keyz!AsyncQdrantLocal.delete_shard_key~  s       "k
 
 	
r+   c                 r   K   t           j                            d          }t          j        d|d           S )Nzqdrant-clientzqdrant - vector search engine)titleversioncommit)	importlibmetadatar  rN   VersionInfo)r(   r  s     r*   rE  zAsyncQdrantLocal.info  s=      $,,_==&174
 
 
 	
r+   )F)r   N)NNr   NTFN)Nr   r   N)NNr   r   TFNN)NNNNNr   NTFNN)NNNNNr   r   TFNNN)NNNNr   r   TFNNNN)NNNNr   r   NTFNNNN)Nr   NNTF)NT)Nr   F)TFrw  r-   )NN)NNN)__name__
__module____qualname____doc__r   boolr!   propertyr.   r   r2   r&   re   r   rk   r   r   SearchRequestr	   ScoredPointr   r   
NumpyArrayfloatr   NamedVectorNamedSparseVectorr   FilterSearchParamsintPayloadSelectorrw   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-  r7  r9  r=  rB  rC  CollectionInforF  rI  r
   SparseVectorParamsrO  rP   rV  VectorParamsInitFromrb  rd  r   rn  rh  r\  rg  r   VectorStructr  PayloadSchemaTyper  r  SnapshotDescriptionr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ShardKeyr  r  r  rE  __classcell__)r)   s   @r*   r   r   3   s        # # #t #X\ # # # # # #$     XC D     " " " "H   &Ds D D D D D
"
.6u7J.K
WZ
	d5$%	&
 
 
 
6 046: $JN38+/!
 

 UO#tE{"##	%

 u|,
   23
 
 
 D(3-1FFG
 D(3-/0
  "%!
" #
$ 
e	 %
 
 
 
B 04#
 

 u|,
 	

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

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

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

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

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

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

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

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

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

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

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


S 
U5F 
 
 
 

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

 %SM
 DI&
 
 

 
 
 

"
/4~
IL
	
 
 
 

E- 
 
 
 
 
 
 
 
r+   r   )/importlib.metadatar  r  rJ   r3   rB   rT  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     s             				                                                       2 2 2 2 2 2 ; ; ; ; ; ; ; ; ; ; ; ; 4 4 4 4 4 4 = = = = = =          ! V
 V
 V
 V
 V
 V
 V
 V
 V
 V
r+   