
    -Ph                    l   d Z ddlm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	 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c mZ dZdZ  ej!        e"          Z# ee"d          Z$ ej%         ej&        e'                    Z( G d de          Z)ddZ*dS )zgBuild HTML documentation and Devhelp_ support files.

.. _Devhelp: https://wiki.gnome.org/Apps/Devhelp
    )annotationsN)path)TYPE_CHECKINGAny)nodes)addnodes)StandaloneHTMLBuilder)IndexEntries)get_translation)logging)NodeMatcher)make_filename)Sphinxz2.0.0)   r   r   consolec                  b     e Zd ZdZdZ ed          ZdZg dZdZ	dZ
d fd	Zdd
ZddZ xZS )DevhelpBuilderz7
    Builder that also outputs GNOME Devhelp file.
    devhelpzTo view the help file:
$ mkdir -p $HOME/.local/share/devhelp/books
$ ln -s $PWD/%(outdir)s $HOME/.local/share/devhelp/books/%(project)s
$ devhelpF)z	image/pngz	image/gifz
image/jpegTreturnNonec                d    t                                                       d| _        d| _        d S )Nz.html)superinit
out_suffixlink_suffix)self	__class__s    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinxcontrib/devhelp/__init__.pyr   zDevhelpBuilder.init8   s)    !"    c                P    |                      | j        | j        j                   d S N)build_devhelpoutdirconfigdevhelp_basenamer   s    r   handle_finishzDevhelpBuilder.handle_finish=   s%    4;(DEEEEEr   r#   str | os.PathLike[str]outnamestrc                   t                               t          d                     t          j        d| j        j        | j        j        d| j        j                  }t          j	        |          }t          j
        |d          }| j                            | j        j        | d          }dfdt          t          j        t"                    }|                    |          D ]} ||           t          j
        |d          t'          | j                                      |           }	dfd|	D ]\  }
}|D ]\  }\  }}} |||           t+          j        ||dz             }t/          j        |dd          5 }|                    |d           d d d            d S # 1 swxY w Y   d S )Nzdumping devhelp index...bookz
index.html)titlenamelinkversionchaptersF)prune_toctreesnode
nodes.Nodeparentetree.Elementr   r   c                   t          | t          j        t          j        f          r| D ]} ||           d S t          | t          j                  r(t          j        |d          }| D ]} ||           d S t          | t          j                  r.| d         |j	        d<   | 
                                |j	        d<   d S d S )Nsubrefurir/   r.   )
isinstancer   compact_paragraphr   bullet_list	list_itemetree
SubElement	referenceattribastext)r3   r5   subnodeitem	write_tocs       r   rE   z/DevhelpBuilder.build_devhelp.<locals>.write_tocQ   s    $!;U=N OPP 	6# / /GIgv..../ /D%/22 6'66# - -GIgt,,,,- -D%/22 6(,Xf%(,f%%%6 6r   )toctree	functionsr-   r*   refs	list[Any]subitemsr   c                   t          |          dk    rnpt          |          dk    r%t          j        d| |d         d                    n8t          |          D ](\  }}t          j        dd|| fz  |d                    )|r9t	          j        dd|           }|D ]"} | d|d          |d         g            !d S d S )	Nr      function)r.   r/   z[%d] %sz\s*\(.*\)\s*$  )lenr>   r?   	enumeraterer8   )	r-   rH   rJ   irefparent_titlesubitemrG   write_indexs	          r   rW   z1DevhelpBuilder.build_devhelp.<locals>.write_indexe   s   4yyA~~Ta J&+$q'!*> > > > > (oo 2 2FAs$Y
*3q%j*@*-a&2 2 2 2 2  0!v&6EBB' 0 0GK< > >'!* > > '
B0 0 0 00 00 0r   z.devhelp.gzwr   )filenamemodemtimezutf-8)r3   r4   r5   r6   r   r   )r-   r*   rH   rI   rJ   r   r   r   )loggerinfo__r>   Elementr$   
html_titleprojectr0   ElementTreer?   envget_and_resolve_doctree
master_docr   r   r;   r   findallr
   create_indexr   joingzipGzipFilewrite)r   r#   r)   roottreer1   tocdocmatcherr3   index
_group_keygroupr-   rH   rJ   _category_keyxmlfilefrG   rW   rE   s                     @@@r   r"   zDevhelpBuilder.build_devhelp@   sO   B122333 }V#';#9"&+"5".%)[%8	: : :
  && #D*5511K"D 2 @ @
	6 
	6 
	6 
	6 
	6 
	6 h8#FFFNN7++ 	& 	&DIdH%%%% $T;77	TX&&33D99	0 	0 	0 	0 	0 	0 	0$ $) 	3 	3Z:? 3 366hE422223 )FGm$;<<]G#Q??? 	#1JJq'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   F33F7:F7)r   r   )r#   r(   r)   r*   r   r   )__name__
__module____qualname____doc__r.   r^   epilog
copysourcesupported_image_typesadd_permalinksembeddedr   r'   r"   __classcell__)r   s   @r   r   r   %   s          DR   F JDDD NH# # # # # #
F F F F># ># ># ># ># ># ># >#r   r   appr   r   dict[str, Any]c                6   |                      d           |                     d           |                     t                     |                     t
          t          j        t          d                     | 	                    dd d           t          dddS )	Nz5.0zsphinx.builders.htmllocalesr%   c                *    t          | j                  S r!   )r   ra   r&   s    r   <lambda>zsetup.<locals>.<lambda>   s    mDL&A&A r   r   T)r0   parallel_read_safeparallel_write_safe)require_sphinxsetup_extensionadd_builderr   add_message_catalogrv   r   rh   package_diradd_config_value__version__)r   s    r   setupr      s    u.///OON###HdiY&G&GHHH+AA"$ $ $
 "#  r   )r   r   r   r   )+ry   
__future__r   ri   osrR   r   typingr   r   docutilsr   sphinxr   sphinx.builders.htmlr	   (sphinx.environment.adapters.indexentriesr
   sphinx.localer   sphinx.utilr   sphinx.util.nodesr   sphinx.util.osutilr   sphinx.applicationr   xml.etree.ElementTreer>   rb   r   __version_info__	getLoggerrv   r\   r^   abspathdirname__file__r   r   r    r   r   <module>r      s   
 # " " " " "  				 				       % % % % % % % %             6 6 6 6 6 6 A A A A A A ) ) ) ) ) )       ) ) ) ) ) ) , , , , , , *)))))) % % % % % % % % % 		8	$	$_Xy))dl<4<1122Y# Y# Y# Y# Y#* Y# Y# Y#x     r   