U
    /e?                     @  sd   d Z ddlmZ ddlZeeZddlZddlm	Z	 ddl
mZ ddlZdZddd	d
ddZdS )zI Provide utility classes and functions useful for testing Bokeh itself.

    )annotationsN)
ModuleType)Sequence)
verify_allzstr | ModuleTypezSequence[str]type)moduleALLreturnc                   s   G  fddd}|S )z

    c                      s`   e Zd ZU dZded< eddfddZdd fd	d
Zej	
d dddddZdS )z verify_all.<locals>.Test___all__NzModuleType | None_moduler   )r	   c                   s.   | j d kr(t tr"t | _ n | _ | j S N)r
   
isinstancestr	importlibimport_module)self)r    ;/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/_testing/util/api.pyr   2   s
    

z'verify_all.<locals>.Test___all__.moduleNonec              	     sl   t | jdd }|d k	s*td| jj d| kshtd| jj dt t| dt|t  d S )N__all__zmodule z doesn't define __all__zfor module z, expected: z
, actual: )getattrr   AssertionError__name__set)r   r   )r   r   r   test___all__;   s    z-verify_all.<locals>.Test___all__.test___all__namer   )r   r	   c                 S  s   t | j|std S r   )hasattrr   r   )r   r   r   r   r   test_contentsA   s    z.verify_all.<locals>.Test___all__.test_contents)r   
__module____qualname__r
   __annotations__propertyr   r   pytestmarkZparametrizer   r   r   r   r   r   Test___all__/   s   
r$   r   )r   r   r$   r   r#   r   r   +   s    r   )__doc__
__future__r   logging	getLoggerr   logr   typesr   typingr   r!   r   r   r   r   r   r   <module>   s   
