
    Ri                    j   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jB                  e"      Z# ee"d      Z$ ejJ                   ejL                  e'            Z( G d de      Z)ddZ*y)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                  \     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/jpegTc                >    t         |           d| _        d| _        y )Nz.html)superinit
out_suffixlink_suffix)self	__class__s    V/home/agent/.friday_env/lib/python3.12/site-packages/sphinxcontrib/devhelp/__init__.pyr   zDevhelpBuilder.init8   s    !"    c                d    | j                  | j                  | j                  j                         y N)build_devhelpoutdirconfigdevhelp_basenamer   s    r   handle_finishzDevhelpBuilder.handle_finish=   s     4;;(D(DEr   c                   t         j                  t        d             t        j                  d| j
                  j                  | j
                  j                  d| j
                  j                        }t        j                  |      }t        j                  |d      }| j                  j                  | j
                  j                  | d      }dfdt        t        j                   t"        	      }|j%                  |      D ]  } ||        t        j                  |d
      t'        | j                        j)                  |       }	dfd|	D ]  \  }
}|D ]  \  }\  }}} |||         t+        j,                  ||dz         }t/        j0                  |dd      5 }|j3                  |d       d d d        y # 1 sw Y   y xY w)Nzdumping devhelp index...bookz
index.html)titlenamelinkversionchaptersF)prune_toctreesc                   t        | t        j                  t        j                  f      r| D ]  } ||        y t        | t        j
                        r't        j                  |d      }| D ]  } ||        y t        | t        j                        r0| d   |j                  d<   | j                         |j                  d<   y y )Nsubrefurir*   r)   )
isinstancer   compact_paragraphr   bullet_list	list_itemetree
SubElement	referenceattribastext)nodeparentsubnodeitem	write_tocs       r   r>   z/DevhelpBuilder.build_devhelp.<locals>.write_tocQ   s    $!;!;U=N=N OP# /Ggv./D%//2''6# -Ggt,-D%//2(,Xf%(,f% 3r   )toctree	functionsc                T   t        |      dk(  rnbt        |      dk(  r t        j                  d| |d   d          n4t        |      D ]&  \  }}t        j                  dd|| fz  |d          ( |r4t	        j
                  dd|       }|D ]  } | d|d    |d   g         y y )	Nr      function)r)   r*   z[%d] %sz\s*\(.*\)\s*$  )lenr5   r6   	enumeraterer/   )	r(   refssubitemsirefparent_titlesubitemr@   write_indexs	          r   rO   z1DevhelpBuilder.build_devhelp.<locals>.write_indexe   s    4yA~Ta  J&+$q'!*> (o 2FAs$$Y
*3q%j*@*-a&22
 !vv&6EB' 0G<.'!* > '
B00 r   z.devhelp.gzwr   )filenamemodemtimezutf-8)r:   z
nodes.Noder;   zetree.ElementreturnNone)r(   strrI   z	list[Any]rJ   r   rT   rU   )loggerinfo__r5   Elementr"   
html_titleprojectr+   ElementTreer6   envget_and_resolve_doctree
master_docr   r   r2   r   findallr
   create_indexr   joingzipGzipFilewrite)r   r!   outnameroottreer,   tocdocmatcherr:   index
_group_keygroupr(   rI   rJ   _category_keyxmlfilefr@   rO   r>   s                     @@@r   r    zDevhelpBuilder.build_devhelp@   s   B123 }}V#';;#9#9"&++"5"5".%)[[%8%8	:
   & ##D*511KK""D 2 @
	6 h88#FNN7+ 	&DdH%	& $$T;7	TXX&33D9	0$ $) 	3Z:? 366hE423	3
 ))FGm$;<]]G#Q? 	#1JJq'"	# 	# 	#s   -G		G)rT   rU   )r!   zstr | os.PathLike[str]rg   rV   rT   rU   )__name__
__module____qualname____doc__r)   rY   epilog
copysourcesupported_image_typesadd_permalinksembeddedr   r%   r    __classcell__)r   s   @r   r   r   %   sG     D  F JD NH#
F>#r   r   c                   | j                  d       | j                  d       | j                  t               | j	                  t
        t        j                  t        d             | j                  dd d       t        dddS )	Nz5.0zsphinx.builders.htmllocalesr#   c                ,    t        | j                        S r   )r   r\   r$   s    r   <lambda>zsetup.<locals>.<lambda>   s    mDLL&A r   r   T)r+   parallel_read_safeparallel_write_safe)require_sphinxsetup_extensionadd_builderr   add_message_catalogrr   r   rc   package_diradd_config_value__version__)apps    r   setupr      sr    u./OON#HdiiY&GH+A"$
 "# r   )r   r   rT   zdict[str, Any])+ru   
__future__r   rd   osrH   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.ElementTreer5   r]   r   __version_info__	getLoggerrr   rW   rY   abspathdirname__file__r   r   r    r   r   <module>r      s   
 #  	 	  %   6 A )  ) ,) % % 			8	$Xy)dll<4<<12Y#* Y#xr   