o
    i                     @   sH   d dl mZ d dlmZmZmZ ddlmZ G dd deZeed< dS )	    )ischema_names)UserDefinedTypeFloatString   )Vectorc                       sZ   e Zd ZdZe Zd fdd	Zdd Zdd Zd	d
 Z	dd Z
G dd dejZ  ZS )VECTORTNc                    s   t t|   || _d S N)superr   __init__dim)selfr   	__class__ `/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pgvector/sqlalchemy/vector.pyr   
   s   
zVECTOR.__init__c                 K   s   | j d u rdS d| j  S )Nr   z
VECTOR(%d))r   )r   kwr   r   r   get_col_spec   s   

zVECTOR.get_col_specc                    s    fdd}|S )Nc                    s   t |  jS r	   r   _to_dbr   valuer   r   r   process   s   z&VECTOR.bind_processor.<locals>.processr   r   dialectr   r   r   r   bind_processor   s   zVECTOR.bind_processorc                    s    j | fdd}|S )Nc                    s   t |  jS r	   r   r   r   string_literal_processorr   r   r         z)VECTOR.literal_processor.<locals>.process)_string_cached_literal_processorr   r   r   r   literal_processor   s   zVECTOR.literal_processorc                 C   s   dd }|S )Nc                 S   s
   t | S r	   )r   _from_dbr   r   r   r   r       s   
z(VECTOR.result_processor.<locals>.processr   )r   r   coltyper   r   r   r   result_processor   s   zVECTOR.result_processorc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
zVECTOR.comparator_factoryc                 C      | j dtd|S )Nz<->return_typeopr   r   otherr   r   r   l2_distance%   r   z%VECTOR.comparator_factory.l2_distancec                 C   r&   )Nz<#>r'   r)   r+   r   r   r   max_inner_product(   r   z+VECTOR.comparator_factory.max_inner_productc                 C   r&   )Nz<=>r'   r)   r+   r   r   r   cosine_distance+   r   z)VECTOR.comparator_factory.cosine_distancec                 C   r&   )Nz<+>r'   r)   r+   r   r   r   l1_distance.   r   z%VECTOR.comparator_factory.l1_distanceN)__name__
__module____qualname__r-   r.   r/   r0   r   r   r   r   comparator_factory$   s
    r4   r	   )r1   r2   r3   cache_okr   r    r   r   r   r"   r%   r   
Comparatorr4   __classcell__r   r   r   r   r      s    r   vectorN)	#sqlalchemy.dialects.postgresql.baser   sqlalchemy.typesr   r   r    r   r   r   r   r   r   <module>   s
    -