a
    lcW                     @   s  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 de	ZdZdZ e!ddZe !ddZ G dd de	Z"G dd de"Z#dZ$dZ%G dd deZ&G dd deZ'G dd deZ(G dd de	Z)G d d! d!e)Z*G d"d# d#eZ+G d$d% d%e	Z,G d&d' d'eZ-G d(d) d)eZ.d*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                   @   s<   e Zd ZedddjddZedddj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 r&   r&   d/var/www/html/django/DPS/env/lib/python3.9/site-packages/traitlets/config/tests/test_configurable.pyr   $   s   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                   @   sN   e Zd ZedddjddZedjddZeg jddZ	e
 jddZdS )Foor   r   r   Tr   ZnopeN)r   r    r!   r   r"   r#   r   r$   r   flistr   Zfdictr&   r&   r&   r'   r(   A   s   r(   c                   @   s   e Zd ZedddjddZeddjddZeg jddd	Z	eg d
jddd	Z
e jddd	Zeddddjddd	ZdS )BargotitzThe string b.r   Fr   zThe string c.T+)r   Zmultiplicity)   r      r#   r$   r%   )r   0r.   N)r   r    r!   r   r"   r$   r   r%   r   ZbsetZbset_valuesr   ZbdictZbdict_valuesr&   r&   r&   r'   r*   H   s   r*   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                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestConfigurablec                 C   sB   t  }t |jd}t |jd}| |j|j | |j|j d S )Nr   )r   r   assertEqual)selfc1c2c3r&   r&   r'   test_defaultt   s
    zTestConfigurable.test_defaultc                 C   s   t  }d|_d|_t|d}t|jd}t|jd}| |j| | |j| | |j| | |j|u  | |j|u  | |j|u  | |j|ju  | |j|ju  d S )Nfoobarr   )r   r7   r8   r   r   r1   
assertTrue)r2   r   r3   r4   r5   r&   r&   r'   test_custom{   s    
zTestConfigurable.test_customc                 C   sx   t  }d|j_d|j_t|d}t|jd}| |j|jj | |j|jj | |j|jj | |j|jj d S )Nr-          @r   )r   r   r#   r$   r   r1   )r2   r   r3   r4   r&   r&   r'   test_inheritance   s    
z!TestConfigurable.test_inheritancec                 C   s   t  }d|j_d|j_d|j_d|j_t|d}tdg t|jd}W d    n1 s\0    Y  | |jd | |jd | |jd | |jd d S )N
   ZwowZlaterg      Y@r   `b` not recognizedr+   )	r   r(   r#   r$   r*   r%   r   r   r1   )r2   r   fr$   r&   r&   r'   test_parent   s    
*zTestConfigurable.test_parentc                 C   sT   t  }d|j_d|j_td|d}| |jd | |j|jj | |jd d S )Nr-   r;   r   )r#   r   r   )r   r   r#   r$   r1   r%   r2   r   r%   r&   r&   r'   test_override1   s    zTestConfigurable.test_override1c                 C   s   t  }d|j_d|j_d|j_tdg t|d}W d    n1 sH0    Y  | |j|jj | |jd | |j|jj tdg  tddd	|d
}W d    n1 s0    Y  | |jd | |jd | |jd	 d S )Nr   org      $@r>   r   r+   r-   andg      4@)r#   r$   r%   r   )r   r(   r#   r*   r$   r%   r   r1   rA   r&   r&   r'   test_override2   s    (.zTestConfigurable.test_override2c                 C   s4   |  t t |  t t |  t t d S N)r1   r   class_get_helpmc_helpr(   foo_helpr*   bar_helpr2   r&   r&   r'   	test_help   s    zTestConfigurable.test_helpc                 C   s"   t ddd}| t |t d S )Nr.      )r#   r$   )r   r1   rG   mc_help_inst)r2   instr&   r&   r'   test_help_inst   s    zTestConfigurable.test_help_instc                 C   st  G dd dt }d}d}d}d}| }| || | || | || | }| || | || | || | |||| | }| || | || | || G dd dt }	d	}
|	 }| || | || | || | |
| | ||
|| |	 }| || | || | || | |
| | ||
|| d S )
Nc                   @   s$   e Zd Zed ddjddZdS )zDTestConfigurable.test_generated_config_enum_comments.<locals>.MyConfChoice1 choice2Many choices.r   Tr   Nr   r    r!   r   splitr"   an_enumr&   r&   r&   r'   MyConf   s   rV   rR   z&Choices: any of ['Choice1', 'choice2']z3MyConf.an_enum : any of ``'Choice1'``|``'choice2'``or Nonec                   @   s(   e Zd Zed ddddjddZdS )zETestConfigurable.test_generated_config_enum_comments.<locals>.MyConf2rQ   Tchoice2rR   
allow_nonedefault_valuer   r   NrS   r&   r&   r&   r'   MyConf2   s   r\   Default: 'choice2')r   rG   assertInassertNotInclass_config_sectionassertGreaterindexZclass_config_rst_doc)r2   rV   help_strenum_choices_strZrst_choices_stror_none_strZcls_helpZcls_cfgZrst_helpr\   defaults_strZcls2_msgZcls2_cfgr&   r&   r'   #test_generated_config_enum_comments   s@    z4TestConfigurable.test_generated_config_enum_commentsc                 C   sx  d}d}d}G dd dt }d}| }| || | || | || | || | |||| | }| || | || | || | || | |||| G dd dt }d	}| }	| ||	 | ||	 | ||	 | ||	 | |	||	| | }
| ||
 | ||
 | ||
 | ||
 | |
||
| d S )
NrR   r]   rW   c                   @   s(   e Zd Zed ddddjddZdS )zHTestConfigurable.test_generated_config_strenum_comments.<locals>.MyConf3rQ   TrX   rR   rY   r   N)r   r    r!   r
   rT   r"   rU   r&   r&   r&   r'   MyConf3  s   rh   z9Choices: any of ['Choice1', 'choice2'] (case-insensitive)c                   @   s(   e Zd Zed ddddjddZdS )zHTestConfigurable.test_generated_config_strenum_comments.<locals>.MyConf4rQ   TrX   rR   rY   r   N)r   r    r!   r   rT   r"   rU   r&   r&   r&   r'   MyConf4!  s   ri   z>Choices: any case-insensitive prefix of ['Choice1', 'choice2'])r   rG   r^   ra   rb   r`   )r2   rc   rf   re   rh   rd   Zcls3_msgZcls3_cfgri   Zcls4_msgZcls4_cfgr&   r&   r'   &test_generated_config_strenum_comments   s>    z7TestConfigurable.test_generated_config_strenum_commentsN)r   r    r!   r6   r:   r<   r@   rB   rE   rL   rP   rg   rj   r&   r&   r&   r'   r0   s   s   	9r0   c                   @   s   e Zd Zdd Zdd ZdS )TestSingletonConfigurablec                 C   sZ   G dd dt }| | d | }| | d | ||  | t jd  d S )Nc                   @   s   e Zd ZdS )z4TestSingletonConfigurable.test_instance.<locals>.FooNr   r    r!   r&   r&   r&   r'   r(   @  s   r(   FTr   r1   initializedinstanceZ	_instance)r2   r(   r7   r&   r&   r'   test_instance?  s    z'TestSingletonConfigurable.test_instancec                 C   s   G dd dt }G dd d|}| | d | | d | }| | d | | d | ||j | ||j | t jd  d S )Nc                   @   s   e Zd ZdS )z7TestSingletonConfigurable.test_inheritance.<locals>.BarNrl   r&   r&   r&   r'   r*   J  s   r*   c                   @   s   e Zd ZdS )z7TestSingletonConfigurable.test_inheritance.<locals>.BamNrl   r&   r&   r&   r'   BamM  s   rq   FTrm   )r2   r*   rq   Zbamr&   r&   r'   r<   I  s    z*TestSingletonConfigurable.test_inheritanceN)r   r    r!   rp   r<   r&   r&   r&   r'   rk   >  s   
rk   c                   @   s   e Zd Zdd Zdd ZdS )TestLoggingConfigurablec                 C   s   G dd dt }G dd dt }t d}||d}||d}| |j| | |j| | }|||d}| |jt  | |j| d S )	Nc                   @   s   e Zd ZdS )z:TestLoggingConfigurable.test_parent_logger.<locals>.ParentNrl   r&   r&   r&   r'   Parent\  s   rs   c                   @   s   e Zd ZdS )z9TestLoggingConfigurable.test_parent_logger.<locals>.ChildNrl   r&   r&   r&   r'   Child_  s   rt   rr   )logparent)rw   ru   )r   r	   getChildr1   ru   )r2   rs   rt   ru   rw   childr&   r&   r'   test_parent_logger[  s    

z*TestLoggingConfigurable.test_parent_loggerc                 C   sD   G dd dt }G dd dt}| }||d}| |jt  d S )Nc                   @   s   e Zd ZdS )zLTestLoggingConfigurable.test_parent_not_logging_configurable.<locals>.ParentNrl   r&   r&   r&   r'   rs   o  s   rs   c                   @   s   e Zd ZdS )zKTestLoggingConfigurable.test_parent_not_logging_configurable.<locals>.ChildNrl   r&   r&   r&   r'   rt   r  s   rt   rv   )r   r   r1   ru   r	   )r2   rs   rt   rw   ry   r&   r&   r'   $test_parent_not_logging_configurablen  s
    
z<TestLoggingConfigurable.test_parent_not_logging_configurableN)r   r    r!   rz   r{   r&   r&   r&   r'   rr   Z  s   rr   c                   @   s   e Zd ZdS )MyParentNrl   r&   r&   r&   r'   r|   z  s   r|   c                   @   s   e Zd ZdS )	MyParent2Nrl   r&   r&   r&   r'   r}   ~  s   r}   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestParentConfigurablec                 C   sB   t ddddiii}t|d}t|d}| |j|jjjj d S Nr|   r   r$   r;   r   rv   )r   r|   r   r1   r$   r   r2   cfgrw   mycr&   r&   r'   test_parent_config  s    	

z)TestParentConfigurable.test_parent_configc                 C   sB   t ddddiii}t|d}t|d}| |j|jjjj d S r   r   r}   r   r1   r$   r   r|   r   r&   r&   r'   test_parent_inheritance  s    	

z.TestParentConfigurable.test_parent_inheritancec                 C   sX   t ddddiiddidi}t|d}t|d}t|d}| |j|jjjjj d S )	Nr}   r   r$   r;         @)r|   r   r   rv   )r   r}   r|   r   r1   r$   r   r2   r   Zparent2rw   r   r&   r&   r'   test_multi_parent  s    


z(TestParentConfigurable.test_multi_parentc                 C   sR   t ddidddiidddiid}t|d}t|d}| |j|jjjj d S )	Nr$   r;   r   r         @r   r|   r}   r   rv   )r   r}   r   r1   r$   r   r   r&   r&   r'   test_parent_priority  s     

z+TestParentConfigurable.test_parent_priorityc                 C   sh   t ddidddiiddidddiidd}t|d	}t|d
}t|d
}| |j|jjjjj d S )Nr$   r;   r   r   r   g      @)r   r|   r   r   rv   r   r   r&   r&   r'   test_multi_parent_priority  s(    


z1TestParentConfigurable.test_multi_parent_priorityN)r   r    r!   r   r   r   r   r   r&   r&   r&   r'   r~     s
   r~   c                   @   sN   e Zd Ze jddZdd Ze jddZdd Z	e
 jddZdd Zd	S )

ContainersTr   c                 C   s   dgS )Nr&   rK   r&   r&   r'   _lis_default  s    zContainers._lis_defaultc                 C   s   dhS )Nr#   r&   rK   r&   r&   r'   
_s_default  s    zContainers._s_defaultc                 C   s   ddiS )Nr#   r$   r&   rK   r&   r&   r'   
_d_default  s    zContainers._d_defaultN)r   r    r!   r   r"   lisr   r   sr   r   dr   r&   r&   r&   r'   r     s   r   c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestConfigContainersc                 C   sB   t  }|jjttd t|d}| |jttdd d S )Nr.   r   r   )r   r   r   extendlistranger1   r2   r%   objr&   r&   r'   test_extend  s    
z TestConfigContainers.test_extendc                 C   sF   t  }|jjdd |jjdd t|d}| |jg d d S )Nr   r#   r   r$   r   )r#   r$   r   )r   r   r   insertr1   r   r&   r&   r'   test_insert  s
    
z TestConfigContainers.test_insertc                 C   sJ   t  }|jjddg |jjddg t|d}| |jg d d S )Nr   r-   r   r   )r-   r   r   r-   r   )r   r   r   prependr1   r   r&   r&   r'   test_prepend  s
    
z!TestConfigContainers.test_prependc                 C   sJ   t  }|jjddg |jjddg t|d}| |jg d d S )Nr   r-   r   r   )r   r-   r   r-   r   )r   r   r   r   r   r1   r   r&   r&   r'   test_prepend_extend  s
    
z(TestConfigContainers.test_prepend_extendc                 C   sR   t  }|jjddg |jjddg t|d}| |jdddgddg d S )Nr   r-   r   r   r   )r   r   r   appendr   r1   r   r&   r&   r'   test_append_extend  s
    
z'TestConfigContainers.test_append_extendc                 C   sR   t  }|jjddg |jjddg t|d}| |jdddddgg d S )Nr-   r   r   r   r   )r   r   r   r   r   r1   r   r&   r&   r'   test_extend_append  s
    
z'TestConfigContainers.test_extend_appendc                 C   sH   t  }|jjdd |jjddg t|d}| |jg d d S )Nr   r   r-   r   r   )r   r   r-   r   )r   r   r   r   r   r1   r   r&   r&   r'   test_insert_extend"  s
    
z'TestConfigContainers.test_insert_extendc                 C   sH   t  }|jjh d |jjdh t|d}| |jh d d S )N>   r   r   r-   r   r   >   r   r   r-   r   r#   )r   r   r   updater1   r   r&   r&   r'   test_set_update)  s
    
z$TestConfigContainers.test_set_updatec                 C   sN   t  }|jjddi |jjddi t|d}| |jdddd d S )Nr%   r   er?   r   r$   )r#   r%   r   )r   r   r   r   r1   r   r&   r&   r'   test_dict_update0  s
    
z%TestConfigContainers.test_dict_updatec                 C   sp   t  }d|j_t|d}| |jd t  }d|j_|| | |jd d|j_|| | |jd d S )Nr.   r   r=      r   r   r#   r1   Zupdate_config)r2   r%   mr4   r&   r&   r'   test_update_twice7  s    


z&TestConfigContainers.test_update_twicec                 C   sJ   t  }d|j_t|d}| |jd d|j_|| | |jd dS )zCupdate_config with same config object still triggers config_changedr.   r   r=   Nr   )r2   r%   r   r&   r&   r'   test_update_selfF  s    

z%TestConfigContainers.test_update_selfc                    sz   G dd dt  G  fdddt}t }d|j_| }| |jd  j|d}| }| |j|j | |jd d S )Nc                   @   s   e Zd ZdS )z?TestConfigContainers.test_config_default.<locals>.SomeSingletonNrl   r&   r&   r&   r'   SomeSingletonQ  s   r   c                       s&   e Zd Ze jddZ fddZdS )zETestConfigContainers.test_config_default.<locals>.DefaultConfigurableTr   c                    s      r  jS t S rF   rn   ro   r   r   rK   r   r&   r'   _config_defaultW  s    
zUTestConfigContainers.test_config_default.<locals>.DefaultConfigurable._config_defaultN)r   r    r!   r   r"   r#   r   r&   r   r&   r'   DefaultConfigurableT  s   r   r.   r   r   )	r   r   r   r   r#   r1   ro   assertIsr   r2   r   r%   Zd1singleZd2r&   r   r'   test_config_defaultP  s    z(TestConfigContainers.test_config_defaultc                    s   G dd dt  t  tg $ G  fdddt}W d   n1 sJ0    Y  t }d|j_| }| |jd  j	|d}| }| 
|j|j | |jd dS )	zDMake sure configurables work even with the deprecations in traitletsc                   @   s   e Zd ZdS )zJTestConfigContainers.test_config_default_deprecated.<locals>.SomeSingletonNrl   r&   r&   r&   r'   r   k  s   r   c                       s"   e Zd ZeddZ fddZdS )zPTestConfigContainers.test_config_default_deprecated.<locals>.DefaultConfigurableTr   c                    s      r  jS t S rF   r   rK   r   r&   r'   r   u  s    
z`TestConfigContainers.test_config_default_deprecated.<locals>.DefaultConfigurable._config_defaultN)r   r    r!   r   r#   r   r&   r   r&   r'   r   r  s   
r   Nr.   r   r   )r   r   clearr   r   r   r   r#   r1   ro   r   r   r   r&   r   r'   test_config_default_deprecatedh  s    
2z3TestConfigContainers.test_config_default_deprecatedc                 C   sp   G dd dt }t }d|j_d|j_|dd|d}|jdksBJ |jdksPJ |jdks^J |jdkslJ d S )Nc                   @   sH   e Zd ZedddZedddZedddZedZeddd Z	dS )	z:TestConfigContainers.test_kwarg_config_priority.<locals>.AdefaultTr   neverr$   c                 S   s   | j | _|jS rF   )r%   c_during_configvalue)r2   Zproposalr&   r&   r'   	_record_c  s    zDTestConfigContainers.test_kwarg_config_priority.<locals>.A._record_cN)
r   r    r!   r   r#   r$   r%   r   r   r   r&   r&   r&   r'   A  s   r   za-configzb-configza-kwargzc-kwarg)r#   r%   r   )r   r   r   r#   r$   r%   r   )r2   r   r   r   r&   r&   r'   test_kwarg_config_priority  s    z/TestConfigContainers.test_kwarg_config_priorityN)r   r    r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   r     s   
r   c                   @   s:   e Zd ZG dd deZejeed dddd Z	dS )	
TestLoggerc                   @   s*   e Zd ZeddZeddZeddZdS )zTestLogger.ATr   N)r   r    r!   r   r7   r8   Zbazr&   r&   r&   r'   r     s   

r   
assertLogszrequires TestCase.assertLogs)reasonc                 C   s`  t d}tdddii}| |t j}tj||d W d    n1 sL0    Y  d|j}| 	d| | 	d| tdd	dii}| |t j}tj||d W d    n1 s0    Y  d|j}| 	d
| | 	d| tdddii}| |t j}tj||d W d    n1 s.0    Y  d|j}| 	d| | 
d| d S )Ntest_warn_matchr   batr.   )r   ru   
z Did you mean one of: `bar, baz`?z*Config option `bat` not recognized by `A`.Zfoolz+Config option `fool` not recognized by `A`.zDid you mean `foo`?Ztotally_wrongz4Config option `totally_wrong` not recognized by `A`.zDid you mean)logging	getLoggerr   r   WARNINGr   r   joinoutputr^   r_   )r2   loggerr   Zcapturedr   r&   r&   r'   r     s&    
,,.zTestLogger.test_warn_matchN)
r   r    r!   r   r   r   Zskipifhasattrr   r   r&   r&   r&   r'   r     s   r   c                 C   sP   t d}t |ddi}t|t jd}d|_|jd d| j	v sLJ d S )Nr   keyZadapted)ru   	log_levelz%(key)s %(message)sztest messagezadapted test message)
r   r   LoggerAdapterr   INFOZ
log_formatru   infoZ
readouterrerr)ZcaplogZcapsysr   adapterZappr&   r&   r'   test_logger_adapter  s    
r   )0__doc__r   Zunittestr   Zpytestr   Ztraitlets.config.applicationr   Ztraitlets.config.configurabler   r   r   Ztraitlets.config.loaderr   Ztraitlets.logr	   Ztraitlets.traitletsr
   r   r   r   r   r   r   r   r   r   r   Ztests._warningsr   r   rH   rN   replacer(   r*   rI   rJ   r0   rk   rr   r|   r}   r~   r   r   r   r   r&   r&   r&   r'   <module>   s<   4	
	 L e +"