B
    nôb\N  ã               @   s˜   d Z ddlZddlmZ ddlmZ ddl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mZmZmZ dd	lmZmZ G d
d„ deƒZdS )z 
Kernel spec for Spyder kernels
é    N)Ú
KernelSpec)Ú	SAFE_MODEÚget_module_source_pathÚrunning_under_pytest)ÚCONF)Úto_unicode_from_fs)Úis_python_interpreter)ÚPY2Ú	iteritemsÚto_text_stringÚto_binary_string)Úadd_pathlist_to_PYTHONPATHÚget_python_executablec                   s:   e Zd ZdZd	‡ fdd„	Zedd„ ƒZedd„ ƒZ‡  ZS )
ÚSpyderKernelSpeczKernel spec for Spyder kernelsFc                s>   t t| ƒjf |Ž || _tr dnd| _tr.dnd| _d| _d S )NzPython 2 (Spyder)zPython 3 (Spyder)Zpython2Zpython3Ú )Úsuperr   Ú__init__Ú	is_cythonr	   Zdisplay_nameZlanguageZresource_dir)Úselfr   Úkwargs)Ú	__class__© ú>lib/python3.7/site-packages/spyder/utils/ipython/kernelspec.pyr      s
    zSpyderKernelSpec.__init__c             C   s¦   t  dd¡rtƒ }nRtj dd¡ t  dd¡}t|ƒsftƒ }t  ddd¡ t  ddd¡ t  ddd	¡ tjd
kr”t	 
|¡}t	 |d¡}t	 |¡r”|}|ddddg}|S )zCommand to start kernelsÚmain_interpreterÚdefaultZVIRTUAL_ENVNÚ
executabler   TZcustomFÚntzpythonw.exez-mzspyder_kernels.consolez-fz{connection_file})r   Úgetr   ÚosÚenvironÚpopr   ÚsetÚnameÚospÚdirnameÚjoinÚisfile)r   ZpyexecZ
dir_pyexecZpyexec_wZ
kernel_cmdr   r   r   Úargv%   s(    


zSpyderKernelSpec.argvc             C   sð  t jddg d}t  dd¡}tg |ddd}t  dd	¡}trš|d
d
… }x:|D ]2}y| d¡ W qN tk
r~   | |¡ Y qNX qNW ||kršt  dd	|¡ | t  dd¡t  dd¡d |¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡| j	t
ƒ p^tdœ}| |¡ x|t|ƒD ]p\}}	trÚyt|	ƒ}
W n4 tk
rÆ   yt|	ƒ}
W n   d }
Y nX Y nX t|
dd!||< nt|	ƒ||< qxW |S )"zEnv vars for kernelsÚmainZspyder_pythonpath)r   r   r   TF)Z
ipyconsoleZdrop_envzumr/namelistNzutf-8zumr/enabledzumr/verboseú,Zipython_consolezstartup/run_linesZpylabzpylab/backendzpylab/autoloadzpylab/inline/figure_formatzpylab/inline/bbox_incheszpylab/inline/resolutionzpylab/inline/widthzpylab/inline/heightzstartup/use_run_filezstartup/run_fileZautocallZgreedy_completerZjedi_completerZsymbolic_math)ZSPY_EXTERNAL_INTERPRETERZSPY_UMR_ENABLEDZSPY_UMR_VERBOSEZSPY_UMR_NAMELISTZSPY_RUN_LINES_OZSPY_PYLAB_OZSPY_BACKEND_OZSPY_AUTOLOAD_PYLAB_OZSPY_FORMAT_OZSPY_BBOX_INCHES_OZSPY_RESOLUTION_OZSPY_WIDTH_OZSPY_HEIGHT_OZSPY_USE_FILE_OZSPY_RUN_FILE_OZSPY_AUTOCALL_OZSPY_GREEDY_OZ
SPY_JEDI_OZSPY_SYMPY_OZSPY_RUN_CYTHONZSPY_TESTINGr   )Úencoding)r   r   r   r	   ÚencodeÚUnicodeDecodeErrorÚremover!   r%   r   r   r   Úupdater
   r   r   r   )r   ZpathlistZdefault_interpreterZpypathZumr_namelistZoriginal_listZumr_nZenv_varsÚkeyÚvarZunicode_varr   r   r   ÚenvH   sl    













zSpyderKernelSpec.env)F)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr'   r1   Ú__classcell__r   r   )r   r   r      s   #r   )r5   r   Úos.pathÚpathr#   Zjupyter_client.kernelspecr   Zspyder.config.baser   r   r   Zspyder.config.mainr   Zspyder.utils.encodingr   Zspyder.utils.programsr   Zspyder.py3compatr	   r
   r   r   Zspyder.utils.miscr   r   r   r   r   r   r   Ú<module>	   s   