
    Rc:                        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 Z G d d	e          ZeZd
 Z edd g          a G d d          Z G d d          Z G d dee          Z G d de          Z G d dee          Z G d de          Z G d d          Z G d d          Z G d deej                  Z G d deej                  Z G d  d!eej                  ZdS )"    N)array)abc   )MultiMappingMutableMultiMapping)   	   c                     | S N )clss    7lib/python3.11/site-packages/multidict/_multidict_py.pyGenericAliasr          
    c                       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        KKKr   r   c                 b    t          | t                    st          d          | j        j        S )Nz&Parameter should be multidict or proxy)
isinstance_Base	TypeError_impl_version)mds    r   
getversionr       s/    b%   B@AAA8r   Qc                   H    e Zd ZdZd Zd Zej        j        dk    rd Z	dS dS )_Impl)_itemsr   c                 <    g | _         |                                  d S r   )r$   incr_versionselfs    r   __init__z_Impl.__init__'   s!    r   c                 N    t           }|dxx         dz  cc<   |d         | _         d S Nr   r   )r   )r(   vs     r   r&   z_Impl.incr_version+   s+    	!	!r   pypyc                 j    t                               |           t          j        | j                  z   S r   )object
__sizeof__sys	getsizeofr$   r'   s    r   r0   z_Impl.__sizeof__3   s'    $$T**S]4;-G-GGGr   N)
r   r   r   	__slots__r)   r&   r1   implementationnamer0   r   r   r   r#   r#   $   sm        &I     &( H	H 	H 	H 	H 	HH Hr   r#   c                   |    e Zd Zd ZefdZefdZd ZddZd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z ee          ZdS )r   c                     |S r   r   r(   keys     r   _titlez_Base._title8   r   r   c                     |                      |          fd| j        j        D             }|r|S |s|t          ur|S t	          d|z            )z-Return a list of all values matching the key.c                 (    g | ]\  }}}|k    |S r   r   ).0ikr,   identitys       r   
<listcomp>z _Base.getall.<locals>.<listcomp>>   s(    CCCWQ1Q(]CqCCCr   Key not found: %rr:   r   r$   _markerKeyError)r(   r9   defaultresr@   s       @r   getallz_Base.getall;   sl    ;;s##CCCC
 1CCC 	J 	wg- 	N*S0111r   c                     |                      |          }| j        j        D ]\  }}}||k    r|c S |t          ur|S t	          d|z            )!Get first value matching the key.rB   rC   r(   r9   rF   r@   r>   r?   r,   s          r   getonez_Base.getoneE   sm    ;;s##z( 	 	GAq!H} '! 	N*S0111r   c                 ,    |                      |          S r   rL   r8   s     r   __getitem__z_Base.__getitem__Q   s    {{3r   Nc                 .    |                      ||          S )rJ   rN   )r(   r9   rF   s      r   getz	_Base.getT   s    {{3(((r   c                 D    t          |                                           S r   )iterkeysr'   s    r   __iter__z_Base.__iter__X   s    DIIKK   r   c                 4    t          | j        j                  S r   lenr   r$   r'   s    r   __len__z_Base.__len__[       4:$%%%r   c                 *    t          | j                  S )z+Return a new view of the dictionary's keys.)	_KeysViewr   r'   s    r   rT   z
_Base.keys^   s    $$$r   c                 *    t          | j                  S )zAReturn a new view of the dictionary's items *(key, value) pairs).)
_ItemsViewr   r'   s    r   itemsz_Base.itemsb   s    $*%%%r   c                 *    t          | j                  S )z-Return a new view of the dictionary's values.)_ValuesViewr   r'   s    r   valuesz_Base.valuesf   s    4:&&&r   c                    t          |t          j                  st          S t          |t                    ri| j        j        }|j        j        }t          |          t          |          k    rdS t          ||          D ]\  \  }}}\  }}}||k    s||k    r dS dS t          | j        j                  t          |          k    rdS | 	                                D ])\  }	}
|
                    |	t                    }|
|k    r dS *dS )NFT)r   r   MappingNotImplementedr   r   r$   rX   zipr_   rQ   rD   )r(   otherlftrhti1k2v1i2v2r?   r,   nvs               r   __eq__z_Base.__eq__j   s    %-- 	"!!eU## 	*#C+$C3xx3s88# u.1#smm ! !*Rlr2r8 !rRx ! 55!4tz !!SZZ/ 	5JJLL 	 	DAq1g&&BBw uutr   c                 h    |                      |          }| j        j        D ]\  }}}||k    r dS dS )NTF)r:   r   r$   )r(   r9   r@   r>   r?   r,   s         r   __contains__z_Base.__contains__~   sJ    ;;s##z( 	 	GAq!H} ttur   c                     d                     d |                                 D                       }d                    | j        j        |          S )N, c              3   H   K   | ]\  }}d                      ||          V  dS )z
'{}': {!r}N)format)r=   r?   r,   s      r   	<genexpr>z!_Base.__repr__.<locals>.<genexpr>   s6      LLtq!,,Q22LLLLLLr   z<{}({})>)joinr_   rv   	__class__r   )r(   bodys     r   __repr__z_Base.__repr__   sE    yyLLtzz||LLLLL  !8$???r   r   )r   r   r   r:   rD   rH   rL   rO   rQ   rU   rY   rT   r_   rb   rp   rr   r{   classmethodr   __class_getitem__r   r   r   r   r   7   s          #* 2 2 2 2 #* 2 2 2 2     ) ) ) )! ! !& & &% % %& & &' ' '  (  @ @ @ $L11r   r   c                   $    e Zd ZdZd Zd Zd ZdS )MultiDictProxyz'Read-only proxy for MultiDict instance.c                     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(   args     r   r)   zMultiDictProxy.__init__   sR    #	>:;; 	!6$s)),,  
 Y


r   c                 Z    t          d                    | j        j                            )Nzcan't pickle {} objects)r   rv   ry   r   r'   s    r   
__reduce__zMultiDictProxy.__reduce__   s$    1889PQQRRRr   c                 D    t          |                                           S zReturn a copy of itself.)r   r_   r'   s    r   copyzMultiDictProxy.copy   s    &&&r   N)r   r   r   r   r)   r   r   r   r   r   r   r      sJ        11  S S S' ' ' ' 'r   r   c                   $    e Zd ZdZd Zd Zd ZdS )CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.c                     t          |t          t          f          s/t          d                    t          |                              |j        | _        d S )Nz>ctor requires CIMultiDict or CIMultiDictProxy instance, not {})r   CIMultiDictr   r   rv   r   r   r   s     r   r)   zCIMultiDictProxy.__init__   sS    #-=>?? 	!6$s)),,  
 Y


r   c                 *    |                                 S r   titler8   s     r   r:   zCIMultiDictProxy._title       yy{{r   c                 D    t          |                                           S r   )r   r_   r'   s    r   r   zCIMultiDictProxy.copy   s    4::<<(((r   N)r   r   r   r   r)   r:   r   r   r   r   r   r      sG        33    ) ) ) ) )r   r   c                       e Zd ZdZd Zej        j        dk    rd Zd Z	d Z
d Zd Zd	 ZeZd
 Zd Zd Zd Zd Zd ZddZefdZeZefdZd Zd Zd Zd ZdS )r   z/Dictionary with the support for duplicate keys.c                 z    t                      | _        |                     ||| j        j        | j                   d S r   )r#   r   _extendry   r   _extend_itemsr(   argskwargss      r   r)   zMultiDict.__init__   s3    WW
T64>#:D<NOOOOOr   r-   c                 j    t                               |           t          j        | j                  z   S r   )r/   r0   r1   r2   r   r'   s    r   r0   zMultiDict.__sizeof__   s'    $$T**S]4:-F-FFFr   c                 T    | j         t          |                                           ffS r   )ry   listr_   r'   s    r   r   zMultiDict.__reduce__   s"    djjll!3!3 566r   c                     |S r   r   r8   s     r   r:   zMultiDict._title   r   r   c                 N    t          |t                    r|S t          d          )Nz8MultiDict keys should be either str or subclasses of str)r   strr   r8   s     r   _keyzMultiDict._key   s.    c3 	JM  r   c                     |                      |          }| j        j                            ||                     |          |f           | j                                         d S r   )r:   r   r$   appendr   r&   )r(   r9   valuer@   s       r   addzMultiDict.add   sW    ;;s##
  (DIIcNNE!BCCC
!!!!!r   c                 J    | j         } ||                                           S r   )ry   r_   )r(   r   s     r   r   zMultiDict.copy   s!    ns4::<<   r   c                 @    |                      ||d| j                   dS )zhExtend current MultiDict with more values.

        This method must be used instead of update.
        extendN)r   r   r   s      r   r   zMultiDict.extend   s%    
 	T68T-?@@@@@r   c                 \    t          |          dk    r0t          d                    |t          |                              |r;|d         }t          |d         t          t
          f          r|s|j        j        }nt          |d          r|	                                }|rCt          |          }|                    t          |	                                                     g }|D ]}t          |          dk    s"t          d                    |                    |                                         |d                                        |d                   |d         f            ||           d S  | fd|	                                D                        d S )Nr   z1{} takes at most 1 positional argument ({} given)r   r_      z3{} takes either dict or list of (key, value) tuplesc                 l    g | ]0\  }}                     |                              |          |f1S r   )r:   r   )r=   r9   r   r(   s      r   rA   z%MultiDict._extend.<locals>.<listcomp>   sJ       "U [[%%tyy~~u=  r   )rX   r   rv   r   r   r   r   r$   hasattrr_   r   r   r   r:   r   )r(   r   r   r5   methodr   r_   items   `       r   r   zMultiDict._extend   s   t99q= 	$fT3t9955    	q'C$q'I~#>?? V V	(3(( &))++C 5s))CJJtFLLNN33444 V VDt99> '%%+VD\\   LL$++d1g"6"6		$q'8J8JDQRG!TUUUUF5MMMMMF   &,llnn      r   c                 D    |D ]\  }}}|                      ||           d S r   )r   )r(   r_   r@   r9   r   s        r   r   zMultiDict._extend_items  s9    $) 	! 	! Hc5HHS%    	! 	!r   c                 t    | j         j                                         | j                                          dS )z Remove all items from MultiDict.N)r   r$   clearr&   r'   s    r   r   zMultiDict.clear  s3    
!!!
!!!!!r   c                 2    |                      ||           d S r   )_replace)r(   r9   r   s      r   __setitem__zMultiDict.__setitem__  s    c5!!!!!r   c                    |                      |          }| j        j        }d}t          t	          |          dz
  dd          D ]}||         d         |k    r||= d}|st          |          | j                                         d S )NFr   r   T)r:   r   r$   rangerX   rE   r&   )r(   r9   r@   r_   foundr>   s         r   __delitem__zMultiDict.__delitem__  s    ;;s##
!s5zzA~r2.. 	 	AQx{h& !H 	&3--J##%%%%%r   Nc                     |                      |          }| j        j        D ]\  }}}||k    r|c S |                     ||           |S )zAReturn value for key, set value to default if key is not present.)r:   r   r$   r   rK   s          r   
setdefaultzMultiDict.setdefault  s`    ;;s##z( 	 	GAq!H} gr   c                 n   |                      |          }t          t          | j        j                            D ]`}| j        j        |         d         |k    rB| j        j        |         d         }| j        j        |= | j                                         |c S a|t          u rt          |          |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   )r:   r   rX   r   r$   r&   rD   rE   )r(   r9   rF   r@   r>   r   s         r   poponezMultiDict.popone(  s     ;;s##s4:,--.. 	 	Az #A&(2 
)!,Q/J%a(
'')))	
 g 	3--Nr   c                    d}|                      |          }g }t          t          | j        j                  dz
  dd          D ]c}| j        j        |         }|d         |k    rC|                    |d                    | j        j        |= | j                                         d}d|s|t          u rt          |          |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)
r:   r   rX   r   r$   r   r&   rD   rE   reverse)r(   r9   rF   r   r@   retr>   r   s           r   popallzMultiDict.popall=  s     ;;s##s4:,--12r:: 	 	A:$Q'DAw(" 

47###J%a(
''))) 	'! smm#KKMMMJr   c                     | j         j        rH| 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&   rE   )r(   r>   s     r   popitemzMultiDict.popitemX  s\    : 	.
!%%a((AJ##%%%Q41:,---r   c                 @    |                      ||d| j                   dS )z>Update the dictionary from *other*, overwriting existing keys.updateN)r   _update_itemsr   s      r   r   zMultiDict.updatea  s#    T68T-?@@@@@r   c                    |sd S i }|D ]\  }}}|                     |d          }t          |t          | j        j                            D ]<}| j        j        |         }|d         |k    r|dz   ||<   |||f| j        j        |<    n?=| j        j                            |||f           t          | j        j                  ||<   d}|t          | j        j                  k     rm| j        j        |         }|d         }|                     |          }	|	|dz  }T||	k    r| j        j        |= n|dz  }|t          | j        j                  k     m| j                                         d S r+   )rQ   r   rX   r   r$   r   r&   )
r(   r_   	used_keysr@   r9   r   startr>   r   poss
             r   r   zMultiDict._update_itemse  s    	F	$) 
	= 
	= Hc5MM(A..E5#dj&7"8"899 = =z(+7h& *+a%Ih',4c5+ADJ%a(E
 
!(((C)?@@@&)$**;&<&<	(# #dj'((( 
	:$Q'DAwH--))C QCx J%a((Q #dj'((( 
	 	
!!!!!r   c                 0   |                      |          }|                     |          }| j        j        }t	          t          |                    D ];}||         }|d         |k    r%|||f||<   |}| j                                          n><| j        j                            |||f           | j                                         d S |dz   }|t          |          k     r2||         }|d         |k    r||= n|dz  }|t          |          k     0d S d S r+   )r   r:   r   r$   r   rX   r&   r   )r(   r9   r   r@   r_   r>   r   rgts           r   r   zMultiDict._replace  sB   iinn;;s##
!s5zz"" 	 	A8DAw(" $c51a
''))) J$$hU%;<<<J##%%%F !G#e**n 	8DAw(" !HHQ #e**n 	 	 	 	 	r   r   )r   r   r   r   r)   r1   r4   r5   r0   r   r:   r   r   r   __copy__r   r   r   r   r   r   r   rD   r   r   r   r   r   r   r   r   r   r   r   r      s       99P P P
 &( G	G 	G 	G7 7 7    " " "
! ! !
 HA A A     D! ! !" " "" " "& & &    #*    & C")    6. . .A A A" " "@    r   r   c                       e Zd ZdZd ZdS )r   z@Dictionary with the support for duplicate case-insensitive keys.c                 *    |                                 S r   r   r8   s     r   r:   zCIMultiDict._title  r   r   N)r   r   r   r   r:   r   r   r   r   r     s)        JJ    r   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )_Iter_size_iterc                 "    || _         || _        d S r   r   )r(   sizeiterators      r   r)   z_Iter.__init__  s    



r   c                     | S r   r   r'   s    r   rU   z_Iter.__iter__  s    r   c                 *    t          | j                  S r   )nextr   r'   s    r   __next__z_Iter.__next__  s    DJr   c                     | j         S r   )r   r'   s    r   __length_hint__z_Iter.__length_hint__  s
    zr   N)r   r   r   r3   r)   rU   r   r   r   r   r   r   r     sU        "I             r   r   c                       e Zd Zd Zd ZdS )	_ViewBasec                     || _         d S r   )r   )r(   impls     r   r)   z_ViewBase.__init__  s    


r   c                 4    t          | j        j                  S r   rW   r'   s    r   rY   z_ViewBase.__len__  rZ   r   N)r   r   r   r)   rY   r   r   r   r   r     s2          & & & & &r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )r^   c                     t          |t                    st          |t                    sJ t          |          dk    sJ | j        j        D ]!\  }}}|d         |k    r|d         |k    r dS "dS )Nr   r   r   TF)r   tupler   rX   r   r$   )r(   r   r>   r?   r,   s        r   rr   z_ItemsView.__contains__  s    $&&@*T4*@*@@@@4yyA~z( 	 	GAq!Aw!| Q1 ttur   c                 v    t          t          |           |                     | j        j                            S r   r   rX   r   r   r   r'   s    r   rU   z_ItemsView.__iter__  )    SYY

4:+> ? ?@@@r   c              #   z   K   | j         j        D ]+\  }}}|| j         j        k    rt          d          ||fV  ,d S )N#Dictionary changed during iterationr   r$   r   RuntimeError)r(   versionr>   r?   r,   s        r   r   z_ItemsView._iter  s[      z( 	 	GAq!$*-- J"#HIIIQ$JJJJ	 	r   c                     g }| j         j        D ]7}|                    d                    |d         |d                              8d                    |          }d                    | j        j        |          S )Nz
{!r}: {!r}r   r   rt   {}({})r   r$   r   rv   rx   ry   r   r(   lstr   rz   s       r   r{   z_ItemsView.__repr__  sp    J% 	> 	>DJJ|**47DG<<====yy~~t~6===r   Nr   r   r   rr   rU   r   r{   r   r   r   r^   r^     sS          A A A  > > > > >r   r^   c                   &    e Zd Zd Zd Zd Zd ZdS )ra   c                 B    | j         j        D ]}|d         |k    r dS dS )Nr   TFr   r$   )r(   r   r   s      r   rr   z_ValuesView.__contains__  s8    J% 	 	DAw% ttur   c                 v    t          t          |           |                     | j        j                            S r   r   r'   s    r   rU   z_ValuesView.__iter__  r   r   c              #   z   K   | j         j        D ]+}|| j         j        k    rt          d          |d         V  ,d S )Nr   r   r   r(   r   r   s      r   r   z_ValuesView._iter  U      J% 	 	D$*-- J"#HIIIq'MMMM	 	r   c                     g }| j         j        D ]0}|                    d                    |d                              1d                    |          }d                    | j        j        |          S )N{!r}r   rt   r   r   r   s       r   r{   z_ValuesView.__repr__  h    J% 	/ 	/DJJv}}T!W--....yy~~t~6===r   Nr   r   r   r   ra   ra     S          A A A  > > > > >r   ra   c                   &    e Zd Zd Zd Zd Zd ZdS )r\   c                 B    | j         j        D ]}|d         |k    r dS dS )Nr   TFr   )r(   r9   r   s      r   rr   z_KeysView.__contains__  s7    J% 	 	DAw#~ ttur   c                 v    t          t          |           |                     | j        j                            S r   r   r'   s    r   rU   z_KeysView.__iter__  r   r   c              #   z   K   | j         j        D ]+}|| j         j        k    rt          d          |d         V  ,d S )Nr   r   r   r   s      r   r   z_KeysView._iter  r   r   c                     g }| j         j        D ]0}|                    d                    |d                              1d                    |          }d                    | j        j        |          S )Nr   r   rt   r   r   r   s       r   r{   z_KeysView.__repr__  r   r   Nr   r   r   r   r\   r\     r   r   r\   )r1   typesr   collectionsr   _abcr   r   r/   rD   version_infor   r   r   upstrr    r   r#   r   r   r   r   r   r   r   	ItemsViewr^   
ValuesViewra   KeysViewr\   r   r   r   <module>r     s   



              3 3 3 3 3 3 3 3
&((v %LL      3    	   5qc??H H H H H H H H&R2 R2 R2 R2 R2 R2 R2 R2j' ' ' ' 'UL ' ' '() ) ) ) )~ ) ) )(j j j j j* j j jZ    )          "& & & & & & & &> > > > >CM > > >4> > > > >)S^ > > >0> > > > >	3< > > > > >r   