HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/usr/local/lib/python3.10/dist-packages/h11/__pycache__/_headers.cpython-310.pyc
o

���g�'�@s�ddlZddlmZmZmZmZmZmZmZm	Z	ddl
mZmZddl
mZmZmZer2ddlmZzddlmZWneyIddlmZYnwe�d�Ze�e�d	��Ze�e�d	��ZGd
d�deeeef�Ze	eeeefeeeefeeeefeeeeffZeded
eddefdd��Zeded
eddefdd��Ze	d de	eefd
e defdd��Z	d de	eefd
e defdd�Zd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)�Literals[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�7/usr/local/lib/python3.10/dist-packages/h11/_headers.py�__init__f�
zHeaders.__init__cC�
t|j�Sr)�boolr�rrrr�__bool__irzHeaders.__bool__�othercCst|�t|�kSr)�list)rr"rrr�__eq__l�zHeaders.__eq__cCrr)�lenrr rrr�__len__orzHeaders.__len__cCsdtt|��S)Nz
<Headers(%s)>)�reprr#r rrr�__repr__rr%zHeaders.__repr__�idxcCs|j|\}}}||fSrr)rr*�_�name�valuerrr�__getitem__uszHeaders.__getitem__cCsdd�|jD�S)NcSsg|]	\}}}||f�qSrr)�.0�raw_namer+r-rrr�
<listcomp>zsz%Headers.raw_items.<locals>.<listcomp>rr rrr�	raw_itemsyr%zHeaders.raw_items)�__name__�
__module__�__qualname__�__doc__�	__slots__rr�bytesrrr!�objectr$�intr'�strr)r.r2rrrrrKs r�headers�_parsedTrcC�dSrr�r<r=rrr�normalize_and_validate��r@FcCr>rrr?rrrr@�rAcCr>rrr?rrrr@�sc	CsHg}d}d}|D]�\}}|s$t|�}t|�}tt|d|�tt|d|�t|t�s+J�t|t�s2J�|}|��}|dkrrdd�|�d�D�}t|�dkrPt	d	��|�
�}tt|d
�|duri|}|�|||f�q||krqt	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)r/�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�
isinstancer8�lower�splitr&r�pop�_content_length_re�appendr)	r<r=�new_headers�seen_content_length�saw_transfer_encodingr,r-r0�lengthsrrrr@�sP���r,cCsPg}|jD] \}}}||kr%|��}|�d�D]
}|��}|r$|�|�qq|S)NrE)rrJrKrBrN)r<r,�outr+�
found_name�found_raw_value�found_split_valuerrr�get_comma_header�s$
�rW�
new_valuescCsPg}|jD]\}}}||kr|�||f�q|D]}|�|��|f�qt|�Sr)rrN�titler@)r<r,rXrO�found_raw_namerTrU�	new_valuerrr�set_comma_header�s
�r\�requestrcCs"|jdkrdSt|jd�}d|vS)Ns1.1Fsexpects100-continue)�http_versionrWr<)r]�expectrrr�has_expect_100_continues
r`)F)$�re�typingrrrrrrrr	�_abnfrr�_utilr
rr�_eventsrr�ImportError�typing_extensions�compilerM�encoderGrHr8rr;�HeaderTypesr@rrWr\r`rrrr�<module>s\(�
:2���
����
��
�7/