ó
Û¤[c           @   s   d  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 m Z d e
 f d	 „  ƒ  YZ e j e ƒ d
 S(   s    A client for in-process kernels.iÿÿÿÿ(   t   DummySocket(   t   Typet   Instancet   default(   t   KernelClientABC(   t   KernelClienti   (   t   InProcessChannelt   InProcessHBChannelt   InProcessKernelClientc           B   s1  e  Z d  Z e e ƒ Z e e ƒ Z e e ƒ Z e e ƒ Z	 e
 d d e ƒZ e d ƒ d „  ƒ Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e e i  d d „ Z d d „ Z d d d „ Z e e d d „ Z e d „ Z d „  Z d d „ Z d „  Z d „  Z  d „  Z! RS(   s  A client for an in-process kernel.

    This class implements the interface of
    `jupyter_client.clientabc.KernelClientABC` and allows
    (asynchronous) frontends to be used seamlessly with an in-process kernel.

    See `jupyter_client.client.KernelClient` for docstrings.
    s,   ipykernel.inprocess.ipkernel.InProcessKernelt
   allow_nonet   blocking_classc         C   s   d d l  m } | S(   Ni   (   t   BlockingInProcessKernelClient(   t   blockingR   (   t   selfR   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   _default_blocking_class5   s    c         C   s&   t  t |  ƒ j ƒ  } |  j | d <| S(   Nt   kernel(   t   superR   t   get_connection_infoR   (   R   t   d(    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyR   :   s    c         O   s*   t  t |  ƒ j ƒ  |  j j j |  ƒ d  S(   N(   R   R   t   start_channelsR   t	   frontendst   append(   R   t   argst   kwargs(    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyR   ?   s    c         C   s+   |  j  d  k r$ |  j |  ƒ |  _  n  |  j  S(   N(   t   _shell_channelt   Nonet   shell_channel_class(   R   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   shell_channelC   s    c         C   s+   |  j  d  k r$ |  j |  ƒ |  _  n  |  j  S(   N(   t   _iopub_channelR   t   iopub_channel_class(   R   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   iopub_channelI   s    c         C   s+   |  j  d  k r$ |  j |  ƒ |  _  n  |  j  S(   N(   t   _stdin_channelR   t   stdin_channel_class(   R   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   stdin_channelO   s    c         C   s+   |  j  d  k r$ |  j |  ƒ |  _  n  |  j  S(   N(   t   _hb_channelR   t   hb_channel_class(   R   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt
   hb_channelU   s    c         C   sm   | d  k r |  j } n  t d | d | d | d | d | ƒ } |  j j d | ƒ } |  j | ƒ | d d S(	   Nt   codet   silentt   store_historyt   user_expressionst   allow_stdint   execute_requestt   headert   msg_id(   R   R)   t   dictt   sessiont   msgt   _dispatch_to_kernel(   R   R%   R&   R'   R(   R)   t   contentR/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   execute^   s    	c         C   s^   | d  k r t | ƒ } n  t d | d | ƒ } |  j j d | ƒ } |  j | ƒ | d d S(   NR%   t
   cursor_post   complete_requestR+   R,   (   R   t   lenR-   R.   R/   R0   (   R   R%   R3   R1   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   completei   s    i    c         C   sd   | d  k r t | ƒ } n  t d | d | d | ƒ } |  j j d | ƒ } |  j | ƒ | d d S(   NR%   R3   t   detail_levelt   inspect_requestR+   R,   (   R   R5   R-   R.   R/   R0   (   R   R%   R3   R7   R1   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   inspectq   s    	t   rangec         K   sL   t  d | d | d | |  } |  j j d | ƒ } |  j | ƒ | d d S(   Nt   rawt   outputt   hist_access_typet   history_requestR+   R,   (   R-   R.   R/   R0   (   R   R;   R<   R=   t   kwdsR1   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   history{   s
    c         C   s   t  d ƒ ‚ d  S(   Ns!   Cannot shutdown in-process kernel(   t   NotImplementedError(   R   t   restart(    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   shutdown‚   s    c         C   s+   |  j  j d ƒ } |  j | ƒ | d d S(   s   Request kernel info.t   kernel_info_requestR+   R,   (   R.   R/   R0   (   R   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   kernel_info†   s    c         C   sR   | d k r i  } n t d | ƒ } |  j j d | ƒ } |  j | ƒ | d d S(   s6   Request a dictionary of valid comms and their targets.t   target_namet   comm_info_requestR+   R,   N(   R   R-   R.   R/   R0   (   R   RF   R1   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt	   comm_infoŒ   s    	c         C   s.   |  j  d  k r t d ƒ ‚ n  | |  j  _ d  S(   Ns*   Cannot send input reply. No kernel exists.(   R   R   t   RuntimeErrort   raw_input_str(   R   t   string(    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   input–   s    c         C   s5   |  j  j d i | d 6ƒ } |  j | ƒ | d d S(   Nt   is_complete_requestR%   R+   R,   (   R.   R/   R0   (   R   R%   R/   (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   is_complete›   s    c         C   sŽ   |  j  } | d k r$ t d ƒ ‚ n  t ƒ  } |  j j | | ƒ | j ƒ  } | j | | ƒ |  j j | d t	 ƒ\ } } |  j
 j | ƒ d S(   s:    Send a message to the kernel and handle a reply.
        s&   Cannot send request. No kernel exists.t   copyN(   R   R   RI   R    R.   t   sendt   recv_multipartt   dispatch_shellt   recvt   FalseR   t   call_handlers_later(   R   R/   R   t   streamt	   msg_partst   identst	   reply_msg(    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyR0       s    		N("   t   __name__t
   __module__t   __doc__R   R   R   R   R    R   R#   R   t   TrueR   R   R   R   R   t   propertyR   R   R!   R$   RT   R   R2   R6   R9   R@   RC   RE   RH   RL   RN   R0   (    (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyR      s2   					

	
		N(   R\   t   ipykernel.inprocess.socketR    t	   traitletsR   R   R   t   jupyter_client.clientabcR   t   jupyter_client.clientR   t   channelsR   R   R   t   register(    (    (    s9   lib/python2.7/site-packages/ipykernel/inprocess/client.pyt   <module>   s   	–