o
    2˜Žjœ  ã                   @   sX  d dl Z 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 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 ddlmZmZmZmZ ejdkr\d 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/de0d e0fd!d"„Z1eG d#d$„ d$ee# ƒƒZ2eG d%d&„ d&ee# ƒƒZ3G d'd(„ d(e.ee# ƒZ4G d)d*„ d*e/e4e# ƒZ5G d+d,„ d,e.ee# ƒZ6G d-d.„ d.e/e6e# ƒZ7d/ee4e8 e6e8 f d e0fd0d1„Z9dS )2é    N)Úarray)Ú	ItemsViewÚIterableÚIteratorÚKeysViewÚMappingÚ
ValuesView)Ú	dataclass)
ÚTYPE_CHECKINGÚAnyÚClassVarÚ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__Ú__is_istr__r   r   ÚstrÚ__annotations__© r%   r%   úT/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/multidict/_multidict_py.pyr   $   s   
 r   Ú_VÚ_TÚ	_SENTINELÚsentinelÚQc                   @   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 ©Nr-   )Úselfr0   r1   r%   r%   r&   Ú__init__7   ó   
z_Iter.__init__Úreturnc                 C   s   | S r2   r%   ©r3   r%   r%   r&   Ú__iter__;   ó   z_Iter.__iter__c                 C   ó
   t | jƒS r2   )Únextr/   r7   r%   r%   r&   Ú__next__>   ó   
z_Iter.__next__c                 C   ó   | j S r2   )r.   r7   r%   r%   r&   Ú__length_hint__A   ó   z_Iter.__length_hint__N)r   r   r    Ú	__slots__Úintr   r(   r4   r   r8   r<   r?   r%   r%   r%   r&   r,   4   s    r,   c                   @   s(   e Zd Z		d	dd„Zdefdd„ZdS )
Ú	_ViewBaseÚmdúMultiDict[_V]c                 C   s
   || _ d S r2   ©Ú_md©r3   rD   r%   r%   r&   r4   F   s   
z_ViewBase.__init__r6   c                 C   r:   r2   ©ÚlenrG   r7   r%   r%   r&   Ú__len__L   r=   z_ViewBase.__len__N)rD   rE   )r   r   r    r4   rB   rK   r%   r%   r%   r&   rC   E   s
    
þrC   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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Úitemr6   c           	      C   sŒ   t |ttfƒrt|ƒdkrdS |\}}z| j |¡}W n
 ty%   Y dS w t|ƒ}| jj 	|¡D ]\}}}|j
|krC||jkrC dS q1dS )Né   FT)Ú
isinstanceÚtupleÚlistrJ   rG   Ú	_identityÚ	TypeErrorÚhashÚ_keysÚ	iter_hashÚidentityÚvalue)	r3   rM   ÚkeyrX   rW   Úhash_ÚslotÚidxÚer%   r%   r&   Ú__contains__Q   s   ÿ€z_ItemsView.__contains__c                 C   ó   t t| ƒ|  | jj¡ƒS r2   ©r,   rJ   r/   rG   Ú_versionr7   r%   r%   r&   r8   _   ó   z_ItemsView.__iter__Úversionc                 c   sB   � | j j ¡ D ]}|| j jkrtdƒ‚| j  |j¡|jfV  qd S ©Nz#Dictionary changed during iteration)rG   rU   Úiter_entriesra   ÚRuntimeErrorÚ_keyrY   rX   ©r3   rc   r]   r%   r%   r&   r/   b   s   €ýz_ItemsView._iterc                 C   sP   g }| j j ¡ D ]}| d|j› d|j›�¡ qd |¡}d| jj› d|› d�S )Nú'ú': ú, ú<ú(ú)>)	rG   rU   re   ÚappendrY   rX   ÚjoinÚ	__class__r   ©r3   Úlstr]   Úbodyr%   r%   r&   Ú__repr__h   s
   
z_ItemsView.__repr__Úargc                 C   s^   t |tƒsd S t|ƒdkrd S z| j |d ¡}t|ƒ||d |d fW S  ty.   Y d S w )NrN   r   r   )rO   rP   rJ   rG   rR   rT   rS   )r3   rv   rW   r%   r%   r&   Ú_parse_itemp   s   
ÿz_ItemsView._parse_itemÚitc                 C   s>   t ƒ }|D ]}|  |¡}|d u rq| |d |d f¡ q|S )Nr   r   )Úsetrw   Úadd)r3   rx   Útmprv   rM   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 ]\}
}}d|_|j	|krK|j
|	krK| |j|j
f¡ q0| jj |¡ q|S )Néÿÿÿÿ)ry   ÚiterrS   ÚNotImplementedrw   rG   rU   rV   rT   rW   rX   rz   rY   Úrestore_hash©r3   r}   Úretrx   rv   rM   rZ   rW   rY   rX   r[   r\   r]   r%   r%   r&   Ú__and__‡   s$   ÿ
€z_ItemsView.__and__c                 C   s”   t ƒ }zt|ƒ}W n ty   t Y S w |D ]0}|  |¡}|d u r#q|\}}}}	| jj |¡D ]\}
}}|j|krF|j	|	krF| 
|¡  nq0q|S r2   )ry   r   rS   r€   rw   rG   rU   rV   rW   rX   rz   r‚   r%   r%   r&   Ú__rand__™   s"   ÿ

€z_ItemsView.__rand__c                 C   s    t | ƒ}zt|ƒ}W n ty   t Y S w |D ]5}|  |¡}|d u r)| |¡ q|\}}}}	| jj |¡D ]\}
}}|j	|krG|j
|	krG nq6| |¡ q|S r2   ©ry   r   rS   r€   rw   rz   rG   rU   rV   rW   rX   r‚   r%   r%   r&   Ú__or__ª   s&   ÿ

€
€z_ItemsView.__or__c                 C   sf   zt |ƒ}W n ty   t Y S w |  |¡}| jj ¡ D ]}|j|jf|vr0| 	|j
|jf¡ q|S r2   )ry   rS   r€   r|   rG   rU   re   rW   rX   rz   rY   )r3   r}   rƒ   r{   r]   r%   r%   r&   Ú__ror__½   s   ÿ
€z_ItemsView.__ror__c                 C   sl   t ƒ }zt|ƒ}W n ty   t Y S w |  |¡}| jj ¡ D ]}|j|j	f|vr3| 
|j|j	f¡ q |S r2   )ry   r   rS   r€   r|   rG   rU   re   rW   rX   rz   rY   )r3   r}   rƒ   rx   r{   r]   r%   r%   r&   Ú__sub__É   s   ÿ
€z_ItemsView.__sub__c                 C   sž   t ƒ }zt|ƒ}W n ty   t Y S w |D ]5}|  |¡}|d u r(| |¡ q|\}}}}	| jj |¡D ]\}
}}|j	|krF|j
|	krF nq5| |¡ q|S r2   r†   r‚   r%   r%   r&   Ú__rsub__×   s&   ÿ

€
€z_ItemsView.__rsub__c                 C   ó<   zt |ƒ}W n ty   t Y S w | | }|||  O }|S r2   ©ry   rS   r€   ©r3   r}   Úrgtrƒ   r%   r%   r&   Ú__xor__ë   ó   ÿz_ItemsView.__xor__c                 C   sd   |D ]-}|   |¡}|d u rq|\}}}}| jj |¡D ]\}}	}
|
j|kr.|
j|kr.  dS qqdS ©NFT)rw   rG   rU   rV   rW   rX   )r3   r}   rv   rM   rZ   rW   rY   rX   r[   r\   r]   r%   r%   r&   Ú
isdisjointö   s   
€þz_ItemsView.isdisjointN)"r   r   r    ÚobjectÚboolr^   r,   rP   r#   r'   r8   rB   r   r/   ÚreprlibÚrecursive_reprru   r   r(   r   rw   r   ry   r|   r   r„   r…   r‡   rˆ   r‰   rŠ   r�   Ú__rxor__r’   r%   r%   r%   r&   rL   P   s*    ÿ
þ""
****	"rL   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 )Ú_ValuesViewrX   r6   c                 C   s&   | j j ¡ D ]
}|j|kr dS qdS )NTF)rG   rU   re   rX   )r3   rX   r]   r%   r%   r&   r^     s
   
ÿz_ValuesView.__contains__c                 C   r_   r2   r`   r7   r%   r%   r&   r8   
  rb   z_ValuesView.__iter__rc   c                 c   s4   � | j j ¡ D ]}|| j jkrtdƒ‚|jV  qd S rd   )rG   rU   re   ra   rf   rX   rh   r%   r%   r&   r/     s   €
ýz_ValuesView._iterc                 C   sF   g }| j j ¡ D ]
}| t|jƒ¡ qd |¡}d| jj› d|› d�S )Nrk   rl   rm   rn   )	rG   rU   re   ro   ÚreprrX   rp   rq   r   rr   r%   r%   r&   ru     s
   
z_ValuesView.__repr__N)r   r   r    r“   r”   r^   r,   r'   r8   rB   r   r/   r•   r–   r#   ru   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 )Ú	_KeysViewrY   r6   c                 C   sP   t |tƒsdS | j |¡}t|ƒ}| jj |¡D ]\}}}|j|kr% dS qdS r‘   )rO   r#   rG   rR   rT   rU   rV   rW   ©r3   rY   rW   rZ   r[   r\   r]   r%   r%   r&   r^     s   

ÿz_KeysView.__contains__c                 C   r_   r2   r`   r7   r%   r%   r&   r8   '  rb   z_KeysView.__iter__rc   c                 c   s<   � | j j ¡ D ]}|| j jkrtdƒ‚| j  |j¡V  qd S rd   )rG   rU   re   ra   rf   rg   rY   rh   r%   r%   r&   r/   *  s   €ýz_KeysView._iterc                 C   sJ   g }| j j ¡ D ]}| d|j› d�¡ qd |¡}d| jj› d|› d�S )Nri   rk   rl   rm   rn   )rG   rU   re   ro   rY   rp   rq   r   rr   r%   r%   r&   ru   0  s
   
z_KeysView.__repr__r}   c           
      C   sŒ   t ƒ }zt|ƒ}W n ty   t Y S w |D ],}t|tƒsq| j |¡}t|ƒ}| jj	 
|¡D ]\}}}	|	j|krB| |	j¡  nq0q|S r2   )ry   r   rS   r€   rO   r#   rG   rR   rT   rU   rV   rW   rz   rY   ©
r3   r}   rƒ   rx   rY   rW   rZ   r[   r\   r]   r%   r%   r&   r„   7  s$   ÿ

þ€z_KeysView.__and__c                 C   sb   t ƒ }zt|ƒ}W n ty   t Y S w |D ]}t|tƒsq|| jv r)| |¡ qtt t	 |ƒS r2   )
ry   r   rS   r€   rO   r#   rG   rz   r   r(   ©r3   r}   rƒ   rx   rY   r%   r%   r&   r…   H  s   ÿ


€z_KeysView.__rand__c                 C   sd   t | ƒ}zt|ƒ}W n ty   t Y S w |D ]}t|tƒs%| |¡ q|| jvr/| |¡ q|S r2   )ry   r   rS   r€   rO   r#   rz   rG   r�   r%   r%   r&   r‡   U  s   ÿ



€z_KeysView.__or__c                 C   s‚   zt |ƒ}W n ty   t Y S w t ƒ }|D ]}t|tƒsq| j |¡}| |¡ q| jj 	¡ D ]}|j
|vr>| |j¡ q1|S r2   )ry   rS   r€   rO   r#   rG   rR   rz   rU   re   rW   rY   )r3   r}   rƒ   r{   rY   rW   r]   r%   r%   r&   rˆ   c  s    ÿ

€z_KeysView.__ror__c           
      C   sŽ   t | ƒ}zt|ƒ}W n ty   t Y S w |D ],}t|tƒs q| j |¡}t|ƒ}| jj	 
|¡D ]\}}}	|	j|krC| |	j¡  nq1q|S r2   )ry   r   rS   r€   rO   r#   rG   rR   rT   rU   rV   rW   ÚdiscardrY   rœ   r%   r%   r&   r‰   u  s$   ÿ

þ€z_KeysView.__sub__c                 C   sR   zt |ƒ}W n ty   t Y S w |D ]}t|tƒsq|| jv r&| |¡ q|S r2   )ry   rS   r€   rO   r#   rG   rž   )r3   r}   rƒ   rY   r%   r%   r&   rŠ   †  s   ÿ


€z_KeysView.__rsub__c                 C   r‹   r2   rŒ   r�   r%   r%   r&   r�   ’  r�   z_KeysView.__xor__c                 C   s*   |D ]}t |tƒs
q|| jv r dS qdS r‘   )rO   r#   rG   )r3   r}   rY   r%   r%   r&   r’   �  s   

ÿz_KeysView.isdisjointN)r   r   r    r“   r”   r^   r,   r#   r8   rB   r   r/   ru   r   ry   r„   r(   r…   r   r‡   rˆ   r‰   rŠ   r�   r—   r’   r%   r%   r%   r&   rš     s    
"""	rš   c                   @   óB   e Zd ZU dZee ed< dedefdd„Zdedefdd„Z	d	S )
Ú_CSMixinFÚ_cirY   r6   c                 C   s   |S r2   r%   ©r3   rY   r%   r%   r&   rg   ©  r9   z_CSMixin._keyc                 C   s   t |tƒr|S tdƒ‚©Nz8MultiDict keys should be either str or subclasses of str)rO   r#   rS   r¢   r%   r%   r&   rR   ¬  s   
z_CSMixin._identityN©
r   r   r    r¡   r   r”   r$   r#   rg   rR   r%   r%   r%   r&   r    ¦  s   
 r    c                   @   rŸ   )
Ú_CIMixinTr¡   rY   r6   c                 C   s   t |ƒtu r|S t|ƒS r2   )Útyper   r¢   r%   r%   r&   rg   ¶  s   z_CIMixin._keyc                 C   sD   t |tƒr|j}|d u r| ¡ }||_|S t |tƒr| ¡ S tdƒ‚r£   )rO   r   r   Úlowerr#   rS   )r3   rY   rƒ   r%   r%   r&   rR   ¼  s   

z_CIMixin._identityNr¤   r%   r%   r%   r&   r¥   ³  s   
 r¥   Únr6   c                 C   s   | d d d dB   ¡ S )Nr   r   rN   é   )Ú
bit_length)r¨   r%   r%   r&   Úestimate_log2_keysizeÉ  s   r«   c                   @   s.   e Zd ZU eed< eed< eed< eed< dS )Ú_EntryrT   rW   rY   rX   N)r   r   r    rB   r$   r#   r'   r%   r%   r%   r&   r¬   Î  s
   
 r¬   c                	   @   sz  e Zd ZU dZee ed< dZee ed< dd„ eddƒD ƒZ	ee
eef  ed< eed	< eed
< eed< eeee   ed< ejdefdd„ƒZejdefdd„ƒZejjdkr`defdd„Zed	edeeee   defdd„ƒZd*dd„Zdeddfdd„Zdedefdd „Zdedee eeee f  fd!d"„Z!ded#eddfd$d%„Z"deee  fd&d'„Z#deddfd(d)„Z$dS )+Ú_HtKeysr   ÚLOG_MINSIZEé   ÚMINSIZEc              	   C   s6   i | ]}|t |d k rdnddd„ td|> ƒD ƒƒ“qS )r¯   ÚbÚhc                 s   ó   � | ]}d V  qdS ©r~   Nr%   ©Ú.0Úir%   r%   r&   Ú	<genexpr>Ü  ó   € z_HtKeys.<dictcomp>.<genexpr>r   )r   Úrange)r¶   Ú	log2_sizer%   r%   r&   Ú
<dictcomp>Ú  s    ý"ÿÿz_HtKeys.<dictcomp>é
   ÚPREALLOCATED_INDICESr»   ÚusableÚindicesÚentriesr6   c                 C   s
   d| j > S ©Nr   )r»   r7   r%   r%   r&   Únslotsç  ó   
z_HtKeys.nslotsc                 C   s
   | j d S rÂ   )rÃ   r7   r%   r%   r&   Úmaskë  rÄ   z_HtKeys.maskÚpypyc                 C   s"   t  | ¡t | j¡ t | j¡ S r2   )r“   Ú
__sizeof__ÚsysÚ	getsizeofrÀ   rÁ   r7   r%   r%   r&   rÇ   ñ  s   
ÿ
þÿz_HtKeys.__sizeof__c                 C   sœ   d|> }|d> d }|dk r| j |  ¡ }n.|dk r'tddd„ t|ƒD ƒƒ}n|dk r8td	d
d„ t|ƒD ƒƒ}ntddd„ t|ƒD ƒƒ}| ||||d�}|S )Nr   r   r½   é   r²   c                 s   r³   r´   r%   rµ   r%   r%   r&   r¸   ÿ  r¹   z_HtKeys.new.<locals>.<genexpr>é    Úlc                 s   r³   r´   r%   rµ   r%   r%   r&   r¸     r¹   Úqc                 s   r³   r´   r%   rµ   r%   r%   r&   r¸     r¹   ©r»   r¿   rÀ   rÁ   )r¾   Ú__copy__r   rº   )Úclsr»   rÁ   r0   r¿   rÀ   rƒ   r%   r%   r&   Únewø  s    üz_HtKeys.newú_HtKeys[_V]c                 C   s*   dd„ | j D ƒ}t| j| j| j ¡ |d�S )Nc                 S   s.   g | ]}|d urt |j|j|j|jƒnd ‘qS r2   )r¬   rT   rW   rY   rX   ©r¶   r]   r%   r%   r&   Ú
<listcomp>  s     ÿÿz!_HtKeys.clone.<locals>.<listcomp>rÎ   )rÁ   r­   r»   r¿   rÀ   rÏ   )r3   rÁ   r%   r%   r&   Úclone  s   þüz_HtKeys.cloneÚupdateNc           	      C   s¨   | j }| j}t| jƒD ]F\}}|d usJ ‚|j}|r$|dkr#t|jƒ}n|dks*J ‚||@ }|tj@ }|| dkrM|dL }||d | d @ }|| dks9|||< qd S ©Nr~   é   r   )rÅ   rÀ   Ú	enumeraterÁ   rT   rW   rÈ   Úmaxsize)	r3   rÖ   rÅ   rÀ   r\   r]   rZ   r·   Úperturbr%   r%   r&   Úbuild_indices  s$   
€
þ
óz_HtKeys.build_indicesrZ   c                 C   s^   | j }| j}||@ }|tj@ }|| }|dkr-|dL }|d | d |@ }|| }|dks|S r×   ©rÅ   rÀ   rÈ   rÚ   )r3   rZ   rÅ   rÀ   r·   rÛ   Úixr%   r%   r&   Úfind_empty_slot+  s   
ýz_HtKeys.find_empty_slotc           	      c   s�   � | j }| j}| j}||@ }|tj@ }|| }|dkrF|dkr.|| }|j|kr.|||fV  |dL }|d | d |@ }|| }|dksd S d S ©Nr~   éþÿÿÿrØ   r   ©rÅ   rÀ   rÁ   rÈ   rÚ   rT   )	r3   rZ   rÅ   rÀ   rÁ   r·   rÛ   rÞ   r]   r%   r%   r&   rV   7  s    €

ùz_HtKeys.iter_hashr\   c                 C   sf   | j }| j}||@ }|tj@ }|| }||kr-|dL }|d | d |@ }|| }||ksd||< d S )NrØ   r   rá   rÝ   )r3   rZ   r\   rÅ   rÀ   r·   rÛ   rÞ   r%   r%   r&   Údel_idxG  s   
ýz_HtKeys.del_idxc                 C   s   t d | jƒS r2   )ÚfilterrÁ   r7   r%   r%   r&   re   S  ó   z_HtKeys.iter_entriesc           	      C   sˆ   | j }| j}| j}||@ }|tj@ }|| }|dkrB|dkr*|| }|jdkr*||_|dL }|d | d |@ }|| }|dksd S d S rà   râ   )	r3   rZ   rÅ   rÀ   rÁ   r·   rÛ   rÞ   Úentryr%   r%   r&   r�   V  s   

ùz_HtKeys.restore_hash)r6   rÒ   )%r   r   r    r®   r   rB   r$   r°   rº   r¾   Údictr   rQ   r   r¬   r'   Ú	functoolsÚcached_propertyrÃ   rÅ   rÈ   ÚimplementationÚnamerÇ   Úclassmethodr   rÑ   rÕ   r”   rÜ   rß   r   rP   rV   rã   re   r�   r%   r%   r%   r&   r­   Ö  s2   
 ü$
$r­   c                   @   sh  e Zd ZdZdZdpdee defdd„Zdqd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dpd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$e%j&j'd.k�rd
efd/d0„Z(d
e)e*e+ e)ee)e
ef   f fd1d2„Z,de
d3ed
dfd4d5„Z-d
e+fd6d7„Z.e.Z/dpdee ded
dfd8d9„Z0dee de1e
ef d
eeee2e f  fd:d;„Z3d<e4e2e  d
dfd=d>„Z5drd?d@„Z6de
d3ed
dfdAdB„Z7de
d
dfdCdD„Z8e		dpdEdFde
ddd
eedf fdGdH„ƒZ9e	de
ded
efdIdH„ƒZ9dpde
deedf d
eedf fdJdH„Z9e	de
d
efdKdL„ƒZ:e	de
ded
eeef fdMdL„ƒZ:efde
deeef d
eeef fdNdL„Z:e;�sùe:Z<e	de
d
ee fdOdP„ƒZ=e	de
ded
eee ef fdQdP„ƒZ=efde
deeef d
eee ef fdRdP„Z=d
e)e
ef fdSdT„Z>dpdee ded
dfdUdV„Z?d<ee2e  d
dfdWdX„Z@drdYdZ„ZAdpdee ded
dfd[d\„ZBd<ee2e  d
dfd]d^„ZCdrd_d`„ZDdaedbed
dfdcdd„ZEdee2e d
dfdfdg„ZFdee2e d
dfdhdi„ZGdjedked
dfdldm„ZHdee2e d
dfdndo„ZIdS )sÚ	MultiDictz/Dictionary with the support for duplicate keys.)rU   Ú_usedra   Nrv   Úkwargsc                K   sÂ   d| _ t}|d  d7  < |d | _|s7d }t|tƒr|j}nt|tƒr&|}|d ur7|j| ju r7|  |¡ d S |  ||¡}t	t
tt|ƒƒƒ}|dkrLd}t |g ¡| _|  t
ttt  |ƒ¡ d S )Nr   r   é   )rî   ra   rO   ÚMultiDictProxyrG   rí   r¡   Ú_from_mdÚ_parse_argsr«   r   rB   r;   r­   rÑ   rU   Ú_extend_itemsr   r¬   r'   )r3   rv   rï   ÚvrD   rx   r»   r%   r%   r&   r4   l  s&   



zMultiDict.__init__rD   rE   r6   c                 C   s   |j  ¡ | _ |j| _d S r2   )rU   rÕ   rî   rH   r%   r%   r&   rò   ƒ  s   zMultiDict._from_mdrY   c                 C   ó   d S r2   r%   r¢   r%   r%   r&   Úgetall‰  r9   zMultiDict.getallÚdefaultc                 C   rö   r2   r%   ©r3   rY   rø   r%   r%   r&   r÷   ‹  r9   c                 C   s˜   |   |¡}t|ƒ}g }g }| j |¡D ]\}}}	|	j|kr+| |	j¡ d|	_| |¡ q|r>| jj}
|D ]}||
| _q4|S |sF|turF|S t	d| ƒ‚)ú-Return a list of all values matching the key.r~   úKey not found: %r)
rR   rT   rU   rV   rW   ro   rX   rÁ   r*   ÚKeyError)r3   rY   rø   rW   rZ   ÚresÚrestorer[   r\   r]   rÁ   r%   r%   r&   r÷   �  s$   


€c                 C   rö   r2   r%   r¢   r%   r%   r&   Úgetone¤  r9   zMultiDict.getonec                 C   rö   r2   r%   rù   r%   r%   r&   rÿ   ¦  r9   c                 C   sV   |   |¡}t|ƒ}| j |¡D ]\}}}|j|kr|j  S q|tur%|S td| ƒ‚)úwGet first value matching the key.

        Raises KeyError if the key is not found and no default is provided.
        rû   )rR   rT   rU   rV   rW   rX   r*   rü   ©r3   rY   rø   rW   rZ   r[   r\   r]   r%   r%   r&   rÿ   ¨  s   


ÿc                 C   ó
   |   |¡S r2   ©rÿ   r¢   r%   r%   r&   Ú__getitem__º  r=   zMultiDict.__getitem__c                C   rö   r2   r%   r¢   r%   r%   r&   Úget½  r9   zMultiDict.getc                C   rö   r2   r%   rù   r%   r%   r&   r  ¿  r9   c                 C   s   |   ||¡S ©z„Get 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   s   t |  ¡ ƒS r2   )r   Úkeysr7   r%   r%   r&   r8   È  rå   zMultiDict.__iter__c                 C   r>   r2   )rî   r7   r%   r%   r&   rK   Ë  r@   zMultiDict.__len__c                 C   ó   t | ƒS ©z+Return a new view of the dictionary's keys.)rš   r7   r%   r%   r&   r  Î  ó   zMultiDict.keysc                 C   r  ©zAReturn a new view of the dictionary's items *(key, value) pairs).)rL   r7   r%   r%   r&   ÚitemsÒ  r
  zMultiDict.itemsc                 C   r  ©z-Return a new view of the dictionary's values.)r˜   r7   r%   r%   r&   ÚvaluesÖ  r
  zMultiDict.valuesr}   c           	      C   sÈ   t |tƒstS t |tƒr| |jkS t |tƒrC| j}|j}| j|jkr$dS t| 	¡ | 	¡ ƒD ]\}}|j
|j
ks=|j|jkr@ dS q-dS | jt|ƒkrLdS |  ¡ D ]\}}| |t¡}||kra dS qPdS r‘   )rO   r   r€   rñ   rG   rí   rU   rî   Úzipre   rW   rX   rJ   r  r  r*   )	r3   r}   ÚlftÚrhtÚe1Úe2Úkrõ   Únvr%   r%   r&   Ú__eq__Ú  s,   



ÿÿzMultiDict.__eq__c                 C   sL   t |tƒsdS |  |¡}t|ƒ}| j |¡D ]\}}}|j|kr# dS qdS r‘   )rO   r#   rR   rT   rU   rV   rW   r›   r%   r%   r&   r^   ð  s   


ÿzMultiDict.__contains__c                 C   s0   d  dd„ | j ¡ D ƒ¡}d| jj› d|› d�S )Nrk   c                 s   s$   � | ]}d |j › d|j›�V  qdS ©ri   rj   N©rY   rX   rÓ   r%   r%   r&   r¸   ü  ó   €" z%MultiDict.__repr__.<locals>.<genexpr>rl   rm   rn   )rp   rU   re   rq   r   ©r3   rt   r%   r%   r&   ru   ú  s   zMultiDict.__repr__rÆ   c                 C   s   t  | ¡t | j¡ S r2   )r“   rÇ   rÈ   rÉ   rU   r7   r%   r%   r&   rÇ     s   zMultiDict.__sizeof__c                 C   s   | j t|  ¡ ƒffS r2   )rq   rQ   r  r7   r%   r%   r&   Ú
__reduce__  ó   zMultiDict.__reduce__rX   c                 C   s2   |   |¡}t|ƒ}|  t||||ƒ¡ |  ¡  d S r2   )rR   rT   Ú_add_with_hashr¬   Ú_incr_version)r3   rY   rX   rW   rZ   r%   r%   r&   rz     s   
zMultiDict.addc                 C   s   | j }|| ƒS ©zReturn a copy of itself.©rq   )r3   rÐ   r%   r%   r&   Úcopy  s   zMultiDict.copyc                K   sL   |   ||¡}| jttt|ƒƒ }|  t|ƒd¡ |  ttt	t
  |ƒ¡ dS )zhExtend current MultiDict with more values.

        This method must be used instead of update.
        FN)ró   rî   r   rB   r;   Ú_resizer«   rô   r   r¬   r'   )r3   rv   rï   rx   Únewsizer%   r%   r&   Úextend  s   zMultiDict.extendc           
      #   sö  � | j }ˆ rÝtˆ tƒrˆ j‰ tˆ tƒrmtˆ ƒt|ƒ V  | jˆ jur<ˆ j ¡ D ]}||j	ƒ}t
t|ƒ||j	|jƒV  q'nˆ j ¡ D ]}t
|j|j|j	|jƒV  qA|ri| ¡ D ]\}}||ƒ}t
t|ƒ|||ƒV  qVd S d S tˆ dƒr„ttt ˆ ƒ‰ ‡ fdd„ˆ  ¡ D ƒ‰ |r“tˆ ƒ‰ ˆ  t| ¡ ƒ¡ ztˆ ƒt|ƒ V  W n tyª   dV  Y nw tˆ ƒD ]+\}}	t|	ƒdksÆtd|› dt|	ƒ› d�ƒ‚||	d ƒ}t
t|ƒ||	d |	d	 ƒV  q¯d S t|ƒV  | ¡ D ]\}}||ƒ}t
t|ƒ|||ƒV  qæd S )
Nr  c                    s   g | ]}|ˆ | f‘qS r%   r%   )r¶   r  ©rv   r%   r&   rÔ   7  ó    z)MultiDict._parse_args.<locals>.<listcomp>r   rN   z#multidict update sequence element #zhas length z; 2 is requiredr   )rR   rO   rñ   rG   rí   rJ   r¡   rU   re   rY   r¬   rT   rX   rW   r  Úhasattrr   r   r'   r  rQ   r$  rS   rÙ   Ú
ValueError)
r3   rv   rï   Úidentity_funcr]   rW   rY   rX   ÚposrM   r%   r%  r&   ró     s\   €


þý

ÿÿÿù
	þzMultiDict._parse_argsr  c                 C   s    |D ]}|   |¡ q|  ¡  d S r2   )r  r  )r3   r  r]   r%   r%   r&   rô   M  s   zMultiDict._extend_itemsc                 C   s"   d| _ t tjg ¡| _|  ¡  dS )z Remove all items from MultiDict.r   N)rî   r­   rÑ   r®   rU   r  r7   r%   r%   r&   ÚclearR  s   zMultiDict.clearc           	      C   sž   |   |¡}t|ƒ}d}| j |¡D ]'\}}}|j|kr8|s-||_||_d|_d}|  ¡  q|jdkr8|  ||¡ q|sG|  	t
||||ƒ¡ d S | j |¡ d S )NFr~   T)rR   rT   rU   rV   rW   rY   rX   r  Ú_del_atr  r¬   r�   )	r3   rY   rX   rW   rZ   Úfoundr[   r\   r]   r%   r%   r&   Ú__setitem__Z  s"   



€zMultiDict.__setitem__c                 C   s`   d}|   |¡}t|ƒ}| j |¡D ]\}}}|j|kr#|  ||¡ d}q|s*t|ƒ‚|  ¡  d S r‘   )rR   rT   rU   rV   rW   r,  rü   r  )r3   rY   r-  rW   rZ   r[   r\   r]   r%   r%   r&   Ú__delitem__o  s   

€zMultiDict.__delitem__r3   zMultiDict[Union[_T, None]]c                 C   rö   r2   r%   rù   r%   r%   r&   Ú
setdefault|  s   zMultiDict.setdefaultc                 C   rö   r2   r%   rù   r%   r%   r&   r0  €  r9   c                 C   sN   |   |¡}t|ƒ}| j |¡D ]\}}}|j|kr|j  S q|  ||¡ |S )zAReturn value for key, set value to default if key is not present.)rR   rT   rU   rV   rW   rX   rz   r  r%   r%   r&   r0  ‚  s   


ÿc                 C   rö   r2   r%   r¢   r%   r%   r&   ÚpoponeŒ  r9   zMultiDict.poponec                 C   rö   r2   r%   rù   r%   r%   r&   r1  Ž  r9   c           	      C   sj   |   |¡}t|ƒ}| j |¡D ]\}}}|j|kr*|j}|  ||¡ |  ¡  |  S q|tu r3t	|ƒ‚|S )zžRemove specified key and return the corresponding value.

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

        )
rR   rT   rU   rV   rW   rX   r,  r  r*   rü   )	r3   rY   rø   rW   rZ   r[   r\   r]   rX   r%   r%   r&   r1  �  s   
	
üc                 C   rö   r2   r%   r¢   r%   r%   r&   Úpopallª  r9   zMultiDict.popallc                 C   rö   r2   r%   rù   r%   r%   r&   r2  ¬  r9   c           
      C   s|   d}|   |¡}t|ƒ}g }| j |¡D ]\}}}	|	j|kr/d}| |	j¡ |  ||¡ |  ¡  q|s<|t	u r:t
|ƒ‚|S |S )z¾Remove 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.

        FT)rR   rT   rU   rV   rW   ro   rX   r,  r  r*   rü   )
r3   rY   rø   r-  rW   rZ   rƒ   r[   r\   r]   r%   r%   r&   r2  ®  s    


€c                 C   sŽ   | j dkr	tdƒ‚t| jjƒd }| jj ¡ }|du r)|d8 }| jj ¡ }|du s|  |j¡|jf}| j 	|j
|¡ |  j d8  _ |  ¡  |S )z1Remove and return an arbitrary (key, value) pair.r   zempty multidictr   N)rî   rü   rJ   rU   rÁ   Úpoprg   rY   rX   rã   rT   r  )r3   r*  ræ   rƒ   r%   r%   r&   ÚpopitemË  s   
þzMultiDict.popitemc                K   ó~   |   ||¡}| jttt|ƒƒ }t|ƒ}|dkrd}|| jjkr&|  |d¡ z|  	tt
tt  |ƒ¡ W |  ¡  dS |  ¡  w )z1Update the dictionary, overwriting existing keys.rð   FN)ró   rî   r   rB   r;   r«   rU   r»   r"  Ú_update_itemsr   r¬   r'   Ú_post_update©r3   rv   rï   rx   r#  r»   r%   r%   r&   rÖ   Ý  ó   zMultiDict.updatec           	      C   sx   |D ]7}d}|j }|j}| j |¡D ]\}}}|j|kr1|s,d}|j|_|j|_d|_ q|  |¡ q|s9|  |¡ qd S )NFTr~   )rT   rW   rU   rV   rY   rX   Ú_del_at_for_updÚ_add_with_hash_for_upd)	r3   r  ræ   r-  rZ   rW   r[   r\   r]   r%   r%   r&   r6  í  s"   

€
€òzMultiDict._update_itemsc                 C   s�   | j }|j}|j}t|jƒD ]3}|| }|dkrA|| }|d us"J ‚|jd u r6d ||< d||< |  jd8  _|jdkrAt|jƒ|_q|  	¡  d S )Nr   rá   r   r~   )
rU   rÀ   rÁ   rº   rÃ   rY   rî   rT   rW   r  )r3   r  rÀ   rÁ   r[   r\   r  r%   r%   r&   r7  þ  s    

€zMultiDict._post_updatec                K   r5  )z4Merge into the dictionary, adding non-existing keys.rð   FN)ró   rî   r   rB   r;   r«   rU   r»   r"  Ú_merge_itemsr   r¬   r'   r7  r8  r%   r%   r&   Úmerge  r9  zMultiDict.mergec                 C   sJ   |D ] }|j }|j}| j |¡D ]\}}}|j|kr nq|  |¡ qd S r2   )rT   rW   rU   rV   r;  )r3   r  ræ   rZ   rW   r[   r\   r]   r%   r%   r&   r<     s   
ÿ
€ùzMultiDict._merge_itemsc                 C   s"   t }|d  d7  < |d | _ d S )Nr   r   )ra   )r3   rõ   r%   r%   r&   r  *  s   zMultiDict._incr_versionÚlog2_newsizerÖ   c                 C   s`   | j }| j}t|jƒ|kr|j}ndd„ |jD ƒ}t ||¡}| j|8  _| |¡ || _ d S )Nc                 S   s   g | ]}|d ur|‘qS r2   r%   rÓ   r%   r%   r&   rÔ   6  r&  z%MultiDict._resize.<locals>.<listcomp>)rU   rî   rJ   rÁ   r­   rÑ   r¿   rÜ   )r3   r>  rÖ   ÚoldkeysÚ
newentriesrÁ   Únewkeysr%   r%   r&   r"  /  s   

zMultiDict._resizeræ   c                 C   s‚   | j jdkr|  | jd tjd B  ¡ d¡ | j }| |j¡}t	|j
ƒ|j|< |j
 |¡ |  ¡  |  jd7  _| jd8  _d S )Nr   r   r   F©rU   r¿   r"  rî   r­   r°   rª   rß   rT   rJ   rÁ   rÀ   ro   r  ©r3   ræ   r  r[   r%   r%   r&   r  <  s    zMultiDict._add_with_hashc                 C   sˆ   | j jdkr|  | jd tjd B  ¡ d¡ | j }| |j¡}t	|j
ƒ|j|< d|_|j
 |¡ |  ¡  |  jd7  _| jd8  _d S )Nr   r   r   Tr~   rB  rC  r%   r%   r&   r;  G  s    z MultiDict._add_with_hash_for_updr[   r\   c                 C   s*   d | j j|< d| j j|< |  jd8  _d S )Nrá   r   )rU   rÁ   rÀ   rî   )r3   r[   r\   r%   r%   r&   r,  S  s   zMultiDict._del_atc                 C   s   d |_ d |_d S r2   r  )r3   ræ   r%   r%   r&   r:  X  r5   zMultiDict._del_at_for_updr2   )rD   rE   r6   N)r6   N)Jr   r   r    r!   rA   r   r'   r4   rò   r   r#   rQ   r÷   r(   r   r*   r)   rÿ   r  r  r   r8   rB   rK   r   r  r   r  r˜   r  r“   r”   r  r^   r•   r–   ru   rÈ   rê   rë   rÇ   rP   r¦   r   r  rz   r!  rÏ   r$  r   r¬   ró   r   rô   r+  r.  r/  r0  r1  r
   r3  r2  r4  rÖ   r6  r7  r=  r<  r  r"  r  r;  r,  r:  r%   r%   r%   r&   rí   g  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&   rD  ]  s    rD  c                
   @   s<  e Zd ZU dZdZee ed< deee df fdd„Z	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ee fd-d.„Z'dS )0rñ   z'Read-only proxy for MultiDict instance.rF   rG   rv   zMultiDictProxy[_V]c                 C   s@   t |ttfƒstdt|ƒ› �ƒ‚t |tƒr|j| _d S || _d S )Nz8ctor requires MultiDict or MultiDictProxy instance, not )rO   rí   rñ   rS   r¦   rG   ©r3   rv   r%   r%   r&   r4   h  s   ÿ

zMultiDictProxy.__init__r6   c                 C   s   t d| jj› d�ƒ‚)Nzcan't pickle z objects)rS   rq   r   r7   r%   r%   r&   r  r  r  zMultiDictProxy.__reduce__rY   c                 C   rö   r2   r%   r¢   r%   r%   r&   r÷   u  r9   zMultiDictProxy.getallrø   c                 C   rö   r2   r%   rù   r%   r%   r&   r÷   w  r9   c                 C   ó"   |t ur| j ||¡S | j |¡S )rú   )r*   rG   r÷   rù   r%   r%   r&   r÷   y  s   c                 C   rö   r2   r%   r¢   r%   r%   r&   rÿ   ‚  r9   zMultiDictProxy.getonec                 C   rö   r2   r%   rù   r%   r%   r&   rÿ   „  r9   c                 C   rF  )r   )r*   rG   rÿ   rù   r%   r%   r&   rÿ   †  s   c                 C   r  r2   r  r¢   r%   r%   r&   r  ”  r=   zMultiDictProxy.__getitem__Nc                C   rö   r2   r%   r¢   r%   r%   r&   r  —  r9   zMultiDictProxy.getc                C   rö   r2   r%   rù   r%   r%   r&   r  ™  r9   c                 C   s   | j  ||¡S r  )rG   rÿ   rù   r%   r%   r&   r  ›  s   c                 C   s   t | j ¡ ƒS r2   )r   rG   r  r7   r%   r%   r&   r8   ¢  s   zMultiDictProxy.__iter__c                 C   r:   r2   rI   r7   r%   r%   r&   rK   ¥  r=   zMultiDictProxy.__len__c                 C   ó
   | j  ¡ S r	  )rG   r  r7   r%   r%   r&   r  ¨  rÄ   zMultiDictProxy.keysc                 C   rG  r  )rG   r  r7   r%   r%   r&   r  ¬  rÄ   zMultiDictProxy.itemsc                 C   rG  r  )rG   r  r7   r%   r%   r&   r  °  rÄ   zMultiDictProxy.valuesr}   c                 C   s
   | j |kS r2   rF   )r3   r}   r%   r%   r&   r  ´  r=   zMultiDictProxy.__eq__c                 C   s
   || j v S r2   rF   r¢   r%   r%   r&   r^   ·  r=   zMultiDictProxy.__contains__c                 C   s.   d  dd„ |  ¡ D ƒ¡}d| jj› d|› d�S )Nrk   c                 s   s$   � | ]\}}d |› d|›�V  qdS r  r%   )r¶   r  rõ   r%   r%   r&   r¸   ¼  r  z*MultiDictProxy.__repr__.<locals>.<genexpr>rl   rm   rn   )rp   r  rq   r   r  r%   r%   r&   ru   º  s   zMultiDictProxy.__repr__c                 C   r:   r  )rí   rG   r7   r%   r%   r&   r!  ¿  rÄ   zMultiDictProxy.copyr2   )(r   r   r    r!   rA   rí   r'   r$   r   r4   r   r  r   r#   rQ   r÷   r(   r*   r)   rÿ   r  r  r   r8   rB   rK   r   r  r   r  r˜   r  r“   r”   r  r^   r•   r–   ru   r!  r%   r%   r%   r&   rñ   a  s\   
 
$ÿÿ
ÿ
þ	 ÿÿ
ÿ

þ *rñ   c                       sH   e Zd ZdZdeee ee f f‡ fdd„Zde	e fdd„Z
‡  ZS )ÚCIMultiDictProxyz)Read-only proxy for CIMultiDict instance.rv   c                    s0   t |ttfƒstdt|ƒ› �ƒ‚tƒ  |¡ d S )Nz<ctor requires CIMultiDict or CIMultiDictProxy instance, not )rO   rD  rH  rS   r¦   Úsuperr4   rE  r   r%   r&   r4   Ç  s   ÿÿzCIMultiDictProxy.__init__r6   c                 C   r:   r  )rD  rG   r7   r%   r%   r&   r!  Ð  rÄ   zCIMultiDictProxy.copy)r   r   r    r!   r   rí   r'   rñ   r4   rD  r!  Ú__classcell__r%   r%   r   r&   rH  Ä  s    "	rH  rD   c                 C   s.   t | tƒr| j} | jS t | tƒstdƒ‚| jS )Nz&Parameter should be multidict or proxy)rO   rñ   rG   rí   rS   ra   )rD   r%   r%   r&   Ú
getversionÕ  s   

þrK  ):Úenumrè   r•   rÈ   r   Úcollections.abcr   r   r   r   r   r   Údataclassesr	   Útypingr
   r   r   r   r   r   r   r   r   r   Ú_abcr   r   r   r   Úversion_infor   Útyping_extensionsr#   r   r'   r(   ÚEnumr)   r*   ra   r,   rC   rL   r˜   rš   r    r¥   rB   r«   r¬   r­   rí   rD  rñ   rH  r“   rK  r%   r%   r%   r&   Ú<module>   sR     0
 4     yc&