o
    'h                     @  s   U d dl m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 ddlmZ ddlmZ dd	lmZ ed
Zded< edZded< G dd dZG dd dZejZeje_G dd dZG dd dejZG dd dZdS )    )annotationsN)
ContextVar)CodeType)escape   )
debug_repr)dump)helperzwerkzeug.debug.console.streamzContextVar[HTMLStringO]_streamzwerkzeug.debug.console.ipyzContextVar[_InteractiveConsole]_ipyc                   @  sv   e Zd ZdZd!ddZd"ddZd!d	d
Zd!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d S )(HTMLStringOz-A StringO version that HTML escapes on write.returnNonec                 C  s
   g | _ d S N)_bufferself r   R/var/www/html/olx_land/venv/lib/python3.10/site-packages/werkzeug/debug/console.py__init__      
zHTMLStringO.__init__boolc                 C  s   dS )NFr   r   r   r   r   isatty      zHTMLStringO.isattyc                 C     d S r   r   r   r   r   r   close   r   zHTMLStringO.closec                 C  r   r   r   r   r   r   r   flush   r   zHTMLStringO.flushr   nintmodec                 C  r   r   r   )r   r   r   r   r   r   seek"   r   zHTMLStringO.seekstrc                 C  s(   t | jdkr	dS | jd }| jd= |S )Nr    )lenr   )r   retr   r   r   readline%   s
   
zHTMLStringO.readlinec                 C  s   d | j}| jd d = |S Nr"   )joinr   )r   valr   r   r   reset,   s   zHTMLStringO.resetxc                 C  s   | j | d S r   )r   appendr   r*   r   r   r   _write1      zHTMLStringO._writec                 C  s   |  t| d S r   )r-   r   r,   r   r   r   write4   s   zHTMLStringO.writet.Iterable[str]c                 C  s   |  td| d S r&   )r-   r   r'   r,   r   r   r   
writelines7   s   zHTMLStringO.writelinesNr   r   )r   r   )r   )r   r   r   r   r   r   r   r!   )r*   r!   r   r   )r*   r0   r   r   )__name__
__module____qualname____doc__r   r   r   r   r    r%   r)   r-   r/   r1   r   r   r   r   r      s    







r   c                   @  sb   e Zd ZdZedddZedddZedddZdddZdddZ	dddZ
dddZdS ) ThreadedStreamz@Thread-local wrapper for sys.stdout for the interactive console.r   r   c                   C  s.   t tjtsttjt t_tt	  d S r   )

isinstancesysstdoutr8   tcastTextIOr
   setr   r   r   r   r   push>   s   zThreadedStream.pushr!   c                  C  s(   z	t  } W |  S  ty   Y dS w r&   )r
   getLookupErrorr)   )streamr   r   r   fetchE   s   
zThreadedStream.fetchobjobjectc                 C  sT   zt  }W n ty   t|  Y S w | d ur(| t jd< |t|  d S d S )N_)r
   rA   rB   _displayhookr   localsr-   r   )rE   rC   r   r   r   displayhookN   s   zThreadedStream.displayhooknamevaluet.Anyc                 C  s   t d| )Nzread only attribute )AttributeError)r   rK   rL   r   r   r   __setattr__[   s   zThreadedStream.__setattr__	list[str]c                 C  
   t tjS r   )dirr:   
__stdout__r   r   r   r   __dir__^   r   zThreadedStream.__dir__c                 C  s0   zt  }W n ty   tj}Y nw t||S r   )r
   rA   rB   r:   rS   getattr)r   rK   rC   r   r   r   __getattribute__a   s   

zThreadedStream.__getattribute__c                 C  rQ   r   )reprr:   rS   r   r   r   r   __repr__i   r   zThreadedStream.__repr__Nr2   r3   )rE   rF   r   r   )rK   r!   rL   rM   r   r   )r   rP   )rK   r!   r   rM   )r4   r5   r6   r7   staticmethodr@   rD   rJ   rO   rT   rV   rX   r   r   r   r   r8   ;   s    


r8   c                   @  s*   e Zd ZdddZdd	d
ZdddZdS )_ConsoleLoaderr   r   c                 C  s
   i | _ d S r   )_storager   r   r   r   r   s   r   z_ConsoleLoader.__init__coder   sourcer!   c                 C  s6   || j t|< |jD ]}t|tr|| j t|< q
d S r   )r[   id	co_constsr9   r   )r   r\   r]   varr   r   r   registerv   s   

z_ConsoleLoader.register
str | Nonec                 C  s&   z| j t| W S  ty   Y d S w r   )r[   r^   KeyErrorr   r\   r   r   r   get_source_by_code}   s
   z!_ConsoleLoader.get_source_by_codeNr2   )r\   r   r]   r!   r   r   )r\   r   r   rb   )r4   r5   r6   r   ra   re   r   r   r   r   rZ   r   s    

rZ   c                      s`   e Zd ZU ded< d fddZd fddZdddZdddZd d!ddZd"ddZ	  Z
S )#_InteractiveConsoledict[str, t.Any]rI   globalsr   r   c                   sZ   t  _i ||ttjd}t | j d fdd	}|_d
_g _d S )N)r   help
__loader__r]   r!   filenamesymbolr   CodeType | Nonec                   s&    | ||}|d urj ||  |S r   )loaderra   )r]   rk   rl   r\   original_compiler   r   r   compile   s   z-_InteractiveConsole.__init__.<locals>.compileF)r]   r!   rk   r!   rl   r!   r   rm   )	rZ   rn   r   r	   superr   rq   morebuffer)r   rh   rI   rq   	__class__ro   r   r      s    
z_InteractiveConsole.__init__r]   r!   kwargsrM   c                   s   |   d}t  | jrdnd}z*d| j|g }t |ddr.d| _| j| n	d| _| jd d = W t	 }nt	 }w | t
| | S )	N
z... z>>> r"   z
<debugger>singleTF)rstripr8   r@   rs   r'   rt   rr   	runsourcer+   rD   r   )r   r]   rw   promptsource_to_evaloutputru   r   r   r{      s   z_InteractiveConsole.runsourcer\   r   c                 C  s0   z	t || j W d S  ty   |   Y d S w r   )execrI   	Exceptionshowtracebackrd   r   r   r   runcode   s
   z_InteractiveConsole.runcodec                 C  s@   ddl m} ttt d }||dd}tj|	  d S )Nr   DebugTracebackskip
tbtoolsr   r<   r=   BaseExceptionr:   exc_infor;   r-   render_traceback_html)r   r   excter   r   r   r         z!_InteractiveConsole.showtracebackNrk   rb   c                 C  s@   ddl m} ttt d }||dd}tj|	  d S )Nr   r      r   r   )r   rk   r   r   r   r   r   r   showsyntaxerror   r   z#_InteractiveConsole.showsyntaxerrordatac                 C  s   t j| d S r   )r:   r;   r/   )r   r   r   r   r   r/      r.   z_InteractiveConsole.write)rh   rg   rI   rg   r   r   )r]   r!   rw   rM   r   r!   )r\   r   r   r   r2   r   )rk   rb   r   r   )r   r!   r   r   )r4   r5   r6   __annotations__r   r{   r   r   r   r/   __classcell__r   r   ru   r   rf      s   
 

rf   c                   @  s*   e Zd ZdZ		dddd	ZdddZdS )ConsolezAn interactive console.Nrh   dict[str, t.Any] | NonerI   r   r   c                 C  s(   |d u ri }|d u ri }t ||| _d S r   )rf   r   )r   rh   rI   r   r   r   r      s
   zConsole.__init__r\   r!   c                 C  s0   t | j  tj}z
| j |W |t_S |t_w r   )r   r?   r:   r;   r{   )r   r\   old_sys_stdoutr   r   r   eval   s
   zConsole.eval)NN)rh   r   rI   r   r   r   )r\   r!   r   r!   )r4   r5   r6   r7   r   r   r   r   r   r   r      s    r   )
__future__r   r\   r:   typingr<   contextvarsr   typesr   
markupsafer   rW   r   r   r	   r
   r   r   r   r8   rJ   rH   rZ   InteractiveInterpreterrf   r   r   r   r   r   <module>   s&    (3C