o
    hqj                     @   s<  d dl Z d dlZd dlZd dlm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rXd 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" 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" Z0G d#d$ d$e.e0e" ee" Z1G d%d& d&e/e1e" Z2G d'd( d(e.e0e" Z3G d)d* d*e/e3e" Z4d+ee1e5 e3e5 f d,e6fd-d.Z7dS )/    N)abstractmethod)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_title__)	__name__
__module____qualname____doc____is_istr__r   r   str__annotations__ r%   r%   k/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/multidict/_multidict_py.pyr   #   s   
 r   _V_T	_SENTINELsentinelQc                   @   sB   e Zd ZdZdddZdddZejjdkrde	fd	d
Z
dS dS )_Impl)_items_versionreturnNc                 C   s   g | _ |   d S N)r-   incr_versionselfr%   r%   r&   __init__6   s   z_Impl.__init__c                 C   s"   t }|d  d7  < |d | _ d S Nr   r   )r.   )r3   vr%   r%   r&   r1   :   s   z_Impl.incr_versionpypyc                 C      t | t| j S r0   )object
__sizeof__sys	getsizeofr-   r2   r%   r%   r&   r:   A      z_Impl.__sizeof__r/   N)r   r   r    	__slots__r4   r1   r;   implementationnameintr:   r%   r%   r%   r&   r,   3   s    

r,   c                   @   sP   e Zd ZdZdedee fddZdefddZ	defd	d
Z
defddZdS )_Iter_size_itersizeiteratorc                 C   s   || _ || _d S r0   rD   )r3   rG   rH   r%   r%   r&   r4   H   s   
z_Iter.__init__r/   c                 C   s   | S r0   r%   r2   r%   r%   r&   __iter__L      z_Iter.__iter__c                 C   s
   t | jS r0   )nextrF   r2   r%   r%   r&   __next__O      
z_Iter.__next__c                 C   s   | j S r0   )rE   r2   r%   r%   r&   __length_hint__R   s   z_Iter.__length_hint__N)r   r   r    r?   rB   r   r(   r4   r   rI   rL   rN   r%   r%   r%   r&   rC   E   s    rC   c                   @   sH   e Zd Zdee deegef deegef fddZdefddZ	d	S )
	_ViewBaseimpl	identfunckeyfuncc                 C   s   || _ || _|| _d S r0   )_impl
_identfunc_keyfunc)r3   rP   rQ   rR   r%   r%   r&   r4   W   s   
z_ViewBase.__init__r/   c                 C      t | jjS r0   lenrS   r-   r2   r%   r%   r&   __len__a      z_ViewBase.__len__N)
r   r   r    r,   r'   r   r#   r4   rB   rY   r%   r%   r%   r&   rO   V   s    

rO   c                   @   s  e Zd ZdedefddZdeeee	f  fddZ
dedeeee	f  fdd	Ze defd
dZdeeee	f ef deeeee	f  fddZdee deeee	f  fddZdee deeee	f  fddZdee dee fddZdee deeeee	f ef  fddZdee deeeee	f ef  fddZdee deeeee	f ef  fddZdee dee fddZdee deeeee	f ef  fdd ZeZ deeee	f  defd!d"Z!d#S )$
_ItemsViewitemr/   c                 C   sx   t |ttfrt|dkrdS |\}}z| |}W n
 ty$   Y dS w | jjD ]\}}}||kr9||kr9 dS q)dS )N   FT)
isinstancetuplelistrX   rT   	TypeErrorrS   r-   )r3   r\   keyvalueidentikr6   r%   r%   r&   __contains__f   s   z_ItemsView.__contains__c                 C      t t| | | jjS r0   rC   rX   rF   rS   r.   r2   r%   r%   r&   rI   s      z_ItemsView.__iter__versionc                 c   s>    | j jD ]\}}}|| j jkrtd| ||fV  qd S Nz#Dictionary changed during iterationrS   r-   r.   RuntimeErrorrU   r3   rk   re   rf   r6   r%   r%   r&   rF   v   s   z_ItemsView._iterc                 C   sN   g }| j jD ]\}}}|d| d| qd|}d| jj d| dS )N'': , <()>rS   r-   appendjoin	__class__r   r3   lstre   rf   r6   bodyr%   r%   r&   __repr__|   s
   
z_ItemsView.__repr__argc                 C   sR   t |tsd S t|dkrd S z| |d |d |d fW S  ty(   Y d S w )Nr]   r   r   )r^   r_   rX   rT   ra   r3   r~   r%   r%   r&   _parse_item   s   
z_ItemsView._parse_itemitc                 C   s>   t  }|D ]}| |}|d u rq||d |d f q|S )Nr   r]   )setr   add)r3   r   tmpr~   r\   r%   r%   r&   _tmp_set   s   
z_ItemsView._tmp_setotherc                 C   s   t  }zt|}W n ty   t Y S w |D ]*}| |}|d u r#q|\}}}| jjD ]\}	}
}|	|kr@||kr@||
|f q,q|S r0   r   iterra   NotImplementedr   rS   r-   r   r3   r   retr   r~   r\   identityrb   rc   re   rf   r6   r%   r%   r&   __and__   s"   

z_ItemsView.__and__c                 C   s   t  }zt|}W n ty   t Y S w |D ]*}| |}|d u r#q|\}}}| jjD ]\}	}
}|	|kr@||kr@||  nq,q|S r0   r   r   r%   r%   r&   __rand__   s"   


z_ItemsView.__rand__c                 C   s   t | }zt|}W n ty   t Y S w |D ]/}| |}|d u r)|| q|\}}}| jjD ]\}	}
}|	|krA||krA nq2|| q|S r0   r   r   ra   r   r   r   rS   r-   r   r%   r%   r&   __or__   s&   



z_ItemsView.__or__c                 C   s`   zt |}W n ty   t Y S w | |}| jjD ]\}}}||f|vr-|||f q|S r0   )r   ra   r   r   rS   r-   r   )r3   r   r   r   re   rf   r6   r%   r%   r&   __ror__   s   
z_ItemsView.__ror__c                 C   sf   t  }zt|}W n ty   t Y S w | |}| jjD ]\}}}||f|vr0|||f q|S r0   )r   r   ra   r   r   rS   r-   r   )r3   r   r   r   r   re   rf   r6   r%   r%   r&   __sub__   s   
z_ItemsView.__sub__c                 C   s   t  }zt|}W n ty   t Y S w |D ]/}| |}|d u r(|| q|\}}}| jjD ]\}	}
}|	|kr@||kr@ nq1|| q|S r0   r   r   r%   r%   r&   __rsub__   s&   



z_ItemsView.__rsub__c                 C   <   zt |}W n ty   t Y S w | | }|||  O }|S r0   r   ra   r   r3   r   rgtr   r%   r%   r&   __xor__      z_ItemsView.__xor__c           
      C   sX   |D ]'}|  |}|d u rq|\}}}| jjD ]\}}}	||kr(|	|kr(  dS qqdS NFT)r   rS   r-   )
r3   r   r~   r\   r   rb   rc   re   rf   r6   r%   r%   r&   
isdisjoint  s   

z_ItemsView.isdisjointN)"r   r   r    r9   boolrg   rC   r_   r#   r'   rI   rB   r   rF   reprlibrecursive_reprr}   r   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   __rxor__r   r%   r%   r%   r&   r[   e   s*    
""
****	"r[   c                   @   s\   e Zd ZdedefddZdee fddZde	de
e fdd	Ze defd
dZdS )_ValuesViewrc   r/   c                 C   s&   | j jD ]\}}}||kr dS qdS )NTF)rS   r-   )r3   rc   re   rf   r6   r%   r%   r&   rg     s
   z_ValuesView.__contains__c                 C   rh   r0   ri   r2   r%   r%   r&   rI     rj   z_ValuesView.__iter__rk   c                 c   s4    | j jD ]\}}}|| j jkrtd|V  qd S rl   )rS   r-   r.   rn   ro   r%   r%   r&   rF     s   z_ValuesView._iterc                 C   sF   g }| j jD ]\}}}|t| qd|}d| jj d| dS )Nrr   rs   rt   ru   )rS   r-   rw   reprrx   ry   r   rz   r%   r%   r&   r}   $  s
   
z_ValuesView.__repr__N)r   r   r    r9   r   rg   rC   r'   rI   rB   r   rF   r   r   r#   r}   r%   r%   r%   r&   r     s    r   c                   @   s<  e Zd ZdedefddZdee fddZde	de
e fdd	Zdefd
dZdee dee fddZdee dee fddZdee deeeef  fddZdee deeeef  fddZdee dee fddZdee dee fddZdee deeeef  fddZeZdee defddZdS )	_KeysViewrb   r/   c                 C   >   t |tsdS | |}| jjD ]\}}}||kr dS qdS r   r^   r#   rT   rS   r-   r3   rb   r   re   rf   r6   r%   r%   r&   rg   .     

z_KeysView.__contains__c                 C   rh   r0   ri   r2   r%   r%   r&   rI   7  rj   z_KeysView.__iter__rk   c                 c   s:    | j jD ]\}}}|| j jkrtd| |V  qd S rl   rm   ro   r%   r%   r&   rF   :  s   z_KeysView._iterc                 C   sJ   g }| j jD ]\}}}|d| d qd|}d| jj d| dS )Nrp   rr   rs   rt   ru   rv   rz   r%   r%   r&   r}   @  s
   
z_KeysView.__repr__r   c           	      C   st   t  }zt|}W n ty   t Y S w |D ] }t|tsq| |}| jjD ]\}}}||kr6|	| q(q|S r0   )
r   r   ra   r   r^   r#   rT   rS   r-   r   	r3   r   r   r   rb   r   re   rf   r6   r%   r%   r&   r   G  s    


z_KeysView.__and__c           	      C   s~   t  }zt|}W n ty   t Y S w |D ] }t|tsq| |}| jjD ]\}}}||kr6|	| q(qt
t t |S r0   )r   r   ra   r   r^   r#   rT   rS   r-   r   r   r(   r   r%   r%   r&   r   V  s    


z_KeysView.__rand__c           	      C   s   t | }zt|}W n ty   t Y S w |D ]'}t|ts%|| q| |}| jj	D ]\}}}||kr9 nq.|| q|S r0   )
r   r   ra   r   r^   r#   r   rT   rS   r-   r   r%   r%   r&   r   e  s$   



z_KeysView.__or__c           	      C   s~   zt |}W n ty   t Y S w t  }|D ]}t|tsq| |}|| q| jjD ]\}}}||vr<|| q.|S r0   )	r   ra   r   r^   r#   rT   r   rS   r-   )	r3   r   r   r   rb   r   re   rf   r6   r%   r%   r&   r   w  s    


z_KeysView.__ror__c           	      C   sz   t | }zt|}W n ty   t Y S w |D ]"}t|ts q| |}| jjD ]\}}}||kr9|	|  nq)q|S r0   )
r   r   ra   r   r^   r#   rT   rS   r-   discardr   r%   r%   r&   r     s"   


z_KeysView.__sub__c                 C   sr   zt |}W n ty   t Y S w |D ]"}t|tsq| |}| jjD ]\}}}||kr5||  nq%q|S r0   )	r   ra   r   r^   r#   rT   rS   r-   r   )r3   r   r   rb   r   re   rf   r6   r%   r%   r&   r     s    


z_KeysView.__rsub__c                 C   r   r0   r   r   r%   r%   r&   r     r   z_KeysView.__xor__c                 C   sH   |D ]}t |ts
q| |}| jjD ]\}}}||kr   dS qqdS r   r   )r3   r   rb   r   re   rf   r6   r%   r%   r&   r     s   

z_KeysView.isdisjointN)r   r   r    r9   r   rg   rC   r#   rI   rB   r   rF   r}   r   r   r   r(   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   r   -  s    	"""	r   c                   @   s0   e Zd ZdedefddZdedefddZdS )_CSMixinrb   r/   c                 C   s   |S r0   r%   r3   rb   r%   r%   r&   _key  rJ   z_CSMixin._keyc                 C   s   t |tr|S tdNz8MultiDict keys should be either str or subclasses of str)r^   r#   ra   r   r%   r%   r&   _title  s   
z_CSMixin._titleN)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< dedefddZdedefddZd	S )
_CIMixinT_cirb   r/   c                 C   s   t |tu r|S t|S r0   )typer   r   r%   r%   r&   r     s   z_CIMixin._keyc                 C   sD   t |tr|j}|d u r| }||_|S t |tr| S tdr   )r^   r   r   titler#   ra   )r3   rb   r   r%   r%   r&   r     s   

z_CIMixin._titleN)	r   r   r    r   r   r$   r#   r   r   r%   r%   r%   r&   r     s   
 r   c                
   @   s2  e Zd ZU ee ed< dZeed< ede	de	fddZ
ede	de	fdd	Zede	dee fd
dZede	dedeee ef fddZefde	deeef deee ef fddZede	defddZede	dedeeef fddZefde	deeef deeef fddZde	defddZede	deedf fddZedede	deeef fddZd+de	deedf deeedf fddZdee	 fddZdefddZdee	 fddZdee	ef fd d!Zdee fd"d#Zd$e defd%d&Z!de defd'd(Z"e#$ de	fd)d*Z%dS ),_BaserS   Fr   rb   r/   c                 C      d S r0   r%   r   r%   r%   r&   r     rJ   z
_Base._keyc                 C   r   r0   r%   r   r%   r%   r&   r     rJ   z_Base._titlec                 C   r   r0   r%   r   r%   r%   r&   getall  rJ   z_Base.getalldefaultc                 C   r   r0   r%   r3   rb   r   r%   r%   r&   r     rJ   c                    sD   |  |  fdd| jjD }|r|S |s|tur|S td| )z-Return a list of all values matching the key.c                    s   g | ]\}}}| kr|qS r%   r%   .0re   rf   r6   r   r%   r&   
<listcomp>  s    z _Base.getall.<locals>.<listcomp>Key not found: %rr   rS   r-   r*   KeyError)r3   rb   r   resr%   r   r&   r     s   
c                 C   r   r0   r%   r   r%   r%   r&   getone  rJ   z_Base.getonec                 C   r   r0   r%   r   r%   r%   r&   r     rJ   c                 C   sF   |  |}| jjD ]\}}}||kr|  S q	|tur|S td| )zwGet first value matching the key.

        Raises KeyError if the key is not found and no default is provided.
        r   r   r3   rb   r   r   re   rf   r6   r%   r%   r&   r     s   
c                 C   s
   |  |S r0   r   r   r%   r%   r&   __getitem__  rM   z_Base.__getitem__Nc                C   r   r0   r%   r   r%   r%   r&   get  rJ   z	_Base.getc                C   r   r0   r%   r   r%   r%   r&   r     rJ   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   c                 C      t |  S r0   )r   keysr2   r%   r%   r&   rI     rZ   z_Base.__iter__c                 C   rV   r0   rW   r2   r%   r%   r&   rY     rZ   z_Base.__len__c                 C      t | j| j| jS )z+Return a new view of the dictionary's keys.)r   rS   r   r   r2   r%   r%   r&   r   "     z
_Base.keysc                 C   r   )zAReturn a new view of the dictionary's items *(key, value) pairs).)r[   rS   r   r   r2   r%   r%   r&   items&  r   z_Base.itemsc                 C   r   )z-Return a new view of the dictionary's values.)r   rS   r   r   r2   r%   r%   r&   values*  r   z_Base.valuesr   c                 C   s   t |tstS t |tr;| jj}|jj}t|t|krdS t||D ]\\}}}\}}}||ks5||kr8 dS q#dS t| jjt|krGdS |  D ]\}	}
|	|	t
}|
|kr\ dS qKdS r   )r^   r	   r   r   rS   r-   rX   zipr   r   r*   )r3   r   lftrhti1k2v1i2v2rf   r6   nvr%   r%   r&   __eq__.  s(   

z_Base.__eq__c                 C   r   r   )r^   r#   r   rS   r-   r   r%   r%   r&   rg   B  r   z_Base.__contains__c                 C   s.   d dd | jjD }d| jj d| dS )Nrr   c                 s   s&    | ]\}}}d | d|V  qdS )rp   rq   Nr%   r   r%   r%   r&   	<genexpr>M  s   $ z!_Base.__repr__.<locals>.<genexpr>rs   rt   ru   )rx   rS   r-   ry   r   )r3   r|   r%   r%   r&   r}   K  s   z_Base.__repr__r0   )&r   r   r    r,   r'   r$   r   r   r   r#   r   r   r   r`   r   r(   r   r*   r)   r   r   r   r   rI   rB   rY   r   r   r   r   r   r   r9   r   rg   r   r   r}   r%   r%   r%   r&   r     s\   
 $

 


 *	r   c                   @   s  e Zd ZdZd9dee defddZejj	dkrde
fd	d
Zdeee eeeeef   f fddZdededdfddZdefddZeZd9dee deddfddZdee deeef dedeeeeeef  gdf ddf
ddZdeeeeef  ddfddZd:ddZdededdfddZdeddfd d!Ze	d9d"d#ded$ddee df fd%d&Z!eded$edefd'd&Z!d9ded$eedf deedf fd(d&Z!ededefd)d*Z"eded$e deee f fd+d*Z"e#fded$ee e$f deee f fd,d*Z"e%se"Z&ededee fd-d.Z'eded$e deee e f fd/d.Z'e#fded$ee e$f deee e f fd0d.Z'deeef fd1d2Z(d9dee deddfd3d4Z)deeeeef  ddfd5d6Z*dededdfd7d8Z+dS );	MultiDictz/Dictionary with the support for duplicate keys.Nr~   kwargsc                K   s"   t  | _| ||| jj| j d S r0   )r,   rS   _extendry   r   _extend_itemsr3   r~   r   r%   r%   r&   r4   T  s   zMultiDict.__init__r7   r/   c                 C   r8   r0   )r9   r:   r;   r<   rS   r2   r%   r%   r&   r:   [  r=   zMultiDict.__sizeof__c                 C   s   | j t|  ffS r0   )ry   r`   r   r2   r%   r%   r&   
__reduce__^     zMultiDict.__reduce__rb   rc   c                 C   s,   |  |}| jj|||f | j  d S r0   )r   rS   r-   rw   r1   )r3   rb   rc   r   r%   r%   r&   r   a  s   
zMultiDict.addc                 C   s   | j }||  S zReturn a copy of itself.)ry   r   )r3   clsr%   r%   r&   copyf  s   zMultiDict.copyc                K      |  ||d| j dS )zhExtend current MultiDict with more values.

        This method must be used instead of update.
        extendN)r   r   r   r%   r%   r&   r   m  s   zMultiDict.extendrA   methodc           
         sL   rt  ttfr<j jurfdd jjD }n
 jj}|r%| }|r;| D ]\}}|	|||f q+nUt
 drSttt    fdd  D  |rbt   t|  g }t D ](\}}	t|	dkstd| dt|	 d|	|	d	 |	d	 |	d
 f qh|| d S |fdd| D  d S )Nc                    s"   g | ]\}}}  |||fqS r%   r   )r   _rf   r6   r2   r%   r&   r   ~  s   " z%MultiDict._extend.<locals>.<listcomp>r   c                    s   g | ]}| | fqS r%   r%   )r   rf   )r~   r%   r&   r     s    r]   z#multidict update sequence element #zhas length z; 2 is requiredr   r   c                    s    g | ]\}}  |||fqS r%   r   )r   rb   rc   r2   r%   r&   r     s     )r^   r   MultiDictProxyr   rS   r-   r   r   rw   r   hasattrr   r   r'   r   r`   r   	enumeraterX   
ValueError)
r3   r~   r   rA   r   r   rb   rc   posr\   r%   )r~   r3   r&   r   t  s8   
$zMultiDict._extendr   c                 C   s2   |D ]\}}}| j j|||f q| j   d S r0   )rS   r-   rw   r1   )r3   r   r   rb   rc   r%   r%   r&   r     s   zMultiDict._extend_itemsc                 C   s   | j j  | j   dS )z Remove all items from MultiDict.N)rS   r-   clearr1   r2   r%   r%   r&   r     s   zMultiDict.clearc                 C   s   |  || d S r0   )_replace)r3   rb   rc   r%   r%   r&   __setitem__  s   zMultiDict.__setitem__c                 C   sd   |  |}| jj}d}tt|d ddD ]}|| d |kr$||= d}q|s+t|| j  d S )NFr   r   T)r   rS   r-   rangerX   r   r1   )r3   rb   r   r   foundre   r%   r%   r&   __delitem__  s   
zMultiDict.__delitem__r3   zMultiDict[Union[_T, None]]r   c                 C   r   r0   r%   r   r%   r%   r&   
setdefault  s   zMultiDict.setdefaultc                 C   r   r0   r%   r   r%   r%   r&   r     rJ   c                 C   s>   |  |}| jjD ]\}}}||kr|  S q	| || |S )zAReturn value for key, set value to default if key is not present.)r   rS   r-   r   r   r%   r%   r&   r     s   
c                 C   r   r0   r%   r   r%   r%   r&   popone  rJ   zMultiDict.poponec                 C   r   r0   r%   r   r%   r%   r&   r     rJ   c                 C   st   |  |}tt| jjD ]"}| jj| d |kr/| jj| d }| jj|= | j  |  S q|tu r8t||S )zRemove specified key and return the corresponding value.

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

        r   r]   )r   r   rX   rS   r-   r1   r*   r   )r3   rb   r   r   re   rc   r%   r%   r&   r     s   
	

c                 C   r   r0   r%   r   r%   r%   r&   popall  rJ   zMultiDict.popallc                 C   r   r0   r%   r   r%   r%   r&   r     rJ   c                 C   s   d}|  |}g }tt| jjd ddD ]!}| jj| }|d |kr6||d  | jj|= | j  d}q|sC|tu rAt||S |	  |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   r]   T)
r   r   rX   rS   r-   rw   r1   r*   r   reverse)r3   rb   r   r   r   r   re   r\   r%   r%   r&   r     s"   



c                 C   s:   | j jr| j j \}}}| j   | ||fS td)z1Remove and return an arbitrary (key, value) pair.zempty multidict)rS   r-   popr1   r   r   )r3   re   rf   r6   r%   r%   r&   popitem  s
   
zMultiDict.popitemc                K   r   )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 ]F\}}}| |d}t|t| jjD ]}| jj| }|d |kr;|d ||< |||f| jj|<  nq| jj|||f t| jj||< qd}|t| jjk r| jj| }|d }| |}	|	d u rq|d7 }qQ||	kr{| jj|= n|d7 }|t| jjk sY| j  d S r5   )r   r   rX   rS   r-   rw   r1   )
r3   r   	used_keysr   rb   rc   startre   r\   r   r%   r%   r&   r     s8   
zMultiDict._update_itemsc                 C   s   |  |}| jj}tt|D ]}|| }|d |kr+|||f||< |}| j   nq| jj|||f | j  d S |d }|t|k ra|| }|d |krU||= n|d7 }|t|k sGd S d S r5   )r   rS   r-   r   rX   r1   rw   )r3   rb   rc   r   r   re   r\   r   r%   r%   r&   r   0  s(   


zMultiDict._replacer0   r>   ),r   r   r    r!   r   r'   r4   r;   r@   rA   rB   r:   r_   r   r   r`   r#   r   r   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%   r%   r%   r&   r   Q  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   L  s    r   c                   @   sJ   e Zd ZdZdeee df fddZdefddZ	dee fd	d
Z
dS )r   z'Read-only proxy for MultiDict instance.r~   zMultiDictProxy[_V]c                 C   ,   t |ttfstdt| |j| _d S )Nz8ctor requires MultiDict or MultiDictProxy instance, not )r^   r   r   ra   r   rS   r   r%   r%   r&   r4   S     zMultiDictProxy.__init__r/   c                 C   s   t d| jj d)Nzcan't pickle z objects)ra   ry   r   r2   r%   r%   r&   r   \  r   zMultiDictProxy.__reduce__c                 C   r   r   )r   r   r2   r%   r%   r&   r   _     zMultiDictProxy.copyN)r   r   r    r!   r   r   r'   r4   r   r   r   r%   r%   r%   r&   r   P  s
    	r   c                   @   s@   e Zd ZdZdeee ee f fddZde	e fddZ
dS )	CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.r~   c                 C   r   )Nz<ctor requires CIMultiDict or CIMultiDictProxy instance, not )r^   r   r   ra   r   rS   r   r%   r%   r&   r4   g  r   zCIMultiDictProxy.__init__r/   c                 C   r   r   )r   r   r2   r%   r%   r&   r   p  r   zCIMultiDictProxy.copyN)r   r   r    r!   r   r   r'   r   r4   r   r   r%   r%   r%   r&   r   d  s    	r   mdr/   c                 C   s   t | ts	td| jjS )Nz&Parameter should be multidict or proxy)r^   r   ra   rS   r.   )r   r%   r%   r&   
getversionu  s   
r  )8enumr   r;   abcr   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*   r.   r,   rC   rO   r[   r   r   r   r   r   r   r   r   r   r9   rB   r  r%   r%   r%   r&   <module>   sD    $,	
 0 r |&