
    Qjfa                        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j*                  e      Z G d d      ZddZddZy)z Utilities for Sphinx extensions.    )annotations)TYPE_CHECKINGAny)InvalidVersionVersion)VersionRequirementError)__)logging)Sphinx)Config)ExtensionMetadatac                      e Zd ZddZy)	Extensionc                    || _         || _        || _        |j                  dd      | _        |j                  dd       | _        |j                  dd      | _        y )Nversionunknown versionparallel_read_safeparallel_write_safeT)namemodulemetadatapopr   r   r   )selfr   r   kwargss       0lib/python3.12/site-packages/sphinx/extension.py__init__zExtension.__init__   sV    	+1zz)->?
 #)**-A4"H
 $*::.CT#J     N)r   strr   r   r   r   returnNone)__name__
__module____qualname__r    r   r   r   r      s    Kr   r   c                   |j                   y|j                   j                         D ]  \  }}| j                  j                  |      }| t        j                  t        d      |       Cd}|j                  dk(  rd}n$	 t        |      t        |j                        kD  rd}|r~t        t        d      |||j                  fz         y# t        $ r ||j                  kD  rd}Y Ew xY w)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   )appconfigextname
reqversion	extension	fulfilleds         r   verify_needs_extensionsr2   '   s	    &%66<<> NN&&w/	NN,  	 11I&:&1B1B)CC %I
 )/
 J	(9(9:; 1& " &	 1 11 %I&s    #CC)(C)c                >    | j                  dt        d       ddddS )Nzconfig-initedi   )prioritybuiltinT)r   r   r   )connectr2   )r,   s    r   setupr7   U   s*    KK!83KG "# r   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   r2   r7   r$   r   r   <module>rC      sO    & " % 5 1  )$4			8	$K K$+\r   