o
    i                     @   s*   d dl Zd dlmZmZ G dd dZdS )    N)packunpack_fromc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd Zedd ZedddZedd Zedd Zedd ZdS )
HalfVectorc                 C   s@   t |tjr|jdkrtj|dd}|jdkrtd|| _d S )N>f2)dtype   zexpected ndim to be 1)
isinstancenpndarrayr   asarrayndim
ValueError_value)selfvalue r   V/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pgvector/halfvec.py__init__   s
   

zHalfVector.__init__c                 C   s   d|    dS )NzHalfVector())to_listr   r   r   r   __repr__   s   zHalfVector.__repr__c                 C   s$   t || jrt|  | S dS )NF)r   	__class__r	   array_equalto_numpy)r   otherr   r   r   __eq__   s   zHalfVector.__eq__c                 C   s
   t | jS N)lenr   r   r   r   r   
dimensions      
zHalfVector.dimensionsc                 C   s
   | j  S r   )r   tolistr   r   r   r   r      r    zHalfVector.to_listc                 C   s   | j S r   )r   r   r   r   r   r      s   zHalfVector.to_numpyc                 C   s   dd dd | jD  d S )N[,c                 S   s   g | ]}t t|qS r   )strfloat.0vr   r   r   
<listcomp>"   s    z&HalfVector.to_text.<locals>.<listcomp>])joinr   r   r   r   r   to_text!   s   zHalfVector.to_textc                 C   s   t d|  d| j  S )N>HHr   )r   r   r   tobytesr   r   r   r   	to_binary$   s   zHalfVector.to_binaryc                 C   s    | dd |dd  dD S )Nc                 S   s   g | ]}t |qS r   )r%   r&   r   r   r   r)   )   s    z(HalfVector.from_text.<locals>.<listcomp>r   r#   )splitclsr   r   r   r   	from_text'   s    zHalfVector.from_textc                 C   s$   t d|\}}| tj|d|ddS )Nr-   r      )r   countoffset)r   r	   
frombuffer)r3   r   dimunusedr   r   r   from_binary+   s   zHalfVector.from_binaryNc                 C   sN   |d u r|S t || s| |}|d ur#| |kr#td|| f | S )Nzexpected %d dimensions, not %d)r   r   r   r,   )r3   r   r9   r   r   r   _to_db0   s   
zHalfVector._to_dbc                 C   s&   |d u r|S t || s| |}| S r   )r   r/   r2   r   r   r   _to_db_binary=   s
   
zHalfVector._to_db_binaryc                 C       |d u s	t || r|S | |S r   )r   r4   r2   r   r   r   _from_dbG      
zHalfVector._from_dbc                 C   r>   r   )r   r;   r2   r   r   r   _from_db_binaryN   r@   zHalfVector._from_db_binaryr   )__name__
__module____qualname__r   r   r   r   r   r   r,   r/   classmethodr4   r;   r<   r=   r?   rA   r   r   r   r   r      s*    



	
r   )numpyr	   structr   r   r   r   r   r   r   <module>   s    