
~-[c           @   s.  d  Z  d d l Z d d l Z d d l m Z d d l m Z m Z m Z m	 Z	 d d l
 m Z m Z d d l m Z m Z m Z m Z m Z d d l m Z d d	 l m Z d d
 l m Z y  d d l m Z m Z e Z  Wn e! k
 r e" Z  n Xd Z# d e f d     YZ$ d e$ f d     YZ d S(   s!   The IPython kernel implementationiN(   t   release(   t   builtin_modt   PY3t   unicode_typet   safe_unicode(   t   token_at_cursort   line_at_cursor(   t   Instancet   Typet   Anyt   Listt   Booli   (   t   CommManager(   t   Kernel(   t   ZMQInteractiveShell(   t   rectify_completionst   provisionalcompletert   _jupyter_types_experimentalt   IPythonKernelc        
   B   s|  e  Z e d  d e Z e e  Z e e d d j	 d e  Z
 e   Z d   Z e e d d: d e Z d   Z e   Z e   Z d   Z e i d	 d
 6d e j d  d 6i d d
 6d d 6i d d
 6d d 6i d d
 6d d 6i d d
 6d d 6i d d
 6d d 6i d d
 6d d 6g  j	 d e  Z d Z e j Z i d d 6e j j   d d 6d d  6i d d 6e j d d 6d! 6d" e rd# n d d$ 6d d% 6d& d' 6Z e  d(    Z! d)   Z" d*   Z# d+   Z$ d,   Z% e& d-  Z' d.   Z( e  d/    Z) e) j* d0    Z) e d: e& d1  Z+ d2   Z, d3   Z- d d4  Z. d d d: d: d: e& d5  Z/ d6   Z0 d7   Z1 d8   Z2 d9   Z3 RS(;   s1   IPython.core.interactiveshell.InteractiveShellABCt
   allow_nonet   helpsU   Set this flag to False to deactivate the use of experimental IPython completion APIs.t   configc         C   s"   |  j  d  k	 r | |  j  _ n  d  S(   N(   t   shellt   Nonet   user_module(   t   selft   namet   oldt   new(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   _user_module_changed#   s    t   argsc         C   s/   |  j  d  k	 r+ | |  j  _ |  j  j   n  d  S(   N(   R   R   t   user_nst   init_user_ns(   R   R   R   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   _user_ns_changed(   s    c         K   s  t  t |   j |   |  j j d |  d |  j d |  j d |  j d |   |  _ |  j	 |  j j
 _	 |  j |  j j
 _ |  j d  |  j j
 _ |  j	 |  j j _	 |  j |  j j _ t d |  d |   |  _ |  j j j |  j  d d d	 g } x' | D] } t |  j |  |  j | <q Wd  S(
   Nt   parentt   profile_dirR   R   t   kernelt   execute_resultt	   comm_opent   comm_msgt
   comm_close(   t   superR   t   __init__t   shell_classt   instanceR#   R   R   R   t   sessiont   displayhookt   iopub_sockett
   pub_sockett   _topict   topict   display_pubR   t   comm_managert   configurablest   appendt   getattrt   shell_handlers(   R   t   kwargst   comm_msg_typest   msg_type(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyR*   2   s     			s   Python Referencet   texts   https://docs.python.org/%i.%ii   t   urls   IPython References&   https://ipython.org/documentation.htmls   NumPy References+   https://docs.scipy.org/doc/numpy/reference/s   SciPy References+   https://docs.scipy.org/doc/scipy/reference/s   Matplotlib References$   https://matplotlib.org/contents.htmls   SymPy References'   http://docs.sympy.org/latest/index.htmls   pandas References-   https://pandas.pydata.org/pandas-docs/stable/t   ipythont   pythonR   i    t   versions   text/x-pythont   mimetypet   codemirror_modes	   ipython%di   t   pygments_lexert   nbconvert_exporters   .pyt   file_extensionc         C   s
   |  j  j S(   N(   R   t   banner(   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRF   x   s    c         C   s#   t  |  j _ t t |   j   d  S(   N(   t   FalseR   t   exit_nowR)   R   t   start(   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRI   |   s    c         C   s-   t  t |   j | |  |  j j |  d S(   sm   Overridden from parent to tell the display hook and output streams
        about the parent message.
        N(   R)   R   t
   set_parentR   (   R   t   identR"   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRJ      s    c         C   s:   t  t |   j |  } | j i t d 6|  j d 6 | S(   sV   Initialize metadata.

        Run at the beginning of each execution request.
        t   dependencies_mett   engine(   R)   R   t   init_metadatat   updatet   TrueRK   (   R   R"   t   md(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRN      s
    	c         C   s?   | d | d <| d d k r; | d d k r; t  | d <n  | S(   sX   Finish populating metadata.

        Run after completing an execution request.
        t   statust   errort   enamet   UnmetDependencyRL   (   RG   (   R   R"   t   metadatat   reply_content(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   finish_metadata   s     c            s   |   _  t r* t j   _   j t _ n9 t j   _ t j   _   j t _ d   f d  t _ t j   _   j t _ d S(   sZ   Forward raw_input and getpass to the current frontend.

        via input_request
        t    c            s   t    j |    S(   N(   t   evalt	   raw_input(   t   prompt(   R   (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   <lambda>   s    N(	   t   _allow_stdinR   R   t   inputt   _sys_raw_inputR[   t   _sys_eval_inputt   getpasst   _save_getpass(   R   t   allow_stdin(    (   R   s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   _forward_input   s    	c         C   s=   t  r |  j t _ n |  j t _ |  j t _ |  j t _ d S(   s   Restore raw_input, getpassN(   R   R`   R   R_   R[   Ra   Rc   Rb   (   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   _restore_input   s
    c         C   s
   |  j  j S(   N(   R   t   execution_count(   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRg      s    c         C   s   d  S(   N(    (   R   t   value(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyRg      s    c         C   s  |  j  } |  j |  i  } z | j | d | d | } Wd  |  j   X| j d  k	 rd | j }	 n	 | j }	 | j r d | d <nu d | d <| j i | j	 p g  d 6t
 t |	  j  d 6t |	  d 6 t d	 |  j d
 |  j d d  }
 |
 | d <| j d | d <d | k r8|  j j d d j | d   n  | d d k rd| j | pWi   | d <n
 i  | d <| j j   | d <| j j   | S(   Nt   store_historyt   silentu   oku   statusu   erroru	   tracebacku   enameu   evaluet   engine_uuidt	   engine_idt   methodt   executet   engine_infoi   Rg   t	   tracebacks    Exception in execute request:
%ss   
RR   t   oku   user_expressionsu   payload(   R   Re   t   run_cellRf   t   error_before_execR   t   error_in_exect   successRO   t   _last_tracebackR   t   typet   __name__R   t   dictRK   t   int_idRg   t   logt   infot   joint   user_expressionst   payload_managert   read_payloadt   clear_payload(   R   t   codeRj   Ri   R~   Rd   R   RW   t   rest   errt   e_info(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt
   do_execute   s8    			
		
#
c         C   s   t  r |  j r |  j | |  S| d  k r: t |  } n  t | |  \ } } | | } |  j j d | |  \ } } i | d 6| d 6| t |  d 6i  d 6d d 6S(   NRY   t   matchest
   cursor_endt   cursor_startRV   Rq   RR   (   t   _use_experimental_60_completiont   use_experimental_completionst   _experimental_do_completeR   t   lenR   R   t   complete(   R   R   t
   cursor_post   linet   offsett   line_cursort   txtR   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   do_complete  s    

c         C   s"  | d k r t |  } n  t   } |  j j j | |  } t t | |   } g  } xB | D]: } | j t	 d | j
 d | j d | j d | j   q_ WWd QX| r | d j
 } | d j } g  | D] }	 |	 j ^ q }
 n | } | } g  }
 i |
 d 6| d 6| d	 6i | t 6d
 6d d 6S(   sE   
        Experimental completions from IPython, using Jedi. 
        RI   t   endR<   Rw   Ni    R   R   R   RV   Rq   RR   (   R   R   t   _provisionalcompleterR   t	   Completert   completionst   listt   _rectify_completionsR6   Ry   RI   R   R<   Rw   t   _EXPERIMENTAL_KEY_NAME(   R   R   R   t   raw_completionsR   t   compst   compt   st   et   cR   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyR     s0    
			
c   	      C   s   t  | |  } |  j j |  } i d d 6} i  | d <} i  | d <| d | d <| d r |  j j | d | } | | d <n  | S(   NRq   RR   t   dataRV   t   foundt   detail_levels
   text/plain(   R   R   t   object_inspectt   object_inspect_text(	   R   R   R   R   R   R|   RW   R   t	   info_text(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt
   do_inspect;  s    

		c
      
   C   s   | d k r6 |  j  j j | d | d | d t }
 nx | d k rl |  j  j j | | | d | d | }
 nB | d k r |  j  j j | d | d | d | d |	 }
 n g  }
 i d	 d
 6t |
  d 6S(   Nt   tailt   rawt   outputt   include_latestt   ranget   searcht   nt   uniqueRq   RR   t   history(   R   t   history_managert   get_tailRP   t	   get_rangeR   R   (   R   t   hist_access_typeR   R   R-   RI   t   stopR   t   patternR   t   hist(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt
   do_historyL  s    $c         C   s   t  |  j _ t d d d |  S(   NRR   Rq   t   restart(   RP   R   RH   Ry   (   R   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   do_shutdowna  s    c         C   sI   |  j  j j |  \ } } i | d 6} | d k rE d | | d <n  | S(   NRR   t
   incompletet    t   indent(   R   t   input_splittert   check_complete(   R   R   RR   t   indent_spacest   r(    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   do_is_completee  s
    c         B   sB  d d l  m } m } |  j } y3| j } d e |  j d d  d }	 | | | d e \ }
 } } e |
 d d  } |	 d } |	 d	 } |	 d
 } |	 d } i |
 | 6| | 6| | 6d  | 6} | j
 |  d | | | | f } z# | | j | j U| j |  } Wd  x | D] } | j |  qWX| | d |  j j d |  j j } Wn e k
 r*} | j   i | j p}g  d 6e e |  j  d 6e |  d 6} e d |  j d |  j d d  } | | d <|  j |  j d | d |  j d  |  j j d d j  | d   g  } d | d <n Xi d d 6} | | f S(   Ni   (   t   serialize_objectt   unpack_apply_messaget   _t   -RY   t   copyRx   t   fR   R9   t   results   %s = %s(*%s,**%s)t   buffer_thresholdt   item_thresholdu	   tracebacku   enameu   evalueRk   Rl   Rm   t   applyRo   u   errorRK   RS   s   Exception in apply request:
%ss   
Rp   RR   Rq   (!   t	   serializeR   R   R   R   t   strt   replaceRG   R7   R   RO   t   user_global_nst   gett   popR-   R   R   t   BaseExceptiont   showtracebackRv   R   Rw   Rx   R   Ry   RK   Rz   t   send_responseR/   R1   R{   R|   R}   (   R   t   contentt   bufst   msg_idt   reply_metadataR   R   R   t   workingt   prefixR   R   R9   t   fnamet   argnamet	   kwargnamet
   resultnamet   nsR   R   t   keyt
   result_bufR   RW   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   do_applyl  sJ    		 



"	
!
 c         C   s   |  j  j t  t d d  S(   NRR   Rq   (   R   t   resetRG   Ry   (   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   do_clear  s    N(4   Rx   t
   __module__R   RP   R   R   R   R+   R   t   tagR   R	   R   R   Ry   R   R   R!   R`   Ra   R*   R
   t   syst   version_infot
   help_linkst   implementationR    R@   t   implementation_versiont   splitR   t   language_infot   propertyRF   RI   RJ   RN   RX   RG   Re   Rf   Rg   t   setterR   R   R   R   R   R   R   R   R   (    (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyR      s   												
					
;		$			7R   c           B   s   e  Z d    Z RS(   c         O   s9   d d  l  } | j d t  t t |   j | |   d  S(   Nis@   Kernel is a deprecated alias of ipykernel.ipkernel.IPythonKernel(   t   warningst   warnt   DeprecationWarningR)   R   R*   (   R   R   R9   R   (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyR*     s    	(   Rx   R   R*   (    (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyR     s   (%   t   __doc__Rb   R   t   IPython.coreR    t   ipython_genutils.py3compatR   R   R   R   t   IPython.utils.tokenutilR   R   t	   traitletsR   R   R	   R
   R   t   commR   t
   kernelbaseR   t
   KernelBaset   zmqshellR   t   IPython.core.completerR   R   R   R   RP   R   t   ImportErrorRG   R   R   (    (    (    s1   lib/python2.7/site-packages/ipykernel/ipkernel.pyt   <module>   s$   "(

 