
    3fiy                     N    d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
  G d de
      Zy)zILogic for converting internal query language to a valid DashVector query.    )TupleUnion)
Comparator
Comparison	OperationOperatorStructuredQueryVisitorc                      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ej
                  dej                  dej                  dej                  dej                  dej                  dej                  dej                  d	i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)DashvectorTranslatorzGLogic for converting internal query language elements to valid filters.z AND z OR z = z > z >= z < z <= z LIKE funcreturnc                 B    | j                  |       | j                  |   S N)_validate_funcmap_dict)selfr   s     o/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/query_constructors/dashvector.py_format_funcz!DashvectorTranslator._format_func'   s    D!}}T""    	operationc                     |j                   D cg c]  }|j                  |        }}| j                  |j                        j	                  |      S c c}w r   )	argumentsacceptr   operatorjoin)r   r   argargss       r   visit_operationz$DashvectorTranslator.visit_operation+   sL    ,5,?,?@S

4 @@  !3!3499$?? As   A
comparisonc                     |j                   }t        |t              r*|j                  t        j
                  k(  rd| d}nd| d}|j                   | j                  |j                         | S )Nz'%z%'')value
isinstancestr
comparatorr   LIKE	attributer   )r   r    r#   s      r   visit_comparisonz%DashvectorTranslator.visit_comparison/   sq      eS!$$
7UG2E7!##$T%6%6z7L7L%M$NugV	
r   structured_queryc                 v    |j                   i }nd|j                   j                  |       i}|j                  |fS )Nfilter)r,   r   query)r   r*   kwargss      r   visit_structured_queryz+DashvectorTranslator.visit_structured_query:   sB     ""*F 0 7 7 > >t DEF%%v--r   N)__name__
__module____qualname____doc__r   ANDORallowed_operatorsr   EQGTGTELTLTEr'   allowed_comparatorsr   r   r%   r   r   r   r   r)   r	   r   dictr/    r   r   r   r      s    Q!x{{3 	gVuuu	H#x';!< # #@ @s @	
: 	
# 	
. /.	sDy	.r   r   N)r3   typingr   r   langchain_core.structured_queryr   r   r   r   r	   r
   r   r>   r   r   <module>rA      s!    O  2.7 2.r   