ó
q]c           @  så  d  Z  d d l m Z d d l m Z d d l Z d d l Z d d l Z y d d l m	 Z	 Wn! e
 k
 r d d l m	 Z	 n Xy e Wn e k
 r£ e Z n Xd d l m Z m 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 m Z m  Z  m! Z! i d d 6d d 6Z" i i i e j# d 6d 6d f d 6i i e$ d 6d 6d f d 6i i e$ d 6d 6d f d 6Z% d e& f d „  ƒ  YZ' d e f d „  ƒ  YZ( e) d k ráe( j* ƒ  n  d S(    sh   
A base Application class for Jupyter applications.

All Jupyter applications should inherit from this.
iÿÿÿÿ(   t   print_function(   t   deepcopyN(   t   whichi   (   t   Applicationt   catch_config_error(   t   ConfigFileNotFound(   t   Unicodet   Boolt   List(   t   ensure_dir_exists(   t	   py3compat(   t   jupyter_config_dirt   jupyter_data_dirt   jupyter_runtime_dirt   jupyter_patht   jupyter_config_paths   Application.log_levels	   log-levels   JupyterApp.config_filet   configt	   log_levelR   s8   set log level to logging.DEBUG (maximize logging output)t   debugt   generate_configt
   JupyterApps   generate default config files   generate-configt
   answer_yess1   Answer yes to any questions instead of prompting.t   yt   NoStartc           B  s   e  Z d  Z RS(   s6   Exception to raise when an application shouldn't start(   t   __name__t
   __module__t   __doc__(    (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyR   :   s   c           B  sd  e  Z d  Z d Z d Z e Z e Z d „  Z	 e
 e ƒ  ƒ Z d „  Z e ƒ  Z d „  Z e d „  ƒ Z e ƒ  Z d „  Z e ƒ  Z d „  Z d	 „  Z e e d
 e d d ƒZ e d
 e d d ƒ Z d „  Z e d
 e d d ƒ Z e e d
 e d d ƒZ d „  Z d „  Z  e d „ Z! d „  Z" e d „  ƒ Z# e ƒ  Z$ e% d d „ ƒ Z' d „  Z( e) d d „ ƒ Z* RS(   s#   Base class for Jupyter applicationst   jupyters   A Jupyter Applicationc         C  s   t  j S(   N(   t   loggingt   INFO(   t   self(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _log_level_defaultE   s    c         C  s   t  ƒ  S(   N(   R   (   R   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _jupyter_path_defaultI   s    c         C  s   t  ƒ  S(   N(   R   (   R   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _config_dir_defaultN   s    c         C  sH   t  ƒ  } |  j | k r. | j d |  j ƒ n  | j d t j ƒ  ƒ | S(   Ni    (   R   t
   config_dirt   insertR
   t   getcwd(   R   t   path(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   config_file_pathsQ   s
    	c         C  s   t  ƒ  } t | d d ƒ| S(   Nt   modeiÀ  (   R   R	   (   R   t   d(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _data_dir_default[   s    	c         C  s   t  ƒ  } t | d d ƒ| S(   NR'   iÀ  (   R   R	   (   R   t   rd(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _runtime_dir_defaulta   s    	c         C  s   t  | d d ƒd  S(   NR'   iÀ  (   R	   (   R   t   new(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _runtime_dir_changedf   s    R   t   helps   Generate default config file.s   Specify a config file to load.c         C  s$   |  j  s d S|  j  j d d ƒ d S(   Nt    t   -t   _u   _config(   t   namet   replace(   R   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _config_file_name_defaultp   s    	s   Full path of a config file.s   Answer yes to any prompts.c           s9  |  j  r |  j  ‰  n t j j |  j |  j d ƒ ‰  t j j ˆ  ƒ r­ |  j r­ d } ‡  f d †  } | ƒ  } x& | j d ƒ s– t	 d ƒ | ƒ  } qq W| j d ƒ r­ d Sn  |  j
 ƒ  } t | t ƒ rÚ | j d ƒ } n  t	 d	 ˆ  ƒ t t j j t j j ˆ  ƒ ƒ d
 ƒ t ˆ  d d ƒ } | j | ƒ Wd QXd S(   s-   Write our default config to a .py config files   .pyR/   c            sG   d ˆ  }  y t  |  ƒ j ƒ  p" d SWn t k
 rB t d ƒ d SXd  S(   Ns'   Overwrite %s with default config? [y/N]t   nR/   (   t	   raw_inputt   lowert   KeyboardInterruptt   print(   t   prompt(   t   config_file(    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   ask†   s    

R   R5   s   Please answer 'yes' or 'no'Nt   utf8s   Writing default config to: %siÀ  R'   t   w(   R   R5   (   R;   t   osR%   t   joinR"   t   config_file_namet   existsR   t
   startswithR9   t   generate_config_filet
   isinstancet   bytest   decodeR	   t   abspatht   dirnamet   opent   write(   R   t   answerR<   t   config_textt   f(    (   R;   s7   lib/python2.7/site-packages/jupyter_core/application.pyt   write_default_config}   s&    		
%c         C  sb   t  j j t  j j |  j d ƒ ƒ r( d Sd d l m } m } t  j j | ƒ  ƒ sW d S| ƒ  d S(   s"   Migrate config/data from IPython 3t   migratedNi   (   t   get_ipython_dirt   migrate(   R?   R%   RB   R@   R"   RR   RQ   (   R   RQ   RR   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   migrate_configœ   s    $c         C  sA  |  j  j d |  j ƒ d } y# t t |  ƒ j | d |  j ƒWn$ t k
 re |  j  j d | ƒ n X|  j r t j	 j
 |  j ƒ \ } } n) |  j } |  j } | s² | | k r¶ d Sy  t t |  ƒ j | d | ƒWnd t k
 rü |  j  j d | ƒ nA t k
 r<| s|  j r‚  n  |  j  j d | d t ƒn Xd S(	   sã   Load the config file.

        By default, errors in loading config are handled, and a warning
        printed on screen. For testing, the suppress_errors option is set
        to False, so errors will make tests fail.
        s   Searching %s for config filest   jupyter_configR%   s   Config file %s not foundNs#   Config file not found, skipping: %ss   Error loading config file: %st   exc_info(   t   logR   R&   t   superR   t   load_config_fileR   R;   R?   R%   t   splitRA   t	   Exceptiont   raise_config_file_errorst   warningt   True(   R   t   suppress_errorst   base_configR%   RA   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyRX   ª   s4    			c         C  s   d j  |  j | ƒ } t | ƒ S(   Ns   {}-{}(   t   formatR2   R   (   R   R2   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _find_subcommandÖ   s    c         C  s   t  |  j p |  j p |  j ƒ S(   sd   Return whether we are dispatching to another command
        
        or running ourselves.
        (   t   boolR   t   subappt
   subcommand(   R   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   _dispatchingÚ   s    c         C  s¢   | d  k r t j d } n  | rT |  j | d ƒ } | rT | |  _ | |  _ d  Sn  |  j | ƒ t |  j ƒ } |  j r} d  S|  j	 ƒ  |  j
 ƒ  |  j | ƒ d  S(   Ni   i    (   t   Nonet   syst   argvRa   Rd   t   parse_command_lineR   R   Re   RS   RX   t   update_config(   R   Rh   t   subct	   cl_config(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt
   initializeä   s    			

c         C  s~   |  j  r9 t j |  j  |  j  g |  j d ƒ t ƒ  ‚ n  |  j r[ |  j j ƒ  t ƒ  ‚ n  |  j rz |  j ƒ  t ƒ  ‚ n  d S(   s   Start the whole thingi   N(	   Rd   R?   t   execvRh   R   Rc   t   startR   RO   (   R   (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyRo   ù   s    	$		
c         K  s9   y  t  t |  ƒ j d | |  SWn t k
 r4 d SXd S(   s+   Launch an instance of a Jupyter ApplicationRh   N(   RW   R   t   launch_instanceR   (   t   clsRh   t   kwargs(    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyRp     s     N(+   R   R   R   R2   t   descriptiont   base_aliasest   aliasest
   base_flagst   flagsR   R   R   R   R    R"   R!   t   propertyR&   t   data_dirR)   t   runtime_dirR+   R-   R   t   FalseR]   R   RA   R4   R;   R   RO   RS   RX   Ra   Re   Rd   R   Rf   Rm   Ro   t   classmethodRp   (    (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyR   =   sH   																,			t   __main__(+   R   t
   __future__R    t   copyR   R   R?   Rg   t   shutilR   t   ImportErrort   utils.shutil_whichR6   t	   NameErrort   inputt   traitlets.config.applicationR   R   t   traitlets.config.loaderR   t	   traitletsR   R   R   t   utilsR	   t   ipython_genutilsR
   t   pathsR   R   R   R   R   Rt   t   DEBUGR]   Rv   RZ   R   R   R   Rp   (    (    (    s7   lib/python2.7/site-packages/jupyter_core/application.pyt   <module>   sB   
(


Ò