
    Ng&                         d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d	ee	ef         d
ede	fdZ G d dee          ZdS )    )ABC)countislice)AnyDict	GeneratorIterableListOptionalUnionN)common_types)Record)ExtendedPointId)Workeriterablesizereturnc              #      K   t          |           }|r:t          t          ||                    }t          |          dk    rdS |V  |8dS dS )zF
    >>> list(iter_batch([1,2,3,4,5], 3))
    [[1, 2, 3], [4, 5]]
    r   N)iterlistr   len)r   r   source_iterbs       [/var/www/html/ai-engine/env/lib/python3.11/site-packages/qdrant_client/uploader/uploader.py
iter_batchr      sm      
 x..K
 T**++q66Q;;E	          c                      e Zd Zedeeeej        f                  de	defd            Z
edeeeej        f         ej        eej                 f         deee                  deee                  de	def
d            Zedej        de	dee         fd	            Zedeeej        f         de	deeeee         f                  fd
            ZdS )BaseUploaderrecords
batch_sizer   c              #      K   t          ||          }|D ]b}g g g }}}|D ]P}|                    |j                   |                    |j                   |                    |j                   Q|||fV  cd S N)r   appendidvectorpayload)	clsr   r    record_batchesrecord_batch	ids_batchvectors_batchpayload_batchrecords	            r   iterate_records_batchesz$BaseUploader.iterate_records_batches   s       $GZ88* 	: 	:L68"bm}I& 5 5  +++$$V]333$$V^4444]M99999	: 	:r   vectorsr&   idsc              #     K   |d t                      D             }nt          ||          }|d t                      D             }nt          ||          }t          |t          j                  r|                     ||          }ngt          |t                    rBt          d |                                D                       r| 	                    ||          }nt          ||          }t          |||          E d {V  d S )Nc              3      K   | ]}d V  d S r"    .0_s     r   	<genexpr>z/BaseUploader.iterate_batches.<locals>.<genexpr>7   s"      $;$;aT$;$;$;$;$;$;r   c              3      K   | ]}d V  d S r"   r3   r4   s     r   r7   z/BaseUploader.iterate_batches.<locals>.<genexpr><   s"      (?(?!(?(?(?(?(?(?r   c              3   J   K   | ]}t          |t          j                  V  d S r"   )
isinstancenpndarray)r5   values     r   r7   z/BaseUploader.iterate_batches.<locals>.<genexpr>B   s?       /
 /
.3Jubj))/
 /
 /
 /
 /
 /
r   )r   r   r:   r;   r<   _vector_batches_from_numpydictanyvalues(_vector_batches_from_numpy_named_vectorszip)r'   r/   r&   r0   r    ids_batchespayload_batchesvector_batchess           r   iterate_batcheszBaseUploader.iterate_batches,   s*      ;$;$;577$;$;$;KK$S*55K?(?(?uww(?(?(?OO(*==Ogrz** 	=,/,J,J7T^,_,_NN&& 	=3 /
 /
7>~~7G7G/
 /
 /
 ,
 ,
 	= !II'S]^^NN'<<N{NODDDDDDDDDDDr   c              #      K   t          d| j        d         |          D ]#}| |||z                                            V  $d S )Nr   )rangeshapetolist)r/   r    is      r   r>   z'BaseUploader._vector_batches_from_numpyK   s[      q'-*J77 	7 	7A!a*n,-44666666	7 	7r   c              #   l   K   t          t          d                                  D                                 dk    s
J d            t          t	                                                               j        d         } fdt          |          D             }t          ||          E d {V  d S )Nc                 (    g | ]}|j         d          S )r   )rJ   )r5   arrs     r   
<listcomp>zIBaseUploader._vector_batches_from_numpy_named_vectors.<locals>.<listcomp>U   s    >>>cSYq\>>>r      z8Each named vector should have the same number of vectorsr   c              3   \   K   | ]%fd                                  D             V  &dS )c                 R    i | ]#}||                                                   $S r3   )rK   )r5   namerL   r/   s     r   
<dictcomp>zSBaseUploader._vector_batches_from_numpy_named_vectors.<locals>.<genexpr>.<dictcomp>[   s0    HHHT74=#**,,HHHr   N)keys)r5   rL   r/   s    @r   r7   zHBaseUploader._vector_batches_from_numpy_named_vectors.<locals>.<genexpr>Z   sX       
 
 IHHHHHHH
 
 
 
 
 
r   )r   setrA   nextr   rJ   rI   r   )r/   r    num_vectorsrF   s   `   r   rB   z5BaseUploader._vector_batches_from_numpy_named_vectorsP   s      
 >>W^^-=-=>>>??@@AEEEE FEE 4 0 011228;
 
 
 
;''
 
 
 nj99999999999r   N)__name__
__module____qualname__classmethodr	   r   r   typesPointStructintr.   r   str
NumpyArrayVectorStructr   r?   r   rG   staticmethodfloatr>   r
   rB   r3   r   r   r   r      s       :%(9 9:;: : 
	: : : [:  Ee&&')98EDV;WW
E
 (4.)E h/0E E 
E E E [E< 7E,< 7# 7RZ[`Ra 7 7 7 \7 :c5++,::=:	$sDK'(	): : : \: : :r   r   )abcr   	itertoolsr   r   typingr   r   r   r	   r
   r   r   numpyr;   qdrant_client.conversionsr   r^   &qdrant_client.conversions.common_typesr   qdrant_client.http.modelsr    qdrant_client.parallel_processorr   r`   r   r   r3   r   r   <module>rn      s,         # # # # # # # # H H H H H H H H H H H H H H H H H H     ; ; ; ; ; ; 9 9 9 9 9 9 5 5 5 5 5 5 3 3 3 3 3 3
x23 
3 
8 
 
 
 
D: D: D: D: D:63 D: D: D: D: D:r   