1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
U
M±d¿ ã@sRUddlZddlmZmZmZmZmZmZmZm    Z    m
Z
ddl m Z m Z mZmZddlmZmZmZmZmZddlmZddlmZmZmZmZmZmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%d    gZ&e 'e  (d
¡¡Z)e 'd ¡Z*ee+ee+d œd d„Z,ee+eee+e+fd œdd„Z-e 'e (d
¡¡Z.eeedœdd„Z/e 'e (d
¡¡Z0ee
eedfdœdd„Z1Gdd„dƒZ2e 'e  (d
¡¡Z3Gdd„dƒZ4Gdd„dƒZ5eddœdd„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]d}t |¡}|rb|dkr2tdƒ‚t|tƒsDt|ƒ}|d7}||| ¡d…7}q|dk    rp|V|}q|dk    r„|VdS)Nz%continuation line at start of headersó )ÚiterÚ obs_fold_reÚmatchrÚ
isinstanceÚ    bytearrayÚend)r$ÚitÚlastÚliner)©r0úCd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\h11/_readers.pyÚ_obsolete_line_fold+s 
 
r2ccs2t|ƒD]$}tt|d|ƒ}|d|dfVqdS)Nzillegal header line: {!r}Ú
field_nameZ field_value)r2r!Úheader_field_re)r$r/Úmatchesr0r0r1Ú_decode_header_lines@s r6©Úbufr%cCsj| ¡}|dkr$| ¡r tdƒ‚dS|s0tdƒ‚tt|dd|dƒ}tftt|dd…ƒƒddœ|—ŽS)Núillegal request linezno request line receivedrzillegal request line: {!r}r T)ÚheadersÚ_parsed)Úmaybe_extract_linesÚ+is_next_line_obviously_invalid_request_linerr!Úrequest_line_rerÚlistr6)r8r$r5r0r0r1Úmaybe_read_from_IDLE_clientKs&ÿÿÿr@cCs´| ¡}|dkr$| ¡r tdƒ‚dS|s0tdƒ‚tt|dd|dƒ}|ddkrVdn|d}|ddkrndn|d}t|d    ƒ}|d
krŽtnt}|tt    |d d…ƒƒd |||d S)Nr9zno response line receivedrzillegal status line: {!r}Ú http_versions1.1ÚreasonóÚ status_codeéÈr T)r:r;rDrBrA)
r<r=rr!Ústatus_line_reÚintrrr?r6)r8r$r5rArBrDÚclass_r0r0r1Ú$maybe_read_from_SEND_RESPONSE_server^s*ÿ ÿûrIc@sDeZdZeddœdd„Zeeeedfdœdd„Z    e
dœd    d
„Z dS) ÚContentLengthReaderN)Úlengthr%cCs||_||_dS©N)Ú_lengthÚ
_remaining)ÚselfrKr0r0r1Ú__init__{szContentLengthReader.__init__r7cCsD|jdkrtƒS| |j¡}|dkr(dS|jt|ƒ8_t|dS)Nr©Údata)rNrÚmaybe_extract_at_mostÚlenr©rOr8rRr0r0r1Ú__call__s
 zContentLengthReader.__call__©r%cCstd |j|j|j¡ƒ‚dS)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
rrrVrrZr0r0r0r1rJzs    rJc@sBeZdZddœdd„Zeeeedfdœdd„Ze    dœdd    „Z
dS)
Ú ChunkedReaderNrWcCsd|_d|_d|_dS)NrF)Ú_bytes_in_chunkÚ_bytes_to_discardÚ_reading_trailerrYr0r0r1rP•szChunkedReader.__init__r7cCs@|jr,| ¡}|dkrdSttt|ƒƒdS|jdkrn| |j¡}|dkrNdS|jt|ƒ8_|jdkrndS|jdks|t‚|j    dkrØ| 
¡}|dkršdSt t |d|ƒ}t |ddd|_    |j    dkrÒd|_||ƒSd}nd}|j    dksêt‚| |j    ¡}|dkrdS|j    t|ƒ8_    |j    dkr.d    |_d}nd}t|||d
S) N)r:rzillegal chunk header: {!r}Ú
chunk_sizeé)ÚbaseTFé)rRÚ chunk_startÚ    chunk_end)rar<rr?r6r`rSrTÚAssertionErrorr_Zmaybe_extract_next_liner!Úchunk_header_rerGr)rOr8r$rRr r5rfrgr0r0r1rVsN
 
 
ü
 
 zChunkedReader.__call__cCs tdƒ‚dS)NzVpeer closed connection without sending complete message body (incomplete chunked read))rrYr0r0r1rZËsÿzChunkedReader.read_eof) r[r\r]rPrr
rrrVrrZr0r0r0r1r^”s.r^c@s.eZdZeeedœdd„Zedœdd„ZdS)Ú Http10Readerr7cCs | d¡}|dkrdSt|dS)Niÿɚ;rQ)rSrrUr0r0r1rVÓs
zHttp10Reader.__call__rWcCstƒSrL)rrYr0r0r1rZÙszHttp10Reader.read_eofN)    r[r\r]rrrrVrrZr0r0r0r1rjÒsrjcCs|r tdƒ‚dS)NzGot data when expecting EOF)r)r8r0r0r1Úexpect_nothingÝsrk.)Úchunkedzcontent-lengthzhttp/1.0);ÚreÚtypingrrrrrrrr    r
Z_abnfr r rrZ_eventsrrrrrZ_receivebufferrÚ_staterrrrrrrrZ_utilrrr r!Ú__all__ÚcompileÚencoder4r(Úbytesr2r6r>r@rFrIrJrir^rjrkÚstrZ ReadersTyper"Ú__annotations__r0r0r0r1Ú<module>sl, (
 
þ  þ > "ÿÿýö