
    g:                        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j2                        Z G d deej6                        Z G d  d!eej:                        Zy)"    N)array)abc   )MultiMappingMutableMultiMapping)   	   c                     | S N )clss    L/var/www/openai/venv/lib/python3.12/site-packages/multidict/_multidict_py.pyGenericAliasr          
    c                       e Zd ZdZdZy)istrzCase insensitive str.TN)__name__
__module____qualname____doc____is_istr__r   r   r   r   r      s
    Kr   r   c                 d    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% @AA88r   Qc                   V    e Zd ZdZd Zd Zej                  j                  dk7  rd Z	yy)_Impl)_itemsr   c                 2    g | _         | j                          y r   )r$   incr_versionselfs    r   __init__z_Impl.__init__(   s    r   c                 >    t         }|dxx   dz  cc<   |d   | _         y Nr   r   )r   )r(   vs     r   r&   z_Impl.incr_version,   s    	!	!r   pypyc                 l    t         j                  |       t        j                  | j                        z   S r   )object
__sizeof__sys	getsizeofr$   r'   s    r   r0   z_Impl.__sizeof__4   s%    $$T*S]]4;;-GGGr   N)
r   r   r   	__slots__r)   r&   r1   implementationnamer0   r   r   r   r#   r#   %   s2    &I &(	H )r   r#   c                   t    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y)r   c                     |S r   r   r(   keys     r   _titlez_Base._title9   r   r   c                     | j                  |      }| j                  j                  D cg c]  \  }}}||k(  s| }}}}|r|S |s
|t        ur|S t	        d|z        c c}}}w )z-Return a list of all values matching the key.Key not found: %rr:   r   r$   _markerKeyError)r(   r9   defaultidentityikr,   ress           r   getallz_Base.getall<   sj    ;;s# $

 1 1C 1WQ1Q(]q 1CJwg-N*S011 Ds
   A!A!c                     | j                  |      }| j                  j                  D ]  \  }}}||k(  s|c S  |t        ur|S t	        d|z        )zwGet first value matching the key.

        Raises KeyError if the key is not found and no default is provided.
        r<   r=   r(   r9   r@   rA   rB   rC   r,   s          r   getonez_Base.getoneF   sX    
 ;;s#zz((GAq!H} ) '!N*S011r   c                 $    | j                  |      S r   rH   r8   s     r   __getitem__z_Base.__getitem__U   s    {{3r   Nc                 &    | j                  ||      S )zGet first value matching the key.

        If the key is not found, returns the default (or None if no default is provided)
        rJ   )r(   r9   r@   s      r   getz	_Base.getX   s    
 {{3((r   c                 4    t        | j                               S r   )iterkeysr'   s    r   __iter__z_Base.__iter___   s    DIIK  r   c                 @    t        | j                  j                        S r   lenr   r$   r'   s    r   __len__z_Base.__len__b       4::$$%%r   c                 ,    t        | j                        S )z+Return a new view of the dictionary's keys.)	_KeysViewr   r'   s    r   rP   z
_Base.keyse   s    $$r   c                 ,    t        | j                        S )zAReturn a new view of the dictionary's items *(key, value) pairs).)
_ItemsViewr   r'   s    r   itemsz_Base.itemsi   s    $**%%r   c                 ,    t        | j                        S )z-Return a new view of the dictionary's values.)_ValuesViewr   r'   s    r   valuesz_Base.valuesm   s    4::&&r   c                     t        |t        j                        st        S t        |t              rm| j
                  j                  }|j
                  j                  }t        |      t        |      k7  ryt        ||      D ]  \  \  }}}\  }}}||k7  s||k7  s y yt        | j
                  j                        t        |      k7  ry| j                         D ]"  \  }	}
|j                  |	t              }|
|k7  s" y y)NFT)r   r   MappingNotImplementedr   r   r$   rT   zipr[   rM   r>   )r(   otherlftrhti1k2v1i2v2rC   r,   nvs               r   __eq__z_Base.__eq__q   s    %-!!eU#**##C++$$C3x3s8#.1#sm*Rlr2r8rRx  /< tzz  !SZ/JJLDAq1g&BBw ! r   c                 r    | j                  |      }| j                  j                  D ]  \  }}}||k(  s y y)NTF)r:   r   r$   )r(   r9   rA   rB   rC   r,   s         r   __contains__z_Base.__contains__   s9    ;;s#zz((GAq!H} ) r   c                     dj                  d | j                         D              }dj                  | j                  j                  |      S )N, c              3   F   K   | ]  \  }}d j                  ||        yw)z
'{}': {!r}N)format).0rC   r,   s      r   	<genexpr>z!_Base.__repr__.<locals>.<genexpr>   s"     L|tq!,,Q2|s   !z<{}({})>)joinr[   rr   	__class__r   )r(   bodys     r   __repr__z_Base.__repr__   s9    yyLtzz|LL  !8!8$??r   r   )r   r   r   r:   r>   rE   rH   rK   rM   rQ   rU   rP   r[   r^   rl   rn   rx   classmethodr   __class_getitem__r   r   r   r   r   8   s[     #* 2 #* 2 )!&%&'(@ $L1r   r   c                   "    e Zd ZdZd Zd Zd Zy)MultiDictProxyz'Read-only proxy for MultiDict instance.c                     t        |t        t        f      s#t        dj	                  t        |                  |j                  | _        y )Nz:ctor requires MultiDict or MultiDictProxy instance, not {})r   	MultiDictr|   r   rr   typer   r(   args     r   r)   zMultiDictProxy.__init__   s>    #	>:;!6$s), 
 YY
r   c                 ^    t        dj                  | j                  j                              )Nzcan't pickle {} objects)r   rr   rv   r   r'   s    r   
__reduce__zMultiDictProxy.__reduce__   s#    1889P9PQRRr   c                 4    t        | j                               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|      s    1S'r   r|   c                   "    e Zd ZdZd Zd Zd Zy)CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.c                     t        |t        t        f      s#t        dj	                  t        |                  |j                  | _        y )Nz>ctor requires CIMultiDict or CIMultiDictProxy instance, not {})r   CIMultiDictr   r   rr   r   r   r   s     r   r)   zCIMultiDictProxy.__init__   s?    #-=>?!6$s), 
 YY
r   c                 "    |j                         S r   titler8   s     r   r:   zCIMultiDictProxy._title       yy{r   c                 4    t        | j                               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      s    3)r   r   c                       e Zd ZdZd Zej                  j                  dk7  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y)r~   z/Dictionary with the support for duplicate keys.c                     t               | _        | j                  ||| j                  j                  | j
                         y r   )r#   r   _extendrv   r   _extend_itemsr(   argskwargss      r   r)   zMultiDict.__init__   s-    W
T64>>#:#:D<N<NOr   r-   c                 l    t         j                  |       t        j                  | j                        z   S r   )r/   r0   r1   r2   r   r'   s    r   r0   zMultiDict.__sizeof__   s%    $$T*S]]4::-FFFr   c                 N    | j                   t        | j                               ffS r   )rv   listr[   r'   s    r   r   zMultiDict.__reduce__   s    djjl!3 566r   c                     |S r   r   r8   s     r   r:   zMultiDict._title   r   r   c                 <    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                  j                  j                  || j	                  |      |f       | j                  j                          y r   )r:   r   r$   appendr   r&   )r(   r9   valuerA   s       r   addzMultiDict.add   sG    ;;s#

  (DIIcNE!BC

!r   c                 F    | j                   } || j                               S r   )rv   r[   )r(   r   s     r   r   zMultiDict.copy   s    nn4::<  r   c                 @    | j                  ||d| j                         y)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kD  r$t        dj                  |t        |                  |r|d   }t        |d   t        t
        f      r|s|j                  j                  }nt        |d      r|j                         }|r3t        |      }|j                  t        |j                                      g }|D ]e  }t        |      dk(  st        dj                  |            |j                  | j                  |d         | j                  |d         |d   f       g  ||       y  ||j                         D 	cg c](  \  }}	| j                  |      | j                  |      |	f* c}	}       y c c}	}w )Nr   z1{} takes at most 1 positional argument ({} given)r   r[      z3{} takes either dict or list of (key, value) tuples)rT   r   rr   r   r~   r|   r   r$   hasattrr[   r   r   r   r:   r   )
r(   r   r   r5   methodr   r[   itemr9   r   s
             r   r   zMultiDict._extend   sW   t9q=$fT3t95  q'C$q'I~#>?		((3())+Cs)CJJtFLLN34Dt9>'%%+VD\  LL$++d1g"6		$q'8JDQRG!TU   5M '-lln&4
U [[%tyy~u=&4s   -E=
c                 >    |D ]  \  }}}| j                  ||        y r   )r   )r(   r[   rA   r9   r   s        r   r   zMultiDict._extend_items  s!    $) Hc5HHS%  %*r   c                     | j                   j                  j                          | j                   j                          y)z Remove all items from MultiDict.N)r   r$   clearr&   r'   s    r   r   zMultiDict.clear  s(    

!

!r   c                 (    | j                  ||       y r   )_replace)r(   r9   r   s      r   __setitem__zMultiDict.__setitem__  s    c5!r   c                    | j                  |      }| j                  j                  }d}t        t	        |      dz
  dd      D ]  }||   d   |k(  s||= d} |st        |      | j                  j                          y )NFr   r   T)r:   r   r$   rangerT   r?   r&   )r(   r9   rA   r[   foundrB   s         r   __delitem__zMultiDict.__delitem__  sz    ;;s#

!!s5zA~r2.AQx{h&!H / 3-JJ##%r   Nc                     | j                  |      }| j                  j                  D ]  \  }}}||k(  s|c S  | j                  ||       |S )zAReturn value for key, set value to default if key is not present.)r:   r   r$   r   rG   s          r   
setdefaultzMultiDict.setdefault&  sK    ;;s#zz((GAq!H} ) 	gr   c                    | j                  |      }t        t        | j                  j                              D ]r  }| j                  j                  |   d   |k(  s#| j                  j                  |   d   }| j                  j                  |= | j                  j                          |c S  |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   rT   r   r$   r&   r>   r?   )r(   r9   r@   rA   rB   r   s         r   poponezMultiDict.popone/  s     ;;s#s4::,,-.Azz  #A&(2

))!,Q/JJ%%a(

'') / g3-Nr   c                    d}| j                  |      }g }t        t        | j                  j                        dz
  dd      D ]k  }| j                  j                  |   }|d   |k(  s%|j                  |d          | j                  j                  |= | j                  j                          d}m |s|t        u rt        |      |S |j                          |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   rT   r   r$   r   r&   r>   r?   reverse)r(   r9   r@   r   rA   retrB   r   s           r   popallzMultiDict.popallD  s     ;;s#s4::,,-12r:A::$$Q'DAw("

47#JJ%%a(

'') ; '!sm#KKMJr   c                     | j                   j                  rI| j                   j                  j                  d      }| j                   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(   rB   s     r   popitemzMultiDict.popitem_  sW    ::

!!%%a(AJJ##%Q41:,--r   c                 @    | j                  ||d| j                         y)z>Update the dictionary from *other*, overwriting existing keys.updateN)r   _update_itemsr   s      r   r   zMultiDict.updateh  s    T68T-?-?@r   c                 :   |sy i }|D ]  \  }}}|j                  |d      }t        |t        | j                  j                              D ]I  }| j                  j                  |   }|d   |k(  s%|dz   ||<   |||f| j                  j                  |<     | j                  j                  j                  |||f       t        | j                  j                        ||<    d}|t        | j                  j                        k  r|| j                  j                  |   }|d   }|j                  |      }	|	|dz  }Y||	k\  r| j                  j                  |= n|dz  }|t        | j                  j                        k  r|| j                  j                          y r+   )rM   r   rT   r   r$   r   r&   )
r(   r[   	used_keysrA   r9   r   startrB   r   poss
             r   r   zMultiDict._update_itemsl  s{   	$) Hc5MM(A.E5#djj&7&7"89zz((+7h&*+a%Ih',4c5+ADJJ%%a( : 

!!(((C)?@&)$***;*;&<	(# %* #djj''((::$$Q'DAwH--)C{QCxJJ%%a(Q #djj''(( 	

!r   c                    | j                  |      }| j                  |      }| j                  j                  }t	        t        |            D ]5  }||   }|d   |k(  s|||f||<   |}| j                  j                           nD | j                  j                  j                  |||f       | j                  j                          y |dz   }|t        |      k  r&||   }|d   |k(  r||= n|dz  }|t        |      k  r%y y r+   )r   r:   r   r$   r   rT   r&   r   )r(   r9   r   rA   r[   rB   r   rgts           r   r   zMultiDict._replace  s    iin;;s#

!!s5z"A8DAw("$c51a

'') # JJ$$hU%;<JJ##% !G#e*n8DAw("!HQ #e*nr   r   )r   r   r   r   r)   r1   r4   r5   r0   r   r:   r   r   r   __copy__r   r   r   r   r   r   r   r>   r   r   r   r   r   r   r   r   r   r   r~   r~      s    9P
 &(	G7"
!
 HA D!""& #* & C") 6.A"@r   r~   c                       e Zd ZdZd Zy)r   z@Dictionary with the support for duplicate case-insensitive keys.c                 "    |j                         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r   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)_Iter_size_iterc                      || _         || _        y r   r   )r(   sizeiterators      r   r)   z_Iter.__init__  s    

r   c                     | S r   r   r'   s    r   rQ   z_Iter.__iter__  s    r   c                 ,    t        | j                        S r   )nextr   r'   s    r   __next__z_Iter.__next__  s    DJJr   c                     | j                   S r   )r   r'   s    r   __length_hint__z_Iter.__length_hint__  s    zzr   N)r   r   r   r3   r)   rQ   r   r   r   r   r   r   r     s    "I r   r   c                       e Zd Zd Zd Zy)	_ViewBasec                     || _         y r   )r   )r(   impls     r   r)   z_ViewBase.__init__  s	    
r   c                 @    t        | j                  j                        S r   rS   r'   s    r   rU   z_ViewBase.__len__  rV   r   N)r   r   r   r)   rU   r   r   r   r   r     s    &r   r   c                   $    e Zd Zd Zd Zd Zd Zy)rZ   c                     t        |t              st        |t              sJ t        |      dk(  sJ | j                  j
                  D ]  \  }}}|d   |k(  s|d   |k(  s y y)Nr   r   r   TF)r   tupler   rT   r   r$   )r(   r   rB   rC   r,   s        r   rn   z_ItemsView.__contains__  sb    $&*T4*@@@4yA~~zz((GAq!Aw!|Q1 ) r   c                 r    t        t        |       | j                  | j                  j                              S r   r   rT   r   r   r   r'   s    r   rQ   z_ItemsView.__iter__  &    SY

4::+>+> ?@@r   c              #      K   | j                   j                  D ]0  \  }}}|| j                   j                  k7  rt        d      ||f 2 y w)N#Dictionary changed during iterationr   r$   r   RuntimeError)r(   versionrB   rC   r,   s        r   r   z_ItemsView._iter  sG     zz((GAq!$**---"#HIIQ$J )s   AAc                     g }| j                   j                  D ])  }|j                  dj                  |d   |d                + dj	                  |      }dj                  | j
                  j                  |      S )Nz
{!r}: {!r}r   r   rp   {}({})r   r$   r   rr   ru   rv   r   r(   lstr   rw   s       r   rx   z_ItemsView.__repr__  sd    JJ%%DJJ|**47DG<= &yy~t~~66==r   Nr   r   r   rn   rQ   r   rx   r   r   r   rZ   rZ     s    A>r   rZ   c                   $    e Zd Zd Zd Zd Zd Zy)r]   c                 N    | j                   j                  D ]  }|d   |k(  s y y)Nr   TFr   r$   )r(   r   r   s      r   rn   z_ValuesView.__contains__  s*    JJ%%DAw% & r   c                 r    t        t        |       | j                  | j                  j                              S r   r   r'   s    r   rQ   z_ValuesView.__iter__  r   r   c              #      K   | j                   j                  D ]-  }|| j                   j                  k7  rt        d      |d    / y w)Nr   r   r   r(   r   r   s      r   r   z_ValuesView._iter  A     JJ%%D$**---"#HIIq'M &   AA
c                     g }| j                   j                  D ]%  }|j                  dj                  |d                ' dj	                  |      }dj                  | j
                  j                  |      S )N{!r}r   rp   r   r   r   s       r   rx   z_ValuesView.__repr__  \    JJ%%DJJv}}T!W-. &yy~t~~66==r   Nr   r   r   r   r]   r]         A>r   r]   c                   $    e Zd Zd Zd Zd Zd Zy)rX   c                 N    | j                   j                  D ]  }|d   |k(  s y y)Nr   TFr   )r(   r9   r   s      r   rn   z_KeysView.__contains__  s)    JJ%%DAw#~ & r   c                 r    t        t        |       | j                  | j                  j                              S r   r   r'   s    r   rQ   z_KeysView.__iter__  r   r   c              #      K   | j                   j                  D ]-  }|| j                   j                  k7  rt        d      |d    / y w)Nr   r   r   r   s      r   r   z_KeysView._iter  r   r   c                     g }| j                   j                  D ]%  }|j                  dj                  |d                ' dj	                  |      }dj                  | j
                  j                  |      S )Nr   r   rp   r   r   r   s       r   rx   z_KeysView.__repr__
  r   r   Nr   r   r   r   rX   rX     r   r   rX   )r1   typesr   collectionsr   _abcr   r   r/   r>   version_infor   r   r   upstrr    r   r#   r   r|   r   r~   r   r   r   	ItemsViewrZ   
ValuesViewr]   KeysViewrX   r   r   r   <module>r	     s    
    3
(v%%L3  	 qc?H H&X2 X2v'UL '()~ )(j* jZ)  "& &>CMM >4>)S^^ >0>	3<< >r   