a
    lJhlq                     @   s   d dl Z d dlZ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 d dlmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZ ejdkrd dlmZ nd dlmZ G d	d
 d
eZedZ edZ!e "ddZ#e#j$Z$edd gZ%G dd dee! Z&G dd dee  Z'G dd de'e  eee f Z(G dd de'e  ee  Z)G dd de'e  e	e Z*G dd dZ+G dd dZ,G dd de+ee  Z-G d d! d!e,e-e  Z.G d"d# d#e+ee  Z/G d$d% d%e,e/e  Z0ee-e1 e/e1 f e2d&d'd(Z3dS ))    N)array)Callable	ItemsViewIterableIteratorKeysViewMapping
ValuesView)	TYPE_CHECKINGAnyGenericNoReturnOptionalTypeVarUnioncastoverload   )MDArgMultiMappingMutableMultiMappingSupportsKeys)      )Selfc                   @   s&   e Zd ZU dZdZdZee ed< dS )istrzCase insensitive str.TN__istr_identity__)	__name__
__module____qualname____doc__Z__is_istr__r   r   str__annotations__ r#   r#   I/var/www/shaz/venv/lib/python3.9/site-packages/multidict/_multidict_py.pyr   "   s   
r   _V_T	_SENTINELsentinelQc                   @   sN   e Zd ZdZeee dddZedddZ	eddd	Z
edd
dZdS )_Iter_size_iter)sizeiteratorc                 C   s   || _ || _d S Nr+   )selfr.   r/   r#   r#   r$   __init__5   s    z_Iter.__init__returnc                 C   s   | S r0   r#   r1   r#   r#   r$   __iter__9   s    z_Iter.__iter__c                 C   s
   t | jS r0   )nextr-   r5   r#   r#   r$   __next__<   s    z_Iter.__next__c                 C   s   | j S r0   )r,   r5   r#   r#   r$   __length_hint__?   s    z_Iter.__length_hint__N)r   r   r   	__slots__intr   r&   r2   r   r6   r8   r9   r#   r#   r#   r$   r*   2   s
   r*   c                   @   s(   e Zd ZddddZedddZdS )		_ViewBasezMultiDict[_V]mdc                 C   s
   || _ d S r0   _md)r1   r>   r#   r#   r$   r2   D   s    z_ViewBase.__init__r3   c                 C   s
   t | jS r0   lenr@   r5   r#   r#   r$   __len__J   s    z_ViewBase.__len__N)r   r   r   r2   r;   rC   r#   r#   r#   r$   r<   C   s   r<   c                   @   s  e Zd ZeedddZeeee	f  dddZ
eeeee	f  ddd	Ze edd
dZeeee	f ef eeeee	f  dddZee eeee	f  dddZee eeee	f  dddZee ee dddZee eeeee	f ef  dddZee eeeee	f ef  dddZee eeeee	f ef  dddZee ee dddZee eeeee	f ef  ddd ZeZ eeee	f  edd!d"Z!d#S )$
_ItemsView)itemr4   c                 C   sz   t |ttfrt|dkrdS |\}}z| j|}W n tyJ   Y dS 0 | jjD ] \}}}||krT||krT dS qTdS )N   FT)
isinstancetuplelistrB   r@   	_identity	TypeError_items)r1   rE   keyvalueidentikvr#   r#   r$   __contains__O   s    z_ItemsView.__contains__r3   c                 C   s   t t| | | jjS r0   r*   rB   r-   r@   _versionr5   r#   r#   r$   r6   \   s    z_ItemsView.__iter__versionr4   c                 c   s>   | j jD ]0\}}}|| j jkr&td| j ||fV  qd S Nz#Dictionary changed during iterationr@   rL   rU   RuntimeError_keyr1   rW   rP   rQ   rR   r#   r#   r$   r-   _   s    z_ItemsView._iterc                 C   sN   g }| j jD ] \}}}|d| d| qd|}d| jj d| dS )N'': , <()>r@   rL   appendjoin	__class__r   r1   lstrP   rQ   rR   bodyr#   r#   r$   __repr__e   s
    
z_ItemsView.__repr__)argr4   c                 C   sX   t |tsd S t|dkrd S z | j|d |d |d fW S  tyR   Y d S 0 d S )NrF   r   r   )rG   rH   rB   r@   rJ   rK   r1   rk   r#   r#   r$   _parse_itemm   s    
 z_ItemsView._parse_item)itr4   c                 C   s@   t  }|D ]0}| |}|d u r$q
q
||d |d f q
|S )Nr   rF   )setrm   add)r1   rn   tmprk   rE   r#   r#   r$   _tmp_sety   s    
z_ItemsView._tmp_setotherr4   c                 C   s   t  }zt|}W n ty(   t Y S 0 |D ]T}| |}|d u rFq.|\}}}| jjD ](\}	}
}|	|krX||krX||
|f qXq.|S r0   ro   iterrK   NotImplementedrm   r@   rL   rp   r1   rt   retrn   rk   rE   identityrM   rN   rP   rQ   rR   r#   r#   r$   __and__   s    


z_ItemsView.__and__c                 C   s   t  }zt|}W n ty(   t Y S 0 |D ]T}| |}|d u rFq.|\}}}| jjD ](\}	}
}|	|krX||krX||  q.qXq.|S r0   ru   rx   r#   r#   r$   __rand__   s    



z_ItemsView.__rand__c                 C   s   t | }zt|}W n ty*   t Y S 0 |D ]^}| |}|d u rR|| q0|\}}}| jjD ]\}	}
}|	|krd||krd q0qd|| q0|S r0   ro   rv   rK   rw   rm   rp   r@   rL   rx   r#   r#   r$   __or__   s     



z_ItemsView.__or__c                 C   s`   zt |}W n ty"   t Y S 0 | |}| jjD ]$\}}}||f|vr6|||f q6|S r0   )ro   rK   rw   rr   r@   rL   rp   )r1   rt   ry   rq   rP   rQ   rR   r#   r#   r$   __ror__   s    

z_ItemsView.__ror__c                 C   sf   t  }zt|}W n ty(   t Y S 0 | |}| jjD ]$\}}}||f|vr<|||f q<|S r0   )ro   rv   rK   rw   rr   r@   rL   rp   )r1   rt   ry   rn   rq   rP   rQ   rR   r#   r#   r$   __sub__   s    

z_ItemsView.__sub__c                 C   s   t  }zt|}W n ty(   t Y S 0 |D ]^}| |}|d u rP|| q.|\}}}| jjD ]\}	}
}|	|krb||krb q.qb|| q.|S r0   r}   rx   r#   r#   r$   __rsub__   s     



z_ItemsView.__rsub__c                 C   s<   zt |}W n ty"   t Y S 0 | | }|||  O }|S r0   ro   rK   rw   r1   rt   rgtry   r#   r#   r$   __xor__   s    
z_ItemsView.__xor__c           
      C   sX   |D ]N}|  |}|d u rq|\}}}| jjD ]"\}}}	||kr.|	|kr.  dS q.qdS NFT)rm   r@   rL   )
r1   rt   rk   rE   rz   rM   rN   rP   rQ   rR   r#   r#   r$   
isdisjoint   s    

z_ItemsView.isdisjointN)"r   r   r   objectboolrS   r*   rH   r!   r%   r6   r;   r   r-   reprlibrecursive_reprrj   r   r&   r   rm   r   ro   rr   r   r{   r|   r~   r   r   r   r   __rxor__r   r#   r#   r#   r$   rD   N   s$    
 ((((	rD   c                   @   sX   e Zd ZeedddZee dddZe	e
e ddd	Ze edd
dZdS )_ValuesView)rN   r4   c                 C   s&   | j jD ]\}}}||kr dS qdS )NTF)r@   rL   )r1   rN   rP   rQ   rR   r#   r#   r$   rS      s    z_ValuesView.__contains__r3   c                 C   s   t t| | | jjS r0   rT   r5   r#   r#   r$   r6     s    z_ValuesView.__iter__rV   c                 c   s2   | j jD ]$\}}}|| j jkr&td|V  qd S rX   )r@   rL   rU   rZ   r\   r#   r#   r$   r-     s    z_ValuesView._iterc                 C   sF   g }| j jD ]\}}}|t| qd|}d| jj d| dS )Nr_   r`   ra   rb   )r@   rL   rd   reprre   rf   r   rg   r#   r#   r$   rj     s
    
z_ValuesView.__repr__N)r   r   r   r   r   rS   r*   r%   r6   r;   r   r-   r   r   r!   rj   r#   r#   r#   r$   r      s
   r   c                   @   s(  e Zd ZeedddZee dddZe	e
e ddd	Zedd
dZee ee dddZee ee dddZee eeeef  dddZee eeeef  dddZee ee dddZee ee dddZee eeeef  dddZeZee edddZdS )	_KeysViewrM   r4   c                 C   s@   t |tsdS | j|}| jjD ]\}}}||kr" dS q"dS r   rG   r!   r@   rJ   rL   r1   rM   rz   rP   rQ   rR   r#   r#   r$   rS     s    
z_KeysView.__contains__r3   c                 C   s   t t| | | jjS r0   rT   r5   r#   r#   r$   r6      s    z_KeysView.__iter__rV   c                 c   s:   | j jD ],\}}}|| j jkr&td| j |V  qd S rX   rY   r\   r#   r#   r$   r-   #  s    z_KeysView._iterc                 C   sJ   g }| j jD ]\}}}|d| d qd|}d| jj d| dS )Nr]   r_   r`   ra   rb   rc   rg   r#   r#   r$   rj   )  s
    
z_KeysView.__repr__rs   c           	      C   sv   t  }zt|}W n ty(   t Y S 0 |D ]B}t|ts>q.| j|}| jjD ]\}}}||krR|	| qRq.|S r0   )
ro   rv   rK   rw   rG   r!   r@   rJ   rL   rp   	r1   rt   ry   rn   rM   rz   rP   rQ   rR   r#   r#   r$   r{   0  s    

z_KeysView.__and__c           	      C   s   t  }zt|}W n ty(   t Y S 0 |D ]B}t|ts>q.| j|}| jjD ]\}}}||krR|	| qRq.t
t t |S r0   )ro   rv   rK   rw   rG   r!   r@   rJ   rL   rp   r   r&   r   r#   r#   r$   r|   ?  s    

z_KeysView.__rand__c           	      C   s   t | }zt|}W n ty*   t Y S 0 |D ]P}t|tsJ|| q0| j|}| jj	D ]\}}}||kr^ q0q^|| q0|S r0   )
ro   rv   rK   rw   rG   r!   rp   r@   rJ   rL   r   r#   r#   r$   r~   N  s    


z_KeysView.__or__c           	      C   s   zt |}W n ty"   t Y S 0 t  }|D ]&}t|ts>q.| j|}|| q.| jjD ]\}}}||vr^|| q^|S r0   )	ro   rK   rw   rG   r!   r@   rJ   rp   rL   )	r1   rt   ry   rq   rM   rz   rP   rQ   rR   r#   r#   r$   r   `  s    

z_KeysView.__ror__c           	      C   s|   t | }zt|}W n ty*   t Y S 0 |D ]F}t|ts@q0| j|}| jjD ] \}}}||krT|	|  q0qTq0|S r0   )
ro   rv   rK   rw   rG   r!   r@   rJ   rL   discardr   r#   r#   r$   r   r  s    


z_KeysView.__sub__c                 C   st   zt |}W n ty"   t Y S 0 |D ]F}t|ts8q(| j|}| jjD ] \}}}||krL||  q(qLq(|S r0   )	ro   rK   rw   rG   r!   r@   rJ   rL   r   )r1   rt   ry   rM   rz   rP   rQ   rR   r#   r#   r$   r     s    


z_KeysView.__rsub__c                 C   s<   zt |}W n ty"   t Y S 0 | | }|||  O }|S r0   r   r   r#   r#   r$   r     s    
z_KeysView.__xor__c                 C   sJ   |D ]@}t |tsq| j|}| jjD ]\}}}||kr(  dS q(qdS r   r   )r1   rt   rM   rz   rP   rQ   rR   r#   r#   r$   r     s    
z_KeysView.isdisjointN)r   r   r   r   r   rS   r*   r!   r6   r;   r   r-   rj   r   ro   r{   r&   r|   r   r~   r   r   r   r   r   r   r#   r#   r#   r$   r     s   	   	r   c                   @   s:   e Zd ZU dZeed< eedddZeedddZdS )	_CSMixinF_cir   c                 C   s   |S r0   r#   r1   rM   r#   r#   r$   r[     s    z_CSMixin._keyc                 C   s   t |tr|S tdd S Nz8MultiDict keys should be either str or subclasses of str)rG   r!   rK   r   r#   r#   r$   rJ     s    
z_CSMixin._identityN	r   r   r   r   r   r"   r!   r[   rJ   r#   r#   r#   r$   r     s   
r   c                   @   s:   e Zd ZU dZeed< eedddZeedddZdS )	_CIMixinTr   r   c                 C   s   t |tu r|S t|S d S r0   )typer   r   r#   r#   r$   r[     s    z_CIMixin._keyc                 C   sH   t |tr*|j}|d u r&| }||_|S t |tr<| S tdd S r   )rG   r   r   titler!   rK   )r1   rM   ry   r#   r#   r$   rJ     s    

z_CIMixin._identityNr   r#   r#   r#   r$   r     s   
r   c                	   @   sz  e Zd ZdZdZee edddZeee	e dddZ
eeeee	e ef d	d
dZ
efeeeef ee	e ef d	ddZ
eeedddZeeeeeef d	ddZefeeeef eeef d	ddZeedddZeeeedf dddZeeeeeef dddZd[eeedf eeedf d	ddZee dddZedddZee dddZeeef dddZee dd d!Zeed"d#d$Zeedd%d&Ze ! edd'd(Z"e#j$j%d)kredd*d+Z&e'e(e) e'e	e'eef   f dd,d-Z*eedd.d/d0Z+e)dd1d2Z,e,Z-d\ee edd3d4d5Z.ee e/eef ee0e	e'eeef  gdf dd6d7d8Z1e2e'eeef  dd9d:d;Z3ddd<d=Z4eedd.d>d?Z5eddd@dAZ6ed]dBedeedf dCdDdEZ7eeeed	dFdEZ7d^eeedf eedf d	dGdEZ7eeeddHdIZ8eeeeeef d	dJdIZ8efeeeef eeef d	dKdIZ8e9se8Z:eee	e ddLdMZ;eeeee	e ef d	dNdMZ;efeeeef ee	e ef d	dOdMZ;e'eef ddPdQZ<d_ee edd3dRdSZ=e	e'eeef  dd9dTdUZ>eedd.dVdWZ?dddXdYZ@dS )`	MultiDictz/Dictionary with the support for duplicate keys.N)rk   kwargsc                K   s>   g | _ t}|d  d7  < |d | _| ||| jj| j d S Nr   r   )rL   rU   _extendrf   r   _extend_items)r1   rk   r   rR   r#   r#   r$   r2     s
    
zMultiDict.__init__r   c                 C   s   d S r0   r#   r   r#   r#   r$   getall  s    zMultiDict.getallrM   defaultr4   c                 C   s   d S r0   r#   r1   rM   r   r#   r#   r$   r     s    c                    sF   |  |  fdd| jD }|r&|S |s6|tur6|S td| dS )-Return a list of all values matching the key.c                    s   g | ]\}}}| kr|qS r#   r#   .0rP   rQ   rR   rz   r#   r$   
<listcomp>      z$MultiDict.getall.<locals>.<listcomp>Key not found: %rNrJ   rL   r(   KeyError)r1   rM   r   resr#   r   r$   r     s    
c                 C   s   d S r0   r#   r   r#   r#   r$   getone  s    zMultiDict.getonec                 C   s   d S r0   r#   r   r#   r#   r$   r     s    c                 C   sH   |  |}| jD ]\}}}||kr|  S q|tur8|S td| dS )wGet first value matching the key.

        Raises KeyError if the key is not found and no default is provided.
        r   Nr   r1   rM   r   rz   rP   rQ   rR   r#   r#   r$   r     s    

c                 C   s
   |  |S r0   r   r   r#   r#   r$   __getitem__  s    zMultiDict.__getitem__c                C   s   d S r0   r#   r   r#   r#   r$   get  s    zMultiDict.getr   rM   r4   c                C   s   d S r0   r#   r   r#   r#   r$   r     s    c                 C   s   |  ||S zGet first value matching the key.

        If the key is not found, returns the default (or None if no default is provided)
        r   r   r#   r#   r$   r      s    r3   c                 C   s   t |  S r0   )rv   keysr5   r#   r#   r$   r6     s    zMultiDict.__iter__c                 C   s
   t | jS r0   )rB   rL   r5   r#   r#   r$   rC   
  s    zMultiDict.__len__c                 C   s   t | S z+Return a new view of the dictionary's keys.)r   r5   r#   r#   r$   r     s    zMultiDict.keysc                 C   s   t | S zAReturn a new view of the dictionary's items *(key, value) pairs).)rD   r5   r#   r#   r$   items  s    zMultiDict.itemsc                 C   s   t | S z-Return a new view of the dictionary's values.)r   r5   r#   r#   r$   values  s    zMultiDict.valuesrs   c                 C   s   t |tstS t |tr"| |jkS t |tr| j}|j}t|t|krLdS t||D ]*\\}}}\}}}||ksz||krV dS qVdS t| jt|krdS | 	 D ]"\}	}
|
|	t}|
|kr dS qdS r   )rG   r   rw   MultiDictProxyr@   r   rL   rB   zipr   r   r(   )r1   rt   ZlftZrhti1Zk2Zv1i2Zv2rQ   rR   nvr#   r#   r$   __eq__  s(    



zMultiDict.__eq__c                 C   s<   t |tsdS | |}| jD ]\}}}||kr dS qdS r   )rG   r!   rJ   rL   r   r#   r#   r$   rS   /  s    

zMultiDict.__contains__c                 C   s,   d dd | jD }d| jj d| dS )Nr_   c                 s   s$   | ]\}}}d | d|V  qdS r]   r^   Nr#   r   r#   r#   r$   	<genexpr>:  r   z%MultiDict.__repr__.<locals>.<genexpr>r`   ra   rb   )re   rL   rf   r   r1   ri   r#   r#   r$   rj   8  s    zMultiDict.__repr__pypyc                 C   s   t | t| j S r0   )r   
__sizeof__sys	getsizeofrL   r5   r#   r#   r$   r   ?  s    zMultiDict.__sizeof__c                 C   s   | j t|  ffS r0   )rf   rI   r   r5   r#   r#   r$   
__reduce__B  s    zMultiDict.__reduce__)rM   rN   r4   c                 C   s(   |  |}| j|||f |   d S r0   )rJ   rL   rd   _incr_version)r1   rM   rN   rz   r#   r#   r$   rp   E  s    
zMultiDict.addc                 C   s   | j }||  S zReturn a copy of itself.)rf   r   )r1   clsr#   r#   r$   copyJ  s    zMultiDict.copy)rk   r   r4   c                K   s   |  ||d| j dS )zhExtend current MultiDict with more values.

        This method must be used instead of update.
        extendN)r   r   r1   rk   r   r#   r#   r$   r   Q  s    zMultiDict.extend)rk   r   namemethodr4   c           
         sV   r8t  tr j t  trj jurBfdd jD }n j}|rT| }|r| D ]\}}|	|||f q`nt
 drttt    fdd  D  |rt   t|  g }t D ]R\}}	t|	dks
td| dt|	 d|	|	d	 |	d	 |	d
 f q|| n|fdd| D  d S )Nc                    s"   g | ]\}}}  |||fqS r#   rJ   )r   _rQ   rR   r5   r#   r$   r   d  r   z%MultiDict._extend.<locals>.<listcomp>r   c                    s   g | ]}| | fqS r#   r#   )r   rQ   rk   r#   r$   r   o  r   rF   z#multidict update sequence element #zhas length z; 2 is requiredr   r   c                    s    g | ]\}}  |||fqS r#   r   )r   rM   rN   r5   r#   r$   r   ~  r   )rG   r   r@   r   r   rL   r   r   rd   rJ   hasattrr   r   r%   r   rI   r   	enumeraterB   
ValueError)
r1   rk   r   r   r   r   rM   rN   posrE   r#   )rk   r1   r$   r   X  s:    


$
zMultiDict._extend)r   r4   c                 C   s.   |D ]\}}}| j |||f q|   d S r0   )rL   rd   r   )r1   r   rz   rM   rN   r#   r#   r$   r     s    zMultiDict._extend_itemsc                 C   s   | j   |   dS )z Remove all items from MultiDict.N)rL   clearr   r5   r#   r#   r$   r     s    
zMultiDict.clearc                 C   s   |  || d S r0   )_replace)r1   rM   rN   r#   r#   r$   __setitem__  s    zMultiDict.__setitem__c                 C   sb   |  |}| j}d}tt|d ddD ]}|| d |kr(||= d}q(|sVt|n|   d S )NFr   r   T)rJ   rL   rangerB   r   r   )r1   rM   rz   r   foundrP   r#   r#   r$   __delitem__  s    

zMultiDict.__delitem__zMultiDict[Union[_T, None]])r1   rM   r   r4   c                 C   s   d S r0   r#   r   r#   r#   r$   
setdefault  s    zMultiDict.setdefaultc                 C   s   d S r0   r#   r   r#   r#   r$   r     s    c                 C   s<   |  |}| jD ]\}}}||kr|  S q| || |S )zAReturn value for key, set value to default if key is not present.)rJ   rL   rp   r   r#   r#   r$   r     s    

c                 C   s   d S r0   r#   r   r#   r#   r$   popone  s    zMultiDict.poponec                 C   s   d S r0   r#   r   r#   r#   r$   r     s    c                 C   sp   |  |}tt| jD ]<}| j| d |kr| j| d }| j|= |   |  S q|tu rht|n|S dS )zRemove specified key and return the corresponding value.

        If key is not found, d is returned if given, otherwise
        KeyError is raised.

        r   rF   N)rJ   r   rB   rL   r   r(   r   )r1   rM   r   rz   rP   rN   r#   r#   r$   r     s    	


c                 C   s   d S r0   r#   r   r#   r#   r$   popall  s    zMultiDict.popallc                 C   s   d S r0   r#   r   r#   r#   r$   r     s    c                 C   s   d}|  |}g }tt| jd ddD ]<}| j| }|d |kr(||d  | j|= |   d}q(|s|tu r|t|q|S n|  |S dS )zRemove all occurrences of key and return the list of corresponding
        values.

        If key is not found, default is returned if given, otherwise
        KeyError is raised.

        Fr   r   r   rF   TN)	rJ   r   rB   rL   rd   r   r(   r   reverse)r1   rM   r   r   rz   ry   rP   rE   r#   r#   r$   r     s     



c                 C   s8   | j r,| j  \}}}|   | ||fS tddS )z1Remove and return an arbitrary (key, value) pair.zempty multidictN)rL   popr   r[   r   )r1   rP   rQ   rR   r#   r#   r$   popitem  s
    zMultiDict.popitemc                K   s   |  ||d| j dS )z>Update the dictionary from *other*, overwriting existing keys.updateN)r   _update_itemsr   r#   r#   r$   r     s    zMultiDict.updatec           
      C   s   |sd S i }|D ]\}}}| |d}t|t| jD ]:}| j| }|d |kr6|d ||< |||f| j|<  qq6| j|||f t| j||< qd}|t| jk r| j| }|d }| |}	|	d u r|d7 }q||	kr| j|= q|d7 }q|   d S r   )r   r   rB   rL   rd   r   )
r1   r   Z	used_keysrz   rM   rN   startrP   rE   r   r#   r#   r$   r     s2    




zMultiDict._update_itemsc                 C   s   |  |}| j}tt|D ]6}|| }|d |kr|||f||< |}|    qrq| j|||f |   d S |d }|t|k r|| }|d |kr||= qz|d7 }qzd S r   )rJ   rL   r   rB   r   rd   )r1   rM   rN   rz   r   rP   rE   r   r#   r#   r$   r     s$    
zMultiDict._replacec                 C   s"   t }|d  d7  < |d | _ d S r   )rU   )r1   rR   r#   r#   r$   r   1  s    zMultiDict._incr_version)N)N)N)N)N)N)Ar   r   r   r    r   r%   r2   r   r!   rI   r   r&   r   r(   r'   r   r   r   r   r6   r;   rC   r   r   r   r   r   r   r   r   r   rS   r   r   rj   r   implementationr   r   rH   r   r   r   rp   r   __copy__r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r#   r#   r#   r$   r     s    
&	*	
( 
$	
 	 r   c                   @   s   e Zd ZdZdS )CIMultiDictz@Dictionary with the support for duplicate case-insensitive keys.N)r   r   r   r    r#   r#   r#   r$   r   7  s   r   c                   @   s  e Zd ZU dZee ed< eee df dddZe	ddd	Z
eeee d
ddZeeeeee ef dddZefeeeef eee ef dddZeeed
ddZeeeeeef dddZefeeeef eeef dddZeed
ddZeeeedf d
ddZeeeeeef dddZd/eeedf eeedf dddZee dddZedddZee dd d!Zeeef dd"d#Zee dd$d%Zee d&d'd(Z!ee d
d)d*Z"e#$ edd+d,Z%ee dd-d.Z&dS )0r   z'Read-only proxy for MultiDict instance.r@   zMultiDictProxy[_V]r   c                 C   s>   t |ttfs tdt| t |tr4|j| _n|| _d S )Nz8ctor requires MultiDict or MultiDictProxy instance, not )rG   r   r   rK   r   r@   rl   r#   r#   r$   r2   @  s    

zMultiDictProxy.__init__r3   c                 C   s   t d| jj dd S )Nzcan't pickle z objects)rK   rf   r   r5   r#   r#   r$   r   K  s    zMultiDictProxy.__reduce__r   c                 C   s   d S r0   r#   r   r#   r#   r$   r   N  s    zMultiDictProxy.getallr   c                 C   s   d S r0   r#   r   r#   r#   r$   r   P  s    c                 C   s&   |t ur| j||S | j|S dS )r   N)r(   r@   r   r   r#   r#   r$   r   R  s    c                 C   s   d S r0   r#   r   r#   r#   r$   r   [  s    zMultiDictProxy.getonec                 C   s   d S r0   r#   r   r#   r#   r$   r   ]  s    c                 C   s&   |t ur| j||S | j|S dS )r   N)r(   r@   r   r   r#   r#   r$   r   _  s    c                 C   s
   |  |S r0   r   r   r#   r#   r$   r   m  s    zMultiDictProxy.__getitem__Nc                C   s   d S r0   r#   r   r#   r#   r$   r   p  s    zMultiDictProxy.getr   c                C   s   d S r0   r#   r   r#   r#   r$   r   r  s    c                 C   s   | j ||S r   )r@   r   r   r#   r#   r$   r   t  s    c                 C   s   t | j S r0   )rv   r@   r   r5   r#   r#   r$   r6   {  s    zMultiDictProxy.__iter__c                 C   s
   t | jS r0   rA   r5   r#   r#   r$   rC   ~  s    zMultiDictProxy.__len__c                 C   s
   | j  S r   )r@   r   r5   r#   r#   r$   r     s    zMultiDictProxy.keysc                 C   s
   | j  S r   )r@   r   r5   r#   r#   r$   r     s    zMultiDictProxy.itemsc                 C   s
   | j  S r   )r@   r   r5   r#   r#   r$   r     s    zMultiDictProxy.valuesrs   c                 C   s
   | j |kS r0   r?   )r1   rt   r#   r#   r$   r     s    zMultiDictProxy.__eq__c                 C   s
   || j v S r0   r?   r   r#   r#   r$   rS     s    zMultiDictProxy.__contains__c                 C   s.   d dd |  D }d| jj d| dS )Nr_   c                 s   s"   | ]\}}d | d|V  qdS r   r#   )r   rQ   rR   r#   r#   r$   r     r   z*MultiDictProxy.__repr__.<locals>.<genexpr>r`   ra   rb   )re   r   rf   r   r   r#   r#   r$   rj     s    zMultiDictProxy.__repr__c                 C   s   t |  S r   )r   r   r5   r#   r#   r$   r     s    zMultiDictProxy.copy)N)'r   r   r   r    r   r%   r"   r   r2   r   r   r   r!   rI   r   r&   r(   r'   r   r   r   r   r6   r;   rC   r   r   r   r   r   r   r   r   r   rS   r   r   rj   r   r#   r#   r#   r$   r   ;  sL   
 	
&r   c                       sH   e Zd ZdZeee ee f d fddZe	e dddZ
  ZS )CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.r   c                    s0   t |ttfs tdt| t | d S )Nz<ctor requires CIMultiDict or CIMultiDictProxy instance, not )rG   r   r   rK   r   superr2   rl   rf   r#   r$   r2     s    zCIMultiDictProxy.__init__r3   c                 C   s   t |  S r   )r   r   r5   r#   r#   r$   r     s    zCIMultiDictProxy.copy)r   r   r   r    r   r   r%   r   r2   r   r   __classcell__r#   r#   r   r$   r     s   "	r   )r>   r4   c                 C   s*   t | tr| j} nt | ts$td| jS )Nz&Parameter should be multidict or proxy)rG   r   r@   r   rK   rU   r=   r#   r#   r$   
getversion  s
    

r   )4enumr   r   r   collections.abcr   r   r   r   r   r   r	   typingr
   r   r   r   r   r   r   r   r   _abcr   r   r   r   version_infor   typing_extensionsr!   r   r%   r&   Enumr'   r(   rU   r*   r<   rD   r   r   r   r   r   r   r   r   r   r;   r   r#   r#   r#   r$   <module>   s>   $	,
 0   ob