
    }c-                        d Z ddl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 ddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZ ddlmZ ddlZddlmZ ddlmZ dd	lmZ dd
lmZmZ ddl m!Z! ddl"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.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZKmLZLmMZMmNZN ddlOmPZP ddlQmRZR ddlSmTZT dd lUmVZV dd!lWmXZXmYZYmZZZ dd"l[m\Z\m]Z]m^Z^m_Z_ dd#l`maZa dd$lbmcZcmdZd dd%lemfZf d&Zg eKjh        ei          Zj ejk        d'          Zld(ed)emfd*Znd+eem         d)eem         fd,Zo G d- d.em          Zp G d/ d0em          Zq G d1 d2          Zr G d3 d4e,          Zsd5e*d6e/d)dfd7Ztd5e*d6e/d)dfd8Zud5e*d9emd:emd;ed<e!d)dfd=Zvd5e*d9emd:emd;ed<e!d)dfd>Zwd5e*d9emd:emd;ed<e!d)dfd?Zxd5e*d)dfd@Zyd5e*d6e/d)dfdAZzd5e*d6e/d)dfdBZ{d5e*d6e/d)dfdCZ|d5e*d6e/d)dfdDZ} G dE dF          Z~ e~            Zd5e*d6e/d)dfdGZddlZddlZ$ddlZ$ e2dHdIdJie1           d5e*d)eemef         fdKZdS )LzSeveral HTML builders.    N)datetime)path)
IOAnyDictIterableIteratorListOptionalSetTupleType)quote)nodes)	Publisher)OptionParser)DocTreeInputStringOutput)Node)relative_path)__display_version__package_dir)version_info)Sphinx)Builder)ENUMConfig)RemovedInSphinx70Warningdeprecated_alias)DomainIndex
IndexEntry)ImageAdapter)IndexEntries)TocTree)ConfigError
ThemeError)PygmentsBridge)___)js_index)HTMLThemeFactory)isurlloggingmd5progress_messagestatus_iterator)new_document)
copy_asset)format_date)InventoryFile)DOTFILESMatcherpatmatch)copyfile	ensurediros_pathrelative_uri)Tags)HTMLTranslator
HTMLWriter)HTML5Translatorzobjects.invz[
]+objreturnc                 r   t          | t                    r.t          t          |                                                     S t          | t          t
          f          rt          d | D                       } t          t          |           	                                          
                                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.
    c              3   4   K   | ]}t          |          V  d S N)get_stable_hash).0os     =lib/python3.11/site-packages/sphinx/builders/html/__init__.py	<genexpr>z"get_stable_hash.<locals>.<genexpr>@   s*      55A_Q''555555    )
isinstancedictrF   listitemstuplesortedr/   strencode	hexdigest)rA   s    rI   rF   rF   7   s     #t 6tCIIKK00111	C$	'	' 65555555s3xx  !!++---rK   localec                 6    | r|                      dd          S dS )zdConvert a locale string to a language tag (ex. en_US -> en-US).

    refs: BCP 47 (:rfc:`5646`)
    r)   -N)replace)rU   s    rI   convert_locale_to_language_tagrY   D   s%    
  ~~c3'''trK   c                   p    e Zd ZU dZdZeeef         ed<   dZeed<   dZ	e
ed<   dddedede
ded	d f
d
ZdS )
StylesheetzA metadata of stylesheet.

    To keep compatibility with old themes, an instance of stylesheet behaves as
    its filename (str).
    N
attributesfilenamepriority  r^   argsrB   c                   t                               | |          }||_        ||_        ||_        |j                            dd           |j                            dd           |r |d         |j        d<   |d         |j        d<   |S )Nrel
stylesheettypeztext/cssr      title)rR   __new__r]   r^   r\   
setdefault)clsr]   r^   ra   r\   selfs         rI   rh   zStylesheet.__new__Z   s    {{3))  $""5,777""6:666 	/%)!WDOE"'+AwDOG$rK   )__name__
__module____qualname____doc__r\   r   rR   __annotations__r]   r^   intr   rh    rK   rI   r[   r[   O   s           "&JS#X%%%HcHc@C   s 3 # SV !     rK   r[   c            	       h    e Zd ZU dZdZeeef         ed<   dZeed<   dZ	e
ed<   d	dede
dedd fdZdS )

JavaScriptzA metadata of javascript file.

    To keep compatibility with old themes, an instance of javascript behaves as
    its filename (str).
    Nr\   r]   r^   r_   rB   c                 f    t                               | |          }||_        ||_        ||_        |S rE   )rR   rh   r]   r^   r\   )rj   r]   r^   r\   rk   s        rI   rh   zJavaScript.__new__t   s/    {{3))  $rK   )r_   )rl   rm   rn   ro   r\   r   rR   rp   r]   r^   rq   rh   rr   rK   rI   rt   rt   i   s           "&JS#X%%%HcHc s c s |      rK   rt   c            	       ~    e Zd ZdZededd fd            Zddg fdedede	e
         ddfd	Zd
d defdZdeddfdZdS )	BuildInfozbuildinfo file manipulator.

    HTMLBuilder and its family are storing their own envdata to ``.buildinfo``.
    This class is a manipulator for the file.
    frB   c                 @   	 |                                 }|d                                         dk    sJ |d                             d          sJ |d                             d          sJ t                      }|d                                         d                                         |_        |d                                         d                                         |_        |S # t          $ r%}t          t          d          |z            |d }~ww xY w)	Nr   z# Sphinx build info version 1   zconfig:    ztags: rf   zbuild info file is broken: %r)	readlinesrstrip
startswithrw   splitstripconfig_hash	tags_hash	Exception
ValueErrorr*   )rj   rx   lines
build_infoexcs        rI   loadzBuildInfo.load   s   	QKKMME8??$$(GGGGG8&&z222228&&x00000"J%*1X^^%5%5a%8%>%>%@%@J"#(8>>#3#3A#6#<#<#>#>J  	Q 	Q 	QR ?@@3FGGSP	Qs   C+C. .
D8 DDNconfigtagsconfig_categoriesc                     d| _         d| _        |r3d |                    |          D             }t          |          | _         |r#t          t	          |                    | _        d S d S )N c                 (    i | ]}|j         |j        S rr   )namevalue)rG   cs     rI   
<dictcomp>z&BuildInfo.__init__.<locals>.<dictcomp>   s    PPP!afagPPPrK   )r   r   filterrF   rQ   )rk   r   r   r   valuess        rI   __init__zBuildInfo.__init__   st     	7PPv}}=N/O/OPPPF.v66D 	;,VD\\::DNNN	; 	;rK   otherc                 B    | j         |j         k    o| j        |j        k    S rE   )r   r   )rk   r   s     rI   __eq__zBuildInfo.__eq__   s&     E$55 2%/1	3rK   c                 R    |                     d| j        d| j        d           d S )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: z
tags: 
)writer   r   rk   rx   s     rI   dumpzBuildInfo.dump   s?    	
 !!!4>>>3 	4 	4 	4 	4 	4rK   )rl   rm   rn   ro   classmethodr   r   r   r=   r
   rR   r   boolr   r   rr   rK   rI   rw   rw   }   s          QR QK Q Q Q [Q )-4`b 	; 	;v 	;D 	;TXY\T] 	;gk 	; 	; 	; 	;3K 3D 3 3 3 34b 4T 4 4 4 4 4 4rK   rw   c                       e Zd ZU dZdZdZ ed          ZdZdZ	dZ
dZeZeed<   dZdZg dZdZdZdZdZdZd	ZdZd	ZdZd
Zeed<   g Zee ee!e"         ee eee#         f                  e$f                  ed<   de%dd
f fdZ&dYdZ'de(fdZ)defdZ*defdZ+de ee,f         fdZ-dYdZ.dYdZ/dYdZ0dededd
fdZ1dYdZ2dededd
fdZ3e4de!e5j6                 fd            Z7e4defd            Z8de9e         fdZ:dee         fd Z;d!e<de,eef         fd"Z=d#e>e         dd
fd$Z?d%ed&ed'ede,eef         fd(Z@d%ed)e5jA        dd
fd*ZBd%ed)e5jA        dd
fd+ZCdYd,ZD eE ed-                    dYd.            ZFdYd/ZG eE ed0                    dYd1            ZHdYd2ZIdYd3ZJdYd4ZKdYd5ZLdYd6ZMdYd7ZNdYd8ZOd9e,dd
fd:ZPd9e,dd
fd;ZQdYd<ZRdYd=ZSdYd>ZTdYd?ZUdYd@ZVdYdAZWd)e<dd
fdBZXd#eYe         dd
fdCZZdDed)e5jA        dEedd
fdFZ[dZd%edGe$dedefdHZ\dDedefdIZ]dDedJe,dd
fdKZ^d[d%edLedefdMZ_	 	 d\dDedOe,dPedQedRedd
fdSZ`dDedPedJe,dRedd
f
dTZadYdUZb eE edV                    dYdW            ZcdYdXZd x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/jpegzsearchindex.jsFNimgpathdomain_indicesapprB   c           	         t                                          |           g | _        g | _        t          j        j                            d          }t          ||j	        t          |           t          t          d                    }|                    dd          }|                                |_        || _        d S )Nrestructuredtext)parser_nameunicodeencoding)readerparserwritersource_classdestinationT)output_encoding	traceback)superr   	css_filesscript_filesdocutilsreadersdoctreeReaderr   r   r?   r   r   setup_option_parserget_default_valuessettings
_publisher)rk   r   r   pubop	__class__s        rI   r   zStandaloneHTMLBuilder.__init__   s     ,. /1 !)00=O0PP=d##%$i888
 
 
 $$Y$$OO,,..rK   c                    |                                  | _        d| _        i | _        d | _        |                                  |                                  |                                  |                                  | 	                    dd          }||| _
        | 	                    dd          }||| _        n| j
        | _        | 	                    dd          | _        d S )N_imagesfile_suffixr   link_suffix	use_index)create_build_infor   imagedir
secnumberscurrent_docnameinit_templatesinit_highlighterinit_css_filesinit_js_filesget_builder_config
out_suffixr   r   )rk   html_file_suffixhtml_link_suffixs      rI   initzStandaloneHTMLBuilder.init   s    0022!68$(22=&II 	/.DO22=&II 	//D#D00fEErK   c                 :    t          | j        | j        dg          S )Nr   )rw   r   r   rk   s    rI   r   z'StandaloneHTMLBuilder.create_build_info   s    di&:::rK   c                      fd j         j        D             t          j        t          d j         j        dd          t          j        t          j        d j         j        d          gz   }|D ]}t          j        |          r|c S d S )Nc                 R    g | ]#}t          j        |j        j        d d          $S )LC_MESSAGES	sphinx.js)r   joinr   language)rG   dirrk   s     rI   
<listcomp>z>StandaloneHTMLBuilder._get_translations_js.<locals>.<listcomp>   sC     : : : iT[%9 -{< < : : :rK   rU   r   r   zshare/sphinx/locale)	r   locale_dirsr   r   r   r   sysprefixisfile)rk   
candidatesjsfiles   `  rI   _get_translations_jsz*StandaloneHTMLBuilder._get_translations_js   s    : : : :!%!8: : : iXt{7K -{< <i
,A $ 4kC CDD
 ! 	 	F{6"" trK   c                 z    | j         j        | j         j        S | j        r| j                            dd          S dS )Nthemerd   zdefault.css)r   
html_styler   
get_configr   s    rI   _get_style_filenamez)StandaloneHTMLBuilder._get_style_filename  sA    ;! 	!;))Z 	!:((,??? =rK   c                 2    | j         j        | j         j        fS rE   )r   
html_themehtml_theme_optionsr   s    rI   get_theme_configz&StandaloneHTMLBuilder.get_theme_config  s    {%t{'EEErK   c                 *   t          | j                  }|                                 \  }}|                    |          | _        |                                | _        |                                  | j        	                    | | j                   d S rE   )
r,   r   r   creater   copytheme_optionscreate_template_bridge	templatesr   )rk   theme_factory	themenamethemeoptionss       rI   r   z$StandaloneHTMLBuilder.init_templates  s    (22"&"7"7"9"9	<")))44
)..00##%%%D$*-----rK   c                 t   | j         j        | j         j        }n&| j        r| j                            ddd          }nd}t	          d|          | _        | j        r| j                            ddd           }nd }|4t	          d|          | _        | j                            ddd	
           d S d | _        d S )Nr   pygments_stylenonesphinxr   pygments_dark_stylepygments_dark.cssz(prefers-color-scheme: dark)pygments_dark_css)mediaid)	r   r   r   r   r(   highlighterdark_highlighterr   add_css_file)rk   style
dark_styles      rI   r   z&StandaloneHTMLBuilder.init_highlighter  s    ;% 	K.EEZ 	J))'3CVLLEEE)&%88: 	..w8MtTTJJJ 	)$26:$F$FD!H!!"5(F%8 " : : : : : %)D!!!rK   c                 ^   g | _         |                     dd           |                     |                                 d           | j        j        j         D ]\  }} | j        |fi | |                     dd          D ])\  }}|                    dd            | j        |fi | *d S )Npygments.css   r`   r   r   r^      )r   r  r   r   registryr   ri   rk   r]   attrss      rI   r   z$StandaloneHTMLBuilder.init_css_files5  s    .3777$2244sCCC#x0: 	1 	1OHeDh00%0000#66{FKK 	1 	1OHeZ---Dh00%0000	1 	1rK   r]   kwargsc                     d|vrt          j        d|          }| j                            t	          |fi |           d S N://_static)	posixpathr   r   appendr[   rk   r]   r  s      rI   r  z"StandaloneHTMLBuilder.add_css_fileA  sL      	; ~i::Hj<<V<<=====rK   c                    g | _         |                     dddd           |                     dd           |                     dd           |                     d	d           |                     d
d           | j        j        j        D ]\  }} | j        |fi | |                     dd          D ])\  }}|                    dd            | j        |fi | *|                                 r|                     d           d S d S )Nzdocumentation_options.jsdocumentation_optionsr   r  )r   data_url_rootr^   z	jquery.jsr`   zunderscore.jsz'_sphinx_javascript_frameworks_compat.jszdoctools.jsjs_filesr   r^   r  translations.js)r   add_js_filer   r	  r  r   ri   r   r
  s      rI   r   z#StandaloneHTMLBuilder.init_js_filesG  sb   38O')C 	 	9 	9 	9 	s3333777BSQQQ555#x09 	0 	0OHeDX//////#66z6JJ 	0 	0OHeZ---DX//////$$&& 	0./////	0 	0rK   c                     |rd|vrt          j        d|          }| j                            t	          |fi |           d S r  )r  r   r   r  rt   r  s      rI   r  z!StandaloneHTMLBuilder.add_js_file\  sT     	;X- 	; ~i::H  H!?!?!?!?@@@@@rK   c                 6    | j         j        rt          S t          S rE   )r   html4_writerr>   r@   r   s    rI   default_translator_classz.StandaloneHTMLBuilder.default_translator_classb  s    ;# 	#!!""rK   c                    |                      dd          }||S t          | j        j        j                  }t          |          dk    r|d         S t          |          dk    r|                    d           |d         S d S )Nmath_rendererr   rf   r   rz   mathjax)r   rN   r   r	  html_inline_math_rendererslenremove)rk   r   	rendererss      rI   math_renderer_namez(StandaloneHTMLBuilder.math_renderer_namei  s    &&?? 	K TX.IJJI9~~" 	 |#Y1$   +++ |# trK   c              #     K   	 t          t          j        | j        d          d          5 }t                              |          }d d d            n# 1 swxY w Y   | j        |k    r.t                              d           | j	        j
        E d {V  d S nJ# t          $ r2}t                              t          d          |           Y d }~nd }~wt          $ r Y nw xY w| j        r| j                                        }nd}| j	        j
        D ]C}|| j	        j        vr t                              d|           |V  1|                     |          }	 t          j        |          }n# t(          $ r d}Y nw xY w	 t+          t          j        | j	                            |                    |          }||k    rt                              d|t/          j        |          t/          j        |          |t/          j        t          j        | j	                            |                                         |V  4# t          $ r Y Aw xY wd S )	N
.buildinfoutf-8r   z)[build target] did not match: build_info z"Failed to read build info file: %rr   z![build target] did not in env: %rz>[build target] targetname %r(%s), template(%s), docname %r(%s))openr   r   outdirrw   r   r   loggerdebugenv
found_docsr   warningr*   OSErrorr   newest_template_mtimeall_docsget_outfilenamegetmtimer   maxdoc2pathr   utcfromtimestamp)	rk   fp	buildinfor   template_mtimedocname
targetnametargetmtimesrcmtimes	            rI   get_outdated_docsz'StandaloneHTMLBuilder.get_outdated_docs}  s     	di\::WMMM /QS%NN2..	/ / / / / / / / / / / / / / / )+ HIII8........  	J 	J 	JNN2BCCSIIIIIIII 	 	 	D	 > 	!^AACCNNNx* 	 	Gdh// @'JJJ--g66J "mJ77       t}TX->->w-G-GHH-/ /k) 	"LLX" 1+>> 1.AA 1$-@Q@QRY@Z@Z2[2[\\   "MMM   /	 	se   )B AB AB A:B 
C #(CC C E..E=<E=CI
IIc                 4    | j         j        | j         j        z   S rE   )r   html_extra_pathhtml_static_pathr   s    rI   get_asset_pathsz%StandaloneHTMLBuilder.get_asset_paths  s    {*T[-IIIrK   nodec                     |ddiS t          d          }|                    |           | j                            |           | j                                         | j        j        j        S )z$Utility: Render a lone doctree node.Nfragmentr   z<partial node>)r2   r  r   
set_sourcepublishr   parts)rk   rD  docs      rI   render_partialz$StandaloneHTMLBuilder.render_partial  sm     	$##+,,

4""3'''!!!%++rK   docnamesc                 l
   d | _         | j        r_ddlm} | j        j        p| j        j        } || j        || j        j        | j        j	                  | _         | 
                    |           t          |           | _        t          j                    5  t          j        dt                      t#          | j        j        | j        fd                                          | _        d d d            n# 1 swxY w Y   t+          | j        j                  | j        _        g | _        | j        j        }|rt5          | j        j                  D ]}| j        j        |         }|j        D ]m}|j        d|j        }t=          |t>                    r||vr- ||                                           \  }	}
|	r| j        !                    |||	|
f           n| j        j"        }|0tG          |ptI          d          | j        j        	          | _%        nd | _%        | j        j&        pd
}| j        j'        pd
}tQ          |          stS          j*        |          }tQ          |          stS          j*        |          }| j        +                                | _,        g }| j-        r3|!                    dtI          d          dtI          d          f           | j        D ]1\  }}}}|j.        r#|!                    ||j/        d
|j.        f           2t?          | j0                  | _1        t?          | j2                  | _3        i d| j4        d| j        j5        dtl          7                    d
| j        j8                  d| j        j9        d| j%        d| j        j:        d| j        j;        d| j        j;        d| j        j<        d| j        j=        d| j        j>        d| j        j?        d| j        j@        d| j        jA        d| j        jB        d| j        jC        d| j        jD        | jE        | jF        | j0        t          | j        j                  | j2        t          t          t          jK        d d          | L                                || j        g ||| j        jM         d!| _N        | jO        rS| jN        P                    d" | jO        Q                    | jR                  S                                D                        | jN        P                    | j        jT                   d S )#Nr   )IndexBuilderignore)categoryT)defaults
componentsread_config_filesrW   z	%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_search_summaryshow_sphinx
has_sourceshow_sourcesourcelink_suffix   )r   r   r   r   r   sphinx_versionsphinx_version_tupledocutils_version_infor  rellinksbuilderparentslogofaviconhtml5_doctypec              3   *   K   | ]\  }}d |z   |fV  dS )theme_Nrr   )rG   keyvals      rI   rJ   z8StandaloneHTMLBuilder.prepare_writing.<locals>.<genexpr>%  sH       &D &D*43C%&D &D &D &D &D &DrK   )Uindexersearchsphinx.searchrN  r   html_search_languager   r-  html_search_optionshtml_search_scorerload_indexerr?   	docwriterwarningscatch_warningsfilterwarningsDeprecationWarningr   r   r   docsettingsr   html_compact_listscompact_listsr   html_domain_indicesrQ   domainsindicesr   rL   rN   generater  html_last_updated_fmtr4   r)   r[  	html_logohtml_faviconr-   r   basenamecollect_relations	relationsr   	shortname	localnamer   _script_filesr   
_css_filesrW  rX  return_codes_resubrY  rZ  r\  r^  html_use_opensearch
html_titlehtml_short_titlehtml_show_copyrighthtml_show_search_summaryhtml_show_sphinxhtml_copy_sourcehtml_show_sourcelinkhtml_sourcelink_suffixr   r   rY   r   ri  r   __version_info__r   r  globalcontextr   updateget_optionsr   rO   html_context)rk   rL  rN  langindices_configdomain_namedomainindexcls	indexnamecontentcollapselufmtro  rp  rl  _content	_collapses                    rI   prepare_writingz%StandaloneHTMLBuilder.prepare_writing  s   ; 	(222222;3Kt{7KD'<$(,(G(,(FH HDL h'''#D))$&& 	= 	=#H7IJJJJ %1* N,"&%( %( %( );(:(<(< 		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= *.dk.L)M)M& !8 	F%dh&677 
F 
F!%!1+!> & F FH+1;;; FI!.$77 %$N: %$(0(8(8(A(A(C(C%GX F+22&'8DF F FF 1 	% +E,CQ{^^59[5I!K !K !KD !%D {$*+*0bT{{ 	'=&&DW~~ 	-mG,,G335546> 	OOOZ?););S!G**MNNN8<8K 	: 	:4Ix9! :H,>!#X%7!9 : : : "$"344t~..!
!
t{*!
 **2t{/BCC!
 t{*	!

 D-!
 .!
 $+.!
 ,!
 dk=!
 /!
 $+6!
 dk=!
 "4;#G!
 4;7!
 $+6!
  4;;!!
"  !C#!
$  ?+ -6t{7KLL1$2%-%>rr%B--// y!%!99A!
 !
 !
D : 	D%% &D &D
&&t'9::@@BB&D &D &D D D D 	!!$+":;;;;;s   AC66C:=C:r;  bodymetatagsc                    dx}}g }| j         d         dd         }| j                            |          }| j        j        }	|r|d         r	 |                     ||d                   |                     |	|d                            d         d}|                    |d         |d         dt          d          f           n# t          $ r d}Y nw xY w|r|d         r	 |                     ||d                   |                     |	|d                            d         d}|                    |d         |d         d	t          d
          f           n# t          $ r d}Y nw xY w|r|d         r	 |                    |                     ||d                   |                     |	|d                            d         d           n# t          $ r Y nw xY w| j                            |d                   }|r|d         |r|
                                 |                                 | j        j                            |          }
|
r|                     |
          d         nd}| j                            |d          t          |          d         }| j        j        r%||z   }|| j        j        k    r|| j        j        z  }nd}| j        j                            |          }t'          | j                                      ||           }|                     |          d         }||||||||||| j        j        |         dk    |dS )z1Collect items for the template context of a page.Nrl  rz   rg   )linkrg   Nnextrf   Ppreviousr   r   FrF  )rn  prevr  rg   metar  r  rl  
sourcenametocdisplay_tocpage_source_suffix)r  r  getr-  titlesget_relative_urirK  r  r)   KeyErrorpopreverse
longtitlesr6  r"  r   r  r  metadatar%   get_toc_fortoc_num_entries)rk   r;  r  r  r  r  rn  rl  relatedr  
title_noderg   source_suffixr  r  self_tocr  s                    rI   get_doc_contextz%StandaloneHTMLBuilder.get_doc_context*  s    t%j1!!!4.$$W-- 	wqz 	 11'71:FF!00
1CDDWM  T']C6 KLLLL    
	wqz 
		 11'71:FF!00
1CDDWM  T']C: OPPPP      	5'!* 	5!227GAJGG"11&2DEEgNP PQ Q Q Q    n((44G  	5'!* 	5  	 KKMMM X(,,W55
<FN##J//88B ))'599#g,,--H ;' 	 =0J BB Adk@@
J x $$W-- 48$$00$??!!(++J7   $ H4W=A"/
 
 	
s9   A6C CC!A6E E'&E'5AG 
GGr   c                    t          d          }| j        |_        | j        j                            |i           | _        | j        j                            |i           | _        t          | 
                    |          d          | _        t          | 
                    |          d          | _        || _        | j                            ||           | j                                         | j        j        d         }| j        j        }|                     |||          }|                     |||           d S )Nr(  r   r   
_downloadsrF  )	event_arg)r   r  r   r-  toc_secnumbersr  r   toc_fignumbers
fignumbersr<   get_target_urir   dlpathr   r}  r   assemble_partsrI  
clean_metar  handle_page)rk   r;  r   r   r  r  ctxs          rI   	write_doczStandaloneHTMLBuilder.write_docz  s   "G444+(155grBB(155grBB#D$7$7$@$@)LL"4#6#6w#?#?NN&Wk222%%'''~#J/>,""7D(;;#99999rK   c                 4   t          |                     |          | j                  | _        |                     |           | j        j                            |          }|r|                     |          d         nd}| 	                    |||           d S )Nrg   r   )
r<   r  r   r   post_process_imagesr-  r  r  rK  
index_page)rk   r;  r   r  rg   s        rI   write_doc_serializedz*StandaloneHTMLBuilder.write_doc_serialized  s    #D$7$7$@$@$-PP  )))X(,,W55
<FN##J//88B%00000rK   c                    | j                             | j                   | j                             | j                   | j                             | j                   | j                             | j                   | j                             | j                   | j                             | j                   | j                             | j                   | j                             | j	                   | 
                                 d S rE   )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   s    rI   finishzStandaloneHTMLBuilder.finish  s    ""4#3444""4#ABBB""4#<===""4#8999""4#;<<<""4#9:::""4#8999""4#7888 	rK   zgenerating indicesc                 d    | j         r|                                  |                                  d S rE   )r   write_genindexwrite_domain_indicesr   s    rI   r  z!StandaloneHTMLBuilder.gen_indices  s:     > 	"!!! 	!!#####rK   c                     | j                             d          D ]"}|D ]\  }}}|                     |||           #d S )Nhtml-collect-pages)eventsemitr  )rk   pagelistpagenamecontexttemplates        rI   r  z/StandaloneHTMLBuilder.gen_pages_from_extensions  sb    (()=>> 	> 	>H/7 > >+'8  7H====>	> 	>rK   zwriting additional pagesc                    | j         j                                        D ];\  }}t                              |dz   d           |                     |i |           <| j        r3t                              dd           |                     di d           | j         j        rY| j        rTt                              dd           t          j	        | j
        dd	          }|                     d
i d	|           d S d S d S )N Tnonlzsearch rw  zsearch.htmlzopensearch r  zopensearch.xml
opensearch)outfilename)r   html_additional_pagesrO   r+  infor  rw  r  r   r   r*  )rk   r  r  fns       rI   r  z*StandaloneHTMLBuilder.gen_additional_pages  s    #'+"C"I"I"K"K 	5 	5HhKK3TK222Xr84444 ; 	:KK	K---Xr=999 ;* 	Qt{ 	QKKDK1114;	3CDDB\2/?RPPPPP	Q 	Q 	Q 	QrK   c                 2   t          | j                                      |           }g }|D ]1\  }}|                    t	          d |D                                  2||| j        j        d}t                              dd           | j        j        rj| 	                    d|d           | 	                    d|d	           t          ||          D ])\  \  }}}||||d
}| 	                    d|z   |d           *d S | 	                    d|d	           d S )Nc              3   H   K   | ]\  }\  }}}d t          |          z   V  dS )rf   N)r"  )rG   r)   subitemss      rI   rJ   z7StandaloneHTMLBuilder.write_genindex.<locals>.<genexpr>  sT       #G #G':q*:1h $%s8}}#4 #G #G #G #G #G #GrK   )genindexentriesgenindexcountssplit_indexz	genindex Tr  rT  zgenindex-split.htmlzgenindex-allzgenindex.html)rt  entriescountr  z	genindex-zgenindex-single.html)r$   r-  create_indexr  sumr   html_split_indexr+  r  r  zip)	rk   rT  indexcounts_kr  genindexcontextrt  r  r  s	            rI   r  z$StandaloneHTMLBuilder.write_genindex  s     ))66t<<# 	H 	HKBs #G #G>E#G #G #G  G  G H H H H  ();7
 

 	Kd+++;' 	KZ24 4 4^_,. . .),X{)C)C 9 9%g!g*24 4  s!2C!79 9 9 99 9 Z/JJJJJrK   c                     | j         D ]H\  }}}}|j        ||d}t                              |dz   d           |                     ||d           Id S )N)
indextitler  collapse_indexr  Tr  zdomainindex.html)r   r  r+  r  r  )rk   r  r  r  r  indexcontexts         rI   r  z*StandaloneHTMLBuilder.write_domain_indices  s{    6:6I 	J 	J2Ix(&0""* L
 KK	CdK333Y6HIIII	J 	JrK   c           	         | j         r<t          | j        j                  j        }t          t          j        | j        | j	                             t          | j         t          d          dt          | j                   | j        j        |          D ]}| j         |         }	 t          t          j        | j        |          t          j        | j        | j	        |                     W# t           $ rK}t"                              t          d          t          j        | j        |          |           Y d }~d }~ww xY wd S d S )Nzcopying images... brownstringify_funczcannot copy image file %r: %s)imagesr#   r   r-  get_original_image_urir:   r   r   r*  r   r1   r*   r"  	verbosityr9   srcdirr   r+  r/  )rk   r  srcdesterrs        rI   r  z&StandaloneHTMLBuilder.copy_image_files  sn   ; 	E)$(,77NNdiT];;<<<&t{B7K4L4Lg'*4;'7'79K6DF F F 	E 	E {3'ETYt{C88!Yt{DM4HHJ J J J  E E ENN2&E#F#F#'9T[##>#>E E E E E E E EE	E 	E	E 	Es   &AC--
E7AD==Ec           	          dt           dt           f fd} j        j        rJt          t	          j         j        d                     t           j        j        t          d          dt           j        j                   j
        j        |          D ]}	 t	          j         j        d j        j        |         d                   }t          t	          j        |                     t          t	          j         j        |          |           ~# t          $ rK}t                               t          d	          t	          j         j        |          |           Y d }~d }~ww xY wd S d S )
Nrx   rB   c                 .    t          j        |           S rE   )r   r  )rx   rk   s    rI   
to_relpathz=StandaloneHTMLBuilder.copy_download_files.<locals>.to_relpath  s     a000rK   r  zcopying downloadable files... r  r  rf   z$cannot copy downloadable file %r: %s)rR   r-  dlfilesr:   r   r   r*  r1   r*   r"  r   r  dirnamer9   r  r0  r+  r/  )rk   r  r  r  r  s   `    rI   r  z)StandaloneHTMLBuilder.copy_download_files  s   	1# 	1# 	1 	1 	1 	1 	1 	1 8 	Edi\::;;;&tx'7<\9]9]'.DH4D0E0EtxGY6@B B B 	E 	EE9T[,@PQT@UVW@XYYDdl400111TYt{C88$???? E E ENN2&L#M#M#'9T[##>#>E E E E E E E EE	E 	E	E 	Es   A:D
E*AE%%E*c                    t          t          j        | j        dd          dd          5 }|                    | j                                                   ddd           n# 1 swxY w Y   | j        rrt          t          j        | j        dd          dd          5 }|                    | j                                                   ddd           dS # 1 swxY w Y   dS dS )z!create a style file for pygments.r  r  wr(  r   Nr   )r)  r   r   r*  r   r   get_stylesheetr  r   s     rI   create_pygments_style_filez0StandaloneHTMLBuilder.create_pygments_style_file  s   $)DKNCCS"$ $ $ 	7'(GGD$3355666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7   	@diY8KLLc&( ( ( @+,-<<>>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@s#   -A%%A),A)"-CC #C c                     |                                  }|r+t          |t          j        | j        dd                     dS dS )z(Copy a JavaScript file for translations.r  r  N)r   r9   r   r   r*  rk   r   s     rI   copy_translation_jsz)StandaloneHTMLBuilder.copy_translation_js  sO    **,, 	SVTYt{I?PQQRRRRR	S 	SrK   c                    | j         t          | j         d          rY| j                                         D ]=}t          |t	          j        | j        dt	          j        |                               >dS | j                                         }|r-t          |t	          j        | j        dd                     dS dS dS )z#Copy a JavaScript file for stemmer.Nget_js_stemmer_rawcodesr  z_stemmer.js)	rv  hasattrr)  r9   r   r   r*  r  get_js_stemmer_rawcoder&  s     rI   copy_stemmer_jsz%StandaloneHTMLBuilder.copy_stemmer_js  s    < 	Wt|%>?? W"lBBDD _ _FVTYt{It}U[G\G\%]%]^^^^_ _ <<>> WVTYt{I}%U%UVVVVV	W 	WW WrK   r  c           	         dt           dt          dd fd}| j        ro| j                                        d d d         D ]N}t	          t          j        |d          t          j        | j        d          t          || j	        |           Md S d S )	Nr]   errorrB   c                 X    t                               t          d          | |           d S Nz1Failed to copy a file in html_static_file: %s: %rr+  r/  r*   r]   r.  s     rI   onerrorz>StandaloneHTMLBuilder.copy_theme_static_files.<locals>.onerror%  2    NN2QRR#U, , , , ,rK   staticr  )excludedr  rendererr3  )
rR   r   r   get_theme_dirsr3   r   r   r*  r6   r   )rk   r  r3  entrys       rI   copy_theme_static_filesz-StandaloneHTMLBuilder.copy_theme_static_files$  s    	,c 	,) 	, 	, 	, 	, 	, : 	E2244TTrT: E E49UH559T[)<<$,g$(NGE E E E E	E 	EE ErK   c           	         dt           dt          dd fd}t          | j        j        dgz             }| j        j        D ]L}t          t          j        | j	        |          t          j        | j
        d          ||| j        |           Md S )Nr]   r.  rB   c                 X    t                               t          d          | |           d S r0  r1  r2  s     rI   r3  z=StandaloneHTMLBuilder.copy_html_static_files.<locals>.onerror1  r4  rK   z**/.*r  )r  r8  r3  )rR   r   r7   r   exclude_patternsrB  r3   r   r   confdirr*  r   )rk   r  r3  r7  r:  s        rI   copy_html_static_filesz,StandaloneHTMLBuilder.copy_html_static_files0  s    	,c 	,) 	, 	, 	, 	, 	, 4;77)CDD[1 	\ 	\Etyu55yi884>SZ\ \ \ \ \	\ 	\rK   c                     | j         j        ret          | j         j                  sNt          t	          j        | j        | j         j                  t	          j        | j        d                     d S d S d S Nr  )r   r  r-   r3   r   r   r?  r*  r   s    rI   copy_html_logoz$StandaloneHTMLBuilder.copy_html_logo;  sy    ;  	:t{/D)E)E 	:tyt{/DEEyi88: : : : :	: 	: 	: 	:rK   c                     | j         j        ret          | j         j                  sNt          t	          j        | j        | j         j                  t	          j        | j        d                     d S d S d S rB  )r   r  r-   r3   r   r   r?  r*  r   s    rI   copy_html_faviconz'StandaloneHTMLBuilder.copy_html_favicon@  sy    ;# 	:E$+2J,K,K 	:tyt{/GHHyi88: : : : :	: 	: 	: 	:rK   c                    	 t          t          d                    5  t          t          j        | j        d                     | j                                        }| j        ,|	                    | j        
                                           |                                  |                                  |                                  |                     |           |                     |           |                                  |                                  d d d            d S # 1 swxY w Y   d S # t$          $ r3}t&                              t          d          |           Y d }~d S d }~ww xY w)Nzcopying static filesr  zcannot copy static file %r)r0   r*   r:   r   r   r*  r  r   rv  r  context_for_searchtoolr$  r'  r,  r;  r@  rC  rE  r0  r+  r/  )rk   r  r  s      rI   r  z'StandaloneHTMLBuilder.copy_static_filesE  s   	B!"%;"<"<== ) )$)DK;;<<< ,1133< JNN4<#F#F#H#HIII//111((***$$&&&,,W555++G444##%%%&&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )  	B 	B 	BNN2:;;SAAAAAAAAA	Bs;   D: DD- D: -D11D: 4D15D: :
E7(E22E7c                    	 t          t          d                    5  t          | j        j                  }| j        j        D ]2}t          j        | j        |          }t          || j
        |           3	 ddd           dS # 1 swxY w Y   dS # t          $ r3}t                              t          d          |           Y d}~dS d}~ww xY w)zcopy html_extra_path files.zcopying extra filesNzcannot copy extra file %r)r0   r*   r7   r   r>  rA  r   r   r?  r3   r*  r0  r+  r/  )rk   r7  
extra_pathr:  r  s        rI   r  z&StandaloneHTMLBuilder.copy_extra_filesY  s,   	A!"%:";";<< = ="4;#?@@"&+"= = =J IdlJ??Eudk8<<<<== = = = = = = = = = = = = = = = = =
  	A 	A 	ANN29::C@@@@@@@@@	As;   B AB8B B		B B	B 
C(C

Cc                 B   	 t          t          j        | j        d          dd          5 }| j                            |           d d d            d S # 1 swxY w Y   d S # t          $ r3}t                              t          d          |           Y d }~d S d }~ww xY w)Nr'  r"  r(  r   z#Failed to write build info file: %r)
r)  r   r   r*  r   r   r0  r+  r/  r*   )rk   r8  r   s      rI   r  z%StandaloneHTMLBuilder.write_buildinfod  s    	Kdi\::C'RRR )VX$$R((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 	K 	K 	KNN2CDDcJJJJJJJJJ	Ks:   *A! AA! AA! AA! !
B+(BBc                 J    | j         r| j                                          d S d S rE   )r   cleanupr   s    rI   rL  zStandaloneHTMLBuilder.cleanupk  s0    : 	!J     	! 	!rK   c                 2   t          j        | |           | j        j        r| j        r|                    t
          j                  D ]͊t          fddD                       st          j	        t
          j
                  r>dd         v rId         }t          j
        ddd          }|| j        v r)t          j        | j        | j        |                   |d	<   n||d	<                       |           |                               d
S d
S d
S )zlPick the best candidate for an image and link down-scaled images to
        their high res version.
        c              3       K   | ]}|v V  	d S rE   rr   )rG   rt  rD  s     rI   rJ   z<StandaloneHTMLBuilder.post_process_images.<locals>.<genexpr>x  s'      QQSC4KQQQQQQrK   )scalewidthheightzno-scaled-linkclassesurir   T)internalrefuriN)r   r  r   html_scaled_image_linkfindallr   imageanyrL   parent	referencer  r  r   r   replace_selfr  )rk   r   rS  r[  rD  s       @rI   r  z)StandaloneHTMLBuilder.post_process_imagesp  sP    	#D'222;- 	'$2M 	'44 ' 'QQQQ4PQQQQQ 	 U_== %i8 5k!OBTBBB	$+% .*3.9=S9I+K +KIh'' +.Ih'!!),,,  &&&&+	' 	' 	' 	'' 'rK   c                    t          | j        j                  t          |          z
  }	 t          j        | j        | j                  }| j        rJt          |d          5 }| j	        
                    || j                   d d d            n# 1 swxY w Y   nHt          |d          5 }| j	        
                    || j                   d d d            n# 1 swxY w Y   n@# t          t          f$ r, |r't                              t!          d                     Y nw xY w| j	                            |           d S )Nr(  r   rbzcsearch index couldn't be loaded, but not all documents will be built: the index will be incomplete.)setr-  r2  r   r   r*  searchindex_filenameindexer_dumps_unicoder)  rv  r   r   r0  r   r+  r/  r*   prune)rk   rL  keepsearchindexfnftfbs         rI   r|  z"StandaloneHTMLBuilder.load_indexer  s   48$%%H5	2 Idk43LMMM) ?-'::: ?bL%%b$*=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -.. ?"L%%b$*=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$ 	2 	2 	2 2r #0  1  1 2 2 2	2 	4     sY   7C$ "!BC$ BC$ BC$ +!CC$ CC$ C C$ $:D! D!r  rg   c                 2   | j         |r| j                            |d           }| j        j                            |i           }d|v r,| j                             ||dt          d                     d S | j                             ||||           d S d S d S )N)basenosearchr   )rv  r-  r6  r  r  feedr2   )rk   r  r   rg   r]   r  s         rI   r  z StandaloneHTMLBuilder.index_page  s    < 	F 	Fx(((==Hx(,,Xr::HX% F!!(Hb,r:J:JKKKKK!!(HeWEEEEE	F 	F 	F 	FrK   r  c                     d|vrd|d<   |                     d          dk    r|                    d           |                      t          | j                  j        || |fi |          d         S )NincludehiddenFmaxdepthr   rF  )r  r  rK  r%   r-  get_toctree_for)rk   r;  r  r  s       rI   _get_local_toctreez(StandaloneHTMLBuilder._get_local_toctree  s    &( 	,&+F?#::j!!R' 	#JJz"""""#D748#4#4#DT8$/ $/'-$/ $/ 0 00:< 	<rK   c                 `    t          j        | j        t          |          | j        z             S rE   )r   r   r*  r;   r   )rk   r  s     rI   r3  z%StandaloneHTMLBuilder.get_outfilename  s%    ygh&7&7$/&IJJJrK   r  c                    dt           dt          fd}d }d }d }| j        j        dk    rW	 | j        j                            dd          }|rd |                    d          D             }nQ# t          $ r g d	}Y nAw xY w| j                            ddd           }|rd
 |                    d          D             }| 	                    dd          }|
                                D ]\\  }	}
t          ||	          rG|rA ||	          r6 ||          r*t                              t          d          |||	           X|	}|
}]|	 ||d<   ||d<   d S )NpatternrB   c                 :     t           fddD                       S )Nc              3       K   | ]}|v V  	d S rE   rr   )rG   charrr  s     rI   rJ   zKStandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard.<locals>.<genexpr>  s'      994tw999999rK   z*?[)rY  )rr  s   `rI   has_wildcardz8StandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard  s&    99995999999rK   	alabasterr   sidebarsc                 6    g | ]}|                                 S rr   r   rG   r   s     rI   r   z6StandaloneHTMLBuilder.add_sidebars.<locals>.<listcomp>  s     [[[

[[[rK   ,)z
about.htmlznavigation.htmlzrelations.htmlzsearchbox.htmlzdonate.htmlc                 6    g | ]}|                                 S rr   rz  r{  s     rI   r   z6StandaloneHTMLBuilder.add_sidebars.<locals>.<listcomp>  s     WWWTDJJLLWWWrK   r   z8page %s matches two patterns in html_sidebars: %r and %rcustomsidebar)rR   r   r   r   r   r  r   r   r   r   rO   r8   r+  r/  r*   )rk   r  r  rv  rx  matchedr~  theme_default_sidebarshtml_sidebarsrr  patsidebarss              rI   add_sidebarsz"StandaloneHTMLBuilder.add_sidebars  s   	:# 	:$ 	: 	: 	: 	:  :?k) 	X=)-):)>)>w
)S)S&) \[[9O9U9UVY9Z9Z[[[H = = == = ==
 &*Z%:%:7JPT%U%U"% XWW5K5Q5QRU5V5VWWW //
FCC$1$7$7$9$9 	' 	' G['** ' 	!#|G,, !'<00 G"NN2 /I ,J ,J+3WgG G G
 !!& 	"J,Os   AA, ,A=<A=typc                 0    t          |          | j        z   S rE   )r   r   )rk   r;  r  s      rI   r  z$StandaloneHTMLBuilder.get_target_uri  s    W~~ 000rK   	page.htmladdctxtemplatenamer  r  c           	           j                                         }x|d<   |d<    j        j        |d<                                  }|                    dd          d         } j        j        r+t          j         j        j         j	        z             |d<   nd |d<   d|fd	t          d
t          dt          dt          f fd}||d<   dt          dt          f fd}	|	|d<    fd|d<                        |           |                    |            j         j        d d <    j         j        d d <                        |||            j                            d|||          }
|
r|
}	 t+          t-          |d                   d           |d<   n# t.          $ r Y nw xY w	 t+          t-          |d                   d           |d<   n# t.          $ r Y nw xY w	  j                            ||          }nh# t4          $ r, t6                              t;          d                     Y d S t<          $ r'}t?          t;          d          |fz            |d }~ww xY w|s                                }tC          tE          j#        |                     	 tI          |d|d         d          5 }|%                    |           d d d            n# 1 swxY w Y   n@# tL          $ r3}t6                              t;          d          ||           Y d }~nd }~ww xY w j'        r|(                    d           r{tE          j         j)        d!tU          |d                              }tC          tE          j#        |                     tW           j,        -                              |           d S d S d S )"Nr  current_page_namer   #rf   r   pageurlFotheruriresourcebaseurirB   c                     |rd| v r| S |s                     |           } t          ||           pd}|dk    r	j        s|}|S )Nr  r  )r  r<   allow_sharp_as_current_path)r  r  r  rS  rk   s       rI   pathtoz1StandaloneHTMLBuilder.handle_page.<locals>.pathto  sk     9EX- 9 9..x88w118SCcz $"B JrK   r  r   c                     | j         j        v rdS | dk    r	j        rdS | dk    r                    dd          rdS dS )NTrw  rT  r   r   F)r-  r2  rw  r   )r   rk   s    rI   hasdocz1StandaloneHTMLBuilder.handle_page.<locals>.hasdoc  sc    tx(( t! dk t# (?(?V(T(T t5rK   r  c                        j         fi | S rE   )ro  )r  r  rk   s    rI   <lambda>z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>  s    *A$*A(*U*Uf*U*U rK   toctreehtml-page-contextr   c                     | j         S rE   r`   )jss    rI   r  z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>#  s
    SUS^ rK   )rt  r   c                     | j         S rE   r`   )csss    rI   r  z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>,  s    cl rK   za 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   errorszerror writing file %s: %sr  _sources).r  r   r   html_output_encodingr  rsplithtml_baseurlr  r   r   rR   r   r  r  r  r   r  r   update_page_contextr   emit_firstresultrQ   rN   AttributeErrorr   renderUnicodeErrorr+  r/  r*   r   r'   r3  r:   r   r   r)  r   r0  
copysourcer  r*  r;   r9   r-  r6  )rk   r  r  r  r  r  r  default_baseurir  r  newtmploutputr   rx   r  source_names   ``              rI   r  z!StandaloneHTMLBuilder.handle_page  s    %%''5==J#12+:J--h77 *00a88;;# 	"&^DK,D,4t,FH HC	NN "C	N38 		 		S 		D 		3 		]` 		 		 		 		 		 		 H	 	 	 	 	 	 	 	 HUUUUUI(C(((

6  $1!!! Oqqq  <iHHH(++,?,8#yJ J 	#"L	"(c..A)B)BH^H^"_"_"_C 	 	 	
 D		%d3{+;&<&<BZBZ[[[C 	 	 	D			7^**<==FF 	 	 	NN2 G H HIQS S S FF 	7 	7 	7R YZZ&_- . .367	7  	9..x88K$,{++,,,	Nk3Z02 2 2  56                               	N 	N 	NNN29::KMMMMMMMM	N? 	?sww|44 	?)DK$+C,=$>$>@ @Kdl;//000TX&&x00+>>>>>	? 	? 	? 	?s~   6(F 
F,+F,0(G 
G&%G&*H 2I+;	I+"I&&I+'K.  K"K. "K&&K. )K&*K. .
L+8)L&&L+c                     d S rE   rr   )rk   r  r  r  r  s        rI   r  z)StandaloneHTMLBuilder.update_page_contextL  s    rK   c                     | j         r| j                            | j                   | j                            | j                   d S rE   )rv  r  r  dump_search_indexdump_inventoryr   s    rI   r  z#StandaloneHTMLBuilder.handle_finishP  sF    < 	?&&t'=>>>""4#677777rK   zdumping object inventoryc                 v    t          j        t          j        | j        t
                    | j        |            d S rE   )r5   r   r   r   r*  INVENTORY_FILENAMEr-  r   s    rI   r  z$StandaloneHTMLBuilder.dump_inventoryU  s/    49T[2DEEtxQUVVVVVrK   c                    t          t          d          | j                                        z            5  | j                            | j        j                   t          j        | j	        | j
                  }| j        rNt          |dz   dd          5 }| j                            || j                   d d d            n# 1 swxY w Y   nKt          |dz   d          5 }| j                            || j                   d d d            n# 1 swxY w Y   t          j        |dz   |           d d d            d S # 1 swxY w Y   d S )Nzdumping search index in %sz.tmpr"  r(  r   wb)r0   r*   rv  labelrb  r-  r2  r   r   r*  r`  ra  r)  r   r   osrX   )rk   rd  re  rf  s       rI   r  z'StandaloneHTMLBuilder.dump_search_indexY  s   b!=>>ASASAUAUUVV 	> 	>Ltx0111 Idk43LMMM ) ?-&0#HHH ?BL%%b$*=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -&0$77 ?2L%%b$*=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J}v-}===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sZ   A E !C8E C	E C	E #!DE D	E D	E  EE)rB   N)TrE   )r  NN)frl   rm   rn   ro   r   formatr*   epilogr  allow_parallelr   r   r+   r   r   rp   ra  rV  supported_image_typessupported_remote_imagessupported_data_uri_imagesr`  add_permalinksr  rW  rw  r   download_supportr   rR   r   r
   r   r   r!   r"   r   r   r   r   rw   r   r   r   r   r   r   r   r   r  r   r  propertyr   NodeVisitorr  r%  r	   r?  rC  r   rK  r   r  r  documentr  r  r  r0   r  r  r  r  r  r  r  r$  r'  r,  r;  r@  rC  rE  r  r  r  rL  r  r   r|  r  ro  r3  r  r  r  r  r  r  r  __classcell__)r   s   @rI   r   r      s@          DFR344FJNJK"NC""" !8 8 8" $+N"&HFIGS^`NDsDKeCjAQ<Q6R1SUYYZ[```F t      ,F F F F4;9 ; ; ; ;c    !S ! ! ! !F%T	"2 F F F F. . . .) ) ) ).
1 
1 
1 
1>S >C >D > > > >0 0 0 0*AC A3 A4 A A A A #$u/@*A # # # X# C    X&,8C= , , , ,\Jc J J J J	,4 	,DcN 	, 	, 	, 	,o<C o<T o< o< o< o<bN
s N
# N
 N
cSVh N
 N
 N
 N
`: :u~ :$ : : : :"1C 1%. 1T 1 1 1 1    bb-..//$ $ $ 0/$> > > > bb34455Q Q Q 65Q"K K K K:J J J JE E E EE E E E$	@ 	@ 	@ 	@S S S S	W 	W 	W 	W
Et 
E 
E 
E 
E 
E	\d 	\t 	\ 	\ 	\ 	\: : : :
: : : :
B B B B(	A 	A 	A 	AK K K K! ! ! !
'4 'D ' ' ' ':!Xc] !t ! ! ! !$F3 F F FPT F F F F< <# < <PS <X[ < < < <K K K K K K0-S 0-t 0- 0- 0- 0- 0-h1 1c 1 1s 1 1 1 1 LW>B_? _?C _? _?S _?!$_?8;_?GK_? _? _? _?BC s !%25:>   8 8 8 8
 bb34455W W W 65W> > > > > > > >rK   r   r   r   c                 0   g }|j         D ]}t          |t                    r|                    |i f           /	 |\  }}|                    ||f           M# t          $ r+ t
                              t          d          |           Y w xY w||_         dS )z?This converts string styled html_css_files to tuple styled one.zinvalid css_file: %r, ignoredN)html_css_filesrL   rR   r  r   r+  r/  r*   )r   r   r  r:  r]   r  s         rI   convert_html_css_filesr  h  s    -/N& 	 	eS!! 	!!5"+...."'%%%x&78888   r"ABBEJJJ +F   A2BBc                 0   g }|j         D ]}t          |t                    r|                    |i f           /	 |\  }}|                    ||f           M# t          $ r+ t
                              t          d          |           Y w xY w||_         dS )z>This converts string styled html_js_files to tuple styled one.zinvalid js_file: %r, ignoredN)html_js_filesrL   rR   r  r   r+  r/  r*   )r   r   r  r:  r]   r  s         rI   convert_html_js_filesr  y  s    ,.M% 	 	eS!! 	  %----"'%$$h%67777   r"@AA5III )Fr  r  r  r  r   c                 d    |                     d          dt          dt          ffd}||d<   dS )zySet up css_tag() template helper.

    .. note:: This set up function is added to keep compatibility with webhelper.
    r  r  rB   c           	      0   g }t          | j                  D ]?}| j        |         }|.|                    |dt          j        |d          d           @|                    d | j        d          z             dd                    |          z  S )N="T"z	href="%s"r  z<link %s />r  )rQ   r\   r  r   escaper]   r   )r  r  rt  r   r  s       rI   css_tagz%setup_css_tag_helper.<locals>.css_tag  s    #.)) 	J 	JCN3'E J###t{5$/G/G/G/GHIII[66#,#F#F#FFGGGsxx..rK   r  N)r  r[   rR   )r   r  r  r  r   r  r  s         @rI   setup_css_tag_helperr    sT     [[""F/Z /C / / / / / / !GIrK   c                 d    |                     d          dt          dt          ffd}||d<   dS )zxSet up js_tag() template helper.

    .. note:: This set up function is added to keep compatibility with webhelper.
    r  r  rB   c           	      0   g }d}t          | t                    rt          | j                  D ]r}| j        |         }|a|dk    r|}|dk    r$|                    d dd          z             D|                    |dt          j        |d          d           s| j        r(|                    d	 | j        d          z             n#|                    d	 | d          z             |rd
d                    |          d|dS d|z  S )Nr   r  r  zdata-url_root="%s"Tr  r  r  zsrc="%s"z<script r  >z	</script>z<script>%s</script>)	rL   rt   rQ   r\   r  r   r  r]   r   )r  r  r  rt  r   r  s        rI   js_tagz#setup_js_tag_helper.<locals>.js_tag  s\   b*%% 	Abm,, R Rc* Rf} R$/ R%9FF2PT<U<U<U%UVVVV###t{5$7O7O7O7O%PQQQ{ NZ&&t*L*L*LLMMM LLffR$&?&?&??@@@ 	0 	0/2xxEE(4//rK   r  N)r  rt   rR   )r   r  r  r  r   r  r  s         @rI   setup_js_tag_helperr    sT     [[""F0: 0# 0 0 0 0 0 00 GHrK   c                 .   |                     d          }|                     d          }|r#t          |          s |d|z   d          |d<   n||d<   |                     d          }|r$t          |          s |d|z   d          |d<   d	S ||d<   d	S )
zSet up relative resource paths.r  rp  z_static/Tr  favicon_urlro  logo_urlN)r  r-   )r   r  r  r  r   r  rp  ro  s           rI   setup_resource_pathsr    s     [[""F kk)$$G )uW~~ )!'
W(<t!L!L!L!( ;;vD #E$KK #$fZ$%6FFF
"
rK   c                     | j         j        dk    rd S | j         j        }|t          t	          d                    || j        j        vrt          t	          d          |z            d S )Nr   zEMany math_renderers are registered. But no math_renderer is selected.z"Unknown math_renderer %r is given.)rm  r  r%  r&   r*   r	  r!  )r   r   s     rI   validate_math_rendererr    s    
{V# ;)D K" A B B C C 	C	S\<	< K"ABBTIJJJK KrK   c                 v   |j         dd         D ]'}t          j        t          j        | j        |                    }t          j        |          sCt                              t          d          |           |j         	                    |           t          j
        | j                  d         t          j
        |          d         k    rft          j        | j        |g          | j        k    rBt                              t          d          |           |j         	                    |           )dS )zCheck html_extra_paths setting.Nz'html_extra_path entry %r does not existr   z0html_extra_path entry %r is placed inside outdir)rA  r   normpathr   r?  existsr+  r/  r*   r#  
splitdriver*  
commonpath)r   r   r:  rI  s       rI   validate_html_extra_pathr    s   '* 1 1]49S[%#@#@AA
{:&& 	1NN2GHH%PPP"))%0000ocj))!,
0K0KA0NN 	1osz:6773:E	1NN2PQQSXYYY"))%0001 1rK   c                 v   |j         dd         D ]'}t          j        t          j        | j        |                    }t          j        |          sCt                              t          d          |           |j         	                    |           t          j
        | j                  d         t          j
        |          d         k    rft          j        | j        |g          | j        k    rBt                              t          d          |           |j         	                    |           )dS )z Check html_static_paths setting.Nz(html_static_path entry %r does not existr   z1html_static_path entry %r is placed inside outdir)rB  r   r  r   r?  r  r+  r/  r*   r#  r  r*  r  )r   r   r:  static_paths       rI   validate_html_static_pathr    s   (+ 2 2mDIck5$A$ABB{;'' 	2NN2HII5QQQ#**51111ocj))!,0L0LQ0OO 	2osz;788CJF	2NN2QRRTYZZZ#**51112 2rK   c                    |j         r{t          j        t          j        | j        |j                             sLt          |j                   s:t                              t          d          |j                    d|_         dS dS dS dS )zCheck html_logo setting.zlogo file %r does not existN)	r  r   r   r   r?  r-   r+  r/  r*   r   r   s     rI   validate_html_logor    s      DIck63CDDEE f&''  	r788&:JKKK	           rK   c                    |j         r{t          j        t          j        | j        |j                             sLt          |j                   s:t                              t          d          |j                    d|_         dS dS dS dS )zCheck html_favicon setting.zfavicon file %r does not existN)	r  r   r   r   r?  r-   r+  r/  r*   r  s     rI   validate_html_faviconr    s     #DIck63FGGHH#f)**# 	r:;;V=PQQQ"	# # # # # #rK   c                       e Zd Zd ZdS )_stable_repr_objectc                     dS )Nz<object>rr   r   s    rI   __repr__z_stable_repr_object.__repr__  s    zrK   N)rl   rm   rn   r  rr   rK   rI   r  r    s#            rK   r  c                     |j         }|t          u rdS t                              t	          d                     |s	d|_        dS t          j        |          |_        dS )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   r  html_permalinks_icon)r   r   r  s      rI   migrate_html_add_permalinksr    s~     4e#  NN2 U V V W W W !&"&+# #FrK   zsphinx.builders.htmlhtml5_readyTc           	         |                      t                     |                     ddd           |                     dg d           |                     di d           |                     dd dt          g           |                     dd	 d           |                     d
d dt          g           |                     dd dt          g           |                     dd dt          g           |                     dg d           |                     dg d           |                     dg d           |                     dg d           |                     dd dt          g           |                     di d           |                     di d           |                     dddt          g           |                     dt
          d           |                     ddd           |                     ddd           |                     ddd           |                     ddd           |                     ddd           |                     ddd           |                     dd d           |                     d!d"d           |                     d#d dt          g           |                     d$d dt          g           |                     d%dd           |                     d&dd           |                     d'dd           |                     d(i d           |                     d)d*d           |                     d+dd           |                     d,d-d           |                     d.d dt          g           |                     d/i d           |                     d0d"d            |                     d1dd           |                     d2d"d           |                     d3d4dt          d5d4                     |                     d6d d7           |                     d8dd           |                     d9           |                     d:           |                     d;t          d<=           |                     d;t          d<=           |                     d;t          d<=           |                     d;t          d<=           |                     d;t          d<=           |                     d;t          d<=           |                     d;t          d<=           |                     d>t                      |                     d:t"                     |                     d:t$                     |                     d:t&                     |                     d?           |                     d@           dAdddBS )CNr   rw  r   html_theme_pathr   r  c                 >    t          d          | j        | j        fz  S )Nz%s %s documentation)r)   rX  rY  r   s    rI   r  zsetup.<locals>.<lambda>=  s    a(=&>&>$,PTP\A]&] rK   r  c                     | j         S rE   )r  r   s    rI   r  zsetup.<locals>.<lambda>?  s    $/ rK   r   r  r  r  r  rB  rA  r  r  r  r  Tr  r  r     ¶html_use_indexr  Fr  r  r  z.txtr  r   r   r   r  r  r  r  r  r(  r  html_secnumber_suffixz. ry  rz  r{  rV  r  html_codeblock_linenos_styleinlinetablehtml_math_rendererr-  r  r  r  zconfig-initedr  r`   zbuilder-initedzsphinx.ext.mathjaxzsphinx.builders.html.transformsbuiltin)rZ  parallel_read_safeparallel_write_safe)add_builderr   add_config_valuerR   rN   r  r   	add_eventconnectr  r  r  r  r  r  r  r  r  r  r  setup_extension)r   s    rI   setupr	  4  s   OO)*** {F;;;*B777-r6:::]]#( ( ( +-I-I6RRRtVcU;;;dFSE:::vu===)2v666"f555+R888*B7770$FFF"f5550"f===.ftfEEE.v>>>*D&999/v>>>)4888+UF;;;+T6:::/v>>>166BBB.F;;;+T6C5AAA+T6C5AAA.f===3T6BBB+T6:::V444/&AAA-tV<<<0$???/vuEEE.F;;;-r488814@@@V44476gx002 2 2-tU;;;777 MM&'''MM%&&& KK!7#KFFFKK!6KEEEKK!<sKKKKKK!9CKHHHKK!:SKIIIKK!3cKBBBKK!6KEEEKK "8999KK#%9:::KK#%8999KK#%9::: ,--- 9::: "#  rK   )ro   r   r  r  rer   r~  r   r   typingr   r   r   r   r	   r
   r   r   r   r   urllib.parser   docutils.readers.doctreer   r   docutils.corer   docutils.frontendr   docutils.ior   r   docutils.nodesr   docutils.utilsr   r   r   r   r   ri  sphinx.applicationr   sphinx.buildersr   sphinx.configr   r   sphinx.deprecationr   r   sphinx.domainsr    r!   r"   !sphinx.environment.adapters.assetr#   (sphinx.environment.adapters.indexentriesr$   #sphinx.environment.adapters.toctreer%   sphinx.errorsr&   r'   sphinx.highlightingr(   sphinx.localer)   r*   rx  r+   sphinx.themingr,   sphinx.utilr-   r.   r/   r0   r1   sphinx.util.docutilsr2   sphinx.util.fileutilr3   sphinx.util.i18nr4   sphinx.util.inventoryr5   sphinx.util.matchingr6   r7   r8   sphinx.util.osutilr9   r:   r;   r<   sphinx.util.tagsr=   sphinx.writers.htmlr>   r?   sphinx.writers.html5r@   r  	getLoggerrl   r+  compiler  rR   rF   rY   r[   rt   rw   r   r  r  r  r  r  r  r  r  r  r  r  r  r  sphinxcontrib.serializinghtmlsphinxcontribsphinx.builders.dirhtmlsphinx.builders.singlehtmlr	  rr   rK   rI   <module>r/     s[      				     				 



              V V V V V V V V V V V V V V V V V V V V V V V V                 # # # # # # * * * * * * 2 2 2 2 2 2 2 2       ( ( ( ( ( ( 3 3 3 3 3 3 3 3 1 1 1 1 1 1 % % % % % % # # # # # # & & & & & & & & I I I I I I I I 4 4 4 4 4 4 4 4 4 4 : : : : : : A A A A A A 7 7 7 7 7 7 1 1 1 1 1 1 1 1 . . . . . .         " " " " " " + + + + + + N N N N N N N N N N N N N N - - - - - - + + + + + + ( ( ( ( ( ( / / / / / / < < < < < < < < < < I I I I I I I I I I I I ! ! ! ! ! ! : : : : : : : : 0 0 0 0 0 0 # 		8	$	$"*Y''
. 
. 
. 
. 
. 
.8C= Xc]           4       (+4 +4 +4 +4 +4 +4 +4 +4\z> z> z> z> z>G z> z> z>z+ + +4 + + + +")v )v )$ ) ) ) )"!f ! !3 !"&!15!:>! ! ! !( V  s  #  !% 04 9=       F#f # #3 #"&#15#:># # # #(	K 	K4 	K 	K 	K 	K
1& 
1& 
1T 
1 
1 
1 
1
26 
26 
2d 
2 
2 
2 
2 F  F  t        #v #v #$ # # # #        	V V     $ % $ $ $     ! ! ! !  '"D *	+ + +Nv N$sCx. N N N N N NrK   