
    3fi                     >    d dl Zd dlmZmZ  e       Z G d d      Zy)    N)packunpack_fromc                       e Zd ZefdZd Zd Zd Zd 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d       Zed        Zed        Zed        Zy)SparseVectorc                L   |j                   j                  j                  d      r%|t        urt	        d      | j                  |       y t        |t              r&|t        u rt	        d      | j                  ||       y |t        urt	        d      | j                  |       y )Nzscipy.sparse.zextra argumentzmissing dimensions)
	__class__
__module__
startswith
NO_DEFAULT
ValueError_from_sparse
isinstancedict
_from_dict_from_dense)selfvalue
dimensionss      V/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/pgvector/utils/sparsevec.py__init__zSparseVector.__init__   s    ??%%00A+ !122e$t$Z' !566OOE:.+ !122U#    c                 z    t        t        | j                  | j                              }d| d| j                   dS )NzSparseVector(z, ))r   zip_indices_values_dim)r   elementss     r   __repr__zSparseVector.__repr__   s4    DMM4<<89xj499+Q77r   c                     | j                   S N)r   r   s    r   r   zSparseVector.dimensions   s    yyr   c                     | j                   S r!   )r   r"   s    r   indiceszSparseVector.indices    s    }}r   c                     | j                   S r!   )r   r"   s    r   valueszSparseVector.values#   s    ||r   c                     ddl m} dgt        | j                        z  | j                  f} || j                  |fd| j
                  f      S )Nr   )	coo_array   )shape)scipy.sparser(   lenr   r   r   )r   r(   coordss      r   to_coozSparseVector.to_coo&   sA    *#DMM**DMM:$,,/499~FFr   c                     dg| j                   z  }t        | j                  | j                        D ]
  \  }}|||<    |S Ng        )r   r   r   r   r   vecivs       r   to_listzSparseVector.to_list,   sB    ediit||4 	DAqCF	
r   c                     t        j                  d| j                        j                  t         j                        }t        | j                  | j                        D ]
  \  }}|||<    |S r0   )nprepeatr   astypefloat32r   r   r   r1   s       r   to_numpyzSparseVector.to_numpy2   sU    iiTYY'..rzz:t||4 	DAqCF	
r   c                    ddj                  t        | j                  | j                        D cg c]!  \  }}t	        |      dz    dt        |       # c}}      z   dz   t        t	        | j                              z   S c c}}w )N{,r)   :z}/)joinr   r   r   intfloatstrr   )r   r3   r4   s      r   to_textzSparseVector.to_text8   s    SXXc$--Y]YeYeFfgda#a&1*QuQxj9ghhkooruvyz~  {D  {D  wE  sF  F  	Fgs   &Bc                     t        | j                        }t        d| d| d| j                  |dg| j                  | j                   S )N>iiir3   fr   )r,   r   r   r   r   )r   nnzs     r   	to_binaryzSparseVector.to_binary;   sF    $-- d3%qQ'CZT]]ZT\\ZZr   c                 <   |j                         D cg c]  \  }}|dk7  s||f }}}|j                          t        |      | _        |D cg c]  }t        |d          c}| _        |D cg c]  }t        |d          c}| _        y c c}}w c c}w c c}w )Nr   r)   )itemssortrA   r   r   rB   r   )r   ddimr3   r4   r   s         r   r   zSparseVector._from_dict?   s~    '(wwy;tq!AFQF;;H	,45qQqT5-56ad6 < 66s   BBB0Bc                    |j                         }|j                  dk(  r|j                  d   | _        nA|j                  dk(  r'|j                  d   dk(  r|j                  d   | _        nt	        d      t        |d      r#|j                  d   j                         | _        n|j                  j                         | _        |j                  j                         | _        y )Nr)   r      zexpected ndim to be 1r-   )tocoondimr*   r   r   hasattrr-   tolistr   coldatar   )r   r   s     r   r   zSparseVector._from_sparseG   s    ::?ADIZZ1_Q1!4ADI4555(#!LLO224DM!II,,.DMzz((*r   c                     t        |      | _        t        |      D cg c]  \  }}|dk7  s| c}}| _        | j                  D cg c]  }t	        ||          c}| _        y c c}}w c c}w )Nr   )r,   r   	enumerater   rB   r   )r   r   r3   r4   s       r   r   zSparseVector._from_denseX   sU    J	'0'7Btq!16B15?AeAh? C?s   A&A&A,c                 R   |j                  dd      \  }}g }g }t        |      dkD  re|dd j                  d      D ]N  }|j                  dd      \  }}|j                  t        |      dz
         |j                  t	        |             P | j                  t        |      ||      S )N/rP   r)   r>   r?   )splitr,   appendrA   rB   _from_parts)	clsr   r   rN   r$   r&   er3   r4   s	            r   	from_textzSparseVector.from_text]   s    C+#x=1a^))#. (wwsA1s1vz*eAh'( s3x&99r   c                     t        d|      \  }}}t        d| d|d      }t        d| d|d|dz  z         }| j                  t        |      ||      S )NrF   >r3      rG      )r   r^   rA   )r_   r   rN   rH   unusedr$   r&   s          r   from_binaryzSparseVector.from_binaryj   s`    &vu5S&#aj%4qQZS1W=s3x&99r   c                 R    | j                  |       }||_        ||_        ||_        |S r!   )__new__r   r   r   )r_   rN   r$   r&   r2   s        r   r^   zSparseVector._from_partsq   s*    kk#
r   Nc                     ||S t        ||       s | |      }|1|j                         |k7  rt        d||j                         fz        |j                         S )Nzexpected %d dimensions, not %d)r   r   r   rD   )r_   r   rN   s      r   _to_dbzSparseVector._to_dby   s_    =L%%JE?u//1S8=eFVFVFX@YYZZ}}r   c                 R    ||S t        ||       s | |      }|j                         S r!   )r   rI   r_   r   s     r   _to_db_binaryzSparseVector._to_db_binary   s,    =L%%JE  r   c                 D    |t        ||       r|S | j                  |      S r!   )r   ra   rm   s     r   _from_dbzSparseVector._from_db   s$    =Juc2L}}U##r   c                 D    |t        ||       r|S | j                  |      S r!   )r   rg   rm   s     r   _from_db_binaryzSparseVector._from_db_binary   s$    =Juc2Lu%%r   r!   )__name__r	   __qualname__r   r   r   r   r$   r&   r.   r5   r;   rD   rI   r   r   r   classmethodra   rg   r^   rk   rn   rp   rr    r   r   r   r      s    )3 $"8GF[7+"@
 
: 
: : :   
 
 ! ! $ $ & &r   r   )numpyr7   structr   r   objectr   r   rv   r   r   <module>rz      s     $X
U& U&r   