
    j_              	          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      jm                  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ZDy)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        |       S  ||       S t        | t              rt	        |       S | S N)
isinstancedictAttrDictlistAttrList)r1   r2   s     v/var/www/internaltesting/Shamanth/prverification/HIS_auto/venv/lib/python3.12/site-packages/elasticsearch/dsl/utils.py_wrapr<   T   s>    #t + 3x}IS9II#t}J    valuec                 `   t        | d      r| j                         S t        | t              st        | t              r-| j                         D ci c]  \  }}|t        |       c}}S t        | t              st        | t              r| D cg c]  }t        |       c}S | S c c}}w c c}w )Nto_dict)
hasattrr@   r6   r7   r8   items_recursive_to_dictr9   r:   recursive_to_dict)r>   kvelems       r;   rC   rC   \   s    ui }}	E4	 Juh$?5:[[]CTQ%a((CC	E4	 Juh$?49:D!$'::	 D:s   B%B+c                   B   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y)r:   Nlr2   c                 V    t        |t              st        |      }|| _        || _        y r5   )r6   r9   _l__obj_wrapper)selfrI   r2   s      r;   __init__zAttrList.__init__h   s&     !T"QA'r=   r3   c                 ,    t        | j                        S r5   )reprrK   rM   s    r;   __repr__zAttrList.__repr__q       DHH~r=   otherc                     t        |t              r|j                  | j                  k(  S t        || j                  k(        S r5   )r6   r:   rK   boolrM   rT   s     r;   __eq__zAttrList.__eq__t   3    eX&99((ETXX%&&r=   c                     | |k(   S r5    rW   s     r;   __ne__zAttrList.__ne__z       5=  r=   rE   c                     | j                   |   }t        |t              rt        t           || j
                        S t        || j
                        S )N)r2   )rK   r6   slicer:   r%   rL   r<   )rM   rE   rI   s      r;   __getitem__zAttrList.__getitem__}   sC    HHQKaE?1$2C2CDDQ))**r=   r>   c                 "    || j                   |<   y r5   rK   )rM   rE   r>   s      r;   __setitem__zAttrList.__setitem__   s    r=   c                 6     t         fd j                        S )Nc                 0    t        | j                        S r5   )r<   rL   )irM   s    r;   <lambda>z#AttrList.__iter__.<locals>.<lambda>   s    U1d&7&78 r=   )maprK   rQ   s   `r;   __iter__zAttrList.__iter__   s    8$((CCr=   c                 ,    t        | j                        S r5   )lenrK   rQ   s    r;   __len__zAttrList.__len__   s    488}r=   c                 ,    t        | j                        S r5   )rV   rK   rQ   s    r;   __nonzero__zAttrList.__nonzero__   rS   r=   namec                 .    t        | j                  |      S r5   )getattrrK   )rM   ro   s     r;   __getattr__zAttrList.__getattr__   s    txx&&r=   c                 2    | j                   | j                  fS r5   rK   rL   rQ   s    r;   __getstate__zAttrList.__getstate__   s    xx****r=   statec                 "    |\  | _         | _        y r5   rt   )rM   rv   s     r;   __setstate__zAttrList.__setstate__   s     ',#$#r=   c                     | j                   S r5   rb   rQ   s    r;   to_listzAttrList.to_list   s    xxr=   r5   )__name__
__module____qualname__r   r%   r   r   r   rN   strrR   rV   rX   r\   r   intr_   r`   rc   r   ri   rl   rn   __bool__rr   r   ru   rx   rz   r[   r=   r;   r:   r:   g   sG   NR(e(+3HeWc\4J+K(# 'C 'D '!C !D !+U3:. +3 +S  4 D(3- D T  H' ' '+eDK(E7C<:P1Q$QR +,4;5'3,1G(HHI,	,
e r=   r:   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 )$r8   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                 &    t         |   d|       y )Nr   super__setattr__)rM   r   	__class__s     r;   rN   zAttrDict.__init__   s    E1%r=   keyr3   c                     || j                   v S r5   r   rM   r   s     r;   __contains__zAttrDict.__contains__   s    dhhr=   c                 ,    t        | j                        S r5   )rV   r   rQ   s    r;   rn   zAttrDict.__nonzero__   rS   r=   c                 H    t        | j                  j                               S r5   )r9   r   keysrQ   s    r;   __dir__zAttrDict.__dir__   s    DHHMMO$$r=   rT   c                     t        |t              r|j                  | j                  k(  S t        || j                  k(        S r5   )r6   r8   r   rV   rW   s     r;   rX   zAttrDict.__eq__   rY   r=   c                     | |k(   S r5   r[   rW   s     r;   r\   zAttrDict.__ne__   r]   r=   c                 \    t        | j                        }t        |      dkD  r|d d dz   }|S )N<   z...})rP   r   rk   )rM   rs     r;   rR   zAttrDict.__repr__   s.    Nq6B;#2Ar=   c                     | j                   fS r5   r   rQ   s    r;   ru   zAttrDict.__getstate__   s    {r=   rv   Nc                 ,    t         |   d|d          y )Nr   r   r   )rM   rv   r   s     r;   rx   zAttrDict.__setstate__   s    E58,r=   	attr_namec                     	 | j                  |      S # t        $ r% t        | j                  j                  d|      w xY wN object has no attribute )r`   KeyErrorAttributeErrorr   r{   rM   r   s     r;   rr   zAttrDict.__getattr__   sN    	##I.. 	 >>**--FymT 	s	    .Ac                     	 | j                   | j                  j                  ||      = y # t        $ r% t	        | j
                  j                  d|      w xY wr   )r   r   getr   r   r   r{   r   s     r;   __delattr__zAttrDict.__delattr__   sZ    	**9i@A 	 >>**--FymT 	s	   '* .Ac                 f    t        | j                  | j                  j                  ||               S r5   )r<   r   r   r   r   s     r;   r`   zAttrDict.__getitem__   s'    TXXdmm//S9:;;r=   r>   c                 V    || j                   | j                  j                  ||      <   y r5   r   r   r   )rM   r   r>   s      r;   rc   zAttrDict.__setitem__   s!    05""3,-r=   c                 R    | j                   | j                  j                  ||      = y r5   r   r   s     r;   __delitem__zAttrDict.__delitem__   s    HHT]]&&sC01r=   ro   c                    || j                   v s6t        | j                  |      r t        t        | j                  |      d      s/|dk7  r*|| j                   | j                  j                  ||      <   y t        |   ||       y )Nfset__orig_class__)r   rA   r   rq   r   r   r   r   rM   ro   r>   r   s      r;   r   zAttrDict.__setattr__   sm     DHH4>>4074>>48&A&&6;DHHT]]&&tT23 Ge,r=   c                 ,    t        | j                        S r5   )iterr   rQ   s    r;   ri   zAttrDict.__iter__   rS   r=   	recursivec                     t        t        t        t        f   |rt	        | j
                              S | j
                        S r5   )r   r   r~   r%   rC   r   )rM   r   s     r;   r@   zAttrDict.to_dict  s:    ei0:
 	
MQXX
 	
r=   c                 6    | j                   j                         S r5   )r   r   rQ   s    r;   r   zAttrDict.keys  s    xx}}r=   c                 6    | j                   j                         S r5   )r   rB   rQ   s    r;   rB   zAttrDict.items	  s    xx~~r=   F)%r{   r|   r}   __doc__r   r~   r%   __annotations__r   rN   objectrV   r   rn   r   r   r   r   rX   r\   rR   r   ru   rx   rr   r   r`   rc   r   r   r   ri   r@   r
   r   rB   __classcell__r   s   @r;   r8   r8      s    
c5j	 '0Hd38n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2s 2t 2- -E -d -,(3- 
 
$sEz2B 

hsm  xc5j 12  r=   r8   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`.
    ro   _classes
_type_nameDslBase_typesbases.attrsc                 .   t         |   |||       t        | d      sy | j                  s8| j                  | j
                  | j                  <   t        | d      si | _        y y | j                  | j                  vr| | j                  | j                  <   y y )N_type_shortcutr   )r   rN   rA   ro   r   r   r   r   )clsro   r   r   r   s       r;   rN   zDslMeta.__init__  s~    ue,s,-xx),););CJJs~~&3
+! ,XXS\\)%(CLL" *r=   r3   c                 Z    	 | j                   |   S # t        $ r t        d| d      w xY w)Nz	DSL type z does not exist.)r   r   r   r   ro   s     r;   get_dsl_typezDslMeta.get_dsl_type.  s=    	G::d## 	G"Ytf4D#EFF	Gs    *)r{   r|   r}   r   r~   r   r   typer   r   r   r   r   rN   classmethodr   r   r   s   @r;   r   r     s    
 I39oO35FHT#tI./05)C )dCi(8 )c3h ) G GY G Gr=   r   c                   6    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   ro   r'   r3   c                     	 | j                   |   S # t        $ r0 || 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   ro   r'   s      r;   get_dsl_classzDslBase.get_dsl_classH  s_    	<<%% 	"||G,,"dV#77GqI 	s    A
A
_expand__to_dotparamsc                     |t         }i | _        |j                         D ][  \  }}|t        u rd|v r|r|j	                  dd      }t        |      j                  dk(  rt        |      }| j                  ||       ] y )N__r   InstrumentedField)	EXPAND__TO_DOT_paramsrB   r   replacer   r{   r~   _setattr)rM   r   r   pnamepvalues        r;   rN   zDslBase.__init__U  s{    ",O')#\\^ 		)ME6 u}dC0F|$$(;;VMM%(		)r=   c                 z     dj                   fdt         j                  j                               D              S )z<Produce a repr of all our parameters to be used in __repr__.z, c              3      K   | ]>  \  }}d j                   j                  |i       vs|r|j                  dd       d| @ yw)r   r   r   =N)r   r   r   ).0nrF   rM   s      r;   	<genexpr>z'DslBase._repr_params.<locals>.<genexpr>f  sQ      
AT--11!R88A yyd#$AaU+
s   AA)joinsortedr   rB   rQ   s   `r;   _repr_paramszDslBase._repr_paramsd  s3    yy 
 !3!3!56
 
 	
r=   c                 V    | j                   j                   d| j                          dS )N())r   r{   r   rQ   s    r;   rR   zDslBase.__repr__m  s*    ..))*!D,=,=,?+@BBr=   rT   c                 t    t        || j                        xr! |j                         | j                         k(  S r5   )r6   r   r@   rW   s     r;   rX   zDslBase.__eq__p  s)    %0VU]]_5VVr=   c                     | |k(   S r5   r[   rW   s     r;   r\   zDslBase.__ne__s  r]   r=   r>   c                 j    |j                  d      rt        | 	  ||      S | j                  ||      S )N_)
startswithr   r   r   r   s      r;   r   zDslBase.__setattr__v  s2    ??37&tU33}}T5))r=   c                    t         j                  j                  ||      }|| j                  v r| j                  |   }d|v r| j                  j                  t        |d               |j                  d      r?|j                  d      r.t        |t        t        f      s|f}t        fd|D              }n|j                  d      r/t        |t        t        f      s|f}t        t        |            }nC|j                  d      r*|j                         D ci c]  \  }}| |       }}}n |      }|| j                  |<   y c c}}w )Nr   multihashc           	   3   ~   K   | ].  }|j                         D ci c]  \  }}| |       c}} 0 y c c}}w wr5   )rB   )r   objrE   rF   shortcuts       r;   r   z#DslBase._setattr.<locals>.<genexpr>  s6      !GJciikBFQHQKB!Bs   =7=)r8   r   r   r   r   r   r~   r6   tupler9   rh   rB   r   )rM   ro   r>   pinforE   rF   r   s         @r;   r   zDslBase._setattr{  s(     $$T404###$$T*E>>66s5=7IJ 99W%%))F*;%eeT];!&  !NS! E YYw'%eeT];!& Xu!56E YYv&:?++-HAQ^HEH %UOE"T Is   Ec                 $   |j                  d      r$t        | j                  j                  d|      d }	 | j                  |   }|$t        | j                  j                  d|      t        |t              rt        |      S |S # t
        $ r{ || j                  v rj| j                  |   }|j                  d      r| j                  j                  |g       }n-|j                  d      r| j                  j                  |i       }Y w xY w)Nr   r   r   r   )r   r   r   r{   r   r   r   r   
setdefaultr6   r7   r8   )rM   ro   r>   r   s       r;   rr   zDslBase.__getattr__  s   ??3 >>**--FthO  
	>LL&E = >>**--FthO 
 eT"E?"#  	> t'''((.99W% LL33D"=EYYv& LL33D"=E	>s   B BDDc                 j   i }| j                   j                         D ]   \  }}| j                  j                  |      }|rd|v r|i g fv r/|j                  d      r$|j                  d      rt	        d |D              }n|j                  d      rt	        t        d |            }np|j                  d      r2|j                         D ci c]  \  }}||j                          }}}n-|j                         }nt        |d      r|j                         }|||<    | j                  |iS c c}}w )z8
        Serialize the DSL object to plain dict
        r   r   r   c              3      K   | ]6  }|j                         D ci c]  \  }}||j                          c}} 8 y c c}}w wr5   )rB   r@   )r   r   rE   rF   s       r;   r   z"DslBase.to_dict.<locals>.<genexpr>  s7      !EHCIIK@DAqAIIK@!@s   A>Ac                 "    | j                         S r5   )r@   )xs    r;   rg   z!DslBase.to_dict.<locals>.<lambda>  s    qyy{ r=   r@   )	r   rB   r   r   r9   rh   r@   rA   ro   )rM   r   r   r>   r   rE   rF   s          r;   r@   zDslBase.to_dict  s"     LL..0 	LE5$$((/E 5RH$ 99W%%))F*;  !LQ! E
 YYw' %:E!BCE YYv&8=F1Q		^FEF "MMOE 	*AeH?	@ 		1~ Gs   D/c                     | j                         }| j                  D ]'  }t        | j                  |         |j                  |<   ) |S r5   )r   r   r   )rM   cattrs      r;   _clonezDslBase._clone  sA    NNLL 	7D"4<<#56AIIdO	7r=   r5   )r{   r|   r}   r   r   r   r   r~   r   rV   r   r   r   r   r   r   r   rN   r   rR   rX   r\   r   r   rr   r@   r   r   r   s   @r;   r   r   6  sC    EGK$sDeCI.>)>$??@AF=A
$Z
"
-5c]
	d
 
) ) )QU )
c 
C# CWC WD W!C !D !* *C *D *
#S # # #>  8%c3h %N r=   r   )	metaclassc                   V     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documentexclude.c                     |j                         D ci c]"  \  }}||vr|j                  d      r|dd  n||$ }}}d|v r|j                  d      |d<   t        |   |       y c c}}w )Nr   r   r   doc_type)rB   r   popr   rN   )rM   r  r  rE   rF   r   r   s         r;   rN   zHitMeta.__init__  sy     #..*
A \\#&AabEAq0
 

 Q;EE&MAjM
s   'A'))_source_fields)r{   r|   r}   r   r~   r   r   r   r   rN   r   r   s   @r;   r   r     sC    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d	eeed
f      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                 ~   |xs i }t        |      D ]4  }|j                  d      s|dd  t        v s!|j                  |      ||<   6 t        t
        |   dt        |             t        | d      r<| j                  D ]-  }||vs| j                  |   }t        |      r |       }|||<   / t        | -  |       y )Nr   r   r  	_defaults)r9   r   META_FIELDSr  r   r8   r   r   rA   r  callablerN   )rM   r  r  rE   ro   r>   r   s         r;   rN   zObjectBase.__init__  s    zrf 	(A||C QqrUk%9 **Q-Q	( 	h)&'$-@ 4% )v% NN40E %#(F4L) 	 r=   r3   r   c              #     K   | j                   j                  D ]"  }| j                   j                  |   }||df $ t        | j                  d      rl| j                  j
                  sy| j                  j
                  D ];  }|| j                   j                  v r| j                  j
                  |   }||df = yyw)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  mappingrA   r   r  _mapping)r   ro   fields      r;   __list_fieldszObjectBase.__list_fields  s      MM)) 	%DMM))$/Eu$$	% 3==(+::&&

++ (3==000

++D1E4''( ,s   B?Cro   c                     	 | j                   j                  |   S # t        $ rQ t        | d      rB| j                  j
                  r,	 | j                  j
                  |   cY S # t        $ r Y Y y w xY wY y w xY w)Nr  )r  r  r   rA   r  r  r   s     r;   __get_fieldzObjectBase.__get_field*  ss    		==((.. 	sH%#***=*=::..t44 	s3    +A5A"A5"	A/+A5.A//A54A5c                 z    | j                         D ](  \  }}}t        |d      s|j                  |k(  s$||fc S  y N_es_name)_ObjectBase__list_fieldsrA   r  )r   ro   rE   rF   r   s        r;   __get_renamed_fieldzObjectBase.__get_renamed_field7  sC    ((* 	GAq!q*%!***<!t	 r=   hitzObjectApiResponse[Any]c                 ~    |j                         }|j                  di       } | |      }|j                  |       |S )Nr  )r  )r   r  
_from_dict)r   r  r  datadocs        r;   from_eszObjectBase.from_es>  s7    xxzxx	2&tnt
r=   r"  c                    |j                         D ]y  \  }}| j                  |      }|| j                  |      }|r|\  }}|r:|j                  r.|j	                  |      }t        |d      r|j                  |k(  r|}t        | ||       { y r  )rB   _ObjectBase__get_field_ObjectBase__get_renamed_field_coercedeserializerA   r  setattr)rM   r"  rE   rF   fr   s         r;   r!  zObjectBase._from_dictF  s    JJL 
	 DAq  #Ay,,Q/DAqQYYMM!$1j)ajjAoAD!Q
	 r=   c                 N    | j                         | j                  j                  fS r5   )r@   r  r   rQ   s    r;   ru   zObjectBase.__getstate__S  s    ||~tyy}},,r=   rv   c                     |\  }}t         t        |   di        t         t        |   dt        |             | j	                  |       y )Nr   r  )r   r8   r   r   r!  )rM   rv   r"  r  r   s       r;   rx   zObjectBase.__setstate__V  s>    
dh)%4h)&'$-@r=   c                     	 t         |   |      S # t        $ rV | j                  |      }|At	        |d      r5|j                         }|t        vrt        | ||       t        | |      }|cY S  w xY w)Nempty)	r   rr   r   r&  rA   r/  SKIP_VALUESr*  rq   )rM   ro   r+  r>   r   s       r;   rr   zObjectBase.__getattr__\  sx    
	7&t,, 	  &A}G!4	+D$.#D$/E	s    AA1/A1r>   c                     || j                   j                  j                  v r|| j                  |<   y t        |   ||       y r5   )r   r  r  r   r   r   r   s      r;   r   zObjectBase.__setattr__i  s7    4>>++333"DHHTNGe,r=   
skip_emptyc                    i }| j                   j                         D ]  \  }}| j                  |      }|}|$t        |d      r|j                  r|j                  }|r|j
                  r|j                  ||      }t        |t              r|j                  }|r
	 |g i d fv r	 |||<    |S # t        $ r$ 	 t        |      dk(  rY n# t        $ r Y nw xY wY 5w xY w)Nr  )r2  r   )r   rB   r&  rA   r  r(  	serializer6   r:   rK   
ValueErrorrk   	TypeError)rM   r2  outrE   rF   r+  ro   s          r;   r@   zObjectBase.to_dicto  s    HHNN$ 	DAq  #AD}J!7AJJzzQYYKKjK9 !X&EE
RTN*  + CI9	: 
 " q6Q;$ '$ s6   B..	C8C	C		CCCCCvalidatec                    i }| j                         D ]l  \  }}}| j                  j                  |d       }||r(	 |j                  |      }|| j                  v s|g i d fvsPt        t        |      | j                  |<   n |r|rt	        |      y y # t        $ r+}|j                  |g       j                  |       Y d }~ud }~ww xY wr5   )	r  r   r   cleanr   r   appendr   r   )rM   r8  errorsro   r  optionalr"  es           r;   clean_fieldszObjectBase.clean_fields  s    79%)%7%7%9 	1!D%88<<d+D|6{{4( txx4B~#=!%c4	1 %f-- 8 ' 6!!$+221556s   B	C!CCc                      y r5   r[   rQ   s    r;   r:  zObjectBase.clean  s    r=   c                 l    | j                  d       | j                          | j                  d       y )NF)r8  T)r?  r:  rQ   s    r;   
full_cleanzObjectBase.full_clean  s-    5)

4(r=   r5   )T)r3   N)r{   r|   r}   r   r   r   r   r~   r   rN   r   r   r   rV   r  r&  r'  r   r   r$  r!  ru   rx   rr   r   r@   r?  r:  rB  r   r   s   @r;   r
  r
    s     
M!Xd38n5 ! !& (huS'4-?'@A ( (( 
s 
x'8 
 
 s xc7l8K/L   %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. B.T .T .$)r=   r
  r"  new_dataraise_on_conflictc                    t        | t        t        j                  j                  f      r*t        |t        t        j                  j                  f      st        d| d|d      |j                         D ]  \  }}|| v rht        | |   t        t        j                  j                  f      r;t        |t        t        j                  j                  f      rt        | |   ||       r|| v r| |   |k7  r|rt        d|d      || |<    y )Nz"You can only merge two dicts! Got z and z	 instead.zIncompatible data for key z, cannot be merged.)r6   r8   collectionsabcr   r5  rB   merge)r"  rC  rD  r   r>   s        r;   rH  rH    s     	4(KOO$;$;<=x(KOO,C,C!DE0h\S
 	
 nn& 

U4K49x1H1H&IJ58[__-D-D"EF$s)U$56D[T#Y%/4E9#@STUUDI
r=   c                 l   t        | t              rt        | j                        } nt	        | d      r| j                         } t        | t        t        f      r t        |       d | D              S t        | t              r-| j                         D ci c]  \  }}|t        |       c}}S | S c c}}w )zRecursively transform objects that potentially have .to_dict()
    into dictionary literals by traversing AttrList, AttrDict, list,
    tuple, and Mapping types.
    r@   c              3   2   K   | ]  }t        |        y wr5   )rD   )r   inners     r;   r   z$recursive_to_dict.<locals>.<genexpr>  s     Eu+E2Es   )r6   r:   r9   rK   rA   r@   r   r   r7   rB   rD   )r"  r   r1   s      r;   rD   rD     s    
 $!DHH~	y	!||~$u&tDzEEEE	D$	<@JJLIS&s++IIK Js   B0r5   r   )Ecollections.abcrF  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   r(   r   r   document_baser   r  r   
index_baser    responser!   typesHitBaseTyper~   r"   r   r#   r$   r%   r&   r0  r   	frozensetDOC_META_FIELDSunionr  r<   rC   r:   r8   r   r   r   HitMetaBaser   r
  rV   rH  rD   r[   r=   r;   <module>r[     s  &      $ 3 6 6 =34.%)S/12	9 2!#';";<	 <_6J JKi KT5! 
 % s (C5#:*>!? 3 c c 6wu~ 6rj wu~ j Z&Gd &GRk k\ K3-Kk &k)# k)b $
S#X-
.DcNHSM12  
	4C C r=   