
    e                        d Z ddlZddlZddlZddlZddlZddlZej        	                    ej
        dk    d          Zej        	                    ej
        dk    d          Zd Zd	 Zeeej        j        d
                                     Zeeej        j        d                                     Zd Zd Zd Zd ZddZd Zej        j        r e                                             dS dS )z*This module contains tests of the Terminal    Nwin32zDoes not work on Windows)reasondarwinzSometimes fails on OSXc                      t           j                                        } |                     d           t	          |                               d          sJ d S )NHelloz	Terminal()pnwidgetsTerminalwriterepr
startswith)terminals    Alib/python3.11/site-packages/panel/tests/widgets/test_terminal.pytest_terminal_constructorr      sM    z""$$HNN7>>$$[1111111    c                 V   t           j                            d          }|                    d           |                    | |          }|j        dk    sJ |                                 |j        dk    sJ |j        dk    sJ |                    | |          }|j        dk    sJ d S )Nr   z World!zHello World!    )r   r	   r
   r   get_rootoutputclear_clears)documentcommr   modelmodel2s        r   test_terminalr      s    z""7++HNN9h--E<>))))NN=A?b    x..F=Br   c                     d} t           j                                        }|j        }| |_        |j        |k    sJ |j        | k    sJ |j        rJ t          |                              d          sJ |	                                 |j        sJ |j
        sJ |j        sJ |                                 |j        rJ |j
        dk    sJ |j        dk    sJ d S )NbashzTerminalSubprocess(r   )r   r	   r
   
subprocessargs	_terminalrunningr   r   run
_child_pid_fdkill)r!   r   r    s      r   test_subprocessr(   )   s    Dz""$$H$JJO8++++?d""""!!!!
&&'<=====NN    >OO!!!! A%%%%>Qr   c                  .   t           j                                        } | j        }ddg|_        |                                 d}|j        s,|dk     r&t          j        d           |dz  }|j        s|dk     &|j        sJ |	                                 d S )Nls-lr   
   g?r   )
r   r	   r
   r    r!   r$   r#   timesleepr'   )r   r    counts      r   test_run_list_argsr0   C   s     z""$$H$JTlJONNE  URZZ
3
   URZZ OOr   c                      t           j                                        } | j        }t	          j        t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nzls -l)r   r	   r
   r    pytestraises
ValueErrorr!   )r   r    s     r   *test_cannot_assign_string_args_with_spacesr5   S   s    z""$$H$J	z	"	" " "!
" " " " " " " " " " " " " " " " " "s   AAAc                 0    |                      d           d S )Nz*This is written directly to the terminal.
)r   terms    r   write_to_terminalr9   Z   s    JJ<=====r   c                     | t           _        t          d           t           j        t           _        t          d           d S )NzDThis print statement is redirected from stdout to the Panel Terminalz>This print statement is again redirected to the server console)sysstdoutprint
__stdout__r7   s    r   print_to_terminalr?   ^   s6    CJ	
PQQQCJ	
JKKKKKr   c                 \   t          j        d          }|                    t           j                   t          j        |           }d|_        t          j        d          }|                    |           |                    t           j                   |                    |           |S )Nr   z  
z(%(asctime)s [%(levelname)s]: %(message)s)	logging	getLoggersetLevelDEBUGStreamHandler
terminator	FormattersetFormatter
addHandler)r8   loggerstream_handler	formatters       r   
get_loggerrM   f   s    z**F
OOGM"""*400N &N!"LMMI	***GM***
n%%%Mr   r   c                     t          |          D ]A}|                     d           |                     d           |                     d           Bd S )Nu    Danish Characters: æøåÆØÅ
u,   Emoji: Python 🐍  Panel ❤️  LOL 😊 
z!Links: https://awesome-panel.org
)ranger   )r8   
iterations_s      r   _special_charactersrR   t   s_    : 9 9

6777

BCCC

788889 9r   c                     	
 dt           j        _        t           j                            ddddddi          
t           j                            dd	
          } |                     
fd           t           j                            dd	
          }|                    
fd           t           j                            dd	
          }|                    
fd           t          
          	t           j                            dd	
          }|                    	fd           t           j                            dd	
          }|                    	fd           t           j                            dd	
          }|                    
fd           t           j                            dd	
          }|                    
fd           t           j                            dd	
          }|                    
fd           t           j        	                    d          }t          j
        t           j                            d          
t          j        
g dt           j        j        ddd t           j        j        ddd d!"          t          j        
j        g d#d$%                    g|j        d d <   t           j                            d&          | |||||||g	|j        d d <   |S )'Nstretch_widthz6Welcome to the Panel Terminal!
I'm based on xterm.js

i  i   cursorBlinkT)objectheightwidthsizing_modeoptionszWrite to the Terminalprimary)namebutton_typec                 "    t                    S N)r9   xr   s    r   <lambda>zget_app.<locals>.<lambda>       0A(0K0K r   zWrite special to the Terminalc                 "    t                    S r_   )rR   r`   s    r   rb   zget_app.<locals>.<lambda>   s    1DX1N1N r   zPrint to Terminalc                 "    t                    S r_   )r?   r`   s    r   rb   zget_app.<locals>.<lambda>   rc   r   Logc                 .                         d          S )NzHello Info Logger)infora   rJ   s    r   rb   zget_app.<locals>.<lambda>   s    &++.A"B"B r   Streamc                 :    fdt          d          D             S )Nc                 \    g | ](}                     t          j                              )S  )rh   uuiduuid4).0irJ   s     r   
<listcomp>z-get_app.<locals>.<lambda>.<locals>.<listcomp>   s+    %T%T%TAfkk$*,,&?&?%T%T%Tr   i,  )rO   ri   s    r   rb   zget_app.<locals>.<lambda>   s"    %T%T%T%Ts%T%T%T r   zRun ls in subprocessc                 :    j                             d          S )Nr*   )r!   r    r$   r`   s    r   rb   zget_app.<locals>.<lambda>   s    83F3J3JPT3J3U3U r   zRun ls -l in subprocessc                 :    j                             dd          S )Nr*   r+   rt   r`   s    r   rb   zget_app.<locals>.<lambda>   s    (%))$55 r   zRun bash in subprocessc                 8    j                             d          S )Nr   rt   r`   s    r   rb   zget_app.<locals>.<lambda>   s    (%))&11 r   z"Panel - Terminal - PR in Progress!)titlez#### Terminal)valuerV   write_to_consoler   rX   rW   rY   r   i  )widget_typestartend)rX   rW   )
parametersr	   )r'   r#   _period
Subprocess)r}   r\   z
#### Tests)r   configrY   r	   r
   Buttonon_clickrM   templateFastListTemplateColumnpaneMarkdownParam	IntSliderr    mainsidebar)write_to_terminal_buttonspecial_characters_buttonprint_to_terminal_button
log_buttonstream_buttonrun_ls_in_subprocess_buttonrun_ls_l_in_subprocess_buttonrun_bash_in_subprocess_buttonr   rJ   r   s            @@r   get_appr   {   s   +BIz""J#% #  H  "z00$)  1     %%&K&K&K&KLLL "
 1 1,) !2 ! ! &&'N'N'N'NOOO!z00 i  1     %%&K&K&K&KLLL!!F""9"EEJBBBBCCCJ%%8%KKMTTTTUUU"$*"3"3# #4 # #  (()U)U)U)UVVV$&J$5$5&I %6 % %! "**5555   %'J$5$5%9 %6 % %! "**1111   {++2V+WWH 		G_--H   (*z';!"#  (*z';!"#    0 H#999!  7 	
  	
"HM!!!H 	&& ! #%%
HQQQ Or   )r   )__doc__rA   r;   r-   rn   r2   panelr   markskipifplatformnot_windowsnot_osxr   r   r    r(   r0   r5   r9   r?   rM   rR   r   stateservedservablerm   r   r   <module>r      s   0 0  



       k  !8A[ \\
+

S\X5>V

W
W2 2 2  $    	 . 
 
  	 
" " "> > >L L L  9 9 9 9c c cL 8? GII r   