
    MhP&                       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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 ej        j        Zd	e	j        d         z  Z e ee          j        d
          Z	 	 	 	 d-d.dZ	 d/d0dZ	 	 	 	 d1d2dZddedddddfd3d)Z  G d* d+e          Z!e"d,k    re!#                                 dS dS )4z#The IPython kernel spec for Jupyter    )annotationsN)Path)Any)KernelSpecManager)Unicode)Applicationzpython%i	resourcesipykernel_launchermodstr
executable
str | Noneextra_argumentslist[str] | Nonepython_argumentsreturn	list[str]c                L    |t           j        }|pg }|pg }|g|d| dd|S )a  Build Popen command list for launching an IPython kernel.

    Parameters
    ----------
    mod : str, optional (default 'ipykernel')
        A string of an IPython module whose __main__ starts an IPython kernel
    executable : str, optional (default sys.executable)
        The Python executable to use for the kernel process.
    extra_arguments : list, optional
        A list of extra arguments to pass when executing the launch code.

    Returns
    -------
    A Popen command list
    Nz-mz-fz{connection_file})sysr   )r   r   r   r   s       T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipykernel/kernelspec.pymake_ipkernel_cmdr      sP    * ^
%+O'-2b)b4bbdb<ObRabb    dict[str, Any]c                X    t          | |          dt          j        d         z  dddidS )zConstruct dict for kernel.jsonr   r   zPython %i (ipykernel)r   pythondebuggerT)argvdisplay_namelanguagemetadata)r   r   version_infor   s     r   get_kernel_dictr#   ;   sH    
 "+>N
 
 
 0#2B12EE&  r   pathPath | str | None	overridesdict[str, Any] | Nonec                \   | *t          t          j        d                    t          z  } t	          j        t          |            t          |                                           j        }|t          j	        z  s/t          |           
                    |t          j	        z             t          ||          }|r|                    |           t          t          | d          d          5 }t          j        ||d           ddd           n# 1 swxY w Y   t#          |           S )zWrite a kernel spec directory to `path`

    If `path` is not specified, a temporary directory is created.
    If `overrides` is given, the kernelspec JSON is updated before writing.

    The path to the kernelspec is always returned.
    N_kernels)suffixzkernel.jsonw   )indent)r   tempfilemkdtempKERNEL_NAMEshutilcopytree	RESOURCESstatst_modeS_IWUSRchmodr#   updateopenpjoinjsondumpr   )r$   r&   r   r   maskkernel_dictfs          r   write_kernel_specr@   I   sF    |H$J77788;F OIt$$$ ::??$D$, .T

,--- "/3CDDK &9%%%	eD-((#	.	. ,!	+q++++, , , , , , , , , , , , , , , t99s   0DDDFkernel_spec_managerKernelSpecManager | Noneuserboolkernel_namer   prefixprofileenvdict[str, str] | Nonefrozen_modulesc                   | t                      } |i }|t          k    r||}i }|r||d<   |r!d|g}	|sdt          j        d         |fz  |d<   nd}	d}
t          j        dk    r&t	          j                    dk    r|sdg}
n	d	|vrd
|d	<   |r||d<   t          ||	|
          }|                     ||||          }t          j	        |           |S )a  Install the IPython kernelspec for Jupyter

    Parameters
    ----------
    kernel_spec_manager : KernelSpecManager [optional]
        A KernelSpecManager to use for installation.
        If none provided, a default instance will be created.
    user : bool [default: False]
        Whether to do a user-only install, or system-wide.
    kernel_name : str, optional
        Specify a name for the kernelspec.
        This is needed for having multiple IPython kernels for different environments.
    display_name : str, optional
        Specify the display name for the kernelspec
    profile : str, optional
        Specify a custom profile to be loaded by the kernel.
    prefix : str, optional
        Specify an install prefix for the kernelspec.
        This is needed to install into a non-default location, such as a conda/virtual-env.
    env : dict, optional
        A dictionary of extra environment variables for the kernel.
        These will be added to the current environment variables before the
        kernel is started
    frozen_modules : bool, optional
        Whether to use frozen modules for potentially faster kernel startup.
        Using frozen modules prevents debugging inside of some built-in
        Python modules, such as io, abc, posixpath, ntpath, or stat.
        The frozen modules are used in CPython for faster interpreter startup.
        Ignored for cPython <3.11 and for other Python implementations.

    Returns
    -------
    The path where the kernelspec was installed.
    Nr   	--profilezPython %i [profile=%s]r   )      CPythonz-Xfrozen_modules=offPYDEVD_DISABLE_FILE_VALIDATION1rH   )r&   r   r   )rE   rC   rF   )
r   r0   r   r"   platformpython_implementationr@   install_kernel_specr1   rmtree)rA   rC   rE   r   rF   rG   rH   rJ   r&   r   r   r$   dests                r   installrW   l   sM   X "/11
{{"")= # "I 1$0	.! &0 	b(@CDTUVDWY`Ca(aIn% 7""x'E'G'G9'T'T 	8 67-S88 58C01
 	%_O_  D 22+D 3  D M$Kr   c                  :    e Zd ZdZ ed          Zd
ddZdd	ZdS )InstallIPythonKernelSpecAppzDummy app wrapping argparsezipython-kernel-installNr   r   r   Nonec                @    |t           j        dd         }|| _        dS )zInitialize the app.Nr,   )r   r   )selfr   s     r   
initializez&InstallIPythonKernelSpecApp.initialize   s!    <8ABB<D			r   c                6   ddl }|                    | j        d          }|                    ddd           |                    d	t          t
          d
           |                    dt          d           |                    dt          d           |                    dt          d           |                    ddt          j        ddt          j        z             |                    ddddd           |                    ddd           |                    | j	                  }|j
        rt          |j
                  |_
        	 t          |j        |j        |j        |j        |j        |j
                   }nz# t           $ rm}|j        t"          j        k    rRt'          |t          j        !           |j        rt'          d"t          j        !           |                     d#            d}~ww xY wt'          d$|j         d%|            dS )&zStart the app.r   Nz Install the IPython kernel spec.)progdescriptionz--user
store_truez3Install for the current user instead of system-wide)actionhelpz--namezdSpecify a name for the kernelspec. This is needed to have multiple IPython kernels at the same time.)typedefaultrc   z--display-namezdSpecify the display name for the kernelspec. This is helpful when you have multiple IPython kernels.)rd   rc   rL   z]Specify an IPython profile to load. This can be used to create custom versions of the kernel.z--prefixzSpecify an install prefix for the kernelspec. This is needed to install into a non-default location, such as a conda/virtual-env.z--sys-prefixstore_constrF   z[Install to Python's sys.prefix. Shorthand for --prefix='%s'. For use in conda/virtual-envs.)rb   constrV   rc   z--envappend   )ENVVALUEz)Set environment variables for the kernel.)rb   nargsmetavarrc   z--frozen_moduleszEnable frozen modules for potentially faster startup. This has a downside of preventing the debugger from navigating to certain built-in modules.)rC   rE   rG   rF   r   rH   )filez$Perhaps you want `sudo` or `--user`?r,   zInstalled kernelspec z in )argparseArgumentParsernameadd_argumentr   r0   r   rF   
parse_argsr   rH   dictrW   rC   rG   r   OSErrorerrnoEACCESprintstderrexit)r\   ro   parseroptsrV   es         r   startz!InstallIPythonKernelSpecApp.start   s   (((J ) 
 
 	F 	 	
 	
 	

 	Q	 	 	
 	
 	
 	G 	 	
 	
 	
 	H 	 	
 	
 	
 	c 	 	
 	
 	
 	 *KMPZX 	 	
 	
 	
 	$< 	 	
 	
 	
 	k 	 	
 	
 	
   ++8 	&DH~~DH	Y I{!.H  DD  	 	 	w%,&&acj))))9 S@szRRRR		!	 	;di;;T;;<<<<<s   3F 
G<A(G77G<)N)r   r   r   rZ   )r   rZ   )__name__
__module____qualname____doc__r   rq   r]   r~    r   r   rY   rY      s]        %%7+,,D    M= M= M= M= M= M=r   rY   __main__)r
   NNN)
r   r   r   r   r   r   r   r   r   r   )NN)r   r   r   r   r   r   )NNNN)
r$   r%   r&   r'   r   r   r   r   r   r   )rA   rB   rC   rD   rE   r   r   r   rF   r   rG   r   rH   rI   rJ   rD   r   r   )$r   
__future__r   rv   r;   osrR   r1   r4   r   r.   pathlibr   typingr   jupyter_client.kernelspecr   	traitletsr   traitlets.configr   r$   joinr:   r"   r0   __file__parentr3   r   r#   r@   rW   rY   r   launch_instancer   r   r   <module>r      s   ) )
 # " " " " "   				    



              7 7 7 7 7 7       ( ( ( ( ( (
3+A.. E$$x..'55	 $!(,)-	c c c c c: TX     #'+(,)-	         H 59"#!% W W W W WzX= X= X= X= X=+ X= X= X=v z//11111 r   