o
    Nia                     @  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 er>ddlmZ dd	lmZ dd
lmZ eeZG dd dZdddZdddZdS )z Utilities for Sphinx extensions.    )annotations)TYPE_CHECKINGAny)InvalidVersionVersion)VersionRequirementError)__)logging)Sphinx)Config)ExtensionMetadatac                   @  s   e Zd Zddd	Zd
S )	Extensionnamestrmoduler   kwargsreturnNonec                 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   D/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/extension.py__init__   s   zExtension.__init__N)r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r      s    r   appr
   configr   r   r   c              	   C  s   |j du rdS |j  D ]M\}}| j|}|du r#ttd| qd}|jdkr-d}nzt|t|jkr9d}W n t	yJ   ||jkrHd}Y nw |sYt
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).)needs_extensionsitems
extensionsgetloggerwarningr   r   r   r   r   )r!   r"   extname
reqversion	extension	fulfilledr   r   r   verify_needs_extensions'   sD   
	


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   setupU   s
   r1   N)r!   r
   r"   r   r   r   )r!   r
   r   r   )__doc__
__future__r   typingr   r   packaging.versionr   r   sphinx.errorsr   sphinx.localer   sphinx.utilr	   sphinx.applicationr
   sphinx.configr   sphinx.util.typingr   	getLoggerr   r'   r   r-   r1   r   r   r   r   <module>   s    

.