ó
æNXc           @   s“  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 m Z d d l m	 Z	 d d l
 m Z d d l j Z d d l m Z m Z m Z m Z m Z m Z m Z m Z d Z d Z d	 Z d d l Z e j d
 ƒ Z e j d ƒ 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# d e	 f d „  ƒ  YZ$ d S(   s!   Tests for traitlets.config.loaderiÿÿÿÿN(   t   mkstemp(   t   TestCase(   t   SkipTest(   t   Configt   LazyConfigValuet   PyFileConfigLoadert   JSONFileConfigLoadert   KeyValueConfigLoadert   ArgParseConfigLoadert   KVArgParseConfigLoadert   ConfigErrorsj   
c = get_config()
c.a=10
c.b=20
c.Foo.Bar.value=10
c.Foo.Bam.value=list(range(10))
c.D.C.value='hi there'
sÜ   
{
  "version": 1,
  "a": 10,
  "b": 20,
  "Foo": {
    "Bam": {
      "value": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
    },
    "Bar": {
      "value": 10
    }
  },
  "D": {
    "C": {
      "value": "hi there"
    }
  }
}
s   
{
  "version": 2
}
t   devnulli    t
   TestFileCLc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   |  j  | j d ƒ |  j  | j d ƒ |  j  | j j j d ƒ |  j  | j j j t t d ƒ ƒ ƒ |  j  | j	 j
 j d ƒ d  S(   Ni
   i   s   hi there(   t   assertEqualt   at   bt   Foot   Bart   valuet   Bamt   listt   ranget   Dt   C(   t   selft   config(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   _check_confL   s
    %c         C   sj   t  d ƒ \ } } t j | d ƒ } | j t ƒ | j ƒ  t | d t ƒ} | j ƒ  } |  j	 | ƒ d  S(   Ns   .pyt   wt   log(
   R    t   ost   fdopent   writet   pyfilet   closeR   R   t   load_configR   (   R   t   fdt   fnamet   ft   clR   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_pythonS   s    
c         C   sj   t  d ƒ \ } } t j | d ƒ } | j t ƒ | j ƒ  t | d t ƒ} | j ƒ  } |  j	 | ƒ d  S(   Ns   .jsonR   R   (
   R    R   R   R   t	   json1fileR!   R   R   R"   R   (   R   R#   R$   R%   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt	   test_json]   s    
c         C   s  t  ƒ  } t  ƒ  } |  j | j | ƒ i  ƒ d | j _ d | j _ |  j | j | ƒ i  ƒ d | j _ |  j | j | ƒ i  ƒ d | j _ |  j | j | ƒ i i d d 6d 6ƒ |  j | j | ƒ i i d d 6d 6ƒ d | j _ |  j | j | ƒ i i d d 6d	 d
 6d 6ƒ d  S(   Ni   i   i    s   1 ignored, using 0t   trait1t   As   0 ignored, using 1i   s   2 ignored, using 3t   trait2(   R   R   t
   collisionsR+   R*   R,   (   R   R   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_collisiong   s(    		c         C   sq   t  d ƒ \ } } t j | d ƒ } | j t ƒ | j ƒ  t | d t ƒ} t j	 t
 ƒ  | j ƒ  Wd  QXd  S(   Ns   .jsonR   R   (   R    R   R   R   t	   json2fileR!   R   R   t   ntt   assert_raisest
   ValueErrorR"   (   R   R#   R$   R%   R&   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_v2raiseƒ   s    
(   t   __name__t
   __module__R   R'   R)   R.   R3   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyR   J   s
   		
	
	t	   MyLoader1c           B   s   e  Z d d d  „ Z RS(   c         C   sn   |  j  } | j d d d d d t ƒ| j d d d d t ƒ| j d d d	 d
 d ƒ| j d d t ƒd  S(   Ns   -fs   --foot   dests
   Global.foot   types   -bs   MyClass.bars   -nt   nt   actiont
   store_trues
   Global.bam(   t   parsert   add_argumentt   strt   int(   R   t   aliasest   flagst   p(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   _add_arguments   s
    	N(   R4   R5   t   NoneRC   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyR6   Ž   s   t	   MyLoader2c           B   s   e  Z d d d  „ Z RS(   c         C   sW   |  j  j d d ƒ } | j d ƒ } | j d d d ƒ| j d ƒ } | j d ƒ d  S(   NR7   t   subparser_namet   1s   -xs   Global.xt   2t   y(   R<   t   add_subparserst
   add_parserR=   (   R   R@   RA   t
   subparserst
   subparser1t
   subparser2(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyRC   —   s
    N(   R4   R5   RD   RC   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyRE   –   s   t   TestArgParseCLc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sà   t  ƒ  } | j d j ƒ  ƒ } |  j | j j d ƒ |  j | j j d ƒ |  j | j t	 ƒ |  j | j j
 d ƒ | j d g ƒ } |  j t | j ƒ  ƒ d g ƒ |  j t | j j ƒ  ƒ d g ƒ |  j | j j
 d ƒ d  S(   Ns   -f hi -b 10 -n wowt   hii
   t   wowt   Globalt   bam(   R6   R"   t   splitR   RR   t   foot   MyClasst   barR9   t   TrueRS   R   t   keys(   R   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt
   test_basic    s    	"c         C   s†   t  ƒ  } | j d j ƒ  ƒ } |  j | j d ƒ |  j | j d ƒ | j d j ƒ  ƒ } |  j | j d ƒ |  j | j j d ƒ d  S(   Ns	   2 frobbleRH   t   frobbles   1 -x frobbleRG   (   RE   R"   RT   R   RF   RI   RR   t   x(   R   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_add_arguments¬   s    	c         C   sz   t  d d j ƒ  ƒ } | j ƒ  } |  j | j j d ƒ |  j | j j d ƒ |  j | j t	 ƒ |  j | j j
 d ƒ d  S(   Nt   argvs   -f hi -b 10 -n wowRP   i
   RQ   (   R6   RT   R"   R   RR   RU   RV   RW   R9   RX   RS   (   R   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt	   test_argvµ   s    (   R4   R5   RZ   R]   R_   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyRO   ž   s   			t   TestKeyValueCLc           B   sM   e  Z e Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C   ss   |  j  d t ƒ } | j d j ƒ  ƒ } |  j | j j d ƒ |  j | j j d ƒ |  j | j j d d g ƒ d  S(   NR   sH   --Class.str_trait=all --Class.int_trait=5 --Class.list_trait=["hello",5]t   alli   t   hello(	   t   klassR   R"   RT   R   t   Classt	   str_traitt	   int_traitt
   list_trait(   R   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt	   test_evalÁ   s
    c         C   sÔ   |  j  d t ƒ } g  t j d ƒ D]# } | j d ƒ r" d | d ^ q" } | GH| j | ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j	 j
 j d ƒ |  j | j	 j j d ƒ |  j | j j j d	 ƒ d  S(
   NR   s   
s   c.s   --i   i
   i   s   list(range(10))s   hi there(   Rc   R   R    RT   t
   startswithR"   R   R   R   R   R   R   R   R   R   (   R   R&   t   sR^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyRZ   È   s    9c         C   s§   |  j  d t ƒ } d d d d g } | j | ƒ } |  j | j t j j d ƒ ƒ |  j | j t j j d ƒ ƒ |  j | j	 t j j d ƒ ƒ |  j | j
 d ƒ d  S(	   NR   s   --a=~/1/2/3s   --b=~s   --c=~/s   --d="~/"s   ~/1/2/3t   ~s   ~/(   Rc   R   R"   R   R   R   t   patht
   expanduserR   t   ct   d(   R   R&   R^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_expanduserÔ   s    c         C   s¡   |  j  d t ƒ } | j d d d d g ƒ } |  j | j d d g ƒ |  j | j d ƒ |  j | j d ƒ | j d d d g ƒ } |  j | j d d g ƒ d  S(	   NR   s   --a=5R   s   --c=10Ro   i   i
   s   --(   Rc   R   R"   R   t
   extra_argsR   Rn   (   R   R&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_extra_argsÝ   s    c         C   sA   |  j  d t ƒ } d g } | j | ƒ } |  j | j d ƒ d  S(   NR   u   --a=Ã©psÃ®lÃ¶nu
   Ã©psÃ®lÃ¶n(   Rc   R   R"   R   R   (   R   R&   R^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_unicode_argsæ   s    	c         C   s€   d } y | j  t j j ƒ } Wn# t t f k
 rD t d ƒ ‚ n X|  j d t ƒ } | j	 | g ƒ } |  j
 | j d ƒ d  S(   Nu   --a=Ã©s$   sys.stdin.encoding can't handle 'Ã©'R   u   Ã©(   t   encodet   syst   stdint   encodingt	   TypeErrort   UnicodeEncodeErrorR   Rc   R   R"   R   R   (   R   t   uargt   bargR&   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_unicode_bytes_argsì   s    c         C   sS   |  j  d t ƒ } d g } | j | d t d d ƒ ƒ} |  j | j j d ƒ d  S(   NR   u   --a=Ã©psÃ®lÃ¶nR@   R   s   A.au
   Ã©psÃ®lÃ¶n(   Rc   R   R"   t   dictR   R+   R   (   R   R&   R^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_unicode_alias÷   s    	(   R4   R5   R   Rc   Rh   RZ   Rp   Rr   Rs   R|   R~   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyR`   ¾   s   								t   TestArgParseKVCLc           B   s    e  Z e Z d  „  Z d „  Z RS(   c         C   s„   |  j  d t ƒ } d d d d g } | j | d t d d d	 d
 ƒ ƒ} |  j | j j t j j	 d ƒ ƒ |  j | j j
 d ƒ d  S(   NR   s   -as   ~/1/2/3s   --bs	   '~/1/2/3'R@   R   s   A.aR   s   A.b(   Rc   R   R"   R}   R   R+   R   R   Rl   Rm   R   (   R   R&   R^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_expanduser2  s
    $"c         C   sV   |  j  d t ƒ } d d g } | j | d t d d ƒ ƒ} |  j | j j d ƒ d  S(   NR   s   -cs   a=5R@   Rn   s   A.cu   a=5(   Rc   R   R"   R}   R   R+   Rn   (   R   R&   R^   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyRh     s    (   R4   R5   R	   Rc   R€   Rh   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyR   þ   s   	t
   TestConfigc           B   s¡   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s?   t  ƒ  } d | _ |  j | j d ƒ |  j d | k t ƒ d  S(   Ni
   R   (   R   R   R   t   False(   R   Rn   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_setget  s    		c         C   sœ   t  ƒ  } |  j d | ƒ | j d ƒ s/ t ‚ | j } d | _ |  j d | ƒ | j d ƒ sf t ‚ |  j | j j d ƒ | ` |  j | j t  ƒ  ƒ d  S(   NR+   s   hi there(   R   t   assertNotInt   _has_sectiont   AssertionErrorR+   RU   t   assertInR   (   R   Rn   R+   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_auto_section  s    			c         C   s   t  ƒ  } t  ƒ  } d | _ d | j _ | j | ƒ |  j | j j d ƒ |  j | j d ƒ d | j _ | j | ƒ |  j | j j d ƒ d  S(   Ni
   (   R   RW   R   t   mergeR   R   (   R   t   c1t   c2(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_merge_doesnt_exist#  s    			c         C   sÊ   t  ƒ  } t  ƒ  } d | j _ d | j _ d | j _ d | j _ | j | ƒ |  j | j j d ƒ |  j | j j d ƒ |  j | j j d ƒ d | j j _ | j | ƒ |  j | j j j d ƒ d  S(   Ni
   i   i   i(   (   R   R   RW   RS   RQ   R‰   R   R   (   R   RŠ   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_merge_exists/  s    		c         C   s	  t  ƒ  } d | j _ d | j _ d | _ t d ƒ | _ t j d ƒ | j	 _
 t j d ƒ | j	 _ t j | ƒ } |  j | | ƒ |  j | | k	 ƒ |  j | j | j k	 ƒ |  j | j	 | j	 k	 ƒ |  j | j	 j
 | j	 j
 k ƒ |  j | j	 j | j	 j k ƒ d  S(   Ni
   i   t   asdft   test(   R   R   RW   RS   R   R   R   t   loggingt   Loggert   Testt   loggert	   getLoggert
   get_loggert   copyt   deepcopyR   t
   assertTrue(   R   RŠ   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_deepcopy>  s    		c         C   s   t  ƒ  } d | _ d  S(   Nt   json(   R   t   format(   R   RŠ   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_builtinN  s    	c         C   sJ   t  i i d d 6d 6ƒ } |  j | j j t  ƒ |  j | j j d ƒ d  S(   Ni   RW   R   (   R   R   R   t	   __class__RW   (   R   RŠ   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_fromdictR  s    c         C   s`   t  ƒ  } t  i i d d 6d 6ƒ } | j | ƒ |  j | j j t  ƒ |  j | j j d ƒ d  S(   Ni   RW   R   (   R   R‰   R   R   R   RW   (   R   RŠ   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_fromdictmergeW  s
    	c         C   sš   t  i i d d 6d 6ƒ } t  i i d d 6d 6ƒ } | j | ƒ |  j | j j t  ƒ |  j | j j d ƒ |  j | j j d ƒ |  j d | j ƒ d  S(   Ni   t   bazR   i   RW   (   R   R‰   R   R   R   RW   R    R„   (   R   RŠ   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_fromdictmerge2^  s    c         C   sx   t  i i d d 6d 6ƒ } t  i i d d 6d 6ƒ } |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ d  S(   Ni   R    R   i   RW   s   Foo.bazs   Foo.bar(   R   R‡   R„   (   R   RŠ   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_containsg  s    c         C   sG   t  ƒ  } d | j _ t j | ƒ } t j | ƒ } |  j | | ƒ d  S(   Ni   (   R   R   RW   t   picklet   dumpst   loadsR   (   R   t   cfgt   pcfgt   cfg2(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_pickle_configo  s
    	c         C   sK   t  ƒ  } |  j d | ƒ | j } t | t  ƒ s7 t ‚ |  j d | ƒ d  S(   NR   (   R   R„   R   t
   isinstanceR†   R‡   (   R   R¦   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_getattr_sectionv  s
    		c         C   sL   t  ƒ  } |  j d | ƒ | d } t | t  ƒ s8 t ‚ |  j d | ƒ d  S(   NR   (   R   R„   Rª   R†   R‡   (   R   R¦   R   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_getitem_section}  s
    	
c         C   sK   t  ƒ  } |  j d | ƒ | j } t | t ƒ s7 t ‚ |  j d | ƒ d  S(   NRU   (   R   R„   RU   Rª   R   R†   R‡   (   R   R¦   RU   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_getattr_not_section„  s
    		c         C   sb   t  ƒ  } |  j d | ƒ |  j t ƒ  | j } Wd  QX|  j d | ƒ |  j t | ƒ d ƒ d  S(   Nt   _repr_html_i    (   R   R„   t   assertRaisest   AttributeErrorR®   R   t   len(   R   R¦   t   _(    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_getattr_private_missing‹  s    	c         C   sL   t  ƒ  } |  j d | ƒ | d } t | t ƒ s8 t ‚ |  j d | ƒ d  S(   NRU   (   R   R„   Rª   R   R†   R‡   (   R   R¦   RU   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_getitem_not_section“  s
    	
c         C   s‡   t  ƒ  } t  ƒ  } g  | j _ | j | ƒ | j j j d ƒ |  j | j | j ƒ |  j | j j g  ƒ |  j | j j d g ƒ d  S(   Ni   (   R   R   t   traitR‰   t   appendt   assertIsNotR   (   R   Rn   R‹   (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   test_merge_copiesš  s    		(   R4   R5   Rƒ   Rˆ   RŒ   R   R™   Rœ   Rž   RŸ   R¡   R¢   R©   R«   R¬   R­   R³   R´   R¸   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyR     s"   																	(%   t   __doc__R–   R   R   R£   Ru   t   tempfileR    t   unittestR   t   noseR   t
   nose.toolst   toolsR0   t   traitlets.config.loaderR   R   R   R   R   R   R	   R
   R    R(   R/   R”   R   t   setLevelR   R6   RE   RO   R`   R   R   (    (    (    sZ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/traitlets/config/tests/test_loader.pyt   <module>   s.   :D @