o
    eZh                     @   s   d dl 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 edZedZedZG dd dee ZG d	d
 d
ee ZG dd dee ZG dd dee ZG dd dee eeeef  ZG dd dee eee  ZdS )    )
AnyDictGenericIteratorListNoReturnTupleTypeVarUnionoverload   )ApiResponseMeta	_BodyType_ObjectBodyType_ListItemBodyTypec                   @   s0  e Zd ZdZdZdedefddZdefdd	Zd
ede	fddZ
dede	fddZdede	fddZd
edefddZdedefddZdeeef fddZdeeef ddfddZ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edefd%d&Zedefd'd(Zedefd)d*ZdS )+ApiResponsez'Base class for all API response classes_body_metaargskwargsc                 O   s   dt fdd}zLt|t|kr|  n>|r!t|dkr!|\}}n1|r8d|v r8|d}|d}|dd  n|rOd|v rO|d}|d}|dd  n|  W n ty_   |  Y nw |sg|rg|  || _|| _d S )	Nreturnc                   S   s
   t dd )Nz*Must pass 'meta' and 'body' to ApiResponse)	TypeError r   r   R/var/www/html/lang_env/lib/python3.10/site-packages/elastic_transport/_response.py_raise_typeerror0      
z.ApiResponse.__init__.<locals>._raise_typeerror   rawmetaZbody_clsbody)r   boollenpopKeyErrorr   r   )selfr   r   r   r    r   r   r   r   __init__+   s.   






zApiResponse.__init__r   c                 C   s   t | j d| jdS )N())type__name__r    r%   r   r   r   __repr__N   s   zApiResponse.__repr__itemc                 C   s
   || j v S Nr   r%   r-   r   r   r   __contains__Q   r   zApiResponse.__contains__otherc                 C   s   t |tr|j}| j|kS r.   
isinstancer   r    r   r%   r2   r   r   r   __eq__T      

zApiResponse.__eq__c                 C   s   t |tr|j}| j|kS r.   r3   r5   r   r   r   __ne__Y   r7   zApiResponse.__ne__c                 C   
   | j | S r.   r/   r0   r   r   r   __getitem__^   r   zApiResponse.__getitem__attrc                 C   s   t | j|S r.   )getattrr   )r%   r;   r   r   r   __getattr__a      zApiResponse.__getattr__c                 C   s   | j | jfS r.   r   r+   r   r   r   __getstate__d   r>   zApiResponse.__getstate__stateNc                 C   s   |\| _ | _d S r.   r   )r%   r@   r   r   r   __setstate__g   s   zApiResponse.__setstate__c                 C   
   t | jS r.   )r"   r   r+   r   r   r   __len__j   r   zApiResponse.__len__c                 C   rB   r.   iterr   r+   r   r   r   __iter__m   r   zApiResponse.__iter__c                 C   rB   r.   )strr   r+   r   r   r   __str__p   r   zApiResponse.__str__c                 C   rB   r.   )r!   r   r+   r   r   r   __bool__s   r   zApiResponse.__bool__c                 C      | j S )zResponse metadata)r   r+   r   r   r   r   v      zApiResponse.metac                 C   rJ   )zFUser-friendly view into the raw response with type hints if applicabler/   r+   r   r   r   r    {   rK   zApiResponse.bodyc                 C   rJ   r.   r    r+   r   r   r   r         zApiResponse.raw)r*   
__module____qualname____doc__	__slots__r   r&   rG   r,   r!   r1   objectr6   r8   r:   r=   r   r   r   r?   rA   intrC   r   rF   rH   rI   propertyr   r    r   r   r   r   r   r   &   s4    
#r   c                   @   sN   e Zd ZdZdee fddZdeee	f defddZ
edefdd	Zd
S )TextApiResponsez?API responses which are text such as 'text/plain' or 'text/csv'r   c                 C   rB   r.   rE   r    r+   r   r   r   rF      r   zTextApiResponse.__iter__r-   c                 C   r9   r.   rL   r0   r   r   r   r:      r   zTextApiResponse.__getitem__c                 C   rJ   r.   r/   r+   r   r   r   r       rM   zTextApiResponse.bodyN)r*   rN   rO   rP   r   rG   rF   r
   rS   slicer:   rT   r    r   r   r   r   rU      s    rU   c                   @   s   e Zd ZdZdee fddZedede	fddZ
ededefddZ
deeef deee	f fd	dZ
ede	fd
dZdS )BinaryApiResponsezEAPI responses which are a binary response such as Mapbox vector tilesr   c                 C   rB   r.   rV   r+   r   r   r   rF      r   zBinaryApiResponse.__iter__r-   c                 C      d S r.   r   r0   r   r   r   r:         zBinaryApiResponse.__getitem__c                 C   rY   r.   r   r0   r   r   r   r:      rZ   c                 C   r9   r.   rL   r0   r   r   r   r:      r   c                 C   rJ   r.   r/   r+   r   r   r   r       rM   zBinaryApiResponse.bodyN)r*   rN   rO   rP   r   rS   rF   r   rW   bytesr:   r
   rT   r    r   r   r   r   rX      s    "rX   c                       sF   e Zd ZdZdef fddZdefddZedefdd	Z	  Z
S )
HeadApiResponsez:API responses which are for an 'exists' / HEAD API requestr   c                    s*   t  jd|j  kodk n  |d d S )N   ,  )r    r   )superr&   status)r%   r   	__class__r   r   r&      s   *zHeadApiResponse.__init__r   c                 C   s   d| j j  kodk S   S )Nr]   r^   )r   r`   r+   r   r   r   rI      s   zHeadApiResponse.__bool__c                 C   s   t | S r.   )r!   r+   r   r   r   r       s   zHeadApiResponse.body)r*   rN   rO   rP   r   r&   r!   rI   rT   r    __classcell__r   r   ra   r   r\      s    r\   c                   @   sF   e Zd ZdZdedefddZdee fddZe	de
fdd	Zd
S )ObjectApiResponsez)API responses which are for a JSON objectr-   r   c                 C   r9   r.   rL   r0   r   r   r   r:      r   zObjectApiResponse.__getitem__c                 C   rB   r.   rD   r+   r   r   r   rF      r   zObjectApiResponse.__iter__c                 C   rJ   r.   r/   r+   r   r   r   r       rM   zObjectApiResponse.bodyN)r*   rN   rO   rP   rG   r   r:   r   rF   rT   r   r    r   r   r   r   rd      s    rd   c                   @   s   e Zd ZdZededee fddZede	defddZde
e	ef de
eee f fddZdee fdd	Zedee fd
dZdS )ListApiResponsezEAPI responses which are a list of items. Can be NDJSON or a JSON listr-   r   c                 C   rY   r.   r   r0   r   r   r   r:      rZ   zListApiResponse.__getitem__c                 C   rY   r.   r   r0   r   r   r   r:      rZ   c                 C   r9   r.   rL   r0   r   r   r   r:      s   
c                 C   rB   r.   rV   r+   r   r   r   rF      r   zListApiResponse.__iter__c                 C   rJ   r.   r/   r+   r   r   r   r       rM   zListApiResponse.bodyN)r*   rN   rO   rP   r   rW   r   r   r:   rS   r
   r   rF   rT   r    r   r   r   r   re      s    

re   N)typingr   r   r   r   r   r   r   r	   r
   r   Z_modelsr   r   r   r   r   rG   rU   r[   rX   r!   r\   rd   re   r   r   r   r   <module>   s   0_"

