
    -Ph                        d 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 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 ddlmZ ddlmZ ddlm Z   ej!        e"          Z# G d de          Z$ddZ%dS )zSingle HTML builders.    )annotationsN)TYPE_CHECKING)nodes)	darkgreen)StandaloneHTMLBuilder)RemovedInSphinx10Warning)global_toctree_for_doc)__)logging)progress_message)inline_all_toctrees)Set)Any)Node)Sphinx)ExtensionMetadatac                      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	 d0d1dZd2dZd3dZd4d Zd5d$Zd6d'Zd7d(Z e ed)                    d7d*            ZdS )8SingleFileHTMLBuilderz5Builds the whole document tree as a single HTML page.
singlehtmlzThe HTML page is in %(outdir)s.Freturnstr | list[str]c                    dS )Nzall documents selfs    Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/builders/singlehtml.pyget_outdated_docsz'SingleFileHTMLBuilder.get_outdated_docs'   s        Ndocnamestrtyp
str | Nonec                <    || j         j        v rd|z   S || j        z   S )Nz
#document-)envall_docs
out_suffix)r   r   r!   s      r   get_target_uriz$SingleFileHTMLBuilder.get_target_uri*   s,    dh'''')) T_,,r   from_toc                .    |                      ||          S N)r'   )r   r(   r)   r!   s       r   get_relative_uriz&SingleFileHTMLBuilder.get_relative_uri2   s    ""2s+++r   treer   Nonec                0   d}t          j        |t          d           |                    t          j                  D ]W}d|vr|d         }|                    d          }|dk     r+|                    d|dz             }|dk    r||d          |d<   Xd S )NzThe 'SingleFileHTMLBuilder.fix_refuris' method is no longer used within the builder and is planned for removal in Sphinx 10. Please report malformed URIs generated by the Sphinx singlehtml builder as bugreports.   )
stacklevelrefuri#r      )warningswarnr   findallr   	referencefind)r   r-   deprecation_msgrefnoder2   	hashindexs         r   fix_refurisz!SingleFileHTMLBuilder.fix_refuris6   s    % 	 	o'?ANNNN ||EO44 
	7 
	7Gw&&X&FC((I1}}CQ77IA~~$*9::$6!
	7 
	7r   Tcollapseboolkwargsr   c                   t          |                    d          x}t                    r;|                                dk    rd|d<   n|                                dk    rd|d<   |                    d          dk    r|                    d           t          | j        || fd|i|}|                     |          d	         S )
NincludehiddenfalseFtrueTmaxdepth r>   fragment)
isinstancegetr    lowerpopr	   r$   render_partial)r   r   r>   r@   rB   toctrees         r   _get_local_toctreez(SingleFileHTMLBuilder._get_local_toctreeL   s     vzz/'B'BBmCHH 	/""$$//*/''$$&&&00*.'::j!!R''JJz"""(Hgt
 
.6
:@
 
 ""7++J77r   nodes.documentc                .   | j         j        }| j                            |          }t                              t          |                     t          | t                      ||t          |g          }||d<   | j        	                    |||            |S )Nr   )
configroot_docr$   get_doctreeloggerinfor   r   setresolve_references)r   masterr-   s      r   assemble_doctreez&SingleFileHTMLBuilder.assemble_doctree[   s    %x##F++If%%&&&"4i&RR Y##D&$777r   %dict[str, dict[str, tuple[int, ...]]]c                    i }| j         j                                        D ]+\  }}|                                D ]\  }}| d| }|||<   ,| j        j        |iS N/)r$   toc_secnumbersitemsrQ   rR   )r   new_secnumbersr   secnumsidsecnumaliass          r   assemble_toc_secnumbersz-SingleFileHTMLBuilder.assemble_toc_secnumbersd   s     68 $ 7 = = ? ? 	/ 	/GW%mmoo / /
F"))R))(.u%%/ $n55r   0dict[str, dict[str, dict[str, tuple[int, ...]]]]c                "   i }| j         j                                        D ]a\  }}|                                D ]G\  }}| d| }|                    |i            |                                D ]\  }}|||         |<   Hb| j        j        |iS r\   )r$   toc_fignumbersr_   
setdefaultrQ   rR   )	r   new_fignumbersr   
fignumlistfigtypefignumsrd   rb   fignums	            r   assemble_toc_fignumbersz-SingleFileHTMLBuilder.assemble_toc_fignumbersv   s     AC#'8#:#@#@#B#B 	7 	7GZ$.$4$4$6$6 7 7 "..W..))%444")--// 7 7JB06N5)"--77 $n55r   bodymetatagsdict[str, Any]c                    t          | j        | j        j        | d          }|r|                     |          d         }d}nd}d}g d d d | j        j        d ||g d||dS )NF)r>   rG   TrF   )parentsprevnext	docstitletitlemetarp   rq   rellinks
sourcenametocdisplay_toc)r	   r$   rQ   rR   rL   
html_title)r   r   rp   rq   rM   r|   r}   s          r   get_doc_contextz%SingleFileHTMLBuilder.get_doc_context   s    (Hdk*D5
 
 
  	 %%g..z:CKKCK[+ &
 
 	
r   	_docnamesSet[str]c                ^   |                      | j        j                                                   t	          t          d          d          5  |                                 }|                                 | j        _        | 	                                | j        _
        d d d            n# 1 swxY w Y   t	          t          d                    5  |                     | j        j        |           |                     | j        j        |           d d d            d S # 1 swxY w Y   d S )Nzassembling single documentFnonlwriting)prepare_writingr$   r%   keysr   r
   rY   re   r^   ro   rh   write_doc_serializedrQ   rR   	write_doc)r   r   doctrees      r   write_documentsz%SingleFileHTMLBuilder.write_documents   s   TX.3355666b!=>>UKKK 	E 	E++--G&*&B&B&D&DDH#&*&B&B&D&DDH#	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
 bmm,, 	: 	:%%dk&:GDDDNN4;/999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s&   AB--B14B1AD""D&)D&c                   |                                   |                                  |                                  |                                  |                                  |                                  |                                  d S 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   s    ##%%%  """   r   zwriting additional filesc                L   | j         j                                        D ]9\  }}t                              d|d           |                     |i |           :| j         j        r?t                              dd           |                     di d| j        dz             d S d S )Nz %sTr   z opensearch
opensearchzopensearch.xml)outfilename)rQ   html_additional_pagesr_   rT   rU   handle_pagehtml_use_opensearch_static_dir)r   pagenametemplates      r   r   z,SingleFileHTMLBuilder.write_additional_files   s    
 #'+"C"I"I"K"K 	5 	5HhKKxdK333Xr84444;* 	KKDK111  ,/??	      	 	r   )r   r   r+   )r   r    r!   r"   r   r    )r(   r    r)   r    r!   r"   r   r    )r-   r   r   r.   )T)r   r    r>   r?   r@   r   r   r    )r   rO   )r   rZ   )r   rf   )r   r    rp   r    rq   r    r   rr   )r   r   r   r.   )r   r.   )__name__
__module____qualname____doc__namer
   epilog
copysourcer   r'   r,   r=   rN   rY   re   ro   r   r   r   r   r   r   r   r   r   r      s[       ??DR122FJ   - - - - -, , , , ,7 7 7 7. .28 8 8 8 8   6 6 6 6$6 6 6 6.
 
 
 
6
: 
: 
: 
:    bb34455   65  r   r   appr   r   r   c                    |                      d           |                     t                     |                     dd dt	          t
          h                     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' r   html)typesbuiltinT)versionparallel_read_safeparallel_write_safe)setup_extensionadd_builderr   add_config_value	frozensetdict)r   s    r   setupr      sz    .///OO)***''	     "#  r   )r   r   r   r   )&r   
__future__r   r5   typingr   docutilsr   sphinx._cli.util.colourr   sphinx.builders.htmlr   sphinx.deprecationr   #sphinx.environment.adapters.toctreer	   sphinx.localer
   sphinx.utilr   sphinx.util.displayr   sphinx.util.nodesr   collections.abcr   r   docutils.nodesr   sphinx.applicationr   sphinx.util.typingr   	getLoggerr   rT   r   r   r   r   r   <module>r      s     " " " " " "                    - - - - - - 6 6 6 6 6 6 7 7 7 7 7 7 F F F F F F             0 0 0 0 0 0 1 1 1 1 1 1 5############))))))444444		8	$	$n n n n n1 n n nb     r   