zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
M±d„ã@sJddlZddlZddlmZmZmZdgZe dej¡Z    Gdd„dƒZ
dS)éN)ÚListÚOptionalÚUnionÚ ReceiveBuffers
?
c@s¶eZdZddœdd„Zeeefddœdd„Zedœdd    „Z    e
dœd
d „Z edœd d „Z e
edœdd„Z e
eedœdd„Zeedœdd„Zeeedœdd„Zedœdd„ZdS)rN)ÚreturncCstƒ|_d|_d|_dS©Nr)Ú    bytearrayÚ_dataÚ_next_line_searchÚ_multiple_lines_search©Úself©rúId:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\h11/_receivebuffer.pyÚ__init__0szReceiveBuffer.__init__)Ú    byteslikercCs|j|7_|S©N)r    )r rrrrÚ__iadd__5szReceiveBuffer.__iadd__cCs tt|ƒƒSr)ÚboolÚlenr rrrÚ__bool__9szReceiveBuffer.__bool__cCs
t|jƒSr)rr    r rrrÚ__len__<szReceiveBuffer.__len__cCs
t|jƒSr)Úbytesr    r rrrÚ    __bytes__@szReceiveBuffer.__bytes__)ÚcountrcCs*|jd|…}|jd|…=d|_d|_|Sr)r    r
r ©r rÚoutrrrÚ_extractCs
 zReceiveBuffer._extractcCs |jd|…}|sdS| |¡S)zB
        Extract a fixed number of bytes from the buffer.
        N)r    rrrrrÚmaybe_extract_at_mostMsz#ReceiveBuffer.maybe_extract_at_mostcCsHtd|jdƒ}|j d|¡}|dkr6t|jƒ|_dS|d}| |¡S)zK
        Extract the first line, if it is completed in the buffer.
        réó
éÿÿÿÿNé)Úmaxr
r    Úfindrr)r Zsearch_start_indexZ partial_idxÚidxrrrÚmaybe_extract_next_lineWs z%ReceiveBuffer.maybe_extract_next_linecCsÞ|jdd…dkr | d¡gS|jdd…dkr@| d¡gSt |j|j¡}|dkrrtdt|jƒdƒ|_dS| d¡d}| |¡}| d¡}|D]}|     d¡r˜|d=q˜|d    |dkrÊd
ksÐnt
‚|d    d…=|S) z\
        Extract everything up to the first blank line, and return a list of lines.
        Nró
r"r rr!ó éþÿÿÿó) r    rÚblank_line_regexÚsearchr r#rÚspanÚsplitÚendswithÚAssertionError)r Úmatchr%rÚlinesÚlinerrrÚmaybe_extract_lineshs&
 
 
 
 
"
z!ReceiveBuffer.maybe_extract_linescCs,z|jddkWStk
r&YdSXdS)Nré!F)r    Ú
IndexErrorr rrrÚ+is_next_line_obviously_invalid_request_line“sz9ReceiveBuffer.is_next_line_obviously_invalid_request_line)Ú__name__Ú
__module__Ú __qualname__rrrrrrrÚintrrrrrr&rr4r7rrrrr/s
 
+) ÚreÚsysÚtypingrrrÚ__all__ÚcompileÚ    MULTILINEr+rrrrrÚ<module>s
'