o
    eZh:2                     @   sB  U d dl Z d dlZd dlZd dlZd dl mZ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 er?d dlmZ G dd dejZejZded< ed	Zzd d
lmZ eeef ZW n eyl   eZY nw G dd dee e f Z!eG dd dZ"de!fddZ#eddG dd dZ$e G dd dZ%dS )    N)	dataclassfield)TYPE_CHECKINGAny
CollectionDictIteratorKeysViewMappingMutableMappingOptionalTupleTypeVarUnion
ValuesView)Finalc                   @   s0   e Zd ZdZdZdefddZdefddZdS )	DefaultTypez
    Sentinel used as a default value when ``None`` has special meaning like timeouts.
    The only comparisons that are supported for this type are ``is``.
    r   returnc                 C      dS Nz	<DEFAULT> selfr   r   P/var/www/html/lang_env/lib/python3.10/site-packages/elastic_transport/_models.py__repr__3      zDefaultType.__repr__c                 C   r   r   r   r   r   r   r   __str__6   r   zDefaultType.__str__N)__name__
__module____qualname____doc__valuestrr   r   r   r   r   r   r   +   s
    r   zFinal[DefaultType]DEFAULTT)
TLSVersionc                	   @   s  e Zd ZdZdZ	d7deeeeef e	e
eef  f  ddfddZded	eddfd
dZdedefddZdeddfddZdedefddZdedefddZdee fddZdefddZdefddZdedefddZdefddZdefd d!Zdefd"d#Zd7ded$ee dee fd%d&Zdee fd'd(Zdee fd)d*Z de	e
eef  fd+d,Z!d8d-d.Z"e#defd/d0Z$d8d1d2Z%dedefd3d4Z&de'eef fd5d6Z(dS )9HttpHeaderszHTTP headers)	_internal_frozenNinitialr   c                 C   sB   i | _ d| _|rt| D ]\}}||f| j | |< qd S d S )NF)r'   r(   dictitems_normalize_key)r   r)   keyvalr   r   r   __init__K   s   zHttpHeaders.__init__r-   r!   c                 C   s&   | j rtd||f| j| |< d S Nz*Can't modify headers that have been frozenr(   
ValueErrorr'   r,   )r   r-   r!   r   r   r   __setitem__U   s   zHttpHeaders.__setitem__itemc                 C   s   | j | | d S N   )r'   r,   r   r4   r   r   r   __getitem__Z      zHttpHeaders.__getitem__c                 C   s    | j rtd| j| |= d S r0   r1   r   r-   r   r   r   __delitem__]   s   zHttpHeaders.__delitem__otherc                 C   sH   t |tstS t |tst|}dd | j D dd |j D kS )Nc                 S   s   i | ]	\}\}}||qS r   r   .0k_vr   r   r   
<dictcomp>g   s    z&HttpHeaders.__eq__.<locals>.<dictcomp>)
isinstancer
   NotImplementedr&   r'   r+   r   r<   r   r   r   __eq__b   s   

zHttpHeaders.__eq__c                 C      t |tstS | |k S N)rC   r
   rD   rE   r   r   r   __ne__k      

zHttpHeaders.__ne__c                 C      t |  S rH   )iterkeysr   r   r   r   __iter__p      zHttpHeaders.__iter__c                 C   
   t | jS rH   )lenr'   r   r   r   r   __len__s      
zHttpHeaders.__len__c                 C   rP   rH   )boolr'   r   r   r   r   __bool__v   rS   zHttpHeaders.__bool__c                 C   s   t |to| || jv S rH   )rC   r"   r,   r'   r7   r   r   r   __contains__y   s   zHttpHeaders.__contains__c                 C   rK   rH   )repr_dict_hide_authr   r   r   r   r   |   rO   zHttpHeaders.__repr__c                 C   rK   rH   )r"   rX   r   r   r   r   r      rO   zHttpHeaders.__str__c                 C   s.   | j stdttdd t| j D S )Nz6Can't calculate the hash of headers that aren't frozenc                 s   s     | ]\}\}}||fV  qd S rH   r   r=   r   r   r   	<genexpr>   s    z'HttpHeaders.__hash__.<locals>.<genexpr>)r(   r2   hashtuplesortedr'   r+   r   r   r   r   __hash__   s    zHttpHeaders.__hash__defaultc                 C   s   | j | |d |fd S r5   )r'   getr,   )r   r-   r^   r   r   r   r_      s   zHttpHeaders.getc                 C   s
   | j  S rH   )r'   rM   r   r   r   r   rM      rS   zHttpHeaders.keysc                 C   s   dd | j  D  S )Nc                 S   s   i | ]\}}d |qS ) r   )r>   r@   rA   r   r   r   rB      s    z&HttpHeaders.values.<locals>.<dictcomp>)r'   valuesr   r   r   r   ra      s   zHttpHeaders.valuesc                 C   s   dd | j  D S )Nc                 S   s   g | ]
\}\}}||fqS r   r   )r>   r@   r-   r.   r   r   r   
<listcomp>   s    z%HttpHeaders.items.<locals>.<listcomp>)r'   r+   r   r   r   r   r+      r9   zHttpHeaders.itemsc                 C   s
   d| _ | S )zFreezes the current set of headers so they can be used in hashes.
        Returns the same instance, doesn't make a copy.
        Tr(   r   r   r   r   freeze   s   zHttpHeaders.freezec                 C   s   | j S rH   rc   r   r   r   r   frozen   s   zHttpHeaders.frozenc                 C   rK   rH   )r&   r+   r   r   r   r   copy   rO   zHttpHeaders.copyc                 C   s"   z|  W S  ty   | Y S w rH   )lowerAttributeErrorr:   r   r   r   r,      s
   
zHttpHeaders._normalize_keyc                    s(   dt dt fdd  fdd|  D S )Nr.   r   c                 S   s$   t d| }|r|d dS dS )Nz^(ApiKey|Basic|Bearer) r6   z	 <hidden>z<hidden>)rematchgroup)r.   rj   r   r   r   	hide_auth   s   z.HttpHeaders._dict_hide_auth.<locals>.hide_authc                    s*   i | ]\}}||  d kr |n|qS )authorization)rg   )r>   r-   r.   rl   r   r   rB      s    z/HttpHeaders._dict_hide_auth.<locals>.<dictcomp>)r"   r+   r   r   rn   r   rX      s   
zHttpHeaders._dict_hide_authrH   )r   r&   ))r   r   r   r    	__slots__r   r   r
   r"   r   r   r/   r3   r8   r;   objectrT   rF   rI   r   rN   intrR   rU   rV   r   r   r]   r_   r	   rM   r   ra   r+   rd   propertyre   rf   r,   r   rX   r   r   r   r   r&   F   s>    "

	 

r&   c                   @   sP   e Zd ZU dZeed< eed< eed< eed< ded< e	de
e fd	d
ZdS )ApiResponseMetaz:Metadata that is returned from Transport.perform_request()statushttp_versionheadersduration
NodeConfignoder   c                 C   s4   z| j d }|dd pdW S  ty   Y dS w )zGMimetype to be used by the serializer to decode the raw response bytes.zcontent-type;r   N)rv   	partitionKeyError)r   content_typer   r   r   mimetype   s   
zApiResponseMeta.mimetypeN)r   r   r   r    rq   __annotations__r"   r&   floatrr   r   r~   r   r   r   r   rs      s   
 rs   r   c                   C   s
   t   S )z:Used for the 'default_factory' of the 'NodeConfig.headers')r&   rd   r   r   r   r   _empty_frozen_http_headers   s   
r   T)rW   c                   @   s  e Zd ZU dZeed< eed< eed< dZeed< ee	dZ
eeeeef f ed< d	Zeed
< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< edddZeej ed< dZeed< ee ddZ!e"ee#f ed< de#dd fdd Z$d*d!d"Z%d#e&defd$d%Z'd#e&defd&d'Z(defd(d)Z)dS )+rx   z/Configuration options available for every node.schemehostportr`   path_prefix)default_factoryrv   
   connections_per_nodeg      $@request_timeoutFhttp_compressTverify_certsNca_certsclient_cert
client_keyssl_assert_hostnamessl_assert_fingerprintssl_version)r^   rZ   ssl_contextssl_show_warn)r   rZ   _extraskwargsr   c                 K   s   |s| S t j| fi |S rH   )dataclassesreplace)r   r   r   r   r   r   $  s   zNodeConfig.replacec                    s  t  jtr
 jjst j  _ j j krtdd jv s(d jv r,td j	dk r5td j
dkr>td jrO jrLd jd nd	 _g d
} jdkrit fdd|D rgtdd S  jdkrdtdtf fdd} jd urtt||rtdd S d S d S )Nz'scheme' must be lowercase[]z"'host' must not have square bracesr   z!'port' must be a positive integerz1'connections_per_node' must be a positive integer/r`   )r   r   r   r   r   r   httpsc                 3   s    | ]
}t  |d uV  qd S rH   )getattr)r>   attrr   r   r   rY   E  s    z+NodeConfig.__post_init__.<locals>.<genexpr>z(TLS options require scheme to be 'https'r   r   c                    s    t | to| dvot | d uS )N)r   r   )rC   r"   r   )r   r   r   r   tls_option_filterL  s
   
z3NodeConfig.__post_init__.<locals>.tls_option_filterzAThe 'ssl_context' option can't be combined with other TLS options)rC   rv   r&   re   rd   r   rg   r2   r   r   r   r   stripanyrp   rT   r   filter)r   Ztls_optionsr   r   r   r   __post_init__)  s>   




zNodeConfig.__post_init__r<   c                 C   s>   t |tstS | j|jko| j|jko| j|jko| j|jkS rH   )rC   rx   rD   r   r   r   r   rE   r   r   r   rF   ]  s   



zNodeConfig.__eq__c                 C   rG   rH   )rC   rx   rD   rE   r   r   r   rI   g  rJ   zNodeConfig.__ne__c                 C   s   t | j| j| j| jfS rH   )rZ   r   r   r   r   r   r   r   r   r]   l  s   zNodeConfig.__hash__)r   N)*r   r   r   r    r"   r   rq   r   r   r   rv   r   r&   r
   r   r   r   r   r   rT   r   r   r   r   r   r   r   _TYPE_SSL_VERSIONr   ssl
SSLContextr   r*   r   r   r   r   r   rp   rF   rI   r]   r   r   r   r   rx      s6   
 	
4
rx   c                   @   s&   e Zd ZU dZeed< ee ed< dS )SniffOptionsz4Options which are passed to Transport.sniff_callbackZis_initial_sniffZsniff_timeoutN)r   r   r   r    rT   r   r   r   r   r   r   r   r   w  s   
 r   )&r   enumri   r   r   r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   Ztyping_extensionsr   Enumr   r!   r#   r   r$   r%   rq   r   ImportErrorr"   r&   rs   r   rx   r   r   r   r   r   <module>   s4   
<o  