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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
U
M±dö'ã@sÎddlZddlmZmZmZmZmZmZmZm    Z    ddl
m Z m Z ddl mZmZmZerdddlmZzddlmZWn ek
r”ddlmZYnXe d¡Ze e  d    ¡¡Ze e  d    ¡¡ZGd
d „d eeeefƒZe    eeeefeeeefeeeefeeeeffZeeed ed œdd„ƒZeeeded œdd„ƒZede    eefe ed œdd„ƒZde    eefe ed œdd„Zeeeedœdd„Z!eeeeedœdd„Z"de dœdd„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žeZdZdZdZeeeeefddœdd„Ze    dœdd    „Z
e e    d
œd d „Z e dœd d„Zedœdd„Ze eeefdœdd„Zeeeefdœdd„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_itemsN)Ú
full_itemsÚreturncCs
||_dS©N©r)Úselfr©rúCd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\h11/_headers.pyÚ__init__fszHeaders.__init__)rcCs
t|jƒSr)Úboolr©rrrrÚ__bool__iszHeaders.__bool__)ÚotherrcCst|ƒt|ƒkSr)Úlist)rr rrrÚ__eq__lszHeaders.__eq__cCs
t|jƒSr)ÚlenrrrrrÚ__len__oszHeaders.__len__cCsdtt|ƒƒS)Nz <Headers(%s)>)Úreprr!rrrrÚ__repr__rszHeaders.__repr__)ÚidxrcCs|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>rrrrrÚ    raw_itemsyszHeaders.raw_items)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú    __slots__rrÚbytesrrrÚobjectr"Úintr$Ústrr&r+r/rrrrrKsrT)ÚheadersÚ_parsedrcCsdSrr©r9r:rrrÚnormalize_and_validate…sr<FcCsdSrrr;rrrr<ŠscCsdSrrr;rrrr<sc    CsPg}d}d}|D]4\}}|sJt|ƒ}t|ƒ}tt|d|ƒtt|d|ƒt|tƒsXt‚t|tƒsft‚|}| ¡}|dkrædd„| d¡Dƒ}t    |ƒdkr¢t
d    ƒ‚|  ¡}tt |d
ƒ|dkrÔ|}|  |||f¡n||krät
d    ƒ‚q|d kr6|rt
d d d‚| ¡}|dkr 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õ)Zerror_status_hintschunkedz,Only Transfer-Encoding: chunked is supportedT)r rÚ_field_name_reÚ_field_value_reÚ
isinstancer5ÚAssertionErrorÚlowerÚsplitr#rÚpopÚ_content_length_reÚappendr)    r9r:Ú new_headersZseen_content_lengthZsaw_transfer_encodingr)r*r-Úlengthsrrrr<–sP  
 
ÿ
þ)r9r)rcCsPg}|jD]@\}}}||kr
| ¡}| d¡D]}| ¡}|r.| |¡q.q
|S)Nr@)rrErFr=rI)r9r)Úoutr(Ú
found_nameÚfound_raw_valueZfound_split_valuerrrÚget_comma_headerÍs$rO)r9r)Ú
new_valuesrcCsPg}|jD] \}}}||kr
| ||f¡q
|D]}| | ¡|f¡q0t|ƒSr)rrIÚtitler<)r9r)rPrJZfound_raw_namerMrNÚ    new_valuerrrÚset_comma_headerüs
rSr)ÚrequestrcCs"|jdkrdSt|jdƒ}d|kS)Ns1.1Fsexpects 100-continue)Ú http_versionrOr9)rTÚexpectrrrÚhas_expect_100_continues
 rW)F)F)$ÚreÚtypingrrrrrrrr    Z_abnfr r Z_utilr rrZ_eventsrrÚ ImportErrorZtyping_extensionsÚcompilerHÚencoderArBr5rr8Z HeaderTypesr<rrOrSrWrrrrÚ<module>sP( 9
2ýÿÿ
þÿ
þ 7/