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
U
Þ=®d‰ã@s°ddlmZddlZddlZddlmZddlmZddlm    Z    ddl
m Z ddl
m Z dd    l
m Z dd
lmZdd lmZGd d „d eƒZeGdd„dƒƒZGdd„dƒZdS)é)Ú annotationsN)Ú    dataclass)Úfieldé)ÚValidationError)ÚNoMatch)ÚRequestAliasRedirect)Ú RequestPath)ÚRule)ÚRulePartc@s eZdZdS)Ú SlashRequiredN)Ú__name__Ú
__module__Ú __qualname__©rrúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\werkzeug/routing/matcher.pyr sr c@sHeZdZUdZeedZded<eedZded<ee    dZ
ded<d    S)
ÚStatez­A representation of a rule state.
 
    This includes the *rules* that correspond to the state and the
    possible *static* and *dynamic* transitions to the next state.
    )Údefault_factoryzlist[tuple[RulePart, State]]Údynamicz
list[Rule]Úruleszdict[str, State]ÚstaticN) r rrÚ__doc__rÚlistrÚ__annotations__rÚdictrrrrrrs
rc@sPeZdZdddœdd„Zdddœdd    „Zdd
œd d „Zd d d dddœdd„ZdS)ÚStateMachineMatcherÚboolÚNone)Ú merge_slashesÚreturncCstƒ|_||_dS©N)rÚ_rootr)ÚselfrrrrÚ__init__"szStateMachineMatcher.__init__r
)ÚrulercCs‚|j}|jD]d}|jr6|j |jtƒ¡|j|j}q |jD]\}}||kr<|}q q<tƒ}|j ||f¡|}q |j |¡dSr )    r!Ú_partsrÚ
setdefaultÚcontentrrÚappendr)r"r$ÚstateÚpartÚ    test_partÚ    new_staterrrÚadd&s
zStateMachineMatcher.add)rcs&|j}dddœ‡fdd„ ‰ˆ|ƒdS)Nrr)r)rcsF|jjdd„d|j ¡D] }ˆ|ƒq|jD]\}}ˆ|ƒq0dS)NcSs
|djS©Nr)Zweight©ÚentryrrrÚ<lambda>=ózCStateMachineMatcher.update.<locals>._update_state.<locals>.<lambda>©Úkey)rÚsortrÚvalues)r)r,Ú_©Ú _update_staterrr9<s
 
z1StateMachineMatcher.update.<locals>._update_state)r!)r"r)rr8rÚupdate7szStateMachineMatcher.updateÚstrz)tuple[Rule, t.MutableMapping[str, t.Any]])ÚdomainÚpathÚmethodÚ    websocketrc     s¬tƒ‰d‰dddddœ‡‡‡‡‡fdd„ ‰zˆ|j|f| d¡•gƒ}Wn$tk
rlt|›dƒd‚YnX|jrî|dkrît d    d|¡}zˆ|j|f| d¡•gƒ}Wn$tk
rÌt|›dƒd‚YnX|dkrâtˆˆƒ‚n
t|›ƒ‚n°|dk    rž|\}}i}t    |j
  ¡|ƒD]N\}    }
z|j
|      |
¡}
Wn"t k
rRtˆˆƒd‚YnX|
|t|    ƒ<q|jrx| |j¡|jr–|jjr–t||jƒ‚||fStˆˆƒ‚dS)
NFrz    list[str]ztuple[Rule, list[str]] | None)r)Úpartsr6rcs
|gkrª|jD]B}|jdk    r4ˆ|jkr4ˆ |j¡q|jˆkrDd‰q||fSqd|jkr¦|jdjD]<}ˆ|jkrh|jdksŠˆ|jkrh|jr˜tƒ‚qh||fSqhdS|d}||jkrâˆ|j||dd…|ƒ}|dk    râ|S|jD]²\}}|}|dd…}    |jrd     |¡}g}    t
  |j ¡  |¡}
|
dk    rè|jrT|
 ¡d} | dkrTdg}    t|
 ¡ ¡dd„d    } d
d „| Dƒ} ˆ||    || ƒ}|dk    rè|Sqè|dgkr|jD]V}|jr¾q®|jdk    räˆ|jkr䈠|j¡n|jˆkröd‰n ||fSq®dS) NTÚrrú/éÿÿÿÿcSs|dSr.rr/rrrr1Œr2z;StateMachineMatcher.match.<locals>._match.<locals>.<lambda>r3cSs$g|]\}}|dd…dkr|‘qS)Né Z __werkzeug_r)Ú.0r4ÚvaluerrrÚ
<listcomp>Žsþz=StateMachineMatcher.match.<locals>._match.<locals>.<listcomp>)rÚmethodsr:r?rZstrict_slashesr rÚfinalÚjoinÚreÚcompiler'ÚmatchZsuffixedÚgroupsÚsortedÚ    groupdictÚitems)r)r@r6r$r*Úrvr+r,ÚtargetÚ    remainingrMÚsuffixZconverter_groupsrN©Ú_matchZhave_match_forr>r?Zwebsocket_mismatchrrrWOsn 
 
 
 
ÿÿ
 
 
 
ÿþ
 
 z)StateMachineMatcher.match.<locals>._matchrBz/{2,}?)Úsetr!Úsplitr r    rrKÚsubrÚzipÚ _convertersÚkeysZ    to_pythonrr;Údefaultsr:ÚaliasÚmapZredirect_defaultsrZendpoint) r"r<r=r>r?rRr$r6ÚresultÚnamerFrrVrrMEs> Y  
  zStateMachineMatcher.matchN)r rrr#r-r:rMrrrrr!sr)Ú
__future__rrKÚtypingÚtZ dataclassesrrÚ
convertersrÚ
exceptionsrrr    rr
r Ú    Exceptionr rrrrrrÚ<module>s