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)ClientHeaders)URL   )StorageApiErrorVectorBucketException)JSONDistanceMetricGetVectorBucketResponseGetVectorIndexResponseGetVectorsResponseListVectorBucketsResponseListVectorIndexesResponseListVectorsResponseMetadataConfigurationQueryVectorsResponse
VectorDataVectorFilterVectorObject   )SyncRequestBuilderkwargsr   returnc                  K  s   dd |   D S )Nc                 S  s   i | ]\}}|d ur||qS N ).0keyvalr   r   S/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/storage3/_sync/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SyncVectorBucketScoperequestr   bucket_namestrr   Nonec                 C  s   || _ || _d S r   )_request_bucket_name)selfr&   r'   r   r   r!   __init__"   s   
zSyncVectorBucketScope.__init__datar   c                 K  s   t dd| ji|S )NvectorBucketNamer   )r$   r+   r,   r.   r   r   r!   with_metadata&   s   z#SyncVectorBucketScope.with_metadataN
index_name	dimensionintdistance_metricr   	data_typemetadataOptional[MetadataConfiguration]c                 C  s<   | j |||||r|jddnd d}| jjddg|d 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"SyncVectorBucketScope.create_index Optional[GetVectorIndexResponse]c                 C  sD   | j |d}z| jjddg|d}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SyncVectorBucketScope.get_index
next_tokenOptional[str]max_resultsOptional[int]prefixr   c                 C  s0   | j |||d}| jjddg|d}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_indexesD   s
   z"SyncVectorBucketScope.list_indexesc                 C  s$   | j |d}| jjddg|d d S )NrH   r>   DeleteIndexr@   r1   r*   rE   )r,   r2   rC   r   r   r!   delete_indexP   s   z"SyncVectorBucketScope.delete_indexSyncVectorIndexScopec                 C  s   t | j| j|S r   )rW   r*   r+   )r,   r2   r   r   r!   indexT   s   zSyncVectorBucketScope.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-   Y   s   
zSyncVectorIndexScope.__init__r.   r   c                 K  s   t d| j| jd|S )N)r/   r:   r   )r$   r+   r^   r0   r   r   r!   r1   `   s   z"SyncVectorIndexScope.with_metadatavectorsList[VectorObject]c                 C  s.   | j dd |D d}| jjddg|d d S )Nc                 S  s   g | ]}|j d dqS )T)exclude_none)rD   )r   vr   r   r!   
<listcomp>i   s    z,SyncVectorIndexScope.put.<locals>.<listcomp>)r_   r>   
PutVectorsr@   rU   )r,   r_   rC   r   r   r!   putg   s   zSyncVectorIndexScope.putT)return_datareturn_metadatakeysrf   boolrg   r   c                G  s0   | j |||d}| jjddg|d}t|jS )N)rh   
returnDatareturnMetadatar>   
GetVectorsr@   )r1   r*   rE   r   rJ   rK   )r,   rf   rg   rh   rC   r.   r   r   r!   getm   s
   zSyncVectorIndexScope.getNrO   rP   rM   rN   segment_countsegment_indexr   c           	      C  s6   | j ||||||d}| jjddg|d}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!   listv   s   	zSyncVectorIndexScope.listquery_vectorr   topKfilterOptional[VectorFilter]return_distancer   c                 C  s8   | j t|||||d}| jjddg|d}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SyncVectorIndexScope.query	List[str]c                 C  sD   t |dk st |dkrtd| j|d}| jjddg|d 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SyncVectorIndexScope.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   X   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 )&SyncStorageVectorsClient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!SyncStorageVectorsClient.__init__r'   r(   r%   c                 C  s   t | j|S r   )r%   r*   )r,   r'   r   r   r!   from_   s   zSyncStorageVectorsClient.from_c                 C      d|i}| j jddg|d d S )Nr/   r>   CreateVectorBucketr@   r*   rE   r,   r'   rC   r   r   r!   create_bucket      z&SyncStorageVectorsClient.create_bucket!Optional[GetVectorBucketResponse]c                 C  s@   d|i}z| j jddg|d}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#SyncStorageVectorsClient.get_bucketNrQ   rN   rO   rP   rM   r   c                 C  s.   t |||d}| jjddg|d}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%SyncStorageVectorsClient.list_bucketsc                 C  r   )Nr/   r>   DeleteVectorBucketr@   r   r   r   r   r!   delete_bucket   r   z&SyncStorageVectorsClient.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    <
7K