403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/websockets/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/websockets/__pycache__/datastructures.cpython-311.pyc
�

�=Xcj��.�ddlmZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZej
dd�dkrddlmZneZgd�ZGd�d	e��ZGd
�de
eef��ZGd�d
e��Zeee	eefeeeefefZdS)�)�annotationsN)	�Any�Dict�Iterable�Iterator�List�Mapping�MutableMapping�Tuple�Union�)��)�Protocol)�Headers�HeadersLike�MultipleValuesErrorc�$��eZdZdZd�fd�Z�xZS)rzT
    Exception raised when :class:`Headers` has more than one value for a key.

    �return�strc���t|j��dkrt|jd��St�����S�N�r)�len�args�repr�super�__str__)�self�	__class__s ��;/usr/lib/python3/dist-packages/websockets/datastructures.pyrzMultipleValuesError.__str__ s>����t�y�>�>�Q�����	�!��%�%�%��w�w��� � � ��rr)�__name__�
__module__�__qualname__�__doc__r�
__classcell__�r s@r!rrsG���������
!�!�!�!�!�!�!�!�!�!r"rc���eZdZdZddgZd%d
�Zd&d�Zd&d�Zd'd
�Zd(d�Z	d)d�Z
d*d�Zd+d�Zd,d�Z
d-d�Zd.d�Zd/d�Zd0d�Zd%�fd �Zd1d"�Zd2d$�Z�xZS)3ra�
    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�_listrr�kwargsrr�Nonec�<�i|_g|_|j|i|��dS�N)r+r,�update)rrr-s   r!�__init__zHeaders.__init__Ps-��+-��
�,.��
����T�$�V�$�$�$�$�$r"c�P�d�d�|jD����dzS)N�c3�,K�|]\}}|�d|�d�V��dS)z: �
N�)�.0�key�values   r!�	<genexpr>z"Headers.__str__.<locals>.<genexpr>Vs7����J�J���e�#�,�,��,�,�,�J�J�J�J�J�Jr"r6)�joinr,�rs r!rzHeaders.__str__Us*���w�w�J�J�t�z�J�J�J�J�J�V�S�Sr"c�0�|jj�d|j�d�S)N�(�))r r$r,r=s r!�__repr__zHeaders.__repr__Xs ���.�)�;�;�D�J�;�;�;�;r"c��|���}|j���|_|j���|_|Sr0)r r+�copyr,)rrCs  r!rCzHeaders.copy[s<���~�~�����Z�_�_�&�&��
��Z�_�_�&�&��
��r"�bytesc�D�t|�����Sr0)r�encoder=s r!�	serializezHeaders.serializeas���4�y�y���!�!�!r"r9�object�boolc�b�t|t��o|���|jvSr0)�
isinstancer�lowerr+�rr9s  r!�__contains__zHeaders.__contains__gs&���#�s�#�#�A��	�	���t�z�(A�Ar"�
Iterator[str]c�*�t|j��Sr0)�iterr+r=s r!�__iter__zHeaders.__iter__js���D�J���r"�intc�*�t|j��Sr0)rr+r=s r!�__len__zHeaders.__len__ms���4�:���r"c��|j|���}t|��dkr|dSt|���r)r+rLrr�rr9r:s   r!�__getitem__zHeaders.__getitem__rs<���
�3�9�9�;�;�'���u�:�:��?�?���8�O�%�c�*�*�*r"r:c��|j�|���g���|��|j�||f��dSr0)r+�
setdefaultrL�appendr,rWs   r!�__setitem__zHeaders.__setitem__ysP���
���c�i�i�k�k�2�.�.�5�5�e�<�<�<��
���3��,�'�'�'�'�'r"c���|����|j�����fd�|jD��|_dS)Nc�N��g|]!\}}|����k�||f��"Sr7)rL)r8�k�v�	key_lowers   �r!�
<listcomp>z'Headers.__delitem__.<locals>.<listcomp>�s3���N�N�N���A�q�w�w�y�y�I�7M�7M�q�!�f�7M�7M�7Mr")rLr+�__delitem__r,)rr9ras  @r!rczHeaders.__delitem__}sG����I�I�K�K�	��
���y�)�)�)�N�N�N�N���N�N�N��
�
�
r"�otherrc�Z�t|t��stS|j|jkSr0)rKr�NotImplementedr+)rrds  r!�__eq__zHeaders.__eq__�s)���%��)�)�	"�!�!��z�U�[�(�(r"c�"�i|_g|_dS)z&
        Remove all headers.

        N)r+r,r=s r!�clearz
Headers.clear�s��
��
���
�
�
r"c�l��td�|D����}t��j|i|��dS)zT
        Update from a :class:`Headers` instance and/or keyword arguments.

        c3�lK�|]/}t|t��r|���n|V��0dSr0)rKr�	raw_items)r8�args  r!r;z!Headers.update.<locals>.<genexpr>�sN����
�
�EH�z�#�w�7�7�@�C�M�M�O�O�O�S�
�
�
�
�
�
r"N)�tuplerr1)rrr-r s   �r!r1zHeaders.update�sS���
�
�
�LP�
�
�
�
�
��	������'��'�'�'�'�'r"�	List[str]c�\�|j�|���g��S)z|
        Return the (possibly empty) list of all values for a header.

        Args:
            key: header name.

        )r+�getrLrMs  r!�get_allzHeaders.get_all�s"���z�~�~�c�i�i�k�k�2�.�.�.r"�Iterator[Tuple[str, str]]c�*�t|j��S)zO
        Return an iterator of all values as ``(name, value)`` pairs.

        )rQr,r=s r!rlzHeaders.raw_items�s��
�D�J���r")rrr-rrr.r#)rr)rrD)r9rHrrI)rrO)rrS�r9rrr)r9rr:rrr.)r9rrr.)rdrrrI)rr.)r9rrro)rrs)r$r%r&r'�	__slots__r2rrArCrGrNrRrUrXr\rcrgrir1rrrlr(r)s@r!rr's��������#�#�J�'�"�I�%�%�%�%�
T�T�T�T�<�<�<�<�����"�"�"�"�B�B�B�B� � � � �����
+�+�+�+�(�(�(�(�O�O�O�O�)�)�)�)�
����(�(�(�(�(�(�/�/�/�/� � � � � � � � r"rc�"�eZdZdZd	d�Zd
d�ZdS)�SupportsKeysAndGetItemz_
    Dict-like types with ``keys() -> str`` and ``__getitem__(key: str) -> str`` methods.

    r�
Iterable[str]c��dSr0r7r=s r!�keyszSupportsKeysAndGetItem.keys�����r"r9rc��dSr0r7rMs  r!rXz"SupportsKeysAndGetItem.__getitem__�r|r"N)rryru)r$r%r&r'r{rXr7r"r!rxrx�sF��������
���������r"rx)�
__future__r�sys�typingrrrrrr	r
rr�version_inforrH�__all__�LookupErrorrrrrxrr7r"r!�<module>r�s���"�"�"�"�"�"�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���B�Q�B��6�!�!���������H�<�
;�
;��
!�
!�
!�
!�
!�+�
!�
!�
!�D �D �D �D �D �n�S�#�X�&�D �D �D �P
�
�
�
�
�X�
�
�
����C��H���U�3��8�_�������r"

Youez - 2016 - github.com/yon3zu
LinuXploit