
    KcW                     `   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZmZmZ d
dlmZ  G d de	          ZdZdZ e!                    dd          Ze !                    dd          Z  G d de	          Z" G d de"          Z#d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* Z/dS )+z'Tests for traitlets.config.configurable    N)TestCase)mark)Application)ConfigurableLoggingConfigurableSingletonConfigurable)Config)
get_logger)CaselessStrEnumDictEnumFloat	FuzzyEnumIntegerListSetUnicode_deprecations_shownvalidate   )expected_warningsc                       e Zd Z edd                              d          Z edd                              d          Z ed          Z	d	S )
MyConfigurable   The integer a.helpTconfigg      ?zThe integer b.	no configN)
__name__
__module____qualname__r   tagar   br   c     Hlib/python3.11/site-packages/traitlets/config/tests/test_configurable.pyr   r       si        ()))--T-::Ac()))--T-::AAAAr)   r   zMyConfigurable(Configurable) options
------------------------------------
--MyConfigurable.a=<Integer>
    The integer a.
    Default: 1
--MyConfigurable.b=<Float>
    The integer b.
    Default: 1.0zMyConfigurable(Configurable) options
------------------------------------
--MyConfigurable.a=<Integer>
    The integer a.
    Current: 5
--MyConfigurable.b=<Float>
    The integer b.
    Current: 4.0z	<Integer>z<Int>c                      e Zd Z edd                              d          Z ed                              d          Z eg                               d          Z	 e
                                d          ZdS )Foor   r   r   Tr   nopeN)r!   r"   r#   r   r$   r%   r   r&   r   flistr   fdictr(   r)   r*   r,   r,   =   s        ()))--T-::A4((ADHHLLL%%EDFFJJdJ##EEEr)   r,   c                      e Zd Z edd                              d          Z ed                              d          Z eg                               dd	          Z	 eg d
                              dd	          Z
 e                                dd	          Z edddd                              dd	          ZdS )BargotitzThe string b.r   Fr   zThe string c.T+)r   multiplicity)   r      r%   r&   r'   )r   0r6   N)r!   r"   r#   r   r$   r&   r   r'   r   bsetbset_valuesr   bdictbdict_valuesr(   r)   r*   r1   r1   D   s        o...22%2@@A?###''t'44A3r77;;d;55D#iii..$$Ds$CCKDFFJJdJ55E4Ccc223377tRU7VVLLLr)   r1   zFoo(Configurable) options
-------------------------
--Foo.a=<Int>
    The integer a.
    Default: 0
--Foo.b=<Unicode>
    Default: 'nope'
--Foo.fdict=<key-1>=<value-1>...
    Default: {}
--Foo.flist=<list-item-1>...
    Default: []a  Bar(Foo) options
----------------
--Bar.a=<Int>
    The integer a.
    Default: 0
--Bar.bdict <key-1>=<value-1>...
    Default: {}
--Bar.bdict_values <key-1>=<value-1>...
    Default: {1: 'a', '0': 'b', 5: 'c'}
--Bar.bset <set-item-1>...
    Default: set()
--Bar.bset_values <set-item-1>...
    Default: {1, 2, 5}
--Bar.c=<Float>
    The string c.
    Default: 0.0
--Bar.fdict=<key-1>=<value-1>...
    Default: {}
--Bar.flist=<list-item-1>...
    Default: []c                   J    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S )TestConfigurablec                     t                      }t          |j                  }t          |j                  }|                     |j        |j                   |                     |j        |j                   d S )Nr   )r   r   assertEqual)selfc1c2c3s       r*   test_defaultzTestConfigurable.test_defaultp   si    ^^++++++BI...BI.....r)   c                    t                      }d|_        d|_        t          |          }t          |j                  }t          |j                  }|                     |j        |           |                     |j        |           |                     |j        |           |                     |j        |u            |                     |j        |u            |                     |j        |u            |                     |j        |j        u            |                     |j        |j        u            d S )Nfoobarr   )r	   rF   rG   r   r   r?   
assertTrue)r@   r   rA   rB   rC   s        r*   test_customzTestConfigurable.test_customw   s   

(((++++++F+++F+++F+++	V+,,,	V+,,,	V+,,,	RY.///	RY./////r)   c                    t                      }d|j        _        d|j        _        t          |          }t          |j                  }|                     |j        |j        j                   |                     |j        |j        j                   |                     |j        |j        j                   |                     |j        |j        j                   d S )Nr5          @r   )r	   r   r%   r&   r   r?   )r@   r   rA   rB   s       r*   test_inheritancez!TestConfigurable.test_inheritance   s    "#"%6***29---v46777v46777v46777v4677777r)   c                    t                      }d|j        _        d|j        _        d|j        _        d|j        _        t          |          }t          dg          5  t	          |j                  }d d d            n# 1 swxY w Y   |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )N
   wowlaterg      Y@r   `b` not recognizedr2   )	r	   r,   r%   r&   r1   r'   r   r   r?   )r@   r   fr&   s       r*   test_parentzTestConfigurable.test_parent   s   



v 4566 	% 	%18$$$A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%b!!!e$$$g&&&e$$$$$s   BBBc                 *   t                      }d|j        _        d|j        _        t          d|          }|                     |j        d           |                     |j        |j        j                   |                     |j        d           d S )Nr5   rK   r   )r%   r   r    )r	   r   r%   r&   r?   r'   r@   r   r'   s      r*   test_override1zTestConfigurable.test_override1   s    "#"%Qv...a   f35666k*****r)   c                    t                      }d|j        _        d|j        _        d|j        _        t          dg          5  t          |          }d d d            n# 1 swxY w Y   |                     |j        |j        j                   |                     |j        d           |                     |j        |j        j                   t          dg          5  t          ddd	|
          }d d d            n# 1 swxY w Y   |                     |j        d           |                     |j        d           |                     |j        d	           d S )Nr   org      $@rQ   r   r2   r5   andg      4@)r%   r&   r'   r   )r	   r,   r%   r1   r&   r'   r   r?   rU   s      r*   test_override2zTestConfigurable.test_override2   s   


 4566 	# 	#6"""A	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#fjl+++g&&&fjl+++ 4566 	9 	9a5D888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9a   e$$$d#####s$   A  A$'A$ D  DDc                 2   |                      t                                          t                     |                      t                                          t
                     |                      t                                          t                     d S N)r?   r   class_get_helpmc_helpr,   foo_helpr1   bar_helpr@   s    r*   	test_helpzTestConfigurable.test_help   sn    6688'BBB++--x888++--x88888r)   c                     t          dd          }|                     t                               |          t                     d S )Nr6      )r%   r&   )r   r?   r]   mc_help_inst)r@   insts     r*   test_help_instzTestConfigurable.test_help_inst   s>    Q'''66t<<lKKKKKr)   c                     G d dt                     }d}d}d}d}|                                }|                     ||           |                     ||           |                     ||           |                                }|                     ||           |                     ||           |                     ||           |                     |                    |          |                    |                     |                                }|                     ||           |                     ||           |                     ||            G d dt                     }	d	}
|	                                }|                     ||           |                     ||           |                     ||           |                     |
|           |                     |                    |
          |                    |                     |	                                }|                     ||           |                     ||           |                     ||           |                     |
|           |                     |                    |
          |                    |                     d S )
Nc                   t    e Zd Z ed                                d                              d          ZdS )DTestConfigurable.test_generated_config_enum_comments.<locals>.MyConfChoice1 choice2Many choices.r   Tr   Nr!   r"   r#   r   splitr$   an_enumr(   r)   r*   MyConfrj      sA        d,2244?KKKOOW[O\\GGGr)   rp   rl   z&Choices: any of ['Choice1', 'choice2']z3MyConf.an_enum : any of ``'Choice1'``|``'choice2'``or Nonec                   x    e Zd Z ed                                ddd                              d          ZdS )ETestConfigurable.test_generated_config_enum_comments.<locals>.MyConf2rk   Tchoice2rl   
allow_nonedefault_valuer   r   Nrm   r(   r)   r*   MyConf2rs      sP        d!''))'$	  
 cc GGr)   rx   Default: 'choice2')r   r]   assertInassertNotInclass_config_sectionassertGreaterindexclass_config_rst_doc)r@   rp   help_strenum_choices_strrst_choices_stror_none_strcls_helpcls_cfgrst_helprx   defaults_strcls2_msgcls2_cfgs                r*   #test_generated_config_enum_commentsz4TestConfigurable.test_generated_config_enum_comments   s   	] 	] 	] 	] 	]\ 	] 	] 	] #CO((**h)))&111h///--//h(((&000h///7==)9::GMM(<S<STTT..00h)))ox000h///	 	 	 	 	l 	 	 	 ,))++h)))&111k8,,,lH---8>>,77HX9Y9YZZZ//11h)))&111k8,,,lH---8>>,77HX9Y9YZZZZZr)   c                    d}d}d} G d dt                     }d}|                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     |                    |          |                    |                     |                                }|                     ||           |                     ||           |                     ||           |                     ||           |                     |                    |          |                    |                      G d dt                     }d	}|                                }	|                     ||	           |                     ||	           |                     ||	           |                     ||	           |                     |	                    |          |	                    |                     |                                }
|                     ||
           |                     ||
           |                     ||
           |                     ||
           |                     |
                    |          |
                    |                     d S )
Nrl   ry   rq   c                   x    e Zd Z ed                                ddd                              d          ZdS )HTestConfigurable.test_generated_config_strenum_comments.<locals>.MyConf3rk   Trt   rl   ru   r   N)r!   r"   r#   r   rn   r$   ro   r(   r)   r*   MyConf3r     sP        %o!''))'$	  
 cc GGr)   r   z9Choices: any of ['Choice1', 'choice2'] (case-insensitive)c                   x    e Zd Z ed                                ddd                              d          ZdS )HTestConfigurable.test_generated_config_strenum_comments.<locals>.MyConf4rk   Trt   rl   ru   r   N)r!   r"   r#   r   rn   r$   ro   r(   r)   r*   MyConf4r     sP        i!''))'$	  
 cc GGr)   r   z>Choices: any case-insensitive prefix of ['Choice1', 'choice2'])r   r]   rz   r}   r~   r|   )r@   r   r   r   r   r   cls3_msgcls3_cfgr   cls4_msgcls4_cfgs              r*   &test_generated_config_strenum_commentsz7TestConfigurable.test_generated_config_strenum_comments   s   "+	 	 	 	 	l 	 	 	 W))++h)))&111k8,,,lH---8>>,77HX9Y9YZZZ//11h)))&111k8,,,lH---8>>,77HX9Y9YZZZ	 	 	 	 	l 	 	 	 \))++h)))&111k8,,,lH---8>>,77HX9Y9YZZZ//11h)))&111k8,,,lH---8>>,77HX9Y9YZZZZZr)   N)r!   r"   r#   rD   rI   rL   rS   rV   rZ   rb   rg   r   r   r(   r)   r*   r=   r=   o   s        / / /0 0 0"	8 	8 	8% % %+ + +$ $ $ 9 9 9
L L L7[ 7[ 7[r;[ ;[ ;[ ;[ ;[r)   r=   c                       e Zd Zd Zd ZdS )TestSingletonConfigurablec                     G d dt                     }|                     |                                d           |                                }|                     |                                d           |                     ||                                           |                     t           j        d            d S )Nc                       e Zd ZdS )4TestSingletonConfigurable.test_instance.<locals>.FooNr!   r"   r#   r(   r)   r*   r,   r   <          Dr)   r,   FTr   r?   initializedinstance	_instance)r@   r,   rF   s      r*   test_instancez'TestSingletonConfigurable.test_instance;  s    	 	 	 	 	' 	 	 	 	**E222llnn**D111cllnn---.8$?????r)   c                 \    G d dt                     } G d d|          }|                     |                                d           |                     |                                d           |                                }|                     |                                d           |                     |                                d           |                     ||j                   |                     ||j                   |                     t           j        d            d S )Nc                       e Zd ZdS )7TestSingletonConfigurable.test_inheritance.<locals>.BarNr   r(   r)   r*   r1   r   F  r   r)   r1   c                       e Zd ZdS )7TestSingletonConfigurable.test_inheritance.<locals>.BamNr   r(   r)   r*   Bamr   I  r   r)   r   FTr   )r@   r1   r   bams       r*   rL   z*TestSingletonConfigurable.test_inheritanceE  s6   	 	 	 	 	' 	 	 		 	 	 	 	# 	 	 	 	**E222**E222llnn**D111**D111cm,,,cm,,,.8$?????r)   N)r!   r"   r#   r   rL   r(   r)   r*   r   r   :  s:        @ @ @@ @ @ @ @r)   r   c                       e Zd Zd Zd ZdS )TestLoggingConfigurablec                     G d dt                     } G d dt                     }t                                          d          } ||          } ||          }|                     |j        |           |                     |j        |            |            } |||          }|                     |j        t                                 |                     |j        |           d S )	Nc                       e Zd ZdS ):TestLoggingConfigurable.test_parent_logger.<locals>.ParentNr   r(   r)   r*   Parentr   X  r   r)   r   c                       e Zd ZdS )9TestLoggingConfigurable.test_parent_logger.<locals>.ChildNr   r(   r)   r*   Childr   [  r   r)   r   r   )logparent)r   r   )r   r
   getChildr?   r   )r@   r   r   r   r   childs         r*   test_parent_loggerz*TestLoggingConfigurable.test_parent_loggerW  s   	 	 	 	 	( 	 	 		 	 	 	 	' 	 	 	 ll##$=>>CV$$$S)))C(((V---Z\\222C(((((r)   c                      G d dt                     } G d dt                    } |            } ||          }|                     |j        t	                                 d S )Nc                       e Zd ZdS )LTestLoggingConfigurable.test_parent_not_logging_configurable.<locals>.ParentNr   r(   r)   r*   r   r   k  r   r)   r   c                       e Zd ZdS )KTestLoggingConfigurable.test_parent_not_logging_configurable.<locals>.ChildNr   r(   r)   r*   r   r   n  r   r)   r   r   )r   r   r?   r   r
   )r@   r   r   r   r   s        r*   $test_parent_not_logging_configurablez<TestLoggingConfigurable.test_parent_not_logging_configurablej  s    	 	 	 	 	\ 	 	 		 	 	 	 	' 	 	 	 V$$$JLL11111r)   N)r!   r"   r#   r   r   r(   r)   r*   r   r   V  s2        ) ) )&	2 	2 	2 	2 	2r)   r   c                       e Zd ZdS )MyParentNr   r(   r)   r*   r   r   v          Dr)   r   c                       e Zd ZdS )	MyParent2Nr   r(   r)   r*   r   r   z  r   r)   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestParentConfigurablec                     t          ddddiii          }t          |          }t          |          }|                     |j        |j        j        j        j                   d S Nr   r   r&   rK   r   r   )r	   r   r   r?   r&   r   r@   cfgr   mycs       r*   test_parent_configz)TestParentConfigurable.test_parent_config  sv    $S'
 
 %%%F+++ 6 E GHHHHHr)   c                     t          ddddiii          }t          |          }t          |          }|                     |j        |j        j        j        j                   d S r   r	   r   r   r?   r&   r   r   r   s       r*   test_parent_inheritancez.TestParentConfigurable.test_parent_inheritance  sv    $S'
 
 #&&&F+++ 6 E GHHHHHr)   c                    t          ddddiiddidi          }t          |          }t          |          }t          |          }|                     |j        |j        j        j        j        j                   d S )	Nr   r   r&   rK         @)r   r   r   r   )r	   r   r   r   r?   r&   r   r@   r   parent2r   r   s        r*   test_multi_parentz(TestParentConfigurable.test_multi_parent  s    (+! S'
 

 
 3''')))F+++ 7 @ O QRRRRRr)   c                     t          ddidddiidddiid          }t          |          }t          |          }|                     |j        |j        j        j        j                   d S )	Nr&   rK   r   r         @r   r   r   r   r   )r	   r   r   r?   r&   r   r   s       r*   test_parent_priorityz+TestParentConfigurable.test_parent_priority  s     # %S' %S' 
 
" #&&&F+++ 7 F HIIIIIr)   c                    t          ddidddiiddidddiidd          }t          |	          }t          |
          }t          |
          }|                     |j        |j        j        j        j        j                   d S )Nr&   rK   r   r   r   g      @)r   r   r   r   r   r   r   s        r*   test_multi_parent_priorityz1TestParentConfigurable.test_multi_parent_priority  s     # %S' S' )+!		 	 
 
, 3''''***F+++ 7 @ O QRRRRRr)   N)r!   r"   r#   r   r   r   r   r   r(   r)   r*   r   r   ~  sp        I I II I IS S S*J J J,S S S S Sr)   r   c                       e Zd Z e                                d          Zd Z e                                d          Zd Z	 e
                                d          Zd ZdS )
ContainersTr   c                     dgS )Nr(   ra   s    r*   _lis_defaultzContainers._lis_default  s	    tr)   c                     dhS )Nr%   r(   ra   s    r*   
_s_defaultzContainers._s_default  s	    ur)   c                 
    ddiS )Nr%   r&   r(   ra   s    r*   
_d_defaultzContainers._d_default  s    Szr)   N)r!   r"   r#   r   r$   lisr   r   sr   r   dr   r(   r)   r*   r   r     s        
$&&**D*
!
!C   				A   	

$
A    r)   r   c                   b    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S )TestConfigContainersc           	          t                      }|j        j                            t	          t          d                               t          |          }|                     |j        t	          t          dd                               d S )Nr6   r   r   )r	   r   r   extendlistranger?   r@   r'   objs      r*   test_extendz TestConfigContainers.test_extend  sn    HH	U1XX///"""$uR||"4"455555r)   c                     t                      }|j        j                            dd           |j        j                            dd           t          |          }|                     |j        g d           d S )Nr   r%   r   r&   r   )r%   r&   r   )r	   r   r   insertr?   r   s      r*   test_insertz TestConfigContainers.test_insert  ss    HH	3'''	3'''"""...11111r)   c                     t                      }|j        j                            ddg           |j        j                            ddg           t          |          }|                     |j        g d           d S )Nr   r5   r   r   )r5   r   r   r5   r   )r	   r   r   prependr?   r   s      r*   test_prependz!TestConfigContainers.test_prepend  sz    HH	  !Q(((	  !Q(((""""2"2"233333r)   c                     t                      }|j        j                            ddg           |j        j                            ddg           t          |          }|                     |j        g d           d S )Nr   r5   r   r   )r   r5   r   r5   r   )r	   r   r   r   r   r?   r   s      r*   test_prepend_extendz(TestConfigContainers.test_prepend_extend	  sz    HH	  !Q(((	A'''""""2"2"233333r)   c                    t                      }|j        j                            ddg           |j        j                            ddg           t          |          }|                     |j        dddgddg           d S )Nr   r5   r   r   r   )r	   r   r   appendr   r?   r   s      r*   test_append_extendz'TestConfigContainers.test_append_extend  s    HH	A'''	A'''"""21vq!"455555r)   c                    t                      }|j        j                            ddg           |j        j                            ddg           t          |          }|                     |j        dddddgg           d S )Nr5   r   r   r   r   )r	   r   r   r   r   r?   r   s      r*   test_extend_appendz'TestConfigContainers.test_extend_append  s    HH	A'''	A'''"""2q!aV"455555r)   c                     t                      }|j        j                            dd           |j        j                            ddg           t          |          }|                     |j        g d           d S )Nr   r   r5   r   r   )r   r   r5   r   )r	   r   r   r   r   r?   r   s      r*   test_insert_extendz'TestConfigContainers.test_insert_extend  su    HH	1%%%	A'''"""---00000r)   c                     t                      }|j        j                            h d           |j        j                            dh           t          |          }|                     |j        h d           d S )N>   r   r   r5   r   r   >   r%   r   r   r5   r   )r	   r   r   updater?   r   s      r*   test_set_updatez$TestConfigContainers.test_set_update%  sv    HH	iii(((	qc"""""" 1 1 122222r)   c                    t                      }|j        j                            ddi           |j        j                            ddi           t          |          }|                     |j        dddd           d S )Nr'   r   erR   r   r&   )r%   r'   r  )r	   r   r   r   r?   r   s      r*   test_dict_updatez%TestConfigContainers.test_dict_update,  s{    HH	sCj)))	sCj)))"""c# > >?????r)   c                    t                      }d|j        _        t          |          }|                     |j        d           t                      }d|j        _        |                    |           |                     |j        d           d|j        _        |                    |           |                     |j        d           d S )Nr6   r   rN      r	   r   r%   r?   update_config)r@   r'   mrB   s       r*   test_update_twicez&TestConfigContainers.test_update_twice3  s    HH!$$$a   XX 	b!!! 	b!!!!!r)   c                    t                      }d|j        _        t          |          }|                     |j        d           d|j        _        |                    |           |                     |j        d           dS )zCupdate_config with same config object still triggers config_changedr6   r   rN   Nr  )r@   r'   r  s      r*   test_update_selfz%TestConfigContainers.test_update_selfB  sy    HH!$$$a   	b!!!!!r)   c                     G d dt                      G fddt                    }t                      }d|j        _         |            }|                     |j        d                               |          } |            }|                     |j        |j                   |                     |j        d           d S )Nc                       e Zd ZdS )?TestConfigContainers.test_config_default.<locals>.SomeSingletonNr   r(   r)   r*   SomeSingletonr  M  r   r)   r  c                   V    e Zd Z e                                d          Z fdZdS )ETestConfigContainers.test_config_default.<locals>.DefaultConfigurableTr   c                 z                                     r                                j        S t                      S r\   r   r   r   r	   r@   r  s    r*   _config_defaultzUTestConfigContainers.test_config_default.<locals>.DefaultConfigurable._config_defaultS  s5     ,,.. ;(1133::xxr)   N)r!   r"   r#   r   r$   r%   r  r  s   r*   DefaultConfigurabler  P  sG        		T**A             r)   r  r6   r   r   )	r   r   r	   r  r%   r?   r   assertIsr   r@   r  r'   d1singled2r  s         @r*   test_config_defaultz(TestConfigContainers.test_config_defaultL  s    	 	 	 	 	1 	 	 		  	  	  	  	  	  	 , 	  	  	  HH"#  ""q!!!''q'11  ""bi///q!!!!!r)   c                      G d dt                     t          j                     t          g           5   G fddt                    }ddd           n# 1 swxY w Y   t                      }d|j        _         |            }|                     |j        d           	                    |          } |            }| 
                    |j        |j                   |                     |j        d           dS )	zDMake sure configurables work even with the deprecations in traitletsc                       e Zd ZdS )JTestConfigContainers.test_config_default_deprecated.<locals>.SomeSingletonNr   r(   r)   r*   r  r   g  r   r)   r  c                   2    e Zd Z ed          Z fdZdS )PTestConfigContainers.test_config_default_deprecated.<locals>.DefaultConfigurableTr   c                 z                                     r                                j        S t                      S r\   r  r  s    r*   r  z`TestConfigContainers.test_config_default_deprecated.<locals>.DefaultConfigurable._config_defaultq  s5    $0022 ?,5577>>!88Or)   N)r!   r"   r#   r   r%   r  r  s   r*   r  r"  n  s@        G4((($ $ $ $ $ $ $r)   r  Nr6   r   r   )r   r   clearr   r   r	   r  r%   r?   r   r  r   r  s         @r*   test_config_default_deprecatedz3TestConfigContainers.test_config_default_deprecatedd  sl   	 	 	 	 	1 	 	 	 	!###r"" 	$ 	$$ $ $ $ $ $ $l $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ HH"#  ""q!!!''q'11  ""bi///q!!!!!s   AA Ac                      G d dt                     }t                      }d|j        _        d|j        _         |dd|          }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nc                       e Zd Z edd          Z edd          Z edd          Z ed          Z ed          d             Z	dS ):TestConfigContainers.test_kwarg_config_priority.<locals>.AdefaultTr   neverr&   c                 (    | j         | _        |j        S r\   )r'   c_during_configvalue)r@   proposals     r*   	_record_czDTestConfigContainers.test_kwarg_config_priority.<locals>.A._record_c  s     (,v$~%r)   N)
r!   r"   r#   r   r%   r&   r'   r,  r   r/  r(   r)   r*   Ar(    s        	$///A	$///A	$///A%gg..OXc]]& & ]& & &r)   r0  za-configzb-configza-kwargzc-kwarg)r%   r'   r   )r   r	   r0  r%   r&   r'   r,  )r@   r0  r   r   s       r*   test_kwarg_config_priorityz/TestConfigContainers.test_kwarg_config_priority  s    
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& hha)y555u	!!!!u
""""u	!!!!"i//////r)   N)r!   r"   r#   r   r   r   r   r   r   r   r   r  r	  r  r  r%  r1  r(   r)   r*   r   r     s        6 6 62 2 24 4 44 4 46 6 66 6 61 1 13 3 3@ @ @" " "" " "" " "0" " "<0 0 0 0 0r)   r   c                   v    e Zd Z G d de          Z ej         eed           d          d             Z	dS )
TestLoggerc                   V    e Zd Z ed          Z ed          Z ed          ZdS )TestLogger.ATr   N)r!   r"   r#   r   rF   rG   bazr(   r)   r*   r0  r5    sD        gT"""gT"""gT"""r)   r0  
assertLogszrequires TestCase.assertLogs)reasonc                 <   t          j        d          }t          dddii          }|                     |t           j                  5 }t
                              ||           d d d            n# 1 swxY w Y   d                    |j                  }| 	                    d|           | 	                    d|           t          dd	dii          }|                     |t           j                  5 }t
                              ||           d d d            n# 1 swxY w Y   d                    |j                  }| 	                    d
|           | 	                    d|           t          dddii          }|                     |t           j                  5 }t
                              ||           d d d            n# 1 swxY w Y   d                    |j                  }| 	                    d|           | 
                    d|           d S )Ntest_warn_matchr0  batr6   )r   r   
z Did you mean one of: `bar, baz`?z*Config option `bat` not recognized by `A`.foolz+Config option `fool` not recognized by `A`.zDid you mean `foo`?totally_wrongz4Config option `totally_wrong` not recognized by `A`.zDid you mean)logging	getLoggerr	   r7  WARNINGr3  r0  joinoutputrz   r{   )r@   loggerr   capturedrC  s        r*   r:  zTestLogger.test_warn_match  s   "#455cE1:&''__VW_55 	1LLL000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 8?++8&AAABFKKKcFA;'((__VW_55 	1LLL000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 8?++CVLLL+V444cOQ/011__VW_55 	1LLL000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 8?++LfUUU00000s6   A11A58A55DD"%D""GGGN)
r!   r"   r#   r   r0  r   skipifhasattrr   r:  r(   r)   r*   r3  r3    s}        # # # # # # # #
 T[WWX|444=[\\\1 1 ]\1 1 1r)   r3  c                    t          j        d          }t          j        |ddi          }t          |t           j                  }d|_        |j                            d           d|                                j	        v sJ d S )Nr   keyadapted)r   	log_levelz%(key)s %(message)sztest messagezadapted test message)
r?  r@  LoggerAdapterr   INFO
log_formatr   info
readouterrerr)caplogcapsysrD  adapterapps        r*   test_logger_adapterrV    s~    }--F#FUI,>??G
'W\
:
:
:C*CNGLL   !V%6%6%8%8%<<<<<<<r)   )0__doc__r?  unittestr   pytestr   traitlets.config.applicationr   traitlets.config.configurabler   r   r   traitlets.config.loaderr	   traitlets.logr
   traitlets.traitletsr   r   r   r   r   r   r   r   r   r   r   tests._warningsr   r   r^   re   replacer,   r1   r_   r`   r=   r   r   r   r   r   r   r   r3  rV  r(   r)   r*   <module>ra     s   - -
              4 4 4 4 4 4 b b b b b b b b b b * * * * * * $ $ $ $ $ $                          1 0 0 0 0 0    \    //+w
/
/##K99$ $ $ $ $, $ $ $W W W W W# W W W
,H[ H[ H[ H[ H[x H[ H[ H[V@ @ @ @ @ @ @ @82 2 2 2 2h 2 2 2@	 	 	 	 	| 	 	 		 	 	 	 	 	 	 	bS bS bS bS bSX bS bS bSJ       "g0 g0 g0 g0 g08 g0 g0 g0T1 1 1 1 1 1 1 1D= = = = =r)   