
    Xhx                        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 ddlmZ ddlmZ d	d
lmZmZ d	dlmZ  G d de      Zy)A terminals extension app.    )annotationsN)which)ensure_async)ExtensionApp)trans)Type   )api_handlershandlers)TerminalManagerc                      e Zd ZU dZdZ eed      j                  d      Zde	d<   d	Z
dd
ZddZddZddZddZddZy)TerminalsExtensionAppr   jupyter_server_terminalsz"The terminal manager class to use.)default_valuehelpT)configztype[TerminalManager]terminal_manager_classFc                    | j                   r| j                   j                  s| j                  j                  ddi       y| j	                          | j                  j                  d| j
                  d       y)zInitialize settings.terminals_availableFNT)r   terminal_manager)	serverappterminals_enabledsettingsupdateinitialize_configurablesr   selfs    P/var/www/html/myenv/lib/python3.12/site-packages/jupyter_server_terminals/app.pyinitialize_settingsz)TerminalsExtensionApp.initialize_settings%   s\    ~~T^^%E%EMM  "7!?@%%'$(d>S>ST	
    c                   t         j                  dk(  rdn
t        d      }| j                  J | j                  j                  j                  d      }t        |t              rt        j                  |      }|$t         j                  j                  d      xs |gn|}t         j                  dk7  r1|/t        j                  j                         s|j                  d       | j                  || j                  j                   | j                  j"                  d| j                  	      | _        | j                  j&                  | j$                  _        y)
zInitialize configurables.ntzpowershell.exeshNshell_commandSHELLz-l)JUPYTER_SERVER_ROOTJUPYTER_SERVER_URL)r%   	extra_envparent)osnamer   r   terminado_settingsget
isinstancestrshlexsplitenvironsysstdoutisattyappendr   root_dirconnection_urlr   log)r   default_shellshell_overrideshells       r   r   z.TerminalsExtensionApp.initialize_configurables/   s	   ,.GGtO(t~~)))::>>Onc*"[[8N:H:PRZZ^^G$56Vd 	 77d?~5cjj>O>O>QLL $ ; ;'+~~'>'>&*nn&C&C >> !< !
 %)NN$6$6!r!   c                D   | j                   sy| j                   j                  s1| j                  d   | j                   j                  j                  d<   y| j                  j                  dt        j                  d| j                  if       | j                  j                  t        j                         | j                   J | j                  | j                   j                  j                  d<   | j                  d   | j                   j                  j                  d<   y)zInitialize handlers.Nr   z/terminals/websocket/(\w+)term_managerr   )r   r   r   web_appr   r7   
TermSocketr   extendr   default_handlersr   s    r   initialize_handlersz)TerminalsExtensionApp.initialize_handlersK   s    ~~~~//EI]]%FDNN""++,AB -##!6!67	
 	\::;~~)))>B>S>S''(:;AE!B
''(=>r!   c                P    | j                   r| j                  j                  }|r|S y)zGet current activity info.N)r   r   	terminals)r   rF   s     r   current_activityz&TerminalsExtensionApp.current_activitye   s(    ##--77I  r!   c                  K   | j                   sy| j                  }t        |j                               }t	        j
                  dd|      }| j                  j                  d||       t        |j                                d{    y7 w)zShutdown all terminals.

        The terminals will shutdown themselves when this process no longer exists,
        but explicit shutdown allows the TerminalManager to cleanup.
        NzShutting down %d terminalzShutting down %d terminalsz%s %% %s)
r   r   lenlistr   ngettextr:   infor   terminate_all)r   r   n_terminalsterminal_msgs       r   cleanup_terminalsz'TerminalsExtensionApp.cleanup_terminalsm   sx      ''00*//12~~')E{
 	j,<+99;<<<s   BBBBc                @   K   | j                          d{    y7 w)zStop the extension.N)rP   r   s    r   stop_extensionz$TerminalsExtensionApp.stop_extension~   s     $$&&&s   N)returnNone)rS   zdict[str, t.Any] | None)__name__
__module____qualname____doc__r,   r	   r   tagr   __annotations__r   r    r   rD   rG   rP   rR    r!   r   r   r      sW    $%D48%,P5	cc 1   
78
4="'r!   r   )rX   
__future__r   r+   r1   r4   typingtshutilr   jupyter_core.utilsr   $jupyter_server.extension.applicationr   jupyter_server.transutilsr   	traitletsr	    r   r   terminalmanagerr   r   r[   r!   r   <module>rf      s:      " 	  
   + = +  $ ,m'L m'r!   