HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/h11/__pycache__/_headers.cpython-310.pyc
o

��h�(�@s�ddlZddlmZmZmZmZmZmZmZm	Z	ddl
mZmZddl
mZmZmZer2ddlmZzddlmZWneyIddlmZYnwdZe�d	�Ze�e�d
��Ze�e�d
��ZGdd�deeeef�Ze	eeeefeeeefeeeefeeeeffZed
ededdefdd��Z ed
ededdefdd��Z e	d!d
e	eefde!defdd��Z 	d!d
e	eefde!defdd�Z d
ededeefdd�Z"d
ededeedefdd�Z#ddde!fdd �Z$dS)"�N)�AnyStr�cast�List�overload�Sequence�Tuple�
TYPE_CHECKING�Union�)�
field_name�field_value)�bytesify�LocalProtocolError�validate)�Request)�Literal�s[0-9]+�asciic@s�eZdZdZdZdeeeeefddfdd�Zde	fdd	�Z
d
ede	fdd�Zde
fd
d�Zdefdd�Zde
deeeffdd�Zdeeeeffdd�ZdS)�Headersa�
    A list-like interface that allows iterating over headers as byte-pairs
    of (lowercased-name, value).

    Internally we actually store the representation as three-tuples,
    including both the raw original casing, in order to preserve casing
    over-the-wire, and the lowercased name, for case-insensitive comparisions.

    r = Request(
        method="GET",
        target="/",
        headers=[("Host", "example.org"), ("Connection", "keep-alive")],
        http_version="1.1",
    )
    assert r.headers == [
        (b"host", b"example.org"),
        (b"connection", b"keep-alive")
    ]
    assert r.headers.raw_items() == [
        (b"Host", b"example.org"),
        (b"Connection", b"keep-alive")
    ]
    �_full_items�
full_items�returnNcCs
||_dS�N�r)�selfr�r�B/usr/local/CyberPanel/lib/python3.10/site-packages/h11/_headers.py�__init__h�
zHeaders.__init__cC�
t|j�Sr)�boolr�rrrr�__bool__krzHeaders.__bool__�othercCst|�t|�kSr)�list)rr#rrr�__eq__n�zHeaders.__eq__cCrr)�lenrr!rrr�__len__qrzHeaders.__len__cCsdtt|��S)Nz
<Headers(%s)>)�reprr$r!rrr�__repr__tr&zHeaders.__repr__�idxcCs|j|\}}}||fSrr)rr+�_�name�valuerrr�__getitem__wszHeaders.__getitem__cCsdd�|jD�S)NcSsg|]	\}}}||f�qSrr)�.0�raw_namer,r.rrr�
<listcomp>|sz%Headers.raw_items.<locals>.<listcomp>rr!rrr�	raw_items{r&zHeaders.raw_items)�__name__�
__module__�__qualname__�__doc__�	__slots__rr�bytesrr r"�objectr%�intr(�strr*r/r3rrrrrMs r�headers�_parsedTrcC�dSrr�r=r>rrr�normalize_and_validate��rAFcCr?rrr@rrrrA�rBcCr?rrr@rrrrA�sc	Cs\g}d}d}|D]�\}}|s$t|�}t|�}tt|d|�tt|d|�t|t�s+J�t|t�s2J�|}|��}|dkr|dd�|�d�D�}t|�dkrPt	d	��|�
�}tt|d
�t|�tkrdt	d
��|durs|}|�
|||f�q||kr{t	d	��q|dkr�|r�t	dd
d��|��}|dkr�t	dd
d��d}|�
|||f�q|�
|||f�qt|�S)NFzIllegal header name {!r}zIllegal header value {!r}scontent-lengthcSsh|]}|���qSr)�strip)r0�lengthrrr�	<setcomp>�sz)normalize_and_validate.<locals>.<setcomp>�,r
z"conflicting Content-Length headerszbad Content-Lengthstransfer-encodingz"multiple Transfer-Encoding headersi�)�error_status_hintschunkedz,Only Transfer-Encoding: chunked is supportedT)r
r�_field_name_re�_field_value_re�
isinstancer9�lower�splitr'r�pop�_content_length_re�CONTENT_LENGTH_MAX_DIGITS�appendr)	r=r>�new_headers�seen_content_length�saw_transfer_encodingr-r.r1�lengthsrrrrA�sT���r-cCsPg}|jD] \}}}||kr%|��}|�d�D]
}|��}|r$|�|�qq|S)NrF)rrKrLrCrP)r=r-�outr,�
found_name�found_raw_value�found_split_valuerrr�get_comma_header�s$
�rY�
new_valuescCsPg}|jD]\}}}||kr|�||f�q|D]}|�|��|f�qt|�Sr)rrP�titlerA)r=r-rZrQ�found_raw_namerVrW�	new_valuerrr�set_comma_headers
�r^�requestrcCs"|jdkrdSt|jd�}d|vS)Ns1.1Fsexpects100-continue)�http_versionrYr=)r_�expectrrr�has_expect_100_continues
rb)F)%�re�typingrrrrrrrr	�_abnfrr�_utilr
rr�_eventsrr�ImportError�typing_extensionsrO�compilerN�encoderHrIr9rr<�HeaderTypesrAr rYr^rbrrrr�<module>s^(�
92���
����
��
�9/