
    Fey                       d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZ ddl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 m!Z! ddlm"Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@mAZA ddlBmCZC ddlDmEZE ddlFmGZGmHZH ddlImJZJmKZK ddlLmMZM ddlNmOZO ddlPmQZQ dd lRmSZS dd!lTmUZUmVZVmWZW dd"lXmYZYmZZZm[Z[m\Z\m]Z] dd#l^m_Z_ dd$l`maZa er"dd%lbmcZcmdZdmeZe dd&lfmgZg dd'lhmiZi dd(ljmkZk dd)llmmZm d*Zn eHj                  ep      Zq ej                  d+      Zseteueve1   eweteuewe2   f      exf   ZydBd,ZzdCd-Z{ G d. d/      Z| G d0 d1e%      Z}dDd2Z~dEd3ZdDd4Z	 	 	 	 	 	 dFd5ZdGd6ZdDd7ZdDd8ZdDd9ZdDd:ZdHd;ZdId<Ze'd=d>fe)d?d>fd@ZdA Zy)JzSeveral HTML builders.    )annotationsN)path)IOTYPE_CHECKINGAnyquote)nodes)	Publisher)OptionParser)DocTreeInputStringOutput)relative_path)__display_version__package_dir)version_info)Builder)_CascadingStyleSheet_file_checksum_JavaScript)ENUMConfig_deprecation_warning)DomainIndex
IndexEntry)ImageAdapter)IndexEntries)document_tocglobal_toctree_for_doc)ConfigError
ThemeError)PygmentsBridge)___)js_index)HTMLThemeFactory)isurllogging)progress_messagestatus_iterator)new_document)
copy_asset)format_date)InventoryFile)DOTFILESMatcherpatmatch)SEPcopyfile	ensurediros_pathrelative_uri)
HTMLWriter)HTML5Translator)IterableIteratorSequence)Node)Sphinx)BuildEnvironment)Tagszobjects.invz[
]+c                .   t        | t              r"t        t        | j	                                     S t        | t        t
        f      rt        d | D              } t        j                  t        |       j                         d      j                         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  2   K   | ]  }t        |        y wN)get_stable_hash).0os     ?/usr/lib/python3/dist-packages/sphinx/builders/html/__init__.py	<genexpr>z"get_stable_hash.<locals>.<genexpr>W   s     5A_Q'5s   F)usedforsecurity)
isinstancedictrE   listitemstuplesortedhashlibmd5strencode	hexdigest)objs    rH   rE   rE   N   sg     #ttCIIK011	C$	'555;;s3x(%@JJLL    c                ,    | r| j                  dd      S y)zdConvert a locale string to a language tag (ex. en_US -> en-US).

    refs: BCP 47 (:rfc:`5646`)
    r%   -N)replace)locales    rH   convert_locale_to_language_tagr\   [   s    
 ~~c3''rW   c                  P    e Zd ZdZedd       Z	 	 	 d	 	 	 	 	 	 	 d	dZd
dZddZy)	BuildInfozbuildinfo file manipulator.

    HTMLBuilder and its family are storing their own envdata to ``.buildinfo``.
    This class is a manipulator for the file.
    c                   	 |j                         }|d   j                         dk(  sJ |d   j                  d      sJ |d   j                  d      sJ t               }|d   j	                         d   j                         |_        |d   j	                         d   j                         |_        |S # t        $ r}t        t        d      |z        |d }~ww xY w)	Nr   z# Sphinx build info version 1   zconfig:    ztags:    zbuild info file is broken: %r)	readlinesrstrip
startswithr^   splitstripconfig_hash	tags_hash	Exception
ValueErrorr&   )clsflines
build_infoexcs        rH   loadzBuildInfo.loadm   s    	QKKME8??$(GGGG8&&z2228&&x000"J%*1X^^%5a%8%>%>%@J"#(8>>#3A#6#<#<#>J  	QR ?@3FGSP	Qs   B1B4 4	C=CCNc                    d| _         d| _        |rC|j                  |      D ci c]  }|j                  |j                   }}t        |      | _         |rt        t        |            | _        y y c c}w )N )rh   ri   filternamevaluerE   rP   )selfconfigtagsconfig_categoriescvaluess         rH   __init__zBuildInfo.__init__|   sj     /5}}=N/OP!affaggoPFP.v6D,VD\:DN  Qs   A1c                j    | j                   |j                   k(  xr | j                  |j                  k(  S rD   )rh   ri   )rw   others     rH   __eq__zBuildInfo.__eq__   s0      E$5$55 2%//1	3rW   c                \    |j                  d| j                  d| j                  d       y )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: 
)writerh   ri   rw   rm   s     rH   dumpzBuildInfo.dump   s$    	
 !!4>>3 	4rW   )rm   r   returnr^   )NN )rx   zConfig | Nonery   zTags | Nonerz   zSequence[str]r   None)r   r^   r   bool)rm   r   r   r   )	__name__
__module____qualname____doc__classmethodrq   r}   r   r   r   rW   rH   r^   r^   f   s]     Q Q  !% +-	;; ; )	;
 
; 34rW   r^   c                       e Zd ZU dZdZdZ ed      ZeZ	dZ
dZdZdZeZd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ded<   g Zded<   dI fdZdJdZ dKdZ!dLdZ"dMdZ#dNdZ$dJdZ%dJdZ&e'dOd       Z(dJdZ)dPdZ*e'dQd       Z+dJdZ,dPdZ-e'dRd       Z.dMdZ/dSd Z0dTd!Z1dUd"Z2dVd#Z3dJd$Z4dWd%Z5dWd&Z6dJd'Z7 e8 ed(            dJd)       Z9dJd*Z: e8 ed+            dJd,       Z;dJd-Z<dJd.Z=dJd/Z>dJd0Z?dJd1Z@dJd2ZAdJd3ZBdXd4ZCdYd5ZDdJd6ZEdJd7ZFdJd8ZGdJd9ZHdJd:ZIdJd;ZJdZ fd<ZKd[d=ZLd\d>ZMd]d^d?ZNd_d@ZOd`dAZPdadbdBZQ	 	 dc	 	 	 	 	 dddCZR	 	 	 	 	 	 dedDZSdJdEZT e8 edF            dJdG       ZUdJdHZV xZWS )fStandaloneHTMLBuilderz&
    Builds standalone HTML docs.
    htmlz!The HTML pages are in %(outdir)s.Tz.htmlr   indexer_format)zimage/svg+xmlz	image/pngz	image/gifz
image/jpegzsearchindex.jsFrs   rS   imgpathzlist[DOMAIN_INDEX_TYPE]domain_indicesc           	        t         |   ||       g | _        g | _        t        j
                  j                  j                  d      }t        ||j                  t        |       t        t        d            }t        j                  d d dk\  r|j                  dd	       || _        y |j                  dd	      }|j!                         |_        || _        y )
Nrestructuredtext)parser_nameunicodeencoding)readerparserwritersource_classdestinationr`   )r      T)output_encoding	traceback)superr}   
_css_files	_js_filesdocutilsreadersdoctreeReaderr   r   r9   r   r   __version_info__get_settingssetup_option_parserget_default_valuessettings
_publisher)rw   appenvr   pubop	__class__s         rH   r}   zStandaloneHTMLBuilder.__init__   s    c" 79 -/ !!))00=O0P==d#%$i8
 $$Ra(G3Y$G  ((d(SB002CLrW   c                   | j                         | _        d| _        i | _        d| _        | j                          | j                          | j                          | j                          | j                  dd      }||| _
        | j                  dd      }||| _        n| j                  | _        | j                  dd      | _        y )N_imagesrs   file_suffixr   link_suffix	use_index)create_build_inforo   imagedir
secnumberscurrent_docnameinit_templatesinit_highlighterinit_css_filesinit_js_filesget_builder_config
out_suffixr   r   )rw   html_file_suffixhtml_link_suffixs      rH   initzStandaloneHTMLBuilder.init   s    002!68$&22=&I'.DO22=&I'/D#D00fErW   c                F    t        | j                  | j                  dg      S )Nr   )r^   rx   ry   rw   s    rH   r   z'StandaloneHTMLBuilder.create_build_info   s    dii&::rW   c           	        | j                   j                  D cg c].  }t        j                  || j                   j                  dd      0 c}t        j                  t
        d| j                   j                  dd      t        j                  t        j                  d| j                   j                  d      gz   }|D ]  }t        j                  |      s|c S  yc c}w )NLC_MESSAGESz	sphinx.jsr[   zshare/sphinx/localers   )	rx   locale_dirsr   joinlanguager   sysprefixisfile)rw   dir
candidatesjsfiles       rH   _get_translations_jsz*StandaloneHTMLBuilder._get_translations_js   s     "&!8!8: iiT[[%9%9 -{< : iiXt{{7K7K -{<ii

,A $ 4 4kCDD
 ! 	F{{6"	 :s   3Cc              #    K   t        | j                  j                  t              r| j                  j                   y | j                  j                  | j                  j                  E d {    y | j                  rN| j                  j                  dd      }t        t        j                  |j                  d            E d {    y d y 7 d7 w)Ntheme
stylesheet,zdefault.css)	rK   rx   
html_stylerS   r   
get_configmaprg   rf   )rw   r   s     rH   _get_style_filenamesz*StandaloneHTMLBuilder._get_style_filenames   s     dkk,,c2++((([[##/{{----ZZ..wEJ399j&6&6s&;<<< . =s%   A-C/C0AC	C
CCc                Z    | j                   j                  | j                   j                  fS rD   )rx   
html_themehtml_theme_optionsr   s    rH   get_theme_configz&StandaloneHTMLBuilder.get_theme_config  s!    {{%%t{{'E'EEErW   c                   t        | j                        }| j                         \  }}|j                  |      | _        |j                         | _        | j                          | j                  j                  | | j                         y rD   )
r(   r   r   creater   copytheme_optionscreate_template_bridge	templatesr   )rw   theme_factory	themenamethemeoptionss       rH   r   z$StandaloneHTMLBuilder.init_templates  sj    (2"&"7"7"9	<")))4
)..0##%D$**-rW   c                   | j                   j                  | j                   j                  }n,| j                  r| j                  j                  ddd      }nd}t	        d|      | _        | j                  r| j                  j                  ddd       }nd }|  |0t	        d|      | _        | j                  j                  ddd	
       y d | _        y )Nr   pygments_stylenonesphinxr   pygments_dark_stylepygments_dark.cssz(prefers-color-scheme: dark)pygments_dark_css)mediaid)	rx   r   r   r   r$   highlighterdark_highlighterr   add_css_file)rw   style
dark_styles      rH   r   z&StandaloneHTMLBuilder.init_highlighter  s    ;;%%1KK..EZZJJ))'3CVLEE)&%8::..w8MtTJJ!$26:$FD!HH!!"5(F%8 " : %)D!rW   c                n    t        t        | j                  j                   ddd       | j                  S )Nz
.css_filesrs   	   r   remove)r   r   r   r   r   s    rH   	css_fileszStandaloneHTMLBuilder.css_files+  s/    X$..*A*A)B*'Mr$*	,rW   c                |   g | _         | j                  dd       | j                         D ]  }| j                  |d        | j                  j                  j
                  D ]  \  }} | j                  |fi |  | j                  dd      D ]*  \  }}|j                  dd        | j                  |fi | , y )Npygments.css   priorityr   r   r     )r   r   r   r   registryr   r   
setdefaultrw   filenameattrss      rH   r   z$StandaloneHTMLBuilder.init_css_files1  s    .37113 	6Hh5	6  $xx00:: 	1OHeDh0%0	1  $66{FK 	1OHeZ-Dh0%0	1rW   c                    d|vrt        j                  d|      }t        |fi |x}| j                  vr| j                  j	                  |       y y N://_static)	posixpathr   r   r   appendrw   r  kwargsassets       rH   r   z"StandaloneHTMLBuilder.add_css_file?  sM      ~~i:H)(=f==EdooUOO""5) VrW   c                n    t        t        | j                  j                   ddd       | j                  S )Nz.script_filesrs   r   r   )r   r   r   r   r   s    rH   script_filesz"StandaloneHTMLBuilder.script_filesF  s0    X$..*A*A)B-'PRT$*	,~~rW   c                   g | _         | j                  dd       | j                  dd       | j                  dd       | j                  j                  j                  D ]  \  }} | j                  |xs dfi |  | j                  dd      D ].  \  }}|j                  d	d
        | j                  |xs dfi | 0 | j                         r| j                  d       y y )Nzdocumentation_options.jsr   r  zdoctools.jszsphinx_highlight.jsrs   js_filesr   r  r  translations.js)r   add_js_filer   r  r  r   r  r   r  s      rH   r   z#StandaloneHTMLBuilder.init_js_filesL  s    3cB5.=#xx0099 	6OHeDX^5u5	6  $66z6J 	6OHeZ-DX^5u5	6 $$&./ 'rW   c                    |rd|vrt        j                  d|      }t        |fi |x}| j                  vr| j                  j	                  |       y y r
  )r  r   r   r   r  r  s       rH   r  z!StandaloneHTMLBuilder.add_js_file\  sO    X- ~~i:H 4V44ET^^KNN!!%( LrW   c                    | j                  dd      }||S t        | j                  j                  j                        }t        |      dk(  r|d   S t        |      dk(  r|j                  d       |d   S y )Nmath_rendererr   rb   r   r`   mathjax)r   rM   r   r  html_inline_math_rendererslenr   )rw   ru   	rendererss      rH   math_renderer_namez(StandaloneHTMLBuilder.math_renderer_namec  sz    &&?K TXX..IIJI9~" |#Y1$  + |# rW   c              #    K   	 t        t        j                  | j                  d      d      5 }t        j                  |      }d d d        | j                  k7  r4t        j                  d       | j                  j                  E d {    y 	 | j                  r| j                  j!                         }nd}| j                  j                  D ]   }|| j                  j"                  vrt        j                  d|       | 7| j%                  |      }	 t        j&                  |      }	 t+        t        j&                  | j                  j-                  |            |      }||kD  ret        j                  d|t/        |      t/        |      |t/        t        j&                  | j                  j-                  |                         |  y # 1 sw Y   xY w7 X# t        $ r*}t        j                  t        d      |       Y d }~d }~wt        $ r Y w xY w# t(        $ r d}Y w xY w# t        $ r Y tw xY ww)	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   outdirr^   rq   ro   loggerdebugr   
found_docsrk   warningr&   OSErrorr   newest_template_mtimeall_docsget_outfilenamegetmtimerj   maxdoc2path_format_modified_time)	rw   fp	buildinforp   template_mtimedocname
targetnametargetmtimesrcmtimes	            rH   get_outdated_docsz'StandaloneHTMLBuilder.get_outdated_docsw  s    	dii\:WM /QS%NN2.	/ )+HI88.... , >>!^^AACNNxx** 	Gdhh///@'J--g6J "mmJ7t}}TXX->->w-GH.Yk)LLX"-k:-n=-dmmDHH<M<Mg<V.WX "M+	#/ /
 / 	JNN2BCSII 		       s   I+G% GAG% 
G"G% B	IH&/B"H8IG	G% %	H#.HIH#I"H##I&H51I4H55I8	IIIIc                \    | j                   j                  | j                   j                  z   S rD   )rx   html_extra_pathhtml_static_pathr   s    rH   get_asset_pathsz%StandaloneHTMLBuilder.get_asset_paths  s!    {{**T[[-I-IIIrW   c                    |ddiS t        d      }|j                  |       | j                  j                  |       | j                  j	                          | j                  j
                  j                  S )z$Utility: Render a lone doctree node.fragmentrs   z<partial node>)r-   r  r   
set_sourcepublishr   parts)rw   nodedocs      rH   render_partialz$StandaloneHTMLBuilder.render_partial  sa    <##+,

4""3'!%%+++rW   c                F   d | _         | j                  rddlm} | j                  j
                  xs | j                  j                  } || j                  || j                  j                  | j                  j                        | _         | j                  |       t        |       | _        t        j                         5  t        j                  dt                t#        | j                  j$                  | j                  fd      j'                         | _        d d d        t+        | j                  j,                        | j(                  _        g | _        | j                  j2                  }|rt5        | j                  j6                        D ]  }| j                  j6                  |   }|j8                  D ]m  }|j:                   d|j:                   }t=        |t>              r||vr3 ||      jA                         \  }	}
|	sO| j0                  jC                  |||	|
f       o  |  | j                  jD                  }|4tG        |xs tI        d      | j                  j                  	      | _%        nd | _%        | j                  jL                  xs d
}| j                  jN                  xs d
}tQ        |      stS        jT                  |      }tQ        |      stS        jT                  |      }| j                  jW                         | _,        g }| jZ                  r'|jC                  dtI        d      dtI        d      f       | j0                  D ]=  \  }}}}|j\                  s|jC                  ||j^                  d
|j\                  f       ? | j`                  jb                  jd                  D ]  \  }} | jf                  |fi |  | j`                  jb                  jh                  D ]  \  }} | jj                  |xs d
fi |  t?        tl        jo                  | jp                              | _9        t?        tl        jo                  | jt                              | _;        t?        | jy                               }i d| jz                  d| j                  j|                  dt~        j                  d
| j                  j                        d| j                  j                  d| jJ                  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                  j                  d| j                  j                  d| j                  j                  d| j                  j                  | j                  | j                  | jt                  t        | j                  j                        | jp                  t        t        t        j                  d d  ||| j:                  g ||dd!| _U        | j                  rS| j                  j                  d" | j                  j                  | j                        j                         D               | j                  j                  | j                  j                         y # 1 sw Y   xY w)#Nr   )IndexBuilderignore)categoryT)defaults
componentsread_config_filesrY   z	%b %d, %Y)r   rs   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_infostylesrellinksbuilderparentslogo_urlfavicon_urlhtml5_doctypec              3  0   K   | ]  \  }}d |z   |f  yw)theme_Nr   )rF   keyvals      rH   rI   z8StandaloneHTMLBuilder.prepare_writing.<locals>.<genexpr>&  s$      &D*43C%&Ds   )\indexersearchsphinx.searchrF  rx   html_search_languager   r   html_search_optionshtml_search_scorerload_indexerr9   	docwriterwarningscatch_warningsfilterwarningsDeprecationWarningr   r   r   docsettingsr   html_compact_listscompact_listsr   html_domain_indicesrP   domainsindicesru   rK   rM   generater  html_last_updated_fmtr/   r%   rS  	html_logohtml_faviconr)   r   basenamecollect_relations	relationsr   	shortname	localnamer   r  r   r   r  r  rL   fromkeysr   _orig_css_filesr   _orig_js_filesr   rO  rP  return_codes_resubrQ  rR  rT  rV  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   r\   r   ra  r   r   globalcontextr   updateget_optionsr   rN   html_context)rw   docnamesrF  langindices_configdomain_namedomainindexcls	indexnamecontentcollapselufmtlogofaviconre  _content	_collapsecss_filenamer  js_filenamerd  s                        rH   prepare_writingz%StandaloneHTMLBuilder.prepare_writing  s   ;;2;;33Kt{{7K7KD'$(,(G(G(,(F(FHDL h'#D)$$& 	=##H7IJ %1** NN,"&%( );(:(< 		= *.dkk.L.L)M& !88%dhh&6&67 
F!%!1!1+!> & FH#);;-q @I!.$7$N:$(0(8(A(A(C%GX++22&'8DFF
F 	11 +E,CQ{^59[[5I5I!KD !%D {{$$*++**0bT{==&DW~mmG,G33546>>OOZ?);S!G*MN8<8K8K 	:4Ix9!!H,>,>!#X%7%7!9 :	: $(88#4#4#>#> 	5L%Dl4e4	5"&(("3"3"<"< 	9KD[.B8%8	9  $DMM$//$BC"4==#@Ad//12!
!
t{{**!
 **2t{{/B/BC!
 t{{**	!

 D--!
 ..!
 $++..!
 ,,!
 dkk==!
 //!
 $++66!
 dkk==!
 "4;;#G#G!
 4;;77!
 $++66!
  4;;;;!!
"  !C!C#!
$  ??++ NN6t{{7K7KL1$2%-%>%>r%B yy"!A!
D ::%% &D

&&t'9'9:@@B&D D 	!!$++":":;W	= 	=s   ?A\\ c                6   dx}}g }| j                   d   dd }| j                  j                  |      }| j                  j                  }	|rZ|d   rU	 | j                  ||d         | j                  |	|d            d   d}|j                  |d   |d   dt        d      f       |rZ|d   rU	 | j                  ||d         | j                  |	|d            d   d}|j                  |d   |d   d	t        d
      f       |r|d   rt        j                  t              5  |j                  | j                  ||d         | j                  |	|d            d   d       ddd       | j                  j                  |d         }|r|d   r|r|j                          |j                          | j                  j                  j                  |      }
|
r| j                  |
      d   nd}| j                  j                  |d      t!        |      d }| j"                  j$                  r8||z   }|| j"                  j&                  k7  r|| j"                  j&                  z  }nd}| j                  j(                  j                  |      }t+        | j                  || j,                        }| j                  |      d   }||||||||||| j                  j.                  |   dkD  |dS # t        $ r d}Y Rw xY w# t        $ r d}Y w xY w# 1 sw Y   xY w)z1Collect items for the template context of a page.Nre  r`   title)linkr  Nnextrb   Ppreviousr   rs   Fr>  )rg  prevr  r  metabodymetatagsre  
sourcenametocdisplay_tocpage_source_suffix)r  r  getr   titlesget_relative_urirD  r  r%   KeyError
contextlibsuppresspopreverse
longtitlesr/  r  rx   r  r  metadatar    ry   toc_num_entries)rw   r4  r  r  r  r  rg  re  relatedr  
title_noder  source_suffixr  r  self_tocr  s                    rH   get_doc_contextz%StandaloneHTMLBuilder.get_doc_context+  s&    t%%j1!4..$$W-wqz 11'71:F!00
1CDWM T']C6 KL wqz	 11'71:F!00
1CDWM T']C: OP
 '!*$$X. Q!227GAJG"11&2DEgNPQQ
 nn((4G '!*  KKM XX((,,W5
<F##J/8B ))'59#g,-H ;;'' =0J B BBdkk@@@
J xx  $$W-  '499=!!(+J7   $ HH44W=A"/
 	
a     
Q Qs3   AK* .AK< "A L*K98K9<L
LLc                   | j                   j                  | j                         | j                   j                  | j                         | j                   j                  | j                         | j                   j                          y rD   )finish_tasksadd_taskcopy_download_filescopy_static_filescopy_extra_filesr   r   s    rH   copy_assetsz!StandaloneHTMLBuilder.copy_assetsz  sb    ""4#;#;<""4#9#9:""4#8#89 rW   c                   t        d      }| j                  |_        | j                  j                  j                  |i       | _        | j                  j                  j                  |i       | _        t        | j                  |      d      | _        t        | j                  |      d      | _        || _        | j                  j                  ||       | j                  j!                          | j                  j"                  d   }| j                  j$                  }| j'                  |||      }| j)                  |||       y )Nr"  r   r   
_downloadsr>  )	event_arg)r   r{  r   r   toc_secnumbersr  r   toc_fignumbers
fignumbersr8   get_target_urir   dlpathr   rv  r   assemble_partsrA  
clean_metar  handle_page)rw   r4  r   r   r  r  ctxs          rH   	write_doczStandaloneHTMLBuilder.write_doc  s    "G4++((1155grB((1155grB#D$7$7$@)L"4#6#6w#?N&Wk2%%'~~##J/>>,,""7D(;#9rW   c                   t        | j                  |      | j                        | _        | j	                  |       | j
                  j                  j                  |      }|r| j                  |      d   nd}| j                  |||       y )Nr  rs   )
r8   r  r   r   post_process_imagesr   r  r  rD  
index_page)rw   r4  r   r  r  s        rH   write_doc_serializedz*StandaloneHTMLBuilder.write_doc_serialized  sp    #D$7$7$@$--P  )XX((,,W5
<F##J/8B%0rW   c                   | j                   j                  | j                         | j                   j                  | j                         | j                   j                  | j                         | j                   j                  | j
                         | j                   j                  | j                         | j                          y rD   )r  r  gen_indicesgen_pages_from_extensionsgen_additional_pagescopy_image_fileswrite_buildinfohandle_finishr   s    rH   finishzStandaloneHTMLBuilder.finish  s    ""4#3#34""4#A#AB""4#<#<=""4#8#89""4#7#78 	rW   zgenerating indicesc                \    | j                   r| j                          | j                          y rD   )r   write_genindexwrite_domain_indicesr   s    rH   r  z!StandaloneHTMLBuilder.gen_indices  s%     >>! 	!!#rW   c                    | j                   j                  d      D ]   }|D ]  \  }}}| j                  |||        " y )Nhtml-collect-pages)eventsemitr  )rw   pagelistpagenamecontexttemplates        rH   r  z/StandaloneHTMLBuilder.gen_pages_from_extensions  sI    (()=> 	>H/7 >+'8  7H=>	>rW   zwriting additional pagesc                   | j                   j                  j                         D ]2  \  }}t        j	                  |dz   d       | j                  |i |       4 | j                  r*t        j	                  dd       | j                  di d       | j                   j                  r[| j                  rNt        j	                  dd       t        j                  | j                  dd	      }| j                  d
i d	|       y y y )N Tnonlzsearch rp  zsearch.htmlzopensearch r  zopensearch.xml
opensearch)outfilename)rx   html_additional_pagesrN   r%  infor  rp  r  r   r   r$  )rw   r  r  fns       rH   r  z*StandaloneHTMLBuilder.gen_additional_pages  s     #'++"C"C"I"I"K 	5HhKK3TK2Xr84	5
 ;;KK	K-Xr=9 ;;**t{{KKDK14;;	3CDB\2/?RP 0;*rW   c                   t        | j                        j                  |       }g }|D ]&  \  }}|j                  t	        d |D                     ( ||| j
                  j                  d}t        j                  dd       | j
                  j                  r[| j                  d|d       | j                  d|d	       t        ||      D ]%  \  \  }}}||||d
}| j                  d|z   |d       ' y | j                  d|d	       y )Nc              3  F   K   | ]  \  }\  }}}d t        |      z     yw)rb   N)r  )rF   r%   subitemss      rH   rI   z7StandaloneHTMLBuilder.write_genindex.<locals>.<genexpr>  s.      #G':q*:1h $%s8}#4 #Gs   !)genindexentriesgenindexcountssplit_indexz	genindex Tr  rL  zgenindex-split.htmlzgenindex-allzgenindex.html)rm  entriescountr  z	genindex-zgenindex-single.html)r   r   create_indexr  sumrx   html_split_indexr%  r  r  zip)	rw   rL  indexcounts_kr  genindexcontextrm  r  r  s	            rH   r  z$StandaloneHTMLBuilder.write_genindex  s      )66t<# 	HKBs #G>E#G  G H	H
  ();;77

 	Kd+;;''Z24^_,.),X{)C 9%g!g*24  s!2C!799 Z/JrW   c                    | j                   D ]D  \  }}}}|j                  ||d}t        j                  |dz   d       | j	                  ||d       F y )N)
indextitler  collapse_indexr  Tr  zdomainindex.html)r   r  r%  r  r  )rw   r  r  r  r  indexcontexts         rH   r  z*StandaloneHTMLBuilder.write_domain_indices  sa    6:6I6I 	J2Ix(&00""*L
 KK	CdK3Y6HI	JrW   c           	        | j                   rt        | j                  j                        j                  }t        t        j                  | j                  | j                               t        | j                   t        d      dt        | j                         | j                  j                  |      D ]e  }| j                   |   }	 t        t        j                  | j                  |      t        j                  | j                  | j                  |             g y y # t         $ rH}t"        j%                  t        d      t        j                  | j                  |      |       Y d }~d }~ww xY w)Nzcopying images... brownstringify_funczcannot copy image file %r: %s)imagesr   r   r   get_original_image_urir6   r   r   r$  r   r,   r&   r  	verbosityr5   srcdirrj   r%  r(  )rw   r  srcdesterrs        rH   r  z&StandaloneHTMLBuilder.copy_image_files  s   ;;)$((,,7NNNdiiT]];<&t{{B7K4Lg'*4;;'79K9K6DF 	E {{3'ETYYt{{C8!YYt{{DMM4HJ	E  ! ENN2&E#F#'99T[[##>E EEs   AD	E0(>E++E0c           	         d fd} j                   j                  rt        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                  |      |        y y # t        $ rH}t        j!                  t        d      t        j                   j                  |      |       Y d }~d }~ww xY w)	Nc                0    t        j                  |       S rD   )r   r  )rm   rw   s    rH   
to_relpathz=StandaloneHTMLBuilder.copy_download_files.<locals>.to_relpath  s     a00rW   r  zcopying downloadable files... r  r  rb   z$cannot copy downloadable file %r: %s)rm   rS   r   rS   )r   dlfilesr6   r   r   r$  r,   r&   r  r   r  dirnamer5   r  r)  r%  r(  )rw   r   r  r  r  s   `    rH   r  z)StandaloneHTMLBuilder.copy_download_files  s    	1 88dii\:;&txx'7'7<\9]'.DHH4D4D0EtxxGYGY6@B 	EE99T[[,@P@PQT@UVW@XYDdll401TYYt{{C8$?	E   ENN2&L#M#'99T[[##>E EEs   +BD22	F;>E>>Fc                   t        t        j                  | j                  dd      dd      5 }|j	                  | j
                  j                                ddd       | j                  r`t        t        j                  | j                  dd      dd      5 }|j	                  | j                  j                                ddd       yy# 1 sw Y   vxY w# 1 sw Y   yxY w)z!create a style file for pygments.r  r   wr"  r   Nr   )r#  r   r   r$  r   r   get_stylesheetr   r   s     rH   create_pygments_style_filez0StandaloneHTMLBuilder.create_pygments_style_file  s    $))DKKNCS"$ 	7'(GGD$$3356	7   diiY8KLc&( @+,--<<>?@ @ !		7 	7
@ @s   *C*CCC"c                    | j                         }|r,t        |t        j                  | j                  dd             yy)z(Copy a JavaScript file for translations.r  r  N)r   r5   r   r   r$  )rw   r   s     rH   copy_translation_jsz)StandaloneHTMLBuilder.copy_translation_js  s4    **,VTYYt{{I?PQR rW   c                   | j                   t        | j                   d      r^| j                   j                         D ]@  }t        |t	        j
                  | j                  dt	        j                  |                   B y| j                   j                         x}r,t        |t	        j
                  | j                  dd             yyy)z#Copy a JavaScript file for stemmer.Nget_js_stemmer_rawcodesr  z_stemmer.js)	ro  hasattrr*  r5   r   r   r$  r  get_js_stemmer_rawcode)rw   r   js_stemmer_rawcodes      rH   copy_stemmer_jsz%StandaloneHTMLBuilder.copy_stemmer_js  s    <<#t||%>?"llBBD _FVTYYt{{It}}U[G\%]^_ *.)L)L)NN%N/!YYt{{I}MO O $rW   c           	        dd}| j                   rw| j                   j                         d d d   D ]S  }t        t        j                  |d      t        j                  | j
                  d      t        || j                  |       U y y )Nc                D    t         j                  t        d      | |       y Nz1Failed to copy a file in html_static_file: %s: %rr%  r(  r&   r  errors     rH   onerrorz>StandaloneHTMLBuilder.copy_theme_static_files.<locals>.onerror(      NN2QR#U,rW   staticr  )excludedr  rendererr5  r  rS   r4  rj   r   r   )r   get_theme_dirsr.   r   r   r$  r1   r   )rw   r  r5  entrys       rH   copy_theme_static_filesz-StandaloneHTMLBuilder.copy_theme_static_files'  sr    	, ::224TrT: E499UH599T[[)<$,g$(NNGEE rW   c           	     6   dd}t        | j                  j                  dgz         }| j                  j                  D ]Y  }t	        t        j                  | j                  |      t        j                  | j                  d      ||| j                  |       [ y )Nc                D    t         j                  t        d      | |       y r1  r2  r3  s     rH   r5  z=StandaloneHTMLBuilder.copy_html_static_files.<locals>.onerror4  r6  rW   z**/.*r  )r  r:  r5  r;  )
r2   rx   exclude_patternsr;  r.   r   r   confdirr$  r   )rw   r  r5  r9  r=  s        rH   copy_html_static_filesz,StandaloneHTMLBuilder.copy_html_static_files3  sy    	, 4;;777)CD[[11 	\Etyyu5yyi84>>SZ\	\rW   c                *   | j                   j                  r}t        | j                   j                        s]t        t	        j
                  | j                  | j                   j                        t	        j
                  | j                  d             y y y Nr  )rx   r  r)   r.   r   r   rB  r$  r   s    rH   copy_html_logoz$StandaloneHTMLBuilder.copy_html_logo>  s^    ;;  t{{/D/D)Etyyt{{/D/DEyyi8: *F rW   c                *   | j                   j                  r}t        | j                   j                        s]t        t	        j
                  | j                  | j                   j                        t	        j
                  | j                  d             y y y rE  )rx   r  r)   r.   r   r   rB  r$  r   s    rH   copy_html_faviconz'StandaloneHTMLBuilder.copy_html_faviconC  s^    ;;##E$++2J2J,Ktyyt{{/G/GHyyi8: -L#rW   c                   	 t        t        d            5  t        t        j                  | j
                  d             | j                  j                         }| j                  )|j                  | j                  j                                | j                          | j                          | j                          | j                  |       | j                  |       | j!                          | j#                          d d d        y # 1 sw Y   y xY w# t$        $ r)}t&        j)                  t        d      |       Y d }~y d }~ww xY w)Nzcopying static filesr  zcannot copy static file %r)r+   r&   r6   r   r   r$  r  r   ro  r  context_for_searchtoolr&  r(  r.  r>  rC  rF  rH  r)  r%  r(  )rw   r  r  s      rH   r  z'StandaloneHTMLBuilder.copy_static_filesH  s    	B!"%;"<= )$))DKK;< ,,113<<+NN4<<#F#F#HI//1((*$$&,,W5++G4##%&&() ) )  	BNN2:;SAA	Bs5   D C+D
D 
DD D 	EEEc                   	 t        t        d            5  t        | j                  j                        }| j                  j
                  D ]9  }t        j                  | j                  |      }t        || j                  |       ; 	 ddd       y# 1 sw Y   yxY w# t        $ r)}t        j                  t        d      |       Y d}~yd}~ww xY w)zcopy html_extra_path files.zcopying extra filesNzcannot copy extra file %r)r+   r&   r2   rx   rA  r:  r   r   rB  r.   r$  r)  r%  r(  )rw   r9  
extra_pathr=  r  s        rH   r  z&StandaloneHTMLBuilder.copy_extra_files\  s    	A!"%:";< ="4;;#?#?@"&++"="= =J IIdllJ?Eudkk8<== = =
  	ANN29:C@@	As5   B A2B	B BB B 	C'CCc                (   	 t        t        j                  | j                  d      dd      5 }| j                  j                  |       d d d        y # 1 sw Y   y xY w# t        $ r)}t        j                  t        d      |       Y d }~y d }~ww xY w)Nr!  r$  r"  r   z#Failed to write build info file: %r)
r#  r   r   r$  ro   r   r)  r%  r(  r&   )rw   r1  rp   s      rH   r  z%StandaloneHTMLBuilder.write_buildinfog  su    	Kdii\:C'R )VX$$R() ) ) 	KNN2CDcJJ	Ks4   ,A A
A AA A 	B(BBc                R    | j                   r| j                   j                          y y rD   )r   cleanupr   s    rH   rO  zStandaloneHTMLBuilder.cleanupn  s    ::JJ  rW   c                @   t         |   |       | j                  j                  r| j                  r|j	                  t
        j                        D ]  t        fddD              st        j                  t
        j                        r=dd   v rEd   }t        j                  ddd      }|| j                  v r1t        j                  | j                  | j                  |         |d	<   n||d	<   j                  |       |j!                          y
y
y
)zlPick the best candidate for an image and link down-scaled images to
        their high res version.
        c              3  &   K   | ]  }|v  
 y wrD   r   )rF   rm  rB  s     rH   rI   z<StandaloneHTMLBuilder.post_process_images.<locals>.<genexpr>{  s     QSC4KQ   )scalewidthheightzno-scaled-linkclassesurirs   T)internalrefuriN)r   r  rx   html_scaled_image_linkfindallr
   imageanyrK   parent	referencer  r  r   r   replace_selfr  )rw   r   rW  r_  rB  r   s       @rH   r  z)StandaloneHTMLBuilder.post_process_imagess  s     	#G,;;--$2M2M4 'Q4PQQ dkk5??;#tI65k!OOBTB	$++%*3..9=S9I+KIh' +.Ih'!!),  &)' 3N-rW   c                   | j                   J t        | j                  j                        t        |      z
  }	 t	        j
                  | j                  | j                        }| j                  r=t        |d      5 }| j                   j                  || j                         d d d        n;t        |d      5 }| j                   j                  || j                         d d d        | j                   j#                  |       y # 1 sw Y   %xY w# 1 sw Y   1xY w# t        t        f$ r# |rt        j                  t!        d             Y ew xY w)Nr"  r   rbzcsearch index couldn't be loaded, but not all documents will be built: the index will be incomplete.)ro  setr   r+  r   r   r$  searchindex_filenameindexer_dumps_unicoder#  rq   r   r)  rk   r%  r(  r&   prune)rw   r  keepsearchindexfnftfbs         rH   ru  z"StandaloneHTMLBuilder.load_indexer  s   ||'''488$$%H5	2 IIdkk43L3LMM))-': ?bLL%%b$*=*=>? ? -. ?"LL%%b$*=*=>? 	4 ? ?? ?$ 	2r #0  1 2	2sB   AD >'D%D :'D!D D
D DD /EEc                >   | j                   |r| j                  j                  |d      }| j                  j                  j	                  |i       }d|v r(| j                   j                  ||dt        d             y | j                   j                  ||||       y y y )NF)basenosearchrs   )ro  r   r/  r  r  feedr-   )rw   r  r   r  r  r  s         rH   r  z StandaloneHTMLBuilder.index_page  s    <<#xx(((>Hxx((,,Xr:HX%!!(Hb,r:JK!!(HeWE ).#rW   c                    d|vrd|d<   |j                  d      dk(  r|j                  d       t        | j                  || fd|i|}| j	                  |      d   S )NincludehiddenFmaxdepthrs   r  r>  )r  r  r!   r   rD  )rw   r4  r  r  toctrees        rH   _get_local_toctreez(StandaloneHTMLBuilder._get_local_toctree  sd    &(&+F?#::j!R'JJz"(7D^8^W]^""7+J77rW   c                n    t        j                  | j                  t        |      | j                  z         S rD   )r   r   r$  r7   r   )rw   r  s     rH   r,  z%StandaloneHTMLBuilder.get_outfilename  s%    yygh&7$//&IJJrW   c                   d
d}d }d }d }| j                   j                  dk(  rV	 | j                   j                  j                  dd      }|r,|j	                  d      D cg c]  }|j                          }}nK| j                   j                  ddd       }|r,|j	                  d      D cg c]  }|j                          }}| j                  dd      }	|	j                         D ]J  \  }
}t        ||
      s|r2 ||
      r* ||      r!t        j                  t        d      |||
       G|
}|}L |	 ||d<   ||d	<   y c c}w # t        $ r g d}Y w xY wc c}w )Nc                ,     t         fddD              S )Nc              3  &   K   | ]  }|v  
 y wrD   r   )rF   charpatterns     rH   rI   zKStandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard.<locals>.<genexpr>  s     94tw9rR  z*?[)r]  )ry  s   `rH   has_wildcardz8StandaloneHTMLBuilder.add_sidebars.<locals>.has_wildcard  s    95999rW   	alabasterr   sidebarsr   )z
about.htmlznavigation.htmlzrelations.htmlzsearchbox.htmlzdonate.htmlr   z8page %s matches two patterns in html_sidebars: %r and %rcustomsidebar)ry  rS   r   r   )r   ru   rx   r  rf   rg   rj   r   r   rN   r3   r%  r(  r&   )rw   r  r  rz  r|  matchedr}  theme_default_sidebarsru   html_sidebarsry  patsidebarss               rH   add_sidebarsz"StandaloneHTMLBuilder.add_sidebars  sx   	:  ::??k)=)-):):)>)>w
)S&)9O9U9UVY9Z[

[H[ &*ZZ%:%:7JPT%U"%5K5Q5QRU5VWTDJJLWW //
FC$1$7$7$9 	' G['*#G,'0"NN2 /I ,J+3WgG
 !!&	' "J,OA  \ === Xs)   ;E  E7E ,EE EEc                2    t        |      | j                  z   S rD   )r	   r   )rw   r4  typs      rH   r  z$StandaloneHTMLBuilder.get_target_uri  s    W~ 0 000rW   c                     j                   j                         }x|d<   |d<    j                  j                  |d<    j	                        }|j                  dd      d   } j                  j                  r;t        j                   j                  j                   j                  z         |d<   nd |d<   d|f	 	 	 	 	 	 	 d$ fd	|d
<   d% fd}||d<    fd|d<    j                  |       |j                  |       dt         |j                  t              z  xs	 dt         |d<    j                  j                  d&fd}	|	|d<   d'fd}
|
|d<    j                    j"                  d d   j$                   j&                  d d   j)                  |||        j                  j+                  d|||      }|r|}	 t-        |d   d       |d<   t1        j2                  t.              5  t-        |d   d       |d<   d d d        	  j4                  j7                  ||      }|s jE                        }tG        tI        jJ                  |             	 tM        |d|d   d       5 }|jO                  |       d d d         jR                  r|jU                  d"      rqtI        j                   j                  d#tW        |d"               }tG        tI        jJ                  |             tY         jZ                  j]                        |       y y y # t.        $ r Y Mw xY w# 1 sw Y   %xY w# t8        $ r" t:        j=                  t?        d             Y y t@        $ r}tC        t?        d      |fz        |d }~ww xY w# 1 sw Y   xY w# tP        $ r+}t:        j=                  t?        d!      ||       Y d }~=d }~ww xY w)(Nr  current_page_namer   #rb   r   pageurlFc                    |rd| v r| S |sj                  |       } t        ||       xs d}|dk(  rj                  s|}|S )Nr  r  )r  r8   allow_sharp_as_current_path)otheruriresourcebaseurirW  rw   s       rH   pathtoz1StandaloneHTMLBuilder.handle_page.<locals>.pathto   sQ     EX-..x8w18SCcz$"B"BJrW   r  c                    | j                   j                  v ry| dk(  rj                  ry| dk(  rj                  dd      ryy)NTrp  rL  r   r   F)r   r+  rp  r   )ru   rw   s    rH   hasdocz1StandaloneHTMLBuilder.handle_page.<locals>.hasdoc  sF    txx(((xDKKz!d&=&=k6&RrW   r  c                 *     j                   fi | S rD   )rs  )r  r  rw   s    rH   <lambda>z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>  s    *A$*A*A(*Uf*U rW   rr  z...content_rootc           	     z   g }| j                   j                         D ]4  \  }}|	|j                  | dt        j                  |d       d       6  t        j                  | j                        d      }t        | j                        x}r|d| z  }ddj                  t        |             d	| d
S )N="Tr   "r  ?v=z<link r  z href="z" />)
attributesrN   r  r   escapeosfspathr  r   r   rP   )cssr  rm  rv   rW  checksumr$  r  s         rH   css_tagz2StandaloneHTMLBuilder.handle_page.<locals>.css_tag!  s    E!nn224 N
U$LLC54;;uD+I*J!!LMN 3<<04@C)&#,,??x?XJ''CHHVE]34GC5EErW   r  c           	        t        | t              sd | d       dS g }| j                  j                  dd      }| j                  j	                         D ]:  \  }}|dk(  r||j                  | dt        j                  |d       d	       < | j                  s)|r!d
dj                  t        |             d| dS d| dS  t        j                  | j                        d      }dt        j                  | j                        v rn t        | j                        x}r|d| z  }|r!d
dj                  t        |             d| dS d| dS )Nz<script src="Tr  z"></script>r  rs   r  r   r  z<script r  >z	</script>z<script>zMathJax.js?r  z src=")rK   r   r  r  rN   r  r   r  r  r   rP   r  r  r   )	jsr  r  rm  rv   rW  r  r$  r  s	          rH   js_tagz1StandaloneHTMLBuilder.handle_page.<locals>.js_tag-  sc   b+.&vb4'@&AMME==$$VR0D mm113 N
U&=$LLC54;;uD+I*J!!LM	N ;;%chhve}&=%>avYOO!$y112;;/$?C		"++ 66
 +FBKK@@@XJ''!#((6%="9!:&[QQ"3%{33rW   r  html-page-contextr  c                    | j                   S rD   r  )r  s    rH   r  z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>[  s
    R[[ rW   )rm  r   c                    | j                   S rD   r  )r  s    rH   r  z3StandaloneHTMLBuilder.handle_page.<locals>.<lambda>d  s
     rW   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  rS   r  r   r  rS   r   rS   )ru   rS   r   r   )r  r   r   rS   )r  z_JavaScript | strr   rS   )/r  r   rx   html_output_encodingr  rsplithtml_baseurlr  r   r   r  r  r4   r  r   r$  r  r   r  r   update_page_contextemit_firstresultrP   AttributeErrorr  r  r   renderUnicodeErrorr%  r(  r&   rj   r#   r,  r6   r   r"  r#  r   r)  
copysourcer  r7   r5   r   r/  )rw   r  addctxtemplatenamer  r  r  default_baseurir  r  r  newtmploutputrp   rm   r  source_namer$  r  s   ``               @@rH   r  z!StandaloneHTMLBuilder.handle_page  s     %%'5==J#12++::J--h7 *00a8;;;##&^^DKK,D,D,4t,FHC	N "C	N -2/		%)	<?		 H	 HUI(C(

6 "$C5zO,A,A#,FFTQse9N	F !I	4> H "11 //q  <iH((++,?,8#yJ"L	"(^)<BX"YC   0 	V%c+&6<TUC	V		7^^**<=F ..x8K$,,{+,	Nk3Z02  56 
 ??sww|4))DKK$+C,=$>@Kdll;/0TXX&&x0+>  5??  	
 		V 	V
  	NN2 G HIQS  	7R YZ&_- .367	7     	NNN29:KMM	Nsl   L$ <L4M (N" :NN" $	L10L14L>(N+N3NNNN" "	O+ OOc                     y rD   r   )rw   r  r  r  r  s        rH   r  z)StandaloneHTMLBuilder.update_page_context  s    rW   c                    | j                   j                  | j                         | j                   j                  | j                         y rD   )r  r  dump_search_indexdump_inventoryr   s    rH   r  z#StandaloneHTMLBuilder.handle_finish  s6    ""4#9#9:""4#6#67rW   zdumping object inventoryc                    t        j                  t        j                  | j                  t
              | j                  |        y rD   )r0   r   r   r   r$  INVENTORY_FILENAMEr   r   s    rH   r  z$StandaloneHTMLBuilder.dump_inventory  s)    499T[[2DEtxxQUVrW   c                   | j                   y t        t        d      | j                   j                         z        5  | j                   j	                  | j
                  j                         t        j                  | j                  | j                        }| j                  rAt        |dz   dd      5 }| j                   j                  || j                         d d d        n>t        |dz   d      5 }| j                   j                  || j                         d d d        t        j                   |dz   |       d d d        y # 1 sw Y   +xY w# 1 sw Y   7xY w# 1 sw Y   y xY w)Nzdumping search index in %sz.tmpr$  r"  r   wb)ro  r+   r&   labelrf  r   r+  r   r   r$  rd  re  r#  r   r   r  rZ   )rw   rh  ri  rj  s       rH   r  z'StandaloneHTMLBuilder.dump_search_index  s&   <<b!=>ASASAUUV 	>LLtxx001 IIdkk43L3LMM ))-&0#H ?BLL%%b$*=*=>? ? -&0$7 ?2LL%%b$*=*=>?JJ}v-}=	> 	>? ?? ?	> 	>s<   A7E4'EE3'E!EE		EE	EE%)r   r?   r   r@   r   r   )r   r   )r   r^   )r   rS   )r   zIterator[str])r   ztuple[str, dict])r   zlist[_CascadingStyleSheet])r  rS   r  r   r   r   )r   zlist[_JavaScript])r   
str | None)r   z	list[str])rB  zNode | Noner   zdict[str, str])r  zset[str]r   r   )r4  rS   r  rS   r  rS   r   dict[str, Any])r4  rS   r   nodes.documentr   r   )r  r  r   r   )r  rL   r   r   )r   r>   r   r   )r  zIterable[str]r   r   )r  rS   r   r  r  rS   r   r   )T)r4  rS   r  r   r  r   r   rS   )r  rS   r   rS   )r  rS   r  rL   r   r   rD   )r4  rS   r  r  r   rS   )z	page.htmlNN)r  rS   r  rL   r  rS   r  r  r  r   r   r   )
r  rS   r  rS   r  rL   r  r   r   r   )Xr   r   r   r   ru   formatr&   epilogr:   default_translator_classr  allow_parallelr   r   r'   r   __annotations__re  rZ  supported_image_typessupported_remote_imagessupported_data_uri_imagesrd  add_permalinksr  rO  rp  r   download_supportr   r   r}   r   r   r   r   r   r   r   propertyr   r   r   r  r   r  r  r8  r<  rD  r  r  r  r  r  r  r+   r  r  r  r  r  r  r  r&  r(  r.  r>  rC  rF  rH  r  r  r  rO  r  ru  r  rs  r,  r  r  r  r  r  r  r  __classcell__)r   s   @rH   r   r      s    DF34F.JNJK"NC" !8" $+N"&HFIGS.0N+02F4;	 F.)0  
1*  
0 )  &+ZJ	,w<rM
^!:"1 b-./$ 0$> b345Q 6Q"K:JEE$	@S	O
E	\:
:
B(	AK!
':!&F8K0-h1 LWEIQ?!+Q??BQ?NRQ?f!%25:>8 b345W 6W>rW   r   c                   g }|j                   D ]?  }t        |t              r|j                  |i f       '	 |\  }}|j                  ||f       A ||_         y# t        $ r" t
        j                  t        d      |       Y tw xY w)z?This converts string styled html_css_files to tuple styled one.zinvalid css_file: %r, ignoredN)html_css_filesrK   rS   r  rj   r%  r(  r&   )r   rx   r  r=  r  r  s         rH   convert_html_css_filesr    s    -/N&& 	eS!!!5"+."'%%%x&78	 +F	  r"ABEJ   A(BBc                    t        | d      \  }}t        j                  dt        j                  |            d|dz   S )zEReturn an RFC 3339 formatted string representing the given timestamp.rb   z%Y-%m-%d %H:%M:%Sr  z.3f)divmodtimestrftimegmtime)	timestampsecondsfractions      rH   r0  r0    s=    y!,GX==,dkk'.BC(SVFXXXrW   c                   g }|j                   D ]?  }t        |t              r|j                  |i f       '	 |\  }}|j                  ||f       A ||_         y# t        $ r" t
        j                  t        d      |       Y tw xY w)z>This converts string styled html_js_files to tuple styled one.zinvalid js_file: %r, ignoredN)html_js_filesrK   rS   r  rj   r%  r(  r&   )r   rx   r  r=  r  r  s         rH   convert_html_js_filesr    s    ,.M%% 	eS!  %-"'%$$h%67	 )F	  r"@A5Ir  c                    |d   }|j                  d      }|rt        |      s |d|z   d      |d<   |j                  d      }|rt        |      s |d|z   d      |d<   yyy)zSet up relative resource paths.r  ri  z_static/Tr  rh  N)r  r)   )r   r  r  r  r   r  ri  rh  s           rH   setup_resource_pathsr    st     XF ++m,K5-!'
[(@4!P {{:&Hh$Z(%:TJ
 (xrW   c                    | j                   j                  dk7  ry | j                   j                  }|t        t	        d            || j
                  j                  vrt        t	        d      |z        y )Nr   zEMany math_renderers are registered. But no math_renderer is selected.z"Unknown math_renderer %r is given.)rf  r  r  r"   r&   r  r  )r   ru   s     rH   validate_math_rendererr    su    
{{V#;;))D|" A B C 	C3<<:::"ABTIJJ ;rW   c                   |j                   dd D ]?  }t        j                  t        j                  | j                  |            }t        j
                  |      s;t        j                  t        d      |       |j                   j                  |       t        j                  | j                        d   t        j                  |      d   k(  st        j                  | j                  |f      t        j                  | j                        k(  st        j                  t        d      |       |j                   j                  |       B y)zCheck html_extra_paths setting.Nz'html_extra_path entry %r does not existr   z0html_extra_path entry %r is placed inside outdir)r:  r   normpathr   rB  existsr%  r(  r&   r   
splitdriver$  
commonpath)r   rx   r=  rL  s       rH   validate_html_extra_pathr    s    ''* 1]]499S[[%#@A
{{:&NN2GH%P""))%0oocjj)!,
0KA0NNooszz:674==;TTNN2PQSXY""))%01rW   c                   |j                   dd D ]?  }t        j                  t        j                  | j                  |            }t        j
                  |      s;t        j                  t        d      |       |j                   j                  |       t        j                  | j                        d   t        j                  |      d   k(  st        j                  | j                  |f      t        j                  | j                        k(  st        j                  t        d      |       |j                   j                  |       B y)z Check html_static_paths setting.Nz(html_static_path entry %r does not existr   z1html_static_path entry %r is placed inside outdir)r;  r   r  r   rB  r  r%  r(  r&   r   r  r$  r  )r   rx   r=  static_paths       rH   validate_html_static_pathr    s    ((+ 2mmDIIckk5$AB{{;'NN2HI5Q##**51oocjj)!,0LQ0OOooszz;78DMM#**<UUNN2QRTYZ##**512rW   c                &   |j                   rt        j                  t        j                  | j                  |j                               sGt        |j                         s1t        j                  t        d      |j                          d|_         yyyy)zCheck html_logo setting.zlogo file %r does not existN)	r  r   r   r   rB  r)   r%  r(  r&   r   rx   s     rH   validate_html_logor    sl    DIIckk63C3CDEf&&'r78&:J:JK ( F 	rW   c                &   |j                   rt        j                  t        j                  | j                  |j                               sGt        |j                         s1t        j                  t        d      |j                          d|_         yyyy)zCheck html_favicon setting.zfavicon file %r does not existN)	r  r   r   r   rB  r)   r%  r(  r&   r  s     rH   validate_html_faviconr    sl    DIIckk63F3FGHf))*r:;V=P=PQ" + I 	rW   c                D    |j                   rt        t        d            y)zError on HTML 4.z`HTML 4 is no longer supported by Sphinx. ("html4_writer=True" detected in configuration options)N)html4_writerr"   r%   )_apprx   s     rH   error_on_html_4r    s*    !F
  	 rW   c           	     	   | j                  t               | j                  ddd       | j                  dg d       | j                  di d       | j                  dd dt        g       | j                  dd	 d       | j                  d
d dt        t        g       | j                  dd dt        g       | j                  dd dt        g       | j                  dg d       | j                  dg d       | j                  dg d       | j                  dg d       | j                  dd dt        g       | j                  di d       | j                  di d       | j                  dddt        g       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  d d!d       | j                  d"d dt        g       | j                  d#d dt        g       | j                  d$dd       | j                  d%dd       | j                  d&dd       | j                  d'i d       | j                  d(d)d       | j                  d*dd       | j                  d+d,d       | j                  d-d dt        g       | j                  d.i d       | j                  d/d!d!       | j                  d0dd       | j                  d1d!d       | j                  d2d3dt        d4d3             | j                  d5d d6       | j                  d7dd       | j                  d8       | j                  d9       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d:t        d;<       | j                  d=t               | j                  d9t                | j#                  d>       | j#                  d?       d@dddAS )BNr   r{  r   html_theme_pathr   r  c                J    t        d      | j                  | j                  fz  S )Nz%s %s documentation)r%   rP  rQ  r   s    rH   r  zsetup.<locals>.<lambda>"  s!    a(=&>$,,PTP\P\A]&] rW   r  c                    | j                   S rD   )r  r   s    rH   r  zsetup.<locals>.<lambda>$  s
    $// rW   r   r  r  r  r  r;  r:  r  r  r  r~  Thtml_permalinkshtml_permalinks_icon   ¶html_use_indexr
  Fr  r  r  z.txtr  rs   r   r   r  r  r  r  r  r"  r|  html_secnumber_suffixz. rr  rs  rt  rZ  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)rR  parallel_read_safeparallel_write_safe)add_builderr   add_config_valuerS   rM   r   	add_eventconnectr  r  r  r  r  r  r  r  r  setup_extension)r   s    rH   setupr    sD   OO)* {F;*B7-r6:]#( +-I6RtVdC[AdFSE:vu=)2v6"f5+R8*B70$F"f50"f=.ftfE*D&9/v>)48+UF;+T6:/v>166B.F;+T6C5A+T6C5A.f=3T6B+T6:V4/&A-tV<0$?/vuE.F;-r2614@V476gx02-tU;7 MM&'MM%& KK!7#KFKK!6KEKK!9CKHKK!:SKIKK!3cKBKK!6KEKK3K?KK "89KK#%9: ,- 9: "# rW   z1sphinx.builders.html._assets._CascadingStyleSheetr   z(sphinx.builders.html._assets._JavaScript)
Stylesheet
JavaScriptc                    | t         vrdt        d| }t        |      ddlm} t         |    \  }}} |t        | ||       |S )Nzmodule z has no attribute r   r   r   )_DEPRECATED_OBJECTSr   r  sphinx.deprecationr   )ru   msgr   deprecated_objectcanonical_namer   s         rH   __getattr__r  n  sR    &&|#5dX>S!!70CD0I-~v4GrW   )rV   r   r   rS   )r[   r  r   r  )r   r?   rx   r   r   r   )r  floatr   rS   )r   r?   r  rS   r  rS   r  rL   r   r>   r   r   )r   r?   r   r   )r  r?   rx   r   r   r   )r   r?   r   r  )r   
__future__r   r  rQ   r   r  r  rer   r  rw  r   typingr   r   r   urllib.parser	   docutils.readers.doctreer   r
   docutils.corer   docutils.frontendr   docutils.ior   r   docutils.utilsr   r   r   r   r   ra  sphinx.buildersr   sphinx.builders.html._assetsr   r   r   sphinx.configr   r   r  r   sphinx.domainsr   r   r   !sphinx.environment.adapters.assetr   (sphinx.environment.adapters.indexentriesr   #sphinx.environment.adapters.toctreer    r!   sphinx.errorsr"   r#   sphinx.highlightingr$   sphinx.localer%   r&   rq  r'   sphinx.themingr(   sphinx.utilr)   r*   sphinx.util.displayr+   r,   sphinx.util.docutilsr-   sphinx.util.fileutilr.   sphinx.util.i18nr/   sphinx.util.inventoryr0   sphinx.util.matchingr1   r2   r3   sphinx.util.osutilr4   r5   r6   r7   r8   sphinx.writers.htmlr9   sphinx.writers.html5r:   collections.abcr;   r<   r=   docutils.nodesr>   sphinx.applicationr?   sphinx.environmentr@   sphinx.util.tagsrA   r  	getLoggerr   r%  compiler  rO   rS   typerM   r   DOMAIN_INDEX_TYPErE   r\   r^   r   r  r0  r  r  r  r  r  r  r  r  r  r  r  r   rW   rH   <module>r>     s    "    	  	 
    ) )    # * 2 ( 3 1 # Z Z & 3 4 4 : A T 1 .  " + & A - + ( / < < N N * 0<<#)3% # 			8	$"**Y'KsD$$	%&
	 
M04 04fD>G D>N +"Y)"K"&K15K:>K 	K
1
2 #K` ()\^de JFS 	rW   