a
     ÑOc:  ã                   @   s<  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 eƒ Z	e j
dkrPejZndd„ 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ÚMutableMultiMapping)é   é	   c                 C   s   | S ©N© )Úclsr
   r
   úN/var/www/html/gsl.tools/lib/python3.9/site-packages/multidict/_multidict_py.pyÚGenericAlias   s    r   c                   @   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
   r
   r   r      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 r	   )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$   3   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eeƒZd	S )r   c                 C   s   |S r	   r
   ©r   Úkeyr
   r
   r   Ú_title8   s    z_Base._titlec                    sH   |   |¡‰ ‡ fdd„| jjD ƒ}|r(|S |s8|tu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>>   ó    z _Base.getall.<locals>.<listcomp>úKey not found: %rN©r,   r   r   Ú_markerÚKeyError)r   r+   ÚdefaultÚresr
   r0   r   Úgetall;   s    
z_Base.getallc                 C   sJ   |   |¡}| jjD ]\}}}||kr|  S q|tur:|S td| ƒ‚dS )ú!Get first value matching the key.r4   Nr5   ©r   r+   r8   r1   r.   r/   r!   r
   r
   r   ÚgetoneE   s    

z_Base.getonec                 C   s
   |   |¡S r	   ©r=   r*   r
   r
   r   Ú__getitem__Q   s    z_Base.__getitem__Nc                 C   s   |   ||¡S )r;   r>   )r   r+   r8   r
   r
   r   ÚgetT   s    z	_Base.getc                 C   s   t |  ¡ ƒS r	   )ÚiterÚkeysr   r
   r
   r   Ú__iter__X   s    z_Base.__iter__c                 C   s   t | jjƒS r	   ©Úlenr   r   r   r
   r
   r   Ú__len__[   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   rB   ^   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   Úitemsb   s    z_Base.itemsc                 C   s
   t | jƒS )z-Return a new view of the dictionary's values.)Ú_ValuesViewr   r   r
   r
   r   Úvaluesf   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   rE   ÚziprI   r@   r6   )r   ÚotherZlftZrhtÚi1Zk2Zv1Úi2Zv2r/   r!   Únvr
   r
   r   Ú__eq__j   s$    
z_Base.__eq__c                 C   s0   |   |¡}| jjD ]\}}}||kr dS qdS )NTF)r,   r   r   )r   r+   r1   r.   r/   r!   r
   r
   r   Ú__contains__~   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>†   r3   z!_Base.__repr__.<locals>.<genexpr>z<{}({})>)ÚjoinrI   rV   Ú	__class__r   )r   Úbodyr
   r
   r   Ú__repr__…   s    z_Base.__repr__)N)r   r   r   r,   r6   r:   r=   r?   r@   rC   rF   rB   rI   rK   rS   rT   r[   Úclassmethodr   Ú__class_getitem__r
   r
   r
   r   r   7   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   Ú	MultiDictr^   r   rV   Ú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   rV   rY   r   r   r
   r
   r   Ú
__reduce__˜   s    zMultiDictProxy.__reduce__c                 C   s   t |  ¡ ƒS ©zReturn a copy of itself.)r_   rI   r   r
   r
   r   Úcopy›   s    zMultiDictProxy.copyN)r   r   r   r   r   rc   re   r
   r
   r
   r   r^   Œ   s   	r^   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   ÚCIMultiDictrf   r   rV   r`   r   ra   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 rd   )rg   rI   r   r
   r
   r   re   ¯   s    zCIMultiDictProxy.copyN)r   r   r   r   r   r,   re   r
   r
   r
   r   rf       s   	rf   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 )-r_   z/Dictionary with the support for duplicate keys.c                 O   s"   t ƒ | _|  ||| jj| j¡ d S r	   )r   r   Ú_extendrY   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	   )rY   ÚlistrI   r   r
   r
   r   rc   Á   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   Úappendrq   r   )r   r+   Úvaluer1   r
   r
   r   ÚaddÏ   s    
zMultiDict.addc                 C   s   | j }||  ¡ ƒS rd   )rY   rI   )r   r   r
   r
   r   re   Ô   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)rj   rk   rl   r
   r
   r   ru   Û   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   rI   é   z3{} takes either dict or list of (key, value) tuplesc                    s&   g | ]\}}ˆ   |¡ˆ  |¡|f‘qS r
   )r,   rq   )r-   r+   rs   r   r
   r   r2   þ   s   ÿz%MultiDict._extend.<locals>.<listcomp>)rE   r   rV   r   r_   r^   r   r   ÚhasattrrI   ro   ru   rr   r,   rq   )r   rm   rn   r)   Úmethodrb   rI   Úitemr
   r   r   rj   â   s<    ÿÿ

ÿÿ*

þÿzMultiDict._extendc                 C   s    |D ]\}}}|   ||¡ qd S r	   )rt   )r   rI   r1   r+   rs   r
   r
   r   rk     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   rz     s    zMultiDict.clearc                 C   s   |   ||¡ d S r	   )Ú_replace)r   r+   rs   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   ÚrangerE   r7   r   )r   r+   r1   rI   Ú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   rt   r<   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u 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   rv   N)r,   r~   rE   r   r   r   r6   r7   )r   r+   r8   r1   r.   rs   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u 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   r}   r   rv   TN)
r,   r~   rE   r   r   rr   r   r6   r7   Úreverse)r   r+   r8   r   r1   Úretr.   ry   r
   r
   r   Úpopall=  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   rv   zempty multidictN)r   r   Úpopr   r7   )r   r.   r
   r
   r   ÚpopitemX  s
    
zMultiDict.popitemc                 O   s   |   ||d| j¡ dS )z>Update the dictionary from *other*, overwriting existing keys.ÚupdateN)rj   Ú_update_itemsrl   r
   r
   r   rˆ   a  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 u rä|d7 }q¢||	krø| jj|= q¢|d7 }q¢| j ¡  d S r    )r@   r~   rE   r   r   rr   r   )
r   rI   Z	used_keysr1   r+   rs   Ústartr.   ry   Úposr
   r
   r   r‰   e  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    )rq   r,   r   r   r~   rE   r   rr   )r   r+   rs   r1   rI   r.   ry   Zrgtr
   r
   r   r{   …  s&    



zMultiDict._replace)N)r   r   r   r   r   r%   r(   r)   r$   rc   r,   rq   rt   re   Ú__copy__ru   rj   rk   rz   r|   r€   r�   r6   r‚   r†   r…   r‡   rˆ   r‰   r{   r
   r
   r
   r   r_   ´   s0   "
		 r_   c                   @   s   e Zd ZdZdd„ ZdS )rg   z@Dictionary with the support for duplicate case-insensitive keys.c                 C   s   |  ¡ S r	   rh   r*   r
   r
   r   r,   ¤  s    zCIMultiDict._titleN)r   r   r   r   r,   r
   r
   r
   r   rg   ¡  s   rg   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   rC   ¯  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   rC   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
   || _ d S r	   )r   )r   Úimplr
   r
   r   r   º  s    z_ViewBase.__init__c                 C   s   t | jjƒS r	   rD   r   r
   r
   r   rF   ½  s    z_ViewBase.__len__N)r   r   r   r   rF   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 )
rH   c                 C   s^   t |tƒst |tƒsJ ‚t|ƒdks(J ‚| jjD ](\}}}|d |kr0|d |kr0 dS q0dS )Nrv   r   r   TF)r   Útuplero   rE   r   r   )r   ry   r.   r/   r!   r
   r
   r   rT   Â  s    z_ItemsView.__contains__c                 C   s   t t| ƒ|  | jj¡ƒS r	   ©r�   rE   r�   r   r   r   r
   r
   r   rC   Ê  s    z_ItemsView.__iter__c                 c   s6   | j jD ](\}}}|| j jkr&tdƒ‚||fV  qd S )Nú#Dictionary changed during iteration©r   r   r   ÚRuntimeError)r   Úversionr.   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   rv   rU   ú{}({})©r   r   rr   rV   rX   rY   r   ©r   Úlstry   rZ   r
   r
   r   r[   Ó  s
    
z_ItemsView.__repr__N©r   r   r   rT   rC   r�   r[   r
   r
   r
   r   rH   Á  s   rH   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rJ   c                 C   s$   | j jD ]}|d |kr dS qdS )Nrv   TF©r   r   )r   rs   ry   r
   r
   r   rT   Ü  s    z_ValuesView.__contains__c                 C   s   t t| ƒ|  | jj¡ƒS r	   r™   r   r
   r
   r   rC   â  s    z_ValuesView.__iter__c                 c   s0   | j jD ]"}|| j jkr tdƒ‚|d V  qd S )Nrš   rv   r›   ©r   r�   ry   r
   r
   r   r�   å  s    z_ValuesView._iterc                 C   s@   g }| j jD ]}| d |d ¡¡ qd |¡}d | jj|¡S )Nú{!r}rv   rU   rž   rŸ   r    r
   r
   r   r[   ë  s
    
z_ValuesView.__repr__Nr¢   r
   r
   r
   r   rJ   Û  s   rJ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
rG   c                 C   s$   | j jD ]}|d |kr dS qdS )Nr   TFr£   )r   r+   ry   r
   r
   r   rT   ô  s    z_KeysView.__contains__c                 C   s   t t| ƒ|  | jj¡ƒS r	   r™   r   r
   r
   r   rC   ú  s    z_KeysView.__iter__c                 c   s0   | j jD ]"}|| 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   rU   rž   rŸ   r    r
   r
   r   r[     s
    
z_KeysView.__repr__Nr¢   r
   r
   r
   r   rG   ó  s   rG   )r%   Útypesr   Úcollectionsr   Ú_abcr   r   r#   r6   Úversion_infor   rp   r   Zupstrr   r   r   r   r^   rf   r_   rg   r�   r–   Ú	ItemsViewrH   Ú
ValuesViewrJ   ÚKeysViewrG   r
   r
   r
   r   Ú<module>   s0   
U n