B
    j“]\'  ã               @   s„   d Z ddlmZ ddlZddlmZ ddlZddlZej	d dkZ
dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zedkr€eƒ  dS )z4
File used to start kernels for the IPython Console
é    )ÚLooseVersionNÚ2c              C   sx   t  t¡} t  | ¡}t  |d¡}xdtjkr:tj d¡ q"W t |¡ ddl	}ytj |¡ W n t
k
rr   Y nX dS )z*Import our customizations into the kernel.Z	customizeÚ r   N)ÚospÚdirnameÚ__file__ÚjoinÚsysÚpathÚremoveÚsiteÚ
addsitedirÚspydercustomizeÚ
ValueError)ÚhereÚparentZcustomize_dirr   © r   ú;lib/python3.7/site-packages/spyder_kernels/console/start.pyÚimport_spydercustomize   s    


r   c             C   s   yt | ƒ dS    dS dS )zc
    Simpler version of spyder.utils.programs.is_module_installed
    to improve startup time.
    TFN)Ú
__import__)Zmodule_namer   r   r   Úis_module_installed0   s
    r   c             C   s   | dk	rd  | ¡}nd}|S )zSympy configurationNzK
from sympy.interactive import init_session
init_session()
%matplotlib {0}
z;
from sympy.interactive import init_session
init_session()
)Úformat)Úmpl_backendÚlinesr   r   r   Úsympy_config=   s    r   c        !      C   sÀ  ddl } ddlm} ddlm}m} y t |ƒ d¡}|ddg|ƒ}W n   |ƒ }Y nX |ƒ }tj	 
d¡d	k}|rzd
|j_d|j_tj	 
d¡d	k}tsž||j_tj	 
d¡}	|	dk	rÌdd„ |	 d¡D ƒ|j_ng |j_d}
|jj |
¡ |jj d¡ |jj d¡ t| jƒtdƒk rd}nd}dd|dddddddd di|j_d}tj	 
d!¡}|d	krØtd"ƒrØtj	 
d#¡}|dk	rØ|d$krºtd%ƒr”d&}n$td'ƒr¤d(}ntd)ƒr´d*}nd+}nd,}d+|d&d(d-d.d/d0d*d1œ	}|| }tj	 
d2¡d	k}d3}|jj | ||¡¡ |d+krØtj	 
d4¡}d5d6d7œ}|dk	r>|| |j_tj	 
d8¡}|dk	rdt|ƒ|jj|< ttj	 
d9¡ƒ}ttj	 
d:¡ƒ}|dk	r¨|dk	r¨||f|jjd< tj	 
d;¡}|d	krÂd<nd}|jj d=|i¡ tj	 
d>¡d	k}|rtd?ƒr|jj d@¡ tj	 
dA¡}tj	 
dB¡}|d	kr:|dk	r:||j_ tj	 
dC¡}|dk	r\t!|ƒ|j"_#d,|j"_$tj	 
dD¡d	k}||j_%tj	 
dE¡d	k}|r²tdFƒr²t&|ƒ} |jj | ¡ | '|¡ |S )Gz3Create a config object with IPython kernel options.r   N)Úget_ipython_dir)ÚConfigÚload_pyconfig_filesZprofile_defaultzipython_config.pyzipython_kernel_config.pyZSPY_TESTINGÚTrueFZPlainZ
SPY_JEDI_OZSPY_RUN_LINES_Oc             S   s   g | ]}|  ¡ ‘qS r   )Ústrip)Ú.0Úxr   r   r   ú
<listcomp>q   s    z!kernel_config.<locals>.<listcomp>ú,z"import sys;sys.argv = [''];del sysz-get_ipython().kernel._load_autoreload_magic()z&get_ipython().kernel._load_wurlitzer()z4.5zsavefig.dpiz
figure.dpizfigure.figsize)g      @g      @éH   z	font.sizeé
   zfigure.subplot.bottomg      À?zfigure.facecolorZwhitezfigure.edgecolorZSPY_PYLAB_OZ
matplotlibZSPY_BACKEND_OÚ1ZPyQt5Zqt5ZPyQt4Zqt4Z_tkinterZtkZinliner   ZosxZgtk3ZgtkZwx)	Ú0r&   r   Ú3Ú4Ú5Ú6Ú7Ú8ZSPY_AUTOLOAD_PYLAB_Oz1get_ipython().kernel._set_mpl_backend('{0}', {1})ZSPY_FORMAT_OZpngZsvg)r'   r&   ZSPY_RESOLUTION_OZSPY_WIDTH_OZSPY_HEIGHT_OZSPY_BBOX_INCHES_OZtightÚbbox_inchesZSPY_RUN_CYTHONZCythonz%reload_ext CythonZSPY_USE_FILE_OZSPY_RUN_FILE_OZSPY_AUTOCALL_OZSPY_GREEDY_OZSPY_SYMPY_OZsympy)(Ú	ipykernelZIPython.core.applicationr   Ztraitlets.config.loaderr   r   r   r   ÚosÚenvironÚgetZHistoryAccessorZenabledZInteractiveShellZxmodeÚPY2ZIPCompleterZuse_jediÚsplitÚIPKernelAppZ
exec_linesÚappendr   Ú__version__ZInlineBackendZrcr   r   Zfigure_formatÚfloatZprint_figure_kwargsÚupdateZfile_to_runÚintZZMQInteractiveShellZautocallZbanner1Zgreedyr   Z_merge)!r/   r   r   r   Zprofile_pathZcfgZspy_cfgZtestingZjedi_oZrun_lines_oZ
clear_argvZ
dpi_optionr   Zpylab_oZ	backend_oZauto_backendZbackendsZautoload_pylab_oZcommandZformat_oZformatsZresolution_oZwidth_oZheight_oZbbox_inches_or.   Z
run_cythonZ
use_file_oZ
run_file_oZ
autocall_oZgreedy_oZsympy_or   r   r   r   Úkernel_configN   sÌ    











r;   c             C   sp   t ƒ }|  ¡ \}}yddlm} W n   ddlm} Y nX | ¡ }t||dd… ƒ|j| ƒ}| ¡  ~~dS )zƒ
    Spyder's variable explorer magic

    Used to generate plots, histograms and images of the variables displayed
    on it.
    r   Né   )	Zget_ipythonr4   Zguiqwt.pyplotÚpyplotZmatplotlib.pyplotZfigureÚgetattrZuser_nsZshow)ÚlineZipÚfuncnameÚnamer=   Z__fig__Z	__items__r   r   r   Úvarexpõ   s    rB   c              C   sð   yt j t t¡¡ W n tk
r*   Y nX ytƒ  d¡ W n t	k
rP   Y nX d} d}t
ƒ  xdt jkrzt j d¡ qbW ddlm} ddlm} | ¡ }||_ytƒ |_W n   Y nX | ¡  |j t¡ dd l}|j|jj_| ¡  d S )Nr   r   Ú__main__r   )r5   )ÚSpyderKernel)r	   r
   r   r   r   r   r   ÚlocalsÚpopÚKeyErrorr   Zipykernel.kernelappr5   Zspyder_kernels.console.kernelrD   ÚinstanceZkernel_classr;   ZconfigZ
initializeÚshellZregister_magic_functionrB   ÚpdbZPdbZInteractiveTBZdebugger_clsÚstart)Ú__doc__Ú__name__r5   rD   ZkernelrJ   r   r   r   Úmain  s4    rN   rC   )rL   Zdistutils.versionr   r0   Úos.pathr
   r   r	   r   Úversionr3   r   r   r   r;   rB   rN   rM   r   r   r   r   Ú<module>   s    (1