
    ju                     D    d dl Zd dlmZmZ d dlmZ  G d d          ZdS )    N)packunpack_from)warnc                       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
             Ze
d             ZdS )Bitc                 h   t          |t                    r dt          |          z  | _        || _        d S t          |t
                    rd |D             }nt          j        |          }|j        t          j	        k    rX|j        t          j
        k    st          j        |dk              rt          dd           |                    t                    }|j        dk    rt          d          t          |          | _        t          j        |                                          | _        d S )N   c                     g | ]}|d k    	S )0 .0vs     W/DATA/AppData/hermes/projects/honcho/.venv/lib/python3.11/site-packages/pgvector/bit.py
<listcomp>z Bit.__init__.<locals>.<listcomp>   s    111ac111       zexpected elements to be boolean   )
stacklevelzexpected ndim to be 1)
isinstancebyteslen_len_datastrnpasarraydtypebooluint8anyr   astypendim
ValueErrorpackbitstobytes)selfvalues     r   __init__zBit.__init__   s   eU## 	6CJJDIDJJJ%%% >115111
5));"')){bh.."&2C2C.>1MMMM!LL..E:??$%<===E

DIU++3355DJJJr   c                 2    d|                                   dS )NzBit())to_textr'   s    r   __repr__zBit.__repr__   s    'dllnn''''r   c                 p    t          || j                  r | j        |j        k    o| j        |j        k    S dS )NF)r   	__class__r   r   )r'   others     r   __eq__z
Bit.__eq__    s9    eT^,, 	I9
*HtzU[/HHur   c                 N    |                                                                  S N)to_numpytolistr-   s    r   to_listzBit.to_list%   s    }}%%'''r   c                     t          j        t          j        | j        t           j                  | j                                      t                    S )N)r   )count)r   
unpackbits
frombufferr   r    r   r"   r   r-   s    r   r5   zBit.to_numpy(   s;    }R]4:RXFFFdiXXX__`deeer   c                 d    d                     d | j        D                       d | j                 S )N c              3   6   K   | ]}t          |d           V  dS )08bN)formatr   s     r   	<genexpr>zBit.to_text.<locals>.<genexpr>,   s,      <<Ava''<<<<<<r   )joinr   r   r-   s    r   r,   zBit.to_text+   s0    ww<<<<<<<ZdiZHHr   c                 <    t          d| j                  | j        z   S )N>i)r   r   r   r-   s    r   	to_binaryzBit.to_binary.   s    D$)$$tz11r   c                 2     | t          |                    S r4   )r   clsr(   s     r   	from_textzBit.from_text1   s    s3u::r   c                     t          |t                    st          d          |                     |           }t	          d|          d         |_        |dd          |_        |S )Nzexpected bytesrD   r      )r   r   r$   __new__r   r   r   )rH   r(   bits      r   from_binaryzBit.from_binary5   s^    %'' 	/-...kk#tU++A.!""I	
r   c                 h    t          ||           st          d          |                                S Nzexpected bit)r   r$   r,   rG   s     r   _to_dbz
Bit._to_db?   s0    %%% 	-^,,,}}r   c                 h    t          ||           st          d          |                                S rP   )r   r$   rE   rG   s     r   _to_db_binaryzBit._to_db_binaryF   s2    %%% 	-^,,,   r   N)__name__
__module____qualname__r)   r.   r2   r7   r5   r,   rE   classmethodrI   rN   rQ   rS   r   r   r   r   r      s        6 6 6,( ( (  
( ( (f f fI I I2 2 2   [   [   [ ! ! [! ! !r   r   )numpyr   structr   r   warningsr   r   r   r   r   <module>r[      sw        $ $ $ $ $ $ $ $      E! E! E! E! E! E! E! E! E! E!r   