509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    çàÈ_o9  ã                   @   s  d dl Z d dlmZ d dlmZ ddlmZmZ eƒ ZG dd„ de	ƒZ
e
Zdd	„ Zed
d gƒaG dd„ dƒZG dd„ dƒZG dd„ deeƒZG dd„ deƒZG dd„ deeƒZG dd„ deƒZG dd„ dƒZG dd„ dƒZG dd„ deejƒZG dd„ deejƒZG dd „ d eejƒZdS )!é    N)Úarray)Úabcé   )ÚMultiMappingÚMutableMultiMappingc                   @   s   e Zd ZdZdZdS )ÚistrzCase insensitive str.TN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z__is_istr__© r   r   úJ/opt/alt/python38/lib64/python3.8/site-packages/multidict/_multidict_py.pyr   
   s   r   c                 C   s   t | tƒstdƒ‚| jjS )Nz&Parameter should be multidict or proxy)Ú
isinstanceÚ_BaseÚ	TypeErrorÚ_implÚ_version)Zmdr   r   r   Ú
getversion   s    
r   ÚQc                   @   s4   e Zd ZdZdd„ Zdd„ Zejjdkr0dd„ Z	d	S )
Ú_Impl)Ú_itemsr   c                 C   s   g | _ |  ¡  d S ©N)r   Úincr_version©Úselfr   r   r   Ú__init__    s    z_Impl.__init__c                 C   s"   t }|d  d7  < |d | _ d S ©Nr   r   )r   )r   Úvr   r   r   r   $   s    z_Impl.incr_versionÚpypyc                 C   s   t  | ¡t | j¡ S r   )ÚobjectÚ
__sizeof__ÚsysÚ	getsizeofr   r   r   r   r   r    ,   s    z_Impl.__sizeof__N)
r   r	   r
   Ú	__slots__r   r   r!   ÚimplementationÚnamer    r   r   r   r   r      s
   r   c                   @   s~   e Zd Zdd„ Zefdd„Zefdd„Zdd„ Zdd
d„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )r   c                 C   s   |S r   r   ©r   Úkeyr   r   r   Ú_title1   s    z_Base._titlec                    sH   |   |¡‰ ‡ fdd„| jjD ƒ}|r(|S |s8|tk	r8|S td| ƒ‚dS )z-Return a list of all values matching the key.c                    s   g | ]\}}}|ˆ kr|‘qS r   r   )Ú.0ÚiÚkr   ©Úidentityr   r   Ú
<listcomp>7   s      z _Base.getall.<locals>.<listcomp>úKey not found: %rN©r(   r   r   Ú_markerÚKeyError)r   r'   ÚdefaultÚresr   r,   r   Úgetall4   s    
z_Base.getallc                 C   sJ   |   |¡}| jjD ]\}}}||kr|  S q|tk	r:|S td| ƒ‚dS )z!Get first value matching the key.r/   Nr0   ©r   r'   r3   r-   r*   r+   r   r   r   r   Úgetone>   s    

z_Base.getonec                 C   s
   |   |¡S r   ©r7   r&   r   r   r   Ú__getitem__J   s    z_Base.__getitem__Nc                 C   s   |   ||¡S )zVGet first value matching the key.

        The method is alias for .getone().
        r8   )r   r'   r3   r   r   r   ÚgetM   s    z	_Base.getc                 C   s   t |  ¡ ƒS r   )ÚiterÚkeysr   r   r   r   Ú__iter__T   s    z_Base.__iter__c                 C   s   t | jjƒS r   ©Úlenr   r   r   r   r   r   Ú__len__W   s    z_Base.__len__c                 C   s
   t | jƒS )z+Return a new view of the dictionary's keys.)Ú	_KeysViewr   r   r   r   r   r<   Z   s    z
_Base.keysc                 C   s
   t | jƒS )zAReturn a new view of the dictionary's items *(key, value) pairs).)Ú
_ItemsViewr   r   r   r   r   Úitems^   s    z_Base.itemsc                 C   s
   t | jƒS )z-Return a new view of the dictionary's values.)Ú_ValuesViewr   r   r   r   r   Úvaluesb   s    z_Base.valuesc                 C   sÀ   t |tjƒstS t |tƒrx| jj}|jj}t|ƒt|ƒkr>dS t||ƒD ]*\\}}}\}}}||ksl||krH dS qHdS t| jjƒt|ƒkr�dS |  	¡ D ]"\}	}
| 
|	t¡}|
|kr˜ dS q˜dS )NFT)r   r   ÚMappingÚNotImplementedr   r   r   r?   ÚziprC   r:   r1   )r   ÚotherZlftZrhtZi1Zk2Zv1Zi2Zv2r+   r   Znvr   r   r   Ú__eq__f   s$    
z_Base.__eq__c                 C   s0   |   |¡}| jjD ]\}}}||kr dS qdS )NTF)r(   r   r   )r   r'   r-   r*   r+   r   r   r   r   Ú__contains__z   s
    
z_Base.__contains__c                 C   s(   d  dd„ |  ¡ D ƒ¡}d | jj|¡S )Nú, c                 s   s   | ]\}}d   ||¡V  qdS )z
'{}': {!r}N)Úformat)r)   r+   r   r   r   r   Ú	<genexpr>‚   s     z!_Base.__repr__.<locals>.<genexpr>z<{}({})>)ÚjoinrC   rM   Ú	__class__r   )r   Úbodyr   r   r   Ú__repr__�   s    z_Base.__repr__)N)r   r	   r
   r(   r1   r5   r7   r9   r:   r=   r@   r<   rC   rE   rJ   rK   rR   r   r   r   r   r   0   s   

r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚMultiDictProxyz'Read-only proxy for MultiDict instance.c                 C   s,   t |ttfƒs td t|ƒ¡ƒ‚|j| _d S )Nz:ctor requires MultiDict or MultiDictProxy instance, not {})r   Ú	MultiDictrS   r   rM   Útyper   ©r   Úargr   r   r   r   ‰   s    ÿÿzMultiDictProxy.__init__c                 C   s   t d | jj¡ƒ‚d S )Nzcan't pickle {} objects)r   rM   rP   r   r   r   r   r   Ú
__reduce__’   s    zMultiDictProxy.__reduce__c                 C   s   t |  ¡ ƒS ©zReturn a copy of itself.)rT   rC   r   r   r   r   Úcopy•   s    zMultiDictProxy.copyN)r   r	   r
   r   r   rX   rZ   r   r   r   r   rS   †   s   	rS   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚCIMultiDictProxyz)Read-only proxy for CIMultiDict instance.c                 C   s,   t |ttfƒs td t|ƒ¡ƒ‚|j| _d S )Nz>ctor requires CIMultiDict or CIMultiDictProxy instance, not {})r   ÚCIMultiDictr[   r   rM   rU   r   rV   r   r   r   r   �   s    ÿÿzCIMultiDictProxy.__init__c                 C   s   |  ¡ S r   ©Útitler&   r   r   r   r(   ¦   s    zCIMultiDictProxy._titlec                 C   s   t |  ¡ ƒS rY   )r\   rC   r   r   r   r   rZ   ©   s    zCIMultiDictProxy.copyN)r   r	   r
   r   r   r(   rZ   r   r   r   r   r[   š   s   	r[   c                   @   sÎ   e Zd ZdZdd„ Zejjdkr(dd„ Zdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ ZeZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd,dd„Zefd d!„ZeZefd"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ ZdS )-rT   z/Dictionary with the support for duplicate keys.c                 O   s"   t ƒ | _|  ||| jj| j¡ d S r   )r   r   Ú_extendrP   r   Ú_extend_items©r   ÚargsÚkwargsr   r   r   r   ±   s    zMultiDict.__init__r   c                 C   s   t  | ¡t | j¡ S r   )r   r    r!   r"   r   r   r   r   r   r    ¸   s    zMultiDict.__sizeof__c                 C   s   | j t|  ¡ ƒffS r   )rP   ÚlistrC   r   r   r   r   rX   »   s    zMultiDict.__reduce__c                 C   s   |S r   r   r&   r   r   r   r(   ¾   s    zMultiDict._titlec                 C   s   t |tƒr|S tdƒ‚d S )Nz8MultiDict keys should be either str or subclasses of str)r   Ústrr   r&   r   r   r   Ú_keyÁ   s
    
ÿzMultiDict._keyc                 C   s2   |   |¡}| jj ||  |¡|f¡ | j ¡  d S r   )r(   r   r   Úappendrf   r   )r   r'   Úvaluer-   r   r   r   ÚaddÉ   s    
zMultiDict.addc                 C   s   | j }||  ¡ ƒS rY   )rP   rC   )r   Úclsr   r   r   rZ   Î   s    zMultiDict.copyc                 O   s   |   ||d| j¡ dS )zhExtend current MultiDict with more values.

        This method must be used instead of update.
        ÚextendN)r_   r`   ra   r   r   r   rk   Õ   s    zMultiDict.extendc                    sô   t |ƒdkr td |t |ƒ¡ƒ‚|rÖ|d }t|d ttfƒrL|sL|jj}n€t|dƒr^| 	¡ }|r|t
|ƒ}| t
| 	¡ ƒ¡ g }|D ]F}t |ƒdks¢td |¡ƒ‚| ˆ  |d ¡ˆ  |d ¡|d f¡ q„||ƒ n|‡ fdd„| 	¡ D ƒƒ d S )	Nr   z1{} takes at most 1 positional argument ({} given)r   rC   é   z3{} takes either dict or list of (key, value) tuplesc                    s&   g | ]\}}ˆ   |¡ˆ  |¡|f‘qS r   )r(   rf   )r)   r'   rh   r   r   r   r.   ø   s   ÿz%MultiDict._extend.<locals>.<listcomp>)r?   r   rM   r   rT   rS   r   r   ÚhasattrrC   rd   rk   rg   r(   rf   )r   rb   rc   r%   ÚmethodrW   rC   Úitemr   r   r   r_   Ü   s>     ÿÿ

ÿÿ*

þÿzMultiDict._extendc                 C   s    |D ]\}}}|   ||¡ qd S r   )ri   )r   rC   r-   r'   rh   r   r   r   r`   þ   s    zMultiDict._extend_itemsc                 C   s   | j j ¡  | j  ¡  dS )z Remove all items from MultiDict.N)r   r   Úclearr   r   r   r   r   rp     s    zMultiDict.clearc                 C   s   |   ||¡ d S r   )Ú_replace)r   r'   rh   r   r   r   Ú__setitem__	  s    zMultiDict.__setitem__c                 C   sf   |   |¡}| jj}d}tt|ƒd ddƒD ]}|| d |kr*||= d}q*|sXt|ƒ‚n
| j ¡  d S )NFr   éÿÿÿÿr   T)r(   r   r   Úranger?   r2   r   )r   r'   r-   rC   Úfoundr*   r   r   r   Ú__delitem__  s    

zMultiDict.__delitem__Nc                 C   s>   |   |¡}| jjD ]\}}}||kr|  S q|  ||¡ |S )zAReturn value for key, set value to default if key is not present.)r(   r   r   ri   r6   r   r   r   Ú
setdefault  s    

zMultiDict.setdefaultc                 C   sz   |   |¡}tt| jjƒƒD ]D}| jj| d |kr| jj| d }| jj|= | j ¡  |  S q|tkrrt|ƒ‚n|S dS )zžRemove specified key and return the corresponding value.

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

        r   rl   N)r(   rt   r?   r   r   r   r1   r2   )r   r'   r3   r-   r*   rh   r   r   r   Úpopone"  s    




zMultiDict.poponec                 C   sš   d}|   |¡}g }tt| jjƒd ddƒD ]B}| jj| }|d |kr*| |d ¡ | jj|= | j ¡  d}q*|sŠ|tkr„t|ƒ‚q–|S n| 	¡  |S d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.

        Fr   rs   r   rl   TN)
r(   rt   r?   r   r   rg   r   r1   r2   Úreverse)r   r'   r3   ru   r-   Zretr*   ro   r   r   r   Úpopall7  s     



zMultiDict.popallc                 C   s<   | j jr0| j j d¡}| j  ¡  |d |d fS tdƒ‚dS )z1Remove and return an arbitrary (key, value) pair.r   r   rl   zempty multidictN)r   r   Úpopr   r2   )r   r*   r   r   r   ÚpopitemR  s
    
zMultiDict.popitemc                 O   s   |   ||d| j¡ dS )z>Update the dictionary from *other*, overwriting existing keys.ÚupdateN)r_   Ú_update_itemsra   r   r   r   r}   [  s    zMultiDict.updatec           
      C   s  |sd S i }|D ]Œ\}}}|  |d¡}t|t| jjƒƒD ]>}| jj| }|d |kr8|d ||< |||f| jj|<  qq8| jj |||f¡ t| jjƒ||< qd}|t| jjƒk �r| jj| }|d }|  |¡}	|	d krä|d7 }q¢||	krø| jj|= q¢|d7 }q¢| j ¡  d S r   )r:   rt   r?   r   r   rg   r   )
r   rC   Z	used_keysr-   r'   rh   Ústartr*   ro   Úposr   r   r   r~   _  s2    

zMultiDict._update_itemsc                 C   sÂ   |   |¡}|  |¡}| jj}tt|ƒƒD ]8}|| }|d |kr(|||f||< |}| j ¡   q„q(| jj |||f¡ | j ¡  d S |d }|t|ƒk r¾|| }|d |kr´||= qŒ|d7 }qŒd S r   )rf   r(   r   r   rt   r?   r   rg   )r   r'   rh   r-   rC   r*   ro   Zrgtr   r   r   rq     s&    



zMultiDict._replace)N)r   r	   r
   r   r   r!   r$   r%   r    rX   r(   rf   ri   rZ   Ú__copy__rk   r_   r`   rp   rr   rv   rw   r1   rx   r{   rz   r|   r}   r~   rq   r   r   r   r   rT   ®   s0   "
		 rT   c                   @   s   e Zd ZdZdd„ ZdS )r\   z@Dictionary with the support for duplicate case-insensitive keys.c                 C   s   |  ¡ S r   r]   r&   r   r   r   r(   ž  s    zCIMultiDict._titleN)r   r	   r
   r   r(   r   r   r   r   r\   ›  s   r\   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú_Iter©Ú_sizeÚ_iterc                 C   s   || _ || _d S r   rƒ   )r   ÚsizeÚiteratorr   r   r   r   ¥  s    z_Iter.__init__c                 C   s   | S r   r   r   r   r   r   r=   ©  s    z_Iter.__iter__c                 C   s
   t | jƒS r   )Únextr…   r   r   r   r   Ú__next__¬  s    z_Iter.__next__c                 C   s   | j S r   )r„   r   r   r   r   Ú__length_hint__¯  s    z_Iter.__length_hint__N)r   r	   r
   r#   r   r=   r‰   rŠ   r   r   r   r   r‚   ¢  s
   r‚   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	_ViewBasec                 C   s   || _ |j| _d S r   )r   r   )r   Úimplr   r   r   r   ´  s    z_ViewBase.__init__c                 C   s   t | jjƒS r   r>   r   r   r   r   r@   ¸  s    z_ViewBase.__len__N)r   r	   r
   r   r@   r   r   r   r   r‹   ³  s   r‹   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rB   c                 C   s^   t |tƒst |tƒst‚t|ƒdks(t‚| jjD ](\}}}|d |kr0|d |kr0 dS q0dS )Nrl   r   r   TF)r   Útuplerd   ÚAssertionErrorr?   r   r   )r   ro   r*   r+   r   r   r   r   rK   ½  s    z_ItemsView.__contains__c                 C   s   t t| ƒ|  ¡ ƒS r   ©r‚   r?   r…   r   r   r   r   r=   Å  s    z_ItemsView.__iter__c                 c   s8   | j jD ]*\}}}| j| j jkr(tdƒ‚||fV  qd S )Nú#Dictionary changed during iteration©r   r   r   ÚRuntimeError)r   r*   r+   r   r   r   r   r…   È  s    z_ItemsView._iterc                 C   sF   g }| j jD ]}| d |d |d ¡¡ qd |¡}d | jj|¡S )Nz
{!r}: {!r}r   rl   rL   ú{}({})©r   r   rg   rM   rO   rP   r   ©r   Zlstro   rQ   r   r   r   rR   Î  s
    
z_ItemsView.__repr__N©r   r	   r
   rK   r=   r…   rR   r   r   r   r   rB   ¼  s   rB   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rD   c                 C   s$   | j jD ]}|d |kr dS qdS )Nrl   TF©r   r   )r   rh   ro   r   r   r   rK   ×  s    z_ValuesView.__contains__c                 C   s   t t| ƒ|  ¡ ƒS r   r�   r   r   r   r   r=   Ý  s    z_ValuesView.__iter__c                 c   s2   | j jD ]$}| j| j jkr"tdƒ‚|d V  qd S )Nr�   rl   r‘   ©r   ro   r   r   r   r…   à  s    z_ValuesView._iterc                 C   s@   g }| j jD ]}| d |d ¡¡ qd |¡}d | jj|¡S )Nú{!r}rl   rL   r“   r”   r•   r   r   r   rR   æ  s
    
z_ValuesView.__repr__Nr–   r   r   r   r   rD   Ö  s   rD   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rA   c                 C   s$   | j jD ]}|d |kr dS qdS )Nr   TFr—   )r   r'   ro   r   r   r   rK   ï  s    z_KeysView.__contains__c                 C   s   t t| ƒ|  ¡ ƒS r   r�   r   r   r   r   r=   õ  s    z_KeysView.__iter__c                 c   s2   | j jD ]$}| j| j jkr"tdƒ‚|d V  qd S )Nr�   r   r‘   r˜   r   r   r   r…   ø  s    z_KeysView._iterc                 C   s@   g }| j jD ]}| d |d ¡¡ qd |¡}d | jj|¡S )Nr™   r   rL   r“   r”   r•   r   r   r   rR   þ  s
    
z_KeysView.__repr__Nr–   r   r   r   r   rA   î  s   rA   )r!   r   Úcollectionsr   Ú_abcr   r   r   r1   re   r   Zupstrr   r   r   r   rS   r[   rT   r\   r‚   r‹   Ú	ItemsViewrB   Ú
ValuesViewrD   ÚKeysViewrA   r   r   r   r   Ú<module>   s(   V n	