
    KcX                        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 !                    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,dS )"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                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestFileCLc                    |                      |j        d           |                      |j        d           |                      |j        j        j        d           |                      |j        j        j        t          t          d                               |                      |j	        j
        j        d           d S )N
      hi there)assertEqualabFooBarvalueBamlistrangeDC)selfconfigs     Blib/python3.11/site-packages/traitlets/config/tests/test_loader.py_check_confzTestFileCL._check_confG   s    2&&&2&&&-r222-tE"II???):66666    c                 2   t          dd          \  }}t          j        |d          }|                    t                     |                                 t          |t                    }|                                }| 	                    |           d S )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99	EIb#					3///!!     r)   c                 2   t          dd          \  }}t          j        |d          }|                    t                     |                                 t          |t                    }|                                }| 	                    |           d S 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Ib#						!%S111!!     r)   c                    t          dd          \  }}t          j        |d          }|                    d           |                                 t          |t                    }d}|5 }||j        _        d d d            n# 1 swxY w Y   | 	                    |j
        j        j        |           t          |t                    }| 	                    |j
        j        j        |           d S )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Ib#					!%S111! 	#1"AHN	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	)/777 !C000)/77777s   -BB
B
c                    t          dd          \  }}t          j        |d          }|                    d           |                                 t          |t                    5 }d|j        _        d d d            n# 1 swxY w Y   | 	                    t                    5  t          |t                    5 }d |j        _        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |t                    }|                                }|j        j        dk    sJ d	|j        vsJ d S )
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Ib#					!%S111 	VFHJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	1 	1%e555 1%0["1 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 &e555  ""uw!|#%''''''sH   )BB	B'C/>CC/C	C/C	 C//C36C3c                    t                      }t                      }|                     |                    |          i            d|j        _        d|j        _        |                     |                    |          i            d|j        _        |                     |                    |          i            d|j        _        |                     |                    |          dddii           |                     |                    |          dddii           d|j        _        |                     |                    |          ddd	d
i           d S )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\   HHHHa"---

a"---
a"---
LLOO2	
 	
 	
 	LLOO2	
 	
 	
 
LLOO22 	
 	
 	
 	
 	
r)   c                 n   t          dd          \  }}t          j        |d          }|                    t                     |                                 t          |t                    }|                     t                    5  |
                                 d d d            d S # 1 swxY w Y   d S r>   )r   r1   r2   r3   	json2filer5   r   r0   rR   
ValueErrorr6   )r%   r8   r9   r:   r;   s        r'   test_v2raisezTestFileCL.test_v2raise   s    GN;;;	EIb#						!%S111z** 	 	NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B**B.1B.N)
__name__
__module____qualname__r(   r<   rA   rH   rV   r]   ra   rM   r)   r'   r   r   F   s~        7 7 7! ! !! ! !8 8 8(( ( ($#
 #
 #
J    r)   r   c                 `    	 t          |           S # t          $ r t          |           cY S w xY wrL   )int	Exceptionstr)vs    r'   _parse_int_or_strrj      s<    1vv   1vvs    --c                       e Zd ZddZdS )	MyLoader1Nc                 f   | j         }|                    dddt                     |                    ddt                     |                    ddd	
           |                    dt                     |                    ddt                     |                    ddt                     d S )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   s    K	tW<cBBB	t-c:::	t#l;;;	|#...	y8IJJJ	y#66666r)   NNNrb   rc   rd   r|   rM   r)   r'   rl   rl      s(        7 7 7 7 7 7r)   rl   c                       e Zd ZddZdS )	MyLoader2Nc                     | j                             d          }|                    d          }|                    dd           |                    d          }|                    d           d S )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   st    [//5E/FF
**3//
:66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dS )TestArgParseCLc                    t                      }|                    d                                          }|                     |j        j        d           |                     |j        j        d           |                     |j        d           |                     |j        j	        d           |                    dg          }|                     t          |                                          dg           |                     t          |j                                                  dg           |                     |j        j	        d           d S )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11+R0004(((*E222((fkkmm,,xj999fm002233eW===*E22222r)   c                    t                      }|                    d                                          }|                     |j        d           |                     |j        d           |                    d                                          }|                     |j        d           |                     |j        j        d           d S )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 344.4449--- 4 4 6 677.444)44444r)   c                 h   t          d                                          }|                                }|                     |j        j        d           |                     |j        j        d           |                     |j        d           |                     |j        j	        d           d S )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8999!!*D111+R0004(((*E22222r)   c                    t                      }|                    d                                          }|                     t	          |j                                                  dg           |                     |j        j        d           |                     |j        ddg           |                     |j	        g d           d S )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 OPPfm002233eW===*E2223x000yyy11111r)   N)rb   rc   rd   r   r   r   r   rM   r)   r'   r   r      sP        
3 
3 
35 5 53 3 32 2 2 2 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dS )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$      s        t$$$It$$$IT"""J4		$///LT"""J4'))GII  L
 '))799799
 
   JJJr)   r$   c                   H    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
S )TestKeyValueCLc                     |                      t                    }|                    d                                          }t	          |          }|j        dk    sJ |j        dk    sJ |j        ddgk    sJ d S )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  s    ZZCZ  JPPRR
 
 V{e####{a||++++++r)   c                    |                      t                    }d t                              d          D             }|                    |          }|j        dk    sJ |j        dk    sJ |j        j        j	        dk    sJ | 
                    |j        j        j	        d           | 
                    t                                          |j        j        j	                  d           d S )Nr/   c                 R    g | ]$}|                     d           d|dd         z   %S )zc.--rX   N)
startswith).0ss     r'   
<listcomp>z-TestKeyValueCL.test_basic.<locals>.<listcomp>  s5    OOOALL<N<NOquOOOr)   
1020zlist(range(10))r   )r   r0   r4   r   r6   r   r   r   r   r   r   r    r
   from_stringr#   r$   r%   r;   r   r&   s       r'   r   zTestKeyValueCL.test_basic  s    ZZCZ  OOfll4&8&8OOO%%x4x4z~#t++++-/@AAA..vxz/?@@*MMMMMr)   c                    |                      t                    }g d}|                    |          }t                      }|                     |                    |j                  t          j        	                    d                     |                     |                    |j
                  t          j        	                    d                     |                     |                    |j                  t          j        	                    d                     |                     |                    |j                  d           d S )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  ===%%IIvx00"'2D2DY2O2OPPPvx00"'2D2DS2I2IJJJvx00"'2D2DT2J2JKKKvx00$77777r)   c                    |                      t                    }|                    g d          }|                     |j        ddg           |j        dk    sJ |j        dk    sJ |                    g d          }|                     |j        dd	g           |                      t                    }|                    g d
          }|                     |j        ddg           d S )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33x3x4 9 9 9::((;<<<ZZCZ   F F FGG#77777r)   c                     |                      t                    }dg}|                    |          }t          ||j                   |                     |j        d           d S )Nr/      --a=épsîlön
   épsîlön)r   r0   r6   printr   r   r   r   s       r'   test_unicode_argsz TestKeyValueCL.test_unicode_args>  s^    ZZCZ   !%%fbm$$$<00000r)   c                     |                      t                    }g d}|                    |          }|j        j        ddgk    sJ t          |          }|j        ddgk    sJ d S )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  sx    ZZCZ  ===%%x"sCj0000V|Sz))))))r)   c                     |                      t                    }ddg}|                    |          }t          |          }|j        dgk    sJ d S )Nr/   r   rN   r   r   r   s        r'   test_list_single_itemz$TestKeyValueCL.test_list_single_itemM  s[    ZZCZ   #&%%V|u$$$$$$r)   c                     |                      t                    }g d}|                    |          }t          |          }|j        dddk    sJ d S )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  sb    ZZCZ  BBB%%V|St44444444r)   c                     |                      t                    }g d}|                    |          }t          |          }|j        dddk    sJ d S )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[  s`    ZZCZ  EEE%%V~Q1------r)   N)rb   rc   rd   r   r   r   r   r   r   r   r   r   r   r   rM   r)   r'   r   r     s         E, , ,	N 	N 	N8 8 88 8 81 1 1* * *% % %5 5 5. . . . .r)   r   c                      e Zd Z e                                d          Z e e                                          dd          Z e                                dd          Z e	                                d          Z
dS )CBaseTr   *r&   multiplicityrs   N)rb   rc   rd   r   tagr   r   r   rF   r   adictrM   r)   r'   r   r   c  s        

$
AWWYY4c::A

$X
66ADFFJJdJ##EEEr)   r   c                       e Zd Z e                                d          Z e                                dd          Z e                                dd          ZdS )CSubTr   rt   r   r   N)	rb   rc   rd   r	   r   r   er   bdictrM   r)   r'   r   r   j  s]        4  A4c22ADFFJJdJ55EEEr)   r   c                   N    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dS )TestArgParseKVCLc                     |                      t                    }ddg}|                    |t          d                    }|j        j        dk    sJ d S 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  [    ZZCZ  c{d5M.N.N.NOO~,333333r)   c                     |                      t                    }ddg}|                    |t          d                    }|j        j        dk    sJ d S r   r   r   s       r'   test_int_literalsz"TestArgParseKVCL.test_int_literalsz  r   r)   c                 T   |                      t                    }dg}|                    |t          d                    }t	          t          |                     t	          |j                   t	          |j                   |                     |j        j	        d           d S )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  s    ZZCZ   !dUmmm<<d6llbmbj\22222r)   c                 t   |                      t                    }g d}|                    |t          dd                    } G d dt                    } ||	          }|                     |j        t          j        	                    d
                     |                     |j
        d
           d S )Nr/   )z-ar   z--bz	'~/1/2/3'r  zA.br   r   r   c                   >    e Zd Z ed          Z ed          ZdS ),TestArgParseKVCL.test_expanduser2.<locals>.ATr   N)rb   rc   rd   r
   r   r   rM   r)   r'   rQ   r    s2        t$$$At$$$AAAr)   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44dUe.D.D.DEE	% 	% 	% 	% 	% 	% 	% 	% AVbg00;;<<<i(((((r)   c                     |                      t                    }ddg}|                    |t          d                    }|                     |j        j        d           d S )Nr/   r   za=5zA.cr   r   )r   r0   r6   r   r   rQ   rF   r   s       r'   r   zTestArgParseKVCL.test_eval  s[    ZZCZ  e}dUmmm<<U+++++r)   c                    |                      t          t          t          f          }ddd}d                                }|                    ||          }|j        g dk    sJ |j        j        dd	gk    sJ |j        j        d
dgk    sJ | 	                    |j        j
        ddg           |j        j        dk    sJ |j        j        dk    sJ d S )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7"(33E
%'' 	 g66}////|~#s++++|~!Q''''$666{},,,,{},,,,,,r)   c                     |                      t          t          f          }ddi}ddg}|                    ||          }|                     |j        j        dg           d S )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  sd    ZZC%Z22Y'Bg66".....r)   c                     |                      t          t          t          f          }ddd}g d}|                    ||          }t          |          }|j        dd	d
dk    sJ |j        dddk    sJ d S )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  s    ZZC%Z77%L99VVVg66wS>>>>>>w511111111r)   c                 Z   ddi}|                      t          |          }g d}g d}t          t          |          dz             D ]b}|d d          }|f|||<   t	          t          |           }|                    |          }|j        j        g dk    sJ |j	        g dk    sJ cd S )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1]]]%oo[))A-.. 	4 	4C$QQQJ#..Js3wz*++D^^D))F<%)=)=)======OOO33333	4 	4r)   c                     |                      t                    }g d}t          j        t                    5  |                    |           ddd           dS # 1 swxY w Y   dS )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  s    ZZCZ  ,,,]:&& 	! 	!NN4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AA #A N)rb   rc   rd   r   r   r   r  r  r	  r   r  r  r&  r1  r6  rM   r)   r'   r   r   p  s        "E4 4 44 4 43 3 3) ) ), , ,- - - / / /2 2 24 4 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dS )
TestConfigc                     t                      }d|_        |                     |j        d           |                     d|v d           d S )Nr   r   F)r   r   r   )r%   rF   s     r'   test_setgetzTestConfig.test_setget  sJ    HHb!!!5)))))r)   c                    t                      }|                     d|           |                    d          rJ |j        }d|_        |                     d|           |                    d          sJ |                     |j        j        d           |`|                     |j        t                                 d S )NrQ   r   )r   assertNotIn_has_sectionrQ   r   assertInr   )r%   rF   rQ   s      r'   test_auto_sectionzTestConfig.test_auto_section  s    HHa   >>#&&&&&Cc1~~c"""""*---Cfhh'''''r)   c                    t                      }t                      }d|_        d|j        _        |                    |           |                     |j        j        d           |                     |j        d           d|j        _        |                    |           |                     |j        j        d           d S )Nr   )r   r   r   merger   r   r%   c1c2s      r'   test_merge_doesnt_existz"TestConfig.test_merge_doesnt_exist  s    XXXX

R((($$$

R(((((r)   c                    t                      }t                      }d|j        _        d|j        _        d|j        _        d|j        _        |                    |           |                     |j        j        d           |                     |j        j        d           |                     |j        j        d           d|j        j        _        |                    |           |                     |j        j        j        d           d S )Nr      r   (   )r   r   r   r   r   rA  r   r    rB  s      r'   test_merge_existszTestConfig.test_merge_exists  s    XXXX




R(((R(((R(((

,,,,,r)   c                    t                      }d|j        _        d|j        _        d|_        t          d          |_        t          j        d          |j	        _
        t          j        d          |j	        _        t          j        |          }|                     ||           |                     ||u           |                     |j        |j        u           |                     |j	        |j	        u           |                     |j	        j
        |j	        j
        u            |                     |j	        j        |j	        j        u            d S )Nr   rG  asdftest)r   r   r   r   r   r"   r   loggingLoggerTestlogger	getLogger
get_loggercopydeepcopyr   
assertTruerB  s      r'   test_deepcopyzTestConfig.test_deepcopy  s   XX

Ryy //$.v66]2R   "%%%bf,---rw.///"'.8999*bg.@@AAAAAr)   c                 0    t                      }d|_        d S )Njson)r   formatr%   rC  s     r'   test_builtinzTestConfig.test_builtin  s    XX			r)   c                     t          dddii          }|                     |j        j        t                      |                     |j        j        d           d S Nr   r   rJ   )r   r   r   	__class__r   rZ  s     r'   test_fromdictzTestConfig.test_fromdict  sS    UUAJ'(()6222Q'''''r)   c                     t                      }t          dddii          }|                    |           |                     |j        j        t                      |                     |j        j        d           d S r]  )r   rA  r   r   r^  r   rB  s      r'   test_fromdictmergezTestConfig.test_fromdictmerge  sk    XXUUAJ'((
)6222Q'''''r)   c                 |   t          dddii          }t          dddii          }|                    |           |                     |j        j        t                      |                     |j        j        d           |                     |j        j        d           |                     d|j                   d S )Nr   bazrX   r   rJ   )r   rA  r   r   r^  r   rc  r<  rB  s      r'   test_fromdictmerge2zTestConfig.test_fromdictmerge2"  s    UUAJ'((UUAJ'((
)6222Q'''Q''''''''r)   c                    t          dddii          }t          dddii          }|                     d|           |                     d|           |                     d|           |                     d|           d S )Nr   rc  rX   r   rJ   zFoo.bazzFoo.bar)r   r>  r<  rB  s      r'   test_containszTestConfig.test_contains+  s    UUAJ'((UUAJ'((eR   i$$$i$$$B'''''r)   c                     t                      }d|j        _        t          j        |          }t          j        |          }|                     ||           d S NrJ   )r   r   r   pickledumpsloadsr   )r%   rU   pcfgcfg2s       r'   test_pickle_configzTestConfig.test_pickle_config3  sN    hh|C  |D!!s#####r)   c                     t                      }|                     d|           |j        }t          |t                     sJ |                     d|           d S Nr   )r   r<  r   
isinstancer>  r%   rU   r   s      r'   test_getattr_sectionzTestConfig.test_getattr_section:  sX    hh$$$g#v&&&&&eS!!!!!r)   c                     t                      }|                     d|           |d         }t          |t                     sJ |                     d|           d S rp  )r   r<  rq  r>  rr  s      r'   test_getitem_sectionzTestConfig.test_getitem_sectionA  sZ    hh$$$%j#v&&&&&eS!!!!!r)   c                     t                      }|                     d|           |j        }t          |t                    sJ |                     d|           d S Nr   )r   r<  r   rq  r   r>  r%   rU   r   s      r'   test_getattr_not_sectionz#TestConfig.test_getattr_not_sectionH  sX    hh$$$g#/////eS!!!!!r)   c                 2   t                      }|                     d|           |                     t                    5  |j        }d d d            n# 1 swxY w Y   |                     d|           |                     t          |          d           d S )N_repr_html_r   )r   r<  rR   AttributeErrorr{  r   r*  )r%   rU   rG   s      r'   test_getattr_private_missingz'TestConfig.test_getattr_private_missingO  s    hh,,,~.. 	  	 A	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ,,,S1%%%%%s   AAAc                 B   t                      }|j        j                            d           t	          |          }d|v sJ d|v sJ d|v sJ d|vsJ |j        j                            dg           t	          |          }t	          ddg          |v sJ d|v sJ d S )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    hh	a   99!X----8####8####x''''	  !%%%S		QF||u$$$$5      r)   c                     t                      }|                     d|           |d         }t          |t                    sJ |                     d|           d S rw  )r   r<  rq  r   r>  rx  s      r'   test_getitem_not_sectionz#TestConfig.test_getitem_not_sectiond  sZ    hh$$$%j#/////eS!!!!!r)   c                    t                      }t                      }g |j        _        |                    |           |j        j                            d           |                     |j        |j                   |                     |j        j        dg           |                     |j        j        dg           d S rh  )r   r   r,  rA  rs   assertIsr   )r%   rF   rD  s      r'   test_merge_no_copieszTestConfig.test_merge_no_copiesk  s    HHXX	
AaeRV$$$qc***s+++++r)   c                 J   t                      }t                      }dg|j        _        |j        j                            d           t                      }|                    |           |                    |           |                     |j        j        ddg           dS )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   rA  r   r%   rC  rD  rF   s       r'   test_merge_multi_lazyz TestConfig.test_merge_multi_lazyu  s     XXXXs
AHH		q!f-----r)   c                 x   t                      }t                      }|j        j                            d           |j        j                            d           t                      }|                    |           |                    |           |                     |j        j        j        ddg           dS )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   rA  r   _extendr  s       r'   test_merge_multi_lazyIIz"TestConfig.test_merge_multi_lazyII  s     XXXX
A
AHH		,q!f55555r)   c                 L   t                      }t                      }dg|j        _        |j        j                            dg           t                      }|                    |           |                    |           |                     |j        j        ddg           dS )z
        With multiple config files (systemwide and users), we want compounding.

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

        Both prepending should be lazy
        rJ   r   N)r   r   r,  r  rA  r   _prependr  s       r'   test_merge_multi_lazy_IVz#TestConfig.test_merge_multi_lazy_IV  s     XXXX
aS!!!
aS!!!HH		-1v66666r)   c                 X   t                      }t                      }ddd|j        _        |j        j                            ddd           t                      }|                    |           |                    |           |                     |j        j        dddd           dS )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,  updaterA  r   r  s       r'   test_merge_multi_lazy_update_Iz)TestConfig.test_merge_multi_lazy_update_I  s     XXXXR((
!!,,---HH		AAB&?&?@@@@@r)   c                 V   t                      }t                      }|j        j                            ddd           ddd|j        _        t                      }|                    |           |                    |           |                     |j        j        ddd           dS )
        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  s     XXXX
!!,,---R((HH		AB&7&788888r)   c                    t                      }t                      }|j        j                            ddd           |j        j                            ddd           t                      }|                    |           |                    |           |                     |j        j        j        dddd           dS )r  r   rJ   r  r  r  )r   r  r   N)r   r   r,  r  rA  r   _updater  s       r'    test_merge_multi_lazy_update_IIIz+TestConfig.test_merge_multi_lazy_update_III  s     XXXX
!!,,---
!"--...HH		,ABQ.G.GHHHHHr)   N)rb   rc   rd   r:  r?  rE  rI  rV  r[  r_  ra  rd  rf  rn  rs  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  rM   r)   r'   r8  r8    s       * * *
( 
( 
(
) 
) 
)- - -B B B   ( ( (
( ( (( ( (( ( ($ $ $" " "" " "" " "& & &! ! !" " ", , ,. . .&6 6 6$. . .$7 7 7$A A A$9 9 9$I I I I Ir)   r8  )-__doc__rS  r1   ri  	itertoolsr   tempfiler   unittestr   r3  	traitletsr   r   r   r	   r
   traitlets.configr   traitlets.config.loaderr   r   r   r   r   r   r   r4   r@   r_   rM  rQ  r0   setLevelr   rj   rl   r   r   r$   r   r   r   r   r8  rM   r)   r'   <module>r     s-   ' '
  				                     9 9 9 9 9 9 9 9 9 9 9 9 9 9 ) ) ) ) ) )                 
	,	 g	"" Qo o o o o o o od  7 7 7 7 7$ 7 7 7% % % % %$ % % %$2 $2 $2 $2 $2X $2 $2 $2N       *Q. Q. Q. Q. Q.X Q. Q. Q.h$ $ $ $ $L $ $ $6 6 6 6 65 6 6 6a! a! a! a! a!~ a! a! a!H^I ^I ^I ^I ^I ^I ^I ^I ^I ^Ir)   