HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/sphinx/builders/html/__pycache__/__init__.cpython-310.pyc
o

�+�a��@s�dZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZddlmZddlmZddlmZdd	lmZdd
lmZmZddlmZddlm Z dd
l!m"Z"m#Z#ddl!m$Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8m9Z9ddl:m;Z;ddl<m=Z=m>Z>ddl?m@Z@ddlAmBZBddlCmDZDmEZEmFZFmGZGmHZHddlImJZJmKZKddlLmMZMddlNmOZOddlPmQZQdd lRmSZSmTZTmUZUdd!lVmWZWmXZXmYZYmZZZdd"l[m\Z\dd#l]m^Z^m_Z_eJ��rdd$l`maZad%Zbnd&Zbd'ZceE�dee�Zfe�gd(�Zhd)e
d*eifd+d,�ZjGd-d.�d.ei�ZkGd/d0�d0ei�ZlGd1d2�d2�ZmGd3d4�d4e)�Znd5e'd6e,d*dfd7d8�Zod5e'd6e,d*dfd9d:�Zpd5e'd;eid<eid=ed>ed*dfd?d@�Zqd5e'd;eid<eid=ed>ed*dfdAdB�Zrd5e'd;eid<eid=ed>ed*dfdCdD�Zsd5e'd*dfdEdF�Ztd5e'd6e,d*dfdGdH�Zud5e'd6e,d*dfdIdJ�Zvd5e'd6e,d*dfdKdL�Zwd5e'd6e,d*dfdMdN�ZxGdOdP�dP�Zyey�Zzd5e'd6e,d*dfdQdR�Z{ddl|Z!ddl}Z!d5e'd*eeie
ffdSdT�Z~dS)Uz�
    sphinx.builders.html
    ~~~~~~~~~~~~~~~~~~~~

    Several HTML builders.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�datetime)�path)	�IO�Any�Dict�Iterable�Iterator�List�Set�Tuple�Type)�quote)�nodes)�
publish_parts)�OptionParser)�DocTreeInput�StringOutput)�Node)�
relative_path)�__display_version__�package_dir)�version_info)�Sphinx)�Builder)�ENUM�Config)�Domain�Index�
IndexEntry)�ImageAdapter)�IndexEntries)�TocTree)�ConfigError�
ThemeError)�PygmentsBridge)�_�__)�js_index)�HTMLThemeFactory)�isurl�logging�md5�progress_message�status_iterator)�is_html5_writer_available�new_document)�
copy_asset)�format_date)�
InventoryFile)�DOTFILES�Matcher�patmatch)�copyfile�	ensuredir�os_path�relative_uri)�Tags)�HTMLTranslator�
HTMLWriter)�HTML5TranslatorTFzobjects.invz[
]+�obj�returncCsNt|t�r
tt|����St|ttf�rtdd�|D��}tt|��	���
�S)z�
    Return a stable hash for a Python data structure.  We can't just use
    the md5 of str(obj) since for example dictionary items are enumerated
    in unpredictable order due to hash randomization in newer Pythons.
    css�|]}t|�VqdS�N)�get_stable_hash)�.0�o�rD�?/usr/lib/python3/dist-packages/sphinx/builders/html/__init__.py�	<genexpr>K��z"get_stable_hash.<locals>.<genexpr>)�
isinstance�dictrA�list�items�tuple�sortedr+�str�encode�	hexdigest)r>rDrDrErABs

rAc@sbeZdZUdZdZeeefed<dZeed<dZ	e
ed<dd�dedede
ded	df
d
d�ZdS)�
Stylesheetz�A metadata of stylesheet.

    To keep compatibility with old themes, an instance of stylesheet behaves as
    its filename (str).
    N�
attributes�filename�priority���rT�argsr?cOs^t�||�}||_||_||_|j�dd�|j�dd�|r-|d|jd<|d|jd<|S)N�rel�
stylesheet�typeztext/cssr��title)rN�__new__rSrTrR�
setdefault)�clsrSrTrWrR�selfrDrDrEr]ZszStylesheet.__new__)
�__name__�
__module__�__qualname__�__doc__rRrrN�__annotations__rSrT�intrr]rDrDrDrErQOs
�rQc	@sZeZdZUdZdZeeefed<dZeed<dZ	e
ed<d
dede
deddfdd	�ZdS)�
JavaScriptz�A metadata of javascript file.

    To keep compatibility with old themes, an instance of javascript behaves as
    its filename (str).
    NrRrSrTrUr?cKs"t�||�}||_||_||_|Sr@)rNr]rSrTrR)r_rSrTrRr`rDrDrEr]ts
zJavaScript.__new__)rU)rarbrcrdrRrrNrerSrTrfr]rDrDrDrErgis
 rgc	@speZdZdZededdfdd��Zddgfdeded	e	e
ddfd
d�Zdddefd
d�Z
deddfdd�ZdS)�	BuildInfoz�buildinfo file manipulator.

    HTMLBuilder and its family are storing their own envdata to ``.buildinfo``.
    This class is a manipulator for the file.
    �fr?c
Cs�z<|��}|d��dksJ�|d�d�sJ�|d�d�s!J�t�}|d��d��|_|d��d��|_|WStyQ}z	t	t
d�|�|�d}~ww)	Nrz# Sphinx build info version 1�zconfig: �ztags: r[zbuild info file is broken: %r)�	readlines�rstrip�
startswithrh�split�strip�config_hash�	tags_hash�	Exception�
ValueErrorr&)r_ri�lines�
build_info�excrDrDrE�load�s��zBuildInfo.loadN�config�tags�config_categoriescCsHd|_d|_|rdd�|�|�D�}t|�|_|r"tt|��|_dSdS)N�cSsi|]}|j|j�qSrD)�name�value)rB�crDrDrE�
<dictcomp>�sz&BuildInfo.__init__.<locals>.<dictcomp>)rqrr�filterrArM)r`ryrzr{�valuesrDrDrE�__init__�s
�zBuildInfo.__init__�othercCs|j|jko|j|jkSr@)rqrr)r`r�rDrDrE�__eq__�s
�zBuildInfo.__eq__cCs|�d|j|jf�dS)Nz�# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: %s
tags: %s
)�writerqrr�r`rirDrDrE�dump�s

�zBuildInfo.dump)rarbrcrd�classmethodrrxrr:r	rNr��boolr�r�rDrDrDrErh}s&rhc
s,eZdZUdZdZdZed�ZdZdZ	dZ
dZeZ
eed<dZdZgd�ZdZdZdZdZdZd	ZdZd	ZdZd
Zeed<gZee ee!e"ee eee#fe$fed<d
e%dd
f�fdd�Z&d�dd�Z'de(fdd�Z)defdd�Z*defdd�Z+de ee,ffdd�Z-d�dd�Z.d�dd�Z/d�dd �Z0d!ed"edd
fd#d$�Z1d�d%d&�Z2d!ed"edd
fd'd(�Z3e4de!e5j6fd)d*��Z7e4defd+d,��Z8de9efd-d.�Z:deefd/d0�Z;d1e<de,eeffd2d3�Z=d4e>edd
fd5d6�Z?d7ed8ed9ede,eeffd:d;�Z@d7ed<e5jAdd
fd=d>�ZBd7ed<e5jAdd
fd?d@�ZCd�dAdB�ZDeEedC��d�dDdE��ZFd�dFdG�ZGeEedH��d�dIdJ��ZHd�dKdL�ZId�dMdN�ZJd�dOdP�ZKd�dQdR�ZLd�dSdT�ZMd�dUdV�ZNd�dWdX�ZOdYe,dd
fdZd[�ZPdYe,dd
fd\d]�ZQd�d^d_�ZRd�d`da�ZSd�dbdc�ZTd�ddde�ZUd�dfdg�ZVd�dhdi�ZWd<e<dd
fdjdk�ZXd4eYedd
fdldm�ZZdned<e5jAdoedd
fdpdq�Z[d�d7edre$d"edefdsdt�Z\dnedefdudv�Z]dnedwe,dd
fdxdy�Z^d�d7edzedefd{d|�Z_	}	
d�dned~e,ded�ed�edd
fd�d��Z`dnededwe,d�edd
f
d�d��Zad�d�d��ZbeEed���d�d�d���Zcd�d�d��Zd�ZeS)��StandaloneHTMLBuilderz&
    Builds standalone HTML docs.
    �htmlz!The HTML pages are in %(outdir)s.Tz.html�indexer_format)z
image/svg+xmlz	image/pngz	image/gifz
image/jpegzsearchindex.jsFN�imgpath�domain_indices�appr?cst��|�g|_g|_dSr@)�superr��	css_files�script_files)r`r���	__class__rDrEr��s
zStandaloneHTMLBuilder.__init__cCs�|��|_d|_i|_d|_|��|��|��|��|�	dd�}|dur+||_
|�	dd�}|dur9||_n|j
|_|�	dd�|_dS)N�_images�file_suffixr��link_suffix�	use_index)
�create_build_inforv�imagedir�
secnumbers�current_docname�init_templates�init_highlighter�init_css_files�
init_js_files�get_builder_config�
out_suffixr�r�)r`�html_file_suffix�html_link_suffixrDrDrE�init�s 
zStandaloneHTMLBuilder.initcCst|j|jdg�S)Nr�)rhryrz�r`rDrDrEr��sz'StandaloneHTMLBuilder.create_build_infocsb�fdd��jjD�t�td�jjdd�t�tjd�jjd�g}|D]}t�|�r.|Sq#dS)Ncs g|]}t�|�jjdd��qS)�LC_MESSAGES�	sphinx.js)r�joinry�language)rB�dirr�rDrE�
<listcomp>�s
��z>StandaloneHTMLBuilder._get_translations_js.<locals>.<listcomp>�localer�r�zshare/sphinx/locale)	ry�locale_dirsrr�rr��sys�prefix�isfile)r`�
candidates�jsfilerDr�rE�_get_translations_js�s 
��
���
�z*StandaloneHTMLBuilder._get_translations_jscCs,|jjdur
|jjS|jr|j�dd�SdS)N�themerYzdefault.css)ry�
html_styler��
get_configr�rDrDrE�_get_style_filename�s
z)StandaloneHTMLBuilder._get_style_filenamecCs|jj|jjfSr@)ry�
html_theme�html_theme_optionsr�rDrDrE�get_theme_config�z&StandaloneHTMLBuilder.get_theme_configcCsHt|j�}|��\}}|�|�|_|��|_|��|j�	||j�dSr@)
r(r�r��creater��copy�
theme_options�create_template_bridge�	templatesr�)r`�
theme_factory�	themename�themeoptionsrDrDrEr�	s

z$StandaloneHTMLBuilder.init_templatescCs�|jjdur|jj}n|jr|j�ddd�}nd}td|�|_|jr+|j�ddd�}nd}|durBtd|�|_|jjddd	d
�dSd|_dS)Nr��pygments_style�none�sphinxr��pygments_dark_style�pygments_dark.cssz(prefers-color-scheme: dark)�pygments_dark_css)�media�id)	ryr�r�r�r$�highlighter�dark_highlighterr��add_css_file)r`�style�
dark_stylerDrDrEr�s 

�
z&StandaloneHTMLBuilder.init_highlightercCs�g|_|jddd�|j|��dd�|jjjD]
\}}|j|fi|��q|�dd�D]\}}|�dd�|j|fi|��q,dS)N�pygments.css��rVr�r�rT� )r�r�r�r��registryr�r^�r`rS�attrsrDrDrEr�(s�z$StandaloneHTMLBuilder.init_css_filesrS�kwargscKs0d|vr
t�d|�}|j�t|fi|���dS�N�://�_static)�	posixpathr�r��appendrQ�r`rSr�rDrDrEr�4sz"StandaloneHTMLBuilder.add_css_filecCs�g|_|jddddd�|jddd�|jddd�|jd	dd�|jjjD]
\}}|j|fi|��q&|�d
d�D]\}}|�dd
�|j|fi|��q:|jjr]|�	�r_|�d�dSdSdS)Nzdocumentation_options.js�documentation_optionsr|r�)r��
data_url_rootrTz	jquery.jsrVz
underscore.jszdoctools.js�js_filesr�rTr��translations.js)
r��add_js_filer�r�r�r�r^ryr�r�r�rDrDrEr�:s��z#StandaloneHTMLBuilder.init_js_filescKs4|rd|vrt�d|�}|j�t|fi|���dSr�)r�r�r�r�rgr�rDrDrEr�Lsz!StandaloneHTMLBuilder.add_js_filecCstr|jjrtStSr@)�html5_readyry�html4_writerr;r=r�rDrDrE�default_translator_classRsz.StandaloneHTMLBuilder.default_translator_classcCs\|�dd�}|dur|St|jjj�}t|�dkr|dSt|�dkr,|�d�|dSdS)N�
math_rendererr�r[rrj�mathjax)r�rJr�r��html_inline_math_renderers�len�remove)r`r}�	renderersrDrDrE�math_renderer_nameYs
z(StandaloneHTMLBuilder.math_renderer_namec	cs��z4tt�|jd���
}t�|�}Wd�n1swY|j|kr4t�d�|j	j
EdHWdSWn"tyO}zt�t
d�|�WYd}~n
d}~wtyWYnw|jra|j��}nd}|j	j
D]b}||j	jvryt�d|�|Vqg|�|�}zt�|�}Wnty�d}Ynwz/tt�|j	�|��|�}||kr�t�d|t�|�t�|�|t�t�|j	�|����|VWqgty�YqgwdS)N�
.buildinfoz)[build target] did not match: build_info z"Failed to read build info file: %rrz![build target] did not in env: %rz>[build target] targetname %r(%s), template(%s), docname %r(%s))�openrr��outdirrhrxrv�logger�debug�env�
found_docsrt�warningr&�OSErrorr��newest_template_mtime�all_docs�get_outfilename�getmtimers�max�doc2pathr�utcfromtimestamp)	r`�fp�	buildinforw�template_mtime�docname�
targetname�targetmtime�srcmtimerDrDrE�get_outdated_docsmsb��

���
������z'StandaloneHTMLBuilder.get_outdated_docscCs|jj|jjSr@)ry�html_extra_path�html_static_pathr�rDrDrE�get_asset_paths�r�z%StandaloneHTMLBuilder.get_asset_paths�nodecCs@|durddiStd�}|�|�t|�}td|tddi|d�S)	z$Utility: Render a lone doctree node.N�fragmentr|z<partial node>�doctree�output_encoding�unicode)�reader_name�writer�source_class�settings_overrides�source)r/r�r<rr)r`r
�docrrDrDrE�render_partial�s
�z$StandaloneHTMLBuilder.render_partial�docnamescCs&d|_|jr*ddlm}|jjp|jj}|sd}||j||jj|jj	�|_|�
|�t|�|_t
|jj|jfdd���|_t|jj�|j_g|_|jj}|r�t|jj�D]4}|jj|}|jD](}d|j|jf}t|t�rs||vrsq_||���\}	}
|	r�|j�|||	|
f�q_qT|jj}|dur�t|p�t d�|jjd�|_!nd|_!|jj"p�d	}|jj#p�d	}
t$|�s�t%�&|�}t$|
�s�t%�&|
�}
|j�'�|_(g}|j)r�|�d
t d�dt d
�f�|jD]\}}}	}
|j*r�|�||j+d	|j*f�q�t|j,�|_-t|j.�|_/id|j0�d|jj1�dt2�3d	|jj4��d|jj5�d|j!�d|jj6�d|jj7�d|jj7�d|jj8�d|jj9�d|jj:�d|jj;�d|jj<�d|jj=�d|jj>�d|jj?�d|j@�|jA|j,|jj|j.tBtC|�D�||jg||
tE�on|jjFd�
�|_G|jH�r�|jG�Id d!�|jH�J|jK��L�D��|jG�I|jjM�dS)"Nr)�IndexBuilder�enT)�defaults�
components�read_config_filesz%s-%sz	%b %d, %Y)r�r|�genindexz
General Index�I�index�embedded�project�release�version�last_updated�	copyright�
master_doc�root_doc�use_opensearch�	docstitle�
shorttitle�show_copyright�show_sphinx�
has_source�show_source�sourcelink_suffixr�)
r�r�r�r��sphinx_version�sphinx_version_tupler��rellinks�builder�parents�logo�favicon�
html5_doctypecss �|]\}}d||fVqdS)�theme_NrD)rB�key�valrDrDrErFs�
�z8StandaloneHTMLBuilder.prepare_writing.<locals>.<genexpr>)N�indexer�search�
sphinx.searchrry�html_search_languager�r��html_search_options�html_search_scorer�load_indexerr<�	docwriterr�settings�get_default_values�docsettingsr��html_compact_lists�
compact_listsr��html_domain_indicesrM�domains�indicesr}rHrJ�generater��html_last_updated_fmtr1r%r#�	html_logo�html_faviconr)r�basename�collect_relations�	relationsr��	shortname�	localnamer��
_script_filesr��
_css_filesrr �return_codes_re�subr!r"r$r&�html_use_opensearch�
html_title�html_short_title�html_show_copyright�html_show_sphinx�html_copy_source�html_show_sourcelink�html_sourcelink_suffixr�r�rr/r�r�r��
globalcontextr��update�get_optionsr�rK�html_context)r`rr�lang�indices_config�domain_name�domain�indexcls�	indexname�content�collapse�lufmtr4r5r1rDrDrE�prepare_writing�s��

��


���
�


����������	�
���
�����
� �z%StandaloneHTMLBuilder.prepare_writingr�body�metatagsc
CsTd}}g}|jddd�}|j�|�}|jj}	|rP|drPz%|�||d�|�|	|d�dd�}|�|d|ddtd�f�Wnt	yOd}Ynw|r�|dr�z%|�||d�|�|	|d�dd�}|�|d|dd	td
�f�Wnt	y�d}Ynw|r�|dr�z|�|�||d�|�|	|d�dd��Wn	t	y�Ynw|j�|d�}|r�|ds�|r�|�
�|��|jj�|�}
|
r�|�|
�dnd}|j�
|d
�t|�d�}|jjr�||}
||jjkr�|
|jj7}
nd}
|jj�|�}t|j��||�}|�|�d}|||||||||
||jj|dk|d�S)z1Collect items for the template context of a page.Nr1rjr\)�linkr\�N�nextr[�P�previousrr|Fr)r3�prevrqr\�metarmrnr1�
sourcename�toc�display_toc�page_source_suffix)r_rP�getr��titles�get_relative_urirr�r%�KeyError�pop�reverse�
longtitlesr�r�ryr\r^�metadatar!�get_toc_for�toc_num_entries)r`rrmrnrtrqr3r1�relatedr{�
title_noder\�
source_suffixrvru�self_tocrwrDrDrE�get_doc_contexts~�"��"�������z%StandaloneHTMLBuilder.get_doc_contextrcCs�tdd�}|j|_|jj�|i�|_|jj�|i�|_t	|�
|�d�|_t	|�
|�d�|_||_
|j�||�|j��|jjd}|jj}|�|||�}|j|||d�dS)N�utf-8��encodingr��
_downloadsr)�	event_arg)rrDrBr��toc_secnumbersrzr��toc_fignumbers�
fignumbersr9�get_target_urir��dlpathr�rAr��assemble_parts�parts�
clean_metar��handle_page)r`rr�destinationrmrn�ctxrDrDrE�	write_docis

zStandaloneHTMLBuilder.write_doccCsTt|�|�|j�|_|�|�|jj�|�}|r|�|�dnd}|�	|||�dS)Nr\r|)
r9r�r�r��post_process_imagesr�r�rzr�
index_page)r`rrr�r\rDrDrE�write_doc_serializedzs

z*StandaloneHTMLBuilder.write_doc_serializedcCs||j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j�|j	�|�
�dSr@)�finish_tasks�add_task�gen_indices�gen_pages_from_extensions�gen_additional_pages�copy_image_files�copy_download_files�copy_static_files�copy_extra_files�write_buildinfo�
handle_finishr�rDrDrE�finish�szStandaloneHTMLBuilder.finishzgenerating indicescCs|jr|��|��dSr@)r��write_genindex�write_domain_indicesr�rDrDrEr��sz!StandaloneHTMLBuilder.gen_indicescCs4|j�d�D]}|D]\}}}|�|||�q
qdS)N�html-collect-pages)�events�emitr�)r`�pagelist�pagename�context�templaterDrDrEr��s
��z/StandaloneHTMLBuilder.gen_pages_from_extensionszwriting additional pagescCs�|jj��D]\}}tj|ddd�|�|i|�q|jr,tjddd�|�did�|jjrM|jrOtjddd�t�	|j
dd	�}|jd
id	|d�dSdSdS)N� T��nonlzsearch r;zsearch.htmlzopensearch r�zopensearch.xml�
opensearch)�outfilename)ry�html_additional_pagesrKr��infor�r;rWrr�r�)r`r�r��fnrDrDrEr��s�z*StandaloneHTMLBuilder.gen_additional_pagesc	Cs�t|j��|�}g}|D]\}}|�tdd�|D���q|||jjd�}tjddd�|jjr\|�	d|d�|�	d	|d
�t
||�D]\\}}}||||d�}|�	d||d
�qCdS|�	d|d
�dS)Ncss&�|]\}\}}}dt|�VqdS)r[N)r�)rBr%�subitemsrDrDrErF�s��z7StandaloneHTMLBuilder.write_genindex.<locals>.<genexpr>)�genindexentries�genindexcounts�split_indexz	genindex Tr�rzgenindex-split.htmlzgenindex-allz
genindex.html)r8�entries�countr�z	genindex-zgenindex-single.html)r r��create_indexr��sumry�html_split_indexr�r�r��zip)	r`r�indexcounts�_kr��genindexcontextr8r�r�rDrDrEr��s6�������z$StandaloneHTMLBuilder.write_genindexcCsF|jD]\}}}}|j||d�}tj|ddd�|�||d�qdS)N)�
indextitleri�collapse_indexr�Tr�zdomainindex.html)r�rRr�r�r�)r`rhrgrirj�indexcontextrDrDrEr��s��z*StandaloneHTMLBuilder.write_domain_indicescCs�|jrat|jj�j}tt�|j|j	��t
|jtd�dt|j�|jj
|d�D]<}|j|}ztt�|j|�t�|j|j	|��Wq&ty`}zt�td�t�|j|�|�WYd}~q&d}~wwdSdS)Nzcopying images... �brown��stringify_funczcannot copy image file %r: %s)�imagesrr�r��get_original_image_urir7rr�r�r�r-r&r��	verbosityr6�srcdirrsr�r�)r`r��src�dest�errrDrDrEr��s(
�
�
����z&StandaloneHTMLBuilder.copy_image_filescs�dtdtf�fdd�}�jjrptt��jd��t�jjtd�dt	�jj��j
j|d�D]E}z!t��jd�jj|d	�}tt�|��t
t��j|�|�Wq,tyo}zt�td
�t��j|�|�WYd}~q,d}~wwdSdS)Nrir?cst�j|�Sr@)rr�)rir�rDrE�
to_relpath�sz=StandaloneHTMLBuilder.copy_download_files.<locals>.to_relpathr�zcopying downloadable files... r�r�r[z$cannot copy downloadable file %r: %s)rNr��dlfilesr7rr�r�r-r&r�r�r��dirnamer6r�r�r�r�)r`r�r�r�r�rDr�rEr��s&
�
����z)StandaloneHTMLBuilder.copy_download_filescCs�tt�|jdd�d��}|�|j���Wd�n1swY|jrLtt�|jdd�d��}|�|j���Wd�dS1sEwYdSdS)z!create a style file for pygments.r�r��wNr�)r�rr�r�r�r��get_stylesheetr�r�rDrDrE�create_pygments_style_file�s�"��z0StandaloneHTMLBuilder.create_pygments_style_filecCs:|jjdur|��}|rt|t�|jdd��dSdSdS)z(Copy a JavaScript file for translations.Nr�r�)ryr�r�r6rr�r��r`r�rDrDrE�copy_translation_jss�z)StandaloneHTMLBuilder.copy_translation_jsc
Csv|jdur7t|jd�r#|j��D]}t|t�|jdt�|���qdS|j��}|r9t|t�|jdd��dSdSdS)z#Copy a JavaScript file for stemmer.N�get_js_stemmer_rawcodesr�z_stemmer.js)	r:�hasattrr�r6rr�r�rN�get_js_stemmer_rawcoder�rDrDrE�copy_stemmer_jss
�
�z%StandaloneHTMLBuilder.copy_stemmer_jsr�c	Csfdtdtddfdd�}|jr/|j��ddd�D]}tt�|d�t�|jd�t||j	|d	�qdSdS)
NrS�errorr?cS�t�td�||�dS�Nz1Failed to copy a file in html_static_file: %s: %r�r�r�r&�rSr�rDrDrE�onerror�
�z>StandaloneHTMLBuilder.copy_theme_static_files.<locals>.onerror����staticr�)�excludedr��rendererr�)
rNrsr��get_theme_dirsr0rr�r�r3r�)r`r�r��entryrDrDrE�copy_theme_static_filess��z-StandaloneHTMLBuilder.copy_theme_static_filesc	Csddtdtddfdd�}t|jjdg�}|jjD]}tt�|j	|�t�|j
d�|||j|d�qdS)	NrSr�r?cSr�r�r�r�rDrDrEr�r�z=StandaloneHTMLBuilder.copy_html_static_files.<locals>.onerrorz**/.*r�)r�r�r�)rNrsr4ry�exclude_patternsrr0rr��confdirr�r�)r`r�r�r�r�rDrDrE�copy_html_static_filess
��z,StandaloneHTMLBuilder.copy_html_static_filescC�B|jjrt|jj�stt�|j|jj�t�|jd��dSdSdS�Nr�)ryrLr)r0rr�r�r�r�rDrDrE�copy_html_logo)�
��z$StandaloneHTMLBuilder.copy_html_logocCr�r�)ryrMr)r0rr�r�r�r�rDrDrE�copy_html_favicon.r�z'StandaloneHTMLBuilder.copy_html_faviconc
Cs�zTttd���Ctt�|jd��|j��}|jdur#|�	|j�
��|��|��|�
�|�|�|�|�|��|��Wd�WdS1sMwYWdStyo}zt�td�|�WYd}~dSd}~ww)Nzcopying static filesr�zcannot copy static file %r)r,r&r7rr�r�r_r�r:r`�context_for_searchtoolr�r�r�r�r�r�r�r�r�r�)r`r�r�rDrDrEr�3s$




&���z'StandaloneHTMLBuilder.copy_static_filesc
Cs�z6ttd���%t|jj�}|jjD]}t�|j|�}t	||j
|�qWd�WdS1s/wYWdStyQ}zt�
td�|�WYd}~dSd}~ww)zcopy html_extra_path files.zcopying extra filesNzcannot copy extra file %r)r,r&r4ryr�rrr�r�r0r�r�r�r�)r`r��
extra_pathr�r�rDrDrEr�Gs�&���z&StandaloneHTMLBuilder.copy_extra_filesc
Cs�z%tt�|jd�d��}|j�|�Wd�WdS1swYWdSty@}zt�t	d�|�WYd}~dSd}~ww)Nr�r�z#Failed to write build info file: %r)
r�rr�r�rvr�r�r�r�r&)r`r�rwrDrDrEr�Rs&���z%StandaloneHTMLBuilder.write_buildinfocCs|jr
|j��dSdSr@)r��cleanupr�rDrDrEr�Ys�zStandaloneHTMLBuilder.cleanupcs�t�||�|jjr]|jr_|�tj�D]M�t�fdd�dD��s!qt�j	tj
�r)qd�dvr0q�d}tj
dddd	�}||jvrNt�
|j|j|�|d
<n||d
<��|�|���qdSdSdS)zlPick the best candidate for an image and link down-scaled images to
        their high res version.
        c3��|]}|�vVqdSr@rD)rBr8�r
rDrErFfrGz<StandaloneHTMLBuilder.post_process_images.<locals>.<genexpr>)�scale�width�heightzno-scaled-link�classes�urir|T)�internal�refuriN)rr�ry�html_scaled_image_link�traverser�image�anyrH�parent�	referencer�r�r�r��replace_selfr�)r`rr�rrDr�rEr�^s(

�
�z)StandaloneHTMLBuilder.post_process_imagesc	Cs�t|jj�t|�}zIt�|j|j�}|jr5t|dd��}|j	�
||j�Wd�n1s/wYnt|d��}|j	�
||j�Wd�n1sMwYWntt
fyg|ret�td��Ynw|j	�|�dS)Nr�r��rbzcsearch index couldn't be loaded, but not all documents will be built: the index will be incomplete.)�setr�r�rr�r��searchindex_filename�indexer_dumps_unicoder�r:rxr�r�rtr�r�r&�prune)r`r�keep�
searchindexfn�ft�fbrDrDrEr@{s$������z"StandaloneHTMLBuilder.load_indexerr�r\cCsn|jdur3|r5|jj|dd�}|jj�|i�}d|vr(|j�||dtd��dS|j�||||�dSdSdS)N)�base�nosearchr|)r:r�r�r�rz�feedr/)r`r�rr\rSr�rDrDrEr��s�z StandaloneHTMLBuilder.index_pagerjcKsNd|vrd|d<|�d�dkr|�d�|�t|j�j|||fi|���dS)N�
includehiddenF�maxdepthr|r)rzr~rr!r��get_toctree_for)r`rrjr�rDrDrE�_get_local_toctree�s
���z(StandaloneHTMLBuilder._get_local_toctreecCst�|jt|�|j�Sr@)rr�r�r8r�)r`r�rDrDrEr��sz%StandaloneHTMLBuilder.get_outfilenamer�cCsdtdtfdd�}d}d}d}|jjdkr9z|jj�dd�}|r*dd	�|�d
�D�}Wn!ty8gd�}Ynw|j�ddd�}|rMdd	�|�d
�D�}|�	dd
�}|�
�D]"\}	}
t||	�ry|ru||	�ru||�rtt�
td�|||	�qW|	}|
}qW|dur	||d<||d<dS)N�patternr?cst�fdd�dD��S)Nc3r�r@rD)rB�char�rrDrErF�rGzKStandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard.<locals>.<genexpr>z*?[)rrrDrrE�has_wildcard�sz8StandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard�	alabasterr��sidebarscS�g|]}|���qSrD�rp�rBr}rDrDrEr���z6StandaloneHTMLBuilder.add_sidebars.<locals>.<listcomp>�,)z
about.htmlznavigation.htmlzrelations.htmlzsearchbox.htmlzdonate.htmlcSrrDr r!rDrDrEr��r"r�z8page %s matches two patterns in html_sidebars: %r and %r�
customsidebar)rNr�r�r}ryrzrorsr�r�rKr5r�r�r&)r`r�r�rr�matchedr$�theme_default_sidebars�
html_sidebarsr�patsidebarsrDrDrE�add_sidebars�sB��

��z"StandaloneHTMLBuilder.add_sidebars�typcCst|�|jSr@)r
r�)r`rr*rDrDrEr��sz$StandaloneHTMLBuilder.get_target_uri�	page.html�addctx�templatenamer�r�c
s��j��}�|d<|d<�jj|d<����}|�dd�d}�jjr2t��jj��j	�|d<nd|d<d|fd	t
d
tdt
dt
f�fd
d�
}||d<dt
dtf�fdd�}	|	|d<��fdd�|d<���|�|�
|��j�jdd�<�j�jdd�<���|||��j�d�|||�}
|
r�|
}ztt|d�dd�d�|d<Wn	ty�Ynwztt|d�dd�d�|d<Wn	ty�Ynwz	�j�||�}Wn(ty�t�td���YdSty�}zttd��|f�|�d}~ww|�s�� ��}t!t"�#|��z"t$|d|dd d!��
}
|
�%|�Wd�n	1�s&wYWnt&�yH}zt�td"�||�WYd}~nd}~ww�j'�rq|�(d#��rst"��j)d$t*|d#��}t!t"�#|��t+�j,�-��|�dSdSdS)%Nr��current_page_namer��#r[r�pageurlF�otheruri�resource�baseurir?csB|rd|vr|S|s��|�}t||�pd}|dkr�js|}|S)Nr�r/)r�r9�allow_sharp_as_current_path)r1r2r3r�r�rDrE�pathto�s
z1StandaloneHTMLBuilder.handle_page.<locals>.pathtor5r}cs>|�jjvrdS|dkr�jrdS|dkr��dd�rdSdS)NTr;rr�r�F)r�r�r;r�)r}r�rDrE�hasdoc�sz1StandaloneHTMLBuilder.handle_page.<locals>.hasdocr6cs�j�fi|��Sr@)r)r��r�r`rDrE�<lambda>sz3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>�toctree�html-page-contextr�cS�|jSr@rV)�jsrDrDrEr8�)r8r�cSr;r@rV)�cssrDrDrEr8r=z�a Unicode error occurred when rendering the page %s. Please make sure all config values that contain non-ASCII content are Unicode strings.z6An error happened in rendering the page %s.
Reason: %rr��xmlcharrefreplace)r��errorszerror writing file %s: %srv�_sources).r_r�ry�html_output_encodingr��rsplit�html_baseurlr�r�r�rNr�r)r`rSr�rTr��update_page_contextr��emit_firstresultrMrJ�AttributeErrorr��render�UnicodeErrorr�r�r&rsr#r�r7rr�r�r�r��
copysourcerzr�r8r6r�r�)r`r�r,r-r�r�r��default_baseurir5r6�newtmpl�outputrwrir��source_namerDr7rEr��s�



�$


� � �
�����
�����

��z!StandaloneHTMLBuilder.handle_pagecCsdSr@rD)r`r�r-r�r�rDrDrErE:sz)StandaloneHTMLBuilder.update_page_contextcCs&|jr
|j�|j�|j�|j�dSr@)r:r�r��dump_search_index�dump_inventoryr�rDrDrEr�>sz#StandaloneHTMLBuilder.handle_finishzdumping object inventorycCst�t�|jt�|j|�dSr@)r2r�rr�r��INVENTORY_FILENAMEr�r�rDrDrErPCsz$StandaloneHTMLBuilder.dump_inventoryc	Cs�ttd�|j����e|j�|jj�t�|j	|j
�}|jrAt|dddd��}|j�
||j�Wd�n1s;wYnt|dd��}|j�
||j�Wd�n1s[wYt�|d|�Wd�dS1sswYdS)Nzdumping search index in %sz.tmpr�r�r��wb)r,r&r:�labelr
r�r�rr�r�rrr�r�r��os�replace)r`rrrrDrDrErOGs���"�z'StandaloneHTMLBuilder.dump_search_index)r?N)Tr@)r+NN)frarbrcrdr}�formatr&�epilogrJ�allow_parallelr�r�r'r�rrerr�supported_image_types�supported_remote_images�supported_data_uri_imagesr�add_permalinksr4rr;r��download_supportr�rNr�r	rrrrr�rr�r�rhr�r�r�rr�r�r�r�r�r�r��propertyr�NodeVisitorr�r�rrr	rrr
rlr��documentr�r�r�r,r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr@r�rr�r)r�r�rEr�rPrO�
__classcell__rDrDr�rEr��s�
0
	



."mP











	







4���
�
a��
�

r�r�ryc	C�pg}|jD]-}t|t�r|�|if�qz
|\}}|�||f�Wqty2t�td�|�Yqw||_dS)z?This converts string styled html_css_files to tuple styled one.zinvalid css_file: %r, ignoredN)�html_css_filesrHrNr�rsr�r�r&)r�ryrcr�rSr�rDrDrE�convert_html_css_filesV�

�
rdc	Crb)z>This converts string styled html_js_files to tuple styled one.zinvalid js_file: %r, ignoredN)�
html_js_filesrHrNr�rsr�r�r&)r�ryrfr�rSr�rDrDrE�convert_html_js_filesgrergr�r-r�rc�,|�d��dtdtf�fdd�}||d<dS)zySet up css_tag() template helper.

    .. note:: This set up function is added to keep compatibility with webhelper.
    r5r>r?c	sfg}t|j�D]}|j|}|dur|�d|t�|d�f�q|�d�|jdd��dd�|�S)N�%s="%s"Tz	href="%s"�r2z<link %s />r�)rMrRr�r��escaperSr�)r>r�r8r~�r5rDrE�css_tag�s
�z%setup_css_tag_helper.<locals>.css_tagrmN)rzrQrN)r�r�r-r�rrmrDrlrE�setup_css_tag_helperxs
	rncrh)zxSet up js_tag() template helper.

    .. note:: This set up function is added to keep compatibility with webhelper.
    r5r<r?c	s�g}d}t|t�rNt|j�D]/}|j|}|dur=|dkr |}q|dkr0|�d�ddd��q|�d|t�|d�f�q|jrM|�d�|jdd��n|�d�|dd��|rdd	d
�|�|fSd|S)Nr|rmr�zdata-url_root="%s"Trjrizsrc="%s"z<script %s>%s</script>r�z<script>%s</script>)	rHrgrMrRr�r�rkrSr�)r<r�rmr8r~rlrDrE�js_tag�s&

��z#setup_js_tag_helper.<locals>.js_tagroN)rzrgrN)r�r�r-r�rrorDrlrE�setup_js_tag_helper�s
rpcCsx|�d�}|�d�}|rt|�s|d|dd�|d<n||d<|�d�}|r6t|�s6|d|dd�|d<d	S||d<d	S)
zSet up relative resource paths.r5r5z_static/Trj�favicon_urlr4�logo_urlN)rzr))r�r�r-r�rr5r5r4rDrDrE�setup_resource_paths�s


rscCsL|jjdkrdS|jj}|durttd���||jjvr$ttd�|��dS)Nr�zEMany math_renderers are registered. But no math_renderer is selected.z"Unknown math_renderer %r is given.)r2rVr�r"r&r�r�)r�r}rDrDrE�validate_math_renderer�s�rtcC�|jdd�D]H}t�t�|j|��}t�|�s't�td�|�|j�	|�qt�
|j�dt�
|�dkrOt�|j|g�|jkrOt�td�|�|j�	|�qdS)zCheck html_extra_paths setting.Nz'html_extra_path entry %r does not existrz0html_extra_path entry %r is placed inside outdir)
rr�normpathr�r��existsr�r�r&r��
splitdriver��
commonpath)r�ryr�r�rDrDrE�validate_html_extra_path��
��rzcCru)z Check html_static_paths setting.Nz(html_static_path entry %r does not existrz1html_static_path entry %r is placed inside outdir)
rrrvr�r�rwr�r�r&r�rxr�ry)r�ryr��static_pathrDrDrE�validate_html_static_path�r{r}cC�N|jr!t�t�|j|j��s#t|j�s%t�td�|j�d|_dSdSdSdS)zCheck html_logo setting.zlogo file %r does not existN)	rLrr�r�r�r)r�r�r&�r�ryrDrDrE�validate_html_logo����
�r�cCr~)zCheck html_favicon setting.zfavicon file %r does not existN)	rMrr�r�r�r)r�r�r&rrDrDrE�validate_html_favicon�r�r�c@seZdZdd�ZdS)�_stable_repr_objectcCsdS)Nz<object>rDr�rDrDrE�__repr__�sz_stable_repr_object.__repr__N)rarbrcr�rDrDrDrEr��sr�cCs>|j}|tur	dSt�td��|sd|_dSt�|�|_dS)z0Migrate html_add_permalinks to html_permalinks*.Nzrhtml_add_permalinks has been deprecated since v3.5.0. Please use html_permalinks and html_permalinks_icon instead.F)	�html_add_permalinks�UNSETr�r�r&�html_permalinksr�rk�html_permalinks_icon)r�ryr�rDrDrE�migrate_html_add_permalinkss
�r�cCsP|�t�|�ddd�|�dgd�|�did�|�ddd�dtg�|�d	d
d�d�|�dddtg�|�dddtg�|�d
ddtg�|�dgd�|�dgd�|�dgd�|�dgd�|�dddtg�|�did�|�did�|�dddtg�|�dtd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�d d!d�|�d"d#d�|�d$ddtg�|�d%ddtg�|�d&dd�|�d'dd�|�d(id�|�d)d*d�|�d+dd�|�d,d-d�|�d.ddtg�|�d/id�|�d0d#d�|�d1dd�|�d2d#d�|�d3d4dtd5d4��|�d6dd7�|�d8dd�|�d9�|�d:�|jd;t	d<d=�|jd;t
d<d=�|jd;td<d=�|jd;td<d=�|jd;t
d<d=�|jd;td<d=�|jd;td<d=�|�d>t�|�d:t�|�d:t�|�d:t�|�d?�|�d@�dAdddB�S)CNr�rr��html_theme_pathr�rXcSstd�|j|jfS)Nz%s %s documentation)r%r r!r�rDrDrEr8#r"zsetup.<locals>.<lambda>rYcSr;r@)rXr�rDrDrEr8%r=r�rLrMrcrfrrrKr'r�rGTr�r�r��¶�html_use_indexr�Fr\r]r^z.txtrWr|r�r�rZr[rbrBr�rE�html_secnumber_suffixz. r=r>r?rrD�html_codeblock_linenos_style�inline�table�html_math_rendererr�r�r�r:z
config-initedr�rVzbuilder-initedzsphinx.ext.mathjaxzsphinx.builders.html.transforms�builtin)r"�parallel_read_safe�parallel_write_safe)�add_builderr��add_config_valuerNrJr�r�	add_event�connectrdrgr�rzr}r�r�rtrnrprs�setup_extension)r�rDrDrE�setups�
�
�



�r�)rdr�rTr��rer�rr�typingrrrrrr	r
rr�urllib.parser
�docutilsr�
docutils.corer�docutils.frontendr�docutils.iorr�docutils.nodesr�docutils.utilsrr�rrrr/�sphinx.applicationr�sphinx.buildersr�
sphinx.configrr�sphinx.domainsrrr�!sphinx.environment.adapters.assetr�(sphinx.environment.adapters.indexentriesr �#sphinx.environment.adapters.toctreer!�
sphinx.errorsr"r#�sphinx.highlightingr$�
sphinx.localer%r&r<r'�sphinx.themingr(�sphinx.utilr)r*r+r,r-�sphinx.util.docutilsr.r/�sphinx.util.fileutilr0�sphinx.util.i18nr1�sphinx.util.inventoryr2�sphinx.util.matchingr3r4r5�sphinx.util.osutilr6r7r8r9�sphinx.util.tagsr:�sphinx.writers.htmlr;r<�sphinx.writers.html5r=r�rQ�	getLoggerrar��compilerUrNrArQrgrhr�rdrgrnrprsrtrzr}r�r�r�r�r��sphinx.builders.dirhtml�sphinx.builders.singlehtmlr�rDrDrDrE�<module>s�
,


.2��
���
�#��
�