<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    _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/python37/lib64/python3.7/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 )N)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 )Nr   )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>zKey not found: %rN)r$   r   r   _markerKeyError)r   r#   defaultresr   )r(   r   getall4   s    
z_Base.getallc             C   sJ   |  |}x"| jjD ]\}}}||kr|S qW |tk	r:|S td| dS )z!Get first value matching the key.zKey not found: %rN)r$   r   r   r*   r+   )r   r#   r,   r(   r&   r'   r   r   r   r   getone>   s    
z_Base.getonec             C   s
   |  |S )N)r/   )r   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().
        )r/   )r   r#   r,   r   r   r   getM   s    z	_Base.getc             C   s   t |  S )N)iterkeys)r   r   r   r   __iter__T   s    z_Base.__iter__c             C   s   t | jjS )N)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   r3   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rz| jj}|jj}t|t|kr>dS x6t||D ](\\}}}\}}}||ksn||krJdS qJW dS t| jjt|krdS x,| 	 D ] \}	}
|
|	t}|
|krdS qW dS )NFT)r   r   MappingNotImplementedr   r   r   r5   zipr9   r1   r*   )r   otherZlftZrhti1Zk2Zv1i2Zv2r'   r   nvr   r   r   __eq__f   s$    
 z_Base.__eq__c             C   s2   |  |}x"| jjD ]\}}}||krdS qW 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 )Nz, 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<{}({})>)joinr9   rE   	__class__r   )r   bodyr   r   r   __repr__   s    z_Base.__repr__)N)r   r	   r
   r$   r*   r.   r/   r0   r1   r4   r6   r3   r9   r;   rC   rD   rJ   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   	MultiDictrK   r   rE   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   rE   rH   r   )r   r   r   r   
__reduce__   s    zMultiDictProxy.__reduce__c             C   s   t |  S )zReturn a copy of itself.)rL   r9   )r   r   r   r   copy   s    zMultiDictProxy.copyN)r   r	   r
   r   r   rO   rP   r   r   r   r   rK      s   	rK   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   CIMultiDictrQ   r   rE   rM   r   )r   rN   r   r   r   r      s
    zCIMultiDictProxy.__init__c             C   s   |  S )N)title)r   r#   r   r   r   r$      s    zCIMultiDictProxy._titlec             C   s   t |  S )zReturn a copy of itself.)rR   r9   )r   r   r   r   rP      s    zCIMultiDictProxy.copyN)r   r	   r
   r   r   r$   rP   r   r   r   r   rQ      s   	rQ   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 )-rL   z/Dictionary with the support for duplicate keys.c             O   s"   t  | _| ||| jj| j d S )N)r   r   _extendrH   r   _extend_items)r   argskwargsr   r   r   r      s    zMultiDict.__init__r   c             C   s   t | t| j S )N)r   r   r   r   r   )r   r   r   r   r      s    zMultiDict.__sizeof__c             C   s   | j t|  ffS )N)rH   listr9   )r   r   r   r   rO      s    zMultiDict.__reduce__c             C   s   |S )Nr   )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   r   _key   s    
zMultiDict._keyc             C   s2   |  |}| jj|| ||f | j  d S )N)r$   r   r   appendrZ   r   )r   r#   valuer(   r   r   r   add   s    
zMultiDict.addc             C   s   | j }||  S )zReturn a copy of itself.)rH   r9   )r   clsr   r   r   rP      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)rT   rU   )r   rV   rW   r   r   r   r_      s    zMultiDict.extendc                s   t |dkr td|t ||r|d }t|d ttfrL|sL|jj}nt|dr^|	 }|r|t
|}|t
|	  g }xN|D ]F}t |dkstd|| |d  |d |d f qW || n| fdd|	 D  d S )	Nr   z1{} takes at most 1 positional argument ({} given)r   r9      z3{} takes either dict or list of (key, value) tuplesc                s&   g | ]\}}  | ||fqS r   )r$   rZ   )r%   r#   r\   )r   r   r   r)      s   z%MultiDict._extend.<locals>.<listcomp>)r5   r   rE   r   rL   rK   r   r   hasattrr9   rX   r_   r[   r$   rZ   )r   rV   rW   r"   methodrN   r9   itemr   )r   r   rT      s0    


,

zMultiDict._extendc             C   s$   x|D ]\}}}|  || qW d S )N)r]   )r   r9   r(   r#   r\   r   r   r   rU      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   rd     s    zMultiDict.clearc             C   s   |  || d S )N)_replace)r   r#   r\   r   r   r   __setitem__	  s    zMultiDict.__setitem__c             C   sj   |  |}| jj}d}x6tt|d ddD ]}|| d |kr,||= d}q,W |s\t|n
| j  d S )NFr   r   T)r$   r   r   ranger5   r+   r   )r   r#   r(   r9   foundr&   r   r   r   __delitem__  s    

zMultiDict.__delitem__Nc             C   s>   |  |}x"| jjD ]\}}}||kr|S qW | || |S )zAReturn value for key, set value to default if key is not present.)r$   r   r   r]   )r   r#   r,   r(   r&   r'   r   r   r   r   
setdefault  s    
zMultiDict.setdefaultc             C   sz   |  |}xTtt| jjD ]@}| jj| d |kr| jj| d }| jj|= | j  |S qW |tkrrt|n|S dS )zRemove specified key and return the corresponding value.

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

        r   r`   N)r$   rh   r5   r   r   r   r*   r+   )r   r#   r,   r(   r&   r\   r   r   r   popone"  s    



zMultiDict.poponec             C   s   d}|  |}g }x^tt| jjd ddD ]B}| jj| }|d |kr,||d  | jj|= | j  d}q,W |s|tkrt|q|S n|	  |S dS )zRemove all occurrences of key and return the list of corresponding
        values.

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

        Fr   rg   r   r`   TN)
r$   rh   r5   r   r   r[   r   r*   r+   reverse)r   r#   r,   ri   r(   retr&   rc   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   r`   zempty multidictN)r   r   popr   r+   )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)rT   _update_items)r   rV   rW   r   r   r   rr   [  s    zMultiDict.updatec       
      C   s  |sd S i }x|D ]\}}}| |d}xvt|t| jjD ]<}| jj| }|d |kr<|d ||< |||f| jj|< P q<W | jj|||f t| jj||< qW d}xd|t| jjk r| jj| }|d }| |}	|	d kr|d7 }q||	kr| jj|= q|d7 }qW | j  d S )Nr   r   )r1   rh   r5   r   r   r[   r   )
r   r9   Z	used_keysr(   r#   r\   startr&   rc   posr   r   r   rs   _  s2    

zMultiDict._update_itemsc             C   s   |  |}| |}| jj}xhtt|D ]6}|| }|d |kr*|||f||< |}| j  P q*W | jj|||f | j  d S |d }x4|t|k r|| }|d |kr||= q|d7 }qW d S )Nr   r   )rZ   r$   r   r   rh   r5   r   r[   )r   r#   r\   r(   r9   r&   rc   Zrgtr   r   r   re     s&    



zMultiDict._replace)N)r   r	   r
   r   r   r   r!   r"   r   rO   r$   rZ   r]   rP   __copy__r_   rT   rU   rd   rf   rj   rk   r*   rl   rp   ro   rq   rr   rs   re   r   r   r   r   rL      s0   "
		 rL   c               @   s   e Zd ZdZdd ZdS )rR   z@Dictionary with the support for duplicate case-insensitive keys.c             C   s   |  S )N)rS   )r   r#   r   r   r   r$     s    zCIMultiDict._titleN)r   r	   r
   r   r$   r   r   r   r   rR     s   rR   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 )N)rx   ry   )r   sizeiteratorr   r   r   r     s    z_Iter.__init__c             C   s   | S )Nr   )r   r   r   r   r4     s    z_Iter.__iter__c             C   s
   t | jS )N)nextry   )r   r   r   r   __next__  s    z_Iter.__next__c             C   s   | j S )N)rx   )r   r   r   r   __length_hint__  s    z_Iter.__length_hint__N)r   r	   r
   r    r   r4   r}   r~   r   r   r   r   rw     s
   rw   c               @   s   e Zd Zdd Zdd ZdS )	_ViewBasec             C   s   || _ |j| _d S )N)r   r   )r   implr   r   r   r     s    z_ViewBase.__init__c             C   s   t | jjS )N)r5   r   r   )r   r   r   r   r6     s    z_ViewBase.__len__N)r   r	   r
   r   r6   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 )
r8   c             C   s`   t |tst |tstt|dks(tx2| jjD ]&\}}}|d |kr2|d |kr2dS q2W dS )Nr`   r   r   TF)r   tuplerX   AssertionErrorr5   r   r   )r   rc   r&   r'   r   r   r   r   rD     s    z_ItemsView.__contains__c             C   s   t t| |  S )N)rw   r5   ry   )r   r   r   r   r4     s    z_ItemsView.__iter__c             c   s<   x6| j jD ]*\}}}| j| j jkr*td||fV  q
W d S )Nz#Dictionary changed during iteration)r   r   r   RuntimeError)r   r&   r'   r   r   r   r   ry     s    z_ItemsView._iterc             C   sJ   g }x*| j jD ]}|d|d |d  qW d|}d| jj|S )Nz
{!r}: {!r}r   r`   z, z{}({}))r   r   r[   rE   rG   rH   r   )r   lstrc   rI   r   r   r   rJ     s
    
z_ItemsView.__repr__N)r   r	   r
   rD   r4   ry   rJ   r   r   r   r   r8     s   r8   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r:   c             C   s&   x | j jD ]}|d |kr
dS q
W dS )Nr`   TF)r   r   )r   r\   rc   r   r   r   rD     s    z_ValuesView.__contains__c             C   s   t t| |  S )N)rw   r5   ry   )r   r   r   r   r4     s    z_ValuesView.__iter__c             c   s6   x0| j jD ]$}| j| j jkr$td|d V  q
W d S )Nz#Dictionary changed during iterationr`   )r   r   r   r   )r   rc   r   r   r   ry     s    z_ValuesView._iterc             C   sD   g }x$| j jD ]}|d|d  qW d|}d| jj|S )Nz{!r}r`   z, z{}({}))r   r   r[   rE   rG   rH   r   )r   r   rc   rI   r   r   r   rJ     s
    
z_ValuesView.__repr__N)r   r	   r
   rD   r4   ry   rJ   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 )
r7   c             C   s&   x | j jD ]}|d |kr
dS q
W dS )Nr   TF)r   r   )r   r#   rc   r   r   r   rD     s    z_KeysView.__contains__c             C   s   t t| |  S )N)rw   r5   ry   )r   r   r   r   r4     s    z_KeysView.__iter__c             c   s6   x0| j jD ]$}| j| j jkr$td|d V  q
W d S )Nz#Dictionary changed during iterationr   )r   r   r   r   )r   rc   r   r   r   ry     s    z_KeysView._iterc             C   sD   g }x$| j jD ]}|d|d  qW d|}d| jj|S )Nz{!r}r   z, z{}({}))r   r   r[   rE   rG   rH   r   )r   r   rc   rI   r   r   r   rJ     s
    
z_KeysView.__repr__N)r   r	   r
   rD   r4   ry   rJ   r   r   r   r   r7     s   r7   )r   r   collectionsr   _abcr   r   r   r*   rY   r   Zupstrr   r   r   r   rK   rQ   rL   rR   rw   r   	ItemsViewr8   
ValuesViewr:   KeysViewr7   r   r   r   r   <module>   s(   V n	