+
    i                        ^ RI Ht ^ RIHtHtHtHt ^ RIHtH	t	 . ROt
 ! R R]4      t ! R R]]]3,          4      t ! R R	]	4      t]]]]3,          ,          ]]]]3,          ,          ,          ],          tR
# )    )annotations)IterableIteratorMappingMutableMapping)AnyProtocolHeadersMultipleValuesErrorc                  2   a  ] tR t^tRtR V 3R lltRtV ;t# )r   zH
Exception raised when :class:`Headers` has multiple values for a key.

c                   V ^8  d   QhRR/#    returnstr )formats   "`/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/websockets/datastructures.py__annotate__ MultipleValuesError.__annotate__   s     ! ! !    c                	   < \        V P                  4      ^8X  d   \        V P                  ^ ,          4      # \        SV `  4       #    )lenargsreprsuper__str__)self	__class__s   &r   r   MultipleValuesError.__str__   s3    tyy>Q		!%%w  r   r   )__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__r!   s   @r   r   r      s    
! !r   c                     a  ] tR t^tRtRR.tR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR V 3R lltR  R! ltR" R# ltR$tV ;t# )%r
   al  
Efficient data structure for manipulating HTTP headers.

A :class:`list` of ``(name, values)`` is inefficient for lookups.

A :class:`dict` doesn't suffice because header names are case-insensitive
and multiple occurrences of headers with the same name are possible.

:class:`Headers` stores HTTP headers in a hybrid data structure to provide
efficient insertions and lookups while preserving the original data.

In order to account for multiple values with minimal hassle,
:class:`Headers` follows this logic:

- When getting a header with ``headers[name]``:
    - if there's no value, :exc:`KeyError` is raised;
    - if there's exactly one value, it's returned;
    - if there's more than one value, :exc:`MultipleValuesError` is raised.

- When setting a header with ``headers[name] = value``, the value is
  appended to the list of values for that header.

- When deleting a header with ``del headers[name]``, all values for that
  header are removed (this is slow).

Other methods for manipulating headers are consistent with this logic.

As long as no header occurs multiple times, :class:`Headers` behaves like
:class:`dict`, except keys are lower-cased to provide case-insensitivity.

Two methods support manipulating multiple values explicitly:

- :meth:`get_all` returns a list of all values for a header;
- :meth:`raw_items` returns an iterator of ``(name, values)`` pairs.

_dict_listc               $    V ^8  d   QhRRRRRR/# r   r   HeadersLikekwargsr   r   Noner   )r   s   "r   r   Headers.__annotate__D   s!     % %k %S %T %r   c                	F    / V n         . V n        V P                  ! V/ VB  R # N)r,   r-   update)r    r   r1   s   &*,r   __init__Headers.__init__D   s!    +-
,.
T$V$r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r3   I   s     T T Tr   c                	T    R P                  R V P                   4       4      R,           # ) c              3  6   "   T F  w  rV R V R2x  K  	  R# 5i)z: 
Nr   ).0keyvalues   &  r   	<genexpr>"Headers.__str__.<locals>.<genexpr>J   s     Jz#bt,zs   r=   )joinr-   r    s   &r   r   Headers.__str__I   s     wwJtzzJJVSSr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r3   L   s     < <# <r   c                	P    V P                   P                   R V P                  : R2# )())r!   r#   r-   rD   s   &r   __repr__Headers.__repr__L   s$    ..))*!DJJ>;;r   c                   V ^8  d   QhRR/# )r   r   r
   r   )r   s   "r   r   r3   O   s      g r   c                	    V P                  4       pV P                  P                  4       Vn        V P                  P                  4       Vn        V# r5   )r!   r,   copyr-   )r    rN   s   & r   rN   Headers.copyO   s7    ~~ZZ__&
ZZ__&
r   c                   V ^8  d   QhRR/# )r   r   bytesr   )r   s   "r   r   r3   U   s     " "5 "r   c                	4    \        V 4      P                  4       # r5   )r   encoderD   s   &r   	serializeHeaders.serializeU   s    4y!!r   c                    V ^8  d   QhRRRR/# )r   r?   objectr   boolr   )r   s   "r   r   r3   [   s     B B B4 Br   c                	l    \        V\        4      ;'       d    VP                  4       V P                  9   # r5   )
isinstancer   lowerr,   r    r?   s   &&r   __contains__Headers.__contains__[   s&    #s#AA		tzz(AAr   c                   V ^8  d   QhRR/# )r   r   zIterator[str]r   )r   s   "r   r   r3   ^   s        -  r   c                	,    \        V P                  4      # r5   )iterr,   rD   s   &r   __iter__Headers.__iter__^   s    DJJr   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r3   a   s       r   c                	,    \        V P                  4      # r5   )r   r,   rD   s   &r   __len__Headers.__len__a   s    4::r   c                    V ^8  d   QhRRRR/# r   r?   r   r   r   )r   s   "r   r   r3   f   s     + +s +s +r   c                	    V P                   VP                  4       ,          p\        V4      ^8X  d
   V^ ,          # \        V4      hr   )r,   r[   r   r   r    r?   r@   s   && r   __getitem__Headers.__getitem__f   s5    

399;'u:?8O%c**r   c               $    V ^8  d   QhRRRRRR/# )r   r?   r   r@   r   r2   r   )r   s   "r   r   r3   m   s!     ( (s (3 (4 (r   c                	    V P                   P                  VP                  4       . 4      P                  V4       V P                  P                  W34       R # r5   )r,   
setdefaultr[   appendr-   rl   s   &&&r   __setitem__Headers.__setitem__m   s;    

ciik2.55e<

3,'r   c                    V ^8  d   QhRRRR/# )r   r?   r   r   r2   r   )r   s   "r   r   r3   q   s     O Os Ot Or   c                	    VP                  4       pV P                  P                  V4       V P                   UUu. uF  w  r4VP                  4       V8w  g   K  W43NK!  	  uppV n        R # u uppi r5   )r[   r,   __delitem__r-   )r    r?   	key_lowerkvs   &&   r   rw   Headers.__delitem__q   sO    IIK	

y))-NqwwyI7MfqfN
Ns   A+A+c                    V ^8  d   QhRRRR/# )r   otherr   r   rX   r   )r   s   "r   r   r3   w   s     ) )C )D )r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8H  # r5   )rZ   r
   NotImplementedr,   )r    r}   s   &&r   __eq__Headers.__eq__w   s(    %))!!zzU[[((r   c                   V ^8  d   QhRR/# )r   r   r2   r   )r   s   "r   r   r3   |   s      t r   c                "    / V n         . V n        R# )z
Remove all headers.

Nr,   r-   rD   s   &r   clearHeaders.clear|   s    
 

r   c               $    V ^8  d   QhRRRRRR/# r/   r   )r   s   "r   r   r3      s!     ( (K (3 (4 (r   c                   < \         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        SV `  ! V/ VB  R# )zD
Update from a :class:`Headers` instance and/or keyword arguments.

c              3  r   "   T F-  p\        V\        4      '       d   VP                  4       MTx  K/  	  R # 5ir5   )rZ   r
   	raw_items)r>   args   & r   rA   !Headers.update.<locals>.<genexpr>   s*      
LPSz#w77CMMOS@Ds   57N)tupler   r6   )r    r   r1   r!   s   &*,r   r6   Headers.update   sB    
 u 
LP
uu 
LP
 
 	''r   c                    V ^8  d   QhRRRR/# )r   r?   r   r   z	list[str]r   )r   s   "r   r   r3      s     / /3 /9 /r   c                V    V P                   P                  VP                  4       . 4      # )z\
Return the (possibly empty) list of all values for a header.

Args:
    key: Header name.

)r,   getr[   r\   s   &&r   get_allHeaders.get_all   s     zz~~ciik2..r   c                   V ^8  d   QhRR/# )r   r   zIterator[tuple[str, str]]r   )r   s   "r   r   r3      s        4  r   c                ,    \        V P                  4      # )z?
Return an iterator of all values as ``(name, value)`` pairs.

)ra   r-   rD   s   &r   r   Headers.raw_items   s    
 DJJr   r   )r#   r$   r%   r&   r'   	__slots__r7   r   rJ   rN   rT   r]   rb   rg   rm   rs   rw   r   r   r6   r   r   r(   r)   r*   s   @r   r
   r
      sr    #J '"I%
T<"B 
+(O)
( (/   r   c                  2    ] tR t^tRtR R ltR R ltRtR# )SupportsKeysAndGetItemzW
Dict-like types with ``keys() -> str`` and ``__getitem__(key: str) -> str`` methods.

c                   V ^8  d   QhRR/# )r   r   zIterable[str]r   )r   s   "r   r   #SupportsKeysAndGetItem.__annotate__   s    ((m(r   c                	    R # r5   r   rD   s   &r   keysSupportsKeysAndGetItem.keys   s    Sr   c                    V ^8  d   QhRRRR/# rj   r   )r   s   "r   r   r      s    //s/s/r   c                	    R # r5   r   r\   s   &&r   rm   "SupportsKeysAndGetItem.__getitem__   s    Cr   r   N)r#   r$   r%   r&   r'   r   rm   r(   r   r   r   r   r      s    
 )//r   r   N)r
   r0   r   )
__future__r   collections.abcr   r   r   r   typingr   r	   __all__LookupErrorr   r   r
   r   r   r0   r   r   r   <module>r      s}    " G G  
!+ 
!D nS#X& D P0X 0 gc3h(5c?";;>TT r   