B
    d                 @   s   d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ erhddlmZ eeZG d	d
 d
Zde	ddddZdeeef dddZdS )z Utilities for Sphinx extensions.    )TYPE_CHECKINGAnyDict)InvalidVersionVersion)Config)VersionRequirementError)__)logging)Sphinxc               @   s    e Zd ZeeeddddZdS )	ExtensionN)namemodulekwargsreturnc             K   s@   || _ || _|| _|dd| _|dd | _|dd| _d S )Nversionzunknown versionparallel_read_safeparallel_write_safeT)r   r   metadatapopr   r   r   )selfr   r   r    r   ]/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sphinx/extension.py__init__   s    zExtension.__init__)__name__
__module____qualname__strr   r   r   r   r   r   r      s   r   r   N)appconfigr   c          	   C   s   |j dkrdS x|j  D ]\}}| j|}|dkrHttd| qd}|jdkr\d}n>yt|t|jkrtd}W n" t	k
r   ||jkrd}Y nX |st
td|||jf qW dS )an  Check that extensions mentioned in :confval:`needs_extensions` satisfy the version
    requirement, and warn if an extension is not loaded.

    Warns if an extension in :confval:`needs_extension` is not loaded.

    :raises VersionRequirementError: if the version of an extension in
    :confval:`needs_extension` is unknown or older than the required version.
    NzPThe %s extension is required by needs_extensions settings, but it is not loaded.Tzunknown versionFzvThis project needs the extension %s at least in version %s and therefore cannot be built with the loaded version (%s).)Zneeds_extensionsitems
extensionsgetloggerwarningr	   r   r   r   r   )r   r   ZextnameZ
reqversion	extensionZ	fulfilledr   r   r   verify_needs_extensions$   s(    	




r&   )r   r   c             C   s   | j dtdd ddddS )Nzconfig-initedi   )prioritybuiltinT)r   r   r   )connectr&   )r   r   r   r   setupI   s    r*   )__doc__typingr   r   r   Zpackaging.versionr   r   Zsphinx.configr   Zsphinx.errorsr   Zsphinx.localer	   Zsphinx.utilr
   Zsphinx.applicationr   	getLoggerr   r#   r   r&   r   r*   r   r   r   r   <module>   s   
%