
    Ig                     N    d dl mZ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)    )Dict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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)Neo4jTranslatorzDTranslate `Neo4j` internal query language elements to valid filters.funcreturnc                 2   | j                  |       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}||   S )	Nz$andz$orz$eqz$nez$gtez$ltez$ltz$gt)_validate_funcr	   ANDORr   EQNEGTELTELTGT)selfr   map_dicts      i/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/query_constructors/neo4j.py_format_funczNeo4jTranslator._format_func   sk    D!LL&KKMM5MM5NNFNNFMM5MM5	
 ~    	operationc                     |j                   D cg c]  }|j                  |        }}| j                  |j                        |iS c c}w N)	argumentsacceptr   operator)r   r   argargss       r   visit_operationzNeo4jTranslator.visit_operation*   sF    ,5,?,?@S

4 @@!!)"4"45t<< As   A
comparisonc                 h    |j                   | j                  |j                        |j                  iiS r!   )	attributer   
comparatorvalue)r   r(   s     r   visit_comparisonz Neo4jTranslator.visit_comparison.   s6      !!*"7"78*:J:J#
 	
r   structured_queryc                 v    |j                   i }nd|j                   j                  |       i}|j                  |fS )Nfilter)r0   r#   query)r   r.   kwargss      r   visit_structured_queryz&Neo4jTranslator.visit_structured_query5   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   strr   r   r   r'   r   r-   r
   r   dictr3    r   r   r   r      s    N!x{{3. 	x';!<  = =t =
: 
$ 
. /.	sDy	.r   r   N)typingr   r   r   langchain_core.structured_queryr   r   r   r	   r
   r   r   r<   r   r   <module>r?      s!    % % /.g /.r   