ó
ù2¢\c           @   sÇ   d  Z  d d l Z d d l Z d d l Z e j j Z d d l m Z d d l	 m
 Z
 d d l m Z m Z d „  Z d e
 f d	 „  ƒ  YZ d
 e
 f d „  ƒ  YZ d Z d e f d e e f g Z d S(   s¤   Tornado handlers for kernel specifications.

Preliminary documentation at https://github.com/ipython/ipython/wiki/IPEP-25%3A-Registry-of-installed-kernels#rest-api
iÿÿÿÿN(   t   webi   (   t
   APIHandler(   t   url_path_joint   url_unescapec   
      C   sç   i | d 6| d 6i  d 6} | } xR d d g D]D } t  j j t | | ƒ ƒ r. t |  j d | | ƒ | d | <q. q. Wxj t j t | d ƒ ƒ D]P } t  j j | ƒ } t  j j | ƒ \ } }	 t |  j d | | ƒ | d | <q W| S(   s7   Load a KernelSpec by name and return the REST API modelt   namet   spect	   resourcess	   kernel.jss
   kernel.csst   kernelspecss   logo-*(	   t   ost   patht   existst   pjoinR   t   base_urlt   globt   basenamet   splitext(
   t   handlerR   t	   spec_dictt   resource_dirt   dt   resourcet	   logo_filet   fnamet   no_extt   _(    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyt   kernelspec_model   s*    
t   MainKernelSpecHandlerc           B   s   e  Z e j d  „  ƒ Z RS(   c         C   sÛ   |  j  } |  j } i  } | j | d <i  | d <} x{ | j ƒ  j ƒ  D]g \ } } y! t |  | | d | d ƒ } Wn- t k
 r¢ |  j j d | d t	 ƒqF n X| | | <qF W|  j
 d d ƒ |  j t j | ƒ ƒ d  S(	   Nt   defaultR   R   R   s    Failed to load kernel spec: '%s't   exc_infos   Content-Types   application/json(   t   kernel_spec_managert   kernel_managert   default_kernel_namet   get_all_specst   itemsR   t	   Exceptiont   logt   errort   Truet
   set_headert   finisht   jsont   dumps(   t   selft   ksmt   kmt   modelt   specst   kernel_namet   kernel_infoR   (    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyt   get2   s    		(   t   __name__t
   __module__R    t   authenticatedR1   (    (    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyR   0   s   t   KernelSpecHandlerc           B   s   e  Z e j d  „  ƒ Z RS(   c         C   sš   |  j  } t | ƒ } y | j | ƒ } Wn' t k
 rQ t j d d | ƒ ‚ n Xt |  | | j ƒ  | j ƒ } |  j	 d d ƒ |  j
 t j | ƒ ƒ d  S(   Ni”  u   Kernel spec %s not founds   Content-Types   application/json(   R   R   t   get_kernel_spect   KeyErrorR    t	   HTTPErrorR   t   to_dictR   R&   R'   R(   R)   (   R*   R/   R+   R   R-   (    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyR1   G   s    	(   R2   R3   R    R4   R1   (    (    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyR5   E   s   s   (?P<kernel_name>[\w\.\-%]+)s   /api/kernelspecss   /api/kernelspecs/%s(   t   __doc__R   R(   R   R	   t   joinR   t   tornadoR    t   base.handlersR   t   utilsR   R   R   R   R5   t   kernel_name_regext   default_handlers(    (    (    sE   lib/python2.7/site-packages/notebook/services/kernelspecs/handlers.pyt   <module>   s   		