o
    q>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 )*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>objobjectreturnstrc                 C  s   t  | S )z1Creates a debug repr of an object as HTML string.)DebugReprGeneratorrepr)r    r   T/var/www/bmteknikk.ddns.net/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 )_HelperzDisplays 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

Help)titletext)r   r   r   pydochelpreset_paragraph_resplitlenjoin	HELP_HTML)r   r    r&   r   
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__r3   r2   )r6   r   r7   clsmoduler   r   r   _add_subclass_infoS   s   
rD      leftrightt.Typelimitint7t.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"   r9   )rD   	enumerateappendr   r,   )r   r   rM   bufhave_extended_sectionidxitemr7   rF   rI   rG   r   r   proxye   s   



z#_sequence_repr_maker.<locals>.proxy)r   r
   r   rL   rM   rN   r   r	   r   )rF   rG   r7   rI   rX   r   rW   r   _sequence_repr_makerb   s   rY   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 r1   )_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   ra   r   r   r   
regex_repr   s   

zDebugReprGenerator.regex_reprF   str | bytesrI   rJ   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">   rP   r"   r9   r   z'"br   )	r   r+   extendr   rR   r,   rD   bytesr	   )r   r   rI   rS   r`   outr   r   r   string_repr   s    	

$zDebugReprGenerator.string_repr   d7dict[int, None] | dict[str, int] | dict[str | int, int]rM   rN   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{...}{FrO   r   rP   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>r"   }r9   )rD   dictrQ   itemsrR   r   r,   )	r   rn   rM   rI   rS   rT   rU   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>   rJ   floatcomplexr	   rj   rl   	RegexTyperd   list	list_reprr?   
tuple_reprsetset_repr	frozensetfrozenset_reprrr   rv   r   
deque_reprrx   )r   r   rM   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 )Nr9   rg   ?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)rZ   rR   r   popr   r   )r   r   rM   rV   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>   rr   rs   r	   rR   r   dirgetattrr   r   r   render_object_dump)r   r   r   rs   r$   rt   ru   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   ).0rt   ru   r   r   r   
<listcomp>  s    z2DebugReprGenerator.dump_locals.<locals>.<listcomp>zLocal variables in frame)rs   r   )r   rn   rs   r   r   r   r     s   zDebugReprGenerator.dump_localsNrs   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>r9   
)r$   r   rs   )rR   r   OBJECT_DUMP_HTMLr,   )r   rs   r$   r   
html_itemsrt   ru   r   r   r   r     s   
z%DebugReprGenerator.render_object_dump)r   r   )r   r^   r   r	   )re   )r   rf   rI   rJ   r   r	   )rm   )rn   ro   rM   rN   rI   rJ   r   r	   )r   rw   r   r	   )r   ry   rM   rN   r   r	   r0   r   r   r   r	   )rn   r   r   r	   r1   )rs   r   r$   r	   r   r   r   r	   )r2   r3   r4   r[   rY   r~   r   r?   r   r   r   r   r   r   r   rd   rl   rv   rx   r   r   r   r   r   r   r   r   r   r   r
   y   s*    








r
   r   )r   r   r   r   )r6   r	   r   r   r7   r8   r   r	   )rE   )
rF   r	   rG   r	   r7   rH   rI   rJ   r   rK   )r5   
__future__r   rb   rer   typingtcollectionsr   	tracebackr   
markupsafer   r   r   compiler)   r@   r}   r-   r   r   r   r   rz   rD   rY   r
   r   r   r   r   <module>   s,    

	
