U
    \Sh                     @  s   d Z ddlmZ ddl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rpdd	lmZ eeZG d
d dZddddddZdddddZdS )z Utilities for Sphinx extensions.    )annotations)TYPE_CHECKINGAny)InvalidVersionVersion)Config)VersionRequirementError)__)logging)Sphinxc                   @  s    e Zd ZdddddddZdS )	Extensionstrr   None)namemodulekwargsreturnc                 K  s@   || _ || _|| _|dd| _|dd | _|dd| _d S )Nversionunknown versionparallel_read_safeparallel_write_safeT)r   r   metadatapopr   r   r   )selfr   r   r    r   C/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/extension.py__init__   s    zExtension.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   r   r   r   )appconfigr   c              	   C  s   |j dkrdS |j  D ]\}}| j|}|dkrFttd| qd}|jdkrZd}n>zt|t|jkrrd}W n" t	k
r   ||jkrd}Y nX |st
td|||jf q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.Tr   FzvThis 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(   zdict[str, Any])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   setupK   s
    r,   N)__doc__
__future__r   typingr   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   <module>   s   
%