
    hn                     f    d dl mZmZ d dlmZmZmZmZmZm	Z	 dee
eef   defdZ G d de	      Zy)	    )TupleUnion)
Comparator
Comparison	OperationOperatorStructuredQueryVisitorvaluereturnc                 D    t        | t              rd|  dS t        |       S )zDConvert a value to a string and add single quotes if it is a string.')
isinstancestr)r   s    l/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/query_constructors/vectara.pyprocess_valuer      s$    %5'|5z    c                       e Zd ZdZej
                  ej                  gZ	 ej                  ej                  ej                  ej                  ej                  ej                  gZ	 deeef   defdZdedefdZdedefdZd	edeeef   fd
Zy)VectaraTranslatorzFTranslate `Vectara` internal query language elements to valid filters.funcr   c                 2   t         j                  dt         j                  dt        j                  dt        j
                  dt        j                  dt        j                  dt        j                  dt        j                  di}| j                  |       ||   S )	Nz and z or =z!=>z>=<z<=)r   ANDORr   EQNEGTGTELTLTE_validate_func)selfr   map_dicts      r   _format_funczVectaraTranslator._format_func$   sk    LL'KKMM3MM4MM3NNDMM3NND	
 	D!~r   	operationc                     |j                   D cg c]  }|j                  |        }}| j                  |j                        }d|j	                  |      z   dz   S c c}w )Nz(  ))	argumentsacceptr&   operatorjoin)r$   r'   argargsr,   s        r   visit_operationz!VectaraTranslator.visit_operation2   sY    ,5,?,?@S

4 @@$$Y%7%78hmmD))D00 As   A
comparisonc                     | j                  |j                        }t        |j                        }|j                  }d|z   dz   |z   dz   |z   dz   S )Nz( doc. r)   )r&   
comparatorr   r   	attribute)r$   r1   r4   processed_valuer5   s        r   visit_comparisonz"VectaraTranslator.visit_comparison7   sZ    &&z'<'<=
'
(8(89((	I%+j83>PSWW	
r   structured_queryc                 v    |j                   i }nd|j                   j                  |       i}|j                  |fS )Nfilter)r:   r+   query)r$   r8   kwargss      r   visit_structured_queryz(VectaraTranslator.visit_structured_query?   sB     ""*F 0 7 7 > >t DEF%%v--r   N)__name__
__module____qualname____doc__r   r   r   allowed_operatorsr   r   r   r   r    r!   r"   allowed_comparatorsr   r   r&   r   r0   r   r7   r	   r   dictr=    r   r   r   r      s    P!x{{3. 1x';!<  1 1s 1

: 
# 
. /.	sDy	.r   r   N)typingr   r   langchain_core.structured_queryr   r   r   r   r	   r
   intfloatr   r   r   rE   r   r   <module>rJ      s<     sE3/ C 1. 1.r   