
    Fee                        d 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 dd	lmZ dd
lmZ ddlmZ ddlmZ erddlmZ ddlmZ  ej8                  e      Z G d de      ZddZ y)zSingle HTML builders.    )annotations)path)TYPE_CHECKINGAny)nodes)StandaloneHTMLBuilder)global_toctree_for_doc)__)logging)	darkgreen)progress_message)inline_all_toctrees)Node)Sphinxc                      e Zd ZdZdZ ed      ZdZddZdddZ	dddZ
dd	Zddd
ZddZddZddZddZddZddZ e ed            dd       Zy) SingleFileHTMLBuilderzb
    A StandaloneHTMLBuilder subclass that puts the whole document tree on one
    HTML page.
    
singlehtmlzThe HTML page is in %(outdir)s.Fc                     y)Nzall documents selfs    </usr/lib/python3/dist-packages/sphinx/builders/singlehtml.pyget_outdated_docsz'SingleFileHTMLBuilder.get_outdated_docs$   s        Nc                    || j                   j                  v r)| j                  j                  | j                  z   dz   |z   S || j                  z   S )Nz
#document-)envall_docsconfigroot_doc
out_suffix)r   docnametyps      r   get_target_uriz$SingleFileHTMLBuilder.get_target_uri'   sP    dhh''';;''$//9&' ' T__,,r   c                &    | j                  ||      S N)r#   )r   from_tor"   s       r   get_relative_uriz&SingleFileHTMLBuilder.get_relative_uri0   s    ""2s++r   c                    | j                   j                  | j                  z   }|j                  t        j
                        D ]I  }d|vr|d   }|j                  d      }|dk  r$|j                  d|dz         }|dk\  s?|||d  z   |d<   K y )Nrefuri#r      )r   r   r    findallr   	referencefind)r   treefnamerefnoder*   	hashindexs         r   fix_refurisz!SingleFileHTMLBuilder.fix_refuris4   s    $$t6||EOO4 		?Gw&X&FC(I1}CQ7IA~$)F9:,>$>!		?r   c                r   t        |j                  d      x}t              r1|j                         dk(  rd|d<   n|j                         dk(  rd|d<   |j                  d      dk(  r|j	                  d       t        | j                  || fd|i|}|| j                  |       | j                  |      d	   S )
NincludehiddenfalseFtrueTmaxdepth collapsefragment)	
isinstancegetstrlowerpopr	   r   r4   render_partial)r   r!   r;   kwargsr6   toctrees         r   _get_local_toctreez(SingleFileHTMLBuilder._get_local_toctreeB   s    vzz/'BBmCH""$/*/'$$&&0*.'::j!R'JJz"(7D^8^W]^W%""7+J77r   c                   | j                   j                  }| j                  j                  |      }t	        | t               ||t        |g      }||d<   | j                  j                  |||        | j                  |       |S )Nr!   )	r   r   r   get_doctreer   setr   resolve_referencesr4   )r   masterr0   s      r   assemble_doctreez&SingleFileHTMLBuilder.assemble_doctreeO   so    %%xx##F+"4i&R Y##D&$7r   c                    i }| j                   j                  j                         D ])  \  }}|j                         D ]  \  }}| d| }|||<    + | j                  j                  |iS N/)r   toc_secnumbersitemsr   r   )r   new_secnumbersr!   secnumsidsecnumaliass          r   assemble_toc_secnumbersz-SingleFileHTMLBuilder.assemble_toc_secnumbersX   sz     68 $ 7 7 = = ? 	/GW%mmo /
F")1RD)(.u%/	/
 $$n55r   c                0   i }| j                   j                  j                         D ]V  \  }}|j                         D ]>  \  }}| d| }|j                  |i        |j                         D ]  \  }}|||   |<    @ X | j                  j
                  |iS rM   )r   toc_fignumbersrP   
setdefaultr   r   )	r   new_fignumbersr!   
fignumlistfigtypefignumsrU   rS   fignums	            r   assemble_toc_fignumbersz-SingleFileHTMLBuilder.assemble_toc_fignumbersj   s     AC#'88#:#:#@#@#B 	7GZ$.$4$4$6 7 ")1WI.))%4")--/ 7JB06N5)"-77	7 $$n55r   c                    t        | j                  | j                  j                  | d      }|r(| j	                  |       | j                  |      d   }d}nd}d}g d d d | j                  j                  d ||g d||dS )NF)r;   r<   Tr:   )parentsprevnext	docstitletitlemetabodymetatagsrellinks
sourcenametocdisplay_toc)r	   r   r   r   r4   rB   
html_title)r   r!   rg   rh   rD   rk   rl   s          r   get_doc_contextz%SingleFileHTMLBuilder.get_doc_context   s    (4;;3G3GX]^W%%%g.z:CKCK[[++ &
 	
r   c                |   | j                   j                  }t        t        d            5  | j	                  |       d d d        t        t        d            5  | j                         }| j                         | j                   _        | j                         | j                   _	        d d d        t        t        d            5  | j                  | j                  j                         | j                  | j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzpreparing documentszassembling single documentwriting)r   r   r   r
   prepare_writingrK   rV   rO   r_   rX   write_doc_serializedr   r   	write_doc)r   ignoreddocnamesdoctrees       r   writezSingleFileHTMLBuilder.write   s    88$$b!678 	+  *	+ b!=>? 	E++-G&*&B&B&DDHH#&*&B&B&DDHH#	E
 bm, 	:%%dkk&:&:GDNN4;;//9	: 	:	+ 	+	E 	E
	: 	:s%   DAD&AD2D#&D/2D;c                    | j                          | j                          | j                          | j                          | j	                          | j                          | j                          y r%   )write_additional_filescopy_image_filescopy_download_filescopy_static_filescopy_extra_fileswrite_buildinfodump_inventoryr   s    r   finishzSingleFileHTMLBuilder.finish   sV    ##%  " r   zwriting additional filesc                ~   | j                   j                  j                         D ]2  \  }}t        j	                  d|z   d       | j                  |i |       4 | j                   j                  rNt        j	                  dd       t        j                  | j                  dd      }| j                  di d|       y y )	N T)nonlz opensearch_staticzopensearch.xml
opensearch)outfilename)
r   html_additional_pagesrP   loggerinfohandle_pagehtml_use_opensearchr   joinoutdir)r   pagenametemplatefns       r   ry   z,SingleFileHTMLBuilder.write_additional_files   s    
 #'++"C"C"I"I"K 	5HhKKhTK2Xr84	5 ;;**KKDK14;;	3CDB\2/?RP +r   )returnzstr | list[str]r%   )r!   r?   r"   
str | Noner   r?   )r&   r?   r'   r?   r"   r   r   r?   )r0   r   r   None)T)r!   r?   r;   boolrC   r   r   r?   )r   znodes.document)r   z%dict[str, dict[str, tuple[int, ...]]])r   z0dict[str, dict[str, dict[str, tuple[int, ...]]]])r!   r?   rg   r?   rh   r?   r   dict[str, Any])rt   r   r   r   )r   r   )__name__
__module____qualname____doc__namer
   epilog
copysourcer   r#   r(   r4   rE   rK   rV   r_   rn   rw   r   r   ry   r   r   r   r   r      sv     D12FJ-,?86$6*
4: b345Q 6Qr   r   c                    | j                  d       | j                  t               | j                  dd d       ddddS )Nzsphinx.builders.htmlsinglehtml_sidebarsc                    | j                   S r%   )html_sidebarsr   s    r   <lambda>zsetup.<locals>.<lambda>   s    T=O=O r   htmlbuiltinT)versionparallel_read_safeparallel_write_safe)setup_extensionadd_builderr   add_config_value)apps    r   setupr      sH    ./OO)*.0OQWX "# r   N)r   r   r   r   )!r   
__future__r   osr   typingr   r   docutilsr   sphinx.builders.htmlr   #sphinx.environment.adapters.toctreer	   sphinx.localer
   sphinx.utilr   sphinx.util.consoler   sphinx.util.displayr   sphinx.util.nodesr   docutils.nodesr   sphinx.applicationr   	getLoggerr   r   r   r   r   r   r   <module>r      s[     "  %  6 F   ) 0 1#)			8	$cQ1 cQL
r   