a
    -=ic%                  	   @   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eed	d
dZefedd	ddZG dd dZe Zeeejejejejdf f edddZdeeejeejdeje gef d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
   d/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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                   @   s8   e Zd ZdZedddZd	ejej dd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)topicr   c                 C   s   |d u r t jd| d d S dd l}|| t j }t|trR|dd}t	
|}t|dkr|d }d|dd  }nd}|d }t jt||d	  d S )
Nz<span class=help></span>r   zutf-8ignorer   z

ZHelp)titletext)r   r   r   pydochelpreset
isinstancebytesdecode_paragraph_resplitlenjoin	HELP_HTML)r   r   r#   r   Z
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   .)innerr   baser   c                 C   st   t |tr*|D ]}t||u r|   S qnt||u r:| S d}|jjdvrZd|jj d}| t|j d|  dS )N )__builtin__
exceptionsz<span class="module">z.</span>())r&   tupletype	__class__r0   r/   )r7   r   r8   clsmoduler
   r
   r   _add_subclass_infoS   s    
rC      r   )leftrightr8   limitr   c                    s$   dt jttd fdd}|S )Nr   )r   r   	recursiver   c                    s   |rt  d | S g}d}t|D ]<\}}|rB|d |krX|d d}|| | q,|rx|d | t d|| S )Nz...F, <span class="extended">Tr   r9   )rC   	enumerateappendr	   r,   )r   r   rH   bufhave_extended_sectionidxitemr8   rE   rG   rF   r
   r   proxye   s    



z#_sequence_repr_maker.<locals>.proxy)r4   Iterableboolr3   )rE   rF   r8   rG   rR   r
   rQ   r   _sequence_repr_makerb   s     rU   c                   @   s  e Zd Zd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ejedddZd)ejeef eedddZd*ejejedf ejeef ejejeef ef f eeedddZejejeje ejeje f  edddZejeedddZ edddZ!e"eddd Z#e"edd!d"Z$ejeejf ed#d$d%Z%d+ej&ej'eef  eeje ed&d'd(Z(dS ),r   Nr   c                 C   s
   g | _ d S )N)_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   )r   rG   r   c                 C   s   dg}t |}t|| dkrJ|t|d | dt||d  df n|t| |d d|}|d dv s|d dkr|d	 dv rt||ttfS |S )
Nz<span class="string">   rJ   r   r9   r   z'"br   )	r	   r+   extendr   rL   r,   rC   r'   r3   )r   r   rG   rM   rZ   outr
   r
   r   string_repr   s     	

$zDebugReprGenerator.string_repr   )drH   rG   r   c           	   	   C   s   |rt d|tS dg}d}t| D ]X\}\}}|r@|d ||d krZ|d d}|d| | d	| | d
 q&|r|d |d t d||tS )Nz{...}{FrI   r   rJ   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r   }r9   )rC   dictrK   itemsrL   r	   r,   )	r   re   rH   rG   rM   rN   rO   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   rZ   r
   r
   r   object_repr   s    zDebugReprGenerator.object_repr)r   rH   r   c                 C   s   |t u rdt dS t|tttfr0d|dS t|tsDt|trN| |S t|trb| 	|S t|t
rx| ||S t|tr| ||S t|tr| ||S t|tr| ||S t|tr| ||S t|tr| ||S | |S )Nz<span class="help">r   z<span class="number">)helperr&   intfloatcomplexr3   r'   rc   	RegexTyper]   list	list_reprr>   
tuple_reprsetset_repr	frozensetfrozenset_reprrh   rl   r   
deque_reprrm   )r   r   rH   r
   r
   r   dispatch_repr   s*    








z DebugReprGenerator.dispatch_reprc                 C   sJ   zd tt d d  }W n ty4   d}Y n0 dt|  dS )Nr9   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} q q
| j | zPz| ||W W | j   S  tyn   |   Y W | j   S 0 W | j   n| j   0 d S )NFT)rV   rL   r{   popr~   r   )r   r   rH   rP   r
   r
   r   r	      s     


zDebugReprGenerator.reprc              	   C   s   d }d }t |trRd}g }| D ].\}}t |ts<d } qR||| |f q"|d u rg }| |}t|D ]6}z||| t||f W qp ty   Y qp0 qpd}|dt	
|dd  7 }| |||S )NzContents ofzDetails for r   )r&   rh   ri   r3   rL   r	   dirgetattrr~   objectr   render_object_dump)r   r   r	   ri   r!   rj   rk   r
   r
   r   r      s*    


zDebugReprGenerator.dump_object)re   r   c                    s"    fdd|  D } |dS )Nc                    s   g | ]\}}|  |fqS r
   )r	   ).0rj   rk   r   r
   r   
<listcomp>      z2DebugReprGenerator.dump_locals.<locals>.<listcomp>zLocal variables in frame)ri   r   )r   re   ri   r
   r   r   r     s    zDebugReprGenerator.dump_locals)ri   r!   r	   r   c                 C   sf   g }|D ]$\}}| dt| d| d q|s<| d tt|d|rN|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>r9   
)r!   r	   ri   )rL   r   OBJECT_DUMP_HTMLr,   )r   ri   r!   r	   Z
html_itemsrj   rk   r
   r
   r   r     s    
z%DebugReprGenerator.render_object_dump)r^   )rd   )N))r/   r0   r1   rW   rU   rs   rt   r>   ru   rv   rw   rx   ry   r   rz   r4   Patternr3   r]   Unionr'   ro   rc   DictrT   rl   r5   Typerh   Callablerm   r6   r{   r   r   r	   r   r   ListTupler   r
   r
   r
   r   r   y   s<    6"
 )rD   )#r2   r\   rer   typingr4   collectionsr   	tracebackr   Z
markupsafer   r   r   compiler)   r?   rr   r-   r   r3   r   r   r   rn   r   r   r   rC   ro   r   rS   rT   rU   r   r
   r
   r
   r   <module>   s2   
	 
