
~-[c           @  s  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z d d l m Z y d d l m	 Z
 Wn e k
 r e j
 Z
 n Xd d l m Z m Z m Z d d l 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 d d l m Z m Z d d l m Z d d l m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* d d l m+ Z+ d d l, m- Z- d e f d     YZ. d S(   s9   Base class for a kernel that talks to frontends over 0MQ.i(   t   print_functionN(   t   datetime(   t   utcnow(   t   signalt   default_int_handlert   SIGINT(   t   ioloop(   t	   ZMQStream(   t   SingletonConfigurable(   t   StdinNotImplementedError(   t	   py3compat(   t   unicode_typet   string_types(   t
   json_clean(   t   Anyt   Instancet   Floatt   Dictt   Listt   Sett   Integert   Unicodet   Boolt   observet   default(   t   Sessioni   (   t   kernel_protocol_versiont   Kernelc        
   B  sl  e  Z e dG  Z e d   d    Z e e d e	 Z
 e d d e	 Z e   Z e e d e	 Z e   Z e   Z e   Z e e j d e	 Z e d  Z e   Z e d  d    Z i  Z e   Z e e	 d d j d	 e	  Z  e e!  Z" e#   Z$ e d
  Z% e& d  j d	 e	  Z' e& d  j d	 e	  Z( dG Z) e#   Z* e+   Z, d Z- d d d d d d d d d d g
 Z. e. d d g Z/ d   Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d    Z6 d!   Z7 d"   Z8 d#   Z9 d$   Z: dG d%  Z; d&   Z< dG dG dG e! dG dG d'  Z= d(   Z> d)   Z? d*   Z@ e	 dG e! d+  ZA d,   ZB d-   ZC d.   ZD d d/  ZE d0   ZF dG dG dG dG dG e! d1  ZG d2   ZH eI d3    ZJ d4   ZK d5   ZL d6   ZM d7   ZN d8   ZO d9   ZP d:   ZQ d;   ZR d<   ZS d=   ZT d>   ZU d?   ZV d@   ZW dA   ZX dB   ZY d
 dG dC  ZZ d
 dD  Z[ e! dE  Z\ dF   Z] RS(H   t	   eventloopc         C  s5   t  j j   } | j d k	 r1 | j |  j  n  d S(   s&   schedule call to eventloop from IOLoopN(   R   t   IOLoopt   currentt   newt   Nonet   add_callbackt   enter_eventloop(   t   selft   changet   loop(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   _update_eventloop1   s    t
   allow_nones"   IPython.core.profiledir.ProfileDirit   identc         C  s   t  t j    S(   N(   R   t   uuidt   uuid4(   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   _default_identE   s    t   helpsg   Whether to use appnope for compatiblity with OS X App Nap.

        Only affects OS X >= 10.9.
        t   configt    gMb@?g?i    t   execute_requestt   complete_requestt   inspect_requestt   history_requestt   comm_info_requestt   kernel_info_requestt   connect_requestt   shutdown_requestt   is_complete_requestt   apply_requestt   clear_requestt   abort_requestc         K  s   t  t |   j |   i  |  _ x' |  j D] } t |  |  |  j | <q) Wi  |  _ x' |  j D] } t |  |  |  j | <q\ Wd  S(   N(   t   superR   t   __init__t   shell_handlerst	   msg_typest   getattrt   control_handlerst   control_msg_types(   R#   t   kwargst   msg_type(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR<      s    		c         C  sH  |  j  j | d t \ } } y" |  j  j | d t d t } Wn |  j j d d t d SX|  j j d |  |  j | |  |  j	 d  | d } | d	 } |  j
 j | d  } | d k r |  j j d
 |  nA y | |  j | |  Wn' t k
 r|  j j d d t n Xt j j   t j j   |  j	 d  d S(   s   dispatch control requestst   copyt   contents   Invalid Control Messaget   exc_infoNs   Control received: %su   busyt   headerRC   s    UNKNOWN CONTROL MESSAGE TYPE: %rs   Exception in control handler:u   idle(   t   sessiont   feed_identitiest   Falset   deserializet   Truet   logt   errort   debugt
   set_parentt   _publish_statusR@   t   getR    t   control_streamt	   Exceptiont   syst   stdoutt   flusht   stderr(   R#   t   msgt   identsRG   RC   t   handler(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   dispatch_control   s*    "

c   	      C  s   | d d } | |  j  k r | d d } |  j  j |  | j d  d d } i d d 6} i |  j d	 6} | j |  |  j j | | d
 | d | d | d | t St S(   s   Check whether a shell-channel message should be handled

        Allows subclasses to prevent handling of certain messages (e.g. aborted requests).
        RG   t   msg_idRC   t   _i    t   _replyt   abortedt   statust   enginet   metadataRE   t   parentR(   (	   R`   t   removet   splitR(   t   updateRH   t   sendRJ   RL   (	   R#   t   streamRY   RZ   R]   RC   t
   reply_typeRa   t   md(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   should_handle   s    c         C  s  |  j  r |  j  j   n  |  j j | d t \ } } y" |  j j | d t d t } Wn |  j j d d t d SX|  j	 | |  |  j
 d  | d d } |  j j d	 |  |  j j d
 | d  |  j | | |  s d S|  j j | d  } | d k r|  j j d |  np |  j j d | |  |  j   zB y | | | |  Wn' t k
 r|  j j d d t n XWd |  j   Xt j j   t j j   |  j
 d  d S(   s   dispatch shell requestsRD   RE   s   Invalid MessageRF   Nu   busyRG   RC   s   
*** MESSAGE TYPE:%s***s      Content: %s
   --->
   s   Unknown message type: %rs   %s: %ss   Exception in message handler:u   idle(   RS   RW   RH   RI   RJ   RK   RL   RM   RN   RP   RQ   RO   Rl   R=   RR   R    t   warningt   pre_handler_hookRT   t   post_handler_hookRU   RV   RX   (   R#   Ri   RY   RZ   RC   R[   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   dispatch_shell   s:    	"
 c         C  s   t  t t  |  _ d S(   s.   Hook to execute before calling message handlerN(   R   R   R   t   saved_sigint_handler(   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyRn      s    c         C  s   t  t |  j  d S(   s-   Hook to execute after calling message handlerN(   R   R   Rq   (   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyRo      s    c         C  s   |  j  j d |  j  x! |  j D] } | j t j  q  W|  j   xU |  j d k	 r y |  j |   Wn$ t	 k
 r |  j  j
 d  qG qG Xd |  _ PqG W|  j   |  j  j d  d S(   s   enter eventloops   entering eventloop %ss"   KeyboardInterrupt caught in kernels   exiting eventloopN(   RM   t   infoR   t   shell_streamsRW   t   zmqt   POLLOUTRn   R    t   KeyboardInterruptRN   Ro   (   R#   Ri   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR"      s    
	
c           s   t  j j     _   j r7   j j   j d t n    f d   } x*   j D] } | j | |  d t qP W  j	 d  d S(   s    register dispatchers for streamsRD   c           s      f d   } | S(   Nc           s     j   |   S(   N(   Rp   (   RY   (   R#   Ri   (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt
   dispatcher  s    (    (   Ri   Rw   (   R#   (   Ri   s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   make_dispatcher  s    t   startingN(
   R   R   R   t   io_loopRS   t   on_recvR\   RJ   Rs   RQ   (   R#   Rx   t   s(    (   R#   s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   start  s    	c         C  sT   |  j  r |  j  j   n  x4 |  j D]) } | j t j d  | j t j  q# Wd S(   s   step eventloop just oncei   N(   RS   RW   Rs   Rt   t   POLLINRu   (   R#   Ri   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   do_one_iteration$  s
    	c         C  s   | |  _  d S(   s   Record the ports that this kernel is using.

        The creator of the Kernel instance must call this methods if they
        want the :meth:`connect_request` method to return the port numbers.
        N(   t   _recorded_ports(   R#   t   ports(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   record_ports-  s    c      	   C  s@   |  j  j |  j d i | d 6| d 6d | d |  j d  d S(   s-   Publish the code request on the iopub stream.u   execute_inputu   codeu   execution_countRd   R(   t   execute_inputN(   RH   Rh   t   iopub_sockett   _topic(   R#   t   codeRd   t   execution_count(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   _publish_execute_input9  s    c      	   C  sB   |  j  j |  j d i | d 6d | p+ |  j d |  j d  d S(   s    send status (busy/idle) on IOPubu   statusu   execution_stateRd   R(   Ra   N(   RH   Rh   R   t   _parent_headerR   (   R#   Ra   Rd   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyRQ   A  s
    c         C  s   | |  _  | |  _ d S(   s  Set the current parent_header

        Side effects (IOPub messages) and replies are associated with
        the request that caused them via the parent_header.

        The parent identity is used to route input_request messages
        on the stdin channel.
        N(   t   _parent_identR   (   R#   R(   Rd   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyRP   J  s    		c	   	   
   C  s+   |  j  j | | | |  j | | | | | 	 S(   s  Send a response to the message we're currently processing.

        This accepts all the parameters of :meth:`jupyter_client.session.Session.send`
        except ``parent``.

        This relies on :meth:`set_parent` having been called for the current
        message.
        (   RH   Rh   R   (	   R#   Ri   t   msg_or_typeRE   R(   t   bufferst   trackRG   Rc   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   send_responseV  s    
c         C  s   i t    d 6S(   sR   Initialize metadata.

        Run at the beginning of execution requests.
        t   started(   t   now(   R#   Rd   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   init_metadatac  s    c         C  s   | S(   sX   Finish populating metadata.

        Run after completing an execution request.
        (    (   R#   Rd   Rc   t   reply_content(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   finish_metadatan  s    c      	   C  s  yb | d } t  j | d  } | d } | j d |  } | j d i   } | j d t  }	 Wn+ |  j j d  |  j j d |  d	 SX| j d
 t  }
 |  j |  } | s |  j d 7_ |  j	 | | |  j  n  |  j
 | | | | |	  } t j j   t j j   |  j r0t j |  j  n  t |  } |  j | | |  } |  j j | d | | d | d | } |  j j d |  | r| d d d k r|
 r|  j   n  d	 S(   s   handle an execute_requestu   contentu   codeu   silentu   store_historyt   user_expressionst   allow_stdins   Got bad msg: s   %sNt   stop_on_errori   u   execute_replyRc   R(   RE   Ra   u   error(   R
   t   cast_unicode_py2RR   RJ   RM   RN   RL   R   R   R   t
   do_executeRU   RV   RW   RX   t   _execute_sleept   timet   sleepR   R   RH   Rh   RO   t   _abort_queues(   R#   Ri   R(   Rd   RE   R   t   silentt   store_historyR   R   R   Rc   R   t	   reply_msg(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR/   u  s<    

		!c         C  s
   t   d S(   s=   Execute user code. Must be overridden by subclasses.
        N(   t   NotImplementedError(   R#   R   R   R   R   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s    c   	      C  s^   | d } | d } | d } |  j  | |  } t |  } |  j j | d | | |  } d  S(   NRE   R   t
   cursor_post   complete_reply(   t   do_completeR   RH   Rh   (	   R#   Ri   R(   Rd   RE   R   R   t   matchest   completion_msg(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR0     s    


c         C  s'   i g  d 6| d 6| d 6i  d 6d d 6S(   s4   Override in subclasses to find completions.
        R   t
   cursor_endt   cursor_startRc   t   okRa   (    (   R#   R   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s
    
c         C  st   | d } |  j  | d | d | j d d   } t |  } |  j j | d | | |  } |  j j d |  d  S(   NRE   R   R   t   detail_leveli    t   inspect_replys   %s(   t
   do_inspectRR   R   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   R   RY   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR1     s    
c         C  s    i d d 6i  d 6i  d 6t  d 6S(   s7   Override in subclasses to allow introspection.
        R   Ra   t   dataRc   t   found(   RJ   (   R#   R   R   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s    c         C  sZ   | d } |  j  |   } t |  } |  j j | d | | |  } |  j j d |  d  S(   NRE   t   history_replys   %s(   t
   do_historyR   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   R   RY   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR2     s    
c
   
      C  s   i d d 6g  d 6S(   s2   Override in subclasses to access history.
        R   Ra   t   history(    (
   R#   t   hist_access_typet   outputt   rawRH   R}   t   stopt   nt   patternt   unique(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s    c         C  sf   |  j  d  k	 r! |  j  j   } n i  } d | d <|  j j | d | | |  } |  j j d |  d  S(   NR   Ra   t   connect_replys   %s(   R   R    RD   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   RY   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR5     s    
c         C  s=   i t  d 6|  j d 6|  j d 6|  j d 6|  j d 6|  j d 6S(   Nt   protocol_versiont   implementationt   implementation_versiont   language_infot   bannert
   help_links(   R   R   R   R   R   R   (   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   kernel_info  s    



c         C  sR   i d d 6} | j  |  j  |  j j | d | | |  } |  j j d |  d  S(   NR   Ra   t   kernel_info_replys   %s(   Rg   R   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   RY   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR4     s
    c           s   | d } | j  d d     t |  d  rP   f d   |  j j j   D } n i  } t d | d d  } |  j j | d | | |  } |  j	 j
 d	 |  d  S(
   NRE   t   target_namet   comm_managerc           sF   i  |  ]< \ } } | j    k s-   d k r t d  | j   |  q S(   R   N(   R   R    t   dict(   t   .0t   kt   v(   R   (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pys
   <dictcomp>  s   		t   commsRa   R   t   comm_info_replys   %s(   RR   R    t   hasattrR   R   t   itemsR   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   R   R   RY   (    (   R   s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR3     s    
c         C  s   |  j  | d d  } |  j j | d | | d | |  j j d | |  |  _ |  j   t j j   } | j	 t
 j
   d | j  d  S(   NRE   t   restartu   shutdown_replyR(   g?(   t   do_shutdownRH   Rh   RY   t   _shutdown_messaget   _at_shutdownR   R   R   t   add_timeoutR   R   (   R#   Ri   R(   Rd   RE   R%   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR6     s    
c         C  s   i d d 6| d 6S(   s]   Override in subclasses to do things when the frontend shuts down the
        kernel.
        R   Ra   R   (    (   R#   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s    c         C  sd   | d } | d } |  j  |  } t |  } |  j j | d | | |  } |  j j d |  d  S(   NRE   R   t   is_complete_replys   %s(   t   do_is_completeR   RH   Rh   RM   RO   (   R#   Ri   R(   Rd   RE   R   R   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR7   !  s    

c         C  s   i d d 6S(   s4   Override in subclasses to find completions.
        t   unknownRa   (    (   R#   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   +  s    c   
      C  s   |  j  j d  y& | d } | d } | d d } Wn! |  j  j d | d t d  SX|  j |  } |  j | | | |  \ } }	 t j j   t j	 j   |  j
 | | |  } |  j j | d | d	 | d
 | d |	 d | d  S(   NsB   apply_request is deprecated in kernel_base, moving to ipyparallel.u   contentu   buffersRG   R]   s   Got bad msg: %sRF   u   apply_replyRd   R(   R   Rc   (   RM   Rm   RN   RL   R   t   do_applyRU   RV   RW   RX   R   RH   Rh   (
   R#   Ri   R(   Rd   RE   t   bufsR]   Rk   R   t
   result_buf(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR8   5  s    

c         C  s
   t   d S(   t
   DEPRECATEDN(   R   (   R#   RE   R   R]   t   reply_metadata(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   L  s    c      	   C  s   |  j  j d  | d j d d
  } t | t  rA | g } n  | sT |  j   n  x$ | D] } |  j j t	 |   q[ Wt
 d d  } |  j j | d d | d | d | } |  j  j d	 |  d
 S(   s   abort a specific msg by idsO   abort_request is deprecated in kernel_base. It os only part of IPython parallelRE   t   msg_idsRa   R   t   abort_replyRd   R(   s   %sN(   RM   Rm   RR   R    t
   isinstanceR   R   R`   t   addt   strR   RH   Rh   RO   (   R#   Ri   R(   Rd   R   t   midRE   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR:   T  s    c      	   C  sE   |  j  j d  |  j   } |  j j | d d | d | d | d S(   s   Clear our namespace.sO   clear_request is deprecated in kernel_base. It os only part of IPython parallelt   clear_replyR(   Rd   RE   N(   RM   Rm   t   do_clearRH   Rh   (   R#   Ri   RZ   Rd   RE   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR9   d  s    c         C  s
   t   d S(   R   N(   R   (   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   k  s    c         C  s$   d |  j  } t j d | | f  S(   s!   prefixed topic for IOPub messagess	   kernel.%ss   %s.%s(   R(   R
   t
   cast_bytes(   R#   t   topict   base(    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   s  s    c         C  s.   x' |  j  D] } | r
 |  j |  q
 q
 Wd  S(   N(   Rs   t   _abort_queue(   R#   Ri   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   y  s    c   
      C  sL  t  j   } | j | j t  j  x#t rG|  j j | t  j d t \ } } | d  k r_ d  S|  j
 j d  |  j
 j d |  | d d } | j d  d d } i d	 d
 6} i |  j d 6} | j |  |  j d d | |  j j | | d | d | d | d | }	 |  j d d | |  j
 j d |	  | j d  q% Wd  S(   NRE   s	   Aborting:s   %sRG   RC   R^   i    R_   R`   Ra   Rb   t   busyRd   Rc   R(   t   idlei2   (   Rt   t   Pollert   registert   socketR~   RL   RH   t   recvt   NOBLOCKR    RM   Rr   Rf   R(   Rg   RQ   Rh   RO   t   poll(
   R#   Ri   t   pollerRZ   RY   RC   Rj   Ra   Rk   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   ~  s&    	$c         C  s   t  d   d S(   sN   Raise StdinNotImplentedError if active frontend doesn't support
        stdin.s?   raw_input was called, but this frontend does not support stdin.N(   R	   (   R#   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   _no_raw_input  s    c         C  sh   |  j  s t d   n  | d k	 rI d d l } | j d t d d n  |  j | |  j |  j d t	 S(   s   Forward getpass to frontends

        Raises
        ------
        StdinNotImplentedError if active frontend doesn't support stdin.
        sF   getpass was called, but this frontend does not support input requests.iNsT   The `stream` parameter of `getpass.getpass` will have no effect when using ipykernelt
   stackleveli   t   password(
   t   _allow_stdinR	   R    t   warningst   warnt   UserWarningt   _input_requestR   R   RL   (   R#   t   promptRi   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   getpass  s    				c         C  s=   |  j  s t d   n  |  j t |  |  j |  j d t S(   s   Forward raw_input to frontends

        Raises
        ------
        StdinNotImplentedError if active frontend doesn't support stdin.
        sH   raw_input was called, but this frontend does not support input requests.R   (   R   R	   R   R   R   R   RJ   (   R#   R   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt	   raw_input  s    		c   	      C  st  t  j j   t  j j   xS t ro y |  j j t j  Wq t j	 k
 rk } | j
 t j k re Pql   q Xq Wt t d | d |   } |  j j |  j d | | d | xm t ry" |  j j |  j d  \ } } Wn= t k
 r|  j j d d t q t k
 rt  q XPq Wy t j | d d	  } Wn  |  j j d
 |  d } n X| d k rpt  n  | S(   NR   R   u   input_requestR(   i    s   Invalid Message:RF   RE   t   values   Bad input_reply: %sR.   s   (   RU   RX   RW   RV   RL   t   stdin_sockett   recv_multipartRt   R   t   ZMQErrort   errnot   EAGAINR   R   RH   Rh   R   RT   RM   Rm   Rv   R
   t   unicode_to_strRN   t   EOFError(	   R#   R   R(   Rd   R   t   eRE   t   replyR   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s8    		"

	c         C  sz   |  j  d k	 rP |  j j |  j |  j  d |  j d  |  j j d |  j   n  g  |  j D] } | j	 t
 j  ^ qZ d S(   sL   Actions taken at shutdown by the kernel, called by python's atexit.
        R(   t   shutdowns   %sN(   R   R    RH   Rh   R   R   RM   RO   Rs   RW   Rt   Ru   (   R#   R|   (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR     s    (N(^   t   __name__t
   __module__R   R    R   R   R&   R   R   RL   RH   t   profile_dirR   Rs   R   RS   R   t   iopub_threadR   t   loggingt   LoggerRM   R   t   int_idR   R(   R   R+   R   R   R   t   tagt   _darwin_app_napRJ   R   R   R   R   R   R   t   _poll_intervalR   R   R   R`   R   R>   RA   R<   R\   Rl   Rp   Rn   Ro   R"   R}   R   R   R   RQ   RP   R   R   R   R/   R   R0   R   R1   R   R2   R   R5   t   propertyR   R4   R3   R6   R   R7   R   R8   R   R:   R9   R   R   R   R   R   R   R   R   R   (    (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyR   (   s   																-													2	
				
	
					
	
									((/   t   __doc__t
   __future__R    RU   R   R  R)   R   t   jupyter_client.sessionR   R   t   ImportErrorR   R   R   Rt   t   tornadoR   t   zmq.eventloop.zmqstreamR   t   traitlets.config.configurableR   t   IPython.core.errorR	   t   ipython_genutilsR
   t   ipython_genutils.py3compatR   R   t   ipykernel.jsonutilR   t	   traitletsR   R   R   R   R   R   R   R   R   R   R   R   t   _versionR   R   (    (    (    s3   lib/python2.7/site-packages/ipykernel/kernelbase.pyt   <module>   s.   L