
    3fi                     0    d dl Zd dlmZmZ  G d d      Zy)    N)packunpack_fromc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
d        Ze
d	        Ze
dd       Ze
d        Ze
d        Ze
d        Zy
)
HalfVectorc                     t        |t        j                        r|j                  dk7  rt        j                  |d      }|j
                  dk7  rt        d      || _        y )N>f2)dtype   zexpected ndim to be 1)
isinstancenpndarrayr	   asarrayndim
ValueError_value)selfvalues     T/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/pgvector/utils/halfvec.py__init__zHalfVector.__init__   sI    %,u0DJJuE2E::?455    c                 *    d| j                          dS )NzHalfVector())to_listr   s    r   __repr__zHalfVector.__repr__   s    T\\^,A..r   c                 ,    t        | j                        S N)lenr   r   s    r   
dimensionszHalfVector.dimensions   s    4;;r   c                 6    | j                   j                         S r   )r   tolistr   s    r   r   zHalfVector.to_list   s    {{!!##r   c                     | j                   S r   )r   r   s    r   to_numpyzHalfVector.to_numpy   s    {{r   c                     ddj                  | j                  D cg c]  }t        t        |             c}      z   dz   S c c}w )N[,])joinr   strfloat)r   vs     r   to_textzHalfVector.to_text   s5    SXXdkkBs58}BCCcIIBs   A
c                 n    t        d| j                         d      | j                  j                         z   S )N>HHr   )r   r   r   tobytesr   s    r   	to_binaryzHalfVector.to_binary   s*    E4??,a04;;3F3F3HHHr   c                 n     | |dd j                  d      D cg c]  }t        |       c}      S c c}w )Nr
   r&   )splitr*   )clsr   r+   s      r   	from_textzHalfVector.from_text"   s0    eAbk&7&7&<=E!H=>>=s   2c                 ^    t        d|      \  }} | t        j                  |d|d            S )Nr.   r      )r	   countoffset)r   r   
frombuffer)r4   r   dimunuseds       r   from_binaryzHalfVector.from_binary&   s,    !%/V2==e3qIJJr   Nc                     ||S t        ||       s | |      }|1|j                         |k7  rt        d||j                         fz        |j                         S )Nzexpected %d dimensions, not %d)r   r   r   r,   )r4   r   r;   s      r   _to_dbzHalfVector._to_db+   s_    =L%%JE?u//1S8=eFVFVFX@YYZZ}}r   c                 R    ||S t        ||       s | |      }|j                         S r   )r   r0   r4   r   s     r   _to_db_binaryzHalfVector._to_db_binary8   s,    =L%%JE  r   c                 D    |t        ||       r|S | j                  |      S r   )r   r5   rA   s     r   _from_dbzHalfVector._from_dbB   s$    =Juc2L}}U##r   c                 D    |t        ||       r|S | j                  |      S r   )r   r=   rA   s     r   _from_db_binaryzHalfVector._from_db_binaryI   s$    =Juc2Lu%%r   r   )__name__
__module____qualname__r   r   r   r   r#   r,   r0   classmethodr5   r=   r?   rB   rD   rF    r   r   r   r      s    / $JI ? ? K K 
 
 ! ! $ $ & &r   r   )numpyr   structr   r   r   rK   r   r   <module>rN      s     $I& I&r   