+
    ÂHàjï  ã                  óæ   € ^ 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   "Ú›/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/50f6b671e3f94b538e344231dfcb664f/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   ø€ äˆt�y‰y‹>˜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   é € ÐJ¹z±°˜#˜˜b   tÕ,»zùs   ‚r>   )Újoinr.   ©r!   s   &r   r    ÚHeaders.__str__I   s    € Ø�w‰wÑJ¸t¿zºzÓJÓJÈVÕ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$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯J©J©>¸Ð;Ð;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   € Ø�~‰~ÓˆØ—Z‘Z—_‘_Ó&ˆŒ
Ø—Z‘Z—_‘_Ó&ˆŒ
Øˆ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   € ä�4‹y×ÑÓ!Ð!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¨¯	©	«°t·z±zÑ(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   € Ü�D—J‘JÓÐ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   € Ø—
‘
˜3Ÿ9™9›;Õ'ˆÜˆu‹:˜Œ?Ø˜•8ˆOä% 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;   € Ø�
‰
×Ñ˜cŸi™i›k¨2Ó.×5Ñ5°eÔ<Ø�
‰
×Ñ˜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   € Ø—I‘I“Kˆ	Ø�
‰
×Ñ˜yÔ)à)-¯ªÔN©¡ °q·w±w³yÀIÑ7M”f�q“f©Ò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(   € Ü˜%¤×)Ò)Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(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*   é € ð 
ÙLPÀSœz¨#¬w×7Ò7ˆC�M‰MŒO¸SÔ@ËDùs   ‚57N)Útupler   r7   )r!   r   r2   r"   s   &*,€r   r7   ÚHeaders.update„   sB   ø€ ÷
 Œuñ 
ÙLPó
�u‰uñ 
Ù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   € ð �z‰z�~‰~˜cŸi™i›k¨2Ó.Ð.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   € ô
 �D—J‘JÓÐ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 ˆn˜S #˜XÕ&ô D ôP0˜Xô 0ð ØØˆC�ˆHÕØˆU�3˜�8�_ÕØðõ€ñr   