o
    gZh                      @   sH   d dl Zd dlmZ ddlmZ ddlmZmZm	Z	 G dd deZ
dS )    N)ObjectApiResponse   )NamespacedClient)SKIP_IN_PATH_quote_rewrite_parametersc                   @   sb  e Zd Ze ddddddedeje dejejeej	e f  deje deje de
ej fd	d
Ze dddddddedeje dejejeej	e f  deje deje deje de
ej fddZe dddddddejejeej	e f  deje dejejeej	e f  deje deje de
ej fddZedddddddddddedeje dejejeej	e f  dejejeejf  deje dejejeejf  deje dejejeejf  de
ej fddZe ddddddeje dejejeej	e f  deje deje de
ej f
ddZdS )EnrichClientN)error_tracefilter_pathhumanprettynamer	   r
   r   r   returnc          	      C   s|   |t v rtddt| }i }|dur||d< |dur!||d< |dur)||d< |dur1||d< dd	i}| jd
|||dS )z
        Deletes an existing enrich policy and its enrich index.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/delete-enrich-policy-api.html>`_

        :param name: Enrich policy to delete.
        'Empty value passed for parameter 'name'/_enrich/policy/Nr	   r
   r   r   acceptapplication/jsonDELETEparamsheadersr   
ValueErrorr   perform_request	selfr   r	   r
   r   r   _EnrichClient__path_EnrichClient__query_EnrichClient__headers r   X/var/www/html/lang_env/lib/python3.10/site-packages/elasticsearch/_sync/client/enrich.pydelete_policy   s    zEnrichClient.delete_policy)r	   r
   r   r   wait_for_completionr"   c          
      C   s   |t v rtddt| d}i }|dur||d< |dur"||d< |dur*||d< |dur2||d< |dur:||d	< d
di}	| jd|||	dS )ah  
        Creates the enrich index for an existing enrich policy.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/execute-enrich-policy-api.html>`_

        :param name: Enrich policy to execute.
        :param wait_for_completion: If `true`, the request blocks other enrich policy
            execution requests until complete.
        r   r   z	/_executeNr	   r
   r   r   r"   r   r   PUTr   r   )
r   r   r	   r
   r   r   r"   r   r   r   r   r   r    execute_policy=   s$   zEnrichClient.execute_policy)r   r	   r
   r   r   c          	      C   sz   |t vrdt| }nd}i }|dur||d< |dur ||d< |dur(||d< |dur0||d< dd	i}| jd
|||dS )aM  
        Gets information about an enrich policy.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/get-enrich-policy-api.html>`_

        :param name: Comma-separated list of enrich policy names used to limit the request.
            To return information for all enrich policies, omit this parameter.
        r   z/_enrich/policyNr	   r
   r   r   r   r   GETr   )r   r   r   r   r   r   r    
get_policyd   s    zEnrichClient.get_policyT)Zbody_fields)r	   r
   	geo_matchr   matchr   ranger'   r(   r)   c                C   s   |t v rtddt| }	i }
i }|dur||
d< |dur#||
d< |dur+||d< |dur3||
d< |dur;||d< |durC||
d	< |durK||d
< ddd}| jd|	|
||dS )a6  
        Creates a new enrich policy.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/put-enrich-policy-api.html>`_

        :param name: Name of the enrich policy to create or update.
        :param geo_match: Matches enrich data to incoming documents based on a `geo_shape`
            query.
        :param match: Matches enrich data to incoming documents based on a `term` query.
        :param range: Matches a number, date, or IP address in incoming documents to
            a range in the enrich index based on a `term` query.
        r   r   Nr	   r
   r'   r   r(   r   r)   r   )r   zcontent-typer#   )r   r   bodyr   )r   r   r	   r
   r'   r   r(   r   r)   r   r   Z_EnrichClient__bodyr   r   r   r    
put_policy   s.   

zEnrichClient.put_policyc                C   sb   d}i }|dur||d< |dur||d< |dur||d< |dur$||d< ddi}| j d	|||d
S )z
        Gets enrich coordinator statistics and information about enrich policies that
        are currently executing.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/enrich-stats-api.html>`_
        z/_enrich/_statsNr	   r
   r   r   r   r   r%   r   )r   )r   r	   r
   r   r   r   r   r   r   r   r    stats   s   zEnrichClient.stats)__name__
__module____qualname__r   strtOptionalboolUnionSequencer   Anyr!   r$   r&   Mappingr+   r,   r   r   r   r    r      s    !	&#	
0r   )typingr1   Zelastic_transportr   _baser   utilsr   r   r   r   r   r   r   r    <module>   s
   