o
    f:                     @   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r(e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 N )clsr   r   \/var/www/html/status_management/venv/lib/python3.10/site-packages/multidict/_multidict_py.pyGenericAlias      r   c                   @   s   e Zd ZdZdZdS )istrzCase insensitive str.TN)__name__
__module____qualname____doc____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)mdr   r   r   
getversion   s   
r   Qc                   @   s8   e Zd ZdZdd Zdd Zejjdkrdd Z	d	S 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      t | t| j S r
   )object
__sizeof__sys	getsizeofr   r!   r   r   r   r)   4      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 r
   r   r"   keyr   r   r   _title9   r   z_Base._titlec                    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   ).0ikr%   identityr   r   
<listcomp>?   s    z _Base.getall.<locals>.<listcomp>Key not found: %rr3   r   r   _markerKeyError)r"   r2   defaultresr   r7   r   getall<   s   
z_Base.getallc                 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;   r"   r2   r>   r8   r5   r6   r%   r   r   r   getoneF   s   
z_Base.getonec                 C   s
   |  |S r
   rB   r1   r   r   r   __getitem__U      
z_Base.__getitem__Nc                 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)
        rC   )r"   r2   r>   r   r   r   getX   s   z	_Base.getc                 C      t |  S r
   )iterkeysr!   r   r   r   __iter___      z_Base.__iter__c                 C      t | jjS r
   lenr   r   r!   r   r   r   __len__b   rK   z_Base.__len__c                 C   
   t | jS )z+Return a new view of the dictionary's keys.)	_KeysViewr   r!   r   r   r   rI   e      
z
_Base.keysc                 C   rP   )zAReturn a new view of the dictionary's items *(key, value) pairs).)
_ItemsViewr   r!   r   r   r   itemsi   rR   z_Base.itemsc                 C   rP   )z-Return a new view of the dictionary's values.)_ValuesViewr   r!   r   r   r   valuesm   rR   z_Base.valuesc                 C   s   t |tjstS t |tr<| jj}|jj}t|t|krdS t||D ]\\}}}\}}}||ks6||kr9 dS q$dS t| jjt|krHdS | 	 D ]\}	}
|
|	t}|
|kr] dS qLdS )NFT)r   r   MappingNotImplementedr   r   r   rN   ziprT   rF   r<   )r"   otherlftrhti1k2v1i2v2r6   r%   nvr   r   r   __eq__q   s(   
z_Base.__eq__c                 C   s0   |  |}| jjD ]\}}}||kr dS q	dS )NTF)r3   r   r   )r"   r2   r8   r5   r6   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)r4   r6   r%   r   r   r   	<genexpr>   s    z!_Base.__repr__.<locals>.<genexpr>z<{}({})>)joinrT   rf   	__class__r   )r"   bodyr   r   r   __repr__   s   z_Base.__repr__r
   )r   r   r   r3   r<   r@   rB   rD   rF   rJ   rO   rI   rT   rV   rc   rd   rk   classmethodr   __class_getitem__r   r   r   r   r   8   s    

r   c                   @   (   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   ,   t |ttfstdt||j| _d S )Nz:ctor requires MultiDict or MultiDictProxy instance, not {})r   	MultiDictro   r   rf   typer   r"   argr   r   r   r#         
zMultiDictProxy.__init__c                 C   s   t d| jj)Nzcan't pickle {} objects)r   rf   ri   r   r!   r   r   r   
__reduce__   s   zMultiDictProxy.__reduce__c                 C   rG   zReturn a copy of itself.)rq   rT   r!   r   r   r   copy      zMultiDictProxy.copyN)r   r   r   r   r#   rv   rx   r   r   r   r   ro      
    	ro   c                   @   rn   )	CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.c                 C   rp   )Nz>ctor requires CIMultiDict or CIMultiDictProxy instance, not {})r   CIMultiDictr{   r   rf   rr   r   rs   r   r   r   r#      ru   zCIMultiDictProxy.__init__c                 C      |  S r
   titler1   r   r   r   r3         zCIMultiDictProxy._titlec                 C   rG   rw   )r|   rT   r!   r   r   r   rx      ry   zCIMultiDictProxy.copyN)r   r   r   r   r#   r3   rx   r   r   r   r   r{      rz   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 )-rq   z/Dictionary with the support for duplicate keys.c                 O   s"   t  | _| ||| jj| j d S r
   )r   r   _extendri   r   _extend_itemsr"   argskwargsr   r   r   r#      s   zMultiDict.__init__r&   c                 C   r'   r
   )r(   r)   r*   r+   r   r!   r   r   r   r)      r,   zMultiDict.__sizeof__c                 C   s   | j t|  ffS r
   )ri   listrT   r!   r   r   r   rv      s   zMultiDict.__reduce__c                 C   r0   r
   r   r1   r   r   r   r3      r   zMultiDict._titlec                 C   s   t |tr|S td)Nz8MultiDict keys should be either str or subclasses of str)r   strr   r1   r   r   r   _key   s
   
zMultiDict._keyc                 C   s2   |  |}| jj|| ||f | j  d S r
   )r3   r   r   appendr   r    )r"   r2   valuer8   r   r   r   add   s   
zMultiDict.addc                 C   s   | j }||  S rw   )ri   rT   )r"   r   r   r   r   rx      s   zMultiDict.copyc                 O      |  ||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      s   zMultiDict.extendc                    s   t |dkrtd|t ||rl|d }t|d ttfr&|s&|jj}n@t|dr/|	 }|r>t
|}|t
|	  g }|D ]#}t |dksQtd|| |d  |d |d f qB|| d S | fdd|	 D  d S )	Nr   z1{} takes at most 1 positional argument ({} given)r   rT      z3{} takes either dict or list of (key, value) tuplesc                    s&   g | ]\}}  | ||fqS r   )r3   r   )r4   r2   r   r!   r   r   r9     s    z%MultiDict._extend.<locals>.<listcomp>)rN   r   rf   r   rq   ro   r   r   hasattrrT   r   r   r   r3   r   )r"   r   r   r/   methodrt   rT   itemr   r!   r   r      s8   

*
zMultiDict._extendc                 C   s    |D ]\}}}|  || qd S r
   )r   )r"   rT   r8   r2   r   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   r     s   zMultiDict.clearc                 C   s   |  || d S r
   )_replace)r"   r2   r   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)r3   r   r   rangerN   r=   r    )r"   r2   r8   rT   foundr5   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.)r3   r   r   r   rA   r   r   r   
setdefault&  s   
zMultiDict.setdefaultc                 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   )r3   r   rN   r   r   r    r<   r=   )r"   r2   r>   r8   r5   r   r   r   r   popone/  s   


zMultiDict.poponec                 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)
r3   r   rN   r   r   r   r    r<   r=   reverse)r"   r2   r>   r   r8   retr5   r   r   r   r   popallD  s"   


zMultiDict.popallc                 C   s8   | j jr| j jd}| j   |d |d fS td)z1Remove and return an arbitrary (key, value) pair.r   r   r   zempty multidict)r   r   popr    r=   )r"   r5   r   r   r   popitem_  s
   
zMultiDict.popitemc                 O   r   )z>Update the dictionary from *other*, overwriting existing keys.updateN)r   _update_itemsr   r   r   r   r   h  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 r$   )rF   r   rN   r   r   r   r    )
r"   rT   	used_keysr8   r2   r   startr5   r   posr   r   r   r   l  s8   
zMultiDict._update_itemsc                 C   s   |  |}| |}| jj}tt|D ]}|| }|d |kr0|||f||< |}| j   nq| jj|||f | j  d S |d }|t|k rf|| }|d |krZ||= n|d7 }|t|k sLd S d S r$   )r   r3   r   r   r   rN   r    r   )r"   r2   r   r8   rT   r5   r   rgtr   r   r   r     s*   



zMultiDict._replacer
   )r   r   r   r   r#   r*   r.   r/   r)   rv   r3   r   r   rx   __copy__r   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r   rq      s2    "
		 rq   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   r}   r
   r~   r1   r   r   r   r3     r   zCIMultiDict._titleN)r   r   r   r   r3   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   r	   r
   r   r!   r   r   r   rJ     r   z_Iter.__iter__c                 C   rP   r
   )nextr   r!   r   r   r   __next__  rE   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#   rJ   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#     rE   z_ViewBase.__init__c                 C   rL   r
   rM   r!   r   r   r   rO     rK   z_ViewBase.__len__N)r   r   r   r#   rO   r   r   r   r   r     s    r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
rS   c                 C   s^   t |tst |tsJ t|dksJ | jjD ]\}}}|d |kr,|d |kr, dS qdS )Nr   r   r   TF)r   tupler   rN   r   r   )r"   r   r5   r6   r%   r   r   r   rd     s   z_ItemsView.__contains__c                 C      t t| | | jjS r
   r   rN   r   r   r   r!   r   r   r   rJ        z_ItemsView.__iter__c                 c   s8    | j jD ]\}}}|| j jkrtd||fV  qd S )N#Dictionary changed during iterationr   r   r   RuntimeError)r"   versionr5   r6   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   r   re   {}({})r   r   r   rf   rh   ri   r   r"   lstr   rj   r   r   r   rk     s
   
z_ItemsView.__repr__Nr   r   r   rd   rJ   r   rk   r   r   r   r   rS     s
    rS   c                   @   r   )
rU   c                 C   $   | j jD ]}|d |kr dS qdS )Nr   TFr   r   )r"   r   r   r   r   r   rd     
   z_ValuesView.__contains__c                 C   r   r
   r   r!   r   r   r   rJ     r   z_ValuesView.__iter__c                 c   2    | j jD ]}|| j jkrtd|d V  qd S )Nr   r   r   r"   r   r   r   r   r   r        z_ValuesView._iterc                 C   @   g }| j jD ]}|d|d  qd|}d| jj|S )N{!r}r   re   r   r   r   r   r   r   rk     
   
z_ValuesView.__repr__Nr   r   r   r   r   rU     
    rU   c                   @   r   )
rQ   c                 C   r   )Nr   TFr   )r"   r2   r   r   r   r   rd     r   z_KeysView.__contains__c                 C   r   r
   r   r!   r   r   r   rJ     r   z_KeysView.__iter__c                 c   r   )Nr   r   r   r   r   r   r   r     r   z_KeysView._iterc                 C   r   )Nr   r   re   r   r   r   r   r   r   rk   
  r   z_KeysView.__repr__Nr   r   r   r   r   rQ     r   rQ   )r*   typesr   collectionsr   _abcr   r   r(   r<   version_infor   r   r   upstrr   r   r   r   ro   r{   rq   r|   r   r   	ItemsViewrS   
ValuesViewrU   KeysViewrQ   r   r   r   r   <module>   s2    
[ n