
    Mh/                    ~   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Z	ddl
mZmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z!e"dk    re!#                                 dS dS )zApps for managing kernel specs.    )annotationsN)
JupyterAppbase_aliases
base_flags)BoolDictInstanceListUnicode)Application   )__version__)KernelSpecManager)KernelProvisionerFactoryc                  ~    e Zd ZdZeZdZ ee          Z	 e
ddd          Zd ddiidfed         d	ZddZddZdS )ListKernelSpecszAn app to list kernel specs.z%List installed kernel specifications.Fz7output spec name and location as machine-readable json.T)helpconfigjson_outputdebug)jsonr   returnr   c                .    t          | | j                  S )N)parentdata_dirr   r   selfs    \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_client/kernelspecapp.py_kernel_spec_manager_defaultz,ListKernelSpecs._kernel_spec_manager_default)   s     t}EEEE    dict[str, t.Any] | Nonec                     j                                         } j                                         } j        s|st	          d           dS t          t          |d           d                   }d fd	}t	          d
           t          |                                |          D ]-\  }}t	          d|                    |           d|            .n%t	          t          j
        d|id                     |S )Start the application.zNo kernels availableNc                     t          |           S Nlennames    r   <lambda>z'ListKernelSpecs.start.<locals>.<lambda>5   s    #d)) r!   keyitemt.Anyr   c                    | d         }t          j                  D ] \  }}|                    |          r||fc S !d|fS )z+sort key function for Jupyter path priorityr   r.   )	enumeratejupyter_path
startswith)r/   pathidxprefixr   s       r   path_keyz'ListKernelSpecs.start.<locals>.path_key7   s_    Aw#,T->#?#? + +KCv.. + #T{***+ Dz!r!   zAvailable kernels:      kernelspecs   )indent)r/   r0   r   r0   )kernel_spec_managerfind_kernel_specsget_all_specsr   printr(   sorteditemsljustr   dumps)r   pathsspecsname_lenr8   
kernelnamer5   s   `      r   startzListKernelSpecs.start,   s/   (::<<(6688 	@ ,---t6%-C-CDDDRHIIH" " " " " " &'''$*5;;==h$G$G$G C C 
DA:++H55AA4AABBBBC $*mU3A>>>???r!   Nr   r   )r   r"   )__name__
__module____qualname____doc__r   versiondescriptionr	   r   r>   r   r   r   flagsr    rJ    r!   r   r   r      s        &&G=K"(#455$F  K  56E
 G$ EF F F F     r!   r   c                  b    e Zd ZdZeZdZdZdZ e	e
          Zd!dZ e            Z edd	d
          Zd"dZ edd	d          Z edd	d          Z edd	d          ZdddZe                    e           d dd	iidfd dd	iidfd dej        iidfed         dZd# fdZd$d Z xZS )%InstallKernelSpecz An app to install a kernel spec.a=  Install a kernel specification directory.

    Given a SOURCE DIRECTORY containing a kernel spec,
    jupyter will copy that directory into one of the Jupyter kernel directories.
    The default is to install kernelspecs for all users.
    `--user` can be specified to install a kernel only for the current user.
    z>
    jupyter kernelspec install /path/to/my_kernel --user
    z1jupyter kernelspec install SOURCE_DIR [--options]r   r   c                ,    t          | j                  S N)r   r   r   s    r   r    z.InstallKernelSpec._kernel_spec_manager_defaultY        $-8888r!    Tz&Install the kernel spec with this namer   r   strc                J    t           j                            | j                  S r&   )osr5   basename	sourcedirr   s    r   _kernel_name_defaultz&InstallKernelSpec._kernel_name_default_   s    w///r!   F
        Try to install the kernel spec to the per-user directory instead of
        the system or environment directory.
        zSpecify a prefix to install to, e.g. an env.
        The kernelspec will be installed in PREFIX/share/jupyter/kernels/
        z0Replace any existing kernel spec with this name.zInstallKernelSpec.kernel_namezInstallKernelSpec.prefix)r*   r7   user'Install to the per-user kernel registryreplacer7   zEInstall to Python's sys.prefix. Useful in conda/virtual environments.r   )rb   rd   z
sys-prefixr   argvNone | list[str]Nonec                    t                                          |           | j        r| j        d         | _        dS t	          dt
          j                   |                     d           dS )Parse the command line args.r   zNo source directory specified.filer   N)superparse_command_line
extra_argsr_   rA   sysstderrexitr   re   	__class__s     r   rm   z$InstallKernelSpec.parse_command_line   s`    ""4(((? 	!_Q/DNNN2DDDDIIaLLLLLr!   c                N   | j         r| j        r|                     d           	 | j                            | j        | j        | j         | j        | j                   dS # t          $ r}|j	        t          j
        k    rSt          |t          j                   | j         st          dt          j                   |                     d           nM|j	        t          j        k    r8t          d|j         t          j                   |                     d            d}~ww xY w)r$   zCCan't specify both user and prefix. Please choose one or the other.)kernel_namerb   r7   rd   rj   4Perhaps you want to install with `sudo` or `--user`?r   z$A kernel spec is already present at N)rb   r7   rq   r>   install_kernel_specr_   ru   rd   OSErrorerrnoEACCESrA   ro   rp   EEXISTfilename)r   es     r   rJ   zInstallKernelSpec.start   s/   9 	] 	]II[\\\	$88 ,Y{ 9       		 		 		w%,&&acj))))y cPWZWabbbb		!EL((IQZIIPSPZ[[[[		!		s   8A 
D$)B6DD$rK   )r   r[   )re   rf   r   rg   r   rg   )rL   rM   rN   rO   r   rP   rQ   examplesusager	   r   r>   r    r   r_   ru   r`   r   rb   r7   rd   aliasesupdater   ro   r   rR   rm   rJ   __classcell__rs   s   @r   rU   rU   H   s       **GKH @E"(#4559 9 9 9 		I'"T0XYYYK0 0 0 0 4  D W
  F d5,^___G 0, G NN<    !64.15

 !9d"34>

 !8SZ"89S
 G$ E             r!   rU   c                       e Zd ZdZeZdZdZ eddd          Z	 e
 e                      Z ee          Zdd
Zdd ddiie	j        fiZe                    ej                   d fdZddZ xZS )RemoveKernelSpeczAn app to remove a kernel spec.z/Remove one or more Jupyter kernelspecs by name.z1jupyter kernelspec remove python2 [my_kernel ...]FTz-Force removal, don't prompt for confirmation.rZ   r   r   c                .    t          | j        |           S )N)r   r   r   r   s    r   r    z-RemoveKernelSpec._kernel_spec_manager_default   s     $-EEEEr!   fforcere   list[str] | Nonerg   c                    t                                          |           | j        r(t          t	          | j                            | _        dS |                     d           dS )ri   zNo kernelspec specified.N)rl   rm   rn   rB   set
spec_namesrq   rr   s     r   rm   z#RemoveKernelSpec.parse_command_line   s[    ""4(((? 	2$S%9%9::DOOOII011111r!   c           	        d| j         _        | j                                         }t          | j                                      t          |                    }|r+|                     dd                    |          z             | j        s| j	        st          d           | j        D ]S}|                    ||          }t          d|                    d           d|                    d                      Tt          dt          | j                  z            }|                                                    d	          sd
S | j        D ]}	 | j                             |          }ny# t$          $ rl}|j        t&          j        k    rLt          |t*          j                   t          dt*          j                   |                     d           n Y d
}~nd
}~ww xY wt          d|            d
S )r$   Fz Couldn't find kernel spec(s): %sz, zKernel specs to remove:r9      	zRemove %i kernel specs [y/N]: yNrj   zPerhaps you want sudo?r   zRemoved )r>   ensure_native_kernelr?   r   r   
differencerq   joinr   
answer_yesrA   getrD   inputr(   lowerr4   remove_kernel_specrx   ry   rz   ro   rp   )r   
spec_pathsmissingr*   r5   answerru   r}   s           r   rJ   zRemoveKernelSpec.start   s   8= 5-??AA
do&&11#j//BB 	OII8499W;M;MMNNN
 	do 	+,,, ? ?!~~dD11=4::b>>==TZZ^^==>>>>;c$/>R>RRSSF<<>>,,S11 ? 
	% 
	%K/BB;OO   7el**!#*----2DDDDIIaLLLL !LLLL	 #T##$$$$
	% 
	%s   E11
G';A"G""G'rK   )re   r   r   rg   r~   )rL   rM   rN   rO   r   rP   rQ   r   r   r   r
   r   r   r	   r   r>   r    r   rR   r   r   rm   rJ   r   r   s   @r   r   r      s        ))GGKFHDt*]^^^EggiiJ"(#455F F F F 	!GT?3UZ@E 
LL!"""2 2 2 2 2 2% % % % % % % %r!   r   c                  ~    e Zd ZdZeZdZ ee          Z	ddZ
 eddd	          Zd d
diidfed         dZddZdS )InstallNativeKernelSpecz)An app to install the native kernel spec.zG[DEPRECATED] Install the IPython kernel spec directory for this Python.r   r   c                ,    t          | j                  S rW   r   r   s    r   r    z4InstallNativeKernelSpec._kernel_spec_manager_default   rX   r!   FTra   rZ   rb   rc   r   )rb   r   rg   c                6   | j                             d           	 ddlm} n@# t          $ r3 t          dt          j                   |                     d           Y nw xY w	 |	                    | j
        | j                   d	S # t          $ r}|j        t          j        k    rRt          |t          j                   | j        st          dt          j                   |                     d           |                     |           Y d	}~d	S d	}~ww xY w)
r$   z`jupyter kernelspec install-self` is DEPRECATED as of 4.0. You probably want `ipython kernel install` to install the IPython kernelspec.r   )
kernelspecz0ipykernel not available, can't install its spec.rj   r   )rb   rv   N)logwarning	ipykernelr   ModuleNotFoundErrorrA   ro   rp   rq   installr>   rb   rx   ry   rz   )r   r   r}   s      r   rJ   zInstallNativeKernelSpec.start  sA   ]	
 	
 	
	,,,,,,," 	 	 	D3:VVVVIIaLLLLL		t7diHHHHH 		 		 		w%,&&acj))))y N Z    		!IIaLLLLLLLLL		s(   # :A A $!B 
DA<DDNrK   r~   )rL   rM   rN   rO   r   rP   rQ   r	   r   r>   r    r   rb   r   rR   rJ   rS   r!   r   r   r      s        33G_K"(#4559 9 9 9 4  D '75
 G$ E     r!   r   c                  "    e Zd ZdZeZdZddZdS )ListProvisionerszAn app to list provisioners.z=List available provisioners for use in kernel specifications.r   rg   c                @   t          j        |           }t          d           |                                }t	          t          |d           d                   }t          |          D ]0}t          d|                    |           d||                     1dS )	r$   )r   zAvailable kernel provisioners:c                     t          |           S r&   r'   r)   s    r   r+   z(ListProvisioners.start.<locals>.<lambda>'  s    SYY r!   r,   r.   r9   r:   N)r   instancerA   get_provisioner_entriesr(   rB   rD   )r   kfpprovisionersrH   r*   s        r   rJ   zListProvisioners.start   s    &/t<<<.///2244 vl0F0FGGGKLL<(( 	G 	GDEtzz(++EEd1CEEFFFF	G 	Gr!   Nr~   )rL   rM   rN   rO   r   rP   rQ   rJ   rS   r!   r   r   r     s>        &&GUK
G 
G 
G 
G 
G 
Gr!   r   c            
         e Zd ZdZeZdZdZ ee	e	j        
                                d         feej        
                                d         fedfeej        
                                d         feej        
                                d         feej        
                                d         fd          Zi Zi Zdd	Zd
S )KernelSpecAppzAn app to manage kernel specs.zjupyter kernelspecz%Manage Jupyter kernel specifications.r   zAlias for remove)listr   	uninstallremovezinstall-selfr   r   rg   c                $   | j         qt          dt          | j                  z             t                       |                                  |                                  |                     d           dS | j                                         S )r$   Nz0No subcommand specified. Must specify one of: %sr   )subapprA   r   subcommandsprint_descriptionprint_subcommandsrq   rJ   r   s    r   rJ   zKernelSpecApp.startH  s}    ;DtDL\G]G]]^^^GGG""$$$""$$$IIaLLLLL;$$&&&r!   Nr~   )rL   rM   rN   rO   r   rP   r*   rQ   r   r   
splitlinesrU   r   r   r   r   r   rR   rJ   rS   r!   r   r   r   -  s       ((GD=K$$o&A&L&L&N&Nq&QR!!-88::1= +,>?')9)E)P)P)R)RST)UV''3>>@@C ./?/K/V/V/X/XYZ/[\	
 	
 K" GE	' 	' 	' 	' 	' 	'r!   r   __main__)$rO   
__future__r   ry   r   os.pathr]   ro   typingtjupyter_core.applicationr   r   r   	traitletsr   r   r	   r
   r   traitlets.config.applicationr   rY   r   r   r   provisioning.factoryr   r   rU   r   r   r   r   rL   launch_instancerS   r!   r   <module>r      s   % % # " " " " "    



     I I I I I I I I I I 9 9 9 9 9 9 9 9 9 9 9 9 9 9 4 4 4 4 4 4       ) ) ) ) ) ) : : : : : :0 0 0 0 0j 0 0 0f` ` ` ` `
 ` ` `F8% 8% 8% 8% 8%z 8% 8% 8%v1 1 1 1 1j 1 1 1hG G G G Gz G G G&$' $' $' $' $'K $' $' $'N z!!##### r!   