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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
U
Þ=®dp$ã@sêdZddlmZddlZddlZddlZddlZddlm    Z    ddl
m Z ddl m Z eƒZe d¡ZeeƒZdZd    Zd
d d œd d„Zefd
dd œdd„ZGdd„dƒZeƒZd d
dd dœdd„Zd!d d ddddœdd„ZGdd „d ƒZdS)"zîObject representations for debugging purposes. Unlike the default
repr, these expose more information and produce HTML instead of ASCII.
 
Together with the CSS and JavaScript of the debugger this gives a
colorful and more compact output.
é)Ú annotationsN)Údeque)Úformat_exception_only)Úescapez(?:\r\n|\r|\n){2,}zL<div class=box>
  <h3>%(title)s</h3>
  <pre class=help>%(text)s</pre>
</div>zQ<div class=box>
  <h3>%(title)s</h3>
  %(repr)s
  <table>%(items)s</table>
</div>ÚobjectÚstr©ÚobjÚreturncCs tƒ |¡S)z1Creates a debug repr of an object as HTML string.)ÚDebugReprGeneratorÚrepr)r    ©r úJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\werkzeug/debug/repr.pyÚ
debug_repr%srÚNonecCs<tƒ}|tkr"| t d¡j¡}n
| |¡}tj |¡dS)zdPrint the object details to stdout._write (for the interactive
    console of the web debugger.
    éN)    r ÚmissingÚ dump_localsÚsysÚ    _getframeÚf_localsÚ dump_objectÚstdoutÚ_write)r    ÚgenÚrvr r rÚdump*s
 
rc@s0eZdZdZddœdd„Zd ddd    œd
d „ZdS) Ú_HelperzDisplays an HTML version of the normal help, for the interactive
    debugger only because it requires a patched sys.stdout.
    r©r
cCsdS)Nz(Type help(object) for help about object.r ©Úselfr r rÚ__repr__;sz_Helper.__repr__Nz t.Any | Noner)Útopicr
cCs”|dkr tj d|›d¡dSddl}| |¡tj ¡}t |¡}t|ƒdkrn|d}d     |dd…¡}n d}|d}tj t
||dœ¡dS)Nz<span class=help>ú</span>rrz
 
ZHelp)ÚtitleÚtext) rrrÚpydocÚhelpÚresetÚ _paragraph_reÚsplitÚlenÚjoinÚ    HELP_HTML)r r"r&rZ
paragraphsr$r%r r rÚ__call__>s
 
 
 z_Helper.__call__)N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r!r.r r r rr6srzt.Type | tuple[t.Type, ...])Úinnerr    Úbaser
cCstt|tƒr*|D]}t|ƒ|kr|Sqnt|ƒ|kr:|Sd}|jjdkrZd|jj›d}|›t|ƒj›d|›dS)NÚ)Ú __builtin__Ú
exceptionsz<span class="module">z.</span>ú(ú))Ú
isinstanceÚtupleÚtypeÚ    __class__r0r/)r3r    r4ÚclsÚmoduler r rÚ_add_subclass_infoSs
    r@ézt.TypeÚintz7t.Callable[[DebugReprGenerator, t.Iterable, bool], str])ÚleftÚrightr4Úlimitr
cs"dddddœ‡‡‡‡fdd„ }|S)Nr z
t.IterableÚboolr)r r    Ú    recursiver
cs”|rtˆ›dˆ›|ˆƒSˆg}d}t|ƒD]<\}}|rB| d¡|ˆkrX| d¡d}| | |¡¡q,|rx| d¡| ˆ¡td |¡|ˆƒS)Nz...Fú, ú<span class="extended">Tr#r5)r@Ú    enumerateÚappendr r,)r r    rGÚbufÚhave_extended_sectionÚidxÚitem©r4rCrErDr rÚproxyes
 
 
 
z#_sequence_repr_maker.<locals>.proxyr )rCrDr4rErQr rPrÚ_sequence_repr_makerbsrRc@seZdZddœdd„ZeddeƒZeddeƒZed    d
e    ƒZ
ed d
e ƒZ ed d
e ƒZd ddœdd„Zd6ddddœdd„Zd7dddddœdd„Zdddœdd „Zd!ddd"œd#d$„Zddœd%d&„Zd'ddœd(d)„Zd'ddœd*d+„Zd,dd-œd.d/„Zd8d1dd2dd3œd4d5„Zd0S)9r rrcCs
g|_dS)N)Ú_stackrr r rÚ__init__zszDebugReprGenerator.__init__ú[ú]r8r9zset([z])z frozenset([z/<span class="module">collections.</span>deque([z    t.PatternrrcCs.t|jƒ}t |dd¡}d|›}d|›dS)Nzunicode-escapeÚignoreÚrz&re.compile(<span class="string regex">z</span>))r ÚpatternÚcodecsÚdecode)r r    rYr r rÚ
regex_repr…s
 
zDebugReprGenerator.regex_repréFz str | bytesrB)r    rEr
cCs¤dg}t|ƒ}t|ƒ|dkrJ| t|d|…ƒdt||d…ƒdf¡n| t|ƒ¡| d¡d |¡}|ddks|ddkr |d    dkr t||ttfƒS|S)
Nz<span class="string">érIr#r5rz'"Úbr)    r r+ÚextendrrKr,r@Úbytesr)r r    rErLrXÚoutr r rÚ string_repr‹s üÿ    
 
$zDebugReprGenerator.string_repréz7dict[int, None] | dict[str, int] | dict[str | int, int]rF)ÚdrGrEr
c        Csª|rtd|tƒSdg}d}t| ¡ƒD]X\}\}}|r@| d¡||dkrZ| d¡d}| d| |¡›d    | |¡›d
¡q&|rŽ| d ¡| d ¡td  |¡|tƒS)Nz{...}Ú{FrHrrITz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r#Ú}r5)r@ÚdictrJÚitemsrKr r,)    r rerGrErLrMrNÚkeyÚvaluer r rÚ    dict_repr¦s" 
 
ÿ
 
zDebugReprGenerator.dict_reprz+type[dict] | t.Callable | type[list] | NonecCst|ƒ}dt|ƒ›dS)Nz<span class="object">r#)r r)r r    rXr r rÚ object_repr¿szDebugReprGenerator.object_reprzt.Any)r    rGr
cCsð|tkrdt›dSt|tttfƒr0d|›dSt|tƒsDt|tƒrN| |¡St|tƒrb|     |¡St|t
ƒrx|  ||¡St|t ƒrŽ|  ||¡St|tƒr¤| ||¡St|tƒrº| ||¡St|tƒrÐ| ||¡St|tƒræ| ||¡S| |¡S)Nz<span class="help">r#z<span class="number">)Úhelperr:rBÚfloatÚcomplexrrarcÚ    RegexTyper\ÚlistÚ    list_reprr;Ú
tuple_reprÚsetÚset_reprÚ    frozensetÚfrozenset_reprrhrlrÚ
deque_reprrm)r r    rGr r rÚ dispatch_reprÃs*  
 
 
 
 
 
 
 
 
 z DebugReprGenerator.dispatch_reprcCsLzd tt ¡dd…Ž¡}Wntk
r6d}YnXdt| ¡ƒ›dS)Nr5r^ú?z*<span class="brokenrepr">&lt;broken repr (z )&gt;</span>)r,rrÚexc_infoÚ    ExceptionrÚstrip)r Úinfor r rÚ fallback_reprÚs 
ÿz DebugReprGenerator.fallback_reprrcCsvd}|jD]}||kr
d}q q
|j |¡z8z| ||¡WW¢&Stk
r`| ¡YW¢SXW5|j ¡XdS)NFT)rSrKÚpoprzr}r€)r r    rGrOr r rr äs
 zDebugReprGenerator.reprc    CsØd}d}t|tƒrRd}g}| ¡D].\}}t|tƒs<d}qR| || |¡f¡q"|dkr®g}| |¡}t|ƒD]8}z| || t||ƒ¡f¡Wqptk
r¦YqpXqpd}|dt     
|¡dd…›7}|  |||¡S)Nz Contents ofz Details forú réÿÿÿÿ) r:rhrirrKr ÚdirÚgetattrr}rr!Úrender_object_dump)r r    r rir$rjrkr r rrós*
 
 
 zDebugReprGenerator.dump_objectzdict[str, t.Any])rer
cs"‡fdd„| ¡Dƒ}ˆ |d¡S)Ncsg|]\}}|ˆ |¡f‘qSr )r )Ú.0rjrkrr rÚ
<listcomp> sz2DebugReprGenerator.dump_locals.<locals>.<listcomp>zLocal variables in frame)rir†)r rerir rrr szDebugReprGenerator.dump_localsNzlist[tuple[str, str]]z
str | None)rir$r r
cCsfg}|D]$\}}| dt|ƒ›d|›d¡q|s<| d¡tt|ƒd|rN|nd›dd |¡dœS)    Nz<tr><th>z<td><pre class=repr>z</pre>z<tr><td><em>Nothing</em>z<pre class=repr>r5Ú
)r$r ri)rKrÚOBJECT_DUMP_HTMLr,)r rir$r Z
html_itemsrjrkr r rr†s 
ýz%DebugReprGenerator.render_object_dump)r])rd)N)r/r0r1rTrRrrrsr;rtrurvrwrxrryr\rcrlrmrzr€r rrr†r r r rr ys,    ÿü
ÿr )rA)r2Ú
__future__rrZÚrerÚtypingÚtÚ collectionsrÚ    tracebackrZ
markupsaferrrÚcompiler)r<rqr-rŠrrrrnr@rRr r r r rÚ<module>s*    
     ÿ