U
    /eq                     @  s   d Z ddlmZ ddlZeeZddlmZ ddl	m
Z
 ddlmZmZ dZee jjjjZdd	d
ddZdg dddddd	dddZdd	ddddZdS )z@ Provide functions for inspecting project structure and files.

    )annotationsN)Path)run)ListSequence)TOP_PATHls_files
ls_modulesverify_clean_importsstrz	List[str])patternsreturnc                  G  s"   t d| dd}|jddS )	Ngitls-files--T)capture_outputzutf-8
)r   r   r   )r   stdoutdecodesplit)r   proc r   ?/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/_testing/util/project.pyr   -   s    r   ZbokehT)dirskip_prefixes	skip_mainzSequence[str]bool)r   r   r   r   c                   st   g }t |  d}|D ]X}|s q|dr0|r0q|dddddd t fdd	|D rdq|  q|S )
Nz/**.pyz__main__.py/.z.py z	.__init__c                 3  s   | ]}  |V  qd S )N)
startswith).0prefixmoduler   r   	<genexpr>?   s     zls_modules.<locals>.<genexpr>)r   endswithreplaceanyappend)r   r   r   modulesfilesfiler   r#   r   r	   1   s    r	   )targetr*   r   c                 C  s&   d dd |D }d| d| dS )N;c                 s  s   | ]}d | V  qdS )zimport Nr   )r!   mr   r   r   r%   G   s     z'verify_clean_imports.<locals>.<genexpr>zimport sys; z; sys.exit(1 if any(z* in x for x in sys.modules.keys()) else 0))join)r-   r*   Zimportsr   r   r   r
   F   s    r
   )__doc__
__future__r   logging	getLogger__name__logpathlibr   
subprocessr   typingr   r   __all____file__resolveparentr   r   r	   r
   r   r   r   r   <module>   s   
