o
    d %                     @   s  d 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dZeeZdZdZd	ed
efddZefd	ed
dfddZG dd dZe Zded	edejejejejdf f d
efddZ	ddededejded
ejdeje gef f
ddZ!G dd dZ"dS )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.
    N)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>objreturnc                 C   s   t  | S )z1Creates a debug repr of an object as HTML string.)DebugReprGeneratorrepr)r    r	   X/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/werkzeug/debug/repr.py
debug_repr#   s   r   c                 C   s<   t  }| tu r|tdj}n|| }tj| dS )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
   
r   c                   @   s:   e Zd ZdZdefddZd	dejej ddfddZ	dS )
_HelperzDisplays an HTML version of the normal help, for the interactive
    debugger only because it requires a patched sys.stdout.
    r   c                 C   s   dS )Nz(Type help(object) for help about object.r	   selfr	   r	   r
   __repr__9   s   z_Helper.__repr__Ntopicc                 C   s   |d u rt jd| d d S dd l}|| t j }t|tr)|dd}t	
|}t|dkrB|d }d|dd  }nd}|d }t jt||d	  d S )
Nz<span class=help></span>r   zutf-8ignorer   z

Help)titletext)r   r   r   pydochelpreset
isinstancebytesdecode_paragraph_resplitlenjoin	HELP_HTML)r   r   r"   r   
paragraphsr    r!   r	   r	   r
   __call__<   s   



z_Helper.__call__N)
__name__
__module____qualname____doc__strr   tOptionalAnyr.   r	   r	   r	   r
   r   4   s     r   innerbase.c                 C   st   t |tr|D ]}t||u r|   S q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>())r%   tupletype	__class__r1   r0   )r8   r   r9   clsmoduler	   r	   r
   _add_subclass_infoS   s   
rD      leftrightlimitr   c                    s*   dddt jdtdtf fdd}|S )Nr   r   r   	recursiver   c                    s   |rt  d | S g}d}t|D ]\}}|r!|d |kr,|d d}|| | q|r<|d | t d|| S )Nz...F, <span class="extended">Tr   r:   )rD   	enumerateappendr   r+   )r   r   rI   bufhave_extended_sectionidxitemr9   rF   rH   rG   r	   r
   proxye   s   



z#_sequence_repr_maker.<locals>.proxy)r5   Iterableboolr4   )rF   rG   r9   rH   rS   r	   rR   r
   _sequence_repr_makerb   s   &rV   c                	   @   s  e Zd Zd*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ejdefddZd+dejeef dedefddZ	d,dejejedf ejeef ejejeef ef f dededefddZdejejeje ejeje f  defddZdejdedefddZ defddZ!de"defdd Z#de"defd!d"Z$dejeejf defd#d$Z%	d-d%ej&ej'eef  d&ed'eje defd(d)Z(dS ).r   r   Nc                 C   s
   g | _ d S r/   )_stackr   r	   r	   r
   __init__z   s   
zDebugReprGenerator.__init__[]r=   r>   zset([z])zfrozenset([z/<span class="module">collections.</span>deque([r   c                 C   s.   t |j}t|dd}d| }d| dS )Nzunicode-escaper   rz&re.compile(<span class="string regex">z</span>))r   patterncodecsr'   )r   r   r\   r	   r	   r
   
regex_repr   s   

zDebugReprGenerator.regex_reprF   rH   c                 C   s   dg}t |}t|| dkr%|t|d | dt||d  df n|t| |d d|}|d dv sH|d dkrP|d	 dv rPt||ttfS |S )
Nz<span class="string">   rK   r   r:   r   z'"br   )	r   r*   extendr   rM   r+   rD   r&   r4   )r   r   rH   rN   r[   outr	   r	   r
   string_repr   s    	

$zDebugReprGenerator.string_repr   drI   c           	   	   C   s   |rt d|tS dg}d}t| D ],\}\}}|r |d ||d kr-|d d}|d| | d	| | d
 q|rG|d |d t d||tS )Nz{...}{FrJ   r   rK   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r   }r:   )rD   dictrL   itemsrM   r   r+   )	r   rf   rI   rH   rN   rO   rP   keyvaluer	   r	   r
   	dict_repr   s&   



zDebugReprGenerator.dict_reprc                 C   s   t |}dt| dS )Nz<span class="object">r   )r   r   )r   r   r[   r	   r	   r
   object_repr   s   zDebugReprGenerator.object_reprc                 C   s   |t u r
dt dS t|tttfrd|dS t|ts"t|tr'| |S t|tr1| 	|S t|t
r<| ||S t|trG| ||S t|trR| ||S t|tr]| ||S t|trh| ||S t|trs| ||S | |S )Nz<span class="help">r   z<span class="number">)helperr%   intfloatcomplexr4   r&   rd   	RegexTyper^   list	list_reprr?   
tuple_reprsetset_repr	frozensetfrozenset_reprri   rm   r   
deque_reprrn   )r   r   rI   r	   r	   r
   dispatch_repr   s*   









z DebugReprGenerator.dispatch_reprc                 C   sJ   zd tt d d  }W n ty   d}Y nw dt|  dS )Nr:   r`   ?z*<span class="brokenrepr">&lt;broken repr (z)&gt;</span>)r+   r   r   exc_info	Exceptionr   strip)r   infor	   r	   r
   fallback_repr   s   
z DebugReprGenerator.fallback_reprc                 C   s|   d}| j D ]
}||u rd} nq| j | z!z| ||W W | j   S  ty7   |   Y W | j   S w | j   w )NFT)rW   rM   r|   popr   r   )r   r   rI   rQ   r	   r	   r
   r      s    
zDebugReprGenerator.reprc              	   C   s   d }d }t |tr)d}g }| D ]\}}t |tsd } n||| |f q|d u rUg }| |}t|D ]}z||| t||f W q8 tyR   Y q8w d}|dt	
|dd  7 }| |||S )NzContents ofzDetails for r   )r%   ri   rj   r4   rM   r   dirgetattrr   objectr   render_object_dump)r   r   r   rj   r    rk   rl   r	   r	   r
   r      s,   


zDebugReprGenerator.dump_objectc                    s"    fdd|  D } |dS )Nc                    s   g | ]\}}|  |fqS r	   )r   ).0rk   rl   r   r	   r
   
<listcomp>  s    z2DebugReprGenerator.dump_locals.<locals>.<listcomp>zLocal variables in frame)rj   r   )r   rf   rj   r	   r   r
   r     s   zDebugReprGenerator.dump_localsrj   r    r   c                 C   sf   g }|D ]\}}| dt| d| d q|s| d tt|d|r'|nd dd|d S )	Nz<tr><th>z<td><pre class=repr>z</pre>z<tr><td><em>Nothing</em>z<pre class=repr>r:   
)r    r   rj   )rM   r   OBJECT_DUMP_HTMLr+   )r   rj   r    r   
html_itemsrk   rl   r	   r	   r
   r     s   
z%DebugReprGenerator.render_object_dump)r   N)r_   )re   r/   ))r0   r1   r2   rX   rV   rt   ru   r?   rv   rw   rx   ry   rz   r   r{   r5   Patternr4   r^   Unionr&   rp   rd   DictrU   rm   r6   Typeri   Callablern   r7   r|   r   r   r   r   r   ListTupler   r	   r	   r	   r
   r   y   sR    
"6
"

)rE   )#r3   r]   rer   typingr5   collectionsr   	tracebackr   
markupsafer   r   r   compiler(   r@   rs   r,   r   r4   r   r   r   ro   r   r   r   rD   rp   r   rT   rU   rV   r   r	   r	   r	   r
   <module>   sN    
	

