a
    lc4                    @   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#eZDG d$d% d%eCZEG d&d' d'eZFG d(d) d)eCZGG d*d+ d+eZHG d,d- d-eCZIG d.d/ d/eZJG d0d1 d1eCZKG d2d3 d3eZLG d4d5 d5eCZMG d6d7 d7eZNG d8d9 d9eCZOG d:d; d;eZPG d<d= d=eOZQG d>d? d?eZRG d@dA dAeCZSG dBdC dCeZTG dDdE dEeCZUG dFdG dGeZVG dHdI dIeCZWG dJdK dKeZXG dLdM dMeCZYG dNdO dOeZZG dPdQ dQeYZ[G dRdS dSeZ\G dTdU dUeSZ]G dVdW dWeZ^G dXdY dYeCZ_G dZd[ d[eZ`G d\d] d]eCZaG d^d_ d_eZbG d`da daeCZcG dbdc dceZdG ddde deeCZeG dfdg dgeZfG dhdi dieCZgG djdk dkeZhG dldm dmeCZiG dndo doeZjG dpdq dqeCZkG drds dseZlG dtdu dueCZmG dvdw dweZnG dxdy dyeCZoG dzd{ d{eZpG d|d} d}eCZqG d~d deZrG dd deCZsG dd dZtG dd deZuG dd deCZvG dd deZwG dd deCZxG dd deZyG dd deCZzG dd deZ{G dd deCZ|G dd deZ}G dd deCZ~G dd deZG dd deCZG dd deZG dd deC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 deCZG dd deZdd ZG dd deZG dd deCZG dd deZG dd deCZG dd deZG dd deCZG dd deZG dd deC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 deCZG dd deCZG dd deCZG dd deCZG dd deZdd Zdd ZG dd deZG dd deZdd ZG dd deZG dd deZd d 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d0d1d2d-gd3d4 Zejdd)efd0d1d2d5d-gd6d7 Zejdd8d9d:d;d<d=d>efd-gd?d@ ZejddAi fdBe&fdCddDifdEdFdGifd)e&fd-gdHdI ZejddJg fdKg dLfdBd)gdBd)gfdMgdfgdNdO ZejdPg dQg dRe fd)gee fdBd)gdBd)ge+ fdMgdge+dSdTfdMgdMge+dUdTfgdVdW ZejddJe fdKh dXfdYh dXfdBd)gdBd)hfdMgdfgdZd[ ZejdPg dQh d\e fd)gee fdBd)gdBd)he+ fdMgdhe+dSdTfgd]d^ Zejdd_d`dadbdBd)gdcfdMgdfgddde Zejdfg dQdRe e e gfd)gee gfdBd)gdce+ gfdMgdge+dUdTgfdMgdhe+dSdTgfgdidj Zejddkdldme&fdnd-gdodp Zejddqdrdsefdtefd-gdudv ZejddJg fdwgdxdy Zejdd*dzgd{d| Zejd}dJg dUfdAi dUfdMe&dUfd~gdd Zאdd ZdS (  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)Zordered_valuesZchange_names r;   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/traitlets/tests/test_traitlets.pychange_dictC   s    r=   c                   @   s   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_newZ_notify_typeselfchanger;   r;   r<   notify_changeN   s    


zHasTraitsStub.notify_changeN)__name__
__module____qualname__rE   r;   r;   r;   r<   r>   M   s   r>   c                   @   s   e Zd ZdZdS )CrossValidationStubFN)rF   rG   rH   Z_cross_validation_lockr;   r;   r;   r<   rI   U   s   rI   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                   @   s   e Zd ZeZdS )z+TestTraitType.test_get_undefined.<locals>.ANrF   rG   rH   r#   ar;   r;   r;   r<   A`   s   rM   )r   rL   r&   rC   rM   rL   r;   r;   r<   test_get_undefined_   s    z TestTraitType.test_get_undefinedc                 C   sX   G dd dt }| }d|_| |jd | |jd | |jt | |jd d S )Nc                   @   s   e Zd ZeZdS )z!TestTraitType.test_set.<locals>.ANrK   r;   r;   r;   r<   rM   g   s   rM   
   rL   )r>   rL   assertEqualr?   r@   r&   rA   rN   r;   r;   r<   test_setf   s    zTestTraitType.test_setc                    sB   G dd dt  G  fdddt}| }d|_| |jd d S )Nc                   @   s   e Zd Zdd ZdS )z)TestTraitType.test_validate.<locals>.MyTTc                 S   s   dS Nr;   )rC   instvaluer;   r;   r<   r/   s   s    z2TestTraitType.test_validate.<locals>.MyTT.validateNrF   rG   rH   r/   r;   r;   r;   r<   MyTTr   s   rX   c                       s   e Zd Z ZdS )z&TestTraitType.test_validate.<locals>.ANrF   rG   rH   ttr;   rX   r;   r<   rM   v   s   rM   rP   rT   )r#   r>   rZ   rQ   rN   r;   r[   r<   test_validateq   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                   @   s   e Zd Zdd ZdS )z4TestTraitType.test_default_validate.<locals>.MyIntTTc                 S   s   t |tr|S | || d S N)
isinstanceinterror)rC   objrV   r;   r;   r<   r/      s    
z=TestTraitType.test_default_validate.<locals>.MyIntTT.validateNrW   r;   r;   r;   r<   MyIntTT~   s   rb   c                       s   e Zd Z dZdS )z.TestTraitType.test_default_validate.<locals>.ArP   NrY   r;   rb   r;   r<   rM      s   rM   rP   c                       s   e Zd Z dZdS )z.TestTraitType.test_default_validate.<locals>.Bbad defaultNrY   r;   rc   r;   r<   B   s   re   rZ   )r#   r   rQ   rZ   assertRaisesr"   getattr)rC   rM   rL   re   r;   rc   r<   test_default_validate}   s    z#TestTraitType.test_default_validatec                 C   s,   G dd dt }| }| |j d d S )Nc                   @   s   e Zd ZeZdS )z"TestTraitType.test_info.<locals>.ANrF   rG   rH   r#   rZ   r;   r;   r;   r<   rM      s   rM   z	any value)r   rQ   rZ   inforN   r;   r;   r<   	test_info   s    zTestTraitType.test_infoc                 C   s.   G dd dt }| }| t|jj|d d S )Nc                   @   s   e Zd Ze ZdS )z#TestTraitType.test_error.<locals>.ANri   r;   r;   r;   r<   rM      s   rM   rP   )r   rf   r"   rZ   r`   rN   r;   r;   r<   
test_error   s    zTestTraitType.test_errorc                 C   s   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                   @   s   e Zd ZedZdd ZdS )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.ArP   c                 S   s   dS N   r;   rC   r;   r;   r<   
_x_default   s    zGTestTraitType.test_deprecated_dynamic_initializer.<locals>.A._x_defaultN)rF   rG   rH   r   xrp   r;   r;   r;   r<   rM      s   rM   c                   @   s   e Zd ZedZdS )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.B   NrF   rG   rH   r   rq   r;   r;   r;   r<   re      s   re   c                   @   s   e Zd Zdd ZdS )z<TestTraitType.test_deprecated_dynamic_initializer.<locals>.Cc                 S   s   dS N   r;   ro   r;   r;   r<   rp      s    zGTestTraitType.test_deprecated_dynamic_initializer.<locals>.C._x_defaultN)rF   rG   rH   rp   r;   r;   r;   r<   C   s   rv   rn   rq   rr   ru   r   rQ   Z_trait_valuesrq   rC   rM   re   rv   rL   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:0    Y  |jdksRJ t ddg,}G dd dt}| }d|_W d    n1 s0    Y  |jdksJ 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>.ShouldntWarnrq   c                 S   s   dS NrP   r;   ro   r;   r;   r<   rp      s    zNTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_defaultc                 S   s   |j S r]   rV   rC   proposalr;   r;   r<   _x_validate   s    zOTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_validatec                 S   s   d S r]   r;   rB   r;   r;   r<   
_x_changed   s    zNTestTraitType.test_deprecated_method_warnings.<locals>.ShouldntWarn._x_changedN)rF   rG   rH   r   rq   r)   rp   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   s   dS r|   r;   ro   r;   r;   r<   rp      s    zLTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_defaultc                 S   s   |S r]   r;   )rC   rV   _r;   r;   r<   r      s    zMTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_validatec                 S   s   d S r]   r;   ro   r;   r;   r<   r      s    zLTestTraitType.test_deprecated_method_warnings.<locals>.ShouldWarn._x_changedN)rF   rG   rH   r   rq   rp   r   r   r;   r;   r;   r<   
ShouldWarn   s   r   )r3   r   rq   )rC   r   ra   wr   r;   r;   r<   test_deprecated_method_warnings   s    
$$z-TestTraitType.test_deprecated_method_warningsc                 C   s   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                   @   s$   e Zd ZedZeddd ZdS )z1TestTraitType.test_dynamic_initializer.<locals>.ArP   rq   c                 S   s   dS rm   r;   ro   r;   r;   r<   
_default_x   s    z<TestTraitType.test_dynamic_initializer.<locals>.A._default_xN)rF   rG   rH   r   rq   r)   r   r;   r;   r;   r<   rM      s   rM   c                   @   s   e Zd ZedZdS )z1TestTraitType.test_dynamic_initializer.<locals>.Brr   Nrs   r;   r;   r;   r<   re      s   re   c                   @   s   e Zd Zeddd ZdS )z1TestTraitType.test_dynamic_initializer.<locals>.Crq   c                 S   s   dS rt   r;   ro   r;   r;   r<   r      s    z<TestTraitType.test_dynamic_initializer.<locals>.C._default_xN)rF   rG   rH   r)   r   r;   r;   r;   r<   rv      s   rv   rn   rq   rr   ru   rw   rx   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                   @   s   e Zd ZdddZdS )z0TestTraitType.test_tag_metadata.<locals>.MyIntTTr2      rL   ry   NrF   rG   rH   metadatar;   r;   r;   r<   rb     s   rb   rP         ry   rz   r2   )rL   ry   rz   )r#   tagrQ   r   )rC   rb   rL   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                   @   s   e Zd ZdddZdS )z?TestTraitType.test_metadata_localized_instance.<locals>.MyIntTTr2   r   r   Nr   r;   r;   r;   r<   rb     s   rb   rP   r   rz   )r#   r   ZassertNotIn)rC   rb   rL   ry   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   ry   )r   tirL   )r   N)rF   rG   rH   r   r   r   barr;   r;   r;   r<   Foo  s   r   r   r   r   rL   r   ry   r2   )r   rQ   trait_metadatar   rC   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rF   rG   rH   r(   r   r   r   r;   r;   r;   r<   r   /  s   r   r2   r   rQ   r   r   r;   r;   r<   test_union_default_value.  s    z&TestTraitType.test_union_default_valuec                 C   s.   G dd dt }| }d|_| |jd d S )Nc                   @   s   e Zd Zee e gZdS )z9TestTraitType.test_union_validation_priority.<locals>.FooN)rF   rG   rH   r(   r   r'   r   r;   r;   r;   r<   r   6  s   r   1r2   )r   r   rQ   r   r;   r;   r<   test_union_validation_priority5  s    z,TestTraitType.test_union_validation_priorityc                 C   s$   G dd dt }| | ji  d S )Nc                   @   s   e Zd Zee e gZdS )z9TestTraitType.test_union_trait_default_value.<locals>.FooNr   r;   r;   r;   r<   r   ?  s   r   r   )rC   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 sR0    Y  | |d tdgd & |d	d
 |d	}W d    n1 s0    Y  | |d
 d S )Nc                   @   s   e Zd ZdddZdS )z>TestTraitType.test_deprecated_metadata_access.<locals>.MyIntTTr2   r   r   Nr   r;   r;   r;   r<   rb   E  s   rb   rP   z.use the instance .metadata dictionary directlyr   keyrV   z&use the instance .help string directlyhelpz	some help)r#   r3   Zset_metadataget_metadatarQ   )rC   rb   rL   vr;   r;   r<   test_deprecated_metadata_accessD  s    ((z-TestTraitType.test_deprecated_metadata_accessc                 C   s>   t dg  G dd dt}W d    n1 s00    Y  d S )N#Traits should be given as instancesc                   @   s   e Zd ZeZdS )z4TestTraitType.test_trait_types_deprecated.<locals>.CN)rF   rG   rH   r   tr;   r;   r;   r<   rv   U  s   rv   r3   r   rC   rv   r;   r;   r<   test_trait_types_deprecatedR  s    z)TestTraitType.test_trait_types_deprecatedc                 C   s>   t dg  G dd dt}W d    n1 s00    Y  d S )Nr   c                   @   s   e Zd ZeeZdS )z9TestTraitType.test_trait_types_list_deprecated.<locals>.CN)rF   rG   rH   r   r   r   r;   r;   r;   r<   rv   [  s   rv   r   r   r;   r;   r<    test_trait_types_list_deprecatedX  s    z.TestTraitType.test_trait_types_list_deprecatedc                 C   s>   t dg  G dd dt}W d    n1 s00    Y  d S )Nr   c                   @   s   e Zd ZeeZdS )z:TestTraitType.test_trait_types_tuple_deprecated.<locals>.CN)rF   rG   rH   r$   r   r   r;   r;   r;   r<   rv   a  s   rv   r   r   r;   r;   r<   !test_trait_types_tuple_deprecated^  s    z/TestTraitType.test_trait_types_tuple_deprecatedc                 C   s>   t dg  G dd dt}W d    n1 s00    Y  d S )Nr   c                   @   s   e Zd ZeeZdS )z9TestTraitType.test_trait_types_dict_deprecated.<locals>.CN)rF   rG   rH   r   r   r   r;   r;   r;   r<   rv   g  s   rv   r   r   r;   r;   r<    test_trait_types_dict_deprecatedd  s    z.TestTraitType.test_trait_types_dict_deprecatedN)rF   rG   rH   rO   rR   r\   rh   rk   rl   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r;   r;   r<   rJ   ^   s(   !+#
	rJ   c                   @   s   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                   @   s   e Zd Ze ZdS )z0TestHasDescriptorsMeta.test_metaclass.<locals>.ANrF   rG   rH   r   rL   r;   r;   r;   r<   rM   o  s   rM   r   rP   c                   @   s   e Zd Ze ZdS )z0TestHasDescriptorsMeta.test_metaclass.<locals>.BN)rF   rG   rH   r   ry   r;   r;   r;   r<   re   x  s   re   c                   @   s   e Zd ZedZdS )z0TestHasDescriptorsMeta.test_metaclass.<locals>.C   N)rF   rG   rH   r   rz   r;   r;   r;   r<   rv     s   rv   r   )rQ   r8   r   r   	__class__rL   ry   rz   )rC   rM   rL   re   ry   rv   rz   r;   r;   r<   test_metaclassl  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                   @   s   e Zd Ze Ze ZdS )z1TestHasDescriptorsMeta.test_this_class.<locals>.AN)rF   rG   rH   r!   r   rZ   r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze Ze ZdS )z1TestHasDescriptorsMeta.test_this_class.<locals>.BN)rF   rG   rH   r!   rZ   tttr;   r;   r;   r<   re     s   re   )r   rQ   r   Z
this_classrZ   r   )rC   rM   re   r;   r;   r<   test_this_class  s    z&TestHasDescriptorsMeta.test_this_classN)rF   rG   rH   r   r   r;   r;   r;   r<   r   k  s   r   c                   @   s   e Zd Zdd ZdS )TestHasDescriptorsc                    s2   G dd dt  G  fdddt}|dd}d S )Nc                   @   s   e Zd Zdd ZdS )z=TestHasDescriptors.test_setup_instance.<locals>.FooDescriptorc                 S   s
   |j }d S r]   r   )rC   rU   r   r;   r;   r<   instance_init  s    zKTestHasDescriptors.test_setup_instance.<locals>.FooDescriptor.instance_initN)rF   rG   rH   r   r;   r;   r;   r<   FooDescriptor  s   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rC   argskwargsr   r;   r<   r     s    zPTestHasDescriptors.test_setup_instance.<locals>.HasFooDescriptors.setup_instance)rF   rG   rH   fdr   __classcell__r;   r   r   r<   HasFooDescriptors  s   r   r   r   )r   r   )rC   r   Zhfdr;   r   r<   test_setup_instance  s    z&TestHasDescriptors.test_setup_instanceN)rF   rG   rH   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d Z	dd Z
dd Zdd ZdS )TestHasTraitsNotifyc                 C   s   g | _ g | _d S r]   _notify1_notify2ro   r;   r;   r<   setUp  s    zTestHasTraitsNotify.setUpc                 C   s   | j |||f d S r]   r   appendrC   r4   r5   r6   r;   r;   r<   notify1  s    zTestHasTraitsNotify.notify1c                 C   s   | j |||f d S r]   r   r   r   r;   r;   r<   notify2  s    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                   @   s   e Zd Ze Ze ZdS )z.TestHasTraitsNotify.test_notify_all.<locals>.ANrF   rG   rH   r   rL   r   ry   r;   r;   r;   r<   rM     s   rM   r           rP   rL   r   rP         $@ry   r   r   rL   
bad stringry   Tremoverr         4@)r   on_trait_changer   rL   rQ   lenr   ry   
assertTruerf   r"   setattrrN   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                   @   s   e Zd Ze Ze ZdS )z.TestHasTraitsNotify.test_notify_one.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   rL   r   rP   r   r   )r   r   r   rL   rQ   r   r   r   rf   r"   r   rN   r;   r;   r<   test_notify_one  s    z#TestHasTraitsNotify.test_notify_onec                 C   sn   G dd dt }G dd d|}| }| |jd | |jd d|_d|_| |jd | |jd d S )	Nc                   @   s   e Zd Ze ZdS )z,TestHasTraitsNotify.test_subclass.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z,TestHasTraitsNotify.test_subclass.<locals>.BNrF   rG   rH   r   ry   r;   r;   r;   r<   re     s   re   r   r   d         Y@r   rQ   rL   ry   rC   rM   re   ry   r;   r;   r<   test_subclass  s    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                   @   s   e Zd Ze ZdS )z3TestHasTraitsNotify.test_notify_subclass.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z3TestHasTraitsNotify.test_notify_subclass.<locals>.BNr   r;   r;   r;   r<   re     s   re   rL   ry   r   r   rP   r   r   r   )r   r   r   r   rL   ry   rQ   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                   @   s   e Zd Ze Zg Zdd ZdS )z1TestHasTraitsNotify.test_static_notify.<locals>.Ac                 S   s   | j |||f d S r]   r   r   r;   r;   r<   
_a_changed  s    z<TestHasTraitsNotify.test_static_notify.<locals>.A._a_changedN)rF   rG   rH   r   rL   r   r   r;   r;   r;   r<   rM     s   rM   r   rP   r   c                   @   s   e Zd Ze Zg Zdd ZdS )z1TestHasTraitsNotify.test_static_notify.<locals>.Bc                 S   s   | j |||f d S r]   r   r   r;   r;   r<   
_b_changed  s    z<TestHasTraitsNotify.test_static_notify.<locals>.B._b_changedN)rF   rG   rH   r   ry   r   r   r;   r;   r;   r<   re     s   re   r   r   )r   rL   rQ   r   r   r   ry   r   )rC   rM   rL   re   ry   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                      s
   d _ d S Nr;   cbr;   ro   r;   r<   	callback0  s    z7TestHasTraitsNotify.test_notify_args.<locals>.callback0c                    s   | f _ d S r]   r   )r4   ro   r;   r<   	callback1  s    z7TestHasTraitsNotify.test_notify_args.<locals>.callback1c                    s   | |f _ d S r]   r   )r4   r6   ro   r;   r<   	callback2  s    z7TestHasTraitsNotify.test_notify_args.<locals>.callback2c                    s   | ||f _ d S r]   r   r4   r5   r6   ro   r;   r<   	callback3  s    z7TestHasTraitsNotify.test_notify_args.<locals>.callback3c                    s   | |||f _ d S r]   r   )r4   r5   r6   ra   ro   r;   r<   	callback4"  s    z7TestHasTraitsNotify.test_notify_args.<locals>.callback4c                   @   s   e Zd Ze ZdS )z/TestHasTraitsNotify.test_notify_args.<locals>.ANr   r;   r;   r;   r<   rM   %  s   rM   rL   rP   r;   Tr   r   rL     )rL   r   '  )rL   r   r   i rD   r2   r   )r   r   rL   rQ   r   r   _trait_notifiers)rC   r   r   r   r   r   rM   rL   r;   ro   r<   test_notify_args  s:    z$TestHasTraitsNotify.test_notify_argsc                 C   s   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                       s6   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>.ArL   r   c                    s&   t  jf i | | | jdg d S NrL   )r   __init__r   	listener1rC   r   r   r;   r<   r   L  s    z=TestHasTraitsNotify.test_notify_only_once.<locals>.A.__init__c                 S   s   |  j d7  _ d S Nr2   ry   r   r;   r;   r<   r   P  s    z>TestHasTraitsNotify.test_notify_only_once.<locals>.A.listener1
rF   rG   rH   Z	listen_tor   rL   ry   r   r   r   r;   r;   r   r<   rM   F  s
   rM   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                    s"   t  jf i | | | j d S r]   )r   r   r   	listener2r   r   r;   r<   r   X  s    z=TestHasTraitsNotify.test_notify_only_once.<locals>.B.__init__c                 S   s   |  j d7  _ d S r   rz   r   r;   r;   r<   r  \  s    z>TestHasTraitsNotify.test_notify_only_once.<locals>.B.listener2c                 S   s   |  j d7  _ d S r   dr   r;   r;   r<   r   _  s    z?TestHasTraitsNotify.test_notify_only_once.<locals>.B._a_changed)	rF   rG   rH   rz   r  r   r  r   r   r;   r;   r   r<   re   S  s
   re   r2   r   rL   rQ   ry   rz   r  r   r;   r;   r<   test_notify_only_onceE  s    z)TestHasTraitsNotify.test_notify_only_onceNrF   rG   rH   r   r   r   r   r   r   r   r   r   r  r;   r;   r;   r<   r     s   0r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestObserveDecoratorc                 C   s   g | _ g | _d S r]   r   ro   r;   r;   r<   r   l  s    zTestObserveDecorator.setUpc                 C   s   | j | d S r]   r   rB   r;   r;   r<   r   p  s    zTestObserveDecorator.notify1c                 C   s   | j | d S r]   r   rB   r;   r;   r<   r   s  s    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                   @   s   e Zd Ze Ze ZdS )z/TestObserveDecorator.test_notify_all.<locals>.ANr   r;   r;   r;   r<   rM   w  s   rM   r   r   rP   rL   rD   r   ry   r   rr   r   )r   r,   r   rL   rQ   r   r   ry   r=   r   rf   r"   r   	unobserverC   rM   rL   rD   r;   r;   r<   r   v  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                   @   s   e Zd Ze Ze ZdS )z/TestObserveDecorator.test_notify_one.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   rL   r   rP   rD   r   )r   r,   r   rL   rQ   r   r   r=   r   rf   r"   r   r
  r;   r;   r<   r     s    z$TestObserveDecorator.test_notify_onec                 C   sn   G dd dt }G dd d|}| }| |jd | |jd d|_d|_| |jd | |jd d S )	Nc                   @   s   e Zd Ze ZdS )z-TestObserveDecorator.test_subclass.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z-TestObserveDecorator.test_subclass.<locals>.BNr   r;   r;   r;   r<   re     s   re   r   r   r   r   r   r   r;   r;   r<   r     s    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                   @   s   e Zd Ze ZdS )z4TestObserveDecorator.test_notify_subclass.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z4TestObserveDecorator.test_notify_subclass.<locals>.BNr   r;   r;   r;   r<   re     s   re   rL   ry   r   r   rP   r   rD   )r   r,   r   r   rL   ry   rQ   r   r   r   r=   r   )rC   rM   re   ry   rD   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>.ArL   c                 S   s   | j | d S r]   r   rB   r;   r;   r<   r     s    z=TestObserveDecorator.test_static_notify.<locals>.A._a_changedc                 S   s   | j | d S r]   )_notify_anyr   rB   r;   r;   r<   _any_changed  s    z?TestObserveDecorator.test_static_notify.<locals>.A._any_changedN)rF   rG   rH   r   rL   ry   r   r  r,   r   r   r  r;   r;   r;   r<   rM     s   
rM   r   rP   rL   rD   r2   r   ry   c                   @   s&   e Zd Ze Zg Zeddd ZdS )z2TestObserveDecorator.test_static_notify.<locals>.Bry   c                 S   s   | j | d S r]   r   rB   r;   r;   r<   r     s    z=TestObserveDecorator.test_static_notify.<locals>.B._b_changedN)rF   rG   rH   r   ry   r   r,   r   r;   r;   r;   r<   re     s   re   r   r   )
r   rL   rQ   r   r   r=   r   ry   r  r   )rC   rM   rL   rD   re   ry   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                      s
   d _ d S r   r   r;   ro   r;   r<   r     s    z8TestObserveDecorator.test_notify_args.<locals>.callback0c                    s
   |  _ d S r]   r   rD   ro   r;   r<   r     s    z8TestObserveDecorator.test_notify_args.<locals>.callback1c                   @   s   e Zd Ze ZdS )z0TestObserveDecorator.test_notify_args.<locals>.ANr   r;   r;   r;   r<   rM     s   rM   rL   rP   r;   r   rD   r2   r   )
r   r   rL   rQ   r   r	  r,   r=   r   r   )rC   r   r   rM   rL   rD   r;   ro   r<   r     s    z%TestObserveDecorator.test_notify_argsc                 C   s   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                       s6   e Zd ZdgZedZdZ fddZdd Z  Z	S )z5TestObserveDecorator.test_notify_only_once.<locals>.ArL   r   c                    s&   t  jf i | | | jdg d S r   )r   r   r,   r   r   r   r;   r<   r     s    z>TestObserveDecorator.test_notify_only_once.<locals>.A.__init__c                 S   s   |  j d7  _ d S r   r   rB   r;   r;   r<   r     s    z?TestObserveDecorator.test_notify_only_once.<locals>.A.listener1r   r;   r;   r   r<   rM     s
   rM   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                    s"   t  jf i | | | j d S r]   )r   r   r,   r  r   r   r;   r<   r     s    z>TestObserveDecorator.test_notify_only_once.<locals>.B.__init__c                 S   s   |  j d7  _ d S r   r  rB   r;   r;   r<   r    s    z?TestObserveDecorator.test_notify_only_once.<locals>.B.listener2rL   c                 S   s   |  j d7  _ d S r   r  rB   r;   r;   r<   r     s    z@TestObserveDecorator.test_notify_only_once.<locals>.B._a_changed)
rF   rG   rH   rz   r  r   r  r,   r   r   r;   r;   r   r<   re     s   re   r2   r  r   r;   r;   r<   r    s    z*TestObserveDecorator.test_notify_only_onceNr  r;   r;   r;   r<   r  k  s   *r  c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestHasTraitsc                 C   sj   G dd dt }| }| t| ddg | t| ddg | |d | |d d S )Nc                   @   s   e Zd Ze Ze ZdS )z)TestHasTraits.test_trait_names.<locals>.ANrF   rG   rH   r   ir   fr;   r;   r;   r<   rM   -  s   rM   r  r  g)r   rQ   sortedZtrait_namesZclass_trait_namesr   Z	has_traitassertFalserN   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                   @   s   e Zd Ze Ze ZdS )z-TestHasTraits.test_trait_has_value.<locals>.ANr  r;   r;   r;   r<   rM   8  s   rM   r  r  r2   r  )r   r  Ztrait_has_valuer  r  r   rN   r;   r;   r<   test_trait_has_value7  s    z"TestHasTraits.test_trait_has_valuec                 C   sX   t dg  G dd dt}W d    n1 s00    Y  | }| |ddd d S )N1metadata should be set using the \.tag\(\) methodc                   @   s   e Zd ZeddZdS )z7TestHasTraits.test_trait_metadata_deprecated.<locals>.AMY_VALUE
config_keyNrF   rG   rH   r   r  r;   r;   r;   r<   rM   G  s   rM   r  r  r  )r3   r   rQ   r   rN   r;   r;   r<   test_trait_metadata_deprecatedD  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  r  N)rF   rG   rH   r   r   r  r;   r;   r;   r<   rM   N  s   rM   r  r  r  r   rQ   r   rN   r;   r;   r<   test_trait_metadataM  s    z!TestHasTraits.test_trait_metadatac                 C   sD   G dd dt }| }| |ddd  | |dddd d S )Nc                   @   s   e Zd Ze ZdS )z4TestHasTraits.test_trait_metadata_default.<locals>.ANr  r;   r;   r;   r<   rM   U  s   rM   r  r  r)   r  rN   r;   r;   r<   test_trait_metadata_defaultT  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                   @   s   e Zd Ze Ze ZdS )z$TestHasTraits.test_traits.<locals>.ANr  r;   r;   r;   r<   rM   ]  s   rM   )r  r  )r   rQ   traitsr9   r  r  Zclass_traitsrN   r;   r;   r<   test_traits\  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r  Zother_thingVALUE3r   N)	rF   rG   rH   r   r   r  r   r  jr;   r;   r;   r<   rM   f  s   rM   r  r  r&  r"  r#  r$  r  c                 S   s   dS NTr;   r   r;   r;   r<   <lambda>r      z4TestHasTraits.test_traits_metadata.<locals>.<lambda>r  )r   rQ   r   r9   r  r  r&  rC   rM   rL   r   r;   r;   r<   test_traits_metadatae  s     z"TestHasTraits.test_traits_metadatac                 C   s   t dgd   G dd dt}W d    n1 s40    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>.Ar"  r#  r$  r%  r   N)rF   rG   rH   r   r  r   r  r&  r;   r;   r;   r<   rM   x  s   rM   r'  r"  r#  r$  r(  c                 S   s   dS r)  r;   r*  r;   r;   r<   r+    r,  z?TestHasTraits.test_traits_metadata_deprecated.<locals>.<lambda>r  )r3   r   rQ   r   r9   r  r  r&  r-  r;   r;   r<   test_traits_metadata_deprecatedu  s    . z-TestHasTraits.test_traits_metadata_deprecatedc                 C   s<   G dd dt }|ddd}| |jd | |jd d S )Nc                   @   s   e Zd Ze Ze ZdS )z"TestHasTraits.test_init.<locals>.AN)rF   rG   rH   r   r  r   rq   r;   r;   r;   r<   rM     s   rM   r2   r   )r  rq   )r   rQ   r  rq   rN   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 r]   )r   r   r  )rC   r  r   r;   r<   r     s    
z6TestHasTraits.test_positional_args.<locals>.A.__init__)rF   rG   rH   r   r  r   r   r;   r;   r   r<   rM     s   rM   r   )r   rQ   r  rf   	TypeErrorrN   r;   r;   r<   test_positional_args  s    z"TestHasTraits.test_positional_argsN)rF   rG   rH   r  r  r  r  r  r!  r.  r/  r0  r2  r;   r;   r;   r<   r  +  s   			r  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                   @   s   e Zd ZdS )z TestType.test_default.<locals>.BNrF   rG   rH   r;   r;   r;   r<   re     s   re   c                   @   s   e Zd ZeddZdS )z TestType.test_default.<locals>.AT
allow_noneNrF   rG   rH   r%   klassr;   r;   r;   r<   rM     s   rM   r8  rP   )r   rQ   r8  objectrf   r"   r   )rC   re   rM   rL   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                   @   s   e Zd ZdS )z(TestType.test_default_options.<locals>.BNr4  r;   r;   r;   r<   re     s   re   c                   @   s   e Zd ZdS )z(TestType.test_default_options.<locals>.CNr4  r;   r;   r;   r<   rv     s   rv   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>.ANTr5  r8  )r   r8  r6  )r   r8  )
rF   rG   rH   r%   k1k2k3k4k5k6r;   re   rv   r;   r<   rM     s   
rM   )r   assertIsr<  r   r9  r8  r=  r>  r?  r@  rA  rN   r;   rB  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                   @   s   e Zd ZdS )zTestType.test_value.<locals>.BNr4  r;   r;   r;   r<   re     s   re   c                   @   s   e Zd ZdS )zTestType.test_value.<locals>.CNr4  r;   r;   r;   r<   rv     s   rv   c                       s   e Zd Ze ZdS )zTestType.test_value.<locals>.ANr7  r;   re   r;   r<   rM     s   rM   r8  )r   rQ   r8  rf   r"   r   r9  rC   rv   rM   rL   r;   rE  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                   @   s   e Zd ZdS )z#TestType.test_allow_none.<locals>.BNr4  r;   r;   r;   r<   re     s   re   c                   @   s   e Zd ZdS )z#TestType.test_allow_none.<locals>.CNr4  r;   r;   r;   r<   rv     s   rv   c                       s   e Zd Ze ZdS )z#TestType.test_allow_none.<locals>.ANr7  r;   rE  r;   r<   rM     s   rM   r8  )r   rQ   r8  rf   r"   r   rF  r;   rE  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                   @   s   e Zd ZedZdS )'TestType.test_validate_klass.<locals>.Azno strings allowedNr7  r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd ZedZdS )rI  zrub.adub.DuckNr7  r;   r;   r;   r<   rM     s   )r   rf   ImportError)rC   rM   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                   @   s   e Zd ZdS )z)TestType.test_validate_default.<locals>.BNr4  r;   r;   r;   r<   re     s   re   c                       s   e Zd Zed ZdS )z)TestType.test_validate_default.<locals>.Ard   Nr7  r;   rE  r;   r<   rM     s   rM   c                       s   e Zd Zed ZdS )z)TestType.test_validate_default.<locals>.CNr7  r;   rE  r;   r<   rv     s   rv   r8  )r   rf   rJ  r"   rg   )rC   rM   rv   r;   rE  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                   @   s   e Zd ZedZdS )z"TestType.test_str_klass.<locals>.Atraitlets.config.ConfigNr7  r;   r;   r;   r<   rM     s   rM   r   Configr8  rP   )r   traitlets.configrO  r8  rQ   rf   r"   r   )rC   rM   rO  rL   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                   @   s   e Zd Ze ZdS )z&TestType.test_set_str_klass.<locals>.ANr7  r;   r;   r;   r<   rM     s   rM   rM  r;  r   rN  )r   rP  rO  rQ   r8  )rC   rM   rL   rO  r;   r;   r<   test_set_str_klass  s    
zTestType.test_set_str_klassN)rF   rG   rH   r:  rD  rG  rH  rK  rL  rQ  rR  r;   r;   r;   r<   r3    s   &r3  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                   @   s   e Zd ZdS )z$TestInstance.test_basic.<locals>.FooNr4  r;   r;   r;   r<   r   )  s   r   c                   @   s   e Zd ZdS )z$TestInstance.test_basic.<locals>.BarNr4  r;   r;   r;   r<   Bar,  s   rT  c                   @   s   e Zd ZdS )z$TestInstance.test_basic.<locals>.BahNr4  r;   r;   r;   r<   Bah/  s   rU  c                       s   e Zd Ze ddZdS )z"TestInstance.test_basic.<locals>.ATr5  NrF   rG   rH   r   rU   r;   r   r;   r<   rM   2  s   rM   rU   )r   r   rU   r^   rf   r"   r   rC   rT  rU  rM   rL   r;   rW  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                   @   s   e Zd ZdS )z,TestInstance.test_default_klass.<locals>.FooNr4  r;   r;   r;   r<   r   @  s   r   c                   @   s   e Zd ZdS )z,TestInstance.test_default_klass.<locals>.BarNr4  r;   r;   r;   r<   rT  C  s   rT  c                   @   s   e Zd ZdS )z,TestInstance.test_default_klass.<locals>.BahNr4  r;   r;   r;   r<   rU  F  s   rU  c                       s   e Zd Z ZdS )z4TestInstance.test_default_klass.<locals>.FooInstanceN)rF   rG   rH   r8  r;   rW  r;   r<   FooInstanceI  s   rZ  c                       s   e Zd Z ddZdS )z*TestInstance.test_default_klass.<locals>.ATr5  N)rF   rG   rH   rU   r;   )rZ  r;   r<   rM   L  s   rM   rU   )r   r   r   rU   r^   rf   r"   r   rX  r;   )r   rZ  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                   @   s   e Zd ZdS )z3TestInstance.test_unique_default_value.<locals>.FooNr4  r;   r;   r;   r<   r   Z  s   r   c                       s   e Zd Ze di ZdS )z1TestInstance.test_unique_default_value.<locals>.Ar;   NrV  r;   rW  r;   r<   rM   ]  s   rM   )r   r   rU   rC   rM   rL   ry   r;   rW  r<   test_unique_default_valueY  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                   @   s   e Zd Zdd ZdS )z&TestInstance.test_args_kw.<locals>.Fooc                 S   s
   || _ d S r]   r  )rC   rz   r;   r;   r<   r   f  s    z/TestInstance.test_args_kw.<locals>.Foo.__init__NrF   rG   rH   r   r;   r;   r;   r<   r   e  s   r   c                   @   s   e Zd ZdS )z&TestInstance.test_args_kw.<locals>.BarNr4  r;   r;   r;   r<   rT  i  s   rT  c                   @   s   e Zd Zdd ZdS )z&TestInstance.test_args_kw.<locals>.Bahc                 S   s   || _ || _d S r]   )rz   r  )rC   rz   r  r;   r;   r<   r   m  s    z/TestInstance.test_args_kw.<locals>.Bah.__init__Nr^  r;   r;   r;   r<   rU  l  s   rU  c                       s   e Zd Ze dZdS )z$TestInstance.test_args_kw.<locals>.ArP   NrV  r;   rW  r;   r<   rM   q  s   rM   rP   c                       s    e Zd Ze dedddZdS )z$TestInstance.test_args_kw.<locals>.Br_  rr   r  )r   kwN)rF   rG   rH   r   r9   rU   r;   )rU  r;   r<   re   w  s   re   rr   c                       s   e Zd Ze ddZdS )z$TestInstance.test_args_kw.<locals>.CTr5  NrV  r;   rW  r;   r<   rv   ~  s   rv   )r   rQ   rU   rz   r  r   )rC   rT  rM   rL   re   ry   rv   rz   r;   )rU  r   r<   test_args_kwd  s    zTestInstance.test_args_kwc                    s\   G dd d G  fdddt }| }| t |j W d    n1 sN0    Y  d S )Nc                   @   s   e Zd ZdS )z*TestInstance.test_bad_default.<locals>.FooNr4  r;   r;   r;   r<   r     s   r   c                       s   e Zd Ze ZdS )z(TestInstance.test_bad_default.<locals>.ANrV  r;   rW  r;   r<   rM     s   rM   )r   rf   r"   rU   rN   r;   rW  r<   test_bad_default  s
    zTestInstance.test_bad_defaultc                    s*   G dd d  fdd}|  t| d S )Nc                   @   s   e Zd ZdS )z'TestInstance.test_instance.<locals>.FooNr4  r;   r;   r;   r<   r     s   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>.ANrV  r;   rW  r;   r<   rM     s   rM   r   )rM   rW  r;   r<   inner  s    z)TestInstance.test_instance.<locals>.innerrf   r"   )rC   rd  r;   rW  r<   test_instance  s    zTestInstance.test_instanceN)	rF   rG   rH   rY  r[  r]  ra  rb  rf  r;   r;   r;   r<   rS  '  s    rS  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                   @   s   e Zd Ze ZdS )z%TestThis.test_this_class.<locals>.FooNrF   rG   rH   r!   thisr;   r;   r;   r<   r     s   r   ri  rP   )r   rQ   ri  rf   r"   r   )rC   r   r  r  r;   r;   r<   r     s    zTestThis.test_this_classc                 C   s4   G dd dt }| }| |_| t|j| d S )Nc                   @   s   e Zd Ze ZdS )z$TestThis.test_this_inst.<locals>.FooNrh  r;   r;   r;   r<   r     s   r   )r   ri  r   r^   )rC   r   r  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                   @   s   e Zd Ze ZdS )z#TestThis.test_subclass.<locals>.FooNrF   rG   rH   r!   r   r;   r;   r;   r<   r     s   r   c                   @   s   e Zd ZdS )z#TestThis.test_subclass.<locals>.BarNr4  r;   r;   r;   r<   rT    s   rT  )r   r   rQ   rC   r   rT  r  ry   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                   @   s   e Zd Ze ZdS )z,TestThis.test_subclass_override.<locals>.FooNrk  r;   r;   r;   r<   r     s   r   c                   @   s   e Zd Ze ZdS )z,TestThis.test_subclass_override.<locals>.BarNrk  r;   r;   r;   r<   rT    s   rT  r   )r   r   rQ   rf   r"   r   rl  r;   r;   r<   test_subclass_override  s    zTestThis.test_subclass_overridec                 C   sd   G dd dt }|d|dd|ddgd}| t dd	g|_W d    n1 sV0    Y  d S )
Nc                   @   s   e Zd Ze Zee ZdS )z-TestThis.test_this_in_container.<locals>.TreeN)rF   rG   rH   r'   rV   r   r!   leavesr;   r;   r;   r<   Tree  s   ro  r   r   r}   Zbuzz)rV   rn  r2   r   )r   rf   r"   rn  )rC   ro  treer;   r;   r<   test_this_in_container  s    zTestThis.test_this_in_containerN)rF   rG   rH   r   rj  r   rm  rq  r;   r;   r;   r<   rg    s
   rg  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 r]   )ra   rV   rC   rV   r;   r;   r<   assign  s    zTraitTestBase.assignc                 C   s   |S r]   r;   rs  r;   r;   r<   coerce  s    zTraitTestBase.coercec                 C   s:   t | dr6| jD ]$}| | | | jj| | qd S )N_good_values)hasattrrv  rt  rQ   ra   rV   ru  rs  r;   r;   r<   test_good_values  s    


zTraitTestBase.test_good_valuesc              	   C   sN   t | drJ| jD ]8}z| t| j| W q tyF   dsBJ |Y q0 qd S )N_bad_valuesF)rw  ry  rf   r"   rt  AssertionErrorrs  r;   r;   r<   test_bad_values  s    

zTraitTestBase.test_bad_valuesc                 C   s    t | dr| | j| jj d S N_default_value)rw  rQ   r}  ra   rV   ro   r;   r;   r<   test_default_value  s    
z TraitTestBase.test_default_valuec              	   C   s   t | drt | drd | jv r| j d }zRd|_| jd  | d  | | jjd  | 	  | 
  W d|_| jd  nd|_| jd  0 d S )Nry  rv  rV   TF)rw  ry  ra   r   r6  r   rt  rQ   rV   rx  r{  r   )rC   traitr;   r;   r<   rH    s$    

zTraitTestBase.test_allow_nonec                 C   s   t | dr| j| j_d S r|  )rw  r}  ra   rV   ro   r;   r;   r<   tearDown  s    
zTraitTestBase.tearDownN)rF   rG   rH   __doc__rt  ru  rx  r{  r~  rH  r  r;   r;   r;   r<   rr    s   rr  c                   @   s   e Zd Ze ZdS )AnyTraitN)rF   rG   rH   r   rV   r;   r;   r;   r<   r  	  s   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   tenrP   r_                ?)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd Zee e gZdS )
UnionTraitN)rF   rG   rH   r(   r%   r   rV   r;   r;   r;   r<   r    s   r  c                   @   s*   e Zd ZeddZeedgZg ddgZdS )UnionTraitTestrM  r}   Tr   r  N)	rF   rG   rH   r  ra   r_   floatrv  ry  r;   r;   r;   r<   r    s   

r  c                   @   s   e Zd Ze ZdS )CallableTraitN)rF   rG   rH   r   rV   r;   r;   r;   r<   r  #  s   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   s   t | S r]   )r8   rq   r;   r;   r<   r+  *  r,  zCallableTraitTest.<lambda>r}   c                 C   s   t | S r]   )printr  r;   r;   r<   r+  +  r,  r2    N)	rF   rG   rH   r  ra   r_   r  rv  ry  r;   r;   r;   r<   r  (  s   r  c                   @   s   e Zd Ze e B ZdS )OrTraitN)rF   rG   rH   r   r'   rV   r;   r;   r;   r<   r  /  s   r  c                   @   s$   e Zd Ze Zg dZg ddgZdS )OrTraitTest)TFr  r  r  N)rF   rG   rH   r  ra   rv  ry  r;   r;   r;   r<   r  4  s   r  c                   @   s   e Zd ZedddZdS )IntTraitc   iminNrF   rG   rH   r   rV   r;   r;   r;   r<   r  ;  s   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  rP   r  r_  Nr  333333$@333333$10L-10L10.1-10.110-10i8)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  @  s&   r  c                   @   s   e Zd ZedZdS )	CIntTrait5NrF   rG   rH   r   rV   r;   r;   r;   r<   r  X  s   r  c                   @   s>   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  rP   r   g      $r  r  rP   r_  Nr  r  c                 C   s   t |S r]   r_   rC   nr;   r;   r<   ru  c  s    zTestCInt.coerce)	rF   rG   rH   r  ra   r}  rv  ry  ru  r;   r;   r;   r<   r  \  s
   r  c                   @   s   e Zd ZedddZdS )MinBoundCIntTraitr  r   r  Nr  r;   r;   r;   r<   r  g  s   r  c                   @   s&   e Zd Ze ZdZg dZg dZdS )TestMinBoundCIntr   )r   g      @3)g@r   g      N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  k  s   r  c                   @   s   e Zd ZedZdS )	LongTraitr  NrF   rG   rH   r   rV   r;   r;   r;   r<   r  s  s   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  rP   r  r  r_  Nr  r  r  r  r  r  r  r  r  )rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  x  s$   r  c                   @   s   e Zd ZedddZdS )MinBoundLongTraitr  r   r  Nr  r;   r;   r;   r<   r    s   r  c                   @   s&   e Zd Ze ZdZddgZddgZdS )TestMinBoundLongr  r   rP   r   r  N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedddZdS )MaxBoundLongTraitr   rP   maxNr  r;   r;   r;   r<   r    s   r  c                   @   s&   e Zd Ze ZdZddgZddgZdS )TestMaxBoundLongr   rP   rn   rr   N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedZdS )
CLongTraitr  NrF   rG   rH   r   rV   r;   r;   r;   r<   r    s   r  c                   @   s>   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 )	TestCLongr   r  r  rP   r_  Nr  r  c                 C   s   t |S r]   r  r  r;   r;   r<   ru    s    zTestCLong.coerce)	rF   rG   rH   r  ra   r}  rv  ry  ru  r;   r;   r;   r<   r    s
   r  c                   @   s   e Zd ZedddZdS )MaxBoundCLongTraitr  rP   r  Nr  r;   r;   r;   r<   r    s   r  c                   @   s&   e Zd Ze ZdZg dZddgZdS )TestMaxBoundCLongr   )rP   r  g$@g      &@Z11N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedZdS )IntegerTraitr2   NrF   rG   rH   r   rV   r;   r;   r;   r<   r    s   r  c                   @   s   e Zd Ze ZdZdd ZdS )TestIntegerr2   c                 C   s   t |S r]   r  r  r;   r;   r<   ru    s    zTestInteger.coerceN)rF   rG   rH   r  ra   r}  ru  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedddZdS )MinBoundIntegerTraitr   r   r  Nr  r;   r;   r;   r<   r    s   r  c                   @   s"   e Zd Ze ZdZdZddgZdS )TestMinBoundIntegerr   )r   rr   r   r  N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedddZdS )MaxBoundIntegerTraitr2   r   r  Nr  r;   r;   r;   r<   r    s   r  c                   @   s"   e Zd Ze ZdZdZddgZdS )TestMaxBoundIntegerr2   )r   r  r   rP   N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedddZdS )
FloatTrait     X@      i@r  N)rF   rG   rH   r   rV   r;   r;   r;   r<   r    s   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  )rP   r  r  r  r  rP   r_  Nr  r  r  r  r  r  r  g      i@)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s"   r  c                   @   s   e Zd ZedddZdS )CFloatTraitz99.0r  r  N)rF   rG   rH   r
   rV   r;   r;   r;   r<   r    s   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  )rP   r   g      %@z10.0r  r  r  rP   r_  Nr  g33333i@z200.1c                 C   s   t |S r]   )r  rC   r   r;   r;   r<   ru    s    zTestCFloat.coerce)	rF   rG   rH   r  ra   r}  rv  ry  ru  r;   r;   r;   r<   r    s
   r  c                   @   s   e Zd ZedZdS )ComplexTrait     X@     XN)rF   rG   rH   r   rV   r;   r;   r;   r<   r    s   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  )
rP   r  r  r  y              $@y      $@      $@y      $@      $y        333333$@y333333$@333333$@y333333$@333333$r  r  r  rP   r_  N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedZdS )
BytesTrait   stringN)rF   rG   rH   r   rV   r;   r;   r;   r<   r  -  s   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 )	TestBytesr  )s   10s   -10s   10Ls   -10Ls   10.1s   -10.1r  rP   r  r  r  r  r  r_  Nstring)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  2  s   r  c                   @   s   e Zd ZedZdS )UnicodeTraitunicodeN)rF   rG   rH   r'   rV   r;   r;   r;   r<   r  ;  s   r  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 )TestUnicoder  )
r  r  r  r  r  r  r  r     €s
   bytestringrP   r  r  r  r  r  r_  Nc                 C   s   t |S r]   r0   r  r;   r;   r<   ru  H  s    zTestUnicode.coerce)	rF   rG   rH   r  ra   r}  rv  ry  ru  r;   r;   r;   r<   r  @  s
    r  c                   @   s   e Zd ZedZdS )ObjectNameTraitabcN)rF   rG   rH   r   rV   r;   r;   r;   r<   r  L  s   r  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 )TestObjectNamer  )rL   ghZg9Zg_Z_GZa345_r2   r  r  Z9g!z#abczaj@a.bza()za[0]N   þ)
rF   rG   rH   r  ra   r}  rv  r9  ry  r   r;   r;   r;   r<   r  P  s$   r  c                   @   s   e Zd ZedZdS )DottedObjectNameTraitr  N)rF   rG   rH   r   rV   r;   r;   r;   r<   r  g  s   r  c                   @   s0   e Zd Ze ZdZg dZg dZed dS )TestDottedObjectNamer  )rM   zy.tzy765.__repr__zos.path.join)r2   u   abc.€z_.@.z.abczabc.z.abc.Nu   t.þN)	rF   rG   rH   r  ra   r}  rv  ry  r   r;   r;   r;   r<   r  k  s
   r  c                   @   s   e Zd Ze ZdS )TCPAddressTraitN)rF   rG   rH   r    rV   r;   r;   r;   r<   r  u  s   r  c                   @   s&   e Zd Ze ZdZg dZg dZdS )TestTCPAddress)	127.0.0.1r   ))	localhostr   )z192.168.0.1r   )zwww.google.comP   ))r   r   )r  r   )r  rT   NN)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  y  s   r  c                   @   s   e Zd Zee ZdS )	ListTraitNrF   rG   rH   r   r   rV   r;   r;   r;   r<   r    s   r  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   rP   r2   r   rL   c                 C   s   |d urt |}|S r]   listrs  r;   r;   r<   ru    s    zTestList.coerceN)rF   rG   rH   r  ra   r}  r  rangerv  ry  ru  r;   r;   r;   r<   r    s
   r  c                   @   s   e Zd ZdS )r   Nr4  r;   r;   r;   r<   r     s   r   c                   @   s   e Zd ZeeeZdS )NoneInstanceListTraitN)rF   rG   rH   r   r   r   rV   r;   r;   r;   r<   r    s   r  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)	rF   rG   rH   r  ra   r}  r   rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd Zeee d ZdS )InstanceListTraitz.FooN)rF   rG   rH   r   r   rV   r;   r;   r;   r<   r    s   r  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   s   |  | j d jjt dS z2Test that the instance klass is properly assigned.rV   N)rC  ra   r   _traitr8  r   ro   r;   r;   r<   
test_klass  s    zTestInstanceList.test_klassr   r   N)
rF   rG   rH   r  ra   r  r}  r   rv  ry  r;   r;   r;   r<   r    s   r  c                   @   s   e Zd Zee e B ZdS )UnionListTraitN)rF   rG   rH   r   r   r   rV   r;   r;   r;   r<   r    s   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)rF   rG   rH   r  ra   r}  rv  ry  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   )ZminlenmaxlenNr  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   r  rP   rL   r   c                 C   s   |d urt |}|S r]   r  rs  r;   r;   r<   ru    s    zTestLenList.coerceN)rF   rG   rH   r  ra   r}  rv  r  r  ry  ru  r;   r;   r;   r<   r    s
   r  c                   @   s   e Zd ZeeddddZdS )
TupleTraitTr5  r2   r   N)rF   rG   rH   r$   r   rV   r;   r;   r;   r<   r    s   r  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 )
TestTupleTraitr  r  r2   )rP   r  rL   r;   Nc                 C   s   |d urt |}|S r]   tuplers  r;   r;   r<   ru    s    zTestTupleTrait.coercec                 C   s4   |  ttd | j ttdd tt t dd}d S Nr   hellor   )r2   r   rf   r1  r$   r   r	   rC   r   r;   r;   r<   test_invalid_args  s    z TestTupleTrait.test_invalid_argsN)
rF   rG   rH   r  ra   r}  rv  ry  ru  r   r;   r;   r;   r<   r    s   r  c                   @   s   e Zd ZedZdS )LooseTupleTraitr2   r   r   N)rF   rG   rH   r$   rV   r;   r;   r;   r<   r    s   r  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 )TestLooseTupleTraitr  r  r2   r  r   r  )rL   r   r;   rP   Nc                 C   s   |d urt |}|S r]   r  rs  r;   r;   r<   ru    s    zTestLooseTupleTrait.coercec                 C   s4   |  ttd | j ttdd tt t dd}d S r  r  r  r;   r;   r<   r     s    z%TestLooseTupleTrait.test_invalid_args)rF   rG   rH   r  ra   r}  r  r  rv  ry  ru  r   r;   r;   r;   r<   r    s    r  c                   @   s"   e Zd Zee e ddgdZdS )MultiTupleTraitr     bottlesr   N)rF   rG   rH   r$   r   r   rV   r;   r;   r;   r<   r    s   r  c                   @   s"   e Zd Ze ZdZddgZdZdS )TestMultiTuple)r  r  )r2      a)r      b)r;   rP   r  )r2   r  r   )r  r2   )r2   rL   N)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r    s   r  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   r6  rF   rG   rH   r   r;   r	  r;   r<   rv   ,  s   rv   r   )r   r   )r	  rv   rz   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 s0J |j|ks>J d S )Nc                       s   e Zd Z  ZdS )ztest_default_value.<locals>.CNr
  r;   r  r;   r<   rv   =  s   rv   r   r8   r   r	  r   rv   rz   r;   r  r<   r~  8  s    r~  c                    sR   G dd d|  G  fdddt }| }t|jt|u s@J |j|ksNJ 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   r   )rC   r   r   r;   r<   r   N  s    z;test_subclass_default_value.<locals>.SubclassTrait.__init__)N)rF   rG   rH   r   r   r;   r;   r   r<   SubclassTraitM  s   r  c                       s   e Zd Z  ZdS )z&test_subclass_default_value.<locals>.CNr
  r;   r  r;   r<   rv   Q  s   rv   Nr  r  r;   r  r<   test_subclass_default_valueF  s
    r  c                   @   s   e Zd ZedZdS )CRegExpTraitr  N)rF   rG   rH   r   rV   r;   r;   r;   r<   r  Z  s   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 r]   )recompilers  r;   r;   r<   ru  `  s    zTestCRegExp.coercer  z\d+)(Nr;   N)rF   rG   rH   ru  r  ra   r  r  r}  rv  ry  r;   r;   r;   r<   r  _  s
   
r  c                   @   s   e Zd Ze ZdS )	DictTraitN)rF   rG   rH   r   rV   r;   r;   r;   r<   r  j  s   r  c                  C   s8   i } t  }| |_d| d< | |jks&J |j| u s4J d S )Nr   rL   )r  rV   )r  rz   r;   r;   r<   test_dict_assignmentn  s    r  c                   @   s   e Zd Zee ddidZdS ) UniformlyValueValidatedDictTraitr   r   )value_traitr   NrF   rG   rH   r   r'   rV   r;   r;   r;   r<   r  w  s   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)rF   rG   rH   r  ra   r}  rv  ry  r;   r;   r;   r<   r  |  s   r  c                   @   s"   e Zd Zede iddidZdS )#NonuniformlyValueValidatedDictTraitr   r2   )per_key_traitsr   N)rF   rG   rH   r   r   rV   r;   r;   r;   r<   r     s   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)rF   rG   rH   r   ra   r}  rv  ry  r;   r;   r;   r<   r"    s   r"  c                   @   s   e Zd Zee ddidZdS )KeyValidatedDictTraitr   r   )	key_traitr   Nr  r;   r;   r;   r<   r#    s   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)rF   rG   rH   r#  ra   r}  rv  ry  r;   r;   r;   r<   r%    s   r%  c                   @   s*   e Zd Zee e de iddidZdS )FullyValidatedDictTraitr   r2   )r  r$  r!  r   N)rF   rG   rH   r   r'   r   rV   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)rF   rG   rH   r'  ra   r}  rv  ry  r;   r;   r;   r<   r(    s   r(  c                  C   sF   G dd dt } |  }|ji ks$J |ji ks2J |j|jusBJ dS )zZCheck that the `{}` default value of the Dict traitlet constructor is
    actually copied.c                   @   s   e Zd Ze Ze ZdS )z$test_dict_default_value.<locals>.FooN)rF   rG   rH   r   d1d2r;   r;   r;   r<   r     s   r   N)r   r*  r+  )r   r   r;   r;   r<   test_dict_default_value  s
    r,  c                   @   s   e Zd Zdd Zdd ZdS )TestValidationHookc                 C   sb   G dd dt }| }d|_d|_| t d|_W d   n1 sH0    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   rV   c                 S   sD   |d }| j dkr"|d r"td| j dkr@|d dkr@td|S )NrV   r/  r   zExpected an even numberr.  r   zExpected an odd number)parityr"   )rC   r   rV   r;   r;   r<   _value_validate  s    zDTestValidationHook.test_parity_trait.<locals>.Parity._value_validateN)	rF   rG   rH   r   rV   r   r0  r/   r1  r;   r;   r;   r<   Parity  s   r2  r.  r2   r   Nr/  )r   r0  rV   rf   r"   )rC   r2  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 sB0    Y  d|_| t d|_W d   n1 sx0    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   sH   |d j dkr"|d d s"td|d j dkrD|d d rDtdd S )Nr  r.  rV   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)rF   rG   rH   r   r.  r/  r/   r5  r;   r;   r;   r<   OddEven  s   r6  r   r   N)r   r.  rf   r"   r/  )rC   r6  r3  r;   r;   r<   test_multiple_validate  s    $z)TestValidationHook.test_multiple_validateN)rF   rG   rH   r4  r7  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                   @   s   e Zd Ze ZdS )z%TestLink.test_connect_same.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   	   r}      rV   r      Nr   r+   rQ   rV   rC   rM   rL   ry   rz   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                   @   s   e Zd Ze ZdS )z'TestLink.test_link_different.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z'TestLink.test_link_different.<locals>.BNrF   rG   rH   r   countr;   r;   r;   r<   re     s   re   r9  r}   r:  rA  rV   rA  r   r   N)r   r+   rQ   rV   rA  rC   rM   re   rL   ry   rz   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                   @   s   e Zd Ze ZdS )z$TestLink.test_unlink_link.<locals>.ANr  r;   r;   r;   r<   rM   *  s   rM   r9  r}   r:  rV   r   r   r2   N)r   r+   rV   unlinkassertNotEqualrQ   r=  r;   r;   r<   test_unlink_link&  s    

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                   @   s   e Zd Ze ZdS )z"TestLink.test_callbacks.<locals>.ANr  r;   r;   r;   r<   rM   A  s   rM   c                   @   s   e Zd Ze ZdS )z"TestLink.test_callbacks.<locals>.BNr@  r;   r;   r;   r<   re   D  s   re   r9  r}   r:  rB  c                    s     d d S r   r   r   Zcallback_countr;   r<   
a_callbackM  s    z+TestLink.test_callbacks.<locals>.a_callbackrV   c                    s     d d S )Nry   rI  r   rJ  r;   r<   
b_callbackR  s    z+TestLink.test_callbacks.<locals>.b_callbackrA  r  ry   Nr   bar   ab)r   r   r+   rQ   joinrA  rV   )rC   rM   re   rL   ry   rK  rL  rz   r;   rJ  r<   test_callbacks=  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                   @   s   e Zd Ze ZdS )z!TestLink.test_tranform.<locals>.ANr  r;   r;   r;   r<   rM   l  s   rM   r9  r}   r:  rV   c                 S   s   d|  S Nr   r;   r  r;   r;   r<   r+  s  r,  z(TestLink.test_tranform.<locals>.<lambda>c                 S   s   t | d S )Ng       @r  r  r;   r;   r<   r+  s  r,  )Z	transformr   r   rP   r;  r   Nr<  r=  r;   r;   r<   test_tranformh  s    

"zTestLink.test_tranformc                 C   s>   G dd dt }| }t|df|df}| tt|dd d S )Nc                   @   s(   e Zd Ze Ze Zeddd ZdS )z4TestLink.test_link_broken_at_source.<locals>.MyClassr&  c                 S   s   |j d | _d S rR  )r6   r  rB   r;   r;   r<   another_update  s    zCTestLink.test_link_broken_at_source.<locals>.MyClass.another_updateNrF   rG   rH   r   r  r&  r,   rT  r;   r;   r;   r<   MyClass  s   rV  r  r&  r   r   r+   rf   r"   r   rC   rV  Zmclr;   r;   r<   test_link_broken_at_source  s    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                   @   s(   e Zd Ze Ze Zeddd ZdS )z4TestLink.test_link_broken_at_target.<locals>.MyClassr  c                 S   s   |j d | _d S rR  )r6   r&  rB   r;   r;   r<   rT    s    zCTestLink.test_link_broken_at_target.<locals>.MyClass.another_updateNrU  r;   r;   r;   r<   rV    s   rV  r  r&  r   rW  rX  r;   r;   r<   test_link_broken_at_target  s    z#TestLink.test_link_broken_at_targetN)
rF   rG   rH   r>  rD  rH  rP  rS  rZ  r[  r;   r;   r;   r<   r8    s   +r8  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                   @   s   e Zd Ze ZdS )z0TestDirectionalLink.test_connect_same.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   r9  r}   r:  rV   r   r;  Nr   r*   rQ   rV   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 )rQ  c                   @   s   e Zd Ze ZdS )z,TestDirectionalLink.test_tranform.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   r9  r}   r:  rV   c                 S   s   d|  S rR  r;   r  r;   r;   r<   r+    r,  z3TestDirectionalLink.test_tranform.<locals>.<lambda>r   r   rP   r;  Nr]  r=  r;   r;   r<   rS    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                   @   s   e Zd Ze ZdS )z2TestDirectionalLink.test_link_different.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd Ze ZdS )z2TestDirectionalLink.test_link_different.<locals>.BNr@  r;   r;   r;   r<   re     s   re   r9  r}   r:  rB  rV   rA  r   r;  N)r   r*   rQ   rV   rA  rC  r;   r;   r<   rD    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 )rE  c                   @   s   e Zd Ze ZdS )z/TestDirectionalLink.test_unlink_link.<locals>.ANr  r;   r;   r;   r<   rM     s   rM   r9  r}   r:  rV   r   r   r2   N)r   r*   rV   rF  rG  r+   rQ   r=  r;   r;   r<   rH    s    

z$TestDirectionalLink.test_unlink_linkN)rF   rG   rH   r>  rS  rD  rH  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 )	
Pickleabler  c                 C   s   d S r]   r;   rB   r;   r;   r<   
_i_changed 	  s    zPickleable._i_changedc                 C   s   |d S )NrV   r;   )rC   commitr;   r;   r<   _i_validate	  s    zPickleable._i_validatec                 C   s@   |    d| _W d    n1 s$0    Y  | | jd d S )Nr2   r  )hold_trait_notificationsr  r   r_  ro   r;   r;   r<   r   
	  s    
$zPickleable.__init__N)rF   rG   rH   r   r  r,   r_  r/   ra  r&  r   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sJ |j| jksdJ qdd S )Nr2   r   )r^  r  pickleHIGHEST_PROTOCOLdumpsloadsr  r&  )rz   protocolpc2r;   r;   r<   test_pickle_hastraits	  s    

rj  c               	      s  g  G  fdddt } |  }|  | 0 d|_|jdksFJ  g ksRJ W d    n1 sf0    Y  d|_|jdksJ | P d|_|jdksJ  g ksJ d|_|jdksJ  g ksJ W d    n1 s0    Y  d|_|jdksJ  g ksJ W d    n1 s&0    Y   dgks@J z4|  d|_W d    n1 sh0    Y  W n ty   Y n0 |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 r]   rI  r   changesr;   r<   r   '	  s    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"   rC   rV   r  r;   r;   r<   _b_validate*	  s    z7test_hold_trait_notifications.<locals>.Test._b_validateN)rF   rG   rH   r   rL   ry   r   ro  r;   rk  r;   r<   Test#	  s   rp  r2   r   r   r   )r   r   r   )r   rb  rL   ry   	Exception)rp  r   r;   rk  r<   test_hold_trait_notifications 	  s6    

*
*.
*rr  c                   @   s   e Zd Ze Zdd ZdS )RollBackc                 C   s   |rt d|S )NZfoobarrm  rn  r;   r;   r<   _bar_validateP	  s    zRollBack._bar_validateN)rF   rG   rH   r   r   rt  r;   r;   r;   r<   rs  M	  s   rs  c                   @   s   e Zd Zdd ZdS )TestRollbackc                 C   s   dd }|  t| d S )Nc                   S   s   t dd d S )Nr2   r   )rs  r;   r;   r;   r<   assign_rollbackX	  s    z4TestRollback.test_roll_back.<locals>.assign_rollbackre  )rC   rw  r;   r;   r<   test_roll_backW	  s    zTestRollback.test_roll_backN)rF   rG   rH   rx  r;   r;   r;   r<   ru  V	  s   ru  c                   @   s(   e Zd Ze Ze Zdd Zdd ZdS )CacheModificationc                 C   s
   || _ |S r]   r   rn  r;   r;   r<   rt  b	  s    zCacheModification._bar_validatec                 C   s
   || _ |S r]   rv  rn  r;   r;   r<   _foo_validatef	  s    zCacheModification._foo_validateN)rF   rG   rH   r   r   r   rt  rz  r;   r;   r;   r<   ry  ^	  s   ry  c                   C   s   t dd t dd d S )Nr2   r   rv  )ry  r;   r;   r;   r<   test_cache_modificationk	  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;   )rg   .0rz   ro   r;   r<   
<dictcomp>	  r,  z'OrderTraits._notify.<locals>.<dictcomp>abcdefghijklN)notifiedr   r;   ro   r<   _notify	  s    zOrderTraits._notifyc                    s"   |  | j t jf i | d S r]   )r   r  r   r   r   r   r;   r<   r   	  s    zOrderTraits.__init__)rF   rG   rH   r   r  r'   rL   ry   rz   r  er  r  hr  r&  krY  r  r   r   r;   r;   r   r<   r|  p	  s   
r|  c                     sT   dd dD  t  } | ji ks"J t f i  }  fdddD }| j|ksPJ d S )Nc                 S   s   i | ]
}||qS r;   r;   r}  r;   r;   r<   r  	  r,  z+test_notification_order.<locals>.<dictcomp>r  c                    s   i | ]
}| qS r;   r;   r}  r  r;   r<   r  	  r,  )r|  r  )ra   Znotificationsr;   r  r<   test_notification_order	  s    r  c                   @   s   e Zd ZedddZdS )ForwardDeclaredInstanceTraitForwardDeclaredBarTr5  N)rF   rG   rH   r   rV   r;   r;   r;   r<   r  	  s   r  c                   @   s   e Zd ZedddZdS )ForwardDeclaredTypeTraitr  Tr5  N)rF   rG   rH   r   rV   r;   r;   r;   r<   r  	  s   r  c                   @   s   e Zd ZeedZdS ) ForwardDeclaredInstanceListTraitr  N)rF   rG   rH   r   r   rV   r;   r;   r;   r<   r  	  s   r  c                   @   s   e Zd ZeedZdS )ForwardDeclaredTypeListTraitr  N)rF   rG   rH   r   r   rV   r;   r;   r;   r<   r  	  s   r  c                   @   s   e Zd ZdS )r  Nr4  r;   r;   r;   r<   r  	  s   r  c                   @   s   e Zd ZdS )ForwardDeclaredBarSubNr4  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 ) TestForwardDeclaredInstanceTraitNr   r   )
rF   rG   rH   r  ra   r}  r  r  rv  ry  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   )
rF   rG   rH   r  ra   r}  r  r  rv  ry  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   s   |  | j d jjt dS r  rC  ra   r   r  r8  r  ro   r;   r;   r<   r  	  s    z*TestForwardDeclaredInstanceList.test_klassr   Nr   )rF   rG   rH   r  ra   r  r}  r  r  rv  ry  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   s   |  | j d jjt dS r  r  ro   r;   r;   r<   r  	  s    z&TestForwardDeclaredTypeList.test_klassr   r   N)rF   rG   rH   r  ra   r  r}  r  r  rv  ry  r;   r;   r;   r<   r  	  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestDynamicTraitsc                 C   s
   g | _ d S r]   )r   ro   r;   r;   r<   r   
  s    zTestDynamicTraits.setUpc                 C   s   | j |||f d S r]   r   r   r;   r;   r<   r   
  s    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                   @   s   e Zd ZdS )z,TestDynamicTraits.test_notify_all.<locals>.ANr4  r;   r;   r;   r<   rM   
  s   rM   rq   yr  )r  r   r   rP   )rq   r   rP   r   )r  r   r   r   Tr   rr   r   )r   r   rw  Z
add_traitsr   r^   r   rQ   r   rF   r   r   rq   r   r   r  rf   r"   r   r\  r;   r;   r<   r   
  s<    z!TestDynamicTraits.test_notify_allN)rF   rG   rH   r   r   r   r;   r;   r;   r<   r  

  s   r  c                  C   s|   G dd dt } |  }d|_|jdks*J |  }tt |j}W d    n1 sV0    Y  | dd}|jdksxJ d S )Nc                   @   s   e Zd ZeddgZdS )ztest_enum_no_default.<locals>.CrL   ry   N)rF   rG   rH   r   r   r;   r;   r;   r<   rv   >
  s   rv   rL   ry   r  )r   r   pytestraisesr"   )rv   rz   r   r;   r;   r<   test_enum_no_default=
  s    $
r  c                  C   sn   G dd dt } | j dks"J | j dks4J | j dksFJ | j dksXJ | j dksjJ 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)rF   rG   rH   r%   r   r   t2r   r  r   lisr   r  r;   r;   r;   r<   rv   O
  s
   rv   z'traitlets.HasTraits'z'traitlets.traitlets.HasTraits'r  []{})r   r   Zdefault_value_reprr  r  r  r  )rv   r;   r;   r<   test_default_value_reprN
  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 )TransitionalClassr  c                 C   s   t S r]   )r  ro   r;   r;   r<   
_d_defaulta
  s    zTransitionalClass._d_defaultFr   calls_superc                 C   s   dS rS   r;   ro   r;   r;   r<   _calls_super_defaulth
  s    z&TransitionalClass._calls_super_defaultc                 C   s
   || _ d S r]   )parent_superrB   r;   r;   r<   _calls_super_changedl
  s    z&TransitionalClass._calls_super_changed	overridesc                 C   s
   || _ d S r]   )parent_overriderB   r;   r;   r<   _overrides_changedt
  s    z$TransitionalClass._overrides_changedN)rF   rG   rH   r   r  r)   r  r  r   r  r  r,   r-   r  r  r  r  r;   r;   r;   r<   r  ]
  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   s   t S r]   )r  ro   r;   r;   r<   r  {
  s    zSubClass._d_defaultFc                    s   d| _ t ||| d S r)  )subclass_superr   r  r   r   r;   r<   r  
  s    zSubClass._calls_super_changedc                 C   s
   d| _ d S r)  )subclass_overrider   r;   r;   r<   r  
  s    zSubClass._overrides_changed)	rF   rG   rH   r  r  r  r  r  r   r;   r;   r   r<   r  z
  s
   r  c                  C   sL   t  } d| _| jsJ | js J d| _| js0J | jr:J | jt u sHJ d S Nr   )r  r  r  r  r  r  r  r  ra   r;   r;   r<   test_subclass_compat
  s    



r  c                   @   s&   e Zd ZdZe Zeddd ZdS )DefinesHandlerFr  c                 C   s
   d| _ d S r)  )parent_calledrB   r;   r;   r<   handler
  s    zDefinesHandler.handlerN)rF   rG   rH   r  r   r  r,   r  r;   r;   r;   r<   r  
  s   r  c                   @   s    e Zd ZdZeddd ZdS )OverridesHandlerFr  c                 C   s
   d| _ d S r)  child_calledrB   r;   r;   r<   r  
  s    zOverridesHandler.handlerN)rF   rG   rH   r  r,   r  r;   r;   r;   r<   r  
  s   r  c                  C   s$   t  } d| _| jsJ | jr J d S r  )r  r  r  r  r  r;   r;   r<   test_subclass_override_observer
  s    
r  c                   @   s   e Zd ZdZdd ZdS )DoesntRegisterHandlerFc                 C   s
   d| _ d S r)  r  rB   r;   r;   r<   r  
  s    zDoesntRegisterHandler.handlerN)rF   rG   rH   r  r  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  r  r  r;   r;   r<   %test_subclass_override_not_registered
  s    
r  c                   @   s    e Zd ZdZeddd ZdS )AddsHandlerFr  c                 C   s
   d| _ d S r)  r  rB   r;   r;   r<   child_handler
  s    zAddsHandler.child_handlerN)rF   rG   rH   r  r,   r  r;   r;   r;   r<   r  
  s   r  c                  C   s$   t  } d| _| jsJ | js J d S r  )r  r  r  r  r  r;   r;   r<   test_subclass_add_observer
  s    
r  c                     s
  G dd dt } |  }i   fdd}|j|ddhd d|_ d	 jdksPJ  d	 jdksbJ d
|_ d	 jdkszJ  d	 jd
ksJ G dd d}|j||ddhd d|_ d	 jdksJ  d	 jdksJ d|_ d	 jdksJ  d	 jdksJ d S )Nc                   @   s   e Zd Ze Ze ZdS )z!test_observe_iterables.<locals>.CN)rF   rG   rH   r   r  r'   sr;   r;   r;   r<   rv   
  s   rv   c                    s   |  d< d S )NrD   r;   r  Zrecordedr;   r<   record
  s    z&test_observe_iterables.<locals>.recordr  r  )namesr   rD   hic                   @   s$   e Zd Zdd Zdd Zdd ZdS )z+test_observe_iterables.<locals>.MyContainerc                 S   s
   || _ d S r]   	container)rC   r  r;   r;   r<   r   
  s    z4test_observe_iterables.<locals>.MyContainer.__init__c                 S   s
   t | jS r]   )iterr  ro   r;   r;   r<   __iter__
  s    z4test_observe_iterables.<locals>.MyContainer.__iter__c                 S   s
   || j v S r]   r  )rC   r   r;   r;   r<   __contains__
  s    z8test_observe_iterables.<locals>.MyContainer.__contains__N)rF   rG   rH   r   r  r  r;   r;   r;   r<   MyContainer
  s   r  rP   ok)r   r,   r  r4   r6   r  )rv   rz   r  r  r;   r  r<   test_observe_iterables
  s&    
r  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rNJ t|dr\J |jdksjJ |jdd	dks~J d S )Nc                   @   s   e Zd Zdd ZdS )z&test_super_args.<locals>.SuperRecorderc                 _   s   || _ || _d S r]   )
super_argssuper_kwargsr   r;   r;   r<   r   
  s    z/test_super_args.<locals>.SuperRecorder.__init__Nr^  r;   r;   r;   r<   SuperRecorder
  s   r  c                   @   s   e Zd Ze ZdS )z'test_super_args.<locals>.SuperHasTraitsN)rF   rG   rH   r   r  r;   r;   r;   r<   SuperHasTraits
  s   r  a1a2rP   r   rq   )ry   r  rz   ry   rz   )r  r  r   )r   r  rw  r  r  )r  r  ra   r;   r;   r<   test_super_args
  s    r  c                  C   sj   G dd dt } dg}t| | ddd}W d    n1 s@0    Y  |jdksXJ t|drfJ d S )Nc                   @   s   e Zd Ze ZdS )z+test_super_bad_args.<locals>.SuperHasTraitsN)rF   rG   rH   r   rL   r;   r;   r;   r<   r    s   r  zPassing unrecognized argumentsr2   r   r   ry   )r   r3   rL   rw  )r  r   ra   r;   r;   r<   test_super_bad_args  s    
*r  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sdJ | jdkstJ | jdksJ | jdksJ | jdksJ | jdksJ dS )z%Verify that default values follow mroc                   @   s   e Zd ZedZdZdS )ztest_default_mro.<locals>.BasebaseNrF   rG   rH   r'   r  attrr;   r;   r;   r<   Base  s   r  c                   @   s   e Zd ZdS )ztest_default_mro.<locals>.ANr4  r;   r;   r;   r<   rM     s   rM   c                   @   s   e Zd ZedZdZdS )ztest_default_mro.<locals>.Bre   Nr  r;   r;   r;   r<   re     s   re   c                   @   s   e Zd ZdS )ztest_default_mro.<locals>.ABNr4  r;   r;   r;   r<   AB  s   r  c                   @   s   e Zd ZdS )ztest_default_mro.<locals>.BANr4  r;   r;   r;   r<   BA!  s   r  r  N)r   r  r  )r  rM   re   r  r  r;   r;   r<   test_default_mro  s    r  c                  C   s    G dd dt } | d d d}d S )Nc                   @   s   e Zd Zdd ZdS )z!test_cls_self_argument.<locals>.Xc                 S   s   d S r]   r;   )Z_X__selfclsrC   r;   r;   r<   r   .  s    z*test_cls_self_argument.<locals>.X.__init__Nr^  r;   r;   r;   r<   X-  s   r  )r  rC   rc  )r  rq   r;   r;   r<   test_cls_self_argument,  s    r  c                  C   s2   G dd dt } dd | _|  }|jdks.J d S )Nc                   @   s   e Zd ZedZdd ZdS )z test_override_default.<locals>.Chard defaultc                 S   s   dS Nzdefault methodr;   ro   r;   r;   r<   
_a_default8  s    z+test_override_default.<locals>.C._a_defaultN)rF   rG   rH   r'   rL   r  r;   r;   r;   r<   rv   5  s   rv   c                 S   s   dS N
overriddenr;   ro   r;   r;   r<   r+  ;  r,  z'test_override_default.<locals>.<lambda>r  r   r  rL   rv   rz   r;   r;   r<   test_override_default4  s    
r  c                  C   s2   G dd dt } dd | _|  }|jdks.J d S )Nc                   @   s$   e Zd ZedZeddd ZdS )z*test_override_default_decorator.<locals>.Cr  rL   c                 S   s   dS r  r;   ro   r;   r;   r<   r  D  s    z5test_override_default_decorator.<locals>.C._a_defaultNrF   rG   rH   r'   rL   r)   r  r;   r;   r;   r<   rv   A  s   rv   c                 S   s   dS r  r;   ro   r;   r;   r<   r+  H  r,  z1test_override_default_decorator.<locals>.<lambda>r  r  r  r;   r;   r<   test_override_default_decorator@  s    
r  c                  C   s2   G dd dt } |  }dd |_|jdks.J d S )Nc                   @   s$   e Zd ZedZeddd ZdS )z)test_override_default_instance.<locals>.Cr  rL   c                 S   s   dS r  r;   ro   r;   r;   r<   r  Q  s    z4test_override_default_instance.<locals>.C._a_defaultNr  r;   r;   r;   r<   rv   N  s   rv   c                 S   s   dS r  r;   ro   r;   r;   r<   r+  V  r,  z0test_override_default_instance.<locals>.<lambda>r  r  r  r;   r;   r<   test_override_default_instanceM  s    
r  c                  C   sb   ddl m }  G dd dt}|dd}|jdks4J | |}d|_|jdksPJ |jdks^J d S )Nr   )copyc                   @   s   e Zd Ze ZdS )ztest_copy_HasTraits.<locals>.CNr   r;   r;   r;   r<   rv   ]  s   rv   r2   r   r   )r  r   rL   )r  rv   rz   ccr;   r;   r<   test_copy_HasTraitsZ  s    
r  c                 C   s   t | tr| }n
| dd}t |tr,|j}n|j}t|tu rt|trt	|& ||}|
t | W d   q1 s~0    Y  n||}||ksJ dS )zRun a test of trait.from_stringTr5  N)r^   r#   r  Zfrom_string_listZfrom_stringr8   
issubclassrq  r  r  r/   rI   )Z	traittyper  expectedr  castrV   r;   r;   r<   _from_string_testi  s    


.r  zs, expected))xyzr  r   r   )z"xx"xx)z'abc'r  NoneNc                 C   s   t t| | d S r]   )r  r'   r  r  r;   r;   r<   test_unicode_from_string|  s    r  c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_cunicode_from_string  s    r  ))r  s   xyz)r      1)zb"xx"s   xx)zb'abc's   abcr  c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_bytes_from_string  s    r  c                 C   s   t t| | d S r]   )r  r	   r  r;   r;   r<   test_cbytes_from_string  s    r  rq   )r   r2   )Z123{   z2.0r  c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_int_from_string  s    r  )r   g      ?)z123.5g     ^@)z2.5g      @c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_float_from_string  s    r  )z1+2jy      ?       @c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_complex_from_string  s    r  )trueT)TRUET)r   T)r  F)FalseF)falseFz1.0c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_bool_from_string  s    r  r  r   z{1: 2}r   z{"key": "value"}r   rV   c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_dict_from_string  s    r  r  [1, 2, "x"]r2   r   rq   r  c                 C   s   t t| | d S r]   r  r   r  r;   r;   r<   test_list_from_string  s    
r   zs, expected, value_trait)r   r)  r  r  Tr5  Fc                 C   s   t t|| | d S r]   r  r  r  r  r;   r;   r<   test_list_items_from_string  s    r  >   r2   r   rq   z{1, 2, "x"}c                 C   s   t t| | d S r]   r  r   r  r;   r;   r<   test_set_from_string  s    r  >   r2   r   r   c                 C   s   t t|| | d S r]   r  r  r;   r;   r<   test_set_items_from_string  s    
r  )r  r;   )z()r;   )r  r  )z(1, 2, "x")r  )r   rq   c                 C   s   t t| | d S r]   r  r$   r  r;   r;   r<   test_tuple_from_string  s    r  zs, expected, value_traits)r  r]   c                 C   s   t t| | | d S r]   r  )r  r  Zvalue_traitsr;   r;   r<   test_tuple_items_from_string   s    r  )rq   rq   )
mod.submodr	  znot an identifierr  c                 C   s   t t| | d S r]   )r  r   r  r;   r;   r<   test_object_from_string.  s    r
  )z127.0.0.1:8000)r  i@  )zhost.tld:80)zhost.tldr  zhost:notaportr  c                 C   s   t t| | d S r]   )r  r    r  r;   r;   r<   test_tcp_from_string<  s    r  )r  r  c                 C   s   t tt t g| | d S r]   )r  r(   r   r'   r  r;   r;   r<   *test_union_of_list_and_unicode_from_stringJ  s    r  )z1.5g      ?c                 C   s   t tt t g| | d S r]   )r  r(   r   r   r  r;   r;   r<   'test_union_of_int_and_float_from_stringR  s    r  zs, expected, allow_none)r  NTc                 C   s    t tt t g|d| | d S )Nr5  )r  r(   r   r   )r  r  r6  r;   r;   r<   'test_union_of_list_and_dict_from_stringZ  s    r  c                  C   sx   t t} | D ]D}tt|}|dst|trt|tr|tjvrt	| dqtjD ]}|| vrXt	| dqXdS )z7Verify all trait types are added to `traitlets.__all__`r   z not in __all__z should be removed from __all__N)
dirr.   rg   
startswithr^   r8   r  r#   __all__
ValueError)r  r4   rV   r;   r;   r<   test_all_attributeb  s    


r  )r  rc  r  Z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/   Ztraitlets.utilsr1   	_warningsr3   r=   r>   rI   rJ   r   r   r   r  r  r3  rS  rg  rr  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  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  markZparametrizer  setr~  r  r  r  r  r  r  r  r   r"  r#  r%  r'  r(  r,  r-  r8  r\  r^  rj  rr  rs  ru  ry  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  r   r  r  r  r  r  r
  r  r  r  r  r  r;   r;   r;   r<   <module>   s  /
	  , D Ax s:5		
				
(


				
	4 &a-	3
(
	



	




*