
    3fiw                    Z    d dl mZ 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)    )annotations)OptionalSequenceTuple)
Comparator
Comparison	OperationOperatorStructuredQueryVisitorc                     e Zd ZU d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 eej                               Zd
ed<   ej&                  ej(                  ej*                  gZded<   dddZddZddZ	 	 	 	 ddZy)TencentVectorDBTranslatorz4Translate StructuredQuery to Tencent VectorDB query.=z!=>z>=<z<=inznot inzOptional[Sequence[Comparator]]allowed_comparatorszOptional[Sequence[Operator]]allowed_operatorsNc                    |xs g | _         y)zInitialize the translator.

        Args:
            meta_keys: List of meta keys to be used in the query. Default: [].
        N)	meta_keys)selfr   s     t/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/query_constructors/tencentvectordb.py__init__z"TencentVectorDBTranslator.__init__$   s     #b    c                   |j                   t        j                  t        j                  fv rud|j                   j                   dj                  |j                  D cg c]  }|j                  |        c}      }|j                   t        j                  k(  rd| d}|S d|j                  d   j                  |        dS c c}w )zVisit an operation node and return the translated query.

        Args:
            operation: Operation node to be visited.

        Returns:
            Translated query.
         ()znot (r   )operatorr
   ANDORvaluejoin	argumentsaccept)r   	operationargrets       r   visit_operationz)TencentVectorDBTranslator.visit_operation,   s     (,,!<<i((../q166-6-@-@AcD!AC !!X[[0#ajJ9..q188>?qAA Bs   Cc                   | j                   r0|j                  | j                   vrt        d|j                         |j                  | j                  v r|j                  t
        j                  t
        j                  fv rRt        d |j                        }|j                   d| j                  |j                      ddj                  |       dS t        |j                  t              r6|j                   d| j                  |j                      d|j                   dS |j                   d| j                  |j                      d|j                   S t        d	|j                         )
zVisit a comparison node and return the translated query.

        Args:
            comparison: Comparison node to be visited.

        Returns:
            Translated query.
        z,Expr Filtering found Unsupported attribute: c                2    t        | t              rd|  dS | S )N")
isinstancestr)xs    r   <lambda>z<TencentVectorDBTranslator.visit_comparison.<locals>.<lambda>P   s    *Q*<!Ah ! r   r   z (z, r   z "r,   zUnsupported comparator )r   	attribute
ValueError
comparatorCOMPARATOR_MAPr   INNINmapr"   r#   r-   r.   )r   
comparisonr"   s      r   visit_comparisonz*TencentVectorDBTranslator.visit_comparison?   st    >>j22$..H>z?S?S>TU    D$7$77$$
(GGCZEUEU "++,++J,A,ABC D		%(),
 ***C0!++,A**:+@+@AB))*!- ''(D''
(=(=>?q##$& 6z7L7L6MNOOr   c                v    |j                   i }nd|j                   j                  |       i}|j                  |fS )zVisit a structured query node and return the translated query.

        Args:
            structured_query: StructuredQuery node to be visited.

        Returns:
            Translated query and query kwargs.
        expr)filterr%   query)r   structured_querykwargss      r   visit_structured_queryz0TencentVectorDBTranslator.visit_structured_querye   sB     ""*F.55<<TBCF%%v--r   )N)r   zOptional[Sequence[str]])r&   r	   returnr.   )r8   r   rA   r.   )r>   r   rA   zTuple[str, dict])__name__
__module____qualname____doc__r   EQNEGTGTELTLTEr5   r6   r4   listkeysr   __annotations__r
   r    r!   NOTr   r   r)   r9   r@    r   r   r   r      s    > 	stsst	N ;?~?R?R?T:U7U73 )B&$PL. /.	.r   r   N)
__future__r   typingr   r   r   langchain_core.structured_queryr   r   r	   r
   r   r   r   rP   r   r   <module>rT      s&    " , , e. e.r   