
    wdfp                     8   d 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            Z G d de          Z G d de          Zej        Zej        e_         G d de          Zd Z G d dej                  Z G d de          ZdS )z
    werkzeug.debug.console
    ~~~~~~~~~~~~~~~~~~~~~~

    Interactive console support.

    :copyright: 2007 Pallets
    :license: BSD-3-Clause
    N)CodeType   )Local)escape   )
debug_repr)dump)helperc                   P    e Zd ZdZd Zd Zd Zd ZddZd Z	d	 Z
d
 Zd Zd ZdS )HTMLStringOz-A StringO version that HTML escapes on write.c                     g | _         d S N)_bufferselfs    [/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/werkzeug/debug/console.py__init__zHTMLStringO.__init__   s        c                     dS )NF r   s    r   isattyzHTMLStringO.isatty   s    ur   c                     d S r   r   r   s    r   closezHTMLStringO.close"       r   c                     d S r   r   r   s    r   flushzHTMLStringO.flush%   r   r   r   c                     d S r   r   )r   nmodes      r   seekzHTMLStringO.seek(   r   r   c                 d    t          | j                  dk    rdS | j        d         }| j        d= |S )Nr    )lenr   )r   rets     r   readlinezHTMLStringO.readline+   s5    t|!!2l1oLO
r   c                 N    d                     | j                  }| j        d d = |S Nr"   )joinr   )r   vals     r   resetzHTMLStringO.reset2   s'    ggdl##LO
r   c                     t          |t                    r|                    dd          }| j                            |           d S )Nzutf-8replace)
isinstancebytesdecoder   appendr   xs     r   _writezHTMLStringO._write7   sC    a 	-),,AAr   c                 J    |                      t          |                     d S r   )r3   r   r1   s     r   writezHTMLStringO.write<   s     F1IIr   c                 p    |                      t          d                    |                               d S r'   )r3   r   r(   r1   s     r   
writelineszHTMLStringO.writelines?   s,    F2771::&&'''''r   N)r   )__name__
__module____qualname____doc__r   r   r   r   r    r%   r*   r3   r5   r7   r   r   r   r   r      s        77               
  
  ( ( ( ( (r   r   c                   l    e Zd ZdZed             Zed             Zed             Zd Zd Z	d Z
d Zd	S )
ThreadedStreamz@Thread-local wrapper for sys.stdout for the interactive console.c                      t          t          j        t                    st                      t          _        t	                      t
          _        d S r   )r-   sysstdoutr=   r   _localstreamr   r   r   pushzThreadedStream.pushF   s2    #*n55 	*'))CJ#r   c                  h    	 t           j        } n# t          $ r Y dS w xY w|                                 S r'   )rA   rB   AttributeErrorr*   )rB   s    r   fetchzThreadedStream.fetchL   s@    	]FF 	 	 	22	||~~s    
c                     	 t           j        }n# t          $ r t          |           cY S w xY w| 8| t           j        j        d<   |                    t          |                      d S d S )N_)rA   rB   rE   _displayhook_current_ipylocalsr3   r   )objrB   s     r   displayhookzThreadedStream.displayhookT   s{    	%]FF 	% 	% 	%$$$$$	% ?.1F&s+MM*S//***** ?s    ++c                 &    t          d|z            )Nzread only attribute %s)rE   )r   namevalues      r   __setattr__zThreadedStream.__setattr__`   s    5<===r   c                 4    t          t          j                  S r   )dirr?   
__stdout__r   s    r   __dir__zThreadedStream.__dir__c   s    3>"""r   c                     |dk    rt          t          j                  S 	 t          j        }n# t
          $ r t          j        }Y nw xY wt          ||          S )N__members__)rS   r?   rT   rA   rB   rE   getattr)r   rO   rB   s      r   __getattribute__zThreadedStream.__getattribute__f   sa    =  s~&&&	$]FF 	$ 	$ 	$^FFF	$vt$$$s   . AAc                 4    t          t          j                  S r   )reprr?   rT   r   s    r   __repr__zThreadedStream.__repr__o   s    CN###r   N)r8   r9   r:   r;   staticmethodrC   rF   rM   rQ   rU   rY   r\   r   r   r   r=   r=   C   s        JJ& & \&
   \ 	+ 	+ \	+> > ># # #% % %$ $ $ $ $r   r=   c                        e Zd Zd Zd Zd ZdS )_ConsoleLoaderc                     i | _         d S r   )_storager   s    r   r   z_ConsoleLoader.__init__y   s    r   c                     || j         t          |          <   |j        D ].}t          |t                    r|| j         t          |          <   /d S r   )ra   id	co_constsr-   r   )r   codesourcevars       r   registerz_ConsoleLoader.register|   sT    "(bhh> 	0 	0C#x(( 0)/bgg&	0 	0r   c                 Z    	 | j         t          |                   S # t          $ r Y d S w xY wr   )ra   rc   KeyErrorr   re   s     r   get_source_by_codez!_ConsoleLoader.get_source_by_code   s<    	=D** 	 	 	DD	s    
**N)r8   r9   r:   r   rh   rl   r   r   r   r_   r_   x   sA          0 0 0    r   r_   c                 2      j          fd}| _         d S )Nc                 X     | ||          }j                             ||            |S r   )loaderrh   )rf   filenamesymbolre   compileconsoles       r   funcz_wrap_compiler.<locals>.func   s3    wvx00f---r   )rr   )rs   rt   rr   s   ` @r   _wrap_compilerru      s6    oG     
 GOOOr   c                   4    e Zd Zd Zd Zd Zd ZddZd ZdS )	_InteractiveConsolec                 $   t          |          }|                    |           |}t          |d<   t          |d<   t	                      x|d<   | _        t          j                            | |           d| _	        g | _
        t          |            d S )Nr	   help
__loader__F)dictupdater	   r
   r_   ro   re   InteractiveInterpreterr   morebufferru   )r   globalsrK   _localss       r   r   z_InteractiveConsole.__init__   s    w--vvv-;-=-==|t{#,,T6:::	tr   c                    |                                 dz   }t                                           | j        rdnd}	 d                    | j        |gz             }t          j                            | |dd          r"d| _        | j        	                    |           nd| _        | j        d d = t          
                                }n# t          
                                }w xY w|t          |          z   |z   S )	N
z... z>>> r"   z
<debugger>singleTF)rstripr=   rC   r~   r(   r   re   r}   	runsourcer0   rF   r   )r   rf   promptsource_to_evaloutputs        r   r   z_InteractiveConsole.runsource   s    4'90&	,WWT[F8%;<<N*44nlH  # !	""6****!	KN#))++FF^))++F++++v&//s   A3C
 
C%c                 |    	 t          || j                   d S # t          $ r |                                  Y d S w xY wr   )execrK   	Exceptionshowtracebackrk   s     r   runcodez_InteractiveConsole.runcode   sU    	!t{##### 	! 	! 	!      	!s    ;;c                     ddl m}  |d          }t          j                            |                                           d S )Nr   get_current_tracebackskiptbtoolsr   r?   r@   r3   render_summary)r   r   tbs      r   r   z!_InteractiveConsole.showtraceback   O    222222""***
"++--.....r   Nc                     ddl m}  |d          }t          j                            |                                           d S )Nr   r      r   r   )r   rp   r   r   s       r   showsyntaxerrorz#_InteractiveConsole.showsyntaxerror   r   r   c                 D    t           j                            |           d S r   )r?   r@   r5   )r   datas     r   r5   z_InteractiveConsole.write   s    
r   r   )	r8   r9   r:   r   r   r   r   r   r5   r   r   r   rw   rw      ss        
 
 
0 0 0$! ! !/ / // / / /    r   rw   c                        e Zd ZdZddZd ZdS )ConsolezAn interactive console.Nc                 @    |i }|i }t          ||          | _        d S r   )rw   _ipy)r   r   rK   s      r   r   zConsole.__init__   s+    >F?G'88			r   c                     | j         t          _        t          j        }	 | j                             |          |t          _        S # |t          _        w xY wr   )r   rA   rJ   r?   r@   r   )r   re   old_sys_stdouts      r   evalzConsole.eval   sG    "i	(9&&t,,'CJJCJ''''s   A A)NN)r8   r9   r:   r;   r   r   r   r   r   r   r      s=        !!9 9 9 9( ( ( ( (r   r   )r;   re   r?   typesr   localr   utilsr   r[   r   r	   r
   rA   objectr   r=   rM   rI   r_   ru   r}   rw   r   r   r   r   <module>r      s     



                                     
'( '( '( '( '(& '( '( '(T-$ -$ -$ -$ -$V -$ -$ -$b  ,    V   $  2 2 2 2 2$5 2 2 2j( ( ( ( (f ( ( ( ( (r   