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: //usr/local/lib/python3.10/dist-packages/h11/__pycache__/_readers.cpython-310.pyc
o

���g� �@s\UddlZddlmZmZmZmZmZmZmZm	Z	m
Z
ddlmZm
Z
mZmZddlmZmZmZmZmZddlmZddlmZmZmZmZmZmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%d	gZ&e�'e
�(d
��Z)e�'d�Z*dee+d
ee+fdd�Z,dee+d
eee+e+ffdd�Z-e�'e�(d
��Z.ded
eefdd�Z/e�'e�(d
��Z0ded
e
eedffdd�Z1Gdd�d�Z2e�'e�(d
��Z3Gdd�d�Z4Gdd�d�Z5ded
dfdd�Z6ee
e	e$ee	e$e	e$ffe
edefee7edeffffZ8eefe/e efe1e efe1eefe6eefe6eefe6e efe6e efe6e efe6ee4e2e5d �i
Z9e8e:d	<dS)!�N)	�Any�Callable�Dict�Iterable�NoReturn�Optional�Tuple�Type�Union�)�chunk_header�header_field�request_line�status_line)�Data�EndOfMessage�InformationalResponse�Request�Response)�
ReceiveBuffer)�CLIENT�CLOSED�DONE�IDLE�
MUST_CLOSE�	SEND_BODY�
SEND_RESPONSE�SERVER)�LocalProtocolError�RemoteProtocolError�Sentinel�validate�READERS�asciis[ \t]+�lines�returnccs��t|�}d}|D]2}t�|�}|r2|durtd��t|t�s#t|�}|d7}|||��d�7}q	|dur9|V|}q	|durE|VdSdS)Nz%continuation line at start of headers� )�iter�obs_fold_re�matchr�
isinstance�	bytearray�end)r$�it�last�liner)�r0�7/usr/local/lib/python3.10/dist-packages/h11/_readers.py�_obsolete_line_fold+s$�


�r2ccs4�t|�D]}tt|d|�}|d|dfVqdS)Nzillegal header line: {!r}�
field_name�field_value)r2r!�header_field_re)r$r/�matchesr0r0r1�_decode_header_lines@s
��r7�bufcCsj|��}|dur|��rtd��dS|std��tt|dd|d�}tdtt|dd���dd�|��S)	N�illegal request linezno request line receivedrzillegal request line: {!r}rT)�headers�_parsedr0)�maybe_extract_lines�+is_next_line_obviously_invalid_request_linerr!�request_line_rer�listr7)r8r$r6r0r0r1�maybe_read_from_IDLE_clientKs���r@cCs�|��}|dur|��rtd��dS|std��tt|dd|d�}|ddur+dn|d}|ddur7dn|d}t|d	�}|d
krGtnt}|tt	|dd���d|||d
�S)Nr9zno response line receivedrzillegal status line: {!r}�http_versions1.1�reason��status_code��rT)r:r;rDrBrA)
r<r=rr!�status_line_re�intrrr?r7)r8r$r6rArBrD�class_r0r0r1�$maybe_read_from_SEND_RESPONSE_server^s*���rIc@sHeZdZdeddfdd�Zdedeeedffdd�Z	de
fd	d
�ZdS)�ContentLengthReader�lengthr%NcCs||_||_dS�N)�_length�
_remaining)�selfrKr0r0r1�__init__{s
zContentLengthReader.__init__r8cCsD|jdkrt�S|�|j�}|durdS|jt|�8_t|d�S)Nr��data)rNr�maybe_extract_at_most�lenr�rOr8rRr0r0r1�__call__s

zContentLengthReader.__call__cCstd�|j|j|j���)Nz]peer closed connection without sending complete message body (received {} bytes, expected {}))r�formatrMrN�rOr0r0r1�read_eof�s��zContentLengthReader.read_eof)�__name__�
__module__�__qualname__rGrPrr
rrrVrrYr0r0r0r1rJzs	rJc@s@eZdZd
dd�Zdedeeedffdd�Zde	fdd	�Z
dS)�
ChunkedReaderr%NcCsd|_d|_d|_dS)NrF)�_bytes_in_chunk�_bytes_to_discard�_reading_trailerrXr0r0r1rP�s
zChunkedReader.__init__r8cCs<|jr|��}|dur
dSttt|��d�S|jdkr7|�|j�}|dur'dS|jt|�8_|jdkr7dS|jdks>J�|jdkrl|�	�}|durMdSt
t|d|�}t|ddd�|_|jdkrid|_||�Sd}nd}|jdksuJ�|�|j�}|dur�dS|jt|�8_|jdkr�d	|_d}nd}t
|||d
�S)N)r:rzillegal chunk header: {!r}�
chunk_size�)�baseTF�)rR�chunk_start�	chunk_end)r`r<rr?r7r_rSrTr^�maybe_extract_next_liner!�chunk_header_rerGr)rOr8r$rRrr6rerfr0r0r1rV�sN


�

zChunkedReader.__call__cCstd��)NzVpeer closed connection without sending complete message body (incomplete chunked read))rrXr0r0r1rY�s�zChunkedReader.read_eof)r%N)rZr[r\rPrr
rrrVrrYr0r0r0r1r]�s
.r]c@s0eZdZdedeefdd�Zdefdd�ZdS)�Http10Readerr8r%cCs |�d�}|durdSt|d�S)Ni�ɚ;rQ)rSrrUr0r0r1rV�s

zHttp10Reader.__call__cCst�SrL)rrXr0r0r1rY�szHttp10Reader.read_eofN)	rZr[r\rrrrVrrYr0r0r0r1ri�sricCs|rtd��dS)NzGot data when expecting EOF)r)r8r0r0r1�expect_nothing�srj.)�chunkedzcontent-lengthzhttp/1.0);�re�typingrrrrrrrr	r
�_abnfrr
rr�_eventsrrrrr�_receivebufferr�_staterrrrrrrr�_utilrrr r!�__all__�compile�encoder5r(�bytesr2r7r>r@rFrIrJrhr]rirj�str�ReadersTyper"�__annotations__r0r0r0r1�<module>sb
,(

�
��
�>"����