
    7 f                    $   d Z ddlmZ ddl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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m Z m!Z! ddl"m#Z# ddl$m%Z%  ej&        e'          Z(ddZ) G d dee          Z*dS )zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    )annotationsN)Iterable)TYPE_CHECKINGcast)nodes)HTMLTranslator)addnodes)___admonitionlabels)logging)SphinxTranslator)get_image_size)ElementNodeText)Builder)StandaloneHTMLBuilderlengthstrscaleint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floatr   )r   r   matchedamountunitresults         J/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/writers/html5.pymultiply_lengthr%   "   sn    h/88G ||>>##LFD6]]U"S(F&kk!4!!!    c                      e Zd ZU dZded<    e            Zded<   d fdZddZddZ	ddZ
ddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZdd Zdd!Zdd'Zdd(Zdd)Zdd*Zdd+Z dd,Z!dd-Z"dd.Z#dd/Z$dd0Z%dd1Z&dd2Z'dd3Z(dd4Z)dd5Z*dd6Z+dd7Z,dd8Z-dd9Z.dd:Z/ddd=Z0ddd@Z1ddAZ2ddBZ3ddDZ4ddEZ5ddFZ6ddHZ7d fdIZ8ddJZ9ddKZ:ddLZ;ddMZ<ddNZ=ddOZ>d fdPZ?d fdQZ@d fdRZAd fdSZBd fdTZCddUZDddVZEddWZFddXZGddYZHddZZIdd[ZJdd\ZKdd]ZLdd^ZMdd_ZNdd`ZOddaZPddbZQddcZRd fddZSd fdeZTd fdfZUddgZVddhZWddiZXddjZYddkZZddlZ[ddmZ\ddnZ]ddoZ^ddpZ_ddqZ`ddsZaddtZbdduZcddvZdddwZeddxZfddyZgddzZhdd{Zidd|Zjdd}Zkdd~ZlddZmddZnddZoddZpddZqddZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|d fdZ}ddZ~d fdZd fdZddZdddZdddZdddZdddZd Z xZS )HTML5Translatorz%
    Our custom HTML translator.
    r   builderzset[str]supported_inline_tagsdocumentnodes.documentr   r   Nonec                .   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__9   s    7+++<356 K4$%! $ A!$%!#$#'(c#$%!!!r&   noder   c                    | 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_fileG   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_fileL   s    r&   c                b    | j                             |                     |d                     d S )NdlrE   rD   starttagrF   s     r$   
visit_desczHTML5Translator.visit_descV   s,    	tT2233333r&   c                :    | j                             d           d S )N</dl>

rE   rD   rF   s     r$   depart_desczHTML5Translator.depart_descY   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 )NrW   is_multilineLink to this definitionz</dt>
)r7   getadd_permalink_refr
   rE   rD   rF   s     r$   depart_desc_signaturez%HTML5Translator.depart_desc_signaturea   sf    !!Q&!!xx'' 	G""4+D)E)EFFF	#####r&   c                    d S rI    rF   s     r$   visit_desc_signature_linez)HTML5Translator.visit_desc_signature_lineg       r&   c                    |                     d          r(|                     |j        t          d                     | j                            d           d S )Nadd_permalinkr[   z<br />)r\   r]   parentr
   rE   rD   rF   s     r$   depart_desc_signature_linez*HTML5Translator.depart_desc_signature_linej   sT    88O$$ 	N""4;2K0L0LMMM	"""""r&   c                d    | j                             |                     |dd                     d S Nddr/   rN   rF   s     r$   visit_desc_contentz"HTML5Translator.visit_desc_contentp   .    	tT26677777r&   c                :    | j                             d           d S )Nz</dd>rS   rF   s     r$   depart_desc_contentz#HTML5Translator.depart_desc_contents       	!!!!!r&   c                d    | j                             |                     |dd                     d S Nspanr/   rN   rF   s     r$   visit_desc_inlinez!HTML5Translator.visit_desc_inlinev   .    	tVR8899999r&   c                :    | j                             d           d S N</span>rS   rF   s     r$   depart_desc_inlinez"HTML5Translator.depart_desc_inliney       	#####r&   c                d    | j                             |                     |dd                     d S rp   rN   rF   s     r$   visit_desc_namezHTML5Translator.visit_desc_name   rs   r&   c                :    | j                             d           d S ru   rS   rF   s     r$   depart_desc_namez HTML5Translator.depart_desc_name   rx   r&   c                d    | j                             |                     |dd                     d S rp   rN   rF   s     r$   visit_desc_addnamez"HTML5Translator.visit_desc_addname   rs   r&   c                :    | j                             d           d S ru   rS   rF   s     r$   depart_desc_addnamez#HTML5Translator.depart_desc_addname   rx   r&   c                    d S rI   r`   rF   s     r$   visit_desc_typezHTML5Translator.visit_desc_type   rb   r&   c                    d S rI   r`   rF   s     r$   depart_desc_typez HTML5Translator.depart_desc_type   rb   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">rS   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>rS   rF   s     r$   depart_desc_returnsz#HTML5Translator.depart_desc_returns   s    	)*****r&   parameter_grouptype[Element]sig_open_parenr   sig_close_parenc                :   | j                             d| d           d| _        d| _        d| _        d| _        fd|j        D             | _        t          | j                  | _	        |j
        | _        |                    dd          | _        | j        rf| j                             d           | j                             |                     |d	                     | j                                        | _        | j                            |           d
S )zVisit a signature parameters or type parameters list.

        The *parameter_group* value is the type of child nodes acting as required parameters
        or as a set of contiguous optional parameters.
        <span class="sig-paren">rv   Tr   c                0    g | ]}t          |          S r`   )
isinstance).0cr   s     r$   
<listcomp>z=HTML5Translator._visit_sig_parameter_list.<locals>.<listcomp>   s#    &]&]&]!z!_'E'E&]&]&]r&   multi_line_parameter_listFz

rM   N)rE   rD   is_first_paramr;   params_left_at_levelparam_group_indexchildrenlist_is_required_paramsumr>   child_text_separatorr:   r\   r   rO   rstripcontext)r?   rA   r   r   r   s     `  r$   _visit_sig_parameter_listz)HTML5Translator._visit_sig_parameter_list   s    		KNKKKLLL"$%!$%!!" '^&]&]&]t}&]&]&]#$'(C$D$D!#8)-2Mu)U)U&) 	AIV$$$IT]]466777#'#7#>#>#@#@D O,,,,,r&   c                    |                     d          r| j                            d           | j                                        }| j                            d| d           d S )Nr   rR   r   rv   )r\   rE   rD   r   rJ   )r?   rA   r   s      r$   _depart_sig_parameter_listz*HTML5Translator._depart_sig_parameter_list   sh    88/00 	*I[))),**,,	LOLLLMMMMMr&   c                J    |                      |t          j        dd           d S )N())r   r	   desc_parameterrF   s     r$   visit_desc_parameterlistz(HTML5Translator.visit_desc_parameterlist   s%    &&tX-Dc3OOOOOr&   c                0    |                      |           d S rI   r   rF   s     r$   depart_desc_parameterlistz)HTML5Translator.depart_desc_parameterlist       ''-----r&   c                J    |                      |t          j        dd           d S )N[])r   r	   desc_type_parameterrF   s     r$   visit_desc_type_parameter_listz.HTML5Translator.visit_desc_type_parameter_list   s&    &&tX-I3PSTTTTTr&   c                0    |                      |           d S rI   r   rF   s     r$   depart_desc_type_parameter_listz/HTML5Translator.depart_desc_type_parameter_list   r   r&   c                   | j         }|rA| j        r| j        dk    s/| j                            |                     |dd                     | j        rd| _        n(|s&| j        s| j                            | j                   | j        dk    r| xj        dz  c_        n| xj        dz  c_        |	                    d          s| j                            d           d S d S )Nr   ri   r/   FrW   noemphz<em class="sig-param">)
r   r   r;   rE   rD   rO   r>   r:   r   hasattr)r?   rA   on_separate_lines      r$   visit_desc_parameterz$HTML5Translator.visit_desc_parameter   s   9 	<T%8 	<T=VYZ=Z=ZIT]]4r::;;; 	3"'D! 	3$*C 	3IT1222$))%%*%%%%%*%%||H%% 	7I566666	7 	7r&   c                   |                     d          s| j                            d           | j        | j                 }| j        r| j        dz   t          | j                  k    }| o| j        | j        dz            }| j        dk    }|s|r=|s|r9| j                            | j                   | j                            d           n&| j	        r| j                            | j                   |r| xj        dz  c_        d S d S )Nr   </em>rW   r   </dd>
)
r   rE   rD   r   r   r   lenr   r:   r>   )r?   rA   is_requiredis_last_groupnext_is_requiredopt_param_left_at_levels         r$   depart_desc_parameterz%HTML5Translator.depart_desc_parameter   s6   ||H%% 	&IW%%%1$2HI) 	3 2Q6#d>Y:Z:ZZM!! L/0F0JK  '+&?!&C#& ,+ ,= ,L\ ,	  !5666	  +++& 	3IT1222 	(""a'""""	( 	(r&   c                0    |                      |           d S rI   )r   rF   s     r$   visit_desc_type_parameterz)HTML5Translator.visit_desc_type_parameter   s    !!$'''''r&   c                0    |                      |           d S rI   )r   rF   s     r$   depart_desc_type_parameterz*HTML5Translator.depart_desc_type_parameter   s    ""4(((((r&   c                   t          d |j        D                       | _        | xj        dz  c_        | j        | _        | j        r| j        rK| j                            | 	                    |dd                     | j                            d           d S | j
        rU| j                            | j                   | j                            d           | j                            d           d S | j                            d           | j                            | j                   | j                            d           d S | j                            d           d S )Nc                B    g | ]}t          |t          j                  S r`   )r   r	   r   )r   r   s     r$   r   z7HTML5Translator.visit_desc_optional.<locals>.<listcomp>   s;     )A )A )A-. *4Ax7N)O)O )A )A )Ar&   rW   ri   r/   z<span class="optional">[</span>r   )r   r   r   r;   max_optional_param_levelr   r   rE   rD   rO   r>   r:   rF   s     r$   visit_desc_optionalz#HTML5Translator.visit_desc_optional   sv   $' )A )A26-)A )A )A %B %B!!!Q&!!(,(A%) 	@" ,	  tT2!>!>???	  !BCCCCC * 	,	  !5666	  !BCCC	  +++++ 	  !BCCC	  !5666	  +++++I>?????r&   c                   | xj         dz  c_         | j        rr| j         | j        dz
  k    r| j                            | j                   | j                            d           | j         dk    r| j                            d           n| j                            d           | j         dk    r| xj        dz  c_        d S d S )NrW   z<span class="optional">]</span>r   r   )r;   r   r   rE   rD   r:   r   rF   s     r$   depart_desc_optionalz$HTML5Translator.depart_desc_optional  s    !!Q&!!) 	@ (D,IA,MMM	  !5666I>??? (A--	  +++I>???$))""a'"""" *)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   rS   rF   s     r$   depart_desc_annotationz&HTML5Translator.depart_desc_annotation&  rn   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>
rS   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.rW   r   z image-referencereftitletitletargetar/   	secnumberz%s.)r\   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   re   r   TextElementr   imagerE   rD   rO   r9   joinmapr   r?   rA   attss      r$   visit_referencezHTML5Translator.visit_reference2  s   %88J 	)84#7#7MMM[(MMMMMMM[(MMMt>0SDL}2 &tF|7N7Ny7Y7Y &#00f>>V!%d???H #??g.DL$+u'899 	0t99>>ja%+&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_referenceN  s    T"""""r&   c                0    |                      |           d S rI   )depart_referencerF   s     r$   depart_number_referencez'HTML5Translator.depart_number_referenceQ  s    d#####r&   c                    t           j        rI   r   SkipNoderF   s     r$   visit_commentzHTML5Translator.visit_commentU  
    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_admonitionY  s~    	% 4 ' 7 7 	8 	8 	8 	FKK5;t-=d-CDDEEEEE	F 	Fr&   NElement | Nonec                :    | j                             d           d S r   rS   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_seealsob      dI.....r&   c                0    |                      |           d S rI   r  rF   s     r$   depart_seealsozHTML5Translator.depart_seealsoe      t$$$$$r&   tuple[int, ...] | Nonec                   |                     d          r|d         S t          |j        t          j                  r| j        j        dk    rH| 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   re   r   sectionr)   r   r4   format
secnumbers)r?   rA   rC   
anchornames       r$   get_secnumberzHTML5Translator.get_secnumberh  s    88K   	%$$dk5=11 	;| L00-+%__Wdk%6H6KLL
T\%<<<!&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 fd} j         j        j        d                             |          }|rht	          |d                   d	k    r5t          d
          |j        z  }t                              ||           d S  |||d         d	                    d S d S )Nfigtyper   	figure_idr   r-   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    rv   )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0r*66W66DL377R@@@@	  !@AAA266w??>BCCgMCNN3'''''"l5c:9EGI$$Vchhs37H7H.I.I%IC%OPPPI$$Y///// A@r&   stdr  r   z Any IDs not assigned for %s nodelocation)r  r   r  r   r   r-   )	r)   envdomainsget_enumerable_node_typer   r   tagnamer$  r%  )r?   rA   r*  r  r(  s   `    r$   add_fignumberzHTML5Translator.add_fignumber  s    	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           	         | j         j        }|d         rJ| j         j        r@| j        j        r6| j                            d|d         d          d| d| d           d S d S d S d S )Nr  z<a class="headerlink" href="#r   z	" title="z"></a>)r5   html_permalinks_iconhtml_permalinksr)   add_permalinksrE   rD   )r?   rA   r   icons       r$   r]   z!HTML5Translator.add_permalink_ref  s    {/; 	4;6 	4<;V 	I\UA\\\\RV\\\    	 	 	 	 	 	r&   c                    t          |          dk    r,t          |d         t          j                  rt          j        t                                          |           d S )NrW   r   )r   r   r	   toctreer   r   r0   visit_bullet_listr?   rA   r@   s     r$   r;  z!HTML5Translator.visit_bullet_list  sM    t99>>ja(2BCC>. !!$'''''r&   c                d    | j                             |                     |dd                     d S rh   rN   rF   s     r$   visit_definitionz HTML5Translator.visit_definition  s.    	tT26677777r&   c                :    | j                             d           d S )Nr   rS   rF   s     r$   depart_definitionz!HTML5Translator.depart_definition  rx   r&   c                h    | j                             |                     |ddd                     d S )Nrq   r/   
classifierr   rN   rF   s     r$   visit_classifierz HTML5Translator.visit_classifier  s2    	tVR|LLMMMMMr&   c                    | j                             d           |                    dd          }t          |t          j                  s| j                             d           d S d S )Nrv   FTdescendsiblings</dt>)rE   rD   	next_noder   r   rB  r?   rA   rI  s      r$   depart_classifierz!HTML5Translator.depart_classifier  sh    	###...FF	)U%566 	&IW%%%%%	& 	&r&   c                d    | j                             |                     |dd                     d S )NrV   r/   rN   rF   s     r$   
visit_termzHTML5Translator.visit_term  rk   r&   c                8   |                     dd          }t          |t          j                  rd S t          |j        j        j        t
          j                  r#|                     |t          d                     | j	        
                    d           d S )NFTrE  zLink to this termrH  )rI  r   r   rB  re   r	   glossaryr]   r
   rE   rD   rJ  s      r$   depart_termzHTML5Translator.depart_term  s    ...FF	i!122 		& D$+,3X5FGG E&&tQ/B-C-CDDD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   re   r	   compact_paragraphr\   rE   rD   rO   r   r0   visit_titler  r2  r   tabler<  s     r$   rW  zHTML5Translator.visit_title  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                   | j         d         }| j        j        rI| j        j        r<|j                            d          r!|j        d         r|                    d          r*|                     |j        t          d                     n|                    d          r]| j
                            d|j        d         d         z  d                    t          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Link to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}rv   zLink to this table)r   r5   r6  r)   r7  re   r   r   r]   r
   rE   rD   r  r5  r   r   rX  r0   depart_title)r?   rA   	close_tagr@   s      r$   rZ  zHTML5Translator.depart_title  s   L$	K' 	(DL,G 	(##E**	(/3{5/A	( ##E** 
M&&t{A6L4M4MNNNN%%i00 M	  !H!%U!3A!6"7!0!7!7%&'=%>%>%)[%E"G "G"G H H H H
 DK55 M	  +++&&t{A6J4K4KLLL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)optsr_  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   langr_  r`  rb  highlightedrO   r@   s	           r$   rg  z#HTML5Translator.visit_literal_block  sD   >T[[]]**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">rq   r/   zcaption-textr   )r   re   r   	containerr\   rE   rD   r0   visit_captionr2  rO   r<  s     r$   rp  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 )Nrv   rn  zLink to this codezLink to this imager:  zLink to this toctreer   )rE   rD   r   re   r   ro  r\   r]   r
   figurer0   depart_captionr<  s     r$   rs  zHTML5Translator.depart_caption  sG   	### dk5?33 	R8X8X 	R""4;2E0F0FGGGGU\22 	R""4;2F0G0GHHHH[__Y'' 	R""4;#5q9O7P7PQQQdk5?33 	)8X8X 	)IZ(((((GG""4(((((r&   c                0    |                      |           d S rI   )rg  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>
rS   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   r]  coderW   T)rb  r-  nowrapz'docutils literal highlight highlight-%src  </code>)rE   rD   rO   r\   r7   r5   rh  r2   rj  rf  stripr   r   )r?   rA   rk  rb  rl  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 )Nr|  r}  z</kbd>rW   r  )rE   rD   r7   rF   s     r$   depart_literalzHTML5Translator.depart_literalG  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>T  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productionlistr  maxlenlastnames          r$   visit_productionlistz$HTML5Translator.visit_productionlistN  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	  ,<!<====%	  cCMM.A!BCCC  &&&IT""""	$$$nr&   c                    d S rI   r`   rF   s     r$   depart_productionlistz%HTML5Translator.depart_productionlistb  rb   r&   c                    d S rI   r`   rF   s     r$   visit_productionz HTML5Translator.visit_productione  rb   r&   c                    d S rI   r`   rF   s     r$   depart_productionz!HTML5Translator.depart_productionh  rb   r&   c                l    | j                             |                     |dd          dz              d S )NrR  centeredr   z<strong>rN   rF   s     r$   visit_centeredzHTML5Translator.visit_centeredk  sB    	tS
CC#$ 	% 	% 	% 	% 	%r&   c                :    | j                             d           d S )Nz</strong></p>rS   rF   s     r$   depart_centeredzHTML5Translator.depart_centeredo  s    	)))))r&   c                    d S rI   r`   rF   s     r$   visit_compact_paragraphz'HTML5Translator.visit_compact_paragraphr  rb   r&   c                    d S rI   r`   rF   s     r$   depart_compact_paragraphz(HTML5Translator.depart_compact_paragraphu  rb   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   r4  filenamer   )r)   download_supportr   rD   rE   rO   	posixpathr   dlpathurllibparsequoter   s      r$   visit_download_referencez(HTML5Translator.visit_download_referencex  st   -    |, 	$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alignr^  )
setdefaultr0   visit_figurer<  s     r$   r  zHTML5Translator.visit_figure  s/    +++ww##D)))r&   c                F   |d         }|| j         j        v rOt          j        | j         j        t
          j                            | j         j        |                             |d<   d|v rd|v rd|v st          j	                            | j         j
        |          }t          |          }|*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   rW   svgsvgzsrcaltr  align-%sr   imgr/   )r)   imagesr  r   imgpathr  r  r  ospathsrcdirr   r$  r%  r   r   lowerendswithr%   r\   rE   rD   emptytagr0   visit_image)r?   rA   oldurir  sizer  r   r@   s          r$   r  zHTML5Translator.visit_image  sE   eT\(((#.)=)/););DL<OPV<W)X)XZ ZDK d?? tOOD(8(8w||DL$7@@%d++<NNTUU!% #    
 d**(+DGWt++),T!WX5k99;;00 	3<D$ $WW4!%hX$d??$3DM4=$Q$QDM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_toctree  s     nr&   c                    t           j        rI   r   rF   s     r$   visit_indexzHTML5Translator.visit_index  r   r&   c                    t           j        rI   r   rF   s     r$   visit_tabular_col_specz&HTML5Translator.visit_tabular_col_spec  r   r&   c                    d S rI   r`   rF   s     r$   visit_glossaryzHTML5Translator.visit_glossary  rb   r&   c                    d S rI   r`   rF   s     r$   depart_glossaryzHTML5Translator.depart_glossary  rb   r&   c                    d S rI   r`   rF   s     r$   
visit_ackszHTML5Translator.visit_acks  rb   r&   c                    d S rI   r`   rF   s     r$   depart_ackszHTML5Translator.depart_acks  rb   r&   c                :    | j                             d           d S )Nz<table class="hlist"><tr>rS   rF   s     r$   visit_hlistzHTML5Translator.visit_hlist  s    	455555r&   c                :    | j                             d           d S )Nz</tr></table>
rS   rF   s     r$   depart_hlistzHTML5Translator.depart_hlist  s    	*+++++r&   c                :    | j                             d           d S )Nz<td>rS   rF   s     r$   visit_hlistcolzHTML5Translator.visit_hlistcol  s    	     r&   c                :    | j                             d           d S )Nz</td>rS   rF   s     r$   depart_hlistcolzHTML5Translator.depart_hlistcol  rn   r&   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;rW   r!  )rf  encoder7   words_and_spacesfindallr  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^^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_important1  r  r&   c                2    |                      |d           d S )Ntipr	  rF   s     r$   	visit_tipzHTML5Translator.visit_tip4  s    dE*****r&   c                0    |                      |           d S rI   r  rF   s     r$   
depart_tipzHTML5Translator.depart_tip7  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_strongC  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_abbreviationF  s]    <<&& 	1!-0E'N	tVRAA5AABBBBBr&   c                :    | j                             d           d S )Nz</abbr>rS   rF   s     r$   depart_abbreviationz#HTML5Translator.depart_abbreviationL  rx   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_manpageO  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_manpageU  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 	
)r  )r   clss     r$   r   z/HTML5Translator.visit_table.<locals>.<listcomp>`  s$    VVV#399W%%VVVr&   ,docutilsr  r  r^  r  z	width: %sstylerX  r   r!  )
r<   rD   r   table_stylesplitr  r\   rO   r   rE   )r?   rA   r   r}  tags        r$   visit_tablezHTML5Translator.visit_table\  s    &&q)))VV1J1P1PQT1U1UVVVq*%%% 	zDHHWi$@$@@AAAd??'$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_tablek  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  rW      r   r}  zrow-evenzrow-oddtrr/   )r<   rD   rE   rO   columnrF   s     r$   	visit_rowzHTML5Translator.visit_rowo  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$   rC  z HTML5Translator.visit_field_listx  s2    #**1---ww''---r&   c                x    | j                                          t                                          |          S rI   )r=   rJ   r0   depart_field_listr<  s     r$   rE  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  rW   r>  r   r}  z
field-evenz	field-odd)r=   rD   rF   s     r$   visit_fieldzHTML5Translator.visit_field  su    #B'''1,'''&r*Q.!33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   rH  r   visitr
   s         r$   
visit_mathzHTML5Translator.visit_math  s=    L3<#,GMqdDr&   c                |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rI   rJ  r?   rA   rH  r   r
   departs         r$   depart_mathzHTML5Translator.depart_math  sO    L3L$-HN	6 	F4	 	r&   c                t    | j         j        }| j         j        j        j        |         \  }} || |           d S rI   r)   rK  rL  rM  html_block_math_renderersrO  s         r$   visit_math_blockz HTML5Translator.visit_math_block  s=    L3<#,FtLqdDr&   c                |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rI   rW  rS  s         r$   depart_math_blockz!HTML5Translator.depart_math_block  sO    L3L$-GM	6 	F4	 	r&   c           
         d|d         z   }d| j         j        g}| j                            |                     |dd|d|                     | j                            d           d S )	Nr   r   zfootnote-referencer   r/   zdoc-noteref)rd  r}  roler   z!<span class="fn-bracket">[</span>)r   footnote_referencesrE   rD   rO   )r?   rA   r   r}  s       r$   visit_footnote_referencez(HTML5Translator.visit_footnote_reference  s}    T']"')JK	tSW,9 ' F F 	G 	G 	G	<=====r&   )r+   r,   r)   r   r   r-   )rA   r   r   r-   )
rA   r   r   r   r   r   r   r   r   r-   )r/   )rA   r   r   r   r   r-   rI   )rA   r  r   r-   )rA   r   r   r  )rA   r   r   r   r   r-   )rA   r   r   r-   )rA   r   rH  r   r   r-   )__name__
__module____qualname____doc____annotations__setr*   r1   rG   rK   rP   rT   rX   r^   ra   rf   rj   rm   rr   rw   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  r2  r]   r;  r>  r@  rC  rK  rM  rP  rW  rZ  rg  rp  rs  ru  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.  r0  r:  r<  rA  rC  rE  rG  rQ  rU  rY  r[  r_  __classcell__)r@   s   @r$   r(   r(   .   s.          #""" '*cee++++& & & & & &M M M M
   4 4 4 4& & & &' ' ' '
$ $ $ $   # # # #8 8 8 8" " " ": : : :$ $ $ $: : : :$ $ $ $: : : :$ $ $ $      @ @ @ @
+ + + +- - - -<N N N NP P P P. . . .U U U U. . . .7 7 7 7( ( ( (*( ( ( () ) ) )@ @ @ @2( ( ( ("J J J J" " " "
I I I I% % % %D D D D8# # # #$ $ $ $   F F F F F% % % % %/ / / /% % % %   (V V V V: : : :4   ( ( ( ( ( (8 8 8 8
$ $ $ $N N N N& & & &8 8 8 8& & & &
< 
< 
< 
< 
< 
<# # # # # #,     .P P P P P P) ) ) ) ) ) ' ' ' 'F F F F2 2 2 2   0( ( ( (   (         % % % %* * * *      $ $ $ $(- - - -* * * * * *+" +" +" +" +" +"\' ' ' ' ' '   
                  6 6 6 6, , , ,! ! ! !" " " "& & & &*, , , ,% % % %/ / / /% % % %1 1 1 1% % % %/ / / /% % % %. . . .% % % %- - - -% % % %, , , ,% % % %1 1 1 1% % % %+ + + +% % % %) ) ) )* * * *' ' ' '( ( ( (C C C C$ $ $ $' ' ' '+ + + +   # # # # # #   . . . . . ./ / / / / /0 0 0 0                > > > > > > >r&   r(   )r   r   r   r   r   r   )+rc  
__future__r   r  r  r   urllib.parser  collections.abcr   typingr   r   r5  r   docutils.writers.html5_polyglotr   BaseTranslatorsphinxr	   sphinx.localer
   r   r   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.imagesr   docutils.nodesr   r   r   sphinx.buildersr   sphinx.builders.htmlr   	getLoggerr`  r$  r%   r(   r`   r&   r$   <module>rv     s   M M " " " " " " 				     				     $ $ $ $ $ $ & & & & & & & &       L L L L L L       1 1 1 1 1 1 1 1 1 1       1 1 1 1 1 1 - - - - - - ;2222222222'''''':::::: 
	8	$	$	" 	" 	" 	"z> z> z> z> z>& z> z> z> z> z>r&   