
    'gW$                       d Z ddlmZ ddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ  e       Z ej                   d      Z ee      ZdZd	Zdd
ZefddZ G d d      Z e       ZddZ	 d	 	 	 	 	 	 	 	 	 ddZ G d d      Zy)zObject 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>c                4    t               j                  |       S )z1Creates a debug repr of an object as HTML string.)DebugReprGeneratorrepr)objs    K/var/www/html/knws/venv/lib/python3.12/site-packages/werkzeug/debug/repr.py
debug_reprr   &   s    $$S))    c                    t               }| t        u r/|j                  t        j                  d      j
                        }n|j                  |       }t        j                  j                  |       y)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rvs      r   dumpr   +   sP     
C
g~__S]]1-667__S!JJbr   c                  "    e Zd ZdZddZdddZy)_HelperzDisplays an HTML version of the normal help, for the interactive
    debugger only because it requires a patched sys.stdout.
    c                     y)Nz(Type help(object) for help about object. selfs    r   __repr__z_Helper.__repr__<   s    9r   Nc                   |$t         j                  j                  d| d       y dd l}|j	                  |       t         j                  j                         }t        j                  |      }t        |      dkD  r|d   }dj                  |dd        }nd}|d   }t         j                  j                  t        ||dz         y )Nz<span class=help></span>r   r   z

Help)titletext)r   r   r   pydochelpreset_paragraph_resplitlenjoin	HELP_HTML)r    topicr'   r   
paragraphsr%   r&   s          r   __call__z_Helper.__call__?   s    =JJ 1$AB

5ZZ"((,
z?QqME;;z!"~.DEa=D

)t&DDEr   returnstrN)r/   zt.Any | Noner3   None)__name__
__module____qualname____doc__r!   r1   r   r   r   r   r   7   s    :Fr   r   c                   t        |t              r|D ]  }t        |      |u s| c S  nt        |      |u r| S d}|j                  j                  dvrd|j                  j                   d}| t        |      j
                   d|  dS )N )__builtin__
exceptionsz<span class="module">z.</span>())
isinstancetupletype	__class__r8   r7   )innerr
   baseclsmodules        r   _add_subclass_inforI   T   s    $ 	CCyC	 
cd	F
}}'DD()A)A(B(KXd3i(()5'33r   c                      d fd}|S )Nc                r   |rt         d
 |      S g}d}t        |      D ]P  \  }}|r|j                  d       |	k(  r|j                  d       d}|j                  | j                  |             R |r|j                  d       |j                  
       t        dj	                  |      |      S )Nz...F, <span class="extended">Tr#   r<   )rI   	enumerateappendr	   r-   )r    r
   	recursivebufhave_extended_sectionidxitemrF   leftlimitrights          r   proxyz#_sequence_repr_maker.<locals>.proxyd   s    %c%&93EEf %"3 	(IC

4 e|

45(,%JJtyy'	( !JJy!

5!"''#,T::r   )r    r   r
   zt.Iterable[t.Any]rP   boolr3   r4   r   )rU   rW   rF   rV   rX   s   ```` r   _sequence_repr_makerrZ   a   s    ; ;" Lr   c                      e Zd ZddZ edde      Z edde      Z edde	      Z
 edde      Z ed	de      Zdd
ZdddZ	 d	 	 	 	 	 	 	 ddZddZddZddZddZddZddZ	 d 	 	 	 	 	 	 	 d!dZy)"r   c                    g | _         y r5   )_stackr   s    r   __init__zDebugReprGenerator.__init__y   s	    #%r   []r?   r@   zset([z])zfrozenset([z/<span class="module">collections.</span>deque([c                p    t        |j                        }t        j                  |dd      }d| }d| dS )Nzunicode-escapeignorerz&re.compile(<span class="string regex">z</span>))r	   patterncodecsdecode)r    r
   rd   s      r   
regex_reprzDebugReprGenerator.regex_repr   s=    s{{#--)98DgY-7yIIr   c           	     r   dg}t        |      }t        |      |z
  dkD  r.|j                  t        |d |       dt        ||d        df       n|j	                  t        |             |j	                  d       dj                  |      }|d   dv s|d   dk(  r|d	   dv rt        ||t        t        f      S |S )
Nz<span class="string">   rM   r#   r<   r   z'"br   )	r	   r,   extendr   rO   r-   rI   bytesr4   )r    r
   rV   rQ   rc   outs         r   string_reprzDebugReprGenerator.string_repr   s    &'I q6E>AJJ1Ve9%-1UV9%	 JJvay!

9ggcl Q45=QqTS[QqTU]%c3== 
r   c           	        |rt        d|t              S dg}d}t        |j                               D ]l  \  }\  }}|r|j	                  d       ||dz
  k(  r|j	                  d       d}|j	                  d| j                  |       d	| j                  |       d
       n |r|j	                  d       |j	                  d       t        dj                  |      |t              S )Nz{...}{FrL   r   rM   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r#   }r<   )rI   dictrN   itemsrO   r	   r-   )	r    drP   rV   rQ   rR   rS   keyvalues	            r   	dict_reprzDebugReprGenerator.dict_repr   s     %gq$77e %!*1779!5 		C#u

4 eai

45(,%JJ7		#7G H((,		%(8'9I		 !JJy!

3!"''#,488r   c                6    t        |      }dt        |       dS )Nz<span class="object">r#   )r	   r   )r    r
   rc   s      r   object_reprzDebugReprGenerator.object_repr   s    I&vayk99r   c                   |t         u r
dt         dS t        |t        t        t        f      rd|dS t        |t
              st        |t              r| j                  |      S t        |t              r| j                  |      S t        |t              r| j                  ||      S t        |t              r| j                  ||      S t        |t              r| j                  ||      S t        |t               r| j#                  ||      S t        |t$              r| j'                  ||      S t        |t(              r| j+                  ||      S | j-                  |      S )Nz<span class="help">r#   z<span class="number">)helperrA   intfloatcomplexr4   rl   rn   	RegexTyperg   list	list_reprrB   
tuple_reprsetset_repr	frozensetfrozenset_reprrr   rw   r   
deque_reprry   )r    r
   rP   s      r   dispatch_reprz DebugReprGenerator.dispatch_repr   s*   &=(
'::cC01*3'99c3:c5#9##C((c9%??3''c4 >>#y11c5!??3	22c3==i00c9%&&sI66c4 >>#y11c5!??3	22$$r   c                    	 dj                  t        t        j                         d d        }dt        |j                                dS # t        $ r d}Y *w xY w)Nr<   ri   ?z*<span class="brokenrepr">&lt;broken repr (z)&gt;</span>)r-   r   r   exc_info	Exceptionr   strip)r    infos     r   fallback_reprz DebugReprGenerator.fallback_repr   sa    	770#,,.!2DEFD  &tzz| 45\C	
  	D	s   ,A AAc                z   d}| j                   D ]
  }||u sd} n | j                   j                  |       	 	 | j                  ||      | j                   j                          S # t        $ r- | j                         cY | j                   j                          S w xY w# | j                   j                          w xY w)NFT)r]   rO   r   popr   r   )r    r
   rP   rT   s       r   r	   zDebugReprGenerator.repr   s    	KK 	Ds{ 		 	3	,))#y9 KKOO  ,))++KKOO, KKOOs#   A% %B>B BB B:c           
        d }d }t        |t              rRd}g }|j                         D ];  \  }}t        |t              sd } n$|j	                  || j                  |      f       = |Rg }| j                  |      }t        |      D ]/  }	 |j	                  || j                  t        ||            f       1 d}dt        j                  |      dd  z  }| j                  |||      S # t        $ r Y pw xY w)NzContents ofzDetails for r   )rA   rr   rs   r4   rO   r	   dirgetattrr   objectr!   render_object_dump)r    r
   r	   rs   r%   ru   rv   s          r   r   zDebugReprGenerator.dump_object   s	   .2c4 !EE!iik 6
U!#s+ Ec499U#345	6
 =E99S>D3x LL#tyyc1B'C!DE
 "E1V__S)!B/011&&ueT::	 ! s   ,C,,	C87C8c                    |j                         D cg c]  \  }}|| j                  |      f }}}| j                  |d      S c c}}w )NzLocal variables in frame)rs   r	   r   )r    rt   ru   rv   rs   s        r   r   zDebugReprGenerator.dump_locals
  sG    ;<779EZS%#tyy'(EE&&u.HII Fs   ANc                    g }|D ]&  \  }}|j                  dt        |       d| d       ( |s|j                  d       t        t        |      d|r|nd ddj                  |      dz  S )	Nz<tr><th>z<td><pre class=repr>z</pre>z<tr><td><em>Nothing</em>z<pre class=repr>r<   
)r%   r	   rs   )rO   r   OBJECT_DUMP_HTMLr-   )r    rs   r%   r	   
html_itemsru   rv   s          r   r   z%DebugReprGenerator.render_object_dump  s     
 	YJC5I%PVWX	Y89E]&tt&<FCYYz*#
 
 	
r   )r3   r6   )r
   zt.Pattern[t.AnyStr]r3   r4   )F   )r
   zstr | bytesrV   r|   r3   r4   )   )rt   z7dict[int, None] | dict[str, int] | dict[str | int, int]rP   rY   rV   r|   r3   r4   )r
   t.Anyr3   r4   )r
   r   rP   rY   r3   r4   r2   r
   r   r3   r4   )rt   zdict[str, t.Any]r3   r4   r5   )rs   zlist[tuple[str, str]]r%   r4   r	   z
str | Noner3   r4   )r7   r8   r9   r^   rZ   r   r   rB   r   r   r   r   r   r   r   rg   rn   rw   ry   r   r   r	   r   r   r   r   r   r   r   r   x   s    & %S#t4I%c36J#GT37H)-yIN%94JJ> 	9B9 9 	9
 
92:%.
;0J
 LP
*
36
>H
	
r   r   r   )r
   r   r3   r6   )rE   r4   r
   r   rF   ztype | tuple[type, ...]r3   r4   )   )
rU   r4   rW   r4   rF   rC   rV   r|   r3   z>t.Callable[[DebugReprGenerator, t.Iterable[t.Any], bool], str])r:   
__future__r   re   rer   typingtcollectionsr   	tracebackr   
markupsafer   r   r   compiler*   rC   r   r.   r   r   r   r   r{   rI   rZ   r   r   r   r   <module>r      s    #  	 
   + 
(

01		 *
  	F F4 

4 56
!%.1C.b
 b
r   