
    }c*                     <   d Z ddlZddlZddlZddlZddl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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mZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& erddl'm(Z(  e"j)        e*          Z+de,de-de,fdZ. G d de$e          Z/dS )zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    N)TYPE_CHECKINGIterableOptionalSetTuplecast)nodes)ElementNodeText)HTMLTranslator)addnodes)Builder)RemovedInSphinx60Warning)___admonitionlabels)logging)SphinxTranslator)get_image_size)StandaloneHTMLBuilderlengthscalereturnc                     t          j        d|           }|s| S |dk    r| S |                                \  }}t          |          |z  dz  }t	          |          |S )z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$d   )rematchgroupsfloatint)r   r   matchedamountunitresults         4lib/python3.11/site-packages/sphinx/writers/html5.pymultiply_lengthr'       so    h/88G ,	# ,~~''v&,Vdd++    c                       e Zd ZU dZdZded<    e            Zee	         ed<   de
j        deddf fdZd	eddfd
Zd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZd	eddfdZ d	eddfdZ!d	eddfdZ"d	eddfdZ#d	eddfdZ$d	eddfd Z%d	eddfd!Z&d	eddfd"Z'd	eddfd#Z(d	eddfd$Z)d	eddfd%Z*d	eddfd&Z+d	eddfd'Z,d	eddfd(Z-d	eddfd)Z.d	eddfd*Z/d	eddfd+Z0dd	ed-e	ddfd.Z1dd	e2e         ddfd/Z3d	eddfd0Z4d	eddfd1Z5d	ede6e7d2f         fd3Z8d	eddfd4Z9d	eddfd5Z:d	ed6e	ddfd7Z;d	eddf fd8Z<d	eddfd9Z=d	eddfd:Z>d	eddfd;Z?d	eddfd<Z@d	eddfd=ZAd	eddfd>ZBd	eddf fd?ZCd	eddf fd@ZDd	eddf fdAZEd	eddf fdBZFd	eddf fdCZGd	eddfdDZHd	eddfdEZId	eddfdFZJd	eddfdGZKd	eddfdHZLd	eddfdIZMd	eddfdJZNd	eddfdKZOd	eddfdLZPd	eddfdMZQd	eddfdNZRd	eddfdOZSd	eddfdPZTd	eddfdQZUd	eddfdRZVd	eddf fdSZWd	eddf fdTZXd	eddf fdUZYd	eddfdVZZd	eddfdWZ[d	eddfdXZ\d	eddfdYZ]d	eddfdZZ^d	eddfd[Z_d	eddfd\Z`d	eddfd]Zad	eddfd^Zbd	eddfd_Zcd	eddfd`Zdd	eeddfdaZfd	eddfdbZgd	eddfdcZhd	eddfddZid	eddfdeZjd	eddfdfZkd	eddfdgZld	eddfdhZmd	eddfdiZnd	eddfdjZod	eddfdkZpd	eddfdlZqd	eddfdmZrd	eddfdnZsd	eddfdoZtd	eddfdpZud	eddfdqZvd	eddfdrZwd	eddfdsZxd	eddfdtZyd	eddfduZzd	eddfdvZ{d	eddfdwZ|d	eddfdxZ}d	eddfdyZ~d	eddfdzZd	eddfd{Zd	eddfd|Zd	eddf fd}Zd	eddfd~Zd	eddf fdZd	eddf fdZd	eddfdZdd	ede	ddfdZdd	ede	ddfdZdd	ede	ddfdZdd	ede	ddfdZd	eddfdZed             Zed             Z xZS )HTML5Translatorz%
    Our custom HTML translator.
    Nr   buildersupported_inline_tagsdocumentr   c                 .   t                                          ||           | j        j        | _        | j        j        g| _        | j        j        | _        d| _        | j        j	        | _
        d| _        d| _        dg| _        dg| _        d| _        d S )Nr    )super__init__r+   highlightercurrent_docnamedocnamesconfigmanpages_urlprotect_literal_texthtml_secnumber_suffixsecnumber_suffixparam_separatoroptional_param_level_table_row_indices_fieldlist_row_indicesrequired_params_left)selfr-   r+   	__class__s      r&   r1   zHTML5Translator.__init__8   s    7+++<356 K4$%! $ A!$%!#$#'(c#$%!!!r(   nodec                     | j                             |d                    | j                            d|d         z             d S )Ndocnamez<span id="document-%s"></span>)r4   appendbodyr?   rA   s     r&   visit_start_of_filez#HTML5Translator.visit_start_of_fileF   sB    T)_---	9DOKLLLLLr(   c                 8    | j                                          d S N)r4   poprF   s     r&   depart_start_of_filez$HTML5Translator.depart_start_of_fileK   s    r(   c                 b    | j                             |                     |d                     d S )NdlrE   rD   starttagrF   s     r&   
visit_desczHTML5Translator.visit_descU   s,    	tT2233333r(   c                 :    | j                             d           d S )Nz</dl>

rE   rD   rF   s     r&   depart_desczHTML5Translator.depart_descX   s    	%%%%%r(   c                     | j                             |                     |d                     | xj        dz  c_        d S )Ndt   )rE   rD   rO   r7   rF   s     r&   visit_desc_signaturez$HTML5Translator.visit_desc_signature[   s@    	tT22333!!Q&!!!!r(   c                     | xj         dz  c_         |                    d          s#|                     |t          d                     | j                            d           d S )NrV   is_multilinePermalink to this definitionz</dt>
)r7   getadd_permalink_refr   rE   rD   rF   s     r&   depart_desc_signaturez%HTML5Translator.depart_desc_signature`   sf    !!Q&!!xx'' 	L""4+I)J)JKKK	#####r(   c                     d S rI    rF   s     r&   visit_desc_signature_linez)HTML5Translator.visit_desc_signature_linef       r(   c                     |                     d          r(|                     |j        t          d                     | j                            d           d S )Nadd_permalinkrZ   z<br />)r[   r\   parentr   rE   rD   rF   s     r&   depart_desc_signature_linez*HTML5Translator.depart_desc_signature_linei   sT    88O$$ 	S""4;2P0Q0QRRR	"""""r(   c                 d    | j                             |                     |dd                     d S Nddr/   rN   rF   s     r&   visit_desc_contentz"HTML5Translator.visit_desc_contento   .    	tT26677777r(   c                 :    | j                             d           d S )Nz</dd>rR   rF   s     r&   depart_desc_contentz#HTML5Translator.depart_desc_contentr       	!!!!!r(   c                 d    | j                             |                     |dd                     d S Nspanr/   rN   rF   s     r&   visit_desc_inlinez!HTML5Translator.visit_desc_inlineu   .    	tVR8899999r(   c                 :    | j                             d           d S N</span>rR   rF   s     r&   depart_desc_inlinez"HTML5Translator.depart_desc_inlinex       	#####r(   c                 d    | j                             |                     |dd                     d S ro   rN   rF   s     r&   visit_desc_namezHTML5Translator.visit_desc_name~   rr   r(   c                 :    | j                             d           d S rt   rR   rF   s     r&   depart_desc_namez HTML5Translator.depart_desc_name   rw   r(   c                 d    | j                             |                     |dd                     d S ro   rN   rF   s     r&   visit_desc_addnamez"HTML5Translator.visit_desc_addname   rr   r(   c                 :    | j                             d           d S rt   rR   rF   s     r&   depart_desc_addnamez#HTML5Translator.depart_desc_addname   rw   r(   c                     d S rI   r_   rF   s     r&   visit_desc_typezHTML5Translator.visit_desc_type   ra   r(   c                     d S rI   r_   rF   s     r&   depart_desc_typez HTML5Translator.depart_desc_type   ra   r(   c                     | j                             d           | j                             d           | j                             d           d S )Nz <span class="sig-return">z-<span class="sig-return-icon">&#x2192;</span>z# <span class="sig-return-typehint">rR   rF   s     r&   visit_desc_returnsz"HTML5Translator.visit_desc_returns   sM    	5666	HIII	>?????r(   c                 :    | j                             d           d S )Nz</span></span>rR   rF   s     r&   depart_desc_returnsz#HTML5Translator.depart_desc_returns   s    	)*****r(   c                     | j                             d           d| _        d| _        t	          d |j        D                       | _        |j        | _        d S )Nz <span class="sig-paren">(</span>rV   r   c                 B    g | ]}t          |t          j                  S r_   )
isinstancer   desc_parameter).0cs     r&   
<listcomp>z<HTML5Translator.visit_desc_parameterlist.<locals>.<listcomp>   s;     )A )A )A-. *4Ax7N)O)O )A )A )Ar(   )	rE   rD   first_paramr;   sumchildrenr>   child_text_separatorr:   rF   s     r&   visit_desc_parameterlistz(HTML5Translator.visit_desc_parameterlist   sq    	;<<<$%!$' )A )A26-)A )A )A %B %B!#8r(   c                 :    | j                             d           d S )Nz <span class="sig-paren">)</span>rR   rF   s     r&   depart_desc_parameterlistz)HTML5Translator.depart_desc_parameterlist   s    	;<<<<<r(   c                    | j         rd| _         n&| j        s| j                            | j                   | j        dk    r| xj        dz  c_        |                    d          s| j                            d           d S d S )Nr   rV   noemphz<em class="sig-param">)r   r>   rE   rD   r:   r;   hasattrrF   s     r&   visit_desc_parameterz$HTML5Translator.visit_desc_parameter   s     	3 D* 	3IT1222$) 	+%%*%%||H%% 	7I566666	7 	7r(   c                     |                     d          s| j                            d           | j        r!| j                            | j                   d S d S )Nr   </em>)r   rE   rD   r>   r:   rF   s     r&   depart_desc_parameterz%HTML5Translator.depart_desc_parameter   s`    ||H%% 	&IW%%%$ 	3IT122222	3 	3r(   c                 Z    | xj         dz  c_         | j                            d           d S )NrV   z<span class="optional">[</span>r;   rE   rD   rF   s     r&   visit_desc_optionalz#HTML5Translator.visit_desc_optional   3    !!Q&!!	:;;;;;r(   c                 Z    | xj         dz  c_         | j                            d           d S )NrV   z<span class="optional">]</span>r   rF   s     r&   depart_desc_optionalz$HTML5Translator.depart_desc_optional   r   r(   c                 h    | j                             |                     |ddd                     d S )Nemr/   propertyCLASSrN   rF   s     r&   visit_desc_annotationz%HTML5Translator.visit_desc_annotation   s2    	tT2ZHHIIIIIr(   c                 :    | j                             d           d S )Nr   rR   rF   s     r&   depart_desc_annotationz&HTML5Translator.depart_desc_annotation   rm   r(   c                 r    | j                             |                     |d|d                              d S )Ndivtyper   rN   rF   s     r&   visit_versionmodifiedz%HTML5Translator.visit_versionmodified   s4    	tU$v,GGHHHHHr(   c                 :    | j                             d           d S N</div>
rR   rF   s     r&   depart_versionmodifiedz&HTML5Translator.depart_versionmodified       	$$$$$r(   c           
         ddi}|                     d          sd|vr|dxx         dz  cc<   n|dxx         dz  cc<   d|v rZ|d         pd|d<   | j        j        r@|d                             d	          r%|                     |d                   |d<   d
| _        nd|v s
J d            d|d         z   |d<   t          |j        t          j	                  sEt          |          dk    r t          |d         t          j                  sJ |dxx         dz  cc<   d|v r|d         |d<   d|v r|d         |d<   | j                             | j        |ddfi |           |                     d          rS| j                            d| j        z   d                    t#          t$          |d                             z             d S d S )Nclass	referenceinternalrefuri	 internal	 external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.rV   r   z image-referencereftitletitletargetar/   	secnumberz%s.)r[   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   rd   r	   TextElementlenimagerE   rD   rO   r9   joinmapstrr?   rA   attss      r&   visit_referencezHTML5Translator.visit_reference   s0   %88J 	)84#7 	)MMM[(MMMMMMM[(MMMt 	/>0SDL}2 &tF|7N7Ny7Y7Y &#00f>>V!%d? I IHI I Ig.DL$+u'899 	0t99>Fja%+&F&FFFFMMM//MMM 	- ,DMt 	,!(^DN	tS"====>>>88K   	DIdT%:: XXc#tK/@&A&ABBC D D D D D	D 	Dr(   c                 0    |                      |           d S rI   )r   rF   s     r&   visit_number_referencez&HTML5Translator.visit_number_reference   s    T"""""r(   c                 0    |                      |           d S rI   )depart_referencerF   s     r&   depart_number_referencez'HTML5Translator.depart_number_reference   s    d#####r(   c                     t           j        rI   r	   SkipNoderF   s     r&   visit_commentzHTML5Translator.visit_comment   
    nr(   r/   namec                     | j                             |                     |dd|z                        |r6|                    dt	          j        |t          |                              d S d S )Nr   zadmonition r   r   )rE   rD   rO   insertr	   r   r   )r?   rA   r   s      r&   visit_admonitionz HTML5Translator.visit_admonition   s~    	% 4 ' 7 7 	8 	8 	8 	FKK5;t-=d-CDDEEEEE	F 	Fr(   c                 :    | j                             d           d S r   rR   rF   s     r&   depart_admonitionz!HTML5Translator.depart_admonition   r   r(   c                 2    |                      |d           d S )Nseealsor   rF   s     r&   visit_seealsozHTML5Translator.visit_seealso      dI.....r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_seealsozHTML5Translator.depart_seealso      t$$$$$r(   .c                    |                     d          r|d         S t          |j        t          j                  r| j        j        dk    r9| j        d         }|d|j        d         d         }|| j        j        vrd|z  }n&d|j        d         d         z   }|| j        j        vrd	}| j        j                             |          r| j        j        |         S d S )
Nr   
singlehtmlz/#idsr   z%s/r   r/   )	r[   r   rd   r	   sectionr+   r   r4   
secnumbers)r?   rA   rC   
anchornames       r&   get_secnumberzHTML5Translator.get_secnumber  s    88K   	%$$dk5=11 	;| L0 $-+)0$+e2DQ2G2GH
T\%<< 1!&J 4;u#5a#88
T\%<< $!#J|&**:66 ;|.z::tr(   c           	          |                      |          }|rM| j                            dd                    t	          t
          |                    | j        z   z             d S d S )Nz&<span class="section-number">%s</span>r   )r   rE   rD   r   r   r   r9   )r?   rA   r   s      r&   add_secnumberzHTML5Translator.add_secnumber  s}    &&t,,	 	VIE!hhs3	':':;;d>SSU V V V V V	V 	Vr(   c                 \    dt           dt           dd f fd} j        j        j        d                             |          }|rht          |d                   dk    r5t          d          |j        z  }t          	                    ||	           d S  |||d         d                    d S d S )
Nfigtype	figure_idr   c           	      \   j         j        dk    rj        d         d| }n| }|j         j                            |i           v rj                            d           j        j                            |           }|.t          d          | z  }t                              |           d S j         j        |         |         }j                            |d                    t          t          |                    z  dz              j                            d           d S d S )	Nr   r   /z<span class="caption-number">z#numfig_format is not defined for %sr    ru   )r+   r   r4   
fignumbersr[   rE   rD   r5   numfig_formatr   loggerwarningr   r   r   )r   r   keyprefixmsgnumbersr?   s         r&   append_fignumberz7HTML5Translator.add_fignumber.<locals>.append_fignumber"  s)   | L0 !%r!2!2!2GG<DL377R@@@ 	0	  !@AAA266w?? 0BCCgMCNN3'''''"l5c:9EGI$$Vchhs37H7H.I.I%IC%OPPPI$$Y/////	0 	0r(   stdr   r   z Any IDs not assigned for %s nodelocation)
r   r+   envdomainsget_enumerable_node_typer   r   tagnamer   r   )r?   rA   r  r   r  s   `    r&   add_fignumberzHTML5Translator.add_fignumber!  s    	0c 	0c 	0d 	0 	0 	0 	0 	0 	0" ,"*51JJ4PP 	:4;1$ :;<<t|KsT22222  $u+a.99999	: 	:r(   r   c                     |d         rR| j         j        rH| j        j        r>d}| j                            ||d         d         || j         j        fz             d S d S d S d S )Nr   z2<a class="headerlink" href="#%s" title="%s">%s</a>r   )r5   html_permalinksr+   add_permalinksrE   rD   html_permalinks_icon)r?   rA   r   formats       r&   r\   z!HTML5Translator.add_permalink_ref;  s    ; 	J4;6 	J4<;V 	JIFIVtE{1~u'+{'G'I I J J J J J	J 	J 	J 	J 	J 	Jr(   c                     t          |          dk    r,t          |d         t          j                  rt          j        t                                          |           d S )NrV   r   )r   r   r   toctreer	   r   r0   visit_bullet_listr?   rA   r@   s     r&   r  z!HTML5Translator.visit_bullet_listB  sS    t99> 	!ja(2BCC 	!. !!$'''''r(   c                 d    | j                             |                     |dd                     d S rg   rN   rF   s     r&   visit_definitionz HTML5Translator.visit_definitionI  s.    	tT26677777r(   c                 :    | j                             d           d S )Nz</dd>
rR   rF   s     r&   depart_definitionz!HTML5Translator.depart_definitionN  rw   r(   c                 h    | j                             |                     |ddd                     d S )Nrp   r/   
classifierr   rN   rF   s     r&   visit_classifierz HTML5Translator.visit_classifierR  s2    	tVR|LLMMMMMr(   c                     | j                             d           |                    dd          }t          |t          j                  s| j                             d           d S d S )Nru   FTdescendsiblings</dt>)rE   rD   	next_noder   r	   r  r?   rA   r!  s      r&   depart_classifierz!HTML5Translator.depart_classifierV  sh    	###...FF	)U%566 	&IW%%%%%	& 	&r(   c                 d    | j                             |                     |dd                     d S )NrU   r/   rN   rF   s     r&   
visit_termzHTML5Translator.visit_term_  rj   r(   c                 8   |                     dd          }t          |t          j                  rd S t          |j        j        j        t
          j                  r#|                     |t          d                     | j	        
                    d           d S )NFTr  zPermalink to this termr   )r!  r   r	   r  rd   r   glossaryr\   r   rE   rD   r"  s      r&   depart_termzHTML5Translator.depart_termc  s    ...FF	i!122 		& D$+,3X5FGG J&&tQ/G-H-HIIIIW%%%%%r(   c           	      ^   t          |j        t          j                  r|j                            d          rg| j                            |                     |dddd                     | j                            d           | j                            d           n!t                      
                    |           |                     |           |                     |j                   t          |j        t          j                  r| j                            d           d S d S )	Nr  pr/   captionheading)r   ROLEz<span class="caption-text">z</span></p>
)r   rd   r   compact_paragraphr[   rE   rD   rO   contextr0   visit_titler   r  r	   tabler  s     r&   r0  zHTML5Translator.visit_titleq  s   dk8#=>> 	&4;??S\C]C] 	&IT]]4b	PY]ZZ[[[I:;;;L0000GG%%%4   4;'''dk5;// 	<I:;;;;;	< 	<r(   c                 d   | j         d         }| j        j        r:| j        j        r-|j                            d          r|j        d         r|                    d          r)|                     |j        t          d                     n|                    d          rO| j
                            d|j        d         d         z  dt          d          d	| j        j        z              nt          |j        t          j                  rB| j
                            d
           |                     |j        t          d                     n9t          |j        t          j                  r| j
                            d
           t!                                          |           d S )Nr   r   z</hzPermalink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="z">ru   zPermalink to this table)r/  r5   r  r+   r  rd   r   r   r\   r   rE   rD   r  r   r	   r1  r0   depart_title)r?   rA   	close_tagr@   s      r&   r3  zHTML5Translator.depart_title}  s   L$	K' 	(DL,G 	(##E**	(/3{5/A	( ##E** 
R&&t{A6Q4R4RSSSS%%i00 R	  !H!%U!3A!6"7 "7 &''B%C%C%C%C%)[%E%E"G"G H H H H
 DK55 R	  +++&&t{A6O4P4PQQQU[11 	(IY'''T"""""r(   c                 t   |j         |                                k    r!t                                          |          S |                    dd          }|                    dd          }|                    di           }|                    dd          |d<   | j        j                            |i           }|r| j        j        r| j        j        } | j        j	        |j         |f|||d|}| 
                    |dd	d
|z            }| j                            ||z   dz              t          j        )NlanguagedefaultlinenosFhighlight_argsforce)optsr8  r  r   r/   zhighlight-%s notranslatesuffixr   r   )	rawsourceastextr0   visit_literal_blockr[   r5   highlight_optionshtml_codeblock_linenos_styler2   highlight_blockrO   rE   rD   r	   r   )	r?   rA   langr8  r9  r;  highlightedrO   r@   s	           r&   r@  z#HTML5Translator.visit_literal_block  sF   >T[[]]* 	577..t444xx
I..((9e,,"2B77"&((7E":":w{,00r:: 	?t{? 	?k>G6d&6ND
'+W
 
+
 
 ==uR'AD'H ! J J	K/*<===nr(   c                    t          |j        t          j                  r5|j                            d          r| j                            d           n!t                                          |           | 	                    |j                   | j                            | 
                    |ddd                     d S )Nliteral_blockz <div class="code-block-caption">rp   r/   zcaption-textr   )r   rd   r	   	containerr[   rE   rD   r0   visit_captionr  rO   r  s     r&   rI  zHTML5Translator.visit_caption  s    dk5?33 	(8X8X 	(I?@@@@GG!!$'''4;'''	tVR~NNOOOOOr(   c                 
   | j                             d           t          |j        t          j                  rC|j                            d          r)|                     |j        t          d                     nt          |j        t          j	                  r)|                     |j        t          d                     nG|j                            d          r-|                     |j        j        t          d                     t          |j        t          j                  r6|j                            d          r| j                             d           d S t                                          |           d S )Nru   rG  zPermalink to this codezPermalink to this imager  zPermalink to this toctreer   )rE   rD   r   rd   r	   rH  r[   r\   r   figurer0   depart_captionr  s     r&   rL  zHTML5Translator.depart_caption  sG   	### dk5?33 	W8X8X 	W""4;2J0K0KLLLLU\22 	W""4;2K0L0LMMMM[__Y'' 	W""4;#5q9T7U7UVVVdk5?33 	)8X8X 	)IZ(((((GG""4(((((r(   c                 0    |                      |           d S rI   )r@  rF   s     r&   visit_doctest_blockz#HTML5Translator.visit_doctest_block  s      &&&&&r(   c                 h    | j                             |                     |d          dz              d S )N
blockquotez<div>rN   rF   s     r&   visit_block_quotez!HTML5Translator.visit_block_quote  s1    	t\::WDEEEEEr(   c                 :    | j                             d           d S )Nz</div></blockquote>
rR   rF   s     r&   depart_block_quotez"HTML5Translator.depart_block_quote  s    	011111r(   c                    d|d         v r3| j                             |                     |ddd                     d S |                    dd           }d|d         vs|sC| j                             |                     |ddd                     | xj        dz  c_        d S | j        j                            |i           }| j                            |	                                |||d	
          }|                     |ddd|z            }| j                             ||
                                z   dz              t          j        )Nkbdclassesr/   zdocutils literal notranslater   r6  coderV   T)r;  r  nowrapz'docutils literal highlight highlight-%sr<  </code>)rE   rD   rO   r[   r7   r5   rA  r2   rC  r?  stripr	   r   )r?   rA   rD  r;  rE  rO   s         r&   visit_literalzHTML5Translator.visit_literal  s   DO# 	IT]]41O + Q Q R R RFxx
D))i( 	 	IT]]41O + Q Q R R R%%*%%F{,00r::&66KKMM4dT$ 7 H H==;dB	 ! 
 
 		K$5$5$7$77)CDDDnr(   c                     d|d         v r| j                             d           d S | xj        dz  c_        | j                             d           d S )NrU  rV  z</kbd>rV   rY  )rE   rD   r7   rF   s     r&   depart_literalzHTML5Translator.depart_literal  s_    DO# 	(IX&&&&&%%*%%IY'''''r(   c                    | j                             |                     |d                     g }t          t          t
          j                 |          }|D ]}|                    |d                    t          d |D                       }d }|D ]}|d         rh|d                             |          }| j                             |                     |dd                     | j                             |dz              n/|-| j                             ddt          |          z  z             |
                    |            | j                             d	           | j                             d
           t          j        )Npre	tokennamec              3   4   K   | ]}t          |          V  d S rI   )r   )r   r   s     r&   	<genexpr>z7HTML5Translator.visit_productionlist.<locals>.<genexpr>  s(      114SYY111111r(   strongr/   z</strong> ::= z%s     r   
z</pre>
)rE   rD   rO   r   r   r   
productionmaxljustr   	walkaboutr	   r   )r?   rA   namesproductionlistre  maxlenlastnames          r&   visit_productionlistz$HTML5Translator.visit_productionlist  s   	tU33444hx':;TBB( 	2 	2JLLK0111111511111( 	# 	#J+& D%k288@@	  z8R!H!HIII	  ,<!<==== D	  cCMM.A!BCCC  &&&IT""""	$$$nr(   c                     d S rI   r_   rF   s     r&   depart_productionlistz%HTML5Translator.depart_productionlist   ra   r(   c                     d S rI   r_   rF   s     r&   visit_productionz HTML5Translator.visit_production  ra   r(   c                     d S rI   r_   rF   s     r&   depart_productionz!HTML5Translator.depart_production  ra   r(   c                 l    | j                             |                     |dd          dz              d S )Nr*  centeredr   z<strong>rN   rF   s     r&   visit_centeredzHTML5Translator.visit_centered	  sB    	tS
CC#$ 	% 	% 	% 	% 	%r(   c                 :    | j                             d           d S )Nz</strong></p>rR   rF   s     r&   depart_centeredzHTML5Translator.depart_centered  s    	)))))r(   c                     d S rI   r_   rF   s     r&   visit_compact_paragraphz'HTML5Translator.visit_compact_paragraph  ra   r(   c                     d S rI   r_   rF   s     r&   depart_compact_paragraphz(HTML5Translator.depart_compact_paragraph  ra   r(   c                    ddd}| j         j        s| j                            d           d S d|v r_|dxx         dz  cc<   |d         |d<   | j                             | j        |ddfi |           | j                            d	           d S d
|v r|dxx         dz  cc<   t          j        | j         j        t          j
                            |d
                             |d<   | j                             | j        |ddfi |           | j                            d	           d S | j                            d           d S )Nzreference downloadr/   )r   downloadr   r   r   r   r   z</a>filenamer   )r+   download_supportr/  rD   rE   rO   	posixpathr   dlpathurllibparsequoter   s      r&   visit_download_referencez(HTML5Translator.visit_download_reference  sx   -    |, 	$L##### 	$MMM[(MMM>DLI]T]4bAADAABBBL'''''4 	$MMM[(MMM$>$,*=*0,*<*<T*=M*N*NP PDLI]T]4bAADAABBBL'''''L#####r(   c                 h    | j                             | j                                                   d S rI   )rE   rD   r/  rJ   rF   s     r&   depart_download_referencez)HTML5Translator.depart_download_reference*  s,    	))++,,,,,r(   c                 r    |                     dd           t                                          |          S )Nalignr7  )
setdefaultr0   visit_figurer  s     r&   r  zHTML5Translator.visit_figure.  s/    +++ww##D)))r(   c                    |d         }|| j         j        v r2t          j        | j         j        | j         j        |                   |d<   d|v rd|v rd|v st          t          j                            | j         j        |                    }|*t          
                    t          d          |           n8d|vrt          |d                   |d<   d|vrt          |d                   |d<   |d         }|                                                    d	          rd
|i}d|v r|d         |d<   d|v r|d         |d<   d|v rFd|v rt          |d         |d                   |d<   d|v rt          |d         |d                   |d<   |                    d|          |d<   d|v rd|d         z  |d<   | j                             | j        |ddfi |           d S t)                                          |           d S )Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r  r   rV   svgsvgzsrcaltr  align-%sr   imgr/   )r+   imagesr  r   imgpathr   ospathsrcdirr   r   r   r   lowerendswithr'   r[   rE   rD   emptytagr0   visit_image)r?   rA   oldurisizer  r   r@   s         r&   r  zHTML5Translator.visit_image5  sS   eT\(( 	F#.)=)-)<V)DF FDK d? 	6 tO 	6D(8 	6%bgll4<3F&O&OPP 6NN2&_#`#`,0 # 2 2 2 2 d* 5(+DGWt+ 6),T!WX5k99;;00 	3<D$ . $WW4 0!%hX$ Td? R$3DM4=$Q$QDMt# T%4T(^T']%S%SDN((5#..DK$ ; *T'] :WI]T]4CCdCCDDDFD!!!!!r(   c                     |d                                                              d          rd S t                                          |           d S )Nr  r  )r  r  r0   depart_imager  s     r&   r  zHTML5Translator.depart_image`  sL    ;''88 	'DGG  &&&&&r(   c                     t           j        rI   r   rF   s     r&   visit_toctreezHTML5Translator.visit_toctreef  s     nr(   c                     t           j        rI   r   rF   s     r&   visit_indexzHTML5Translator.visit_indexk  r   r(   c                     t           j        rI   r   rF   s     r&   visit_tabular_col_specz&HTML5Translator.visit_tabular_col_specn  r   r(   c                     d S rI   r_   rF   s     r&   visit_glossaryzHTML5Translator.visit_glossaryq  ra   r(   c                     d S rI   r_   rF   s     r&   depart_glossaryzHTML5Translator.depart_glossaryt  ra   r(   c                     d S rI   r_   rF   s     r&   
visit_ackszHTML5Translator.visit_acksw  ra   r(   c                     d S rI   r_   rF   s     r&   depart_ackszHTML5Translator.depart_acksz  ra   r(   c                 :    | j                             d           d S )Nz<table class="hlist"><tr>rR   rF   s     r&   visit_hlistzHTML5Translator.visit_hlist}  s    	455555r(   c                 :    | j                             d           d S )Nz</tr></table>
rR   rF   s     r&   depart_hlistzHTML5Translator.depart_hlist  s    	*+++++r(   c                 :    | j                             d           d S )Nz<td>rR   rF   s     r&   visit_hlistcolzHTML5Translator.visit_hlistcol  s    	     r(   c                 :    | j                             d           d S )Nz</td>rR   rF   s     r&   depart_hlistcolzHTML5Translator.depart_hlistcol  rm   r(   c                 *   |                                 }|                     |          }| j        r| j                            |          D ]}|                                r| j                            d|z             4|dv r| j                            |           S| j                            dt          |          dz
  z  dz              d S | j	        r!| j
        j        r|                     |          }| j                            |           d S )Nz<span class="pre">%s</span>z 
z&#160;rV   r   )r?  encoder7   words_and_spacesfindallrZ  rE   rD   r   r   r   r   cloak_email)r?   rA   textencodedtokens        r&   
visit_TextzHTML5Translator.visit_Text  s'   {{}}++d##$ 	& .66w?? 	H 	H;;== HI$$%BU%JKKKKe^ HI$$U++++ I$$XUa%@3%FGGGG	H 	H ~ 4$-"E 4**733IW%%%%%r(   c                 2    |                      |d           d S )Nnoter   rF   s     r&   
visit_notezHTML5Translator.visit_note      dF+++++r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_notezHTML5Translator.depart_note  r   r(   c                 2    |                      |d           d S )Nr   r   rF   s     r&   visit_warningzHTML5Translator.visit_warning  r   r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_warningzHTML5Translator.depart_warning  r   r(   c                 2    |                      |d           d S )N	attentionr   rF   s     r&   visit_attentionzHTML5Translator.visit_attention      dK00000r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_attentionz HTML5Translator.depart_attention  r   r(   c                 2    |                      |d           d S )Ncautionr   rF   s     r&   visit_cautionzHTML5Translator.visit_caution  r   r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_cautionzHTML5Translator.depart_caution  r   r(   c                 2    |                      |d           d S )Ndangerr   rF   s     r&   visit_dangerzHTML5Translator.visit_danger  s    dH-----r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_dangerzHTML5Translator.depart_danger  r   r(   c                 2    |                      |d           d S )Nerrorr   rF   s     r&   visit_errorzHTML5Translator.visit_error  s    dG,,,,,r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_errorzHTML5Translator.depart_error  r   r(   c                 2    |                      |d           d S )Nhintr   rF   s     r&   
visit_hintzHTML5Translator.visit_hint  r  r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_hintzHTML5Translator.depart_hint  r   r(   c                 2    |                      |d           d S )N	importantr   rF   s     r&   visit_importantzHTML5Translator.visit_important  r  r(   c                 0    |                      |           d S rI   r   rF   s     r&   depart_importantz HTML5Translator.depart_important  r   r(   c                 2    |                      |d           d S )Ntipr   rF   s     r&   	visit_tipzHTML5Translator.visit_tip  s    dE*****r(   c                 0    |                      |           d S rI   r   rF   s     r&   
depart_tipzHTML5Translator.depart_tip  r   r(   c                 ,    |                      |          S rI   )visit_emphasisrF   s     r&   visit_literal_emphasisz&HTML5Translator.visit_literal_emphasis  s    ""4(((r(   c                 ,    |                      |          S rI   )depart_emphasisrF   s     r&   depart_literal_emphasisz'HTML5Translator.depart_literal_emphasis  s    ##D)))r(   c                 ,    |                      |          S rI   )visit_strongrF   s     r&   visit_literal_strongz$HTML5Translator.visit_literal_strong  s      &&&r(   c                 ,    |                      |          S rI   )depart_strongrF   s     r&   depart_literal_strongz%HTML5Translator.depart_literal_strong  s    !!$'''r(   c                     i }|                     d          r|d         |d<   | j                             | j        |ddfi |           d S )Nexplanationr   abbrr/   )r   rE   rD   rO   )r?   rA   attrss      r&   visit_abbreviationz"HTML5Translator.visit_abbreviation  s]    <<&& 	1!-0E'N	tVRAA5AABBBBBr(   c                 :    | j                             d           d S )Nz</abbr>rR   rF   s     r&   depart_abbreviationz#HTML5Translator.depart_abbreviation  rw   r(   c                     |                      |           | j        r1 | j        j        di |j        |d<   |                     |           d S d S )Nr   r_   )r  r6   r  
attributesr   rF   s     r&   visit_manpagezHTML5Translator.visit_manpage  sf    ##D))) 	'5T.5HHHHDN  &&&&&	' 	'r(   c                 h    | j         r|                     |           |                     |           d S rI   )r6   r   r  rF   s     r&   depart_manpagezHTML5Translator.depart_manpage  s;     	(!!$'''$$T*****r(   c                    | j                             d           i }d | j        j                            d          D             }|                    dd           |                    d|                    dd          z             d|v rd	|d         z  |d
<    | j        |dfdd                    |          i|}| j	                            |           d S )Nr   c                 8    g | ]}|                     d           S )z 	
)rZ  )r   clss     r&   r   z/HTML5Translator.visit_table.<locals>.<listcomp>  s$    VVV#399W%%VVVr(   ,docutilsr  r  r7  r  z	width: %sstyler1  r   r   )
r<   rD   r   table_stylesplitr   r[   rO   r   rE   )r?   rA   r   rV  tags        r&   visit_tablezHTML5Translator.visit_table  s    &&q)))VV1J1P1PQT1U1UVVVq*%%% 	zDHHWi$@$@@AAAd? 	8'$w-7DMdmD'KK'1B1BKdKK	r(   c                 |    | j                                          t                                          |           d S rI   )r<   rJ   r0   depart_tabler  s     r&   r  zHTML5Translator.depart_table  s6    ##%%%T"""""r(   c                 2   | j         dxx         dz  cc<   | j         d         dz  dk    r|d                             d           n|d                             d           | j                            |                     |dd	                     d|_        d S )
Nr   rV      r   rV  zrow-evenzrow-oddtrr/   )r<   rD   rE   rO   columnrF   s     r&   	visit_rowzHTML5Translator.visit_row
  s    ###q(###"2&*a/ 	.O"":....O""9---	tT266777r(   c                 z    | j                             d           t                                          |          S )Nr   )r=   rD   r0   visit_field_listr  s     r&   r  z HTML5Translator.visit_field_list  s2    #**1---ww''---r(   c                 x    | j                                          t                                          |          S rI   )r=   rJ   r0   depart_field_listr  s     r&   r  z!HTML5Translator.depart_field_list  s0    #'')))ww((...r(   c                     | j         dxx         dz  cc<   | j         d         dz  dk    r|d                             d           d S |d                             d           d S )Nr   rV   r  r   rV  z
field-evenz	field-odd)r=   rD   rF   s     r&   visit_fieldzHTML5Translator.visit_field  sw    #B'''1,'''&r*Q.!3 	0O""<00000O"";/////r(   math_envc                 t    | j         j        }| j         j        j        j        |         \  }} || |           d S rI   r+   math_renderer_nameappregistryhtml_inline_math_renderersr?   rA   r!  r   visitr   s         r&   
visit_mathzHTML5Translator.visit_math"  s=    |.<#,GMqdDr(   c                 |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rI   r#  r?   rA   r!  r   r   departs         r&   depart_mathzHTML5Translator.depart_math'  sO    |.L$-HN	6 	F4	 	r(   c                 t    | j         j        }| j         j        j        j        |         \  }} || |           d S rI   r+   r$  r%  r&  html_block_math_renderersr(  s         r&   visit_math_blockz HTML5Translator.visit_math_block-  s=    |.<#,FtLqdDr(   c                 |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rI   r0  r,  s         r&   depart_math_blockz!HTML5Translator.depart_math_block2  sO    |.L$-GM	6 	F4	 	r(   c                     t          j        dt          d           |d         dd         D ]:}| j                            d|z             |d                             |           ;dS )aZ  Generate hyperlink targets for tables.

        Original visit_table() generates hyperlink targets inside table tags
        (<table>) if multiple IDs are assigned to listings.
        That is invalid DOM structure.  (This is a bug of docutils <= 0.13.1)

        This exports hyperlink targets before tables to make valid DOM structure.
        z*generate_targets_for_table() is deprecatedr  
stacklevelr   rV   Nz<span id="%s"></span>)warningswarnr   rE   rD   remove)r?   rA   ids      r&   generate_targets_for_tablez*HTML5Translator.generate_targets_for_table8  s     	B.1	> 	> 	> 	>u+abb/ 	# 	#BI4r9:::Kr""""	# 	#r(   c                 T    t          j        dt          d           | j        d         S )Nz"_fieldlist_row_index is deprecatedr  r6  r   )r8  r9  r   r=   r?   s    r&   _fieldlist_row_indexz$HTML5Translator._fieldlist_row_indexG  s1    :.1	> 	> 	> 	>*2..r(   c                 T    t          j        dt          d           | j        d         S )Nz_table_row_index is deprecatedr  r6  r   )r8  r9  r   r<   r>  s    r&   _table_row_indexz HTML5Translator._table_row_indexM  s1    6.1	> 	> 	> 	>&r**r(   )r/   rI   )__name__
__module____qualname____doc__r+   __annotations__setr,   r   r   r	   r-   r   r1   r
   rG   rK   rP   rS   rW   r]   r`   re   ri   rl   rq   rv   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r  r\   r  r  r  r  r#  r%  r(  r0  r3  r@  rI  rL  rN  rQ  rS  r[  r]  rm  ro  rq  rs  rv  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r*  r.  r2  r4  r<  r   r?  rA  __classcell__)r@   s   @r&   r*   r*   -   s          (,G$+++ '*cee3s8+++& &' &d & & & & & &M MD M M M M
 T    4w 44 4 4 4 4& &D & & & &' 'T ' ' ' '
$' $d $ $ $ $g $    #w #4 # # # #8w 84 8 8 8 8" "D " " " ":g :$ : : : :$w $4 $ $ $ $:G : : : : :$W $ $ $ $ $:w :4 : : : :$ $D $ $ $ $G     W     @w @4 @ @ @ @
+ +D + + + +9W 9 9 9 9 9=g =$ = = = =7 7T 7 7 7 73' 3d 3 3 3 3< <D < < < << <T < < < <J' Jd J J J J"7 "t " " " "
I' Id I I I I%7 %t % % % %DG D D D D D8#7 #t # # # #$G $ $ $ $ $' d    F FW FC F F F F F% %hw&7 %4 % % % %/' /d / / / /%7 %t % % % %' eCHo    (V' Vd V V V V:' :d : : : :4Jg Jc Jd J J J J(g ($ ( ( ( ( ( (8W 8 8 8 8 8
$g $$ $ $ $ $NW N N N N N&g &$ & & & &8w 84 8 8 8 8& &D & & & &
< 
<D 
< 
< 
< 
< 
< 
<# #T # # # # # #, D      .P' Pd P P P P P P)7 )t ) ) ) ) ) ) ' 'D ' ' ' 'Fg F$ F F F F2w 24 2 2 2 2' d    0(7 (t ( ( ( ( T    (' d    W     g $    %7 %t % % % %*G * * * * *G     W     $W $ $ $ $ $(-g -$ - - - -* *T * * * * * *(" ("D (" (" (" (" (" ("V' 'T ' ' ' ' ' '' d    
 D    7 t    7 t    G     w 4     D    6 6D 6 6 6 6, ,T , , , ,!7 !t ! ! ! !"G " " " " "&t & & & & &*,w ,4 , , , ,% %D % % % %/' /d / / / /%7 %t % % % %1G 1 1 1 1 1%W % % % % %/' /d / / / /%7 %t % % % %. .T . . . .%' %d % % % %- -D - - - -% %T % % % %,w ,4 , , , ,% %D % % % %1G 1 1 1 1 1%W % % % % %+g +$ + + + +%w %4 % % % %)7 )t ) ) ) )*G * * * * *' 'T ' ' ' '(' (d ( ( ( (Cw C4 C C C C$ $D $ $ $ $'' 'd ' ' ' '+7 +t + + + + D    # #T # # # # # #g $    .W . . . . . . ./g /$ / / / / / /0 0D 0 0 0 0 w # t    
  3      W  T    
 g  d    #w #4 # # # # / / X/
 + + X+ + + + +r(   r*   )0rE  r  r  r   urllib.parser  r8  typingr   r   r   r   r   r   r  r	   docutils.nodesr
   r   r   docutils.writers.html5_polyglotr   BaseTranslatorsphinxr   sphinx.buildersr   sphinx.deprecationr   sphinx.localer   r   r   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.imagesr   sphinx.builders.htmlr   	getLoggerrB  r   r   r!   r'   r*   r_   r(   r&   <module>rW     s   M M 				     				      F F F F F F F F F F F F F F F F       . . . . . . . . . . L L L L L L       # # # # # # 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1       1 1 1 1 1 1 - - - - - - ;:::::: 
	8	$	$
,C 
, 
, 
, 
, 
, 
,d+ d+ d+ d+ d+& d+ d+ d+ d+ d+r(   