o
    Ni                     @  sN  U d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
 ddlmZmZmZm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 ejdkr_ddlmZ nddlmZ erddlZddl m!Z!m"Z"m#Z#m$Z$m%Z% ddlm&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ e0e1Z2ed Z3de4d< dZ5e6ej7ej8fZ9G dd deZ:e; dd]d!d"Z<G d#d$ d$Z=e>d% e>e6d&f B e;e6 B e=B Z?de4d'< G d(d) d)Z@G d*d+ d+ZAd^d1d2ZBd_d6d7ZCd`d<d=ZDd`d>d?ZEd`d@dAZFdadCdDZGdadEdFZHdbdJdKZIdcdMdNZJd`dOdPZKdddXdYZLded[d\ZMdS )fz"Build configuration file handling.    )annotationsN)getenvpath)TYPE_CHECKINGAnyLiteral
NamedTuple)RemovedInSphinx90Warning)ConfigErrorExtensionError)___)logging)fs_encoding)      )chdir)_chdir)
CollectionIterableIteratorSequenceSet)	TypeAlias)Sphinx)BuildEnvironment)Tags)ExtensionMetadata_ExtensionSetupFunc) envepubgettexthtml	applehelpdevhelpr   _ConfigRebuildzconf.pyc                   @  s&   e Zd ZU ded< ded< ded< dS )ConfigValuestrnamer   valuer&   rebuildN)__name__
__module____qualname____annotations__ r0   r0   A/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/config.pyr'   0   s   
 r'   _seenobjobjectr3   frozenset[int]returnboolc                  s   t | trdS t| |v rdS t | tr(|t| hB  t fdd|  D S t | ttB tB t	B rE|t| hB  t fdd| D S dS )z*Check if an object is serializable or not.FTc                 3  s,    | ]\}}t | d ot | d V  qdS r2   Nis_serializable.0keyr*   seenr0   r1   	<genexpr>A   s
    
z"is_serializable.<locals>.<genexpr>c                 3  s    | ]	}t | d V  qdS r9   r:   r=   itemr?   r0   r1   rA   G       )

isinstanceUNSERIALIZABLE_TYPESiddictallitemslisttupleset	frozenset)r4   r3   r0   r?   r1   r;   6   s   

r;   c                   @  s$   e Zd ZdZdddZdddZdS )ENUMzRepresents the candidates which a config value should be one of.

    Example:
        app.add_config_value('latex_show_urls', 'no', None, ENUM('no', 'footnote', 'inline'))
    
candidatesstr | bool | Noner7   Nonec                 G  s
   || _ d S NrP   )selfrP   r0   r0   r1   __init__V      
zENUM.__init__r*   str | list | tupler8   c                   s.   t |ttB rt fdd|D S | jv S )Nc                 3  s    | ]}| j v V  qd S rS   rT   rB   rU   r0   r1   rA   [       zENUM.match.<locals>.<genexpr>)rE   rK   rL   rI   rP   )rU   r*   r0   rY   r1   matchY   s   
z
ENUM.matchN)rP   rQ   r7   rR   )r*   rX   r7   r8   )r,   r-   r.   __doc__rV   r[   r0   r0   r0   r1   rO   O   s    
rO   r0   ._OptValidTypesc                      s   e Zd ZU dZded< ded< ded< ded	< 	
d+d, fddZd-ddZd.ddZd/ddZd0ddZ	d1 fddZ
d2 fdd Zd3d"d#Zd4 fd%d&Zd5d)d*Z  ZS )6_Optdefaultr+   valid_typesdescriptionr   r`   r&   r+   r]   ra   r(   rb   r   r7   rR   c                   s<   t  d| t  d| t  d| t  d| dS )a^  Configuration option type for Sphinx.

        The type is intended to be immutable; changing the field values
        is an unsupported action.
        No validation is performed on the values, though consumers will
        likely expect them to be of the types advertised.
        The old tuple-based interface will be removed in Sphinx 9.
        r`   r+   ra   rb   Nsuper__setattr__)rU   r`   r+   ra   rb   	__class__r0   r1   rV   k   s   z_Opt.__init__c              
   C  s.   | j j d| jd| jd| jd| jd
S )Nz	(default=z
, rebuild=z, valid_types=z, description=))rg   r.   r`   r+   rb   rY   r0   r0   r1   __repr__   s   
z_Opt.__repr__otherr5   r8   c                 C  s>   t |tr| j| j| j| jf}|j|j|j| jf}||kS tS rS   )rE   r^   r`   r+   ra   rb   NotImplementedrU   rj   self_tpl	other_tplr0   r0   r1   __eq__   s
   
z_Opt.__eq__c                 C  s@   | j |j u r| j| j| j| jf}|j|j|j| jf}||kS tS rS   )rg   r`   r+   ra   rb   rk   rl   r0   r0   r1   __lt__   s
   z_Opt.__lt__intc                 C  s   t | j| j| j| jfS rS   )hashr`   r+   ra   rb   rY   r0   r0   r1   __hash__   s   z_Opt.__hash__r>   r*   c                   s4   |dv r| j jd|}t|t || d S )N>   r`   r+   rb   ra   z' object does not support assignment to )rg   r,   	TypeErrorrd   re   )rU   r>   r*   msgrf   r0   r1   re      s   z_Opt.__setattr__c                   s2   |dv r| j jd|}t|t | d S )N>   r`   r+   rb   ra   z% object does not support deletion of )rg   r,   rt   rd   __delattr__)rU   r>   ru   rf   r0   r1   rv      s   z_Opt.__delattr__/tuple[Any, _ConfigRebuild, _OptValidTypes, str]c                 C  s   | j | j| j| jfS rS   r_   rY   r0   r0   r1   __getstate__   s   z_Opt.__getstate__statec                   sH   |\}}}}t  d| t  d| t  d| t  d| d S )Nr`   r+   ra   rb   rc   )rU   ry   r`   r+   ra   rb   rf   r0   r1   __setstate__   s
   z_Opt.__setstate__rC   int | slicec                 C  s0   t jd| jjdtdd | j| j| jf| S )NzThe zp object tuple interface is deprecated, use attribute access instead for 'default', 'rebuild', and 'valid_types'.   )
stacklevel)warningswarnrg   r,   r	   r`   r+   ra   )rU   rC   r0   r0   r1   __getitem__   s
   z_Opt.__getitem__r   )
r`   r   r+   r&   ra   r]   rb   r(   r7   rR   r7   r(   )rj   r5   r7   r8   )rj   r^   r7   r8   )r7   rq   )r>   r(   r*   r   r7   rR   )r>   r(   r7   rR   )r7   rw   )ry   rw   r7   rR   )rC   r{   r7   r   )r,   r-   r.   	__slots__r/   rV   ri   ro   rp   rs   re   rv   rx   rz   r   __classcell__r0   r0   rf   r1   r^   c   s"   
 

	


r^   c                      s
  e Zd ZU dZi deddddedddded	d
eeeefdedd d
eeeefded	ddded	ddded	dddeddeefdeddeefdedgdddeddeefdeddddedde	ddddd ed!ddd"ed#d ddd$ed%d&ide
d'ed(ddi d)eg deefd*ed+gdeefd,eddeefd-edddd.edddd/eddeefd0ed1de	d1d2d3d4edddd5edddd6edd
eefd7ed8ddd9ei ddd:eg d
dd;edd
eefd<edddd=eg ddd>eddeefi d?eg d
dd@eddeefdAeddeefdBeddddCedDdeejfdEedd	eefdFei d	ddGeddddHedd	ddIeg d	eeeefdJeg d	eeeefdKeddddLedMdddNei dddOeddeeejfdPeddddQeddeefedddedRdeefedddedddeddeefedddedSddeg dTdUdVgdWddeddddX	ZdYedZ< 		ddd`daZeddbdcZeddedfZe		dddndoZddtduZeddvdwZddxdyZddzd{Zdd|d}Zd fddZdddZdddZ dddZ!dddZ"dddZ#dddZ$		ddddZ%dddZ&dddZ'dddZ(  Z)S )Configa  Configuration file abstraction.

    The Config object makes the values of all config options available as
    attributes.

    It is exposed via the :py:class:`~sphinx.application.Sphinx`\ ``.config``
    and :py:class:`sphinx.environment.BuildEnvironment`\ ``.config`` attributes.
    For example, to get the value of :confval:`language`, use either
    ``app.config.language`` or ``env.config.language``.
    projectzProject name not setr    r0   authorzAuthor name not setproject_copyrightr   r#   	copyrightc                 C     | j S rS   )r   configr0   r0   r1   <lambda>       zConfig.<lambda>versionreleasetoday	today_fmtNlanguageenlocale_dirslocalesfigure_language_filenamez{root}.{language}{ext} gettext_allow_fuzzy_translationsFr"   translation_progress_classesT
translateduntranslated
master_docindexroot_docc                 C  r   rS   )r   r   r0   r0   r1   r      r   source_suffixz.rstrestructuredtextsource_encodingz	utf-8-sigexclude_patternsinclude_patternsz**default_roleadd_function_parenthesesadd_module_namestoc_object_entriestoc_object_entries_show_parentsdomainrI   hidetrim_footnote_reference_spaceshow_authorspygments_stylehighlight_languager`   highlight_optionstemplates_pathtemplate_bridgekeep_warningssuppress_warningsshow_warning_typesmodindex_common_prefix
rst_epilog
rst_prologtrim_doctest_flagsprimary_domainpyneeds_sphinxneeds_extensionsmanpages_urlnitpickynitpick_ignorenitpick_ignore_regexnumfignumfig_secnum_depth   numfig_formatmaximum_signature_line_lengthmath_number_allmath_eqref_format.qDe)jazh_CNzh_TWmantext)	languagesbuilders)	math_numfigmath_numsep
tls_verifytls_cacerts
user_agentsmartquotessmartquotes_actionsmartquotes_excludesoption_emphasise_placeholdersdict[str, _Opt]config_valuesr   dict[str, Any] | None	overridesr7   rR   c                 C  s   |pi }|d urt |ni | _tj | _|| _t| j D ]}d|v r9|	dd\}}| j
|||i |< q|d| _d| jv r\| j
d}t|trX|	d|d< n||d< |dg | _d S )Nr   r   setup
extensions,)rH   
_overridesr   r   copy_options_raw_configrK   keyssplitpop
setdefaultgetr   rE   r(   r   )rU   r   r   
raw_configr)   	real_namer>   r   r0   r0   r1   rV     s    

zConfig.__init__c                 C  r   rS   r   rY   r0   r0   r1   values,     zConfig.valuesdict[str, Any]c                 C  r   rS   )r   rY   r0   r0   r1   r   0  r   zConfig.overridesclstype[Config]confdirstr | os.PathLike[str]dict | NonetagsTags | Nonec                 C  s`   t |t}t |sttd| t||}|dddu r+t	td d|d< | ||S )z/Create a Config object from configuration file.z4config directory doesn't contain a conf.py file (%s)r   .NzInvalid configuration value found: 'language = None'. Update your configuration to a valid language code. Falling back to 'en' (English).r   )
r   joinCONFIG_FILENAMEisfiler
   r   eval_config_filer   loggerwarning)r   r   r   r   filename	namespacer0   r0   r1   read4  s   


zConfig.readr)   r(   r*   r   c              
   C  s  | j | }|j}|j}|tkr|S t|tu s&t|ts7t|dkr7t|v r7t|ts1t|dkr3|S |dvS t|t	rIt
td|| df t|trS|dS t|truzt|W S  t
yt } zt
td||f |d }~ww t|r{|S t|ts|d u r|S t
td| )Nr   >   r   0zZcannot override dictionary config setting %r, ignoring (use %r to set individual elements)z
.key=valuer   z/invalid number %r for config value %r, ignoringzAcannot override config setting %r with unsupported type, ignoring)r   r`   ra   r   typer8   rE   rO   lenrH   
ValueErrorr   rK   r   rq   callabler(   )rU   r)   r*   optr`   ra   excr0   r0   r1   convert_overridesJ  sH   





zConfig.convert_overridesc                   C  s   d S rS   r0   r0   r0   r0   r1   pre_init_valuesl  s   zConfig.pre_init_valuesc                 C  s   |    d S rS   )_report_override_warningsrY   r0   r0   r1   init_valuest  s   zConfig.init_valuesc                 C  s*   | j D ]}|| jvrttd| qd S )Nz-unknown config value %r in override, ignoring)r   r   r   r   r   rU   r)   r0   r0   r1   r	  {  s
   

z Config._report_override_warningsc              	   C  sd   g }| j D ]}zt| |}W n ty   d}Y nw || d| q| jjd d| d S )Nz<error!>=(, rh   )r   getattr	Exceptionappendrg   r.   r   )rU   r   opt_name	opt_valuer0   r0   r1   ri     s   
zConfig.__repr__r>   r5   c                   sp   |dkrt  d| n#|dkrt  d| n|dkr$t  d| n|dkr/t  d| t  || d S )Nr   r   r   r   rc   )rU   r>   r*   rf   r0   r1   re     s   zConfig.__setattr__c              
   C  s  || j v rk|| jv rD| j| }t|ts|| j|< |S z| ||}W n ty; } ztd| W Y d }~nd }~ww | 	|| |S || j
v rV| j
| }| 	|| |S | j | j}t|rd|| S || j|< |S |dr}| jjd|}t|td| }t|)Nz%sr   z object has no attribute zNo such config value: %r)r   r   rE   r(   __dict__r  r  r   r   re   r   r`   r  
startswithrg   r,   AttributeErrorr   )rU   r)   r*   r  r`   ru   r0   r0   r1   __getattr__  s8   








zConfig.__getattr__c                 C  s
   t | |S rS   )r  r  r0   r0   r1   r     rW   zConfig.__getitem__c                 C  s   t | || d S rS   )setattr)rU   r)   r*   r0   r0   r1   __setitem__  s   zConfig.__setitem__c                 C  s   t | | d S rS   )delattrr  r0   r0   r1   __delitem__  s   zConfig.__delitem__r8   c                 C  s
   || j v S rS   r   r  r0   r0   r1   __contains__  rW   zConfig.__contains__Iterator[ConfigValue]c                 c  s0    | j  D ]\}}t|t| ||jV  qd S rS   )r   rJ   r'   r  r+   )rU   r)   r  r0   r0   r1   __iter__  s   zConfig.__iter__r+   r&   typestype | Collection[type] | ENUMrb   c                 C  sP   || j v rttd| t|tr|rdnd}t|}t||||| j |< d S )NzConfig value %r already presentr    r   )r   r   r   rE   r8   _validate_valid_typesr^   )rU   r)   r`   r+   r  rb   ra   r0   r0   r1   add  s   

z
Config.addSet[_ConfigRebuild]c                   s.   t  tr fdd| D S  fdd| D S )Nc                 3  s    | ]
}|j  kr|V  qd S rS   r+   r=   r*   r$  r0   r1   rA         z Config.filter.<locals>.<genexpr>c                 3  s    | ]
}|j  v r|V  qd S rS   r$  r%  r$  r0   r1   rA     r&  )rE   r(   )rU   r+   r0   r$  r1   filter  s   
zConfig.filterrH   c                 C  s   dd | j  D }i  |d< }| j D ]>\}}t|ts2t|tr2t|dkr2t|  | j|< }t| |}t|sL|j	rJt
jtd|dddd	 d
}||j	f||< q|S )z'Obtains serializable data for pickling.c                 S  s(   i | ]\}}| d st|r||qS )r   )r  r;   r<   r0   r0   r1   
<dictcomp>  s    z'Config.__getstate__.<locals>.<dictcomp>r   r   zicannot cache unpickable configuration value: %r (because it contains a function, class, or module object)r   cacheT)r  subtypeonceN)r  rJ   r   rE   r^   rL   r  r  r;   r+   r   r   r   )rU   r  r   r)   r  
real_valuer0   r0   r1   rx     s(    
	zConfig.__getstate__ry   c                 C  s6   i | _ dd |d D | _i | _| j| d S )Nc                 S  s"   i | ]\}\}}|t ||d qS )r0   )r^   )r=   r)   r,  r+   r0   r0   r1   r(    s    
z'Config.__setstate__.<locals>.<dictcomp>r   )r   r   rJ   r   r   r  update)rU   ry   r0   r0   r1   rz     s   zConfig.__setstate__)NN)r   r   r   r   r7   rR   )r7   r   )r7   r   )
r   r   r   r   r   r   r   r   r7   r   )r)   r(   r*   r(   r7   r   )r7   rR   r   )r>   r(   r*   r5   r7   rR   )r)   r(   r7   r   )r)   r(   r*   r   r7   rR   )r)   r(   r7   rR   )r)   r(   r7   r8   )r7   r  r   )r)   r(   r`   r   r+   r&   r  r   rb   r(   r7   rR   )r+   r#  r7   r  )r7   rH   )ry   rH   r7   rR   )*r,   r-   r.   r\   r^   rN   r(   rL   rK   rO   r   r8   r  NoneTyperM   rq   r   r/   rV   propertyr   r   classmethodr   r  staticmethodr  r
  r	  ri   re   r  r   r  r  r  r  r"  r'  rx   rz   r   r0   r0   rf   r1   r      s8  
 	
 !#$%&'()*+,-./0123456789:;=>
?




K
"





 





#r   r   r(   r   r   r   c                 C  s,  i }| |d< ||d< t t| { z't| d}t| | td}t|| W d   n1 s3w   Y  W nJ t	yP } zt
d}t|| |d}~w tyd } z	t
d}t||d}~w tyk     ty } zt
d}t|t  |d}~ww W d   |S 1 sw   Y  |S )	zEvaluate a config file.__file__r   rbexecNz7There is a syntax error in your configuration file: %s
zKThe configuration file (or one of the modules it imports) called sys.exit()z=There is a programmable error in your configuration file:

%s)r   r   dirnameopencompiler   encoder   r4  SyntaxErrorr   r
   
SystemExitr  	traceback
format_exc)r   r   r   fcodeerrru   r  r0   r0   r1   r     s<   

r   ra   r   5tuple[()] | tuple[type, ...] | frozenset[type] | ENUMc                C  s   | sdS t | ttB r| S t | trt| fS | tu r tthS t | tr)t| S t | tsHzt| } W n tyG   t	t
d|  |  Y S w zt| W S  tyX   |  Y S w )Nr0   z&Failed to convert %r to a set or tuple)rE   rN   rO   r  r   rM   rL   rt   r   r   r   )ra   r0   r0   r1   r!  #  s,   





r!  appr   r   rR   c                 C  s   |j }t|tr|di|_ ttd||j  dS t|ttB r3t	|d|_ ttd||j  dS t|tsFtd}t
||t|f dS )zConvert old styled source_suffix to new styled one.

    * old style: str or list
    * new style: a dict which maps from fileext to filetype
    r   z8Converting `source_suffix = %r` to `source_suffix = %r`.zrThe config value `source_suffix' expects a dictionary, a string, or a list of strings. Got `%r' instead (type %s).N)r   rE   r(   r   infor   rK   rL   rH   fromkeysr
   r  )rA  r   r   ru   r0   r0   r1   convert_source_suffix<  s   




rD  c                 C  s8   |j }|rtdd | D s|j|i|_ dS dS dS )zConvert old styled highlight_options to new styled one.

    * old style: options
    * new style: a dict which maps from language name to options
    c                 s  s    | ]}t |tV  qd S rS   )rE   rH   )r=   vr0   r0   r1   rA   ]  rZ   z,convert_highlight_options.<locals>.<genexpr>N)r   rI   r   r   )rA  r   optionsr0   r0   r1   convert_highlight_optionsV  s   rG  c                 C  s4   t dt dt dt dd}||j ||_dS )z$Initialize :confval:`numfig_format`.z
Section %szFig. %szTable %sz
Listing %s)sectionfiguretablez
code-blockN)r   r-  r   )rA  r   r   r0   r0   r1   init_numfig_formatb  s   
rK  _appc                   s   t t j dD ]6}||v r?|| }t|t r%d|v r$|d ||< q	tdd |D r? fdd|D }t||||< q	dS )z?Replace copyright year placeholders (%Y) with the current year.r   epub_copyright%Yc                 s  s    | ]}d |v V  qdS rO  Nr0   r=   liner0   r0   r1   rA   x  s    z2evaluate_copyright_placeholders.<locals>.<genexpr>c                 3  s    | ]	}| d  V  qdS rP  )replacerQ  
replace_yrr0   r1   rA   y  rD   N)r(   time	localtimetm_yearrE   rS  anyr  )rL  r   kr*   rJ   r0   rT  r1   evaluate_copyright_placeholdersn  s   
r[  c                   s   t tdd }rt|j}ndS t j}||krdS t| t|dD ]*}||v rQ|| }t|tr?t| ||< q' fdd|D }t	||||< q'dS )zCorrect values of copyright year that are not coherent with
    the SOURCE_DATE_EPOCH environment variable (if set)

    See https://reproducible-builds.org/specs/source-date-epoch/
    SOURCE_DATE_EPOCHr   NrM  c                 3  s    | ]	}t | V  qd S rS   )_substitute_copyright_year)r=   x
current_yrrU  r0   r1   rA     s    
z)correct_copyright_year.<locals>.<genexpr>)
rq   r   rV  gmtimerX  rW  r(   rE   r]  r  )rL  r   source_date_epochsource_date_epoch_yearcurrent_yearrZ  r*   rJ   r0   r_  r1   correct_copyright_year}  s&   

re  copyright_linerd  replace_yearc                 C  s   t | dk s| dd  s| S | dd |kr(| dd dv r(|| dd  S | dd dkr2| S | dd  rX| dd |krX| dd dv rX| dd | | dd  S | S )zReplace the year in a single copyright line.

    Legal formats are:

    * ``YYYY``
    * ``YYYY,``
    * ``YYYY ``
    * ``YYYY-YYYY``
    * ``YYYY-YYYY,``
    * ``YYYY-YYYY ``

    The final year in the string is replaced with ``replace_year``.
       N   >   r    r   -	   
   )r  isdigit)rf  rd  rg  r0   r0   r1   r]    s    r]  Sphinx | Nonec                 C  sv  |j  D ]\}}|j}|j}t||}t|r||}|du r#|s#q|tthkr+qt|t	rH|
|sGtd}tj|j|||jddd qt|}t|}	||	u rUq||v rZqh |j|t|	j@ }
|
t |
rnq|rtd}tdd |D }t|d	krd
|dd d|d   }nd|}tj|j|||ddd qtd}tj|j|||	ddd qdS )zCheck all values for deviation from the default value's type, since
    that can result in TypeErrors all over the place NB.
    NzTThe config value `{name}` has to be a one of {candidates}, but `{current}` is given.)r)   currentrP   T)r+  zNThe config value `{name}' has type `{current.__name__}'; expected {permitted}.c                 s  s    | ]
}d |j  dV  qdS )`'N)r,   )r=   cr0   r0   r1   rA     r&  z&check_confval_types.<locals>.<genexpr>r|   r  z, or z or )r)   rp  	permittedzZThe config value `{name}' has type `{current.__name__}', defaults to `{default.__name__}'.)r)   rp  r`   )r   rJ   r`   ra   r  r  rN   r   rE   rO   r[   r   r   r   formatrP   r  	__bases__rM   discardr5   sortedr  r   )rA  r   r)   r  r`   ra   r*   ru   
type_valuetype_defaultcommon_baseswrapped_valid_typesru  r0   r0   r1   check_confval_types  s`   




r~  c                 C  s8   |j }|r| j|sttd| d |_ d S d S d S )Nz%primary_domain %r not found, ignored.)r   registry
has_domainr   r   r   )rA  r   r   r0   r0   r1   check_primary_domain  s
   
r  r    r   addedSet[str]changedremovedIterable[str]c                 C  s>   | j jdkrd| jjvrd| jjv rttd d| j _|S )zjAdjust root_doc to 'contents' to support an old project which does not have
    any root_doc setting.
    r   contentszkSince v2.0, Sphinx uses "index" as root_doc by default. Please add "root_doc = 'contents'" to your conf.py.)r   r   r   docnamesr   r   r   )rA  r    r  r  r  r0   r0   r1   check_root_doc  s   r  r   c                 C  s   | j dtdd | j dtdd | j dtdd | j dtdd | j dtdd | j dtdd | j dtdd |  dt ddddS )	Nzconfig-initedi   )priorityi  zenv-get-outdatedbuiltinT)r   parallel_read_safeparallel_write_safe)	connectrD  rG  rK  r[  re  r~  r  r  )rA  r0   r0   r1   r     s   r   )r4   r5   r3   r6   r7   r8   )r   r(   r   r   r7   r   )ra   r   r7   r@  )rA  r   r   r   r7   rR   )rL  r   r   r   r7   rR   )rf  r(   rd  r(   rg  r(   r7   r(   )rA  ro  r   r   r7   rR   )rA  r   r    r   r  r  r  r  r  r  r7   r  )rA  r   r7   r   )Nr\   
__future__r   sysrV  r;  r  r~   osr   r   typingr   r   r   r   sphinx.deprecationr	   sphinx.errorsr
   r   sphinx.localer   r   sphinx.utilr   sphinx.util.osutilr   version_info
contextlibr   r   collections.abcr   r   r   r   r   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.tagsr   sphinx.util.typingr   r   	getLoggerr,   r   r&   r/   r   r  
ModuleTypeFunctionTyperF   r'   rN   r;   rO   rL   r]   r^   r   r   r!  rD  rG  rK  r[  re  r]  r~  r  r  r   r0   r0   r0   r1   <module>   sf    

(U  
P







#
@
