zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
U
Þ=®dO+ã@spddlmZddlZddlZddlmZddlmZddlm    Z    ddl
m Z ddl m Z dd    lmZGd
d „d ƒZed d Gdd„deƒƒZed d Gdd„deƒƒZed d Gdd„deƒƒZed d Gdd„deƒƒZed d Gdd„deƒƒZGdd„deƒZeƒZGdd„de    ƒZdZe dej¡Ze eej¡Ze deej¡ZdZGd d!„d!ƒZ Gd"d#„d#ƒZ!dS)$é)Ú annotationsN)Ú    dataclass)Úauto)ÚEnumé)ÚHeaders)ÚRequestEntityTooLarge)Úparse_options_headerc@s eZdZdS)ÚEventN©Ú__name__Ú
__module__Ú __qualname__©rrúPd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\werkzeug/sansio/multipart.pyr
sr
T)Úfrozenc@seZdZUded<dS)ÚPreambleÚbytesÚdataN©r r rÚ__annotations__rrrrrs
rc@seZdZUded<ded<dS)ÚFieldÚstrÚnamerÚheadersNrrrrrrs
rc@s&eZdZUded<ded<ded<dS)ÚFilerrÚfilenamerrNrrrrrrs
rc@seZdZUded<ded<dS)ÚDatarrÚboolÚ    more_dataNrrrrrr$s
rc@seZdZUded<dS)ÚEpiloguerrNrrrrrr *s
r c@s eZdZdS)ÚNeedDataNr rrrrr!/sr!c@s0eZdZeƒZeƒZeƒZeƒZeƒZeƒZ    dS)ÚStateN)
r r rrÚPREAMBLEÚPARTÚDATAÚ
DATA_STARTÚEPILOGUEÚCOMPLETErrrrr"6s r"s
(?:
|
| )s(?:
 
| |
 
)s%s[     ]éc@s|eZdZdZdddœdddddœdd    „Zdd
d œd d „Zddd œdd„Zddœdd„Zddd œdd„Zddddœdd„Z    dS)ÚMultipartDecoderz³Decodes a multipart message as bytes into Python events.
 
    The part data is returned as available to allow the caller to save
    the data from memory to disk, if desired.
    N)Ú    max_partsrz
int | NoneÚNone)ÚboundaryÚmax_form_memory_sizer+ÚreturncCs|tƒ|_d|_||_||_tj|_||_t     
dt t      |¡t t ft    j ¡|_t     
dt t      |¡t t ft    j ¡|_d|_d|_dS)NFs%%s?--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)s$%s--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)r)Ú    bytearrayÚbufferÚcompleter.r+r"r#Ústater-ÚreÚcompileÚ
LINE_BREAKÚescapeÚ    MULTILINEÚ preamble_reÚ boundary_reÚ_search_positionÚ_parts_decoded)Úselfr-r.r+rrrÚ__init__Ts( ÿý    ÿýzMultipartDecoder.__init__Úint)rr/cCsbz| d¡}Wntk
r*t|ƒ}YnXz| d¡}Wntk
rVt|ƒ}YnXt||ƒS)Nó
ó )ÚrindexÚ
ValueErrorÚlenÚmin)r=rZlast_nlZlast_crrrrÚ last_newline|szMultipartDecoder.last_newlinez bytes | NonecCsJ|dkrd|_n6|jdk    r:t|jƒt|ƒ|jkr:tƒ‚n |j |¡dS)NT)r2r.rDr1rÚextend)r=rrrrÚ receive_dataˆsÿþzMultipartDecoder.receive_datar
)r/c Csºt}|jtjkr¨|j |j|j¡}|dk    r„| d¡     d¡rDtj
|_ntj |_t |jd|  ¡…ƒ}|jd| ¡…=t|d}d|_n tdt|jƒt|jƒtƒ|_nê|jtj krÂt |j|j¡}|dk    rª| |jd|  ¡…¡}|  ¡| ¡d}|jd|…=d|krtdƒ‚t|dƒ\}}t t| d¡¡}| d    ¡}    |    dk    r`t|    ||d
}n t||d }tj|_d|_|jd7_|j dk    rÀ|j|j krÀt!ƒ‚ntdt|jƒtƒ|_nÐ|jtjkr|j"|jd d \}}
} |jd|
…=t#|| d}| r’tj$|_n„|jtj$krX|j"|jdd \}}
} |jd|
…=|sJ| s’t#|| d}n:|jtj
kr’|j%r’t&t |jƒd}|jdd…=tj'|_|j%r¶t(|t)ƒr¶td|j›ƒ‚|S)Néó--)rrrúcontent-dispositionz"Missing Content-Disposition headerrr)rrr)rrT)Ústart)rrFz&Invalid form-data cannot parse beyond )*Ú    NEED_DATAr3r"r#r9Úsearchr1r;ÚgroupÚ
startswithr'r$rrLÚendrÚmaxrDr-ÚSEARCH_EXTRA_LENGTHÚ BLANK_LINE_REÚ_parse_headersrCr    ÚtÚcastrÚgetrrr&r<r+rÚ _parse_datarr%r2r r(Ú
isinstancer!) r=ÚeventÚmatchrrZ headers_endÚ dispositionÚextrarrÚ    del_indexrrrrÚ
next_event“s| 
 
ÿ
 
 
ÿ
 
ýþ  
   zMultipartDecoder.next_eventrcCs`g}t d|¡}| ¡D]>}| ¡}|dkr| ¡ d¡\}}}| | ¡| ¡f¡qt|ƒS)Nó óú:)ÚHEADER_CONTINUATION_REÚsubÚ
splitlinesÚstripÚdecodeÚ    partitionÚappendr)r=rrÚlinerÚ_ÚvaluerrrrUés  zMultipartDecoder._parse_headersrztuple[bytes, int, bool])rrLr/cCsØ|r&t |¡}t tjt|¡ ¡}nd}|j d|j    ¡dkr\| 
||d…¡}}d}nf|j   |¡}|dk    r¤|  d¡ d¡rŠtj|_ntj|_| ¡}| ¡}n| 
||d…¡}}|dk}t|||…ƒ||fS)NrrJéÿÿÿÿTrI)Ú LINE_BREAK_REr\rVrWÚMatchrrQr1Úfindr-rFr:rNrOrPr"r'r3r$rL)r=rrLr\Z
data_startZdata_endr_rrrrrYös"
 
 
zMultipartDecoder._parse_data)N)
r r rÚ__doc__r>rFrHr`rUrYrrrrr*Ms    ýû(  V r*c@s,eZdZdddœdd„Zdddœdd    „Zd
S) ÚMultipartEncoderrr,)r-r/cCs||_tj|_dS)N)r-r"r#r3)r=r-rrrr>szMultipartEncoder.__init__r
)r[r/cCszt|tƒr$|jtjkr$tj|_|jSt|ttfƒrÔ|jtjtjtj    hkrÔd|j
d}|d|j   ¡7}t|tƒr„|d|j   ¡7}|d7}t t|¡jD],\}}| ¡dkrš||›d|›d  ¡7}qštj|_|St|tƒr|jtjkrtj    |_t|jƒdkrd|jS|jSn^t|tƒr8|jtj    kr8|jSt|tƒr`tj|_d|j
d    |jStd
|›d |j›ƒ‚dS) Ns
--s
s)Content-Disposition: form-data; name="%s"s; filename="%s"rKz: z
rs--
zCannot generate z  in state: )rZrr3r"r#r$rrrr%r-rÚencoderrVrWrÚlowerr&rrDr r(rC)r=r[rrrmrrrÚ
send_events:ý
 
 zMultipartEncoder.send_eventN)r r rr>rvrrrrrssrs)"Ú
__future__rr4ÚtypingrVZ dataclassesrÚenumrrZdatastructuresrÚ
exceptionsrÚhttpr    r
rrrrr r!rMr"r6r5r8rTrordrSr*rsrrrrÚ<module>s<        I