
    Je%                        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                  j7                  ej                  j9                  e            Z ej>                  e       Z!d
 Z"ddZ# ej8                  ej                  jI                  e            Z G d dee
      Z%y)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                  |       j                  d      }t        j                  |       t        j                  t        j
                        k7  }|xr |S )zACheck that pyexec is a different interpreter from sys.executable.python)ospbasename
startswithdirnamesys
executable)pyexecexecutable_validationdirectory_validations      P/usr/lib/python3/dist-packages/spyder/plugins/ipythonconsole/utils/kernelspec.pyis_different_interpreterr   #   sI    LL0;;HE;;v.#++cnn2MM9$99    c                    t         j                  j                  t         j                  j                  t              d      }t         j
                  dk(  rd}nd}t         j                  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*   *   sc     '',,rwwt'<iH	ww$%$'',,2F;K -r   c                   L     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_consolec                     t        t        | 
  di | || _        || _        || _        d| _        d| _        d| _        y )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   sB    .88"  /!r   c                    | j                  dd      rt               }nd| j                  dd      }t        |      sFt               }| j                  ddd       | j                  ddd       | j                  ddd       t	        |      }|r-t        |	      r!t               t               t        |      |d
g}n|ddddd
g}t        j                  dj                  |             |S )zCommand to start kernelsdefaultmain_interpretersectionr   r0   TcustomF)r   z{connection_file}z-Xfrozen_modules=offz-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   s     ==,>=?*,F]]<9K]LF(0.0lB8JKi7IJh7IJ 07 L7 &'+-"6*#J  '(#	J 	(//
;<r   c           	         | j                  dd      }t        j                  j                         }|j	                  dd       |j	                  dd       | j                  dg d	      }t        j
                  j                  |      }| j                  d
d      }|j                  i d| d| j                  dd      d| j                  dd      ddj                  |      d| j                  d      d| j                  d      d| j                  d      d| j                  d      d| j                  d      d| j                  d      d| j                  d      d | j                  d!      d"| j                  d#      d$| j                  d%      d&| j                  d'      d(| j                  d)      d*| j                  d+      | j                  d,      | j                  d-      t               xs
 t               | j                  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|j	                  d6d       |j	                  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   s8    #mm1 , 3::??$ 	]D) 	\4( ==5I ! K* }}$6 % 8 	 
&,?(?
t}}'9  -  ;
 t}}'9  -  ;	
  6
 t}}-@A
 4==1
 T]]?;
 #DMM2B$C
 DMM*FG
  /I!J
 .G H
 4==)=>
 DMM*?@
  dmm,BC!
" dmm,>?#
$ dmmJ7%
& DMM*<='
( --(89==9/1D]_ MM*<=$1
 	6 ==D /3H+,&+H]#).H%&==D /4H+,&*H]#).H%&>>T!/4H+,&+H]#)-H%&  JL" >?9:\40
 	'. #8,r   )FFF)
__name__
__module____qualname____doc__CONF_SECTIONr3   propertyrJ   r}   __classcell__)r<   s   @r   r,   r,   A   sA    ($L16	 + +Z 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 A6 6B B * 3 7 
wwrwwx01			8	$:( s{{277##H-.Qz#> Qr   