o
    ê}”ep$  ã                   @  sÊ   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 d¡ZeeƒZdZd	Zd%dd„Zefd&dd„ZG dd„ dƒZeƒ Zd'dd„Z	d(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.
é    )Ú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>ÚobjÚobjectÚreturnÚstrc                 C  s   t ƒ  | ¡S )z1Creates a debug repr of an object as HTML string.)ÚDebugReprGeneratorÚrepr)r   © r   ú\/Users/abhinavbhinder/Documents/map/venv/lib/python3.10/site-packages/werkzeug/debug/repr.pyÚ
debug_repr%   s   r   ÚNonec                 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dd„Z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   r	   c                 C  s   dS )Nz(Type help(object) for help about object.r   ©Úselfr   r   r   Ú__repr__;   s   z_Helper.__repr__NÚtopicút.Any | Noner   c                 C  s”   |d u rt j d| ›d�¡ d S dd l}| |¡ t j ¡ }t |¡}t|ƒdkr7|d }d 	|dd … ¡}nd}|d }t j t
||dœ ¡ d S )Nz<span class=help>ú</span>r   r   z

ZHelp)ÚtitleÚtext)r   r   r   ÚpydocÚhelpÚresetÚ_paragraph_reÚsplitÚlenÚjoinÚ	HELP_HTML)r   r    r%   r   Z
paragraphsr#   r$   r   r   r   Ú__call__>   s   


z_Helper.__call__©r   r	   ©N)r    r!   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r-   r   r   r   r   r   6   s    
r   ÚinnerÚbaseút.Type | tuple[t.Type, ...]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>ú(ú))Ú
isinstanceÚtupleÚtypeÚ	__class__r1   r0   )r4   r   r5   ÚclsÚmoduler   r   r   Ú_add_subclass_infoS   s   
ÿÿrB   é   ÚleftÚrightút.TypeÚlimitÚintú7t.Callable[[DebugReprGenerator, t.Iterable, bool], str]c                   s   d‡ ‡‡‡fd	d
„}|S )Nr   r
   r   ú
t.IterableÚ	recursiveÚboolr   r	   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"   r7   )rB   Ú	enumerateÚappendr   r+   )r   r   rK   ÚbufÚhave_extended_sectionÚidxÚitem©r5   rD   rG   rE   r   r   Úproxye   s   



z#_sequence_repr_maker.<locals>.proxy)r   r
   r   rJ   rK   rL   r   r	   r   )rD   rE   r5   rG   rV   r   rU   r   Ú_sequence_repr_makerb   s   rW   c                   @  sÀ   e Zd Zd7d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d8dd„Zd9d:dd„Z	d;d<dd„Zd=d d!„Zd>d#d$„Zd?d%d&„Zd@d(d)„Zd@d*d+„ZdAd-d.„Z	/dBdCd5d6„Zd/S )Dr
   r   r   c                 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   ú	t.Patternr	   c                 C  s.   t |jƒ}t |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   r_   r   r   r   Ú
regex_repr…   s   

zDebugReprGenerator.regex_repréF   ústr | bytesrG   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">é   rN   r"   r7   r   z'"Úbr   )	r   r*   Úextendr   rP   r+   rB   Úbytesr	   )r   r   rG   rQ   r^   Úoutr   r   r   Ústring_repr‹   s    üÿ	

$zDebugReprGenerator.string_repré   Údú7dict[int, None] | dict[str, int] | dict[str | int, int]rK   rL   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{...}Ú{FrM   r   rN   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r"   Ú}r7   )rB   ÚdictrO   ÚitemsrP   r   r+   )	r   rl   rK   rG   rQ   rR   rS   ÚkeyÚvaluer   r   r   Ú	dict_repr¦   s&   

ÿÿ

zDebugReprGenerator.dict_reprú+type[dict] | t.Callable | type[list] | Nonec                 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_reprút.Anyc                 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<   rH   ÚfloatÚcomplexr	   rh   rj   Ú	RegexTyperb   ÚlistÚ	list_reprr=   Ú
tuple_reprÚsetÚset_reprÚ	frozensetÚfrozenset_reprrp   rt   r   Ú
deque_reprrv   )r   r   rK   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 )Nr7   re   ú?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_reprr   c                 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)rX   rP   r„   Úpopr‡   rŠ   )r   r   rK   rT   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<   rp   rq   r	   rP   r   ÚdirÚgetattrr‡   r   r   Úrender_object_dump)r   r   r   rq   r#   rr   rs   r   r   r   r   ó   s,   


ÿzDebugReprGenerator.dump_objectúdict[str, t.Any]c                   s"   ‡ fdd„|  ¡ D ƒ}ˆ  |d¡S )Nc                   s   g | ]\}}|ˆ   |¡f‘qS r   )r   )Ú.0rr   rs   r   r   r   Ú
<listcomp>  s    z2DebugReprGenerator.dump_locals.<locals>.<listcomp>zLocal variables in frame)rq   r�   )r   rl   rq   r   r   r   r     s   zDebugReprGenerator.dump_localsNrq   úlist[tuple[str, str]]r#   r   ú
str | Nonec                 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>r7   Ú
)r#   r   rq   )rP   r   ÚOBJECT_DUMP_HTMLr+   )r   rq   r#   r   Z
html_itemsrr   rs   r   r   r   r�     s   
ýz%DebugReprGenerator.render_object_dump)r   r   )r   r\   r   r	   )rc   )r   rd   rG   rH   r   r	   )rk   )rl   rm   rK   rL   rG   rH   r   r	   )r   ru   r   r	   )r   rw   rK   rL   r   r	   r.   ©r   r   r   r	   )rl   r‘   r   r	   r/   )rq   r”   r#   r	   r   r•   r   r	   )r0   r1   r2   rY   rW   r|   r}   r=   r~   r   r€   r�   r‚   r   rƒ   rb   rj   rt   rv   r„   rŠ   r   r   r   r�   r   r   r   r   r
   y   s*    
ÿ
ü






ÿr
   r˜   )r   r   r   r   )r4   r	   r   r   r5   r6   r   r	   )rC   )
rD   r	   rE   r	   r5   rF   rG   rH   r   rI   )r3   Ú
__future__r   r`   Úrer   ÚtypingÚtÚcollectionsr   Ú	tracebackr   Z
markupsafer   r   r   Úcompiler(   r>   r{   r,   r—   r   r   r   rx   rB   rW   r
   r   r   r   r   Ú<module>   s,    

	
ÿ