o
    tf                     @  s^   d Z ddlmZ ddlZddlZddlmZmZ eZ	ej
r%eejejf Z	G dd de	ZdS )zTrait types for events.    )annotationsN)
TraitError	TraitTypec                   @  s2   e Zd ZdZdZddd	Zdd
dZdddZdS )HandlerszA trait that takes a list of logging handlers and converts
    it to a callable that returns that list (thus, making this
    trait pickleable).
    za list of logging handlersobjt.AnyvaluereturnNonec                 C  s8   t |dkr|D ]}t|tjdu r| | qdS dS )z#Validate the elements of an object.r   FN)len
isinstanceloggingHandlerelement_error)selfr   r   el r   ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jupyter_events/traits.pyvalidate_elements   s   
zHandlers.validate_elementsc                 C  s    d| j  d|jj d}t|)z Raise an error for bad elements.zElements in the 'z' trait of an z5 instance must be Python `logging` handler instances.)name	__class____name__r   )r   r   msgr   r   r   r      s   zHandlers.element_errorc                 C  sH   t |r| }| || |S t|tr| || |S | || dS )zValidate an object.N)callabler   r   listerror)r   r   r   outr   r   r   validate#   s   
zHandlers.validateN)r   r   r   r   r	   r
   )r   r   r	   r
   )r   r   r   r   r	   r   )r   
__module____qualname____doc__Z	info_textr   r   r   r   r   r   r   r      s    

r   )r    
__future__r   r   typingtZ	traitletsr   r   Z	baseclassTYPE_CHECKINGAnyr   r   r   r   r   <module>   s    