ó
ęNXc           @   sM  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l 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 m Z d d l m Z m Z m Z d	 e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e j f d     YZ d e f d     YZ d   Z d e f d     YZ  d e! f d     YZ" d e" f d     YZ# d e# f d     YZ$ d e# f d     YZ% d  e" f d!     YZ& e j' d"  Z( e j' d#  Z) d$ e& f d%     YZ* d& e& f d'     YZ+ d( e+ f d)     YZ, d*   Z- d S(+   s   A simple configuration system.i’’’’N(   t   literal_eval(   t   filefind(   t	   py3compat(   t   DEFAULT_ENCODING(   t   unicode_typet	   iteritems(   t	   HasTraitst   Listt   Anyt   ConfigErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR	      s   t   ConfigLoaderErrorc           B   s   e  Z RS(    (   R
   R   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR      s   t   ConfigFileNotFoundc           B   s   e  Z RS(    (   R
   R   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   !   s   t   ArgumentErrorc           B   s   e  Z RS(    (   R
   R   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   $   s   t   ArgumentParserc           B   s,   e  Z d  Z d d  Z e j j j e _ RS(   s?   Simple argparse subclass that prints help to stdout by default.c         C   s.   | d  k r t j } n  t t |   j |  S(   N(   t   Nonet   syst   stdoutt   superR   t
   print_help(   t   selft   file(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   4   s    N(   R
   R   t   __doc__R   R   t   argparseR   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   1   s   t   LazyConfigValuec           B   s   e  Z d  Z d	 Z e   Z e   Z d   Z d   Z	 d   Z
 e   Z d   Z e   Z d   Z d   Z d   Z d   Z RS(
   s®   Proxy object for exposing methods on configurable containers
    
    Exposes:
    
    - append, extend, insert on lists
    - update on dicts
    - update, add on sets
    c         C   s   |  j  j |  d  S(   N(   t   _extendt   append(   R   t   obj(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   O   s    c         C   s   |  j  j |  d  S(   N(   R   t   extend(   R   t   other(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   R   s    c         C   s   | |  j  d *d S(   s#   like list.extend, but for the fronti    N(   t   _prepend(   R   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   prependU   s    c         C   s8   t  | t  s t d   n  |  j j | | f  d  S(   Ns   An integer is required(   t
   isinstancet   intt	   TypeErrort   _insertsR   (   R   t   indexR   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   insertZ   s    c         C   sM   |  j  d  k r9 t | t  r* i  |  _  q9 t   |  _  n  |  j  j |  d  S(   N(   t   _updateR   R!   t   dictt   sett   update(   R   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR*   b   s
    c         C   s   |  j  | h  d  S(   N(   R*   (   R   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   addk   s    c         C   sē   |  j  d k	 r |  j  St j |  } t | t  r~ x' |  j D] \ } } | j | |  q> W|  j | d *| j	 |  j
  n\ t | t  r¬ |  j rŚ | j |  j  qŚ n. t | t  rŚ |  j rŚ | j |  j  qŚ n  | |  _  | S(   sv   construct the value from the initial one
        
        after applying any insert / extend / update changes
        i    N(   t   _valueR   t   copyt   deepcopyR!   t   listR$   R&   R   R   R   R(   R'   R*   R)   (   R   t   initialt   valuet   idxR   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt	   get_valuen   s     			c         C   sn   i  } |  j  r |  j  | d <n  |  j r8 |  j | d <n  |  j rQ |  j | d <n |  j rj |  j | d <n  | S(   s   return JSONable dict form of my data
        
        Currently update as dict or set, extend, prepend as lists, and inserts as list of tuples.
        R*   R   R    t   inserts(   R'   R   R   R$   (   R   t   d(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   to_dict   s    				N(   R
   R   R   R   R,   R   R   R   R   R   R    R$   R&   R   R'   R*   R+   R3   R6   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   ?   s   												c         C   s<   |  r4 |  d j    |  d k r4 |  j d  r4 t St Sd S(   s>   Is a Config key a section name (does it start with a capital)?i    t   _N(   t   uppert
   startswitht   Truet   False(   t   key(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _is_section_key   s    0t   Configc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z e Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z RS(   s1   An attribute based dict that can do smart merges.c         O   s!   t  j |  | |  |  j   d  S(   N(   R(   t   __init__t   _ensure_subconfig(   R   t   argst   kwds(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR?   ”   s    c         C   sc   x\ |  D]T } |  | } t  |  r t | t  r t | t  r t |  | t |   q q Wd S(   sŪ   ensure that sub-dicts that should be Config objects are
        
        casts dicts that are under section keys to Config objects,
        which is necessary for constructing Config objects from dict literals.
        N(   R=   R!   R(   R>   t   setattr(   R   R<   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR@   „   s    
c         C   s   |  j  |  d S(   s$   deprecated alias, use Config.merge()N(   t   merge(   R   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _merge²   s    c         C   s   i  } x t  |  D]w \ } } | |  k rA t j |  | | <q t | t  rw t |  | t  rw |  | j |  q t j |  | | <q W|  j |  d S(   s)   merge another config object into this oneN(   R   R-   R.   R!   R>   RD   R*   (   R   R   t	   to_updatet   kt   v(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRD   ¶   s    "c         C   s„   i  } x |  D] } | | k r% q n  |  | } | | } xa | D]Y } | | k r@ | | | | k r@ | j  | i   d | | | | f | | | <q@ q@ Wq W| S(   sü   Check for collisions between two config objects.
        
        Returns a dict of the form {"Class": {"trait": "collision message"}}`,
        indicating which values have been ignored.
        
        An empty dict indicates no collisions.
        s   %r ignored, using %r(   t
   setdefault(   R   R   t
   collisionst   sectiont   minet   theirsR<   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRJ   Ę   s    

 +c         C   sX   d | k rB | j  d d  \ } } | |  k r4 t S| |  | k St t |   j |  S(   Nt   .i   (   t   splitR;   R   R>   t   __contains__(   R   R<   t   firstt	   remainder(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRP   Ś   s    c         C   s   t  |  o | |  k S(   N(   R=   (   R   R<   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _has_sectionē   s    c         C   s   t  |   t j |    S(   N(   t   typeR(   R-   (   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR-   ź   s    c         C   s
   |  j    S(   N(   R-   (   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   __copy__ķ   s    c         C   s   t  |     } x~ |  j   D]p \ } } t | t t f  rR t j | |  } n0 t  |  t t t	 t
 h k r t j |  } n  | | | <q W| S(   N(   RT   t   itemsR!   R>   R   R-   R.   R(   R/   R)   t   tuple(   R   t   memot
   new_configR<   R1   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   __deepcopy__š   s    c         C   s   y t  j |  |  SWnr t k
 r t |  rP t   } t  j |  | |  | S| j d  s t   } t  j |  | |  | St  n Xd  S(   NR7   (   R(   t   __getitem__t   KeyErrorR=   R>   t   __setitem__R9   R   (   R   R<   t   cRH   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR[   ü   s    		c         C   sN   t  |  r7 t | t  s7 t d | | f   q7 n  t j |  | |  d  S(   NsO   values whose keys begin with an uppercase char must be Config instances: %r, %r(   R=   R!   R>   t
   ValueErrorR(   R]   (   R   R<   R1   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR]     s
    c         C   sV   | j  d  r t j |  |  Sy |  j |  SWn t k
 rQ } t |   n Xd  S(   Nt   __(   R9   R(   t   __getattr__R[   R\   t   AttributeError(   R   R<   t   e(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRa     s    c         C   s\   | j  d  r" t j |  | |  Sy |  j | |  Wn t k
 rW } t |   n Xd  S(   NR`   (   R9   R(   t   __setattr__R]   R\   Rb   (   R   R<   R1   Rc   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRd     s    c         C   sY   | j  d  r t j |  |  Sy t j |  |  Wn t k
 rT } t |   n Xd  S(   NR`   (   R9   R(   t   __delattr__t   __delitem__R\   Rb   (   R   R<   Rc   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRe   #  s    (   R
   R   R   R?   R@   RE   RD   RJ   RP   t   has_keyRS   R-   RU   RZ   R[   R]   Ra   Rd   Re   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR>      s"   														t   ConfigLoaderc           B   s5   e  Z d  Z d   Z d d  Z d   Z d   Z RS(   s1  A object for loading configurations from just about anywhere.

    The resulting configuration is packaged as a :class:`Config`.

    Notes
    -----
    A :class:`ConfigLoader` does one thing: load a config from a source
    (file, command line arguments) and returns the data as a :class:`Config` object.
    There are lots of things that :class:`ConfigLoader` does not do.  It does
    not implement complex logic for finding config files.  It does not handle
    default values or merge multiple configs.  These things need to be
    handled elsewhere.
    c         C   s   d d l  m } |   S(   Ni’’’’(   t
   get_logger(   t   traitlets.logRi   (   R   Ri   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _log_default@  s    c         C   sE   |  j    | d k r8 |  j   |  _ |  j j d  n	 | |  _ d S(   se  A base class for config loaders.

        log : instance of :class:`logging.Logger` to use.
              By default loger of :meth:`traitlets.config.application.Application.instance()`
              will be used

        Examples
        --------

        >>> cl = ConfigLoader()
        >>> config = cl.load_config()
        >>> config
        {}
        s   Using default loggerN(   t   clearR   Rk   t   logt   debug(   R   Rm   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR?   D  s
    
c         C   s   t    |  _ d  S(   N(   R>   t   config(   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRl   Z  s    c         C   s   |  j    |  j S(   s  Load a config from somewhere, return a :class:`Config` instance.

        Usually, this will cause self.config to be set and then returned.
        However, in most cases, :meth:`ConfigLoader.clear` should be called
        to erase any previous state.
        (   Rl   Ro   (   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   load_config]  s    
N(   R
   R   R   Rk   R   R?   Rl   Rp   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRh   1  s
   		t   FileConfigLoaderc           B   s#   e  Z d  Z d d  Z d   Z RS(   s   A base class for file based configurations.

    As we add more file based config loaders, the common logic should go
    here.
    c         K   s5   t  t |   j |   | |  _ | |  _ d |  _ d S(   s.  Build a config loader for a filename and path.

        Parameters
        ----------
        filename : str
            The file name of the config file.
        path : str, list, tuple
            The path to search for the config file on, or a sequence of
            paths to try in order.
        t    N(   R   Rq   R?   t   filenamet   patht   full_filename(   R   Rs   Rt   t   kw(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR?   o  s    		c         C   s   t  |  j |  j  |  _ d S(   s,   Try to find the file by searching the paths.N(   R   Rs   Rt   Ru   (   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt
   _find_file  s    N(   R
   R   R   R   R?   Rw   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRq   h  s   t   JSONFileConfigLoaderc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s   A JSON file loader for configc         C   se   |  j    y |  j   Wn% t k
 r? } t t |    n X|  j   } |  j |  |  _ |  j S(   s=   Load the config from a file and return it as a Config object.(   Rl   Rw   t   IOErrorR   t   strt   _read_file_as_dictt   _convert_to_configRo   (   R   Rc   t   dct(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRp     s    
c         C   s)   t  |  j   } t j |  SWd  QXd  S(   N(   t   openRu   t   jsont   load(   R   t   f(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR{     s    c         C   so   d | k r | j  d  } n d } |  j j d j |   | d k rS t |  St d j d |    d  S(   Nt   versioni   s:   Unrecognized JSON config file version, assuming version {}s.   Unknown version of JSON config file: {version}(   t   popRm   t   warningt   formatR>   R_   (   R   t
   dictionaryR   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR|     s    
(   R
   R   R   Rp   R{   R|   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRx     s   		t   PyFileConfigLoaderc           B   s,   e  Z d  Z d   Z d d  Z d   Z RS(   s°   A config loader for pure python files.

    This is responsible for locating a Python config file by filename and
    path, then executing it to construct a Config object.
    c         C   sQ   |  j    y |  j   Wn% t k
 r? } t t |    n X|  j   |  j S(   s=   Load the config from a file and return it as a Config object.(   Rl   Rw   Ry   R   Rz   R{   Ro   (   R   Rc   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRp   ©  s    

c         C   sb   | d k r |  j } n  |  j | |  } y | j   } Wn t k
 rM n X|  j j |  d S(   s5   Injected into config file namespace as load_subconfigN(   R   Rt   t	   __class__Rp   R   Ro   RD   (   R   t   fnameRt   t   loadert
   sub_config(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   load_subconfig³  s    c      	      sq     f d   } t  d   j d   j d | d   j  } t j   pH d }   j j |  } t j | |  d S(   s>   Load the config file into self.config, with recursive loading.c              s     j  S(   sK   Unnecessary now, but a deprecation warning is more trouble than it's worth.(   Ro   (    (   R   (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt
   get_configÄ  s    R^   R   R   t   __file__t   asciiN(	   R(   Ro   R   Ru   R   t   getfilesystemencodingt   encodeR   t   execfile(   R   R   t	   namespacet   fs_encodingt   conf_filename(    (   R   sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR{   Ā  s    		N(   R
   R   R   Rp   R   R   R{   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   ¢  s   	
t   CommandLineConfigLoaderc           B   s    e  Z d  Z d   Z d   Z RS(   s   A config loader for command line arguments.

    As we add more command line based loaders, the common logic should go
    here.
    c         B   sU   e  j j |  } y e |  } Wn  e e e f k
 rD | } n Xd | d Ud S(   s0  execute self.config.<lhs> = <rhs>
        
        * expands ~ with expanduser
        * tries to assign with literal_eval, otherwise assigns with just the string,
          allowing `--C.a=foobar` and `--C.a="foobar"` to be equivalent.  *Not*
          equivalent are `--C.a=4` and `--C.a='4'`.
        u   self.config.%s = valueN(   t   osRt   t
   expanduserR    t	   NameErrort   SyntaxErrorR_   (   R   t   lhst   rhsR1   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _exec_config_strŚ  s    
c         C   s]   t  | t t f  rI xA t |  D]  \ } } |  j | j |  q" Wn t d |   d S(   s=   update self.config from a flag, which can be a dict or Configs   Invalid flag: %rN(   R!   R(   R>   R   Ro   R*   R#   (   R   t   cfgt   secR^   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt
   _load_flagī  s    (   R
   R   R   R   R    (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR   Ó  s   	s#   \-\-[A-Za-z][\w\-]*(\.[\w\-]+)*\=.*s   \-\-?\w+[\-\w]*$t   KeyValueConfigLoaderc           B   sG   e  Z d  Z d d d d  Z d   Z d d  Z d d d d  Z RS(   sÓ   A config loader that loads key value pairs from the command line.

    This allows command line options to be gives in the following form::

        ipython --profile="foo" --InteractiveShell.autocall=False
    c         K   s]   t  t |   j |   | d k r2 t j d } n  | |  _ | pD i  |  _ | pS i  |  _ d S(   s  Create a key value pair config loader.

        Parameters
        ----------
        argv : list
            A list that has the form of sys.argv[1:] which has unicode
            elements of the form u"key=value". If this is None (default),
            then sys.argv[1:] will be used.
        aliases : dict
            A dict of aliases for configurable traits.
            Keys are the short aliases, Values are the resolved trait.
            Of the form: `{'alias' : 'Configurable.trait'}`
        flags : dict
            A dict of flags, keyed by str name. Vaues can be Config objects,
            dicts, or "key=value" strings.  If Config or dict, when the flag
            is triggered, The flag is loaded as `self.config.update(m)`.

        Returns
        -------
        config : Config
            The resulting Config object.

        Examples
        --------

            >>> from traitlets.config.loader import KeyValueConfigLoader
            >>> cl = KeyValueConfigLoader()
            >>> d = cl.load_config(["--A.name='brian'","--B.number=0"])
            >>> sorted(d.items())
            [('A', {'name': 'brian'}), ('B', {'number': 0})]
        i   N(   R   R”   R?   R   R   t   argvt   aliasest   flags(   R   R¢   R£   R¤   Rv   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR?     s     	c         C   s    t  t |   j   g  |  _ d  S(   N(   R   R”   Rl   t
   extra_args(   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRl   :  s    c         C   s^   g  } | d k r t } n  x< | D]4 } t | t  sI | j |  } n  | j |  q" W| S(   sG   decode argv if bytes, using stdin.encoding, falling back on default encN(   R   R   R!   R   t   decodeR   (   R   R¢   t   enct   uargvt   arg(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   _decode_argv?  s    	c         C   s  |  j    | d
 k r" |  j } n  | d
 k r: |  j } n  | d
 k rR |  j } n  |  j |  } x t |  D]\ } } | j d  } | d k r± |  j j	 | | d  Pn  t
 j |  rN| j d d  \ } }	 | | k rń | | } n  d | k r|  j j d |  n  y |  j | |	  Wq t k
 rJt d |   q Xqn t j |  r| | k r| | \ }
 } |  j |
  q t d |   qn | j d  ršd | } t
 j |  rŻt d	 | | f   q t d |   qn |  j j |  qn W|  j S(   sŃ  Parse the configuration and generate the Config object.

        After loading, any arguments that are not key-value or
        flags will be stored in self.extra_args - a list of
        unparsed command-line arguments.  This is used for
        arguments such as input files or subcommands.

        Parameters
        ----------
        argv : list, optional
            A list that has the form of sys.argv[1:] which has unicode
            elements of the form u"key=value". If this is None (default),
            then self.argv will be used.
        aliases : dict
            A dict of aliases for configurable traits.
            Keys are the short aliases, Values are the resolved trait.
            Of the form: `{'alias' : 'Configurable.trait'}`
        flags : dict
            A dict of flags, keyed by str name. Values can be Config objects
            or dicts.  When the flag is triggered, The config is loaded as
            `self.config.update(cfg)`.
        t   -s   --i   t   =RN   s:   Unrecognized alias: '%s', it will probably have no effect.s   Invalid argument: '%s's   Unrecognized flag: '%s's*   Invalid argument: '%s', did you mean '%s'?N(   Rl   R   R¢   R£   R¤   RŖ   t	   enumeratet   lstripR„   R   t
   kv_patternt   matchRO   Rm   R   R   t	   ExceptionR   t   flag_patternR    R9   R   Ro   (   R   R¢   R£   R¤   RØ   R2   t   rawt   itemR   R   R   t   helpt   kv(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRp   L  sF    

N(   R
   R   R   R   R?   Rl   RŖ   Rp   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR”   
  s
   (	t   ArgParseConfigLoaderc           B   sn   e  Z d  Z d d d d d  Z d d d d  Z d   Z d d d  Z d d d  Z d   Z	 d   Z
 RS(	   sE   A loader that uses the argparse module to load from the command line.c         O   s°   t  t |   j d |  |  j   | d k r? t j d } n  | |  _ | pQ i  |  _ | p` i  |  _ | |  _	 | j
 d d  |  _ t d t j  } | j |  | |  _ d S(   sz  Create a config loader for use with argparse.

        Parameters
        ----------

        argv : optional, list
          If given, used to read command-line arguments from, otherwise
          sys.argv[1:] is used.

        parser_args : tuple
          A tuple of positional arguments that will be passed to the
          constructor of :class:`argparse.ArgumentParser`.

        parser_kw : dict
          A tuple of keyword arguments that will be passed to the
          constructor of :class:`argparse.ArgumentParser`.

        Returns
        -------
        config : Config
            The resulting Config object.
        Rm   i   R   t   argument_defaultN(   R   R   R?   Rl   R   R   R¢   R£   R¤   t   parser_argsR   R   R(   R   t   SUPPRESSR*   t	   parser_kw(   R   R¢   R£   R¤   Rm   R¹   R»   t   kwargs(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR?     s    
		c         C   s   |  j    | d k r" |  j } n  | d k r: |  j } n  | d k rR |  j } n  |  j | |  |  j |  |  j   |  j S(   sC  Parse command line arguments and return as a Config object.

        Parameters
        ----------

        args : optional, list
          If given, a list with the structure of sys.argv[1:] to parse
          arguments from. If not given, the instance's self.argv attribute
          (given at construction time) is used.N(	   Rl   R   R¢   R£   R¤   t   _create_parsert   _parse_argsR|   Ro   (   R   R¢   R£   R¤   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRp   æ  s    


c         C   s   t  |  d  r |  j Sg  Sd  S(   NR„   (   t   hasattrR„   (   R   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   get_extra_argsÕ  s    c         C   s,   t  |  j |  j   |  _ |  j | |  d  S(   N(   R   R¹   R»   t   parsert   _add_arguments(   R   R£   R¤   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR½   Ū  s    c         C   s   t  d   d  S(   Ns(   subclasses must implement _add_arguments(   t   NotImplementedError(   R   R£   R¤   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRĀ   ß  s    c         C   sM   t  } g  | D] } t j | |  ^ q } |  j j |  \ |  _ |  _ d S(   s   self.parser->self.parsed_dataN(   R   R   t   cast_unicodeRĮ   t   parse_known_argst   parsed_dataR„   (   R   RA   R§   t   at   uargs(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR¾   ā  s    %c         B   sE   x> e  e |  j   D]' \ } } d | e   e   f d Uq Wd S(   s   self.parsed_data->self.configs   self.config.%s = vN(   R   t   varsRĘ   t   localst   globals(   R   RG   RH   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR|   é  s    "N(   R
   R   R   R   R?   Rp   RĄ   R½   RĀ   R¾   R|   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR·     s   %		t   KVArgParseConfigLoaderc           B   s&   e  Z d  Z d d d  Z d   Z RS(   s  A config loader that loads aliases and flags with argparse,
    but will use KVLoader for the rest.  This allows better parsing
    of common args, such as `ipython -c 'print 5'`, but still gets
    arbitrary config with `ipython --InteractiveShell.use_readline=False`c      
   C   s  i  |  _  | d  k r! |  j } n  | d  k r9 |  j } n  |  j j } x t |  D] \ } } | | k rs d } n d  } t |  d k rµ | d | d | d t d | d | qR | d | d t d | d | qR Wx„ t |  D] \ } \ } } | |  j k r!| |  j  |  j | <qę n  t |  d k r]| d | d | d d	 d d
 d | qę | d | d d	 d d
 d | qę Wd  S(   Nt   ?i   R«   s   --RT   t   destt   nargst   actiont   append_constt   _flagst   const(	   t   alias_flagsR   R£   R¤   RĮ   t   add_argumentR   t   lenR   (   R   R£   R¤   t   paaR<   R1   RĻ   Rµ   (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRĀ   ō  s(    		*$*c         C   sõ   d |  j  k r' |  j  j } |  j  ` n g  } xV t t |  j    D]? \ } } | d k rr | j |  j |  qC |  j | |  qC Wx | D] } |  j |  q W|  j	 rń t
 d |  j  } | j |  j	  |  j j | j  | j	 |  _	 n  d S(   sJ   self.parsed_data->self.config, parse unrecognized extra args via KVLoader.RŅ   Rm   N(   RĘ   RŅ   R   RÉ   R   R   RŌ   R   R    R„   R”   Rm   Rp   Ro   RD   (   R   t   subcsRG   RH   t   subct
   sub_parser(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyR|     s    "	N(   R
   R   R   R   RĀ   R|   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyRĢ   ī  s   c         C   sj   t    } xZ |  D]R } t | d | } y | j   } Wn t k
 rK q   q X| j |  q W| S(   s  Load multiple Python config files, merging each of them in turn.

    Parameters
    ==========
    config_files : list of str
        List of config files names to load and merge into the config.
    path : unicode
        The full path to the location of the config files.
    Rt   (   R>   R   Rp   R   RD   (   t   config_filesRt   Ro   t   cfR   t   next_config(    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   load_pyconfig_files+  s    
	(.   R   R   R-   t   loggingR   t   reR   R   t   astR    t   ipython_genutils.pathR   t   ipython_genutilsR   t   ipython_genutils.encodingR   t   ipython_genutils.py3compatR   R   t   traitlets.traitletsR   R   R   R±   R	   R   R   R   R   R   R=   R(   R>   t   objectRh   Rq   Rx   R   R   t   compileRÆ   R²   R”   R·   RĢ   RŽ   (    (    (    sO   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/loader.pyt   <module>   s@   W	71-W=