3

T'ícÈã@sÒdZddlmZddlmZmZmZmZmZddl	m
Z
ddlmZddl
mZddlmZddlmZdd	lmZdd
lmZmZddlmZddlmZejeƒZGd
d„deƒZeee efdœdd„Z!dS)zSingle HTML builders.é)Úpath)ÚAnyÚDictÚListÚTupleÚUnion)Únodes)ÚNode)ÚSphinx)ÚStandaloneHTMLBuilder)ÚTocTree)Ú__)ÚloggingÚprogress_message)Ú	darkgreen)Úinline_all_toctreesc	@s:eZdZdZdZedƒZdZee	e
e	fdœdd„Zd(e	e	e	d	œd
d„Zd)e	e	e	e	dœd
d„Z
eddœdd„Zd*e	eee	dœdd„Zejdœdd„Zee	ee	eedfffdœdd„Zee	ee	ee	eedffffdœdd„Ze	e	e	edœdd„Zedd œd!d"„Zddœd#d$„Zeed%ƒƒddœd&d'„ƒZdS)+ÚSingleFileHTMLBuilderzb
    A StandaloneHTMLBuilder subclass that puts the whole document tree on one
    HTML page.
    Z
singlehtmlzThe HTML page is in %(outdir)s.F)ÚreturncCsdS)Nz
all documents©)Úselfrrú</tmp/pip-build-gk9425m9/sphinx/sphinx/builders/singlehtml.pyÚget_outdated_docssz'SingleFileHTMLBuilder.get_outdated_docsN)ÚdocnameÚtyprcCs0||jjkr"|jj|jd|S||jSdS)Nz
#document-)ÚenvÚall_docsÚconfigÚroot_docÚ
out_suffix)rrrrrrÚget_target_uri!sz$SingleFileHTMLBuilder.get_target_uri)Úfrom_ÚtorrcCs|j||ƒS)N)r)rr r!rrrrÚget_relative_uri*sz&SingleFileHTMLBuilder.get_relative_uri)ÚtreercCsz|jj|j}xf|jtjƒD]V}d|kr*q|d}|jdƒ}|dkrFq|jd|dƒ}|dkr|||d…|d<qWdS)NÚrefuriú#ré)rrrÚfindallrÚ	referenceÚfind)rr#ÚfnameZrefnoder$Z	hashindexrrrÚfix_refuris.s
z!SingleFileHTMLBuilder.fix_refurisT)rÚcollapseÚkwargsrcKsHd|krd|d<t|jƒj|||f|Ž}|dk	r:|j|ƒ|j|ƒdS)NZ
includehiddenFÚfragment)rrÚget_toctree_forr+Úrender_partial)rrr,r-ÚtoctreerrrÚ_get_local_toctree<s
z(SingleFileHTMLBuilder._get_local_toctreecCsP|jj}|jj|ƒ}t|tƒ||t|gƒ}||d<|jj|||ƒ|j|ƒ|S)Nr)	rrrZget_doctreerÚsetrZresolve_referencesr+)rZmasterr#rrrÚassemble_doctreeDs
z&SingleFileHTMLBuilder.assemble_doctree.cCsTi}xB|jjjƒD]2\}}x(|jƒD]\}}d||f}|||<q$WqW|jj|iS)Nz%s/%s)rÚtoc_secnumbersÚitemsrr)rZnew_secnumbersrZsecnumsÚidZsecnumÚaliasrrrÚassemble_toc_secnumbersMs
z-SingleFileHTMLBuilder.assemble_toc_secnumbersc	Cszi}xh|jjjƒD]X\}}xN|jƒD]B\}}d||f}|j|iƒx |jƒD]\}}||||<qNWq$WqW|jj|iS)Nz%s/%s)rÚtoc_fignumbersr6Ú
setdefaultrr)	rZnew_fignumbersrZ
fignumlistZfigtypeZfignumsr8r7ZfignumrrrÚassemble_toc_fignumbers_s
z-SingleFileHTMLBuilder.assemble_toc_fignumbers)rÚbodyÚmetatagsrc
Csdt|jƒj|jj|dƒ}|r:|j|ƒ|j|ƒd}d}nd}d}gddd|jjd||gd||dœS)NFr.TÚ)ÚparentsÚprevÚnextZ	docstitleÚtitleÚmetar=r>ZrellinksZ
sourcenameÚtocÚdisplay_toc)rrr/rrr+r0Z
html_title)rrr=r>r1rErFrrrÚget_doc_contextts&
z%SingleFileHTMLBuilder.get_doc_context)ÚignoredrcGsž|jj}ttdƒƒ|j|ƒWdQRXttdƒƒ&|jƒ}|jƒ|j_|jƒ|j_	WdQRXttdƒƒ&|j
|jj|ƒ|j
|jj|ƒWdQRXdS)Nzpreparing documentszassembling single documentÚwriting)rrrr
Zprepare_writingr4r9r5r<r:Zwrite_doc_serializedrrZ	write_doc)rrHZdocnamesZdoctreerrrÚwriteŽszSingleFileHTMLBuilder.writecCs<|jƒ|jƒ|jƒ|jƒ|jƒ|jƒ|jƒdS)N)Úwrite_additional_filesZcopy_image_filesZcopy_download_filesZcopy_static_filesZcopy_extra_filesZwrite_buildinfoZdump_inventory)rrrrÚfinishszSingleFileHTMLBuilder.finishzwriting additional filescCsvx8|jjjƒD](\}}tjd|dd|j|i|ƒqW|jjrrtjdddtj|j	ddƒ}|jdid|ddS)	Nú T)Znonlz opensearchZ_staticzopensearch.xmlZ
opensearch)Zoutfilename)
rZhtml_additional_pagesr6ÚloggerÚinfoZhandle_pageZhtml_use_opensearchrÚjoinZoutdir)rZpagenameÚtemplateÚfnrrrrK¦sz,SingleFileHTMLBuilder.write_additional_files)N)N)T) Ú__name__Ú
__module__Ú__qualname__Ú__doc__Únamer
ÚepilogZ
copysourcerÚstrrrrr"r	r+Úboolrr2rÚdocumentr4rrÚintr9r<rGrJrLrrKrrrrrs"		&.	
r)ÚapprcCs2|jdƒ|jtƒ|jddd„dƒddddœS)	Nzsphinx.builders.htmlZsinglehtml_sidebarscSs|jS)N)Z
html_sidebars)rrrrÚ<lambda>¹szsetup.<locals>.<lambda>ÚhtmlÚbuiltinT)ÚversionZparallel_read_safeZparallel_write_safe)Zsetup_extensionZadd_builderrZadd_config_value)r]rrrÚsetupµs

rbN)"rVÚosrÚtypingrrrrrZdocutilsrZdocutils.nodesr	Zsphinx.applicationr
Zsphinx.builders.htmlrZ#sphinx.environment.adapters.toctreerZ
sphinx.localer
Zsphinx.utilrrZsphinx.util.consolerZsphinx.util.nodesrÚ	getLoggerrSrNrrYrbrrrrÚ<module>s
"