o
    ȷeA1                    @   s  d Z ddlZddlZddlmZ ddl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mZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1mZm2Z2 ddl3m4Z4 ddl5m6Z6 dd	 Z7G d
d deZ8G dd deZ9G 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ZAG dd deZBG d d! d!eZCG d"d# d#eBZDG d$d% d%eZEG d&d' d'eBZFG d(d) d)eZGG d*d+ d+eBZHG d,d- d-eZIG d.d/ d/eBZJG d0d1 d1eZKG d2d3 d3eBZLG d4d5 d5eZMG d6d7 d7eBZNG d8d9 d9eZOG d:d; d;eNZPG d<d= d=eZQG d>d? d?eBZRG d@dA dAeZSG dBdC dCeBZTG dDdE dEeZUG dFdG dGeBZVG dHdI dIeZWG dJdK dKeBZXG dLdM dMeZYG dNdO dOeXZZG dPdQ dQeZ[G dRdS dSeRZ\G dTdU dUeZ]G dVdW dWeBZ^G dXdY dYeZ_G dZd[ d[eBZ`G d\d] d]eZaG d^d_ d_eBZbG d`da daeZcG dbdc dceBZdG ddde deeZeG dfdg dgeBZfG dhdi dieZgG djdk dkeBZhG dldm dmeZiG dndo doeBZjG dpdq dqeZkG drds dseBZlG dtdu dueZmG dvdw dweBZnG dxdy dyeZoG dzd{ d{eBZpG d|d} d}eZqG d~d deBZrG dd dZsG dd deZtG dd deBZuG dd deZvG dd deBZwG dd deZxG dd deBZyG dd deZzG dd deBZ{G dd deZ|G dd deBZ}G dd deZ~G dd deBZG dd deZG dd deBZejdee(e#eee+fdd Zejdeg fe(dfe#e fei fedfe+dffdd Zejdeg fe(dfe#e ffdd ZG dd deZG dd deBZG dd deZdd ZG dd deZG dd deBZG dd deZG dd deBZG dd deZG dd deBZG dd deZG dd deBZdd ZG ddÄ deZG ddń deZG ddǄ deZG ddɄ deZdd˄ Zdd̈́ ZG ddτ deZG ddф deZG ddӄ deZddՄ ZG ddׄ deZddل ZG ddۄ deZG dd݄ deZG dd߄ deZG dd deZG dd dZG dd deZG dd deBZG dd deBZG dd deBZG dd deBZG dd deZdd Zdd ZG dd deZG dd deZdd ZG dd deZG dd deZdd ZG d d deZdd ZG dd de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 Zejdg ddd Zejdg dd d! Zejdg d"d#d$ Zejdg d"d%d& Zejdd'efd(d)d*efd+gd,d- Zejdd'efd.d/d0d+gd1d2 Zejdd'efd.d/d0d3d+gd4d5 Zejdd6d7d8d9d:d;d<efd+gd=d> Zejdd?i fd@e&fdAddBifdCdDdEifd'e&fd+gdFdG ZejddHg fdIg dJfd@d'gd@d'gfdKgdfgdLdM ZejdNg dOg dPe fd'gee fd@d'gd@d'ge+ fdKgdge+dQdRfdKgdKge+dSdRfgdTdU ZejddHe fdIh dVfdWh dVfd@d'gd@d'hfdKgdfgdXdY ZejdNg dOh dZe fd'gee fd@d'gd@d'he+ fdKgdhe+dQdRfgd[d\ Zejdd]d^d_d`d@d'gdafdKgdfgdbdc Zejddg dOdPe e e gfd'gee gfd@d'gdae+ gfdKgdee+dSdRgfdKgdfe+dQdRgfgdgdh Zejddidjdke&fdld+gdmdn Zejddodpdqefdrefd+gdsdt ZӐdudv ZdS (w  zTests for traitlets.traitlets.    N)TestCase)-AllAnyBaseDescriptorBoolBytesCallableCBytesCFloatCIntCLongComplexCRegExpCUnicodeDictDottedObjectNameEnumFloatForwardDeclaredInstanceForwardDeclaredTypeHasDescriptors	HasTraitsInstanceIntIntegerListLongMetaHasTraits
ObjectNameSet
TCPAddressThis
TraitError	TraitTypeTupleType	UndefinedUnicodeUniondefaultdirectional_linklinkobserveobserve_compat	traitletsvalidatecast_unicode   )expected_warningsc                  G   s   d}t t|| S )N)nameoldnewownertype)dictzip)ordered_valueschange_names r=   U/var/www/ideatree/venv/lib/python3.10/site-packages/traitlets/tests/test_traitlets.pychange_dictC   s   r?   c                   @      e Zd Zdd ZdS )HasTraitsStubc                 C   s,   |d | _ |d | _|d | _|d | _d S )Nr4   r5   r6   r8   )_notify_name_notify_old_notify_new_notify_typeselfchanger=   r=   r>   notify_changeN   s   


zHasTraitsStub.notify_changeN)__name__
__module____qualname__rI   r=   r=   r=   r>   rA   M       rA   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d Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*TestTraitTypec                 C   s(   G dd dt }| }|jtu sJ d S )Nc                   @      e Zd ZeZdS )z+TestTraitType.test_get_undefined.<locals>.ANrJ   rK   rL   r#   ar=   r=   r=   r>   A\       rR   )r   rQ   r&   rG   rR   rQ   r=   r=   r>   test_get_undefined[      z TestTraitType.test_get_undefinedc                 C   sX   G dd dt }| }d|_| |jd | |jd | |jt | |jd d S )Nc                   @   rO   )z!TestTraitType.test_set.<locals>.ANrP   r=   r=   r=   r>   rR   c   rS   rR   
   rQ   )rA   rQ   assertEqualrB   rC   r&   rD   rT   r=   r=   r>   test_setb   s   zTestTraitType.test_setc                    sB   G dd dt  G  fdddt}| }d|_| |jd d S )Nc                   @   r@   )z)TestTraitType.test_validate.<locals>.MyTTc                 S      dS Nr=   )rG   instvaluer=   r=   r>   r/   o      z2TestTraitType.test_validate.<locals>.MyTT.validateNrJ   rK   rL   r/   r=   r=   r=   r>   MyTTn   rM   ra   c                          e Zd Z ZdS )z&TestTraitType.test_validate.<locals>.ANrJ   rK   rL   ttr=   ra   r=   r>   rR   r   rS   rR   rW   r\   )r#   rA   rd   rX   rT   r=   re   r>   test_validatem   s
   zTestTraitType.test_validatec                    sb   G dd dt  G  fdddt}| }| |jd G  fdddt}| tt| d d S )	Nc                   @   r@   )z4TestTraitType.test_default_validate.<locals>.MyIntTTc                 S   s   t |tr|S | || d S N)
isinstanceinterror)rG   objr^   r=   r=   r>   r/   {   s   
z=TestTraitType.test_default_validate.<locals>.MyIntTT.validateNr`   r=   r=   r=   r>   MyIntTTz   rM   rl   c                          e Zd Z dZdS )z.TestTraitType.test_default_validate.<locals>.ArW   Nrc   r=   rl   r=   r>   rR      rM   rR   rW   c                       rm   )z.TestTraitType.test_default_validate.<locals>.Bbad defaultNrc   r=   rn   r=   r>   B   rM   rp   rd   )r#   r   rX   rd   assertRaisesr"   getattr)rG   rR   rQ   rp   r=   rn   r>   test_default_validatey   s   z#TestTraitType.test_default_validatec                 C   s,   G dd dt }| }| |j d d S )Nc                   @   rO   )z"TestTraitType.test_info.<locals>.ANrJ   rK   rL   r#   rd   r=   r=   r=   r>   rR      rS   rR   z	any value)r   rX   rd   inforT   r=   r=   r>   	test_info   s   zTestTraitType.test_infoc                 C   s.   G dd dt }| }| t|jj|d d S )Nc                   @      e Zd Ze ZdS )z#TestTraitType.test_error.<locals>.ANrt   r=   r=   r=   r>   rR          
rR   rW   )r   rq   r"   rd   rj   rT   r=   r=   r>   
test_error      zTestTraitType.test_errorc                 C      G dd dt }G dd d|}G dd d|}| }| |ji  | |jd | |jddi | }| |jd	 | |jdd	i | }| |ji  | |jd
 | |jdd
i | }| }| |ji  | |jd | |jddi d S )Nc                   @      e Zd ZedZdd ZdS )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.ArW   c                 S   rZ   N   r=   rG   r=   r=   r>   
_x_default   r_   zGTestTraitType.test_deprecated_dynamic_initializer.<locals>.A._x_defaultN)rJ   rK   rL   r   xr   r=   r=   r=   r>   rR          rR   c                   @      e Zd ZedZdS )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.B   NrJ   rK   rL   r   r   r=   r=   r=   r>   rp      rM   rp   c                   @   r@   )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.Cc                 S   rZ   N   r=   r   r=   r=   r>   r      r_   zGTestTraitType.test_deprecated_dynamic_initializer.<locals>.C._x_defaultN)rJ   rK   rL   r   r=   r=   r=   r>   C   rM   r   r~   r   r   r   r   rX   _trait_valuesr   rG   rR   rp   r   rQ   bcr=   r=   r>   #test_deprecated_dynamic_initializer   s&   z1TestTraitType.test_deprecated_dynamic_initializerc                 C   s   t g  G dd dt}| }d|_W d    n1 sw   Y  |jdks)J t ddg}G dd dt}| }d|_W d    n1 sHw   Y  |jdksTJ d S )Nc                   @   sB   e Zd Ze Zeddd Zeddd Ze	ddd Z
dS )	zCTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarnr   c                 S   rZ   NrW   r=   r   r=   r=   r>   r         zNTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_defaultc                 S   s   |j S rg   r^   rG   proposalr=   r=   r>   _x_validate   s   zOTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_validatec                 S      d S rg   r=   rF   r=   r=   r>   
_x_changed   r   zNTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_changedN)rJ   rK   rL   r   r   r)   r   r/   r   r,   r   r=   r=   r=   r>   ShouldntWarn   s    

r      z	@validatez@observec                   @   s*   e Zd Ze Zdd Zdd Zdd ZdS )zATestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarnc                 S   rZ   r   r=   r   r=   r=   r>   r      r_   zLTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_defaultc                 S      |S rg   r=   )rG   r^   _r=   r=   r>   r      r_   zMTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_validatec                 S   r   rg   r=   r   r=   r=   r>   r      r_   zLTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_changedN)rJ   rK   rL   r   r   r   r   r   r=   r=   r=   r>   
ShouldWarn   s
    r   )r3   r   r   )rG   r   rk   wr   r=   r=   r>   test_deprecated_method_warnings   s   
z-TestTraitType.test_deprecated_method_warningsc                 C   r{   )Nc                   @   $   e Zd ZedZeddd ZdS )z1TestTraitType.test_dynamic_initializer.<locals>.ArW   r   c                 S   rZ   r}   r=   r   r=   r=   r>   
_default_x   r   z<TestTraitType.test_dynamic_initializer.<locals>.A._default_xN)rJ   rK   rL   r   r   r)   r   r=   r=   r=   r>   rR          rR   c                   @   r   )z1TestTraitType.test_dynamic_initializer.<locals>.Br   Nr   r=   r=   r=   r>   rp      rM   rp   c                   @   s   e Zd Zeddd ZdS )z1TestTraitType.test_dynamic_initializer.<locals>.Cr   c                 S   rZ   r   r=   r   r=   r=   r>   r      r   z<TestTraitType.test_dynamic_initializer.<locals>.C._default_xN)rJ   rK   rL   r)   r   r=   r=   r=   r>   r          r   r~   r   r   r   r   r   r=   r=   r>   test_dynamic_initializer   s&   z&TestTraitType.test_dynamic_initializerc                 C   s<   G dd dt }|djddd}| |jdddd d S )	Nc                   @      e Zd ZdddZdS )z0TestTraitType.test_tag_metadata.<locals>.MyIntTTr2      rQ   r   NrJ   rK   rL   metadatar=   r=   r=   r>   rl   
      rl   rW         r   r   r2   )rQ   r   r   )r#   tagrX   r   )rG   rl   rQ   r=   r=   r>   test_tag_metadata	  s   zTestTraitType.test_tag_metadatac                 C   s<   G dd dt }|d}|d}d|jd< | d|j d S )Nc                   @   r   )z?TestTraitType.test_metadata_localized_instance.<locals>.MyIntTTr2   r   r   Nr   r=   r=   r=   r>   rl     r   rl   rW   r   r   )r#   r   assertNotIn)rG   rl   rQ   r   r=   r=   r>    test_metadata_localized_instance  s
   
z.TestTraitType.test_metadata_localized_instancec                 C   s   G dd dt }| }| |ddd  | |ddd i |_| |ddd | |ddd d	|_| |ddd	 | |ddd d S )
Nc                   @   s2   e Zd Ze jdde jdddB jddZdS )	z.TestTraitType.test_union_metadata.<locals>.Foor2   )tar   r   )r   tirQ   )r   N)rJ   rK   rL   r   r   r   barr=   r=   r=   r>   Foo  s    *r   r   r   r   rQ   r   r   r2   )r   rX   trait_metadatar   rG   r   foor=   r=   r>   test_union_metadata  s   z!TestTraitType.test_union_metadatac                 C   s(   G dd dt }| }| |jd d S )Nc                   @   s    e Zd Zee e gddZdS )z3TestTraitType.test_union_default_value.<locals>.Foor2   default_valueNrJ   rK   rL   r(   r   r   r   r=   r=   r=   r>   r   +      r   r2   r   rX   r   r   r=   r=   r>   test_union_default_value*  rV   z&TestTraitType.test_union_default_valuec                 C   s.   G dd dt }| }d|_| |jd d S )Nc                   @      e Zd Zee e gZdS )z9TestTraitType.test_union_validation_priority.<locals>.FooN)rJ   rK   rL   r(   r   r'   r   r=   r=   r=   r>   r   2      r   1r2   )r   r   rX   r   r=   r=   r>   test_union_validation_priority1  s   z,TestTraitType.test_union_validation_priorityc                 C   s$   G dd dt }| | ji  d S )Nc                   @   r   )z9TestTraitType.test_union_trait_default_value.<locals>.FooNr   r=   r=   r=   r>   r   ;  r   r   r   )rG   r   r=   r=   r>   test_union_trait_default_value:  s   z,TestTraitType.test_union_trait_default_valuec                 C   s   G dd dt }|d}tdgd  |dd |d}W d    n1 s)w   Y  | |d tdgd  |d	d
 |d	}W d    n1 sQw   Y  | |d
 d S )Nc                   @   r   )z>TestTraitType.test_deprecated_metadata_access.<locals>.MyIntTTr2   r   r   Nr   r=   r=   r=   r>   rl   A  r   rl   rW   z.use the instance .metadata dictionary directlyr   keyr^   z&use the instance .help string directlyhelpz	some help)r#   r3   set_metadataget_metadatarX   )rG   rl   rQ   vr=   r=   r>   test_deprecated_metadata_access@  s   z-TestTraitType.test_deprecated_metadata_accessc                 C   @   t dg G dd dt}W d    d S 1 sw   Y  d S )N#Traits should be given as instancesc                   @   rO   )z4TestTraitType.test_trait_types_deprecated.<locals>.CN)rJ   rK   rL   r   tr=   r=   r=   r>   r   Q  rS   r   r3   r   rG   r   r=   r=   r>   test_trait_types_deprecatedN     "z)TestTraitType.test_trait_types_deprecatedc                 C   r   )Nr   c                   @      e Zd ZeeZdS )z9TestTraitType.test_trait_types_list_deprecated.<locals>.CN)rJ   rK   rL   r   r   r   r=   r=   r=   r>   r   W  rM   r   r   r   r=   r=   r>    test_trait_types_list_deprecatedT  r   z.TestTraitType.test_trait_types_list_deprecatedc                 C   r   )Nr   c                   @   r   )z:TestTraitType.test_trait_types_tuple_deprecated.<locals>.CN)rJ   rK   rL   r$   r   r   r=   r=   r=   r>   r   ]  rM   r   r   r   r=   r=   r>   !test_trait_types_tuple_deprecatedZ  r   z/TestTraitType.test_trait_types_tuple_deprecatedc                 C   r   )Nr   c                   @   r   )z9TestTraitType.test_trait_types_dict_deprecated.<locals>.CN)rJ   rK   rL   r   r   r   r=   r=   r=   r>   r   c  rM   r   r   r   r=   r=   r>    test_trait_types_dict_deprecated`  r   z.TestTraitType.test_trait_types_dict_deprecatedN)rJ   rK   rL   rU   rY   rf   rs   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r>   rN   Z   s*    !+#
	rN   c                   @      e Zd Zdd Zdd ZdS )TestHasDescriptorsMetac                 C   s   |  ttt G dd dt}| }|  t|jt |  |jd d|_|  |jd G dd dt}| }|  |jd d|_|  |jd G dd dt}| }|  |jd	 d|_|  |jd d S )
Nc                   @   rw   )z0TestHasDescriptorsMeta.test_metaclass.<locals>.ANrJ   rK   rL   r   rQ   r=   r=   r=   r>   rR   k  rx   rR   r   rW   c                   @   rw   )z0TestHasDescriptorsMeta.test_metaclass.<locals>.BN)rJ   rK   rL   r   r   r=   r=   r=   r>   rp   t  rx   rp   c                   @   r   )z0TestHasDescriptorsMeta.test_metaclass.<locals>.C   N)rJ   rK   rL   r   r   r=   r=   r=   r>   r   |  rM   r   r   )rX   r8   r   r   	__class__rQ   r   r   )rG   rR   rQ   rp   r   r   r   r=   r=   r>   test_metaclassh  s"   z%TestHasDescriptorsMeta.test_metaclassc                 C   sd   G dd dt }G dd d|}| |jj| | |jj| | |jj| | |jj| d S )Nc                   @      e Zd Ze Ze ZdS )z1TestHasDescriptorsMeta.test_this_class.<locals>.AN)rJ   rK   rL   r!   r   rd   r=   r=   r=   r>   rR         
rR   c                   @   r   )z1TestHasDescriptorsMeta.test_this_class.<locals>.BN)rJ   rK   rL   r!   rd   tttr=   r=   r=   r>   rp     r   rp   )r   rX   r   
this_classrd   r   )rG   rR   rp   r=   r=   r>   test_this_class  s   z&TestHasDescriptorsMeta.test_this_classN)rJ   rK   rL   r   r   r=   r=   r=   r>   r   g  s    r   c                   @   r@   )TestHasDescriptorsc                    s2   G dd dt  G  fdddt}|dd}d S )Nc                   @   r@   )z=TestHasDescriptors.test_setup_instance.<locals>.FooDescriptorc                 S   s
   |j }d S rg   r   )rG   r]   r   r=   r=   r>   instance_init     
zKTestHasDescriptors.test_setup_instance.<locals>.FooDescriptor.instance_initN)rJ   rK   rL   r   r=   r=   r=   r>   FooDescriptor  rM   r   c                       s"   e Zd Z Z fddZ  ZS )zATestHasDescriptors.test_setup_instance.<locals>.HasFooDescriptorsc                    s$   | dd | _t j|i | d S )Nr   )getr   supersetup_instancerG   argskwargsr   r=   r>   r     s   zPTestHasDescriptors.test_setup_instance.<locals>.HasFooDescriptors.setup_instance)rJ   rK   rL   fdr   __classcell__r=   r   r   r>   HasFooDescriptors  s    r   r   r   )r   r   )rG   r   hfdr=   r   r>   test_setup_instance  s   z&TestHasDescriptors.test_setup_instanceN)rJ   rK   rL   r   r=   r=   r=   r>   r     rM   r   c                   @   \   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 )TestHasTraitsNotifyc                 C      g | _ g | _d S rg   _notify1_notify2r   r=   r=   r>   setUp     
zTestHasTraitsNotify.setUpc                 C      | j |||f d S rg   r   appendrG   r4   r5   r6   r=   r=   r>   notify1     zTestHasTraitsNotify.notify1c                 C   r   rg   r   r   r   r=   r=   r>   notify2  r   zTestHasTraitsNotify.notify2c                 C   s   G dd dt }| }|| j d|_| t| jd d|_| t| jd d|_| d| jv  d|_| d| jv  | 	t
t|d	d
 | 	t
t|dd
 g | _|j| jdd d|_d|_| t| jd d S )Nc                   @      e Zd Ze Ze ZdS )z.TestHasTraitsNotify.test_notify_all.<locals>.ANrJ   rK   rL   r   rQ   r   r   r=   r=   r=   r>   rR     r   rR   r           rW   rQ   r   rW         $@r   r  r  rQ   
bad stringr   Tremover         4@)r   on_trait_changer   rQ   rX   lenr   r   
assertTruerq   r"   setattrrT   r=   r=   r>   test_notify_all  s$   z#TestHasTraitsNotify.test_notify_allc                 C   sh   G dd dt }| }|| jd d|_| t| jd d|_| d| jv  | t	t
|dd d S )Nc                   @   r  )z.TestHasTraitsNotify.test_notify_one.<locals>.ANr  r=   r=   r=   r>   rR     r   rR   rQ   r   rW   r  r  )r   r  r   rQ   rX   r  r   r  rq   r"   r  rT   r=   r=   r>   test_notify_one  s   z#TestHasTraitsNotify.test_notify_onec                 C   n   G dd dt }G dd d|}| }| |jd | |jd d|_d|_| |jd | |jd d S )	Nc                   @   rw   )z,TestHasTraitsNotify.test_subclass.<locals>.ANr   r=   r=   r=   r>   rR     rx   rR   c                   @   rw   )z,TestHasTraitsNotify.test_subclass.<locals>.BNrJ   rK   rL   r   r   r=   r=   r=   r>   rp     rx   rp   r   r  d         Y@r   rX   rQ   r   rG   rR   rp   r   r=   r=   r>   test_subclass     z!TestHasTraitsNotify.test_subclassc                 C   s   G dd dt }G dd d|}| }|| jd || jd d|_d|_| t| jd | t| j	d d	|_d
|_| 
d| jv  | 
d| j	v  d S )Nc                   @   rw   )z3TestHasTraitsNotify.test_notify_subclass.<locals>.ANr   r=   r=   r=   r>   rR     rx   rR   c                   @   rw   )z3TestHasTraitsNotify.test_notify_subclass.<locals>.BNr  r=   r=   r=   r>   rp     rx   rp   rQ   r   r   r  rW   r  r  r  )r   r  r   r   rQ   r   rX   r  r   r   r  r  r=   r=   r>   test_notify_subclass  s   z(TestHasTraitsNotify.test_notify_subclassc                 C   s   G dd dt }| }d|_| t|jd d|_| d|jv  G dd d|}| }d|_d|_| d|jv  | d	|jv  d S )
Nc                   @      e Zd Ze Zg Zdd ZdS )z1TestHasTraitsNotify.test_static_notify.<locals>.Ac                 S   r   rg   r   r   r=   r=   r>   
_a_changed  r   z<TestHasTraitsNotify.test_static_notify.<locals>.A._a_changedN)rJ   rK   rL   r   rQ   r   r  r=   r=   r=   r>   rR         rR   r   rW   r  c                   @   r  )z1TestHasTraitsNotify.test_static_notify.<locals>.Bc                 S   r   rg   r   r   r=   r=   r>   
_b_changed  r   z<TestHasTraitsNotify.test_static_notify.<locals>.B._b_changedN)rJ   rK   rL   r   r   r   r  r=   r=   r=   r>   rp     r  rp   r  r  )r   rQ   rX   r  r   r  r   r   )rG   rR   rQ   rp   r   r=   r=   r>   test_static_notify  s   z&TestHasTraitsNotify.test_static_notifyc                    s   fdd} fdd} fdd} fdd} fd	d
}G dd dt }| }||d d|_  jd |j|ddd ||d d|_  jd |j|ddd ||d d|_  jd |j|ddd ||d d|_  jd |j|ddd ||d d|_  jddd|f  t|jd d d |j|ddd  t|jd d d d S )Nc                      
   d _ d S Nr=   cbr=   r   r=   r>   	callback0  r   z7TestHasTraitsNotify.test_notify_args.<locals>.callback0c                    s   | f _ d S rg   r!  )r4   r   r=   r>   	callback1     z7TestHasTraitsNotify.test_notify_args.<locals>.callback1c                    s   | |f _ d S rg   r!  )r4   r6   r   r=   r>   	callback2     z7TestHasTraitsNotify.test_notify_args.<locals>.callback2c                    s   | ||f _ d S rg   r!  r4   r5   r6   r   r=   r>   	callback3     z7TestHasTraitsNotify.test_notify_args.<locals>.callback3c                    s   | |||f _ d S rg   r!  )r4   r5   r6   rk   r   r=   r>   	callback4     z7TestHasTraitsNotify.test_notify_args.<locals>.callback4c                   @   rw   )z/TestHasTraitsNotify.test_notify_args.<locals>.ANr   r=   r=   r=   r>   rR   !  rx   rR   rQ   rW   r=   Tr  r  rQ     )rQ   r.  '  )rQ   r.  r/  i rH   r2   r   )r   r  rQ   rX   r"  r  _trait_notifiers)rG   r#  r$  r&  r)  r+  rR   rQ   r=   r   r>   test_notify_args  s:   z$TestHasTraitsNotify.test_notify_argsc                 C      G dd dt }G dd d|}| }| jd7  _| |j|j | |j|j | jd7  _| |j|j | |j|j d S )Nc                       6   e Zd ZdgZedZdZ fddZdd Z  Z	S )z4TestHasTraitsNotify.test_notify_only_once.<locals>.ArQ   r   c                    &   t  jdi | | | jdg d S NrQ   r=   )r   __init__r  	listener1rG   r   r   r=   r>   r6  H     z=TestHasTraitsNotify.test_notify_only_once.<locals>.A.__init__c                 S      |  j d7  _ d S Nr2   r   r   r=   r=   r>   r7  L  r,  z>TestHasTraitsNotify.test_notify_only_once.<locals>.A.listener1
rJ   rK   rL   	listen_tor   rQ   r   r6  r7  r   r=   r=   r   r>   rR   B      rR   c                       s4   e Zd ZdZdZ fddZdd Zdd Z  ZS )z4TestHasTraitsNotify.test_notify_only_once.<locals>.Br   c                    "   t  jdi | | | j d S r   )r   r6  r  	listener2r8  r   r=   r>   r6  T     z=TestHasTraitsNotify.test_notify_only_once.<locals>.B.__init__c                 S   r:  r;  r   r   r=   r=   r>   rA  X  r,  z>TestHasTraitsNotify.test_notify_only_once.<locals>.B.listener2c                 S   r:  r;  dr   r=   r=   r>   r  [  r,  z?TestHasTraitsNotify.test_notify_only_once.<locals>.B._a_changed)	rJ   rK   rL   r   rE  r6  rA  r  r   r=   r=   r   r>   rp   O  s    rp   r2   r   rQ   rX   r   r   rE  r  r=   r=   r>   test_notify_only_onceA  s   z)TestHasTraitsNotify.test_notify_only_onceNrJ   rK   rL   r   r   r   r  r  r  r  r  r1  rG  r=   r=   r=   r>   r     s    0r   c                   @   r   )TestObserveDecoratorc                 C   r   rg   r   r   r=   r=   r>   r   h  r   zTestObserveDecorator.setUpc                 C      | j | d S rg   r   rF   r=   r=   r>   r   l  r*  zTestObserveDecorator.notify1c                 C   rJ  rg   r   rF   r=   r=   r>   r   o  r*  zTestObserveDecorator.notify2c                 C   s   G dd dt }| }|| j d|_| t| jd d|_| t| jd d|_tddd|d}| 	|| jv  d|_td	dd|d}| 	|| jv  | 
tt|dd
 | 
tt|d	d
 g | _|| j d|_d|_| t| jd d S )Nc                   @   r  )z/TestObserveDecorator.test_notify_all.<locals>.ANr  r=   r=   r=   r>   rR   s  r   rR   r   r  rW   rQ   rH   r  r   r  r   r
  )r   r,   r   rQ   rX   r  r   r   r?   r  rq   r"   r  	unobserverG   rR   rQ   rH   r=   r=   r>   r  r  s(   z$TestObserveDecorator.test_notify_allc                 C   sx   G dd dt }| }|| jd d|_| t| jd d|_tddd|d}| || jv  | 	t
t|dd d S )Nc                   @   r  )z/TestObserveDecorator.test_notify_one.<locals>.ANr  r=   r=   r=   r>   rR     r   rR   rQ   r   rW   rH   r  )r   r,   r   rQ   rX   r  r   r?   r  rq   r"   r  rL  r=   r=   r>   r    s   z$TestObserveDecorator.test_notify_onec                 C   r  )	Nc                   @   rw   )z-TestObserveDecorator.test_subclass.<locals>.ANr   r=   r=   r=   r>   rR     rx   rR   c                   @   rw   )z-TestObserveDecorator.test_subclass.<locals>.BNr  r=   r=   r=   r>   rp     rx   rp   r   r  r  r  r  r  r=   r=   r>   r    r  z"TestObserveDecorator.test_subclassc                 C   s   G dd dt }G dd d|}| }|| jd || jd d|_d|_| t| jd | t| j	d d	|_d
|_t
ddd	|d}| || jv  t
ddd
|d}| || j	v  d S )Nc                   @   rw   )z4TestObserveDecorator.test_notify_subclass.<locals>.ANr   r=   r=   r=   r>   rR     rx   rR   c                   @   rw   )z4TestObserveDecorator.test_notify_subclass.<locals>.BNr  r=   r=   r=   r>   rp     rx   rp   rQ   r   r   r  rW   r  rH   )r   r,   r   r   rQ   r   rX   r  r   r   r?   r  )rG   rR   rp   r   rH   r=   r=   r>   r    s   z)TestObserveDecorator.test_notify_subclassc                 C   s   G dd dt }| }d|_| t|jd d|_tddd|d}| ||jv  d|_| t|jd td	dd|d}| ||jv  G d
d d|}| }d|_d|_tddd|d}| ||jv  td	dd|d}| ||j	v  d S )Nc                   @   s@   e Zd Ze Ze Zg Zg Zeddd Z	ee
dd ZdS )z2TestObserveDecorator.test_static_notify.<locals>.ArQ   c                 S   rJ  rg   r   rF   r=   r=   r>   r       z=TestObserveDecorator.test_static_notify.<locals>.A._a_changedc                 S   rJ  rg   )_notify_anyr   rF   r=   r=   r>   _any_changed  rM  z?TestObserveDecorator.test_static_notify.<locals>.A._any_changedN)rJ   rK   rL   r   rQ   r   r   rN  r,   r  r   rO  r=   r=   r=   r>   rR     s    
rR   r   rW   rQ   rH   r2   r   r   c                   @   s&   e Zd Ze Zg Zeddd ZdS )z2TestObserveDecorator.test_static_notify.<locals>.Br   c                 S   rJ  rg   r   rF   r=   r=   r>   r    rM  z=TestObserveDecorator.test_static_notify.<locals>.B._b_changedN)rJ   rK   rL   r   r   r   r,   r  r=   r=   r=   r>   rp     s
    rp   r  r  )
r   rQ   rX   r  r   r?   r  r   rN  r   )rG   rR   rQ   rH   rp   r   r=   r=   r>   r    s&   z'TestObserveDecorator.test_static_notifyc                    s    fdd} fdd}G dd dt }| }||d d|_  jd	 ||d ||d d
|_tddd
|d}  j|  t|j	d d d ||d  t|j	d d d d S )Nc                      r  r   r!  r=   r   r=   r>   r#    r   z8TestObserveDecorator.test_notify_args.<locals>.callback0c                    s
   |  _ d S rg   r!  rH   r   r=   r>   r$    r   z8TestObserveDecorator.test_notify_args.<locals>.callback1c                   @   rw   )z0TestObserveDecorator.test_notify_args.<locals>.ANr   r=   r=   r=   r>   rR     rx   rR   rQ   rW   r=   r  rH   r2   r   )
r   r  rQ   rX   r"  rK  r,   r?   r  r0  )rG   r#  r$  rR   rQ   rH   r=   r   r>   r1    s   z%TestObserveDecorator.test_notify_argsc                 C   r2  )Nc                       r3  )z5TestObserveDecorator.test_notify_only_once.<locals>.ArQ   r   c                    r4  r5  )r   r6  r,   r7  r8  r   r=   r>   r6    r9  z>TestObserveDecorator.test_notify_only_once.<locals>.A.__init__c                 S   r:  r;  r<  rF   r=   r=   r>   r7    r,  z?TestObserveDecorator.test_notify_only_once.<locals>.A.listener1r=  r=   r=   r   r>   rR     r?  rR   c                       s<   e Zd ZdZdZ fddZdd Zeddd Z  Z	S )	z5TestObserveDecorator.test_notify_only_once.<locals>.Br   c                    r@  r   )r   r6  r,   rA  r8  r   r=   r>   r6    rB  z>TestObserveDecorator.test_notify_only_once.<locals>.B.__init__c                 S   r:  r;  rC  rF   r=   r=   r>   rA    r,  z?TestObserveDecorator.test_notify_only_once.<locals>.B.listener2rQ   c                 S   r:  r;  rD  rF   r=   r=   r>   r    s   z@TestObserveDecorator.test_notify_only_once.<locals>.B._a_changed)
rJ   rK   rL   r   rE  r6  rA  r,   r  r   r=   r=   r   r>   rp     s    rp   r2   rF  r  r=   r=   r>   rG     s   z*TestObserveDecorator.test_notify_only_onceNrH  r=   r=   r=   r>   rI  g  s    *rI  c                   @   r   )TestHasTraitsc                 C   sj   G dd dt }| }| t| ddg | t| ddg | |d | |d d S )Nc                   @   r  )z)TestHasTraits.test_trait_names.<locals>.ANrJ   rK   rL   r   ir   fr=   r=   r=   r>   rR   )  r   rR   rT  rS  g)r   rX   sortedtrait_namesclass_trait_namesr  	has_traitassertFalserT   r=   r=   r>   test_trait_names(  s   zTestHasTraits.test_trait_namesc                 C   sf   G dd dt }| }| |d | |d d|_|j | |d | |d d S )Nc                   @   r  )z-TestHasTraits.test_trait_has_value.<locals>.ANrR  r=   r=   r=   r>   rR   4  r   rR   rT  rU  r2   rS  )r   rZ  trait_has_valuerS  rT  r  rT   r=   r=   r>   test_trait_has_value3  s   z"TestHasTraits.test_trait_has_valuec                 C   sX   t dg G dd dt}W d    n1 sw   Y  | }| |ddd d S )N1metadata should be set using the \.tag\(\) methodc                   @      e Zd ZeddZdS )z7TestHasTraits.test_trait_metadata_deprecated.<locals>.AMY_VALUE
config_keyNrJ   rK   rL   r   rS  r=   r=   r=   r>   rR   C  r   rR   rS  rb  r`  )r3   r   rX   r   rT   r=   r=   r>   test_trait_metadata_deprecated@  s
   z,TestHasTraits.test_trait_metadata_deprecatedc                 C   s.   G dd dt }| }| |ddd d S )Nc                   @   s   e Zd Ze jddZdS )z,TestHasTraits.test_trait_metadata.<locals>.Ar`  ra  N)rJ   rK   rL   r   r   rS  r=   r=   r=   r>   rR   J  s    rR   rS  rb  r`  r   rX   r   rT   r=   r=   r>   test_trait_metadataI  rz   z!TestHasTraits.test_trait_metadatac                 C   sD   G dd dt }| }| |ddd  | |dddd d S )Nc                   @   rw   )z4TestHasTraits.test_trait_metadata_default.<locals>.ANrc  r=   r=   r=   r>   rR   Q  rx   rR   rS  rb  r)   re  rT   r=   r=   r>   test_trait_metadata_defaultP  s   z)TestHasTraits.test_trait_metadata_defaultc                 C   sR   G dd dt }| }| | t|j|jd | | t|j|jd d S )Nc                   @   r  )z$TestHasTraits.test_traits.<locals>.ANrR  r=   r=   r=   r>   rR   Y  r   rR   )rS  rT  )r   rX   traitsr9   rS  rT  class_traitsrT   r=   r=   r>   test_traitsX  s    zTestHasTraits.test_traitsc                 C   s   G dd dt }| }| | t|j|j|jd |jddd}| |t|jd |jdd	 d
}| |t|j|j|jd d S )Nc                   @   s4   e Zd Ze jdddZe jdddZedZdS )z-TestHasTraits.test_traits_metadata.<locals>.AVALUE1VALUE2rb  other_thingVALUE3r   N)	rJ   rK   rL   r   r   rS  r   rT  jr=   r=   r=   r>   rR   b  s    rR   rS  rT  rp  rk  rl  rm  rS  c                 S   rZ   NTr=   r   r=   r=   r>   <lambda>n      z4TestHasTraits.test_traits_metadata.<locals>.<lambda>ra  )r   rX   rh  r9   rS  rT  rp  rG   rR   rQ   rh  r=   r=   r>   test_traits_metadataa  s     z"TestHasTraits.test_traits_metadatac                 C   s   t dgd  G dd dt}W d    n1 sw   Y  | }| | t|j|j|jd |jddd}| |t|jd	 |jd
d d}| |t|j|j|jd d S )Nr^  r   c                   @   s,   e Zd ZedddZedddZedZdS )z8TestHasTraits.test_traits_metadata_deprecated.<locals>.Ark  rl  rm  ro  r   N)rJ   rK   rL   r   rS  r   rT  rp  r=   r=   r=   r>   rR   t  s    rR   rq  rk  rl  rm  rr  c                 S   rZ   rs  r=   rt  r=   r=   r>   ru    rv  z?TestHasTraits.test_traits_metadata_deprecated.<locals>.<lambda>ra  )r3   r   rX   rh  r9   rS  rT  rp  rw  r=   r=   r>   test_traits_metadata_deprecatedq  s     z-TestHasTraits.test_traits_metadata_deprecatedc                 C   s<   G dd dt }|ddd}| |jd | |jd d S )Nc                   @   r  )z"TestHasTraits.test_init.<locals>.AN)rJ   rK   rL   r   rS  r   r   r=   r=   r=   r>   rR     r   rR   r2   r  )rS  r   )r   rX   rS  r   rT   r=   r=   r>   	test_init  s   zTestHasTraits.test_initc                 C   s6   G dd dt }|d}| |jd | t| d S )Nc                       s$   e Zd ZedZ fddZ  ZS )z-TestHasTraits.test_positional_args.<locals>.Ar   c                    s   t    || _d S rg   )r   r6  rS  )rG   rS  r   r=   r>   r6    s   

z6TestHasTraits.test_positional_args.<locals>.A.__init__)rJ   rK   rL   r   rS  r6  r   r=   r=   r   r>   rR     s    rR   r   )r   rX   rS  rq   	TypeErrorrT   r=   r=   r>   test_positional_args  s   z"TestHasTraits.test_positional_argsN)rJ   rK   rL   r[  r]  rd  rf  rg  rj  rx  ry  rz  r|  r=   r=   r=   r>   rQ  '  s    			rQ  c                   @   sL   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S )TestTypec                 C   s\   G dd d}G dd dt }| }| |jt ||_| |j| | tt|dd d S )Nc                   @      e Zd ZdS )z TestType.test_default.<locals>.BNrJ   rK   rL   r=   r=   r=   r>   rp         rp   c                   @   r_  )z TestType.test_default.<locals>.AT
allow_noneNrJ   rK   rL   r%   klassr=   r=   r=   r>   rR     r   rR   r  rW   )r   rX   r  objectrq   r"   r  )rG   rp   rR   rQ   r=   r=   r>   test_default  s   zTestType.test_defaultc                    sR  G dd d G dd d G  fdddt }| |jjt | |jjt | |jjd  | |jjt | |jj  | |jj  | |jj  | |jj  | |j	jd  | |j	j  | |j
j | |j
j  | }| |jt | |jd  | |j  | |j  | |j	d  | |j
 d S )Nc                   @   r~  )z(TestType.test_default_options.<locals>.BNr  r=   r=   r=   r>   rp     r  rp   c                   @   r~  )z(TestType.test_default_options.<locals>.CNr  r=   r=   r=   r>   r     r  r   c                       sJ   e Zd Ze ZedddZe Ze dZed ddZe dZ	dS )z(TestType.test_default_options.<locals>.ANTr  r  )r   r  r  )r   r  )
rJ   rK   rL   r%   k1k2k3k4k5k6r=   rp   r   r=   r>   rR     s    
rR   )r   assertIsr  r   r  r  r  r  r  r  r  rT   r=   r  r>   test_default_options  s,   
zTestType.test_default_optionsc                    sr   G dd d G dd d}G  fdddt }| }| |j  | tt|d| | tt|dt  |_d S )Nc                   @   r~  )zTestType.test_value.<locals>.BNr  r=   r=   r=   r>   rp     r  rp   c                   @   r~  )zTestType.test_value.<locals>.CNr  r=   r=   r=   r>   r     r  r   c                          e Zd Ze ZdS )zTestType.test_value.<locals>.ANr  r=   rp   r=   r>   rR     rM   rR   r  )r   rX   r  rq   r"   r  r  rG   r   rR   rQ   r=   r  r>   
test_value  s   
zTestType.test_valuec                    sp   G dd d G dd d }G  fdddt }| }| |j  | tt|dd  ||_| |j| d S )Nc                   @   r~  )z#TestType.test_allow_none.<locals>.BNr  r=   r=   r=   r>   rp     r  rp   c                   @   r~  )z#TestType.test_allow_none.<locals>.CNr  r=   r=   r=   r>   r     r  r   c                       r  )z#TestType.test_allow_none.<locals>.ANr  r=   r  r=   r>   rR     rM   rR   r  )r   rX   r  rq   r"   r  r  r=   r  r>   test_allow_none  s   zTestType.test_allow_nonec                 C   s<   G dd dt }| t| G dd dt }| t| d S )Nc                   @   r   )'TestType.test_validate_klass.<locals>.Azno strings allowedNr  r=   r=   r=   r>   rR     rM   rR   c                   @   r   )r  zrub.adub.DuckNr  r=   r=   r=   r>   rR     rM   )r   rq   ImportError)rG   rR   r=   r=   r>   test_validate_klass  s   zTestType.test_validate_klassc                    sX   G dd d G  fdddt }| t| G  fdddt }| tt| d d S )Nc                   @   r~  )z)TestType.test_validate_default.<locals>.BNr  r=   r=   r=   r>   rp      r  rp   c                       s   e Zd Zed ZdS )z)TestType.test_validate_default.<locals>.Aro   Nr  r=   r  r=   r>   rR     r   rR   c                       s   e Zd Zed ZdS )z)TestType.test_validate_default.<locals>.CNr  r=   r  r=   r>   r     r   r   r  )r   rq   r  r"   rr   )rG   rR   r   r=   r  r>   test_validate_default  s
   zTestType.test_validate_defaultc                 C   sL   G dd dt }ddlm} | }||_| |j| | tt|dd d S )Nc                   @   r   )z"TestType.test_str_klass.<locals>.Atraitlets.config.ConfigNr  r=   r=   r=   r>   rR     rM   rR   r   Configr  rW   )r   traitlets.configr  r  rX   rq   r"   r  )rG   rR   r  rQ   r=   r=   r>   test_str_klass  s   zTestType.test_str_klassc                 C   s8   G dd dt }|dd}ddlm} | |j| d S )Nc                   @   rw   )z&TestType.test_set_str_klass.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   r  r  r   r  )r   r  r  rX   r  )rG   rR   rQ   r  r=   r=   r>   test_set_str_klass  s   
zTestType.test_set_str_klassN)rJ   rK   rL   r  r  r  r  r  r  r  r  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S )TestInstancec                    s   G dd d G dd d }G dd d}G  fdddt }| }| |jd u    |_| t|j  | |_| t|j  | tt|d	  | tt|d	| | tt|d	|  d S )
Nc                   @   r~  )z$TestInstance.test_basic.<locals>.FooNr  r=   r=   r=   r>   r   %  r  r   c                   @   r~  )z$TestInstance.test_basic.<locals>.BarNr  r=   r=   r=   r>   Bar(  r  r  c                   @   r~  )z$TestInstance.test_basic.<locals>.BahNr  r=   r=   r=   r>   Bah+  r  r  c                          e Zd Ze ddZdS )z"TestInstance.test_basic.<locals>.ATr  NrJ   rK   rL   r   r]   r=   r   r=   r>   rR   .      rR   r]   )r   r  r]   rh   rq   r"   r  rG   r  r  rR   rQ   r=   r  r>   
test_basic$  s   zTestInstance.test_basicc                    s   G dd d G dd d }G dd d}G  fdddt G fd	d
d
t}| }| |jd u    |_| t|j  | |_| t|j  | tt|d  | tt|d| | tt|d|  d S )Nc                   @   r~  )z,TestInstance.test_default_klass.<locals>.FooNr  r=   r=   r=   r>   r   <  r  r   c                   @   r~  )z,TestInstance.test_default_klass.<locals>.BarNr  r=   r=   r=   r>   r  ?  r  r  c                   @   r~  )z,TestInstance.test_default_klass.<locals>.BahNr  r=   r=   r=   r>   r  B  r  r  c                       rb   )z4TestInstance.test_default_klass.<locals>.FooInstanceN)rJ   rK   rL   r  r=   r  r=   r>   FooInstanceE  rS   r  c                       s   e Zd Z ddZdS )z*TestInstance.test_default_klass.<locals>.ATr  N)rJ   rK   rL   r]   r=   )r  r=   r>   rR   H  r   rR   r]   )r   r   r  r]   rh   rq   r"   r  r  r=   )r   r  r>   test_default_klass;  s   zTestInstance.test_default_klassc                    sD   G dd d G  fdddt }| }| }| |j|ju d S )Nc                   @   r~  )z3TestInstance.test_unique_default_value.<locals>.FooNr  r=   r=   r=   r>   r   V  r  r   c                       s   e Zd Ze di ZdS )z1TestInstance.test_unique_default_value.<locals>.Ar=   Nr  r=   r  r=   r>   rR   Y  r  rR   )r   r  r]   rG   rR   rQ   r   r=   r  r>   test_unique_default_valueU  s
   z&TestInstance.test_unique_default_valuec                    s   G dd dG dd d}G dd d G fdddt }| }| |jjd	 G  fd
ddt }| }| |jjd	 | |jjd G fdddt }| }| |jd u  d S )Nc                   @   r@   )z&TestInstance.test_args_kw.<locals>.Fooc                 S   
   || _ d S rg   rC  )rG   r   r=   r=   r>   r6  b  r   z/TestInstance.test_args_kw.<locals>.Foo.__init__NrJ   rK   rL   r6  r=   r=   r=   r>   r   a  rM   r   c                   @   r~  )z&TestInstance.test_args_kw.<locals>.BarNr  r=   r=   r=   r>   r  e  r  r  c                   @   r@   )z&TestInstance.test_args_kw.<locals>.Bahc                 S      || _ || _d S rg   )r   rE  )rG   r   rE  r=   r=   r>   r6  i  r   z/TestInstance.test_args_kw.<locals>.Bah.__init__Nr  r=   r=   r=   r>   r  h  rM   r  c                       s   e Zd Ze dZdS )z$TestInstance.test_args_kw.<locals>.ArW   Nr  r=   r  r=   r>   rR   m  r   rR   rW   c                       s    e Zd Ze dedddZdS )z$TestInstance.test_args_kw.<locals>.Br  r   rD  )r   kwN)rJ   rK   rL   r   r9   r]   r=   )r  r=   r>   rp   s  r   rp   r   c                       r  )z$TestInstance.test_args_kw.<locals>.CTr  Nr  r=   r  r=   r>   r   z  r  r   )r   rX   r]   r   rE  r  )rG   r  rR   rQ   rp   r   r   r   r=   )r  r   r>   test_args_kw`  s   zTestInstance.test_args_kwc                    s^   G dd d G  fdddt }| }| t |j W d    d S 1 s(w   Y  d S )Nc                   @   r~  )z*TestInstance.test_bad_default.<locals>.FooNr  r=   r=   r=   r>   r     r  r   c                       r  )z(TestInstance.test_bad_default.<locals>.ANr  r=   r  r=   r>   rR     rM   rR   )r   rq   r"   r]   rT   r=   r  r>   test_bad_default  s   "zTestInstance.test_bad_defaultc                    s*   G dd d  fdd}|  t| d S )Nc                   @   r~  )z'TestInstance.test_instance.<locals>.FooNr  r=   r=   r=   r>   r     r  r   c                     s   G  fdddt } d S )Nc                       s   e Zd Ze  ZdS )z4TestInstance.test_instance.<locals>.inner.<locals>.ANr  r=   r  r=   r>   rR     r   rR   r   )rR   r  r=   r>   inner  s   z)TestInstance.test_instance.<locals>.innerrq   r"   )rG   r  r=   r  r>   test_instance  s   zTestInstance.test_instanceN)	rJ   rK   rL   r  r  r  r  r  r  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 )TestThisc                 C   sT   G dd dt }| }| |jd  | }||_| |j| | tt|dd d S )Nc                   @   rw   )z%TestThis.test_this_class.<locals>.FooNrJ   rK   rL   r!   thisr=   r=   r=   r>   r     rx   r   r  rW   )r   rX   r  rq   r"   r  )rG   r   rT  rU  r=   r=   r>   r     s   zTestThis.test_this_classc                 C   s4   G dd dt }| }| |_| t|j| d S )Nc                   @   rw   )z$TestThis.test_this_inst.<locals>.FooNr  r=   r=   r=   r>   r     rx   r   )r   r  r  rh   )rG   r   rT  r=   r=   r>   test_this_inst  s   zTestThis.test_this_instc                 C   sX   G dd dt }G dd d|}| }| }||_||_| |j| | |j| d S )Nc                   @   rw   )z#TestThis.test_subclass.<locals>.FooNrJ   rK   rL   r!   r   r=   r=   r=   r>   r     rx   r   c                   @   r~  )z#TestThis.test_subclass.<locals>.BarNr  r=   r=   r=   r>   r    r  r  )r   r   rX   rG   r   r  rT  r   r=   r=   r>   r    s   zTestThis.test_subclassc                 C   sV   G dd dt }G dd d|}| }| }||_| |j| | tt|d| d S )Nc                   @   rw   )z,TestThis.test_subclass_override.<locals>.FooNr  r=   r=   r=   r>   r     rx   r   c                   @   rw   )z,TestThis.test_subclass_override.<locals>.BarNr  r=   r=   r=   r>   r    rx   r  r   )r   r   rX   rq   r"   r  r  r=   r=   r>   test_subclass_override  s   zTestThis.test_subclass_overridec                 C   sf   G dd dt }|d|dd|ddgd}| t dd	g|_W d    d S 1 s,w   Y  d S )
Nc                   @   s   e Zd Ze Zee ZdS )z-TestThis.test_this_in_container.<locals>.TreeN)rJ   rK   rL   r'   r^   r   r!   leavesr=   r=   r=   r>   Tree  r   r  r   r   r   buzz)r^   r  r2   r   )r   rq   r"   r  )rG   r  treer=   r=   r>   test_this_in_container  s
   "zTestThis.test_this_in_containerN)rJ   rK   rL   r   r  r  r  r  r=   r=   r=   r>   r    s    r  c                   @   sH   e Zd 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S )TraitTestBasez+A best testing class for basic trait types.c                 C   s   || j _d S rg   )rk   r^   rG   r^   r=   r=   r>   assign  r%  zTraitTestBase.assignc                 C   r   rg   r=   r  r=   r=   r>   coerce  r_   zTraitTestBase.coercec                 C   s>   t | dr| jD ]}| | | | jj| | qd S d S )N_good_values)hasattrr  r  rX   rk   r^   r  r  r=   r=   r>   test_good_values  s   


zTraitTestBase.test_good_valuesc              	   C   sH   t | dr | jD ]}z
| t| j| W q ty   J |w d S d S )N_bad_values)r  r  rq   r"   r  AssertionErrorr  r=   r=   r>   test_bad_values  s   

zTraitTestBase.test_bad_valuesc                 C   s$   t | dr| | j| jj d S d S N_default_value)r  rX   r  rk   r^   r   r=   r=   r>   test_default_value  s   
z TraitTestBase.test_default_valuec              	   C   s   t | drKt | drMd | jv rO| j d }z*d|_| jd  | d  | | jjd  | 	  | 
  W d|_| jd  d S d|_| jd  w d S d S d S )Nr  r  r^   TF)r  r  rk   rh  r  r	  r  rX   r^   r  r  r   )rG   traitr=   r=   r>   r    s&   


zTraitTestBase.test_allow_nonec                 C   s   t | dr| j| j_d S d S r  )r  r  rk   r^   r   r=   r=   r>   tearDown  s   
zTraitTestBase.tearDownN)rJ   rK   rL   __doc__r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    r  c                   @   rw   )AnyTraitN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r        
r  c                   @   s2   e Zd Ze ZdZdddgddidddgZg ZdS )AnyTraitTestNr  tenrW   r                ?)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r  
  s
    r  c                   @   r   )
UnionTraitN)rJ   rK   rL   r(   r%   r   r^   r=   r=   r=   r>   r        r  c                   @   s*   e Zd ZeddZeedgZg ddgZdS )UnionTraitTestr  r   Tr   r  N)	rJ   rK   rL   r  rk   ri   floatr  r  r=   r=   r=   r>   r    s    

r  c                   @   rw   )CallableTraitN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r    r  r  c                   @   s2   e Zd Zedd dZeedd gZg ddgZdS )CallableTraitTestc                 C      t | S rg   )r8   r   r=   r=   r>   ru  &      zCallableTraitTest.<lambda>r   c                 C   r  rg   )printr  r=   r=   r>   ru  '  r  r2    N)	rJ   rK   rL   r  rk   ri   rV  r  r  r=   r=   r=   r>   r  $  s    r  c                   @   s   e Zd Ze e B ZdS )OrTraitN)rJ   rK   rL   r   r'   r^   r=   r=   r=   r>   r  +      r  c                   @   s$   e Zd Ze Zg dZg ddgZdS )OrTraitTest)TFr  r  r  N)rJ   rK   rL   r  rk   r  r  r=   r=   r=   r>   r  0  s    r  c                   @      e Zd ZedddZdS )IntTraitc   iminNrJ   rK   rL   r   r^   r=   r=   r=   r>   r  7  r  r  c                   @   sF   e Zd Ze ZdZddgZddgddiddddd	d
ddddddgZdS )TestIntr  rW   r  r  Nr  333333$@333333$10L-10L10.1-10.110-10i8)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r  <  s(    r  c                   @   r   )	CIntTrait5NrJ   rK   rL   r   r^   r=   r=   r=   r>   r  T  rM   r  c                   @   >   e Zd Ze ZdZg dZddgddiddddgZd	d
 ZdS )TestCIntr   r  r  rW   r  g      $r  r  rW   r  Nr  r  c                 C      t |S rg   ri   rG   nr=   r=   r>   r  _     zTestCInt.coerce)	rJ   rK   rL   r  rk   r  r  r  r  r=   r=   r=   r>   r  X      r  c                   @   r  )MinBoundCIntTraitr  r   r  Nr  r=   r=   r=   r>   r  c  r  r  c                   @   &   e Zd Ze ZdZg dZg dZdS )TestMinBoundCIntr   )r   g      @3)g@r   g      N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r  g  
    r  c                   @   r   )	LongTraitr  NrJ   rK   rL   r   r^   r=   r=   r=   r>   r
  o      r
  c                   @   sD   e Zd Ze ZdZddgZddgddiddddd	d
dddddgZdS )TestLongr  rW   r  r  r  Nr  r  r  r  r  r  r  r  r  )rJ   rK   rL   r
  rk   r  r  r  r=   r=   r=   r>   r  t  s&    r  c                   @   r  )MinBoundLongTraitr  r   r  Nr  r=   r=   r=   r>   r    r  r  c                   @   &   e Zd Ze ZdZddgZddgZdS )TestMinBoundLongr  r   rW   r   r  N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    r	  r  c                   @   r  )MaxBoundLongTraitr   rW   maxNr  r=   r=   r=   r>   r    r  r  c                   @   r  )TestMaxBoundLongr   rW   r~   r   N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    r	  r  c                   @   r   )
CLongTraitr  NrJ   rK   rL   r   r^   r=   r=   r=   r>   r    rM   r  c                   @   r  )	TestCLongr   r  r  rW   r  Nr  r  c                 C   r  rg   r  r   r=   r=   r>   r    r  zTestCLong.coerce)	rJ   rK   rL   r  rk   r  r  r  r  r=   r=   r=   r>   r    r  r  c                   @   r  )MaxBoundCLongTraitr  rW   r  Nr  r=   r=   r=   r>   r    r  r  c                   @   s&   e Zd Ze ZdZg dZddgZdS )TestMaxBoundCLongr   )rW   r  g$@g      &@11N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    r	  r  c                   @   r   )IntegerTraitr2   NrJ   rK   rL   r   r^   r=   r=   r=   r>   r    rM   r  c                   @   s   e Zd Ze ZdZdd ZdS )TestIntegerr2   c                 C   r  rg   r  r   r=   r=   r>   r    r  zTestInteger.coerceN)rJ   rK   rL   r  rk   r  r  r=   r=   r=   r>   r    r  r  c                   @   r  )MinBoundIntegerTraitr   r   r  Nr  r=   r=   r=   r>   r    r  r  c                   @   "   e Zd Ze ZdZdZddgZdS )TestMinBoundIntegerr   )r   r   r   r  N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r!    
    r!  c                   @   r  )MaxBoundIntegerTraitr2   r   r  Nr  r=   r=   r=   r>   r#    r  r#  c                   @   r   )TestMaxBoundIntegerr2   )r   r  r   rW   N)rJ   rK   rL   r#  rk   r  r  r  r=   r=   r=   r>   r$    r"  r$  c                   @   r  )
FloatTrait     X@      i@r  N)rJ   rK   rL   r   r^   r=   r=   r=   r>   r%    r  r%  c                   @   sB   e Zd Ze ZdZg dZddgddiddddd	d
ddddgZdS )	TestFloatr&  )rW   r  r  r  r  rW   r  Nr  r  r  r  r  r  r  g      i@)rJ   rK   rL   r%  rk   r  r  r  r=   r=   r=   r>   r(    s$    r(  c                   @   r  )CFloatTraitz99.0r'  r  N)rJ   rK   rL   r
   r^   r=   r=   r=   r>   r)    r  r)  c                   @   s@   e Zd Ze ZdZg dZddgddiddddd	gZd
d ZdS )
TestCFloatr&  )rW   r  g      %@z10.0r  r  r  rW   r  Nr  g33333i@z200.1c                 C   r  rg   )r  rG   r   r=   r=   r>   r    r  zTestCFloat.coerce)	rJ   rK   rL   r)  rk   r  r  r  r  r=   r=   r=   r>   r*    s    r*  c                   @   r   )ComplexTrait     X@     XN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r,    r  r,  c                   @   s6   e Zd Ze ZdZg dZddddgddiddgZdS )	TestComplexr-  )
rW   r  r  r  y              $@y      $@      $@y      $@      $y        333333$@y333333$@333333$@y333333$@333333$r  r  r  rW   r  N)rJ   rK   rL   r,  rk   r  r  r  r=   r=   r=   r>   r.    s
    r.  c                   @   r   )
BytesTrait   stringN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r/  )  r  r/  c                   @   s@   e Zd Ze ZdZg dZddddddgdgddid	d
dgZd
S )	TestBytesr0  )s   10s   -10s   10Ls   -10Ls   10.1s   -10.1r0  rW   r  r  r  r  r  r  Nstring)rJ   rK   rL   r/  rk   r  r  r  r=   r=   r=   r>   r1  .  s
    &r1  c                   @   r   )UnicodeTraitunicodeN)rJ   rK   rL   r'   r^   r=   r=   r=   r>   r3  7  r  r3  c                
   @   sF   e Zd Ze ZdZg dZddddddgdgddid	d
g
Zdd Zd
S )TestUnicoder4  )
r  r  r  r  r  r  r  r2     €s
   bytestringrW   r  r  r  r  r  r  Nc                 C   r  rg   r0   r+  r=   r=   r>   r  D  r  zTestUnicode.coerce)	rJ   rK   rL   r3  rk   r  r  r  r  r=   r=   r=   r>   r5  <  s     r5  c                   @   r   )ObjectNameTraitabcN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r7  H  rM   r7  c                   @   sH   e Zd Ze ZdZg dZddddddd	d
ddde egZe	d dS )TestObjectNamer8  )rQ   ghg9g__Ga345_r2   r  r6  9g!z#abczaj@a.bza()za[0]N   þ)
rJ   rK   rL   r7  rk   r  r  r  r  r   r=   r=   r=   r>   r9  L  s&    r9  c                   @   r   )DottedObjectNameTraitrA  N)rJ   rK   rL   r   r^   r=   r=   r=   r>   rC  c  rM   rC  c                   @   s0   e Zd Ze ZdZg dZg dZed dS )TestDottedObjectNamerA  )rR   zy.tzy765.__repr__zos.path.join)r2   u   abc.€z_.@.z.abczabc.z.abc.Nu   t.þN)	rJ   rK   rL   rC  rk   r  r  r  r   r=   r=   r=   r>   rD  g  s    rD  c                   @   rw   )TCPAddressTraitN)rJ   rK   rL   r    r^   r=   r=   r=   r>   rF  q  rx   rF  c                   @   r  )TestTCPAddress)	127.0.0.1r   ))	localhostr   )z192.168.0.1r.  )zwww.google.comP   ))r   r   )rI  r  )rI  r\   NN)rJ   rK   rL   rF  rk   r  r  r  r=   r=   r=   r>   rG  u  s
    rG  c                   @   s   e Zd Zee ZdS )	ListTraitNrJ   rK   rL   r   r   r^   r=   r=   r=   r>   rK  ~  s    rK  c                   @   sB   e Zd Ze Zg Zg dgeeddgZdddgdgZ	dd Z
dS )TestListr2   rW   r2   r   rQ   c                 C      |d urt |}|S rg   listr  r=   r=   r>   r       zTestList.coerceN)rJ   rK   rL   rK  rk   r  rQ  ranger  r  r  r=   r=   r=   r>   rM    s    rM  c                   @   r~  )r   Nr  r=   r=   r=   r>   r     r  r   c                   @   s   e Zd ZeeeZdS )NoneInstanceListTraitN)rJ   rK   rL   r   r   r   r^   r=   r=   r=   r>   rT    r  rT  c                   @   s6   e Zd Ze Zg Ze e gg gZdge dggZdS )TestNoneInstanceListN)	rJ   rK   rL   rT  rk   r  r   r  r  r=   r=   r=   r>   rU    s
    rU  c                   @   s   e Zd Zeee d ZdS )InstanceListTraitz.FooN)rJ   rK   rL   r   r   r^   r=   r=   r=   r>   rV    r  rV  c                   @   s@   e Zd Ze Zdd Zg Ze e gg gZddgdegdgZ	dS )TestInstanceListc                 C      |  | j d jjt dS z2Test that the instance klass is properly assigned.r^   N)r  rk   rh  _traitr  r   r   r=   r=   r>   
test_klass     zTestInstanceList.test_klassr   r   N)
rJ   rK   rL   rV  rk   r[  r  r   r  r  r=   r=   r=   r>   rW    s    rW  c                   @   s   e Zd Zee e B ZdS )UnionListTraitN)rJ   rK   rL   r   r   r   r^   r=   r=   r=   r>   r]    r  r]  c                   @   s2   e Zd Ze Zg ZddgddggZddgdgZdS )TestUnionListTraitTr2   FTrueN)rJ   rK   rL   r]  rk   r  r  r  r=   r=   r=   r>   r^    s
    r^  c                   @   s    e Zd Zee dgdddZdS )LenListTraitr   r2   r   )minlenmaxlenNrL  r=   r=   r=   r>   r`    s    r`  c                   @   sJ   e Zd Ze ZdgZdgddgdgZdddgdg eedgZ	dd	 Z
d
S )TestLenListr   r2   r   rN  rW   rQ   r   c                 C   rO  rg   rP  r  r=   r=   r>   r    rR  zTestLenList.coerceN)rJ   rK   rL   r`  rk   r  r  rQ  rS  r  r  r=   r=   r=   r>   rc    s    rc  c                   @   s   e Zd ZeeddddZdS )
TupleTraitTr  r2   r   N)rJ   rK   rL   r$   r   r^   r=   r=   r=   r>   rd        rd  c                   @   s:   e Zd Ze ZdZdddggZg dZdd Zdd Z	d	S )
TestTupleTraitre  r  r2   )rW   rN  rQ   r=   Nc                 C   rO  rg   tupler  r=   r=   r>   r    rR  zTestTupleTrait.coercec                 C   4   |  ttd | j ttdd tt t dd}d S Nr   hellor   )r2   r   rq   r{  r$   r   r	   rG   r   r=   r=   r>   test_invalid_args     z TestTupleTrait.test_invalid_argsN)
rJ   rK   rL   rd  rk   r  r  r  r  ro  r=   r=   r=   r>   rg    s    rg  c                   @   r   )LooseTupleTraitr2   r   r   N)rJ   rK   rL   r$   r^   r=   r=   r=   r>   rq    r  rq  c                   @   sR   e Zd Ze ZdZddgdeededddgZd	di d
gZ	dd Z
dd Zd
S )TestLooseTupleTraitrr  re  r2   r  r   rl  )rQ   r   r=   rW   Nc                 C   rO  rg   rh  r  r=   r=   r>   r    rR  zTestLooseTupleTrait.coercec                 C   rj  rk  rm  rn  r=   r=   r>   ro    rp  z%TestLooseTupleTrait.test_invalid_args)rJ   rK   rL   rq  rk   r  ri  rS  r  r  r  ro  r=   r=   r=   r>   rs    s     rs  c                   @   s"   e Zd Zee e ddgdZdS )MultiTupleTraitr     bottlesr   N)rJ   rK   rL   r$   r   r   r^   r=   r=   r=   r>   rt        rt  c                   @   s"   e Zd Ze ZdZddgZdZdS )TestMultiTuple)r  ru  )r2      a)r      b)r=   rW   rx  )r2   rx  r   )rx  r2   )r2   rQ   N)rJ   rK   rL   rt  rk   r  r  r  r=   r=   r=   r>   rw    s
    rw  Traitc                    sD   G  fdddt }| }|jd u sJ |d d}|jd u s J d S )Nc                       s   e Zd Z dddZdS )z(test_allow_none_default_value.<locals>.CNT)r   r  rJ   rK   rL   r   r=   rz  r=   r>   r   (  r  r   r   )r   r   )rz  r   r   r=   r|  r>   test_allow_none_default_value  s
   
r~  zTrait, default_valuer=   r  c                    sB   G  fdddt }| }t|jt|u sJ |j|ksJ d S )Nc                          e Zd Z  ZdS )ztest_default_value.<locals>.CNr{  r=   r|  r=   r>   r   9  rx   r   r   r8   r   rz  r   r   r   r=   r|  r>   r  4  s   r  c                    sR   G dd d|  G  fdddt }| }t|jt|u s J |j|ks'J dS )zITest deprecated default_value=None behavior for Container subclass traitsc                       s   e Zd Zd fdd	Z  ZS )z2test_subclass_default_value.<locals>.SubclassTraitNc                    s   t  j|d d S )Nr   )r   r6  )rG   r   r   r=   r>   r6  J  r,  z;test_subclass_default_value.<locals>.SubclassTrait.__init__rg   )rJ   rK   rL   r6  r   r=   r=   r   r>   SubclassTraitI  s    r  c                       r  )z&test_subclass_default_value.<locals>.CNr{  r=   r  r=   r>   r   M  rx   r   Nr  r  r=   r  r>   test_subclass_default_valueB  s
   r  c                   @   r   )CRegExpTraitr  N)rJ   rK   rL   r   r^   r=   r=   r=   r>   r  V  r  r  c                   @   s:   e Zd Zdd Ze ZedZdedgZ	g dZ
dS )TestCRegExpc                 C   s
   t |S rg   )recompiler  r=   r=   r>   r  \  r   zTestCRegExp.coercer  z\d+)(Nr=   N)rJ   rK   rL   r  r  rk   r  r  r  r  r  r=   r=   r=   r>   r  [  s    
r  c                   @   rw   )	DictTraitN)rJ   rK   rL   r   r^   r=   r=   r=   r>   r  f  rx   r  c                  C   s8   i } t  }| |_d| d< | |jksJ |j| u sJ d S )Nr   rQ   )r  r^   )rE  r   r=   r=   r>   test_dict_assignmentj  s   r  c                   @      e Zd Zee ddidZdS ) UniformlyValueValidatedDictTraitr   r   )r  r   NrJ   rK   rL   r   r'   r^   r=   r=   r=   r>   r  s  rf  r  c                   @   s2   e Zd Ze ZddiZdddgZdddgZdS )'TestInstanceUniformlyValueValidatedDictr   r   0r   r   r   N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r  x  
    r  c                   @   s"   e Zd Zede iddidZdS )#NonuniformlyValueValidatedDictTraitr   r2   )rh  r   N)rJ   rK   rL   r   r   r^   r=   r=   r=   r>   r    rv  r  c                   @   s:   e Zd Ze ZddiZddddddgZdddgZdS )*TestInstanceNonuniformlyValueValidatedDictr   r2   r   r   r  r  N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    s
    r  c                   @   r  )KeyValidatedDictTraitr   r   )	key_traitr   Nr  r=   r=   r=   r>   r    rf  r  c                   @   s2   e Zd Ze ZddiZdddgZdddgZdS )TestInstanceKeyValidatedDictr   r   r  r  r   r   N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    r  r  c                   @   s*   e Zd Zee e de iddidZdS )FullyValidatedDictTraitr   r2   )r  r  rh  r   N)rJ   rK   rL   r   r'   r   r^   r=   r=   r=   r>   r    s    
r  c                   @   sJ   e Zd Ze ZddiZddddddgZdddddddddgZd	S )
TestInstanceFullyValidatedDictr   r2   r   r   r  2r  r  N)rJ   rK   rL   r  rk   r  r  r  r=   r=   r=   r>   r    s
     r  c                  C   sF   G dd dt } |  }|ji ksJ |ji ksJ |j|jus!J dS )zZCheck that the `{}` default value of the Dict traitlet constructor is
    actually copied.c                   @   r   )z$test_dict_default_value.<locals>.FooN)rJ   rK   rL   r   d1d2r=   r=   r=   r>   r     r   r   N)r   r  r  )r   r   r=   r=   r>   test_dict_default_value  s
   r  c                   @   r   )TestValidationHookc                 C   sb   G dd dt }| }d|_d|_| t d|_W d   n1 s$w   Y  d|_d|_dS )z2Verify that the early validation hook is effectivec                   @   s4   e Zd ZedZeddgddZeddd ZdS )	z4TestValidationHook.test_parity_trait.<locals>.Parityr   oddevenr   r^   c                 S   sD   |d }| j dkr|d rtd| j dkr |d dkr td|S )Nr^   r  r   zExpected an even numberr  r   zExpected an odd number)parityr"   )rG   r   r^   r=   r=   r>   _value_validate  s   zDTestValidationHook.test_parity_trait.<locals>.Parity._value_validateN)	rJ   rK   rL   r   r^   r   r  r/   r  r=   r=   r=   r>   Parity  s
    r  r  r2   r   Nr  )r   r  r^   rq   r"   )rG   r  ur=   r=   r>   test_parity_trait  s   
z$TestValidationHook.test_parity_traitc                 C   s   G dd dt }| }d|_| t d|_W d   n1 s!w   Y  d|_| t d|_W d   dS 1 s=w   Y  dS )z@Verify that we can register the same validator to multiple namesc                   @   s.   e Zd ZedZedZedddd ZdS )z:TestValidationHook.test_multiple_validate.<locals>.OddEvenr2   r   r  r  c                 S   sL   |d j dkr|d d std|d j dkr"|d d r$tdd S d S )Nr  r  r^   r   zodd should be oddr  zeven should be even)r4   r"   r   r=   r=   r>   check_valid  s
   zFTestValidationHook.test_multiple_validate.<locals>.OddEven.check_validN)rJ   rK   rL   r   r  r  r/   r  r=   r=   r=   r>   OddEven  s
    r  r   r   N)r   r  rq   r"   r  )rG   r  r  r=   r=   r>   test_multiple_validate  s   "z)TestValidationHook.test_multiple_validateN)rJ   rK   rL   r  r  r=   r=   r=   r>   r    s    r  c                   @   sD   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S )TestLinkc                 C   sv   G dd dt }|dd}|dd}t|df|df}| |j|j d|_| |j|j d|_| |j|j d	S )
zHVerify two traitlets of the same type can be linked together using link.c                   @   rw   )z%TestLink.test_connect_same.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   	   r      r^   r      Nr   r+   rX   r^   rG   rR   rQ   r   r   r=   r=   r>   test_connect_same  s   

zTestLink.test_connect_samec                 C   s   G dd dt }G dd dt }|dd}|dd}t|d	f|d
f}| |j|j d|_| |j|j d|_| |j|j dS )JVerify two traitlets of different types can be linked together using link.c                   @   rw   )z'TestLink.test_link_different.<locals>.ANr  r=   r=   r=   r>   rR   
  rx   rR   c                   @   rw   )z'TestLink.test_link_different.<locals>.BNrJ   rK   rL   r   countr=   r=   r=   r>   rp     rx   rp   r  r   r  r  r^   r  r   r   N)r   r+   rX   r^   r  rG   rR   rp   rQ   r   r   r=   r=   r>   test_link_different  s   

zTestLink.test_link_differentc                 C   s   G dd dt }|dd}|dd}t|df|df}d|_|  d|_| |j|j |  | |j|j | jd	7  _| |j|j d
S )9Verify two linked traitlets can be unlinked and relinked.c                   @   rw   )z$TestLink.test_unlink_link.<locals>.ANr  r=   r=   r=   r>   rR   #  rx   rR   r  r   r  r^   r   r   r2   N)r   r+   r^   unlinkassertNotEqualrX   r  r=   r=   r>   test_unlink_link     

zTestLink.test_unlink_linkc                    s   G dd dt }G dd dt }|dd}|dd}g   fd	d
}||d  fdd}||d t|df|df}| d d  dd= d|_| d d  dd= d|_| d d  dd= dS )z=Verify two linked traitlets have their callbacks called once.c                   @   rw   )z"TestLink.test_callbacks.<locals>.ANr  r=   r=   r=   r>   rR   :  rx   rR   c                   @   rw   )z"TestLink.test_callbacks.<locals>.BNr  r=   r=   r=   r>   rp   =  rx   rp   r  r   r  r  c                         d d S )NrQ   r   r(  callback_countr=   r>   
a_callbackF  r'  z+TestLink.test_callbacks.<locals>.a_callbackr^   c                    r  )Nr   r  r(  r  r=   r>   
b_callbackK  r'  z+TestLink.test_callbacks.<locals>.b_callbackr  r  r   Nr   bar   ab)r   r  r+   rX   joinr  r^   )rG   rR   rp   rQ   r   r  r  r   r=   r  r>   test_callbacks6  s$   



zTestLink.test_callbacksc                 C   s   G dd dt }|dd}|dd}t|df|dfdd d	d fd
}| |jd|j  d|_| |jd d|_| |jd dS )Test transform link.c                   @   rw   )z!TestLink.test_tranform.<locals>.ANr  r=   r=   r=   r>   rR   e  rx   rR   r  r   r  r^   c                 S      d|  S Nr   r=   r  r=   r=   r>   ru  l  r  z(TestLink.test_tranform.<locals>.<lambda>c                 S   s   t | d S )Ng       @r  r  r=   r=   r>   ru  l  s    )	transformr   r   rW   r  r   Nr  r  r=   r=   r>   test_tranforma  s   

"zTestLink.test_tranformc                 C   s>   G dd dt }| }t|df|df}| tt|dd d S )Nc                   @   (   e Zd Ze Ze Zeddd ZdS )z4TestLink.test_link_broken_at_source.<locals>.MyClassrp  c                 S      |j d | _d S r  )r6   rS  rF   r=   r=   r>   another_update~  rM  zCTestLink.test_link_broken_at_source.<locals>.MyClass.another_updateNrJ   rK   rL   r   rS  rp  r,   r  r=   r=   r=   r>   MyClassz  
    r  rS  rp  r   r   r+   rq   r"   r  rG   r  mclr=   r=   r>   test_link_broken_at_sourcey     z#TestLink.test_link_broken_at_sourcec                 C   s>   G dd dt }| }t|df|df}| tt|dd d S )Nc                   @   r  )z4TestLink.test_link_broken_at_target.<locals>.MyClassrS  c                 S   r  r  )r6   rp  rF   r=   r=   r>   r    rM  zCTestLink.test_link_broken_at_target.<locals>.MyClass.another_updateNr  r=   r=   r=   r>   r    r  r  rS  rp  r   r  r  r=   r=   r>   test_link_broken_at_target  r  z#TestLink.test_link_broken_at_targetN)
rJ   rK   rL   r  r  r  r  r  r  r  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	S )
TestDirectionalLinkc                 C   sr   G dd dt }|dd}|dd}t|df|df}| |j|j d|_| |jd d|_| |jd d	S )
zTVerify two traitlets of the same type can be linked together using directional_link.c                   @   rw   )z0TestDirectionalLink.test_connect_same.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   r  r   r  r^   r   r  Nr   r*   rX   r^   r  r=   r=   r>   r    s   

z%TestDirectionalLink.test_connect_samec                 C   s|   G dd dt }|dd}|dd}t|df|dfdd }| |jd	|j  d
|_| |jd d|_| |jd
 dS )r  c                   @   rw   )z,TestDirectionalLink.test_tranform.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   r  r   r  r^   c                 S   r  r  r=   r  r=   r=   r>   ru    r  z3TestDirectionalLink.test_tranform.<locals>.<lambda>r   r   rW   r  Nr  r  r=   r=   r>   r    s   

z!TestDirectionalLink.test_tranformc                 C   s   G dd dt }G dd dt }|dd}|dd}t|d	f|d
f}| |j|j d|_| |jd d|_| |jd dS )r  c                   @   rw   )z2TestDirectionalLink.test_link_different.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   c                   @   rw   )z2TestDirectionalLink.test_link_different.<locals>.BNr  r=   r=   r=   r>   rp     rx   rp   r  r   r  r  r^   r  r   r  N)r   r*   rX   r^   r  r  r=   r=   r>   r    s   

z'TestDirectionalLink.test_link_differentc                 C   s   G dd dt }|dd}|dd}t|df|df}d|_|  d|_| |j|j |  | |j|j | jd	7  _| |j|j d
S )r  c                   @   rw   )z/TestDirectionalLink.test_unlink_link.<locals>.ANr  r=   r=   r=   r>   rR     rx   rR   r  r   r  r^   r   r   r2   N)r   r*   r^   r  r  r+   rX   r  r=   r=   r>   r    r  z$TestDirectionalLink.test_unlink_linkN)rJ   rK   rL   r  r  r  r  r=   r=   r=   r>   r    s
    r  c                   @   s@   e Zd Ze Zeddd Zeddd Ze Z	dd Z
dS )	
PickleablerS  c                 C   r   rg   r=   rF   r=   r=   r>   
_i_changed  r   zPickleable._i_changedc                 C   s   |d S )Nr^   r=   )rG   commitr=   r=   r>   _i_validate  s   zPickleable._i_validatec                 C   s@   |    d| _W d    n1 sw   Y  | | jd d S )Nr2   rS  )hold_trait_notificationsrS  r  r  r   r=   r=   r>   r6  	  s   
zPickleable.__init__N)rJ   rK   rL   r   rS  r,   r  r/   r  rp  r6  r=   r=   r=   r>   r    s    

r  c                  C   s   t  } ttjd D ]}t| |}t|}|j| jksJ |j| jks'J q
d| _ttjd D ]}t| |}t|}|j| jksGJ |j| jksOJ q2d S )Nr2   r   )r  rS  pickleHIGHEST_PROTOCOLdumpsloadsrS  rp  )r   protocolpc2r=   r=   r>   test_pickle_hastraits		  s   

r  c               	      s  g  G  fdddt } |  }| z |  d|_|jdks#J  g ks)J W d    n1 s3w   Y  d|_|jdksBJ | ( d|_|jdksQJ  g ksWJ d|_|jdksaJ  g ksgJ W d    n1 sqw   Y  d|_|jdksJ  g ksJ W d    n1 sw   Y   dgksJ z|  d|_W d    n1 sw   Y  W n	 ty   Y nw |jdksJ d S )	Nc                       s0   e Zd ZedZedZ fddZdd ZdS )z+test_hold_trait_notifications.<locals>.Testr   c                    s     ||f d S rg   r  r   changesr=   r>   r   	  r,  z6test_hold_trait_notifications.<locals>.Test._a_changedc                 S   s   |dkrt d|S )Nr   zOnly 0 is a valid valuer"   rG   r^   r  r=   r=   r>   _b_validate#	  rR  z7test_hold_trait_notifications.<locals>.Test._b_validateN)rJ   rK   rL   r   rQ   r   r  r  r=   r  r=   r>   Test	  s
    r  r2   r   r   r   )r   r   r   )r   r  rQ   r   	Exception)r  r   r=   r  r>   test_hold_trait_notifications	  sB   



r  c                   @   s   e Zd Ze Zdd ZdS )RollBackc                 C   s   |rt d|S )Nfoobarr  r  r=   r=   r>   _bar_validateI	  s   zRollBack._bar_validateN)rJ   rK   rL   r   r   r  r=   r=   r=   r>   r  F	  s    r  c                   @   r@   )TestRollbackc                 C   s   dd }|  t| d S )Nc                   S   s   t dd d S )Nr2   r   )r  r=   r=   r=   r>   assign_rollbackQ	  r'  z4TestRollback.test_roll_back.<locals>.assign_rollbackr  )rG   r  r=   r=   r>   test_roll_backP	  s   zTestRollback.test_roll_backN)rJ   rK   rL   r  r=   r=   r=   r>   r  O	  rM   r  c                   @   s(   e Zd Ze Ze Zdd Zdd ZdS )CacheModificationc                 C   
   || _ |S rg   r   r  r=   r=   r>   r  [	     zCacheModification._bar_validatec                 C   r  rg   r  r  r=   r=   r>   _foo_validate_	  r  zCacheModification._foo_validateN)rJ   rK   rL   r   r   r   r  r  r=   r=   r=   r>   r  W	  s
    r  c                   C   s   t dd t dd d S )Nr2   r   r  )r  r=   r=   r=   r>   test_cache_modificationd	  s   
r  c                       sr   e Zd Ze Ze Ze Ze Ze Z	e Z
e Ze Ze Ze Ze Ze Ze Zdd Z fddZ  ZS )OrderTraitsc                    s    fdddD  j |< dS )zcheck the value of all traits when each trait change is triggered

        This verifies that the values are not sensitive
        to dict ordering when loaded from kwargs
        c                    s   i | ]}|t  |qS r=   )rr   .0r   r   r=   r>   
<dictcomp>	  s    z'OrderTraits._notify.<locals>.<dictcomp>abcdefghijklN)notifiedr   r=   r   r>   _notifyy	  s   zOrderTraits._notifyc                    s"   |  | j t jdi | d S r   )r  r  r   r6  r8  r   r=   r>   r6  	  s   zOrderTraits.__init__)rJ   rK   rL   r   r   r'   rQ   r   r   rE  erT  rU  hrS  rp  kr  r  r6  r   r=   r=   r   r>   r  i	  s     
r  c                     sT   dd dD  t  } | ji ksJ t di  }  fdddD }| j|ks(J d S )Nc                 S   s   i | ]}||qS r=   r=   r  r=   r=   r>   r  	      z+test_notification_order.<locals>.<dictcomp>r  c                    s   i | ]}| qS r=   r=   r  rD  r=   r>   r  	  r  r=   )r  r   )rk   notificationsr=   rD  r>   test_notification_order	  s   r  c                   @   r  )ForwardDeclaredInstanceTraitForwardDeclaredBarTr  N)rJ   rK   rL   r   r^   r=   r=   r=   r>   r  	  r  r  c                   @   r  )ForwardDeclaredTypeTraitr	  Tr  N)rJ   rK   rL   r   r^   r=   r=   r=   r>   r
  	  r  r
  c                   @      e Zd ZeedZdS ) ForwardDeclaredInstanceListTraitr	  N)rJ   rK   rL   r   r   r^   r=   r=   r=   r>   r  	  r  r  c                   @   r  )ForwardDeclaredTypeListTraitr	  N)rJ   rK   rL   r   r   r^   r=   r=   r=   r>   r  	  r  r  c                   @   r~  )r	  Nr  r=   r=   r=   r>   r	  	  r  r	  c                   @   r~  )ForwardDeclaredBarSubNr  r=   r=   r=   r>   r  	  r  r  c                   @   s0   e Zd Ze ZdZde e gZddeegZ	dS ) TestForwardDeclaredInstanceTraitNr   r   )
rJ   rK   rL   r  rk   r  r	  r  r  r  r=   r=   r=   r>   r  	  s
    r  c                   @   s0   e Zd Ze ZdZdeegZdde e gZ	dS )TestForwardDeclaredTypeTraitNr   r   )
rJ   rK   rL   r
  rk   r  r	  r  r  r  r=   r=   r=   r>   r  	  s
    
r  c                   @   sL   e Zd Ze Zdd Zg Ze e gg gZ	e e ddgdegdgdgZ
dS )TestForwardDeclaredInstanceListc                 C   rX  rY  r  rk   rh  rZ  r  r	  r   r=   r=   r>   r[  	  r\  z*TestForwardDeclaredInstanceList.test_klassr   Nr   )rJ   rK   rL   r  rk   r[  r  r	  r  r  r  r=   r=   r=   r>   r  	  s    

r  c                   @   sD   e Zd Ze Zdd Zg Zeegg gZ	eedgde gdgdgZ
dS )TestForwardDeclaredTypeListc                 C   rX  rY  r  r   r=   r=   r>   r[  	  r\  z&TestForwardDeclaredTypeList.test_klassr   r   N)rJ   rK   rL   r  rk   r[  r  r	  r  r  r  r=   r=   r=   r>   r  	  s    r  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestDynamicTraitsc                 C   s
   g | _ d S rg   )r   r   r=   r=   r>   r   
  r   zTestDynamicTraits.setUpc                 C   r   rg   r   r   r=   r=   r>   r   
  r   zTestDynamicTraits.notify1c                 C   s  G dd dt }| }| t|d  | t|d  |jt d | t|d | t||f |jt d | t|d | t||f | |jj	|j	 | }| t|d  | t|d  |
| j d|_| t| jd d|_| t| jd d	|_| d
| jv  d|_| d| jv  | tt|dd | tt|dd g | _|j
| jdd d|_d|_| t| jd d S )Nc                   @   r~  )z,TestDynamicTraits.test_notify_all.<locals>.ANr  r=   r=   r=   r>   rR   
  r  rR   r   yr  )r  r   r  rW   )r   r   rW   r  )r  r  r  r  Tr  r   r
  )r   r  r  
add_traitsr   rh   r   rX   r   rJ   r  r   r   r  r   r  rq   r"   r  r  r=   r=   r>   r  

  s<   z!TestDynamicTraits.test_notify_allN)rJ   rK   rL   r   r   r  r=   r=   r=   r>   r  
      r  c                  C   s|   G dd dt } |  }d|_|jdksJ |  }tt |j}W d    n1 s+w   Y  | dd}|jdks<J d S )Nc                   @   s   e Zd ZeddgZdS )ztest_enum_no_default.<locals>.CrQ   r   N)rJ   rK   rL   r   r   r=   r=   r=   r>   r   7
  r  r   rQ   r   r}  )r   r   pytestraisesr"   )r   r   r   r=   r=   r>   test_enum_no_default6
  s   
r  c                  C   sn   G dd dt } | j dksJ | j dksJ | j dks#J | j dks,J | j dks5J d S )Nc                   @   s0   e Zd ZedZeeZedZe	 Z
e ZdS )z"test_default_value_repr.<locals>.Cztraitlets.HasTraitsr   N)rJ   rK   rL   r%   r   r   t2r   r  r   lisr   rE  r=   r=   r=   r>   r   H
  s    
r   z'traitlets.HasTraits'z'traitlets.traitlets.HasTraits'r  []{})r   r   default_value_reprr  r  r  rE  )r   r=   r=   r>   test_default_value_reprG
  s   r!  c                   @   sr   e Zd Ze Zeddd ZdZedZ	eddd Z
eded	d
 ZdZedZededd ZdS )TransitionalClassrE  c                 C      t S rg   )r"  r   r=   r=   r>   
_d_defaultZ
  r   zTransitionalClass._d_defaultFr   calls_superc                 C   rZ   r[   r=   r   r=   r=   r>   _calls_super_defaulta
  r   z&TransitionalClass._calls_super_defaultc                 C   r  rg   )parent_superrF   r=   r=   r>   _calls_super_changede
     
z&TransitionalClass._calls_super_changed	overridesc                 C   r  rg   )parent_overriderF   r=   r=   r>   _overrides_changedm
  r)  z$TransitionalClass._overrides_changedN)rJ   rK   rL   r   rE  r)   r$  r'  r   r%  r&  r,   r-   r(  r+  r*  r,  r=   r=   r=   r>   r"  V
  s     

r"  c                       s4   e Zd Zdd ZdZ fddZdZdd Z  ZS )SubClassc                 C   r#  rg   )r-  r   r=   r=   r>   r$  t
  r_   zSubClass._d_defaultFc                    s   d| _ t ||| d S rs  )subclass_superr   r(  r   r   r=   r>   r(  y
  s   zSubClass._calls_super_changedc                 C   
   d| _ d S rs  )subclass_overrider   r=   r=   r>   r,  
  r   zSubClass._overrides_changed)	rJ   rK   rL   r$  r.  r(  r0  r,  r   r=   r=   r   r>   r-  s
  s    r-  c                  C   sL   t  } d| _| jsJ | jsJ d| _| jsJ | jrJ | jt u s$J d S Nr   )r-  r%  r'  r.  r*  r0  r+  rE  rk   r=   r=   r>   test_subclass_compat
  s   



r3  c                   @   s&   e Zd ZdZe Zeddd ZdS )DefinesHandlerFr  c                 C   r/  rs  )parent_calledrF   r=   r=   r>   handler
     
zDefinesHandler.handlerN)rJ   rK   rL   r5  r   r  r,   r6  r=   r=   r=   r>   r4  
  s
    r4  c                   @       e Zd ZdZeddd ZdS )OverridesHandlerFr  c                 C   r/  rs  child_calledrF   r=   r=   r>   r6  
  r7  zOverridesHandler.handlerN)rJ   rK   rL   r;  r,   r6  r=   r=   r=   r>   r9  
      r9  c                  C   s$   t  } d| _| jsJ | jrJ d S r1  )r9  r  r;  r5  r2  r=   r=   r>   test_subclass_override_observer
     
r=  c                   @   s   e Zd ZdZdd ZdS )DoesntRegisterHandlerFc                 C   r/  rs  r:  rF   r=   r=   r>   r6  
  r   zDoesntRegisterHandler.handlerN)rJ   rK   rL   r;  r6  r=   r=   r=   r>   r?  
  s    r?  c                  C   s$   t  } d| _| jrJ | jrJ dS )zISubclass that overrides observer and doesn't re-register unregisters bothr   N)r?  r  r;  r5  r2  r=   r=   r>   %test_subclass_override_not_registered
  s   
r@  c                   @   r8  )AddsHandlerFr  c                 C   r/  rs  r:  rF   r=   r=   r>   child_handler
  r7  zAddsHandler.child_handlerN)rJ   rK   rL   r;  r,   rB  r=   r=   r=   r>   rA  
  r<  rA  c                  C   s$   t  } d| _| jsJ | jsJ d S r1  )rA  r  r;  r5  r2  r=   r=   r>   test_subclass_add_observer
  r>  rC  c                     s  G dd dt } |  }i   fdd}|j|ddhd d|_ d	 jdks(J  d	 jdks1J d
|_ d	 jdks=J  d	 jd
ksFJ G dd d}|j||ddhd d|_ d	 jdksdJ  d	 jdksmJ d|_ d	 jdksyJ  d	 jdksJ d S )Nc                   @   r  )z!test_observe_iterables.<locals>.CN)rJ   rK   rL   r   rS  r'   sr=   r=   r=   r>   r   
  r   r   c                    s   |  d< d S )NrH   r=   rP  recordedr=   r>   record
  r%  z&test_observe_iterables.<locals>.recordrS  rD  )namesr   rH   hic                   @   r  )z+test_observe_iterables.<locals>.MyContainerc                 S   r  rg   	container)rG   rK  r=   r=   r>   r6  
  r   z4test_observe_iterables.<locals>.MyContainer.__init__c                 S   s
   t | jS rg   )iterrK  r   r=   r=   r>   __iter__
  r   z4test_observe_iterables.<locals>.MyContainer.__iter__c                 S   s
   || j v S rg   rJ  )rG   r   r=   r=   r>   __contains__
  r   z8test_observe_iterables.<locals>.MyContainer.__contains__N)rJ   rK   rL   r6  rM  rN  r=   r=   r=   r>   MyContainer
  r  rO  rW   ok)r   r,   rS  r4   r6   rD  )r   r   rG  rO  r=   rE  r>   test_observe_iterables
  s&   
rQ  c                  C   s   G dd d} G dd dt | }|ddddd	d
}|jdks J t|dr'J t|dr.J |jdks5J |jdd	dks?J d S )Nc                   @   r@   )z&test_super_args.<locals>.SuperRecorderc                 _   r  rg   )
super_argssuper_kwargsr   r=   r=   r>   r6  
  r   z/test_super_args.<locals>.SuperRecorder.__init__Nr  r=   r=   r=   r>   SuperRecorder
  rM   rT  c                   @   rw   )z'test_super_args.<locals>.SuperHasTraitsN)rJ   rK   rL   r   rS  r=   r=   r=   r>   SuperHasTraits
  rx   rU  a1a2rW   r   r   )r   rS  r   r   r   )rV  rW  r   )r   rS  r  rR  rS  )rT  rU  rk   r=   r=   r>   test_super_args
  s   rX  c                  C   sj   G dd dt } dg}t| | ddd}W d    n1 s w   Y  |jdks,J t|dr3J d S )Nc                   @   rw   )z+test_super_bad_args.<locals>.SuperHasTraitsN)rJ   rK   rL   r   rQ   r=   r=   r=   r>   rU  
  rx   rU  zPassing unrecognized argumentsr2   r   r   r   )r   r3   rQ   r  )rU  r   rk   r=   r=   r>   test_super_bad_args
  s   
rY  c                  C   s   G dd dt } G dd d| }G dd d| }G dd d||}G d	d
 d
||}| jdks2J | jdks:J | jdksBJ | jdksJJ | jdksRJ | jdksZJ dS )z%Verify that default values follow mroc                   @      e Zd ZedZdZdS )ztest_default_mro.<locals>.BasebaseNrJ   rK   rL   r'   r  attrr=   r=   r=   r>   Base      r^  c                   @   r~  )ztest_default_mro.<locals>.ANr  r=   r=   r=   r>   rR     r  rR   c                   @   rZ  )ztest_default_mro.<locals>.Brp   Nr\  r=   r=   r=   r>   rp     r_  rp   c                   @   r~  )ztest_default_mro.<locals>.ABNr  r=   r=   r=   r>   AB  r  r`  c                   @   r~  )ztest_default_mro.<locals>.BANr  r=   r=   r=   r>   BA  r  ra  r[  N)r   r  r]  )r^  rR   rp   r`  ra  r=   r=   r>   test_default_mro	  s   rb  c                  C   s    G dd dt } | d d d}d S )Nc                   @   r@   )z!test_cls_self_argument.<locals>.Xc                 S   r   rg   r=   )_X__selfclsrG   r=   r=   r>   r6  '  r_   z*test_cls_self_argument.<locals>.X.__init__Nr  r=   r=   r=   r>   X&  rM   re  )rd  rG   r  )re  r   r=   r=   r>   test_cls_self_argument%  s   rf  c                  C   2   G dd dt } dd | _|  }|jdksJ d S )Nc                   @   r|   )z test_override_default.<locals>.Chard defaultc                 S   rZ   Nzdefault methodr=   r   r=   r=   r>   
_a_default1  r_   z+test_override_default.<locals>.C._a_defaultN)rJ   rK   rL   r'   rQ   rj  r=   r=   r=   r>   r   .  r   r   c                 S   rZ   N
overriddenr=   r   r=   r=   r>   ru  4  rv  z'test_override_default.<locals>.<lambda>rl  r   rj  rQ   r   r   r=   r=   r>   test_override_default-  s   
ro  c                  C   rg  )Nc                   @   r   )z*test_override_default_decorator.<locals>.Crh  rQ   c                 S   rZ   ri  r=   r   r=   r=   r>   rj  =  r   z5test_override_default_decorator.<locals>.C._a_defaultNrJ   rK   rL   r'   rQ   r)   rj  r=   r=   r=   r>   r   :  r   r   c                 S   rZ   rk  r=   r   r=   r=   r>   ru  A  rv  z1test_override_default_decorator.<locals>.<lambda>rl  rm  rn  r=   r=   r>   test_override_default_decorator9  s   
rq  c                  C   s2   G dd dt } |  }dd |_|jdksJ d S )Nc                   @   r   )z)test_override_default_instance.<locals>.Crh  rQ   c                 S   rZ   ri  r=   r   r=   r=   r>   rj  J  r   z4test_override_default_instance.<locals>.C._a_defaultNrp  r=   r=   r=   r>   r   G  r   r   c                 S   rZ   rk  r=   r   r=   r=   r>   ru  O  rv  z0test_override_default_instance.<locals>.<lambda>rl  rm  rn  r=   r=   r>   test_override_default_instanceF  s   
rr  c                  C   sb   ddl m }  G dd dt}|dd}|jdksJ | |}d|_|jdks(J |jdks/J d S )Nr   )copyc                   @   rw   )ztest_copy_HasTraits.<locals>.CNr   r=   r=   r=   r>   r   V  rx   r   r2   r-  r   )rs  r   rQ   )rs  r   r   ccr=   r=   r>   test_copy_HasTraitsS  s   
ru  c                 C   s   t | tr| }n| dd}t |tr|j}n|j}t|tu rFt|trFt	| ||}|
d| W d   dS 1 s?w   Y  dS ||}||ksPJ dS )zRun a test of trait.from_stringTr  N)rh   r#   rQ  from_string_listfrom_stringr8   
issubclassr  r  r  r/   )	traittyperD  expectedr  castr^   r=   r=   r>   _from_string_testb  s   


"r|  zs, expected))xyzr}  r   r   )z"xx"xx)z'abc'r8  NoneNc                 C      t t| | d S rg   )r|  r'   rD  rz  r=   r=   r>   test_unicode_from_stringu     r  c                 C   r  rg   )r|  r   r  r=   r=   r>   test_cunicode_from_string}  r  r  ))r}  s   xyz)r      1)zb"xx"s   xx)zb'abc's   abcr  c                 C   r  rg   )r|  r   r  r=   r=   r>   test_bytes_from_string  r  r  c                 C   r  rg   )r|  r	   r  r=   r=   r>   test_cbytes_from_string  r  r  r   )r   r2   )123{   z2.0r  c                 C   r  rg   )r|  r   r  r=   r=   r>   test_int_from_string  r  r  )r   g      ?)z123.5g     ^@)z2.5g      @c                 C   r  rg   )r|  r   r  r=   r=   r>   test_float_from_string  r  r  )z1+2jy      ?       @c                 C   r  rg   )r|  r   r  r=   r=   r>   test_complex_from_string     r  )trueT)TRUET)r   T)r  F)FalseF)falseFz1.0c                 C   r  rg   )r|  r   r  r=   r=   r>   test_bool_from_string  s   r  r  r   z{1: 2}r   z{"key": "value"}r   r^   c                 C   r  rg   )r|  r   r  r=   r=   r>   test_dict_from_string  r  r  r  [1, 2, "x"]r2   r   r   r  c                 C   r  rg   r|  r   r  r=   r=   r>   test_list_from_string  s   
r  zs, expected, value_trait)r   r  r  rr  Tr  Fc                 C      t t|| | d S rg   r  rD  rz  value_traitr=   r=   r>   test_list_items_from_string     r  >   r   r2   r   z{1, 2, "x"}c                 C   r  rg   r|  r   r  r=   r=   r>   test_set_from_string     r  >   r2   r   r   c                 C   r  rg   r  r  r=   r=   r>   test_set_items_from_string  s   
r  )r  r=   )z()r=   )r  r  )z(1, 2, "x")r  )r   r   c                 C   r  rg   r|  r$   r  r=   r=   r>   test_tuple_from_string
  r  r  zs, expected, value_traits)r  rg   c                 C   s   t t| | | d S rg   r  )rD  rz  value_traitsr=   r=   r>   test_tuple_items_from_string  r  r  )r   r   )
mod.submodr  znot an identifierr~  c                 C   r  rg   )r|  r   r  r=   r=   r>   test_object_from_string'  r  r  )z127.0.0.1:8000)rH  i@  )zhost.tld:80)zhost.tldrJ  zhost:notaportrH  c                 C   r  rg   )r|  r    r  r=   r=   r>   test_tcp_from_string5  r  r  c                  C   sx   t t} | D ]"}tt|}|ds(t|tr(t|tr(|tjvr(t	| dqtjD ]}|| vr9t	| dq,dS )z7Verify all trait types are added to `traitlets.__all__`r   z not in __all__z should be removed from __all__N)
dirr.   rr   
startswithrh   r8   rx  r#   __all__
ValueError)rH  r4   r^   r=   r=   r>   test_all_attributeC  s   


r  )r  r  r  unittestr   r  r.   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r/   traitlets.utilsr1   	_warningsr3   r?   rA   rN   r   r   r   rI  rQ  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r$  r%  r(  r)  r*  r,  r.  r/  r1  r3  r5  r7  r9  rC  rD  rF  rG  rK  rM  r   rT  rU  rV  rW  r]  r^  r`  rc  rd  rg  rq  rs  rt  rw  markparametrizer~  setr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r	  r  r  r  r  r  r  r  r!  r"  r-  r3  r4  r9  r=  r?  r@  rA  rC  rQ  rX  rY  rb  rf  ro  rq  rr  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   <module>   sr   /
  , D Ax s:5		
				
(


					4 &a-	3
(
	



	



