
    ciY              	          U d dl Zd dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ ddlmZmZ er,d dlmZ d d	lmZm Z  dd
l!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m(Z* ee+df         Z,ee-d<   ee+df         Z.ee-d<   ee+ddf         Z/ee-d<    ed          Z0 edd          Z1dZ2dZ3 e4d          Z5 e4d          6                    e5          Z7d4dedeeegef                  defdZ8dedefd Z9 G d! d"e	e0                   Z: G d# d$e	e0                   Z; G d% d&e<          Z= G d' d(e=)          Z>ere*Z?ne;e         Z? G d* d+e?          Z@ G d, d-e;e                   ZA	 d5d/eee+ef         e;e         f         d0eee+ef         e;e         f         d1eBddfd2ZCd/edefd3ZDdS )6    N)copy)TYPE_CHECKINGAnyCallableClassVarDictGenericIterableIteratorListMappingOptionalTupleTypeUnioncast)DEFAULT)Self	TypeAliasTypeVar   )UnknownDslObjectValidationException)ObjectApiResponse)AsyncElasticsearchElasticsearch)DocumentOptions)Field)	IndexBase)Hitr   	UsingTyper   AsyncUsingTypeAnyUsingType_ValT_Rr    )default) NT)idrouting)indexusingscoreversionseq_noprimary_termvalobj_wrapperreturnc                     t          | t                    r|t          |           n
 ||           S t          | t                    rt	          |           S | S N)
isinstancedictAttrDictlistAttrList)r0   r1   s     W/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/elasticsearch/dsl/utils.py_wrapr;   U   sW    #t J + 3x}}}S9I9II#t }}J    valuec                 J   t          | d          r|                                 S t          | t                    st          | t                    rd |                                 D             S t          | t                    st          | t                    rd | D             S | S )Nto_dictc                 4    i | ]\  }}|t          |          S  )_recursive_to_dict.0kvs      r:   
<dictcomp>z&_recursive_to_dict.<locals>.<dictcomp>a   s'    CCCTQ%a((CCCr<   c                 ,    g | ]}t          |          S rA   recursive_to_dict)rD   elems     r:   
<listcomp>z&_recursive_to_dict.<locals>.<listcomp>c   s!    :::D!$'':::r<   )hasattrr?   r5   r6   r7   itemsr8   r9   )r=   s    r:   rB   rB   ]   s    ui   }}	E4	 	  Juh$?$? CCU[[]]CCCC	E4	 	  Juh$?$? ::E::::r<   c                      e Zd Z	 ddee         deeegef                  fdZde	fdZ
dedefdZdedefd	Zd
eeef         defdZd
ededdfdZdee         fdZdefdZdefdZeZde	defdZdeee         eeegef                  f         fdZdeee         eeegef                  f         ddfdZdee         fdZdS )r9   Nlr1   c                 j    t          |t                    st          |          }|| _        || _        d S r4   )r5   r8   _l__obj_wrapper)selfrP   r1   s      r:   __init__zAttrList.__init__i   s6     !T"" 	QA'r<   r2   c                 *    t          | j                  S r4   )reprrR   rT   s    r:   __repr__zAttrList.__repr__r       DH~~r<   otherc                 |    t          |t                    r|j        | j        k    S t          || j        k              S r4   )r5   r9   rR   boolrT   r[   s     r:   __eq__zAttrList.__eq__u   8    eX&& 	)9((ETX%&&&r<   c                     | |k     S r4   rA   r^   s     r:   __ne__zAttrList.__ne__{       5=  r<   rE   c                     | j         |         }t          |t                    r!t          t                   || j                  S t          || j                  S )N)r1   )rR   r5   slicer9   r$   rS   r;   )rT   rE   rP   s      r:   __getitem__zAttrList.__getitem__~   sM    HQKa 	EE?1$2CDDDDQ)***r<   r=   c                     || j         |<   d S r4   rR   )rT   rE   r=   s      r:   __setitem__zAttrList.__setitem__   s    r<   c                 4     t           fd j                  S )Nc                 .    t          | j                  S r4   )r;   rS   )irT   s    r:   <lambda>z#AttrList.__iter__.<locals>.<lambda>   s    U1d&788 r<   )maprR   rX   s   `r:   __iter__zAttrList.__iter__   s    8888$(CCCr<   c                 *    t          | j                  S r4   )lenrR   rX   s    r:   __len__zAttrList.__len__   s    48}}r<   c                 *    t          | j                  S r4   )r]   rR   rX   s    r:   __nonzero__zAttrList.__nonzero__   rZ   r<   namec                 ,    t          | j        |          S r4   )getattrrR   )rT   ru   s     r:   __getattr__zAttrList.__getattr__   s    tx&&&r<   c                     | j         | j        fS r4   rR   rS   rX   s    r:   __getstate__zAttrList.__getstate__   s    x***r<   statec                 $    |\  | _         | _        d S r4   rz   )rT   r|   s     r:   __setstate__zAttrList.__setstate__   s     ',#$###r<   c                     | j         S r4   rh   rX   s    r:   to_listzAttrList.to_list   s	    xr<   r4   )__name__
__module____qualname__r   r$   r   r   r   rU   strrY   r]   r_   rb   r   intre   rf   ri   r   ro   rr   rt   __bool__rx   r   r{   r~   r   rA   r<   r:   r9   r9   h   s$       NR( (e(+3HeWc\4J+K( ( ( (#    'C 'D ' ' ' '!C !D ! ! ! !+U3:. +3 + + + +S  4    D(3- D D D D    T     H' ' ' ' ' '+eDK(E7C<:P1Q$QR + + + +,4;5'3,1G(HHI,	, , , ,
e      r<   r9   c                       e Zd ZU dZeeef         ed<   ddiZeeef         ed<   deeef         f fdZ	de
d	efd
Zd	efdZeZd	ee         fdZded	efdZded	efdZd	efdZd	eeeef                  fdZdeeeef                  d	df fdZded	efdZded	dfdZded	efdZdeded	dfdZded	dfdZdeded	df fdZd	ee         fdZd$d ed	eeef         fd!Z d	e!e         fd"Z"d	e!eeef                  fd#Z# xZ$S )%r7   z
    Helper class to provide attribute like access (read and write) to
    dictionaries. Used to provide a convenient way to access both results and
    nested dsl dicts.
    _d_from_fromRESERVEDdc                 L    t                                          d|           d S )Nr   super__setattr__)rT   r   	__class__s     r:   rU   zAttrDict.__init__   s#    E1%%%%%r<   keyr2   c                     || j         v S r4   r   rT   r   s     r:   __contains__zAttrDict.__contains__   s    dhr<   c                 *    t          | j                  S r4   )r]   r   rX   s    r:   rt   zAttrDict.__nonzero__   rZ   r<   c                 N    t          | j                                                  S r4   )r8   r   keysrX   s    r:   __dir__zAttrDict.__dir__   s    DHMMOO$$$r<   r[   c                 |    t          |t                    r|j        | j        k    S t          || j        k              S r4   )r5   r7   r   r]   r^   s     r:   r_   zAttrDict.__eq__   r`   r<   c                     | |k     S r4   rA   r^   s     r:   rb   zAttrDict.__ne__   rc   r<   c                 n    t          | j                  }t          |          dk    r|d d         dz   }|S )N<   z...})rW   r   rq   )rT   rs     r:   rY   zAttrDict.__repr__   s4    NNq66B;;#2#Ar<   c                     | j         fS r4   r   rX   s    r:   r{   zAttrDict.__getstate__   s    {r<   r|   Nc                 X    t                                          d|d                    d S )Nr   r   r   )rT   r|   r   s     r:   r~   zAttrDict.__setstate__   s'    E58,,,,,r<   	attr_namec                     	 |                      |          S # t          $ r t          | j        j        d|          w xY wN object has no attribute )rf   KeyErrorAttributeErrorr   r   rT   r   s     r:   rx   zAttrDict.__getattr__   s^    	##I... 	 	 	 >*TTyTT  	s	    )A c                     	 | j         | j                            ||          = d S # t          $ r t	          | j        j        d|          w xY wr   )r   r   getr   r   r   r   r   s     r:   __delattr__zAttrDict.__delattr__   sl    	**9i@@AAA 	 	 	 >*TTyTT  	s	   !% )Ac                 h    t          | j        | j                            ||                             S r4   )r;   r   r   r   r   s     r:   rf   zAttrDict.__getitem__   s)    TXdm//S99:;;;r<   r=   c                 L    || j         | j                            ||          <   d S r4   r   r   r   )rT   r   r=   s      r:   ri   zAttrDict.__setitem__   s&    05""3,,---r<   c                 H    | j         | j                            ||          = d S r4   r   r   s     r:   __delitem__zAttrDict.__delitem__   s$    HT]&&sC00111r<   ru   c                     || j         v st          | j        |          s+|dk    r%|| j         | j                            ||          <   d S t                                          ||           d S )N__orig_class__)r   rM   r   r   r   r   r   rT   ru   r=   r   s      r:   r   zAttrDict.__setattr__   su     DHGDND$A$A&&&6;DHT]&&tT22333 GGe,,,,,r<   c                 *    t          | j                  S r4   )iterr   rX   s    r:   ro   zAttrDict.__iter__   rZ   r<   F	recursivec                     t          t          t          t          f         |rt	          | j                  n| j                  S r4   )r   r   r   r$   rB   r   )rT   r   s     r:   r?   zAttrDict.to_dict   s9    eiU0:::TX
 
 	
r<   c                 4    | j                                         S r4   )r   r   rX   s    r:   r   zAttrDict.keys   s    x}}r<   c                 4    | j                                         S r4   )r   rN   rX   s    r:   rN   zAttrDict.items   s    x~~r<   F)%r   r   r   __doc__r   r   r$   __annotations__r   rU   objectr]   r   rt   r   r   r   r   r_   rb   rY   r   r{   r~   rx   r   rf   ri   r   r   r   ro   r?   r
   r   rN   __classcell__r   s   @r:   r7   r7      s-          
c5j	 '0Hd38n000&$sEz* & & & & & & 4    T     H%c % % % %'C 'D ' ' ' '!C !D ! ! ! !#    eDe$45    -%S%Z(8"9 -d - - - - - -S S    S T    <s <s < < < <6s 65 6T 6 6 6 62s 2t 2 2 2 2	- 	-E 	-d 	- 	- 	- 	- 	- 	-(3-    
 
 
$sEz2B 
 
 
 

hsm     xc5j 12                r<   r7   c                        e Zd ZU dZeed<   eeef         ed<   eed<   i Ze	eee
d         f                  ed<   dedeedf         d	eeef         f fd
Zedede
d         fd            Z xZS )DslMetaa  
    Base Metaclass for DslBase subclasses that builds a registry of all classes
    for given DslBase subclass (== all the query types for the Query subclass
    of DslBase).

    It then uses the information from that registry (as well as `name` and
    `shortcut` attributes from the base class) to construct any subclass based
    on it's name.

    For typical use see `QueryMeta` and `Query` in `elasticsearch.dsl.query`.
    ru   _classes
_type_nameDslBase_typesbases.attrsc                    t                                          |||           t          | d          sd S | j        s/| j        | j        | j        <   t          | d          s	i | _        d S d S | j        | j        vr| | j        | j        <   d S d S )N_type_shortcutr   )r   rU   rM   ru   r   r   r   r   )clsru   r   r   r   s       r:   rU   zDslMeta.__init__  s    ue,,,s,-- 	Fx 	)),);CJs~&3
++ "!" "XS\))%(CL""" *)r<   r2   c                 `    	 | j         |         S # t          $ r t          d| d          w xY w)Nz	DSL type z does not exist.)r   r   r   r   ru   s     r:   get_dsl_typezDslMeta.get_dsl_type$  sN    	G:d## 	G 	G 	G"#Et#E#E#EFFF	Gs    -)r   r   r   r   r   r   r   typer   r   r   r   r   rU   classmethodr   r   r   s   @r:   r   r     s         
 
 III39oOOO35FHT#tI./0555)C )dCi(8 )c3h ) ) ) ) ) ) G GY G G G [G G G G Gr<   r   c                   r    e Zd ZU dZi Zeeeeeeee	f         f         f                  e
d<   e	 ddee         dedee         dee         fd            Zdd	ee	         d
eddfdZdefdZdefdZdede	fdZdede	fdZdededdf fdZdededdfdZdedefdZdeeef         fdZdefdZ xZS )r   a  
    Base class for all DSL objects - queries, filters, aggregations etc. Wraps
    a dictionary representing the object's json.

    Provides several feature:
        - attribute access to the wrapped dictionary (.field instead of ['field'])
        - _clone method returning a copy of self
        - to_dict method to serialize into dict (to be sent via elasticsearch-py)
        - basic logical operators (&, | and ~) using a Bool(Filter|Query) TODO:
          move into a class specific for Query/Filter
        - respects the definition of the class and (de)serializes it's
          attributes based on the `_param_defs` definition (for example turning
          all values in the `must` attribute into Query objects)
    _param_defsNr   ru   r&   r2   c                     	 | j         |         S # t          $ r- || j         |         cY S t          d| d| j         d          w xY w)NzDSL class `z` does not exist in .)r   r   r   r   )r   ru   r&   s      r:   get_dsl_classzDslBase.get_dsl_class>  sr    	<%% 	 	 	"|G,,,,"IdIIIII  	s    AA_expand__to_dotparamsc                     |t           }i | _        |                                D ]h\  }}|t          u rd|v r|r|                    dd          }t          |          j        dk    rt          |          }|                     ||           id S )N__r   InstrumentedField)	EXPAND__TO_DOT_paramsrN   r   replacer   r   r   _setattr)rT   r   r   pnamepvalues        r:   rU   zDslBase.__init__K  s    ",O')#\\^^ 		) 		)ME6  u}}}dC00F||$(;;;VMM%((((		) 		)r<   c                      d                      fdt           j                                                  D                       S )z<Produce a repr of all our parameters to be used in __repr__.z, c              3      K   | ]A\  }}d j                             |i           vs|$|                    dd           d|V  BdS )r   r   r   =N)r   r   r   )rD   nrF   rT   s      r:   	<genexpr>z'DslBase._repr_params.<locals>.<genexpr>\  st       
 
AT-11!R8888A8 yyd##++a++ 9888	
 
r<   )joinsortedr   rN   rX   s   `r:   _repr_paramszDslBase._repr_paramsZ  sU    yy 
 
 
 
 !3!3!5!566
 
 
 
 
 	
r<   c                 J    | j         j         d|                                  dS )N())r   r   r   rX   s    r:   rY   zDslBase.__repr__c  s*    .)BBD,=,=,?,?BBBBr<   r[   c                     t          || j                  o)|                                |                                 k    S r4   )r5   r   r?   r^   s     r:   r_   zDslBase.__eq__f  s.    %00VU]]__5VVr<   c                     | |k     S r4   rA   r^   s     r:   rb   zDslBase.__ne__i  rc   r<   r=   c                     |                     d          r"t                                          ||          S |                     ||          S )N_)
startswithr   r   r   r   s      r:   r   zDslBase.__setattr__l  sE    ??3 	477&&tU333}}T5)))r<   c                    t           j                            ||          }|| j        v r7| j        |         }d|v r%| j                            t          |d                             |                    d          rP|                    d          r;t          |t          t          f          s|f}t          fd|D                       }n|                    d          r=t          |t          t          f          s|f}t          t          |                    }nA|                    d          r!fd|                                D             }n |          }|| j        |<   d S )Nr   multihashc              3   X   K   | ]$}fd |                                 D             V  %dS )c                 .    i | ]\  }}| |          S rA   rA   rD   rE   rF   shortcuts      r:   rG   z.DslBase._setattr.<locals>.<genexpr>.<dictcomp>  s'    BBBFQHHQKKBBBr<   NrN   )rD   objr   s     r:   r   z#DslBase._setattr.<locals>.<genexpr>  sQ       ! !GJBBBBciikkBBB! ! ! ! ! !r<   c                 .    i | ]\  }}| |          S rA   rA   r   s      r:   rG   z$DslBase._setattr.<locals>.<dictcomp>  s'    HHHAQHHHr<   )r7   r   r   r   r   r   r   r5   tupler8   rn   rN   r   )rT   ru   r=   pinfor   s       @r:   r   zDslBase._setattrq  s    $$T4004###$T*E>66s5=7I7IJJ 99W%% ,%))F*;*; ,%eeT];; )!&  ! ! ! !NS! ! !  EE YYw'' ,%eeT];; )!& Xu!5!566EE YYv&& ,HHHH%++--HHHEE %HUOOE"Tr<   c                 $   |                     d          rt          | j        j        d|          d }	 | j        |         }n# t
          $ rz || j        v rn| j        |         }|                    d          r| j                            |g           }n0|                    d          r| j                            |i           }Y nw xY w|t          | j        j        d|          t          |t                    rt          |          S |S )Nr   r   r   r   )r   r   r   r   r   r   r   r   
setdefaultr5   r6   r7   )rT   ru   r=   r   s       r:   rx   zDslBase.__getattr__  s>   ??3 	 >*OOtOO   
	>L&EE 	> 	> 	> t'''(.99W%% > L33D"==EEYYv&& > L33D"==E	> = >*OOtOO  
 eT"" 	#E??"s   A BC	C	c                 |   i }| j                                         D ]\  }}| j                            |          }|rd|v r|i g fv r-|                    d          r/|                    d          rt	          d |D                       }n|                    d          rt	          t          d |                    }nm|                    d          rd |                                D             }n9|                                }n$t          |d          r|                                }|||<   | j        |iS )z8
        Serialize the DSL object to plain dict
        r   r   r   c              3   R   K   | ]"}d  |                                 D             V  #dS )c                 >    i | ]\  }}||                                 S rA   r?   rC   s      r:   rG   z-DslBase.to_dict.<locals>.<genexpr>.<dictcomp>  s&    @@@DAqAIIKK@@@r<   Nr   )rD   r   s     r:   r   z"DslBase.to_dict.<locals>.<genexpr>  sJ       ! !EH@@CIIKK@@@! ! ! ! ! !r<   c                 *    |                                  S r4   r  )xs    r:   rm   z!DslBase.to_dict.<locals>.<lambda>  s    qyy{{ r<   c                 >    i | ]\  }}||                                 S rA   r  rC   s      r:   rG   z#DslBase.to_dict.<locals>.<dictcomp>  s&    FFF1Q		FFFr<   r?   )	r   rN   r   r   r8   rn   r?   rM   ru   )rT   r   r   r=   r   s        r:   r?   zDslBase.to_dict  si     L..00 	 	LE5$((//E  (5RH$$ 99W%% ,%))F*;*; ,  ! !LQ! ! !  EE
 YYw'' 	, %:%:E!B!BCCEE YYv&& ,FFFFFEE "MMOOEE 	** (AeHH	1~r<   c                     |                                  }| j        D ]$}t          | j        |                   |j        |<   %|S r4   )r   r   r   )rT   cattrs      r:   _clonezDslBase._clone  sC    NNL 	7 	7D"4<#566AIdOOr<   r4   )r   r   r   r   r   r   r   r   r   r]   r   r   r   r   r   r   r   rU   r   rY   r_   rb   r   r   rx   r?   r  r   r   s   @r:   r   r   ,  s(          EGK$sDeCI.>)>$??@AFFF=A
 
$Z
"
-5c]
	d
 
 
 [
) ) ) )QU ) ) ) )
c 
 
 
 
C# C C C CWC WD W W W W!C !D ! ! ! !* *C *D * * * * * *
#S # # # # # #>     8%c3h % % % %N        r<   r   )	metaclassc                   h     e Zd ZU eeef         ed<   	 ddeeef         deedf         f fdZ	 xZ
S )HitMeta
inner_hits_source_fieldsdocumentexclude.c                     fd|                                 D             }d|v r|                    d          |d<   t                                          |           d S )Nc                 b    i | ]+\  }}|v	|                     d           r
|dd         n||,S )r   r   N)r   )rD   rE   rF   r  s      r:   rG   z$HitMeta.__init__.<locals>.<dictcomp>  sQ     
 
 
A \\#&&-AabbEEAqr<   r   doc_type)rN   popr   rU   )rT   r  r  r   r   s     ` r:   rU   zHitMeta.__init__  sr    

 
 
 
"..**
 
 

 Q;;EE&MMAjMr<   )r  )r   r   r   r   r   r   r   r   r   rU   r   r   s   @r:   r  r    s         S!!!!
 $: sCx. sCx         r<   r  c                       e Zd ZU ded<   ded<   eed<   d deeeef                  def fdZ	e
d	eeed
ef                  fd            Ze
ded	ed
         fd            Ze
deeeef         df         d	efd            Zdeeef         d	dfdZd	eeeef         eeef         f         fdZdeeeef         eeef         f         d	df fdZded	ef fdZdeded	df fdZd!ded	eeef         fdZd!ded	dfdZd"dZd"dZ xZS )#
ObjectBaser   	_doc_typer   _indexmetaNkwargsc                    |pi }t          |          D ]@}|                    d          r)|dd          t          v r|                    |          ||<   At	          t
          |                               dt          |                     t          | d          r9| j	        D ]1}||vr+| j	        |         }t          |          r
 |            }|||<   2t	                                          |           d S )Nr   r   r  	_defaults)r8   r   META_FIELDSr  r   r7   r   r  rM   r  callablerU   )rT   r  r  rE   ru   r=   r   s         r:   rU   zObjectBase.__init__  s    zrf 	( 	(A||C   (QqrrUk%9%9 **Q--Qh))&'$--@@@ 4%% 	) ) )v%% N40E ( %#(F4L     r<   r2   r   c              #     K   | j         j        D ]}| j         j        |         }||dfV  t          | j        d          rE| j        j        sdS | j        j        D ],}|| j         j        v r| j        j        |         }||dfV  +dS dS )z
        Get all the fields defined for our class, if we have an Index, try
        looking at the index mappings as well, mark the fields from Index as
        optional.
        Fr  NT)r  mappingrM   r   r  _mapping)r   ru   fields      r:   __list_fieldszObjectBase.__list_fields  s       M) 	% 	%DM)$/Eu$$$$$3=(++ 	(:& 
+ ( (3=000
+D1E4'''''	( 	(( (r<   ru   c                     	 | j         j        |         S # t          $ rE t          | d          r1| j        j        r%	 | j        j        |         cY S # t          $ r Y nw xY wY d S w xY w)Nr  )r  r!  r   rM   r  r"  r   s     r:   __get_fieldzObjectBase.__get_field   s    		=(.. 	 	 	sH%% #**= :.t4444   D44	s2    &A#AA#
AA#AA#"A#hitzObjectApiResponse[Any]c                     |                                 }|                    di           } | |          }|                    |           |S )Nr  )r  )r   r  
_from_dict)r   r'  r  datadocs        r:   from_eszObjectBase.from_es-  sH    xxzzxx	2&&ctnnnt
r<   r*  c                     |                                 D ]I\  }}|                     |          }|r|j        r|                    |          }t	          | ||           Jd S r4   )rN   _ObjectBase__get_field_coercedeserializesetattr)rT   r*  rE   rF   fs        r:   r)  zObjectBase._from_dict5  sq    JJLL 	  	 DAq  ##A %QY %MM!$$D!Q		  	 r<   c                 B    |                                  | j        j        fS r4   )r?   r  r   rX   s    r:   r{   zObjectBase.__getstate__<  s    ||~~ty},,r<   r|   c                     |\  }}t          t          |                               di            t          t          |                               dt          |                     |                     |           d S )Nr   r  )r   r7   r   r  r)  )rT   r|   r*  r  r   s       r:   r~   zObjectBase.__setstate__?  sj    
dh))%444h))&'$--@@@r<   c                 8   	 t                                          |          S # t          $ rk |                     |          }|Rt	          |d          rB|                                }|t          vr!t          | ||           t          | |          }|cY S  w xY w)Nempty)	r   rx   r   r.  rM   r6  SKIP_VALUESr1  rw   )rT   ru   r2  r=   r   s       r:   rx   zObjectBase.__getattr__E  s    
	77&&t,,, 	 	 	  &&A}G!4!4}		++D$...#D$//E	s    $ A1BBr=   c                     || j         j        j        v r|| j        |<   d S t	                                          ||           d S r4   )r   r  r!  r   r   r   r   s      r:   r   zObjectBase.__setattr__R  sE    4>+333"DHTNNNGGe,,,,,r<   T
skip_emptyc                    i }| j                                         D ]e\  }}|                     |          }|r|j        r|                    ||          }t          |t                    r|j        }|r|g i d fv r`|||<   f|S )N)r9  )r   rN   r.  r/  	serializer5   r9   rR   )rT   r9  outrE   rF   r2  s         r:   r?   zObjectBase.to_dictX  s    HNN$$ 	 	DAq  ##A :QY :KKjK99 !X&& E  R&&CFF
r<   validatec                    i }|                                  D ]\  }}}| j                            |d           }||r&	 |                    |          }n@# t          $ r3}|                    |g                               |           Y d }~nd }~ww xY w|| j        v s|g i d fvrt          t          |          | j        |<   |r|rt	          |          d S d S r4   )	_ObjectBase__list_fieldsr   r   cleanr   r   appendr   r   )rT   r=  errorsru   r#  optionalr*  es           r:   clean_fieldszObjectBase.clean_fieldsm  s   79%)%7%7%9%9 	1 	1!D%8<<d++D||6{{4((& 6 6 6!!$++221555555556 tx4B~#=#=!%c4 	. 	.%f---	. 	. 	. 	.s   A
B)BBc                     d S r4   rA   rX   s    r:   r@  zObjectBase.clean  s    r<   c                     |                      d           |                                  |                      d           d S )NF)r=  T)rE  r@  rX   s    r:   
full_cleanzObjectBase.full_clean  sC    5)))

4(((((r<   r4   )T)r2   N)r   r   r   r   r  r   r   r   r   rU   r   r   r   r]   r?  r.  r   r   r,  r)  r{   r~   rx   r   r?   rE  r@  rH  r   r   s   @r:   r  r    s            
MMM! !Xd38n5 ! ! ! ! ! ! !& (huS'4-?'@A ( ( ( [(( 
s 
x'8 
 
 
 [
 %S#X0H HI d    [ tCH~  $        -eDcNDcN$BC - - - -%S#XS#X(F"G D             - -C -D - - - - - - $ $sCx.    *. .T .T . . . .$   ) ) ) ) ) ) ) )r<   r  Fr*  new_dataraise_on_conflictc                 .   t          | t          t          j        j        f          r&t          |t          t          j        j        f          st          d| d|d          |                                D ]\  }}|| v rjt          | |         t          t          j        j        f          r>t          |t          t          j        j        f          rt          | |         ||           s|| v r!| |         |k    r|rt          d|d          || |<   d S )Nz"You can only merge two dicts! Got z and z	 instead.zIncompatible data for key z, cannot be merged.)r5   r7   collectionsabcr   
ValueErrorrN   merge)r*  rI  rJ  r   r=   s        r:   rO  rO    s2    	4(KO$;<==
x(KO,C!DEE
 SSShSSS
 
 	
 nn&& 
 

U4KK49x1H&IJJ 58[_-D"EFF  $s)U$56666D[[T#Y%//4E/T#TTTUUUDII
 
r<   c                    t          | t                    rt          | j                  } n$t	          | d          r|                                 } t          | t          t          f          r" t          |           d | D                       S t          | t                    rd | 	                                D             S | S )zRecursively transform objects that potentially have .to_dict()
    into dictionary literals by traversing AttrList, AttrDict, list,
    tuple, and Mapping types.
    r?   c              3   4   K   | ]}t          |          V  d S r4   rI   )rD   inners     r:   r   z$recursive_to_dict.<locals>.<genexpr>  s+      EEu+E22EEEEEEr<   c                 4    i | ]\  }}|t          |          S rA   rI   )rD   r   r0   s      r:   rG   z%recursive_to_dict.<locals>.<dictcomp>  s'    IIIS&s++IIIr<   )
r5   r9   r8   rR   rM   r?   r   r   r6   rN   )r*  s    r:   rJ   rJ     s    
 $!! DH~~	y	!	! ||~~$u&& JtDzzEEEEEEEE	D$		 JIIDJJLLIIIIKr<   r4   r   )Ecollections.abcrL  r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   elastic_transport.client_utilsr   typing_extensionsr   r   r   
exceptionsr   r   elastic_transportr   elasticsearchr   r   document_baser   r#  r   
index_baser   responser    typesHitBaseTyper   r!   r   r"   r#   r$   r%   r7  r   	frozensetDOC_META_FIELDSunionr  r;   rB   r9   r7   r   r   r   HitMetaBaser  r  r]   rO  rJ   rA   r<   r:   <module>rd     s  &                                            $ 3 2 2 2 2 2 6 6 6 6 6 6 6 6 6 6 = = = = = = = = 	*333333????????......%%%%%%))))))S/12	9 2 2 2!#';";<	 < < <_6J JKi K K KWT5!!!)  i
 
 %  s (C5#:*>!? 3    c c    6 6 6 6 6wu~ 6 6 6r_  _  _  _  _ wu~ _  _  _ D&G &G &G &G &Gd &G &G &GRk k k k k k k k k\   KK3-K    k   &R) R) R) R) R)# R) R) R)p $ 
S#X-
.DcNHSM12  
	   4C C      r<   