ó
Û¤[c           @   s  d  Z  d d l m Z d d l 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 m Z m Z d d l 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 d e f d „  ƒ  YZ d e f d „  ƒ  YZ e j e ƒ d S(   s   An in-process kerneliÿÿÿÿ(   t   contextmanagerN(   t   InteractiveShellABC(   t
   json_clean(   t   Anyt   Enumt   Instancet   Listt   Typet   default(   t   IPythonKernel(   t   ZMQInteractiveShelli   (   t   INPROCESS_KEY(   t   DummySocketi   (   t	   OutStreamt   BackgroundSockett   IOPubThreadt   InProcessKernelc           B   s  e  Z e e d  d e ƒƒ Z e d d d ƒZ e ƒ  Z	 e ƒ  Z
 e ƒ  Z e d e ƒ Z e ƒ  Z e ƒ  Z e e d ƒ Z e e ƒ Z e d	 ƒ d
 „  ƒ Z e e ƒ Z e d ƒ d „  ƒ Z e e d  ƒ Z d „  Z d „  Z d „  Z d „  Z e d „ Z e  d „  ƒ Z! d „  Z" e d ƒ d „  ƒ Z# e d ƒ d „  ƒ Z$ e d ƒ d „  ƒ Z% e d ƒ d „  ƒ Z& e d ƒ d „  ƒ Z' RS(!   s0   ipykernel.inprocess.client.InProcessKernelClientt
   allow_nonet   tkt   gtkt   wxt   qtt   qt4t   inlinet   default_valuet   iopub_threadc         C   s   t  |  j ƒ } | j ƒ  | S(   N(   R   t   _underlying_iopub_sockett   start(   t   selft   thread(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_iopub_thread9   s    
t   iopub_socketc         C   s
   |  j  j S(   N(   R   t   background_socket(   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_iopub_socketA   s    c         K   sB   t  t |  ƒ j |   |  j j |  j d d g ƒ|  |  j _ d  S(   Nt   namest   message_sent(   t   superR   t   __init__R   t   observet   _io_dispatcht   shellt   kernel(   R   t   traits(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR%   G   s    c         C   s3   |  j  ƒ  ! t t |  ƒ j | | | ƒ Wd QXd S(   s(    Override for temporary IO redirection. N(   t   _redirected_ioR$   R   t   execute_request(   R   t   streamt   identt   parent(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR,   M   s    c         C   s   t  |  j _ d S(   s3    Override registration of dispatchers for streams. N(   t   FalseR(   t   exit_now(   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR   R   s    c         C   s   d S(   s/    The in-process kernel doesn't abort requests. N(    (   R   R-   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _abort_queueV   s    c         C   sÖ   d  |  _ t j j ƒ  t j j ƒ  t t d | d | ƒ ƒ } |  j j	 d | | ƒ } xS |  j
 D]4 } | j j | d d k r` | j j | ƒ Pq` q` Wt j d ƒ t ƒ  Sx  |  j d  k rÎ | j j ƒ  q¯ W|  j S(   Nt   promptt   passwordu   input_requestt   headert   sessions'   No frontend found for raw_input request(   t   Nonet   raw_input_strt   syst   stderrt   flusht   stdoutR   t   dictR6   t   msgt	   frontendst   stdin_channelt   call_handlerst   loggingt   errort   strt   process_events(   R   R3   R.   R/   R4   t   contentR>   t   frontend(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _input_requestZ   s    	c         c   sH   t  j t  j } } |  j |  j t  _ t  _ d V| | t  _ t  _ d S(   s0    Temporarily redirect IO to the kernel.
        N(   R9   R<   R:   (   R   t
   sys_stdoutt
   sys_stderr(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR+   t   s    c         C   sI   |  j  j |  j d t ƒ\ } } x! |  j D] } | j j | ƒ q+ Wd S(   s9    Called when a message is sent to the IO socket.
        t   copyN(   R6   t   recvR   R0   R?   t   iopub_channelRA   (   R   t   changeR.   R>   RG   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR'      s    !t   logc         C   s   t  j t ƒ S(   N(   RB   t	   getLoggert   __name__(   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_logˆ   s    R6   c         C   s#   d d l  m } | d |  d t ƒ S(   Niÿÿÿÿ(   t   SessionR/   t   key(   t   jupyter_client.sessionRS   R   (   R   RS   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_sessionŒ   s    t   shell_classc         C   s   t  S(   N(   t   InProcessInteractiveShell(   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_shell_class‘   s    R<   c         C   s   t  |  j |  j d ƒ S(   Nu   stdout(   R   R6   R   (   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_stdout•   s    R:   c         C   s   t  |  j |  j d ƒ S(   Nu   stderr(   R   R6   R   (   R   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   _default_stderr™   s    (   R   R   R   R   R   R   (    (    ((   RQ   t
   __module__R   R   t   TrueR?   R   t   guiR   R8   R<   R:   R   RW   t   shell_streamst   control_streamR   R   R   R   R   R   R   R   R!   t   stdin_socketR%   R,   R   R2   R0   RH   R    R+   R'   RR   RV   RY   RZ   R[   (    (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyR      s:   														RX   c           B   sD   e  Z e d  d e ƒZ d d „ Z d d „ Z d e e d „ Z	 RS(   s,   ipykernel.inprocess.ipkernel.InProcessKernelR   c         C   sE   d d l  m } | s% |  j j } n  | | d |  j ƒ| |  _ d S(   s&   Enable GUI integration for the kernel.iÿÿÿÿ(   t
   enable_guiR)   N(   t   ipykernel.eventloopsRb   R)   R^   t   active_eventloop(   R   R^   Rb   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyRb   ª   s
    c         C   s+   | s |  j  j } n  t t |  ƒ j | ƒ S(   s-   Enable matplotlib integration for the kernel.(   R)   R^   R$   RX   t   enable_matplotlib(   R   R^   (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyRe   ³   s    c         C   s1   | s |  j  j } n  t t |  ƒ j | | | ƒ S(   s"   Activate pylab support at runtime.(   R)   R^   R$   RX   t   enable_pylab(   R   R^   t
   import_allt   welcome_message(    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyRf   ¹   s    N(
   RQ   R\   R   R]   R)   R7   Rb   Re   R0   Rf   (    (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyRX   ¡   s
   			(   t   __doc__t
   contextlibR    RB   R9   t   IPython.core.interactiveshellR   t   ipykernel.jsonutilR   t	   traitletsR   R   R   R   R   R   t   ipykernel.ipkernelR	   t   ipykernel.zmqshellR
   t	   constantsR   t   socketR   t   iostreamR   R   R   R   RX   t   register(    (    (    s;   lib/python2.7/site-packages/ipykernel/inprocess/ipkernel.pyt   <module>   s   .‰