
    _d(X                        d 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
Z
ddlmZmZmZ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 d	Zd
ZdZddlZ ej>                  d      Z e jC                  d        G d de	      Z"d Z# G d de      Z$ G d de      Z% G d de	      Z& G d de      Z' G d de	      Z( G d de      Z) G d de)      Z* G d de(      Z+ G d  d!e	      Z,y)"z!Tests for traitlets.config.loader    N)chain)mkstemp)TestCase)DictIntegerListTupleUnicode)Configurable)ArgParseConfigLoaderConfigJSONFileConfigLoaderKeyValueConfigLoaderKVArgParseConfigLoaderLazyConfigValuePyFileConfigLoaderzj
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'
z
{
  "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"
    }
  }
}
z
{
  "version": 2
}
devnullc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestFileCLc                    | j                  |j                  d       | j                  |j                  d       | j                  |j                  j                  j
                  d       | j                  |j                  j                  j
                  t        t        d                   | j                  |j                  j                  j
                  d       y )N
      hi there)assertEqualabFooBarvalueBamlistrangeDC)selfconfigs     D/usr/lib/python3/dist-packages/traitlets/config/tests/test_loader.py_check_confzTestFileCL._check_confG   s    2&2&--r2--tE"I?)):6    c                     t        dd      \  }}t        j                  |d      }|j                  t               |j                          t        |t              }|j                         }| j                  |       y )Nz.py   μnïcø∂eprefixwlog)
r   osfdopenwritepyfilecloser   r0   load_configr(   r%   fdfnamefclr&   s         r'   test_pythonzTestFileCL.test_pythonN   s\    E.9	EIIb#			3/! r)   c                     t        dd      \  }}t        j                  |d      }|j                  t               |j                          t        |t              }|j                         }| j                  |       y N.jsonr+   r,   r.   r/   )
r   r1   r2   r3   	json1filer5   r   r0   r6   r(   r7   s         r'   	test_jsonzTestFileCL.test_jsonX   s]    GN;	EIIb#				!%S1! r)   c                    t        dd      \  }}t        j                  |d      }|j                  d       |j	                          t        |t              }d}|5 }||j                  _        d d d        | j                  |j                  j                  j                  |       t        |t              }| j                  |j                  j                  j                  |       y # 1 sw Y   {xY w)Nr?   r+   r,   r.   {}r/   context_manager)r   r1   r2   r3   r5   r   r0   MyAttrr   r   r&   )r%   r8   r9   r:   r;   r   c_s           r'   test_context_managerzTestFileCL.test_context_managerb   s    GN;	EIIb#			!%S1! 	#1"AHHN	# 	))//7 !C0))//7	# 	#s   C))C2c                 \   t        dd      \  }}t        j                  |d      }|j                  d       |j	                          t        |t              5 }d|j                  _        d d d        | j                  t              5  t        |t              5 }d |j                  _        d d d        d d d        t        |t              }|j                         }|j                  j                  dk(  sJ d	|j                  vsJ y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   nxY w)
Nr?   r+   r,   r.   rC   r/      c                     | S N )xs    r'   <lambda>z8TestFileCL.test_json_context_bad_write.<locals>.<lambda>   s    q r)   	cant_json)r   r1   r2   r3   r5   r   r0   Ar   assertRaises	TypeErrorrP   r6   )r%   r8   r9   r:   r&   loadercfgs          r'   test_json_context_bad_writez&TestFileCL.test_json_context_bad_writev   s    GN;	EIIb#			!%S1 	VFHHJ	 y) 	1%e5 1%0"1	1 &e5  "uuww!||#%%'''	 	1 1	1 	1s0   D
D"D-D"
DD	D""D+c                 |   t               }t               }| j                  |j                  |      i        d|j                  _        d|j                  _        | j                  |j                  |      i        d|j                  _        | j                  |j                  |      i        d|j                  _        | j                  |j                  |      dddii       | j                  |j                  |      dddii       d|j                  _        | j                  |j                  |      ddd	d
i       y )NrJ      r   rQ   trait1z1 ignored, using 0z0 ignored, using 1   z2 ignored, using 3)rY   trait2)r   r   
collisionsrQ   rY   r[   )r%   r   r   s      r'   test_collisionzTestFileCL.test_collision   s   HHa"-

a"-
a"-
LLO2	
 	LLO2	
 
LLO22	
r)   c                 0   t        dd      \  }}t        j                  |d      }|j                  t               |j                          t        |t              }| j                  t              5  |j                          d d d        y # 1 sw Y   y xY wr>   )r   r1   r2   r3   	json2filer5   r   r0   rR   
ValueErrorr6   )r%   r8   r9   r:   r;   s        r'   test_v2raisezTestFileCL.test_v2raise   sp    GN;	EIIb#				!%S1z* 	NN	 	 	s   2BBN)
__name__
__module____qualname__r(   r<   rA   rH   rV   r]   ra   rM   r)   r'   r   r   F   s&    7!!8(($#
Jr)   r   c                 N    	 t        |       S # t        $ r t        |       cY S w xY wrL   )int	Exceptionstr)vs    r'   _parse_int_or_strrj      s(    1v 1vs   
 $$c                       e Zd ZddZy)	MyLoader1Nc                 4   | j                   }|j                  dddt               |j                  ddt               |j                  ddd	
       |j                  dt               |j                  ddt               |j                  ddt               y )Nz-fz--fooz
Global.foo)desttypez-bzMyClass.barz-nn
store_true)rn   actionz
Global.bam)ro   z--list1append)rr   ro   z--list2+)nargsro   )parseradd_argumentrh   rf   rj   )r%   aliasesflagsclassesps        r'   _add_argumentszMyLoader1._add_arguments   sx    KK	tW<cB	t-c:	t#l;	|#.	y8IJ	y#6r)   NNNrb   rc   rd   r|   rM   r)   r'   rl   rl      s    7r)   rl   c                       e Zd ZddZy)	MyLoader2Nc                     | j                   j                  d      }|j                  d      }|j                  dd       |j                  d      }|j                  d       y )Nsubparser_name)rn   1z-xzGlobal.x2y)rv   add_subparsers
add_parserrw   )r%   rx   ry   rz   
subparsers
subparser1
subparser2s          r'   r|   zMyLoader2._add_arguments   s[    [[//5E/F
**3/
:6**3/
$r)   r}   r~   rM   r)   r'   r   r      s    %r)   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestArgParseCLc                    t               }|j                  dj                               }| j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  d       | j                  |j                  j                  d       |j                  dg      }| j                  t        |j                               dg       | j                  t        |j                  j                               dg       | j                  |j                  j                  d       y )N-f hi -b 10 -n wowhir   TwowGlobalbam)rl   r6   splitr   r   fooMyClassbarrp   r   r!   keysr%   r;   r&   s      r'   
test_basiczTestArgParseCL.test_basic   s    [ 4 : : <=**D1++R04(**E2(fkkm,xj9fmm0023eW=**E2r)   c                    t               }|j                  dj                               }| j                  |j                  d       | j                  |j
                  d       |j                  dj                               }| j                  |j                  d       | j                  |j                  j                  d       y )Nz	2 frobbler   frobblez1 -x frobbler   )r   r6   r   r   r   r   r   rN   r   s      r'   test_add_argumentsz!TestArgParseCL.test_add_arguments   s    [ 1 1 34..49- 4 4 67..4)4r)   c                 t   t        dj                               }|j                         }| j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  d       | j                  |j                  j                  d       y )Nr   )argvr   r   Tr   )
rl   r   r6   r   r   r   r   r   rp   r   r   s      r'   	test_argvzTestArgParseCL.test_argv   s    06689!**D1++R04(**E2r)   c                    t               }|j                  dj                               }| j                  t	        |j
                  j                               dg       | j                  |j
                  j                  d       | j                  |j                  ddg       | j                  |j                  g d       y )Nz%--list1 1 wow --list2 1 2 3 --list1 Br   r   rJ   B)rJ   rX   rZ   )
rl   r6   r   r   r!   r   r   r   list1list2r   s      r'   test_list_argszTestArgParseCL.test_list_args   s    [ G M M OPfmm0023eW=**E23x0y1r)   N)rb   rc   rd   r   r   r   r   rM   r)   r'   r   r      s    
3532r)   r   c                       e Zd Z ed      Z ed      Z ed      Z e e       d      Z	 e
d      Z e
 e        e       d      Z e
 e        e        e       dd      Zy)r$   Tr&   )	key_traitvalue_traitr&   )rf   rh   )r   per_key_traitsr&   N)rb   rc   rd   r
   	str_traitr   	int_traitr   
list_traitlist_of_intsr   
dict_traitdict_of_ints
dict_multirM   r)   r'   r$   r$      st    t$It$IT"J	$/LT"J)IL
 )99
 Jr)   r$   c                   F    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zy
)TestKeyValueCLc                     | j                  t              }|j                  dj                               }t	        |      }|j
                  dk(  sJ |j                  dk(  sJ |j                  ddgk(  sJ y )Nr/   z<--C.str_trait=all --C.int_trait=5 --C.list_trait=["hello",5]r   all   hello)klassr0   r6   r   r$   r   r   r   )r%   r;   r&   rF   s       r'   	test_evalzTestKeyValueCL.test_eval  sr    ZZCZ JPPR
 V{{e###{{a|||+++r)   c                 L   | j                  t              }t        j                  d      D cg c]  }|j	                  d      sd|dd  z    }}|j                  |      }|j                  dk(  sJ |j                  dk(  sJ |j                  j                  j                  dk(  sJ | j                  |j                  j                  j                  d       | j                  t               j                  |j                  j                   j                        d	       y c c}w )
Nr/   
zc.--rX   1020zlist(range(10))r   )r   r0   r4   r   
startswithr6   r   r   r   r   r   r   r    r
   from_stringr#   r$   )r%   r;   sr   r&   s        r'   r   zTestKeyValueCL.test_basic  s    ZZCZ &,ll4&8OALL<NquOO%xx4xx4zz~~##t+++--/@A..vxxzz/?/?@*M Ps   D!
D!c                 t   | j                  t              }g d}|j                  |      }t               }| j	                  |j                  |j                        t        j                  j                  d             | j	                  |j                  |j                        t        j                  j                  d             | j	                  |j                  |j                        t        j                  j                  d             | j	                  |j                  |j                        d       y )Nr/   )z--a=~/1/2/3z--b=~z--c=~/z--d="~/"~/1/2/3~z~/)r   r0   r6   r
   r   r   r   r1   path
expanduserr   rF   d)r%   r;   r   r&   us        r'   test_expanduserzTestKeyValueCL.test_expanduser'  s    ZZCZ =%Ivxx0"''2D2DY2OPvxx0"''2D2DS2IJvxx0"''2D2DT2JKvxx0$7r)   c                    | j                  t              }|j                  g d      }| j                  |j                  ddg       |j
                  dk(  sJ |j                  dk(  sJ |j                  g d      }| j                  |j                  dd	g       | j                  t              }|j                  g d
      }| j                  |j                  ddg       y )Nr/   )--a=5r   r   --c=10r   r   5r   )r   r   r   r   r   )extraz--a=2z--c=1r   -r   r   )r   r0   r6   r   
extra_argsr   rF   r   s      r'   test_extra_argszTestKeyValueCL.test_extra_args1  s    ZZCZ  =>c
3xx3xx4 9:((;<ZZCZ  FG#7r)   c                     | j                  t              }dg}|j                  |      }t        ||j                         | j                  |j                  d       y )Nr/      --a=épsîlön
   épsîlön)r   r0   r6   printr   r   r   r%   r;   r   r&   s       r'   test_unicode_argsz TestKeyValueCL.test_unicode_args>  sJ    ZZCZ  !%fbmm$<0r)   c                     | j                  t              }g d}|j                  |      }|j                  j                  ddgk(  sJ t        |      }|j                  ddgk(  sJ y )Nr/   )--C.list_traitrN   r   r   rN   r   r   r   r0   r6   r$   r   r%   r;   r   r&   rF   s        r'   test_list_appendzTestKeyValueCL.test_list_appendE  sa    ZZCZ =%xx""sCj000V||Sz)))r)   c                     | j                  t              }ddg}|j                  |      }t        |      }|j                  dgk(  sJ y )Nr/   r   rN   r   r   r   s        r'   test_list_single_itemz$TestKeyValueCL.test_list_single_itemM  sH    ZZCZ  #&%V||u$$$r)   c                     | j                  t              }g d}|j                  |      }t        |      }|j                  dddk(  sJ y )Nr/   )--C.dict_traitzx=5r   zy=10r   r   r   )rN   r   )r   r0   r6   r$   r   r   s        r'   	test_dictzTestKeyValueCL.test_dictT  sF    ZZCZ B%V||St4444r)   c                     | j                  t              }g d}|j                  |      }t        |      }|j                  dddk(  sJ y )Nr/   )--C.dict_of_intsz1=2r   z3=4r   rX      )rJ   rZ   )r   r0   r6   r$   r   r   s        r'   test_dict_key_traitsz#TestKeyValueCL.test_dict_key_traits[  sE    ZZCZ E%V~~Q1---r)   N)rb   rc   rd   r   r   r   r   r   r   r   r   r   r   r   rM   r)   r'   r   r     s5     E,	N881*%5.r)   r   c                       e Zd Z e       j	                  d      Z e e             j	                  dd      Z e       j	                  dd      Z e	       j	                  d      Z
y)CBaseTr   *r&   multiplicityrs   N)rb   rc   rd   r   tagr   r   r   rF   r   adictrM   r)   r'   r   r   c  sU    

$
AWY4c:A

$X
6AFJJdJ#Er)   r   c                       e Zd Z e       j	                  d      Z e       j	                  dd      Z e       j	                  dd      Zy)CSubTr   rt   r   r   N)	rb   rc   rd   r	   r   r   er   bdictrM   r)   r'   r   r   j  s<    4 A4c2AFJJdJ5Er)   r   c                   L    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zy)TestArgParseKVCLc                     | j                  t              }ddg}|j                  |t        d            }|j                  j
                  dk(  sJ y Nr/   -cr   zIPython.command_to_runrF   rx   r   r0   r6   dictIPythoncommand_to_runr   s       r'   test_no_cast_literalsz&TestArgParseKVCL.test_no_cast_literalss  K    ZZCZ c{d5M.NO~~,,333r)   c                     | j                  t              }ddg}|j                  |t        d            }|j                  j
                  dk(  sJ y r   r   r   s       r'   test_int_literalsz"TestArgParseKVCL.test_int_literalsz  r   r)   c                 8   | j                  t              }dg}|j                  |t        d            }t	        t        |             t	        |j
                         t	        |j                         | j                  |j                  j                  d       y )Nr/   r   A.a)r   r   r   )
r   r0   r6   r   r   r   rx   r   rQ   r   r   s       r'   test_unicode_aliasz#TestArgParseKVCL.test_unicode_alias  sl    ZZCZ  !dUm<d6lbmmbjj\2r)   c                 N   | j                  t              }g d}|j                  |t        dd            } G d dt              } ||	      }| j                  |j                  t        j                  j                  d
             | j                  |j                  d
       y )Nr/   )z-ar   z--bz	'~/1/2/3'r   zA.br   r   r   c                   0    e Zd Z ed      Z ed      Zy),TestArgParseKVCL.test_expanduser2.<locals>.ATr   N)rb   rc   rd   r
   r   r   rM   r)   r'   rQ   r    s    t$At$Ar)   rQ   r   r   )r   r0   r6   r   r   r   r   r1   r   r   r   )r%   r;   r   r&   rQ   r   s         r'   test_expanduser2z!TestArgParseKVCL.test_expanduser2  s    ZZCZ 4dUe.DE	% 	% Vbgg00;<i(r)   c                     | j                  t              }ddg}|j                  |t        d            }| j	                  |j
                  j                  d       y )Nr/   r   za=5zA.cr   r   )r   r0   r6   r   r   rQ   rF   r   s       r'   r   zTestArgParseKVCL.test_eval  sI    ZZCZ e}dUm<U+r)   c                    | j                  t        t        t        f      }ddd}dj	                         }|j                  ||      }|j                  g dk(  sJ |j                  j                  dd	gk(  sJ |j                  j                  d
dgk(  sJ | j                  |j                  j                  ddg       |j                  j                  dk(  sJ |j                  j                  dk(  sJ y )Nr0   rz   CBase.czCSub.e)a3a5z{--CBase.a A --CBase.a 2 --CBase.b 1 --CBase.b 3 --a3 AA --CBase.c BB --CSub.d 1 --CSub.d BBB --CSub.e 1 --CSub.e=bcd a b c r   r   r   rF   rQ   r   rJ   rZ   AABB)r   BBB)r   bcd)r   r0   r   r   r   r6   r   r   r   r   rF   r   r   r%   r;   rx   r   r&   s        r'   test_seq_traitsz TestArgParseKVCL.test_seq_traits  s    ZZC%Z7"(3E
%' 	 g6}}///||~~#s+++||~~!Q'''$6{{}},,,{{}},,,r)   c                     | j                  t        t        f      }ddi}ddg}|j                  ||      }| j	                  |j                  j
                  dg       y )Nr	  seqoptr
  z--seqopt r   )r   r0   r   r6   r   rF   r  s        r'   #test_seq_traits_single_empty_stringz4TestArgParseKVCL.test_seq_traits_single_empty_string  sV    ZZC%Z2Y'Bg6".r)   c                     | j                  t        t        t        f      }ddd}g d}|j	                  ||      }t        |      }|j
                  dd	d
dk(  sJ |j                  dddk(  sJ y )Nr	  zCBase.adictz
CSub.bdict)r#   E)	-Dzk1=v1z-D=k2=2r  zk3=v 3-Ezk=vr  z22=222r   r   v1r   zv 3)k1k2k3ri   222)k22)r   r0   r   r   r6   r   r   )r%   r;   rx   r   r&   rF   s         r'   test_dict_traitsz!TestArgParseKVCL.test_dict_traits  ss    ZZC%Z7%L9Vg6wwS>>>>ww51111r)   c                 <   ddi}| j                  t        |      }g d}g d}t        t        |      dz         D ]_  }|d d  }|f||| t	        t        |       }|j                  |      }|j                  j                  g dk(  sJ |j                  g dk(  r_J  y )NrF   zClass.trait)r0   rx   ))r   r   )z--Class.trait=2)z--c=3)z--Class.trait4r  rJ   )r   r   3r%  )
r   r0   r"   lenr!   r   r6   Classtraitr   )	r%   rx   r;   assignmentspositionalsidx
argv_partsr   r&   s	            r'   test_mixed_seq_positionalz*TestArgParseKVCL.test_mixed_seq_positional  s    &ZZCZ1]%[)A-. 	4C$QJ#..Js3z*+D^^D)F<<%%)======O333	4r)   c                     | j                  t              }g d}t        j                  t              5  |j                  |       ddd       y# 1 sw Y   yxY w)zFSplitting positionals across flags is no longer allowed in traitlets 5r/   )r   z--Class.trait=5r   N)r   r0   pytestraises
SystemExitr6   )r%   r;   r   s      r'   test_split_positionalz&TestArgParseKVCL.test_split_positional  sD    ZZCZ ,]]:& 	!NN4 	! 	! 	!s   AAN)rb   rc   rd   r   r   r   r   r  r  r   r  r  r#  r.  r3  rM   r)   r'   r   r   p  s9    "E443),- /24!r)   r   c                       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d Zd Zd Zd Zd Zd Zd Zd Zd Zy)
TestConfigc                     t               }d|_        | j                  |j                  d       | j                  d|v d       y )Nr   r   F)r   r   r   )r%   rF   s     r'   test_setgetzTestConfig.test_setget  s8    Hb!5)r)   c                 j   t               }| j                  d|       |j                  d      rJ |j                  }d|_        | j                  d|       |j                  d      sJ | j                  |j                  j                  d       |`| j                  |j                  t                      y )NrQ   r   )r   assertNotIn_has_sectionrQ   r   assertInr   )r%   rF   rQ   s      r'   test_auto_sectionzTestConfig.test_auto_section  s    Ha >>#&&&CCc1~~c"""*-Cfh'r)   c                    t               }t               }d|_        d|j                  _        |j                  |       | j	                  |j                  j                  d       | j	                  |j                  d       d|j
                  _        |j                  |       | j	                  |j
                  j                  d       y )Nr   )r   r   r   merger   r   r%   c1c2s      r'   test_merge_doesnt_existz"TestConfig.test_merge_doesnt_exist  s    XX

R($

R(r)   c                 r   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       y )Nr      r   (   )r   r   r   r   r   r>  r   r    r?  s      r'   test_merge_existszTestConfig.test_merge_exists  s    XX




R(R(R(


,r)   c                    t               }d|j                  _        d|j                  _        d|_        t        d      |_        t        j                  d      |j                  _
        t        j                  d      |j                  _        t        j                  |      }| j                  ||       | j!                  ||u       | j!                  |j                  |j                  u       | j!                  |j                  |j                  u       | j!                  |j                  j                  |j                  j                  u        | j!                  |j                  j                  |j                  j                  u        y )Nr   rD  asdftest)r   r   r   r   r   r"   r   loggingLoggerTestlogger	getLogger
get_loggercopydeepcopyr   
assertTruer?  s      r'   test_deepcopyzTestConfig.test_deepcopy  s   X

Ry /$..v6]]2R "%bff,-rww./"''..89**bgg.@.@@Ar)   c                 &    t               }d|_        y )Njson)r   formatr%   r@  s     r'   test_builtinzTestConfig.test_builtin  s    X	r)   c                     t        dddii      }| j                  |j                  j                  t                | j                  |j                  j                  d       y Nr   r   rJ   )r   r   r   	__class__r   rW  s     r'   test_fromdictzTestConfig.test_fromdict  sG    UUAJ'())62Q'r)   c                     t               }t        dddii      }|j                  |       | j                  |j                  j                  t                | j                  |j                  j
                  d       y rZ  )r   r>  r   r   r[  r   r?  s      r'   test_fromdictmergezTestConfig.test_fromdictmerge  sY    XUUAJ'(
))62Q'r)   c                    t        dddii      }t        dddii      }|j                  |       | j                  |j                  j                  t                | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  d|j                         y )Nr   bazrX   r   rJ   )r   r>  r   r   r[  r   r`  r9  r?  s      r'   test_fromdictmerge2zTestConfig.test_fromdictmerge2"  s    UUAJ'(UUAJ'(
))62Q'Q''r)   c                     t        dddii      }t        dddii      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )Nr   r`  rX   r   rJ   zFoo.bazzFoo.bar)r   r;  r9  r?  s      r'   test_containszTestConfig.test_contains+  sb    UUAJ'(UUAJ'(eR i$i$B'r)   c                     t               }d|j                  _        t        j                  |      }t        j
                  |      }| j                  ||       y NrJ   )r   r   r   pickledumpsloadsr   )r%   rU   pcfgcfg2s       r'   test_pickle_configzTestConfig.test_pickle_config3  s@    h||C ||D!s#r)   c                     t               }| j                  d|       |j                  }t        |t               sJ | j	                  d|       y Nr   )r   r9  r   
isinstancer;  r%   rU   r   s      r'   test_getattr_sectionzTestConfig.test_getattr_section:  s@    h$gg#v&&&eS!r)   c                     t               }| j                  d|       |d   }t        |t               sJ | j                  d|       y rm  )r   r9  rn  r;  ro  s      r'   test_getitem_sectionzTestConfig.test_getitem_sectionA  s@    h$%j#v&&&eS!r)   c                     t               }| j                  d|       |j                  }t        |t              sJ | j                  d|       y Nr   )r   r9  r   rn  r   r;  r%   rU   r   s      r'   test_getattr_not_sectionz#TestConfig.test_getattr_not_sectionH  s@    h$gg#///eS!r)   c                    t               }| j                  d|       | j                  t              5  |j                  }d d d        | j                  d|       | j                  t        |      d       y # 1 sw Y   7xY w)N_repr_html_r   )r   r9  rR   AttributeErrorrx  r   r'  )r%   rU   rG   s      r'   test_getattr_private_missingz'TestConfig.test_getattr_private_missingO  si    h,~. 	 A	 ,S1%	  	 s   A55A>c                 8   t               }|j                  j                  j                  d       t	        |      }d|v sJ d|v sJ d|v sJ d|vsJ |j                  j                  j                  dg       t	        |      }t	        ddg      |v sJ d|v sJ y )NrJ   z<LazyConfigValueextendz [1]}>zvalue=r   )r   r(  lazyrs   repr	get_value)r%   rU   cfg_reprrepr2s       r'   test_lazy_config_reprz TestConfig.test_lazy_config_reprW  s    h		a 9!X---8###8###x'''		  !%S	QF|u$$$5   r)   c                     t               }| j                  d|       |d   }t        |t              sJ | j	                  d|       y rt  )r   r9  rn  r   r;  ru  s      r'   test_getitem_not_sectionz#TestConfig.test_getitem_not_sectiond  s@    h$%j#///eS!r)   c                    t               }t               }g |j                  _        |j                  |       |j                  j                  j	                  d       | j                  |j                  |j                         | j                  |j                  j                  dg       | j                  |j                  j                  dg       y re  )r   r   r)  r>  rs   assertIsr   )r%   rF   rA  s      r'   test_merge_no_copieszTestConfig.test_merge_no_copiesk  s    HX	
AaeeRVV$qc*s+r)   c                 B   t               }t               }dg|j                  _        |j                  j                  j                  d       t               }|j	                  |       |j	                  |       | j                  |j                  j                  ddg       y)z
        With multiple config files (systemwide and users), we want compounding.

        If systemwide overwirte and user append, we want both in the right
        order.
        rJ   rX   N)r   r   r)  rs   r>  r   r%   r@  rA  rF   s       r'   test_merge_multi_lazyz TestConfig.test_merge_multi_lazyu  sn     XXs
AH		q!f-r)   c                 |   t               }t               }|j                  j                  j                  d       |j                  j                  j                  d       t               }|j	                  |       |j	                  |       | j                  |j                  j                  j                  ddg       y)z
        With multiple config files (systemwide and users), we want compounding.

        If both are lazy we still want a lazy config.
        rJ   rX   N)r   r   r)  rs   r>  r   _extendr  s       r'   test_merge_multi_lazyIIz"TestConfig.test_merge_multi_lazyII  s}     XX
A
AH		,,q!f5r)   c                 D   t               }t               }dg|j                  _        |j                  j                  j                  dg       t               }|j	                  |       |j	                  |       | j                  |j                  j                  ddg       y)z
        With multiple config files (systemwide and users), we want compounding.

        Prepend should prepend in the right order.
        rJ   r   N)r   r   r)  prependr>  r   r  s       r'   test_merge_multi_lazy_IIIz$TestConfig.test_merge_multi_lazy_III  sp     XXs
aS!H		q!f-r)   c                    t               }t               }|j                  j                  j                  dg       |j                  j                  j                  dg       t               }|j	                  |       |j	                  |       | j                  |j                  j                  j                  ddg       y)z
        With multiple config files (systemwide and users), we want compounding.

        Both prepending should be lazy
        rJ   r   N)r   r   r)  r  r>  r   _prependr  s       r'   test_merge_multi_lazy_IVz#TestConfig.test_merge_multi_lazy_IV  s     XX
aS!
aS!H		--1v6r)   c                 P   t               }t               }ddd|j                  _        |j                  j                  j                  ddd       t               }|j	                  |       |j	                  |       | j                  |j                  j                  dddd       y)z
        With multiple config files (systemwide and users), we want compounding.

        dict update shoudl be in the right order.
        rJ      r   zr   r  )r   r   r  Nr   r   r)  updater>  r   r  s       r'   test_merge_multi_lazy_update_Iz)TestConfig.test_merge_multi_lazy_update_I  sy     XXR(
!!,-H		AAB&?@r)   c                 N   t               }t               }|j                  j                  j                  ddd       ddd|j                  _        t               }|j	                  |       |j	                  |       | j                  |j                  j                  ddd       y)
        With multiple config files (systemwide and users), we want compounding.

        Later dict overwrite lazyness
        r   rJ   r  r  r  Nr  r  s       r'   test_merge_multi_lazy_update_IIz*TestConfig.test_merge_multi_lazy_update_II  sw     XX
!!,-R(H		AB&78r)   c                    t               }t               }|j                  j                  j                  ddd       |j                  j                  j                  ddd       t               }|j	                  |       |j	                  |       | j                  |j                  j                  j                  dddd       y)r  r   rJ   r  r  r  )r   r  r   N)r   r   r)  r  r>  r   _updater  s       r'    test_merge_multi_lazy_update_IIIz+TestConfig.test_merge_multi_lazy_update_III  s     XX
!!,-
!"-.H		,,ABQ.GHr)   N)rb   rc   rd   r7  r<  rB  rF  rS  rX  r\  r^  ra  rc  rk  rp  rr  rv  rz  r  r  r  r  r  r  r  r  r  r  rM   r)   r'   r5  r5    s    *
(
)-B (
((($"""&!",.&6$.$7$A$9$Ir)   r5  )-__doc__rP  r1   rf  	itertoolsr   tempfiler   unittestr   r0  	traitletsr   r   r   r	   r
   traitlets.configr   traitlets.config.loaderr   r   r   r   r   r   r   r4   r@   r_   rJ  rN  r0   setLevelr   rj   rl   r   r   r$   r   r   r   r   r5  rM   r)   r'   <module>r     s    '
  	      9 9 )  
	,	 g	" Qo od7$ 7%$ %$2X $2N *Q.X Q.h$L $65 6a!~ a!H^I ^Ir)   