U
    ÌZj%  ã                	   @   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 )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.
é    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
   úV/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/werkzeug/debug/repr.pyÚ
debug_repr#   s    r   c                 C   s<   t ƒ }| tk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 )
Ú_Helperz�Displays 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 k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|ƒ|kr|   S qnt|ƒ|kr:| S d}|jjdk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_repréF   )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ks�|d dkr |d	 dkr t||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 k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   sL   zd  tt ¡ d d… Ž ¡}W n tk
r6   d}Y nX 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   sv   d}| j D ]}||kr
d} q q
| j  |¡ z8z|  ||¡W W ¢&S  tk
r`   |  ¡  Y W ¢S X W 5 | j  ¡  X d S )NFT)rV   rL   Úpopr{   r~   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 kr®g }|  |¡}t|ƒD ]8}z| ||  t||ƒ¡f¡ W qp tk
r¦   Y qpX 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>  s     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   sD     ÿ ü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>   s<   
	  þ ÿ   þ