+
    Ti                        ^ RI Ht ^ RIHtHtHtHt ^ RIHtH	t	H
t
 . ROt ! R R]4      t ! R R]]]3,          4      t ! R R	]	4      t]
]]]]3,          ]]]]3,          ,          ]3,          tR
# )    )annotations)IterableIteratorMappingMutableMapping)AnyProtocolUnion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   "d/home/kuhnn/.local/share/uv/tools/nano-pdf/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   r2   s   &*,r   __init__Headers.__init__D   s!    +-
,.
T$V$r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r4   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   r4   L   s     < <# <r   c                	P    V P                   P                   R V P                  : R2# )())r"   r$   r.   rE   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   r4   O   s      g r   c                	    V P                  4       pV P                  P                  4       Vn        V P                  P                  4       Vn        V# r6   )r"   r-   copyr.   )r!   rO   s   & r   rO   Headers.copyO   s7    ~~ZZ__&
ZZ__&
r   c                   V ^8  d   QhRR/# )r   r   bytesr   )r   s   "r   r   r4   U   s     " "5 "r   c                	4    \        V 4      P                  4       # r6   )r   encoderE   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   r4   [   s     B B B4 Br   c                	l    \        V\        4      ;'       d    VP                  4       V P                  9   # r6   )
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   r4   ^   s        -  r   c                	,    \        V P                  4      # r6   )iterr-   rE   s   &r   __iter__Headers.__iter__^   s    DJJr   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r4   a   s       r   c                	,    \        V P                  4      # r6   )r   r-   rE   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   r4   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@   rA   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   rA   r   r3   r   )r   s   "r   r   r4   m   s!     ( (s (3 (4 (r   c                	    V P                   P                  VP                  4       . 4      P                  V4       V P                  P                  W34       R # r6   )r-   
setdefaultr\   appendr.   rm   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   r3   r   )r   s   "r   r   r4   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 r6   )r\   r-   __delitem__r.   )r!   r@   	key_lowerkvs   &&   r   rx   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   rY   r   )r   s   "r   r   r4   w   s     ) )C )D )r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8H  # r6   )r[   r   NotImplementedr-   )r!   r~   s   &&r   __eq__Headers.__eq__w   s(    %))!!zzU[[((r   c                   V ^8  d   QhRR/# )r   r   r3   r   )r   s   "r   r   r4   |   s      t r   c                "    / V n         . V n        R# )z
Remove all headers.

Nr-   r.   rE   s   &r   clearHeaders.clear|   s    
 

r   c               $    V ^8  d   QhRRRRRR/# r0   r   )r   s   "r   r   r4      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r6   )r[   r   	raw_items)r?   args   & r   rB   !Headers.update.<locals>.<genexpr>   s*      
LPSz#w77CMMOS@Ds   57N)tupler   r7   )r!   r   r2   r"   s   &*,r   r7   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   r4      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   r4      s        4  r   c                ,    \        V P                  4      # )z?
Return an iterator of all values as ``(name, value)`` pairs.

)rb   r.   rE   s   &r   r   Headers.raw_items   s    
 DJJr   r   )r$   r%   r&   r'   r(   	__slots__r8   r    rK   rO   rU   r^   rc   rh   rn   rt   rx   r   r   r7   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 # r6   r   rE   s   &r   keysSupportsKeysAndGetItem.keys   s    Sr   c                    V ^8  d   QhRRRR/# rk   r   )r   s   "r   r   r      s    //s/s/r   c                	    R # r6   r   r]   s   &&r   rn   "SupportsKeysAndGetItem.__getitem__   s    Cr   r   N)r$   r%   r&   r'   r(   r   rn   r)   r   r   r   r   r      s    
 )//r   r   N)r   r1   r   )
__future__r   collections.abcr   r   r   r   typingr   r	   r
   __all__LookupErrorr   r   r   r   r   r1   r   r   r   <module>r      s    " G G ' '
!+ 
!D nS#X& D P0X 0 CHU38_r   