
    O&i                        d Z ddlmZ ddlmZmZmZmZ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mZ ddlmZ ddlmZ  ej        e          Z G d de          Z dedee!ef         fdZ"dS )zSingle HTML builders.    )path)AnyDictListOptionalTupleUnion)nodes)Node)Sphinx)StandaloneHTMLBuilder)TocTree)__)loggingprogress_message)	darkgreen)inline_all_toctreesc            
          e Zd ZdZdZ ed          ZdZdee	e
e	         f         fdZd de	d	ee	         de	fd
Zd de	de	d	ee	         de	fdZdeddfdZd!de	dedede	fdZdej        fdZdee	ee	eedf         f         f         fdZdee	ee	ee	eedf         f         f         f         fdZde	de	de	dee	ef         fdZdeddfdZd"dZ e ed                    d"d            Z dS )#SingleFileHTMLBuilderzb
    A StandaloneHTMLBuilder subclass that puts the whole document tree on one
    HTML page.
    
singlehtmlzThe HTML page is in %(outdir)s.Freturnc                     dS )Nzall documents selfs    g/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/builders/singlehtml.pyget_outdated_docsz'SingleFileHTMLBuilder.get_outdated_docs   s        Ndocnametypc                 f    || 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   r   r    s      r   get_target_uriz$SingleFileHTMLBuilder.get_target_uri!   sE    dh''';'$/9&' ' T_,,r   from_toc                 .    |                      ||          S N)r'   )r   r(   r)   r    s       r   get_relative_uriz&SingleFileHTMLBuilder.get_relative_uri*   s    ""2s+++r   treec                 "   | j         j        | j        z   }|                    t          j                  D ]Z}d|vr|d         }|                    d          }|dk     r+|                    d|dz             }|dk    r|||d          z   |d<   [d S )Nrefuri#r      )r$   r%   r&   findallr
   	referencefind)r   r-   fnamerefnoder/   	hashindexs         r   fix_refurisz!SingleFileHTMLBuilder.fix_refuris.   s    $t6||EO44 		? 		?Gw&&X&FC((I1}}CQ77IA~~$)F9::,>$>!		? 		?r   Tcollapsekwargsc                     d|vrd|d<    t          | j                  j        || |fi |}||                     |           |                     |          d         S )NincludehiddenFfragment)r   r"   get_toctree_forr8   render_partial)r   r   r9   r:   toctrees        r   _get_local_toctreez(SingleFileHTMLBuilder._get_local_toctree<   sr    &((&+F?#3'$(##3GT8VVvVVW%%%""7++J77r   c                 
   | j         j        }| j                            |          }t	          | t                      ||t          |g          }||d<   | j                            |||            |                     |           |S )Nr   )	r$   r%   r"   get_doctreer   setr   resolve_referencesr8   )r   masterr-   s      r   assemble_doctreez&SingleFileHTMLBuilder.assemble_doctreeD   sz    %x##F++"4i&RR Y##D&$777r   .c                     i }| j         j                                        D ]+\  }}|                                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_secnumbersM   s}     68 $ 7 = = ? ? 	/ 	/GW%mmoo / /
F#*77BB/(.u%%/ $n55r   c                 "   i }| j         j                                        D ]a\  }}|                                D ]G\  }}|d|}|                    |i            |                                D ]\  }}|||         |<   Hb| j        j        |iS rI   )r"   toc_fignumbersrL   
setdefaultr$   r%   )	r   new_fignumbersr   
fignumlistfigtypefignumsrQ   rO   fignums	            r   assemble_toc_fignumbersz-SingleFileHTMLBuilder.assemble_toc_fignumbers_   s     AC#'8#:#@#@#B#B 	7 	7GZ$.$4$4$6$6 7 7 #*77GG4))%444")--// 7 7JB06N5)"--77 $n55r   bodymetatagsc                    t          | j                                      | j        j        | d          }|r3|                     |           |                     |          d         }d}nd}d}g d d d | j        j        d ||g d||dS )NFr=   T )parentsprevnext	docstitletitlemetar\   r]   rellinks
sourcenametocdisplay_toc)r   r"   r>   r$   r%   r8   r?   
html_title)r   r   r\   r]   r@   rh   ri   s          r   get_doc_contextz%SingleFileHTMLBuilder.get_doc_contextt   s    $(##33DK4H$PUVV 	 W%%%%%g..z:CKKCK[+ &
 
 	
r   ignoredc                    | j         j        }t          t          d                    5  |                     |           d d d            n# 1 swxY w Y   t          t          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preparing documentszassembling single documentwriting)r"   r#   r   r   prepare_writingrG   rR   rK   r[   rT   write_doc_serializedr$   r%   	write_doc)r   rl   docnamesdoctrees       r   writezSingleFileHTMLBuilder.write   s   8$b!67788 	+ 	+  ***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ b!=>>?? 	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	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s7   AAA2ACCC6AEEE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                 v   | j         j                                        D ];\  }}t                              d|z   d           |                     |i |           <| j         j        rRt                              dd           t          j        | j	        dd          }|                     di d|           d S d S )	N T)nonlz opensearch_staticzopensearch.xml
opensearch)outfilename)
r$   html_additional_pagesrL   loggerinfohandle_pagehtml_use_opensearchr   joinoutdir)r   pagenametemplatefns       r   rv   z,SingleFileHTMLBuilder.write_additional_files   s    
 #'+"C"I"I"K"K 	5 	5HhKKhTK222Xr84444;* 	QKKDK1114;	3CDDB\2/?RPPPPP	Q 	Qr   r+   )T)r   N)!__name__
__module____qualname____doc__namer   epilog
copysourcer	   strr   r   r   r'   r,   r   r8   boolr   rA   r
   documentrG   r   r   intrR   r[   rk   rt   r}   r   rv   r   r   r   r   r      si         DR122FJ5d3i#8    - -c - - - - - -, ,c ,s ,# ,RU , , , ,? ? ? ? ? ?8 8# 8 8PS 8X[ 8 8 8 8%.    6c4U38_8L3M.M)N 6 6 6 6$6c4T#uSRUXBV=W8W3X.X)Y 6 6 6 6*
s 
# 
 
cSVh 
 
 
 
4:c :d : : : :    bb34455Q Q Q 65Q Q Qr   r   appr   c                     |                      d           |                     t                     |                     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 r   htmlbuiltinT)versionparallel_read_safeparallel_write_safe)setup_extensionadd_builderr   add_config_value)r   s    r   setupr      sb    .///OO)***.0O0OQWXXX "#  r   N)#r   osr   typingr   r   r   r   r   r	   docutilsr
   docutils.nodesr   sphinx.applicationr   sphinx.builders.htmlr   #sphinx.environment.adapters.toctreer   sphinx.localer   sphinx.utilr   r   sphinx.util.consoler   sphinx.util.nodesr   	getLoggerr   r   r   r   r   r   r   r   <module>r      sw           : : : : : : : : : : : : : : : :             % % % % % % 6 6 6 6 6 6 7 7 7 7 7 7       1 1 1 1 1 1 1 1 ) ) ) ) ) ) 1 1 1 1 1 1		8	$	$^Q ^Q ^Q ^Q ^Q1 ^Q ^Q ^QB
v 
$sCx. 
 
 
 
 
 
r   