
    G@d                        d Z ddlZddlZddlmZ ddlZddlmZ ddl	m
Z
 ddlmZmZmZmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZ ej                            ej                            e                    Z ej        e           Z!d
 Z"ddZ# ej        ej        $                    e                    Z G d dee
          Z%dS )z 
Kernel spec for Spyder kernels
    N)
KernelSpec)SpyderConfigurationAccessor)get_safe_mode
is_pynsistrunning_in_mac_apprunning_under_pytest)
add_quotesget_conda_activation_scriptget_conda_env_pathis_conda_env)	clean_env)get_python_executable)is_python_interpreterc                     t          j        |                               d          }t          j        |           t          j        t          j                  k    }|o|S )zACheck that pyexec is a different interpreter from sys.executable.python)ospbasename
startswithdirnamesys
executable)pyexecexecutable_validationdirectory_validations      Nlib/python3.11/site-packages/spyder/plugins/ipythonconsole/utils/kernelspec.pyis_different_interpreterr   #   sM    L00;;HEE;v..#+cn2M2MM9$99    Fc                    t           j                            t           j                            t                    d          }t           j        dk    rd}nd}t           j                            ||          }| rt          |          }|S )z
    Return path for bash/batch conda activation script to run spyder-kernels.

    If `quote` is True, then quotes are added if spaces are found in the path.
    scriptsntzconda-activate.batzconda-activate.sh)ospathjoinr   HEREnamer	   )quotescripts_folder_pathscriptscript_paths       r   get_activation_scriptr*   *   sp     ',,rwt'<'<iHH	w$%$',,2F;;K . --r   c                   X     e Zd ZdZdZ	 	 d fd	Zed             Zed             Z xZ	S )SpyderKernelSpeczKernel spec for Spyder kernelsipython_consoleFc                      t          t          |           j        di | || _        || _        || _        d| _        d| _        d| _        d S )NzPython 3 (Spyder)python3  )	superr,   __init__	is_cythonis_pylabis_sympydisplay_namelanguageresource_dir)selfr4   r5   r6   kwargs	__class__s        r   r3   zSpyderKernelSpec.__init__F   sY    .%%.88888"  /!r   c                 N   |                      dd          rt                      }n||                      dd          }t          |          sVt                      }|                     ddd           |                     ddd           |                     ddd           t	          |          }|r=t          |	          r-t                      t                      t          |          |d
g}n|dddd
g}t          
                    d                    |                     |S )zCommand to start kernelsdefaultmain_interpretersectionr   r0   TcustomF)r   z{connection_file}z-mzspyder_kernels.consolez-fzKernel command: {})get_confr   r   set_confr   r   r*   r
   r   loggerinfoformat)r:   r   is_different
kernel_cmds       r   argvzSpyderKernelSpec.argvQ   sB    ==,>=?? 	K*,,FF]]<9K]LLF(00 K.00lB8JKKKi7IJJJh7IJJJ 077  	L777 	 &''+--"6**#JJ (#J 	(//
;;<<<r   c           	      b   |                      dd          }t          j                                        }|                    dd           |                    dd           |                      dg d	          }t          j                            |          }|                      d
d          }|                    i d| d|                      dd          d|                      dd          dd                    |          d|                      d          d|                      d          d|                      d          d|                      d          d|                      d          d|                      d          d|                      d          d |                      d!          d"|                      d#          d$|                      d%          d&|                      d'          d(|                      d)          d*|                      d+          |                      d,          |                      d-          t                      pt                      |                      d.          |d/           | j
        d0u rd0|d<   d1|d2<   d1|d3<   | j        d0u rd1|d<   d0|d2<   d1|d3<   | j        d0u rd1|d<   d1|d2<   d0|d3<   t                      st                      r|rd4|d5<   n|                    d6d           |                    d7d           t          |          }|S )8zEnv vars for kernelsr>   r?   r@   VIRTUAL_ENVN
PYTHONPATHspyder_pythonpathpythonpath_manager)r>   rA   zumr/namelistSPY_EXTERNAL_INTERPRETERSPY_UMR_ENABLEDzumr/enabledSPY_UMR_VERBOSEzumr/verboseSPY_UMR_NAMELIST,SPY_RUN_LINES_Ozstartup/run_linesSPY_PYLAB_OpylabSPY_BACKEND_Ozpylab/backendSPY_AUTOLOAD_PYLAB_Ozpylab/autoloadSPY_FORMAT_Ozpylab/inline/figure_formatSPY_BBOX_INCHES_Ozpylab/inline/bbox_inchesSPY_RESOLUTION_Ozpylab/inline/resolutionSPY_WIDTH_Ozpylab/inline/widthSPY_HEIGHT_Ozpylab/inline/heightSPY_USE_FILE_Ozstartup/use_run_fileSPY_RUN_FILE_Ozstartup/run_fileSPY_AUTOCALL_OautocallSPY_GREEDY_Ogreedy_completerjedi_completersymbolic_mathhide_cmd_windows)
SPY_JEDI_OSPY_SYMPY_OSPY_TESTINGSPY_HIDE_CMDSPY_PYTHONPATHTFri   SPY_RUN_CYTHON   PYDEVD_DISABLE_FILE_VALIDATION
PYTHONHOMEPYTHONEXECUTABLE)rC   r!   environcopypoppathsepr#   updater   r   r5   r6   r4   r   r   r   )r:   default_interpreterenv_varspathlistpypathumr_namelistclean_env_varss          r   envzSpyderKernelSpec.env|   s    #mm1 , 3 3:??$$ 	]D))) 	\4((( ==5I ! K K** }}$6 % 8 8 	 
&,?(?
t}}'9  -  ;  ;
 t}}'9  -  ;  ;	
  6 6
 t}}-@AA
 4==11
 T]]?;;
 #DMM2B$C$C
 DMM*FGG
  /I!J!J
 .G H H
 4==)=>>
 DMM*?@@
  dmm,BCC!
" dmm,>??#
$ dmmJ77%
& DMM*<=='
( --(899==99/11D]__ MM*<==$1
 
 
 	 	 	6 =D  /3H+,&+H]#).H%&=D  /4H+,&*H]#).H%&>T!!/4H+,&+H]#)-H%&    	1JLL 	1" 1 >?9::\4000
 	'... #8,,r   )FFF)
__name__
__module____qualname____doc__CONF_SECTIONr3   propertyrJ   r}   __classcell__)r<   s   @r   r,   r,   A   s        (($L16	 	 	 	 	 	 ( ( X(T R R XR R R R Rr   r,   )F)&r   loggingr!   os.pathr"   r   r   jupyter_client.kernelspecr   spyder.api.config.mixinsr   spyder.config.baser   r   r   r   spyder.utils.condar	   r
   r   r   spyder.utils.environr   spyder.utils.miscr   spyder.utils.programsr   abspathr   __file__r$   	getLoggerr~   rE   r   r*   realpathr,   r1   r   r   <module>r      s   
  				       



 1 0 0 0 0 0 A @ @ @ @ @6 6 6 6 6 6 6 6 6 6 6 6B B B B B B B B B B B B * * * * * * 3 3 3 3 3 3 7 7 7 7 7 7 
wrwx0011		8	$	$: : :   ( s{27##H--..N N N N Nz#> N N N N Nr   