
    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
)Vectorc                     t        |t        j                        r|j                  dk7  rt        j                  |d      }|j
                  dk7  rt        d      || _        y )N>f4)dtype   zexpected ndim to be 1)
isinstancenpndarrayr	   asarrayndim
ValueError_value)selfvalues     S/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/pgvector/utils/vector.py__init__zVector.__init__   sI    %,u0DJJuE2E::?455    c                 *    d| j                          dS )NzVector())to_listr   s    r   __repr__zVector.__repr__   s    (**r   c                 ,    t        | j                        S N)lenr   r   s    r   
dimensionszVector.dimensions   s    4;;r   c                 6    | j                   j                         S r   )r   tolistr   s    r   r   zVector.to_list   s    {{!!##r   c                     | j                   S r   )r   r   s    r   to_numpyzVector.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Vector.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Vector.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Vector.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Vector.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Vector._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Vector._to_db_binary8   s,    =L%%JE  r   c                     |t        |t        j                        r|S | j                  |      j	                         j                  t        j                        S r   )r   r   r   r5   r#   astypefloat32rA   s     r   _from_dbzVector._from_dbB   s@    =Jubjj9L}}U#,,.55bjjAAr   c                     |t        |t        j                        r|S | j                  |      j	                         j                  t        j                        S r   )r   r   r   r=   r#   rD   rE   rA   s     r   _from_db_binaryzVector._from_db_binaryI   s@    =Jubjj9Lu%..077

CCr   r   )__name__
__module____qualname__r   r   r   r   r#   r,   r0   classmethodr5   r=   r?   rB   rF   rH    r   r   r   r      s    + $JI ? ? K K 
 
 ! ! B B D Dr   r   )numpyr   structr   r   r   rM   r   r   <module>rP      s     $ID IDr   