
    ^hx                        S r SSKJr  SSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  S	S
KJrJr  S	SKJr   " S S\5      rg)A terminals extension app.    )annotationsN)which)ensure_async)ExtensionApp)trans)Type   )api_handlershandlers)TerminalManagerc                      \ rS rSr% SrSr\" \SS9R                  SS9r	S\
S	'   S
rSS jrSS jrSS jrSS jrSS jrSS jrSrg)TerminalsExtensionApp   r   jupyter_server_terminalsz"The terminal manager class to use.)default_valuehelpT)configztype[TerminalManager]terminal_manager_classFc                   U R                   (       a  U R                   R                  (       d  U R                  R                  SS05        gU R	                  5         U R                  R                  SU R
                  S.5        g)zInitialize settings.terminals_availableFNT)r   terminal_manager)	serverappterminals_enabledsettingsupdateinitialize_configurablesr   selfs    V/home/james-whalen/.local/lib/python3.13/site-packages/jupyter_server_terminals/app.pyinitialize_settings)TerminalsExtensionApp.initialize_settings%   s\    ~~T^^%E%EMM  "7!?@%%'$(d>S>ST	
    c                   [         R                  S:X  a  SO
[        S5      nU R                  c   eU R                  R                  R                  S5      n[        U[        5      (       a  [        R                  " U5      nUc)  [         R                  R                  S5      =(       d    U/OUn[         R                  S:w  a7  Uc4  [        R                  R                  5       (       d  UR                  S5        U R                  UU R                  R                   U R                  R"                  S.U R                  S	9U l        U R                  R&                  U R$                  l        g)
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   .TerminalsExtensionApp.initialize_configurables/   s   ,.GGtO(t~~)))::>>Onc**"[[8N:H:PRZZ^^G$56Vd 	 77d?~5cjj>O>O>Q>QLL $ ; ;'+~~'>'>&*nn&C&C >> !< !
 %)NN$6$6!r#   c                Z   U R                   (       d  gU R                   R                  (       d1  U R                  S   U R                   R                  R                  S'   gU R                  R                  S[        R                  SU R                  045        U R                  R                  [        R                  5        U R                   c   eU R                  U R                   R                  R                  S'   U R                  S   U R                   R                  R                  S'   g)zInitialize handlers.Nr   z/terminals/websocket/(\w+)term_managerr   )r   r   r   web_appr   r9   
TermSocketr   extendr   default_handlersr   s    r    initialize_handlers)TerminalsExtensionApp.initialize_handlersK   s    ~~~~//EI]]%FDNN""++,AB -##!6!67	
 	\::;~~)))>B>S>S''(:;AE!B
''(=>r#   c                d    U R                   (       a  U R                  R                  nU(       a  U$ g)zGet current activity info.N)r   r   	terminals)r   rJ   s     r    current_activity&TerminalsExtensionApp.current_activitye   s(    ##--77I  r#   c                (  #    U R                   (       d  gU R                  n[        UR                  5       5      n[        R
                  " SSU5      nU R                  R                  SX25        [        UR                  5       5      I Sh  vN   g N7f)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_terminals'TerminalsExtensionApp.cleanup_terminalsm   su      ''00*//12~~')E{
 	j,<+99;<<<s   BB
BBc                @   #    U R                  5       I Sh  vN   g N7f)zStop the extension.N)rU   r   s    r    stop_extension$TerminalsExtensionApp.stop_extension~   s     $$&&&s   )r   N)returnNone)rZ   zdict[str, t.Any] | None)__name__
__module____qualname____firstlineno____doc__r.   r	   r   tagr   __annotations__r   r!   r   rG   rK   rU   rX   __static_attributes__ r#   r    r   r      sW    $%D48%,P5	cc 1   
78
4="'r#   r   )r`   
__future__r   r-   r3   r6   typingtshutilr   jupyter_core.utilsr   $jupyter_server.extension.applicationr   jupyter_server.transutilsr   	traitletsr	    r   r   terminalmanagerr   r   rd   r#   r    <module>ro      s:      " 	  
   + = +  $ ,m'L m'r#   