o
    ˳i                     @  s   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 ddl
mZmZ ddlmZ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dZG dd dZG dd dZG dd dZ dS )    )annotations)ListOptional)AsyncClientHeaders)URL   )StorageApiErrorVectorBucketException)JSONDistanceMetricGetVectorBucketResponseGetVectorIndexResponseGetVectorsResponseListVectorBucketsResponseListVectorIndexesResponseListVectorsResponseMetadataConfigurationQueryVectorsResponse
VectorDataVectorFilterVectorObject   )AsyncRequestBuilderkwargsr   returnc                  K  s   dd |   D S )Nc                 S  s   i | ]\}}|d ur||qS N ).0keyvalr   r   K/home/ubuntu/.local/lib/python3.10/site-packages/storage3/_async/vectors.py
<dictcomp>   s    zremove_none.<locals>.<dictcomp>)items)r   r   r   r!   remove_none   s   r$   c                   @  s^   e Zd Zd(ddZd)ddZ	d*d+ddZd,ddZ			d-d.d!d"Zd/d#d$Zd0d&d'Z	dS )1AsyncVectorBucketScoperequestr   bucket_namestrr   Nonec                 C  s   || _ || _d S r   )_request_bucket_name)selfr&   r'   r   r   r!   __init__"   s   
zAsyncVectorBucketScope.__init__datar   c                 K  s   t dd| ji|S )NvectorBucketNamer   )r$   r+   r,   r.   r   r   r!   with_metadata&   s   z$AsyncVectorBucketScope.with_metadataN
index_name	dimensionintdistance_metricr   	data_typemetadataOptional[MetadataConfiguration]c                   sD   | j |||||r|jddnd d}| jjddg|dI d H  d S )NT)by_alias)	indexNamer3   distanceMetricdataTypemetadataConfigurationPOSTCreateIndexhttp_methodpathbody)r1   
model_dumpr*   send)r,   r2   r3   r5   r6   r7   rC   r   r   r!   create_index)   s   	z#AsyncVectorBucketScope.create_index Optional[GetVectorIndexResponse]c                   sL   | j |d}z| jjddg|dI d H }t|jW S  ty%   Y d S w )Nr:   r>   GetIndexr@   )r1   r*   rE   r   model_validate_jsoncontentr	   )r,   r2   rC   r.   r   r   r!   	get_index<   s   z AsyncVectorBucketScope.get_index
next_tokenOptional[str]max_resultsOptional[int]prefixr   c                   s8   | j |||d}| jjddg|dI d H }t|jS )N)rM   rO   rQ   r>   ListIndexesr@   )r1   r*   rE   r   rJ   rK   )r,   rM   rO   rQ   rC   r.   r   r   r!   list_indexesF   s   z#AsyncVectorBucketScope.list_indexesc                   s,   | j |d}| jjddg|dI d H  d S )NrH   r>   DeleteIndexr@   r1   r*   rE   )r,   r2   rC   r   r   r!   delete_indexT   s   z#AsyncVectorBucketScope.delete_indexAsyncVectorIndexScopec                 C  s   t | j| j|S r   )rW   r*   r+   )r,   r2   r   r   r!   indexX   s   zAsyncVectorBucketScope.index)r&   r   r'   r(   r   r)   r.   r   r   r   r   )r2   r(   r3   r4   r5   r   r6   r(   r7   r8   r   r)   )r2   r(   r   rG   NNN)rM   rN   rO   rP   rQ   rN   r   r   )r2   r(   r   r)   )r2   r(   r   rW   )
__name__
__module____qualname__r-   r1   rF   rL   rS   rV   rX   r   r   r   r!   r%   !   s    

	

r%   c                   @  sr   e Zd Zd1dd	Zd2ddZd3ddZdddd4ddZ						d5d6d#d$Z				d7d8d,d-Zd9d/d0Z	dS ):rW   r&   r   r'   r(   r2   r   r)   c                 C  s   || _ || _|| _d S r   )r*   r+   _index_name)r,   r&   r'   r2   r   r   r!   r-   ]   s   
zAsyncVectorIndexScope.__init__r.   r   c                 K  s   t d| j| jd|S )N)r/   r:   r   )r$   r+   r^   r0   r   r   r!   r1   d   s   z#AsyncVectorIndexScope.with_metadatavectorsList[VectorObject]c                   s6   | j dd |D d}| jjddg|dI d H  d S )Nc                 S  s   g | ]}|j d dqS )T)exclude_none)rD   )r   vr   r   r!   
<listcomp>m   s    z-AsyncVectorIndexScope.put.<locals>.<listcomp>)r_   r>   
PutVectorsr@   rU   )r,   r_   rC   r   r   r!   putk   s
   zAsyncVectorIndexScope.putT)return_datareturn_metadatakeysrf   boolrg   r   c                  s8   | j |||d}| jjddg|dI d H }t|jS )N)rh   
returnDatareturnMetadatar>   
GetVectorsr@   )r1   r*   rE   r   rJ   rK   )r,   rf   rg   rh   rC   r.   r   r   r!   getq   s   zAsyncVectorIndexScope.getNrO   rP   rM   rN   segment_countsegment_indexr   c           	        s>   | j ||||||d}| jjddg|dI d H }t|jS )N)
maxResults	nextTokenrj   rk   segmentCountsegmentIndexr>   ListVectorsr@   )r1   r*   rE   r   rJ   rK   )	r,   rO   rM   rf   rg   rn   ro   rC   r.   r   r   r!   list|   s   	zAsyncVectorIndexScope.listquery_vectorr   topKfilterOptional[VectorFilter]return_distancer   c                   s@   | j t|||||d}| jjddg|dI d H }t|jS )N)queryVectorrw   rx   returnDistancerk   r>   QueryVectorsr@   )r1   dictr*   rE   r   rJ   rK   )r,   rv   rw   rx   rz   rg   rC   r.   r   r   r!   query   s   zAsyncVectorIndexScope.query	List[str]c                   sL   t |dk st |dkrtd| j|d}| jjddg|dI d H  d S )Nr   i  z*Keys batch size must be between 1 and 500.)rh   r>   DeleteVectorsr@   )lenr
   r1   r*   rE   )r,   rh   rC   r   r   r!   delete   s
   zAsyncVectorIndexScope.delete)r&   r   r'   r(   r2   r(   r   r)   rY   )r_   r`   r   r)   )rh   r(   rf   ri   rg   ri   r   r   )NNTTNN)rO   rP   rM   rN   rf   ri   rg   ri   rn   rP   ro   rP   r   r   )NNTT)rv   r   rw   rP   rx   ry   rz   ri   rg   ri   r   r   )rh   r   r   r)   )
r[   r\   r]   r-   r1   re   rm   ru   r   r   r   r   r   r!   rW   \   s&    


rW   c                   @  sP   e Zd Zd d	d
Zd!ddZd"ddZd#ddZ			d$d%ddZd"ddZdS )&AsyncStorageVectorsClienturlr   headersr   sessionr   r   r)   c                 C  s   t |t||d| _d S )N)base_urlr   )r   r   r*   )r,   r   r   r   r   r   r!   r-      s   z"AsyncStorageVectorsClient.__init__r'   r(   r%   c                 C  s   t | j|S r   )r%   r*   )r,   r'   r   r   r!   from_   s   zAsyncStorageVectorsClient.from_c                   (   d|i}| j jddg|dI d H  d S )Nr/   r>   CreateVectorBucketr@   r*   rE   r,   r'   rC   r   r   r!   create_bucket   
   z'AsyncStorageVectorsClient.create_bucket!Optional[GetVectorBucketResponse]c                   sH   d|i}z| j jddg|dI d H }t|jW S  ty#   Y d S w )Nr/   r>   GetVectorBucketr@   )r*   rE   r   rJ   rK   r	   )r,   r'   rC   r.   r   r   r!   
get_bucket   s   z$AsyncStorageVectorsClient.get_bucketNrQ   rN   rO   rP   rM   r   c                   s6   t |||d}| jjddg|dI d H }t|jS )N)rQ   rp   rq   r>   ListVectorBucketsr@   )r$   r*   rE   r   rJ   rK   )r,   rQ   rO   rM   rC   r.   r   r   r!   list_buckets   s   z&AsyncStorageVectorsClient.list_bucketsc                   r   )Nr/   r>   DeleteVectorBucketr@   r   r   r   r   r!   delete_bucket   r   z'AsyncStorageVectorsClient.delete_bucket)r   r   r   r   r   r   r   r)   )r'   r(   r   r%   )r'   r(   r   r)   )r'   r(   r   r   rZ   )rQ   rN   rO   rP   rM   rN   r   r   )	r[   r\   r]   r-   r   r   r   r   r   r   r   r   r!   r      s    



r   N)r   r   r   r   )!
__future__r   typingr   r   httpxr   r   yarlr   
exceptionsr	   r
   typesr   r   r   r   r   r   r   r   r   r   r   r   r   r&   r   r$   r%   rW   r   r   r   r   r!   <module>   s    <
;Q