
    -Ph0                       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 ddl	m
Z
 ddlmZ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m Z  ddl!m"Z" erddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ej*        dd         dk    rddl+m,Z, nddlm,Z, dZ-dZ. ej/        e0          Z1 ee0d          Z2 ej3         ej4        e5                    Z6 ej7        e6d          Z8i ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJZ9d]d^dQZ: G dR dSej;                  Z< G dT dUe          Z=d_dXZ>d`d\Z?dS )azBuild HTML help support files.    )annotationsN)codepoint2name)path)Path)TYPE_CHECKINGAny)nodes)addnodes)StandaloneHTMLBuilder)IndexEntries)get_translation)logging)copy_asset_file)NodeMatcher)make_filename_from_projectrelpath)SphinxRenderer)ElementNode)Sphinx)Config   )      )progress_messagez2.1.0)r   r   r   console	templatesca)i  cp1252cs)i  cp1250da)i  r   de)i  r   en)	  r   es)i
  r   et)i%  cp1257fa)i)  cp1256fi)i  r   fr)i  r   hr)i  r!   hu)i  r!   it)i  r   ja)i  cp932ko)i  cp949lt)i'  r(   lv)i&  r(   )i  r   )i  r   )i  r!   )i  r   )i  zwindows-1251)i  r!   )i$  r!   )i  r   )i  cp1254)i"  cp1251)i  cp936)i  cp950)nlno_NBplpt_BRruskslsvtruk_UAzh_CNzh_TWTsstrquoteboolreturnc                \    t          j        | |          } |                     dd          } | S )a5  
    chm_htmlescape() is a wrapper of html.escape().
    .hhc/.hhk files don't recognize hex escaping, we need convert
    hex escaping to decimal escaping. for example: ``&#x27;`` -> ``&#39;``
    html.escape() may generates a hex escaping ``&#x27;`` for single
    quote ``'``, this wrapper fixes this.
    z&#x27;z&#39;)htmlescapereplace)rF   rH   s     _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinxcontrib/htmlhelp/__init__.pychm_htmlescaperP   R   s-     	AuA			(G$$AH    c                  h     e Zd Zd fdZddZdd	ZddZddZddZddZ	ddZ
ddZddZ xZS )ToCTreeVisitordocumentnodes.documentrJ   Nonec                f    t                                          |           g | _        d| _        d S )Nr   )super__init__bodydepth)selfrT   	__class__s     rO   rY   zToCTreeVisitor.__init__`   s-    """!	


rQ   textrG   c                :    | j                             |           d S N)rZ   append)r\   r^   s     rO   ra   zToCTreeVisitor.appende   s    	rQ   c                6    d                     | j                  S )N
)joinrZ   r\   s    rO   astextzToCTreeVisitor.astexth   s    yy###rQ   noder   c                    d S r`    r\   rg   s     rO   unknown_visitzToCTreeVisitor.unknown_visitk       rQ   c                    d S r`   ri   rj   s     rO   unknown_departurez ToCTreeVisitor.unknown_departuren   rl   rQ   r   c                f    | j         dk    r|                     d           | xj         dz  c_         d S )Nr   z<UL>r   r[   ra   rj   s     rO   visit_bullet_listz ToCTreeVisitor.visit_bullet_listq   s2    :>>KK

a



rQ   c                j    | xj         dz  c_         | j         dk    r|                     d           d S d S )Nr   r   </UL>rp   rj   s     rO   depart_bullet_listz!ToCTreeVisitor.depart_bullet_listw   s;    

a

:>>KK      >rQ   c                P    |                      d           | xj        dz  c_        d S )Nz!<LI> <OBJECT type="text/sitemap">r   )ra   r[   rj   s     rO   visit_list_itemzToCTreeVisitor.visit_list_item|   s(    7888

a



rQ   c                &    | xj         dz  c_         d S )Nr   )r[   rj   s     rO   depart_list_itemzToCTreeVisitor.depart_list_item   s    

a



rQ   c                    t          |                                d          }|                     d| d           |                     d|d          d           |                     d           t          j        )NTz    <param name="Name" value="z">z    <param name="Local" value="refuriz	</OBJECT>)rP   rf   ra   r	   SkipNode)r\   rg   titles      rO   visit_referencezToCTreeVisitor.visit_reference   ss    t{{}}d33>U>>>???Hd8nHHHIIIK   nrQ   )rT   rU   rJ   rV   )r^   rG   rJ   rV   )rJ   rG   )rg   r   rJ   rV   )rg   r   rJ   rV   )__name__
__module____qualname__rY   ra   rf   rk   rn   rq   rt   rv   rx   r}   __classcell__r]   s   @rO   rS   rS   _   s             
   $ $ $ $         ! ! ! !
             rQ   rS   c                  b    e Zd ZdZdZ ed          ZdZg dZdZ	dZ
dZdZdZd+ fdZd, fdZd-dZed.d            Zd+dZd/ fdZd0d Z e ed!                    d+d"            Z e ed#                    d+d$            Z e ed%                    d+d&            Zd1d*Z xZS )2HTMLHelpBuilderz
    Builder that also outputs Windows HTML help project, contents and
    index files.  Adapted from the original Doc/tools/prechm.py.
    htmlhelpzDYou can now run HTML Help Workshop with the .htp file in %(outdir)s.F)z	image/pngz	image/gifz
image/jpegTr%   r   rJ   rV   c                    d| _         d| _        t                                                       t                              | j        j                  }||\  | _        | _	        d S d S )N.html)

out_suffixlink_suffixrX   initchm_localesgetconfiglanguagelcidencoding)r\   localer]   s     rO   r   zHTMLHelpBuilder.init   sY    !"!566'-$DIt}}} rQ   docnamesset[str]c                ^    t                                          |           d| j        d<   d S )NFhtml5_doctype)rX   prepare_writingglobalcontext)r\   r   r]   s     rO   r   zHTMLHelpBuilder.prepare_writing   s.    ))).3?+++rQ   pagenamerG   templatenamectxdict[str, Any]	event_argc                    | j         |d<   |                    d          }| t          j        d| j        |          |d<   d S d S )Nr   rZ   z[^\x00-\x7F])r   r   resub_escape)r\   r   r   r   r   rZ   s         rO   update_page_contextz#HTMLHelpBuilder.update_page_context   sK     -J wwv&$,EECKKK rQ   matchre.Match[str]c                    t          |                     d                    }|t          v rdt          |          dS d| dS )Nr   &;z&#)ordgroupr   )r   	codepoints     rO   r   zHTMLHelpBuilder._escape   sK    A''	&&3~i03333 I    rQ   c                    |                                   |                                  |                                  |                     | j        | j        j                   d S r`   )copy_stopword_listbuild_project_filebuild_toc_file	build_hhxoutdirr   htmlhelp_basenamere   s    rO   handle_finishzHTMLHelpBuilder.handle_finish   sY    !!!!!!t{DK$ABBBBBrQ   docnamedoctreerU   c                    |                     t          j                  D ] }|                    d          	d|v rd|d<   !t	                                          ||           d S )Ninternalrz   _blanktarget)findallr	   	referencer   rX   	write_doc)r\   r   r   rg   r]   s       rO   r   zHTMLHelpBuilder.write_doc   sf    OOEO44 	* 	*Dxx
##+D0@0@!)X'7+++++rQ   namecontextc                V    t          t                    }|                    ||          S r`   )r   template_dirrender)r\   r   r   templates       rO   r   zHTMLHelpBuilder.render   s#    !,//tW---rQ   zcopying stopword listc                    t          j        t          d          }t          j        | j        | j        j        dz             }t          ||           dS )a  Copy a stopword list (.stp) to outdir.

        The stopword list contains a list of words the full text search facility
        shouldn't index.  Note that this list must be pretty small.  Different
        versions of the MS docs claim the file has a maximum size of 256 or 512
        bytes (including 
 at the end of each line).  Note that "and", "or",
        "not" and "near" are operators in the search language, so no point
        indexing them even if we wanted to.
        zproject.stpz.stpN)r   rd   r   r   r   r   r   )r\   r   filenames      rO   r   z"HTMLHelpBuilder.copy_stopword_list   sH     9\=999T[$+*G&*PQQ(+++++rQ   zwriting project filec                b   g }t          j        | j                  D ]\  }}}|                                 |                                 |                    t          j        | j        d                    }t          |          D ]}|r|                    d          r|                    d          r[t          t          j        ||          | j                  }|
                    |                    t           j        d                     | j        j        | j        j        | j        j        | j        j        | j        | j        j        | j        z   |d}|                     d|          }t-          | j        | j        j         d          }	|	                    || j        d	           d
S )z'Create a project file (.hhp) on outdir._staticz.jsr   \)outnamer|   versionprojectr   
master_docfileszproject.hhpz.hhpxmlcharrefreplacer   errorsN)oswalkr   sort
startswithr   rd   sortedendswithr   ra   rN   sepr   r   
html_titler   r   r   r   r   r   r   
write_textr   )
r\   project_filesrootdirsr   in_staticdirfnr   rZ   r   s
             rO   r   z"HTMLHelpBuilder.build_project_file   s    $&!#!5!5 	C 	CD$IIKKKJJLLL??49T[)+L+LMMLUmm C C  CU);); CG@T@T C 4!4!4dkBBB!((BFD)A)ABBBC {4[+{*{*I+04?B"
 
 {{='22(E%K%K%KLLD4=ATUUUUUrQ   zwriting TOC filec                   | j                             | j        j        | d          }t	          |          }t          t          j        d          }|                    |          D ]}|	                    |           |
                                | j        | j        j        | j        j        | j        d}|                     d|          }t          | j        | j        j         d          }|                    || j        d	           d
S )z#Create a ToC file (.hhp) on outdir.F)prune_toctreesT)toctree)rZ   suffixshort_titler   domain_indiceszproject.hhcz.hhcr   r   N)envget_and_resolve_doctreer   r   rS   r   r
   compact_paragraphr   	walkaboutrf   r   html_short_titler   r   r   r   r   r   r   )r\   r   visitormatcherrg   r   rZ   r   s           rO   r   zHTMLHelpBuilder.build_toc_file  s    (224;3I4BG 3 I I ))h8$GGGOOG,, 	$ 	$DNN7#### NN$$o;7+0"1
 
 {{='22(E%K%K%KLLD4=ATUUUUUrQ   r   str | os.PathLike[str]r   c                J   t                               t          d                     t          | j                                      |           }t          ||dz             }t          |d| j        d          5 	                    d           dfd|D ]\  }}|D ]\  }\  }}	}
 |||	           	                    d           d d d            n# 1 swxY w Y   |
                                                    dd          }|                    |           d S )Nzwriting index file...z.hhkwr   r   z<UL>
r|   rG   refslist[tuple[str, str]]subitems'list[tuple[str, list[tuple[str, str]]]]rJ   rV   c                L   dfd}t          | d          }                     d            |d	|            t          |          d
k    r |d|            njt          |          dk    r |d|d
         d                    n>t          |          D ].\  }} |dd||d         fz              |d|d                    /                    d           |rJ                    d           |D ]} |d
         |d         g                                d           d S d S )Nr   rG   valuerJ   rV   c                D    d|  d| d}                     |           d S )Nz    <param name="z	" value="z">
)write)r   r   itemfs      rO   write_paramzCHTMLHelpBuilder.build_hhx.<locals>.write_index.<locals>.write_param#  s.    ItIIeIIIDGGDMMMMMrQ   Tz"<LI> <OBJECT type="text/sitemap">
Keywordr   zSee Alsor   LocalNamez[%d] %sz
</OBJECT>
z<UL> rs   )r   rG   r   rG   rJ   rV   )rP   r   len	enumerate)	r|   r   r   r   irefsubitemr   write_indexs	          rO   r   z.HTMLHelpBuilder.build_hhx.<locals>.write_index  sv   
" " " " " " 'ud33=>>>Iu---t99>>K
E2222YY!^^Ka4444"+D// 5 53#FICF,CDDD#GSV4444&&& %GGG$$$#+ @ @#GAJ
B????GGG$$$$$	% %rQ   z</UL>
s   &#x27;s   &#39;)r|   rG   r   r   r   r   rJ   rV   )loggerinfo__r   r   create_indexr   openr   r   
read_bytesrN   write_bytes)r\   r   r   indexr   
_group_keyr   r|   r   r   _category_keycontentr   r   s               @@rO   r   zHTMLHelpBuilder.build_hhx  s   B.//000TX&&33D99& 011(C$-@STTT  	XYGGH% % % % % % %4 (- 7 7#U>C 7 7:E:D(MKtX66667GGIA 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	D %%''//	8DDW%%%%%s   <ACC"C)rJ   rV   )r   r   rJ   rV   )
r   rG   r   rG   r   r   r   rG   rJ   rV   )r   r   rJ   rG   )r   rG   r   rU   rJ   rV   )r   rG   r   r   rJ   rG   )r   r   r   rG   rJ   rV   )r~   r   r   __doc__r   r  epilog
copysourcesupported_image_typesadd_permalinksembeddedsearchr   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   s   @rO   r   r      s         DR   F JDDD NH FDH. . . . . .4 4 4 4 4 4F F F F ! ! ! \!C C C C, , , , , ,. . . . bb01122, , , 32, bb/0011V V V 21V4 bb+,,--V V V .-V('& '& '& '& '& '& '& '&rQ   r   r   r   c                0    t          | j                  dz   S )z)Better default htmlhelp_basename setting.doc)r   r   )r   s    rO   default_htmlhelp_basenamer  A  s    %fn55==rQ   appr   r   c                   |                      d           |                     d           |                     t                     |                     t
          t          j        t          d                     | 	                    dt          d           | 	                    dd dt          g           | 	                    dd dt          g           t          d	d	d
S )Nz5.0zsphinx.builders.htmllocalesr    htmlhelp_file_suffixrL   htmlhelp_link_suffixT)r   parallel_read_safeparallel_write_safe)require_sphinxsetup_extensionadd_builderr   add_message_catalogr~   r   rd   package_diradd_config_valuer  rG   __version__)r  s    rO   setupr%  F  s    u.///OOO$$$HdiY&G&GHHH,.GLLL/vuEEE/vuEEE "#  rQ   )T)rF   rG   rH   rI   rJ   rG   )r   r   rJ   rG   )r  r   rJ   r   )@r  
__future__r   rL   r   r   html.entitiesr   r   pathlibr   typingr   r   sphinxdocutilsr	   r
   sphinx.builders.htmlr   (sphinx.environment.adapters.indexentriesr   sphinx.localer   sphinx.utilr   sphinx.util.fileutilr   sphinx.util.nodesr   sphinx.util.osutilr   r   sphinx.util.templater   docutils.nodesr   r   sphinx.applicationr   sphinx.configr   version_infosphinx.util.displayr   r$  __version_info__	getLoggerr~   r   r  abspathdirname__file__r"  rd   r   r   rP   NodeVisitorrS   r   r  r%  ri   rQ   rO   <module>r?     s   $ $ " " " " " "  				 				 ( ( ( ( ( (             % % % % % % % %              6 6 6 6 6 6 A A A A A A ) ) ) ) ) )       0 0 0 0 0 0 ) ) ) ) ) ) B B B B B B B B / / / / / / %,,,,,,,,))))))$$$$$$	rrf$$4444444,,,,,, 		8	$	$_Xy))dl<4<1122tyk22 	 		
 	 	 	 	 	 	 	 	 	 	 	  	!" 	#$ 	%& $=  D
 
 
 
 
) ) ) ) )U& ) ) )Xs& s& s& s& s&+ s& s& s&l> > > >
     rQ   