
    Fe                        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jL                  e'      Z(ddZ) G d dee      Z*y)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)StandaloneHTMLBuilderc                    t        j                  d|       }|s| S |dk(  r| S |j                         \  }}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)lengthscalematchedamountunitresults         6/usr/lib/python3/dist-packages/sphinx/writers/html5.pymultiply_lengthr#   "   s]    hh/8G|>>#LFD6]U"S(F&k]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$dd$Z%dd%Z&dd&Z'dd'Z(dd(Z)dd)Z*dd*Z+dd+Z,dd,Z-dd-Z.dd.Z/ddd/Z0ddd0Z1dd1Z2dd2Z3dd3Z4dd4Z5dd5Z6dd6Z7d fd7Z8dd8Z9dd9Z:dd:Z;dd;Z<dd<Z=dd=Z>d fd>Z?d fd?Z@d fd@ZAd fdAZBd fdBZCddCZDddDZEddEZFddFZGddGZHddHZIddIZJddJZKddKZLddLZMddMZNddNZOddOZPddPZQddQZRd fdRZSd fdSZTd fdTZUddUZVddVZWddWZXddXZYddYZZddZZ[dd[Z\dd\Z]dd]Z^dd^Z_dd_Z`dd`ZaddaZbddbZcddcZddddZeddeZfddfZgddgZhddhZiddiZjddjZkddkZlddlZmddmZnddnZoddoZpddpZqddqZrddrZsddsZtddtZudduZvddvZwddwZxddxZyddyZzddz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_tagsc                X   t         |   ||       | j                  j                  | _        | j                  j                  g| _        | j                  j                  | _        d| _        | j                  j                  | _
        d| _        d| _        dg| _        dg| _        d| _        y )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)selfdocumentr'   	__class__s      r"   r,   zHTML5Translator.__init__9   s    7+<<33556 KK44$%! $ A A!$%!#$#'(c#$%!r$   c                    | j                   j                  |d          | j                  j                  d|d   z         y )Ndocnamez<span id="document-%s"></span>)r/   appendbodyr:   nodes     r"   visit_start_of_filez#HTML5Translator.visit_start_of_fileG   s4    T)_-		9DOKLr$   c                8    | j                   j                          y N)r/   poprA   s     r"   depart_start_of_filez$HTML5Translator.depart_start_of_fileL   s    r$   c                Z    | j                   j                  | j                  |d             y )Ndlr@   r?   starttagrA   s     r"   
visit_desczHTML5Translator.visit_descV   s    		tT23r$   c                :    | j                   j                  d       y )N</dl>

r@   r?   rA   s     r"   depart_desczHTML5Translator.depart_descY   s    		%r$   c                    | j                   j                  | j                  |d             | xj                  dz  c_        y )Ndt   )r@   r?   rK   r2   rA   s     r"   visit_desc_signaturez$HTML5Translator.visit_desc_signature\   s0    		tT23!!Q&!r$   c                    | xj                   dz  c_         |j                  d      s| j                  |t        d             | j                  j                  d       y )NrS   is_multilineLink to this definitionz</dt>
)r2   getadd_permalink_refr
   r@   r?   rA   s     r"   depart_desc_signaturez%HTML5Translator.depart_desc_signaturea   sG    !!Q&!xx'""4+D)EF		#r$   c                     y rE    rA   s     r"   visit_desc_signature_linez)HTML5Translator.visit_desc_signature_lineg       r$   c                    |j                  d      r%| j                  |j                  t        d             | j                  j                  d       y )Nadd_permalinkrW   z<br />)rX   rY   parentr
   r@   r?   rA   s     r"   depart_desc_signature_linez*HTML5Translator.depart_desc_signature_linej   s:    88O$""4;;2K0LM		"r$   c                \    | j                   j                  | j                  |dd             y Nddr*   rJ   rA   s     r"   visit_desc_contentz"HTML5Translator.visit_desc_contentp   !    		tT267r$   c                :    | j                   j                  d       y )Nz</dd>rO   rA   s     r"   depart_desc_contentz#HTML5Translator.depart_desc_contents       		!r$   c                \    | j                   j                  | j                  |dd             y Nspanr*   rJ   rA   s     r"   visit_desc_inlinez!HTML5Translator.visit_desc_inlinev   !    		tVR89r$   c                :    | j                   j                  d       y N</span>rO   rA   s     r"   depart_desc_inlinez"HTML5Translator.depart_desc_inliney       		#r$   c                \    | j                   j                  | j                  |dd             y rl   rJ   rA   s     r"   visit_desc_namezHTML5Translator.visit_desc_name   ro   r$   c                :    | j                   j                  d       y rq   rO   rA   s     r"   depart_desc_namez HTML5Translator.depart_desc_name   rt   r$   c                \    | j                   j                  | j                  |dd             y rl   rJ   rA   s     r"   visit_desc_addnamez"HTML5Translator.visit_desc_addname   ro   r$   c                :    | j                   j                  d       y rq   rO   rA   s     r"   depart_desc_addnamez#HTML5Translator.depart_desc_addname   rt   r$   c                     y rE   r\   rA   s     r"   visit_desc_typezHTML5Translator.visit_desc_type   r^   r$   c                     y rE   r\   rA   s     r"   depart_desc_typez HTML5Translator.depart_desc_type   r^   r$   c                    | j                   j                  d       | j                   j                  d       | j                   j                  d       y )Nz <span class="sig-return">z-<span class="sig-return-icon">&#x2192;</span>z# <span class="sig-return-typehint">rO   rA   s     r"   visit_desc_returnsz"HTML5Translator.visit_desc_returns   s;    		56		HI		>?r$   c                :    | j                   j                  d       y )Nz</span></span>rO   rA   s     r"   depart_desc_returnsz#HTML5Translator.depart_desc_returns   s    		)*r$   c                r   | j                   j                  d| d       d| _        d| _        d| _        d| _        |j                  D cg c]  }t        ||       c}| _        t        | j                        | _
        |j                  | _        |j                  dd      | _        | j                  re| j                   j                  d       | j                   j                  | j                  |d             | j                  j!                         | _        | j"                  j                  |       y	c c}w )
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">rr   Tr   multi_line_parameter_listFz

rI   N)r@   r?   is_first_paramr6   params_left_at_levelparam_group_indexchildren
isinstancelist_is_required_paramsumr9   child_text_separatorr5   rX   r   rK   rstripcontext)r:   rB   parameter_groupsig_open_parensig_close_parencs         r"   _visit_sig_parameter_listz)HTML5Translator._visit_sig_parameter_list   s     			3N3C7KL"$%!$%!!" PT}}&]!z!_'E&]#$'(C(C$D!#88)-2Mu)U&))IIV$IIT]]467#'#7#7#>#>#@D O, '^s   
D4c                    |j                  d      r| j                  j                  d       | j                  j	                         }| j                  j                  d| d       y )Nr   rN   r   rr   )rX   r@   r?   r   rF   )r:   rB   r   s      r"   _depart_sig_parameter_listz*HTML5Translator._depart_sig_parameter_list   sP    88/0II[),,**,		3O3DGLMr$   c                H    | j                  |t        j                  dd       y )N())r   r	   desc_parameterrA   s     r"   visit_desc_parameterlistz(HTML5Translator.visit_desc_parameterlist   s    &&tX-D-Dc3Or$   c                &    | j                  |       y rE   r   rA   s     r"   depart_desc_parameterlistz)HTML5Translator.depart_desc_parameterlist       ''-r$   c                H    | j                  |t        j                  dd       y )N[])r   r	   desc_type_parameterrA   s     r"   visit_desc_type_parameter_listz.HTML5Translator.visit_desc_type_parameter_list   s    &&tX-I-I3PSTr$   c                &    | j                  |       y rE   r   rA   s     r"   depart_desc_type_parameter_listz/HTML5Translator.depart_desc_type_parameter_list   r   r$   c                
   | j                   }|rG| j                  r| j                  dkD  s,| j                  j	                  | j                  |dd             | j                  rd| _        n3|s1| j                  s%| j                  j	                  | j                         | j                  dk(  r| xj                  dz  c_        n| xj                  dz  c_        |j                  d      s| j                  j	                  d       y y )Nr   re   r*   FrS   noemphz<em class="sig-param">)
r   r   r6   r@   r?   rK   r9   r5   r   hasattr)r:   rB   on_separate_lines      r"   visit_desc_parameterz$HTML5Translator.visit_desc_parameter   s    99T%8%8T=V=VYZ=ZIIT]]4r:;"'D!$*C*CIIT112$$)%%*%%%*%||H%II56 &r$   c                t   |j                  d      s| j                  j                  d       | j                  | j                     }| j
                  r| j                  dz   t        | j                        k(  }| xr | j                  | j                  dz      }| j                  dkD  }|s|rv|s|rr| j                  j                  | j                         | j                  j                  d       n1| j                  r%| j                  j                  | j                         |r| xj                  dz  c_        y y )Nr   </em>rS   r   </dd>
)
r   r@   r?   r   r   r   lenr   r5   r9   )r:   rB   is_requiredis_last_groupnext_is_requiredopt_param_left_at_levels         r"   depart_desc_parameterz%HTML5Translator.depart_desc_parameter   s
   ||H%IIW%11$2H2HI)) 22Q6#d>Y>Y:ZZM!! L//0F0F0JK  '+&?&?!&C#&+=L\		  !5!56		  +&&IIT112""a'" r$   c                &    | j                  |       y rE   )r   rA   s     r"   visit_desc_type_parameterz)HTML5Translator.visit_desc_type_parameter   s    !!$'r$   c                &    | j                  |       y rE   )r   rA   s     r"   depart_desc_type_parameterz*HTML5Translator.depart_desc_type_parameter   s    ""4(r$   c           	     Z   t        |j                  D cg c]  }t        |t        j                         c}      | _        | xj                  dz  c_        | j                  | _        | j                  r| j                  rH| j                  j                  | j                  |dd             | j                  j                  d       y | j                  r\| j                  j                  | j                         | j                  j                  d       | j                  j                  d       y | j                  j                  d       | j                  j                  | j                         | j                  j                  d       y | j                  j                  d       y c c}w )NrS   re   r*   z<span class="optional">[</span>r   )r   r   r   r	   r   r   r6   max_optional_param_levelr   r   r@   r?   rK   r9   r5   )r:   rB   r   s      r"   visit_desc_optionalz#HTML5Translator.visit_desc_optional   s<   $'26--)A-. *4Ax7N7N)O )A %B!!!Q&!(,(A(A%))""		  tT2!>?		  !BC **		  !5!56		  !BC		  + 		  !BC		  !5!56		  +II>?-)As   !F(c                   | xj                   dz  c_         | j                  r| j                   | j                  dz
  k(  r%| j                  j	                  | j
                         | j                  j	                  d       | j                   dk(  r7| j                  j	                  d       n| j                  j	                  d       | j                   dk(  r| xj                  dz  c_        y y )NrS   z<span class="optional">]</span>r   r   )r6   r   r   r@   r?   r5   r   rA   s     r"   depart_desc_optionalz$HTML5Translator.depart_desc_optional  s    !!Q&!)) ((D,I,IA,MM		  !5!56II>? ((A-		  +II>?$$)""a'" *r$   c                `    | j                   j                  | j                  |ddd             y )Nemr*   propertyCLASSrJ   rA   s     r"   visit_desc_annotationz%HTML5Translator.visit_desc_annotation#  s%    		tT2ZHIr$   c                :    | j                   j                  d       y )Nr   rO   rA   s     r"   depart_desc_annotationz&HTML5Translator.depart_desc_annotation&  rj   r$   c                d    | j                   j                  | j                  |d|d                y )Ndivtyper   rJ   rA   s     r"   visit_versionmodifiedz%HTML5Translator.visit_versionmodified+  s'    		tU$v,GHr$   c                :    | j                   j                  d       y N</div>
rO   rA   s     r"   depart_versionmodifiedz&HTML5Translator.depart_versionmodified.      		$r$   c           
     L   ddi}|j                  d      sd|vr|dxx   dz  cc<   n|dxx   dz  cc<   d|v rU|d   xs d|d<   | j                  j                  rI|d   j                  d	      r5| j	                  |d         |d<   d
| _        nd|v sJ d       d|d   z   |d<   t        |j                  t        j                        s:t        |      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                   | j                  |ddfi |       |j                  d      rL| j                  j                  d| j                  z   dj!                  t#        t$        |d               z         y y )Nclass	referenceinternalrefuri	 internal	 external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.rS   r   z image-referencereftitletitletargetar*   	secnumberz%s.)rX   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   ra   r   TextElementr   imager@   r?   rK   r4   joinmapstrr:   rB   attss      r"   visit_referencezHTML5Translator.visit_reference2  s   %88J84#7M[(MM[(Mt>0SDL}}22tF|7N7Ny7Y#00f>V!%d? IHI?g.DL$++u'8'89t9>ja%++&FFFM//M ,DMt!(^DN		tS"==>88K IIdT%:%:: XXc#tK/@&ABC D !r$   c                &    | j                  |       y rE   )r   rA   s     r"   visit_number_referencez&HTML5Translator.visit_number_referenceN  s    T"r$   c                &    | j                  |       y rE   )depart_referencerA   s     r"   depart_number_referencez'HTML5Translator.depart_number_referenceQ  s    d#r$   c                "    t         j                  rE   r   SkipNoderA   s     r"   visit_commentzHTML5Translator.visit_commentU      nnr$   c                    | j                   j                  | j                  |dd|z                |r.|j                  dt	        j
                  |t        |                y y )Nr   zadmonition r   r   )r@   r?   rK   insertr   r   r   )r:   rB   names      r"   visit_admonitionz HTML5Translator.visit_admonitionY  sW    		% 4 ' 7 	8KK5;;t-=d-CDE r$   c                :    | j                   j                  d       y r   rO   rA   s     r"   depart_admonitionz!HTML5Translator.depart_admonition_  r   r$   c                (    | j                  |d       y )Nseealsor   rA   s     r"   visit_seealsozHTML5Translator.visit_seealsob      dI.r$   c                &    | j                  |       y rE   r   rA   s     r"   depart_seealsozHTML5Translator.depart_seealsoe      t$r$   c                "   |j                  d      r|d   S t        |j                  t        j                        r| j
                  j                  dk(  rO| j                  d   }dj                  ||j                  d   d         }|| j
                  j                  vr5d|z  }n/d|j                  d   d   z   }|| j
                  j                  vrd	}| j
                  j                  j                  |      r| j
                  j                  |   S y )
Nr   
singlehtmlz{}/#{}idsr   z%s/r   r*   )
rX   r   ra   r   sectionr'   r   r/   format
secnumbers)r:   rB   r>   
anchornames       r"   get_secnumberzHTML5Translator.get_secnumberh  s    88K $$dkk5==1||  L0--+%__Wdkk%6H6KL
T\\%<%<<!&J 4;;u#5a#88
T\\%<%<<!#J||&&**:6||..z::r$   c           	         | j                  |      }|rI| j                  j                  ddj                  t	        t
        |            | j                  z   z         y y )Nz&<span class="section-number">%s</span>r   )r  r@   r?   r   r   r   r4   )r:   rB   r   s      r"   add_secnumberzHTML5Translator.add_secnumber|  sT    &&t,	IIE!hhs3	':;d>S>SSU V r$   c                    d fd} j                   j                  j                  d   j                  |      }|rQt	        |d         dk(  r0t        d      |j                  z  }t        j                  ||       y  |||d   d          y y )Nc           	     n   j                   j                  dk(  rj                  d    d|  }n| }|j                   j                  j	                  |i       v r܉j
                  j                  d       j                  j                  j	                  |       }|$t        d      | z  }t        j                  |       y j                   j                  |   |   }j
                  j                  |dj                  t        t        |            z  dz          j
                  j                  d       y y )	Nr  r	  /z<span class="caption-number">z#numfig_format is not defined for %sr    rr   )r'   r   r/   
fignumbersrX   r@   r?   r0   numfig_formatr   loggerwarningr   r   r   )figtype	figure_idkeyprefixmsgnumbersr:   s         r"   append_fignumberz7HTML5Translator.add_fignumber.<locals>.append_fignumber  s    ||  L0r*+1WI6DLL3377R@@		  !@A2266w?>BCgMCNN3'"ll55c:9EGII$$Vchhs37H.I%IC%OPII$$Y/ Ar$   stdr
  r   z Any IDs not assigned for %s nodelocation)r  r   r  r   returnNone)	r'   envdomainsget_enumerable_node_typer   r   tagnamer  r  )r:   rB   r   r  r  s   `    r"   add_fignumberzHTML5Translator.add_fignumber  s~    	0" ,,""**51JJ4P4;1$;<t||KsT2 $u+a.9 r$   c           	         | j                   j                  }|d   rZ| j                   j                  rC| j                  j                  r,| j
                  j                  d|d   d    d| d| d       y y y y )Nr
  z<a class="headerlink" href="#r   z	" title="z"></a>)r0   html_permalinks_iconhtml_permalinksr'   add_permalinksr@   r?   )r:   rB   r   icons       r"   rY   z!HTML5Translator.add_permalink_ref  sq    {{//;4;;664<<;V;VII/UA/?yrRVQWW[\ <W6;r$   c                    t        |      dk(  r-t        |d   t        j                        rt        j
                  t        |   |       y )NrS   r   )r   r   r	   toctreer   r   r+   visit_bullet_listr:   rB   r<   s     r"   r3  z!HTML5Translator.visit_bullet_list  s8    t9>ja(2B2BC.. !$'r$   c                \    | j                   j                  | j                  |dd             y rd   rJ   rA   s     r"   visit_definitionz HTML5Translator.visit_definition  s!    		tT267r$   c                :    | j                   j                  d       y )Nr   rO   rA   s     r"   depart_definitionz!HTML5Translator.depart_definition  rt   r$   c                `    | j                   j                  | j                  |ddd             y )Nrm   r*   
classifierr   rJ   rA   s     r"   visit_classifierz HTML5Translator.visit_classifier  s%    		tVR|LMr$   c                    | j                   j                  d       |j                  dd      }t        |t        j
                        s| j                   j                  d       y y )Nrr   FTdescendsiblings</dt>)r@   r?   	next_noder   r   r:  r:   rB   rA  s      r"   depart_classifierz!HTML5Translator.depart_classifier  sM    		#...F	)U%5%56IIW% 7r$   c                \    | j                   j                  | j                  |dd             y )NrR   r*   rJ   rA   s     r"   
visit_termzHTML5Translator.visit_term  rg   r$   c                <   |j                  dd      }t        |t        j                        ry t        |j                  j                  j                  t
        j                        r| j                  |t        d             | j                  j                  d       y )NFTr=  zLink to this termr@  )rA  r   r   r:  ra   r	   glossaryrY   r
   r@   r?   rB  s      r"   depart_termzHTML5Translator.depart_term  sq    ...F	i!1!12 $++,,33X5F5FG&&tQ/B-CDIIW%r$   c           	     F   t        |j                  t        j                        r|j                  j	                  d      rf| j
                  j                  | j                  |dddd             | j
                  j                  d       | j                  j                  d       nt        | )  |       | j                  |       | j                  |j                         t        |j                  t        j                        r| j
                  j                  d       y y )	Nr2  pr*   captionheading)r   ROLEz<span class="caption-text">z</span></p>
)r   ra   r	   compact_paragraphrX   r@   r?   rK   r   r+   visit_titler  r*  r   tabler4  s     r"   rO  zHTML5Translator.visit_title  s    dkk8#=#=>4;;??S\C]IIT]]4b	PY]Z[II:;LL0G%4 4;;'dkk5;;/II:; 0r$   c                   | j                   d   }| j                  j                  rP| j                  j                  r9|j
                  j                  d      r|j
                  d   r|j                  d      r'| j                  |j
                  t        d             n|j                  d      r_| j                  j                  d|j
                  d   d   z  dj                  t        d      | j                  j                        z          nt        |j
                  t        j                         r| j                  j                  d	       | j                  |j
                  t        d
             n?t        |j
                  t        j                         r| j                  j                  d	       t"        | I  |       y )Nr	  r
  z</hzLink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}rr   zLink to this table)r   r0   r.  r'   r/  ra   r   r   rY   r
   r@   r?   r  r-  r   r   rP  r+   depart_title)r:   rB   	close_tagr<   s      r"   rR  zHTML5Translator.depart_title  sE   LL$	KK''DLL,G,G##E*t{{5/A##E*&&t{{A6L4MN%%i0		  !H!%U!3A!6"7!0!7!7%&'=%>%)[[%E%E"G"G H
 DKK5		  +&&t{{A6J4KLU[[1IIY'T"r$   c                   |j                   |j                         k7  rt        |   |      S |j	                  dd      }|j	                  dd      }|j	                  di       }|j	                  dd      |d<   | j
                  j                  j	                  |i       }|r,| j
                  j                  r| j
                  j                  } | j                  j                  |j                   |f|||d|}| j                  |dd	d
|z        }| j                  j                  ||z   dz          t        j                  )NlanguagedefaultlinenosFhighlight_argsforce)optsrW  r#  r   r*   zhighlight-%s notranslatesuffixr   r   )	rawsourceastextr+   visit_literal_blockrX   r0   highlight_optionshtml_codeblock_linenos_styler-   highlight_blockrK   r@   r?   r   r   )	r:   rB   langrW  rX  rZ  highlightedrK   r<   s	           r"   r_  z#HTML5Translator.visit_literal_block  s%   >>T[[]*7.t44xx
I.((9e,"2B7"&((7E":w{{,,00r:t{{??kk>>G6d&&66NND
'+W
+
 ==uR'AD'H ! J		K/*<=nnr$   c                l   t        |j                  t        j                        r7|j                  j	                  d      r| j
                  j                  d       nt        | !  |       | j                  |j                         | j
                  j                  | j                  |ddd             y )Nliteral_blockz <div class="code-block-caption">rm   r*   zcaption-textr   )r   ra   r   	containerrX   r@   r?   r+   visit_captionr*  rK   r4  s     r"   rh  zHTML5Translator.visit_caption  sy    dkk5??38XII?@G!$'4;;'		tVR~NOr$   c                   | j                   j                  d       t        |j                  t        j
                        rA|j                  j                  d      r&| j                  |j                  t        d             nt        |j                  t        j                        r&| j                  |j                  t        d             nJ|j                  j                  d      r/| j                  |j                  j                  t        d             t        |j                  t        j
                        r7|j                  j                  d      r| j                   j                  d       y t        | -  |       y )Nrr   rf  zLink to this codezLink to this imager2  zLink to this toctreer   )r@   r?   r   ra   r   rg  rX   rY   r
   figurer+   depart_captionr4  s     r"   rk  zHTML5Translator.depart_caption  s    		# dkk5??38X""4;;2E0FGU\\2""4;;2F0GH[[__Y'""4;;#5#5q9O7PQdkk5??38XIIZ(G"4(r$   c                &    | j                  |       y rE   )r_  rA   s     r"   visit_doctest_blockz#HTML5Translator.visit_doctest_block$  s      &r$   c                `    | j                   j                  | j                  |d      dz          y )N
blockquotez<div>rJ   rA   s     r"   visit_block_quotez!HTML5Translator.visit_block_quote(  s$    		t\:WDEr$   c                :    | j                   j                  d       y )Nz</div></blockquote>
rO   rA   s     r"   depart_block_quotez"HTML5Translator.depart_block_quote+  s    		01r$   c                   d|d   v r/| j                   j                  | j                  |ddd             y |j                  dd       }d|d   vs|sD| j                   j                  | j                  |ddd             | xj                  dz  c_        y | j
                  j                  j                  |i       }| j                  j                  |j                         |||d	
      }| j                  |ddd|z        }| j                   j                  ||j                         z   dz          t        j                  )Nkbdclassesr*   zdocutils literal notranslater   rU  coderS   T)rZ  r#  nowrapz'docutils literal highlight highlight-%sr[  </code>)r@   r?   rK   rX   r2   r0   r`  r-   rb  r^  stripr   r   )r:   rB   rc  rZ  rd  rK   s         r"   visit_literalzHTML5Translator.visit_literal/  s;   DO#IIT]]41O + Q Rxx
D)i(IIT]]41O + Q R%%*%{{,,00r:&&66KKM4dT$ 7 H==;dB	 ! 
 			K$5$5$77)CDnnr$   c                    d|d   v r| j                   j                  d       y | xj                  dz  c_        | j                   j                  d       y )Nrt  ru  z</kbd>rS   rx  )r@   r?   r2   rA   s     r"   depart_literalzHTML5Translator.depart_literalG  sC    DO#IIX&%%*%IIY'r$   c                   | j                   j                  | j                  |d             g }t        t        t
        j                     |      }|D ]  }|j                  |d           t        d |D              }d }|D ]  }|d   r_|d   j                  |      }| j                   j                  | j                  |dd             | j                   j                  |dz          n,|*| j                   j                  ddt        |      z  z         |j                  |        | j                   j                  d	        | j                   j                  d
       t        j                  )Npre	tokennamec              3  2   K   | ]  }t        |        y wrE   )r   ).0r   s     r"   	<genexpr>z7HTML5Translator.visit_productionlist.<locals>.<genexpr>T  s     14SY1s   strongr*   z</strong> ::= z%s     r  
z</pre>
)r@   r?   rK   r   r   r	   
productionmaxljustr   	walkaboutr   r   )r:   rB   namesproductionlistr  maxlenlastnames          r"   visit_productionlistz$HTML5Translator.visit_productionlistN  s7   		tU34hx':':;TB( 	2JLLK01	21511( 	#J+&%k288@		  z8R!HI		  ,<!<=%		  cCM.A!BC  &IIT"	# 			$nnr$   c                     y rE   r\   rA   s     r"   depart_productionlistz%HTML5Translator.depart_productionlistb  r^   r$   c                     y rE   r\   rA   s     r"   visit_productionz HTML5Translator.visit_productione  r^   r$   c                     y rE   r\   rA   s     r"   depart_productionz!HTML5Translator.depart_productionh  r^   r$   c                d    | j                   j                  | j                  |dd      dz          y )NrJ  centeredr   z<strong>rJ   rA   s     r"   visit_centeredzHTML5Translator.visit_centeredk  s-    		tS
C#$ 	%r$   c                :    | j                   j                  d       y )Nz</strong></p>rO   rA   s     r"   depart_centeredzHTML5Translator.depart_centeredo  s    		)r$   c                     y rE   r\   rA   s     r"   visit_compact_paragraphz'HTML5Translator.visit_compact_paragraphr  r^   r$   c                     y rE   r\   rA   s     r"   depart_compact_paragraphz(HTML5Translator.depart_compact_paragraphu  r^   r$   c                   ddd}| j                   j                  s| j                  j                  d       y d|v r_|dxx   dz  cc<   |d   |d<   | j                  j                   | j
                  |ddfi |       | j                  j                  d	       y d
|v r|dxx   dz  cc<   t        j                  | j                   j                  t        j                  j                  |d
               |d<   | j                  j                   | j
                  |ddfi |       | j                  j                  d	       y | j                  j                  d       y )Nzreference downloadr*   )r   downloadr   r   r   r   r   r,  filenamer   )r'   download_supportr   r?   r@   rK   	posixpathr   dlpathurllibparsequoter   s      r"   visit_download_referencez(HTML5Translator.visit_download_referencex  s!   -  ||,,LL#M[(M>DLII]T]]4bADABLL'4M[(M$>>$,,*=*=*0,,*<*<T*=M*NPDLII]T]]4bADABLL'LL#r$   c                j    | j                   j                  | j                  j                                y rE   )r@   r?   r   rF   rA   s     r"   depart_download_referencez)HTML5Translator.depart_download_reference  s!    		))+,r$   c                F    |j                  dd       t        | 	  |      S )NalignrV  )
setdefaultr+   visit_figurer4  s     r"   r  zHTML5Translator.visit_figure  s!    +w#D))r$   c                   |d   }|| j                   j                  v rat        j                  | j                   j                  t
        j                  j                  | j                   j                  |               |d<   d|v rd|v rd|v st        j                  j                  | j                   j                  |      }t        |      }|!t        j                  t        d      |       n*d|vrt        |d         |d<   d|vrt        |d         |d<   |d   }|j!                         j#                  d	      rd
|i}d|v r|d   |d<   d|v r|d   |d<   d|v r2d|v rt%        |d   |d         |d<   d|v rt%        |d   |d         |d<   |j'                  d|      |d<   d|v rd|d   z  |d<   | j(                  j+                   | j,                  |ddfi |       y t.        | a  |       y )Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r"  r   rS   svgsvgzsrcaltr  align-%sr   imgr*   )r'   imagesr  r   imgpathr  r  r  ospathsrcdirr   r  r  r   r   lowerendswithr#   rX   r@   r?   emptytagr+   visit_image)r:   rB   oldurir  sizer  r   r<   s          r"   r  zHTML5Translator.visit_image  s   eT\\(((#..)=)=)/););DLL<O<OPV<W)XZDK d? tOD(8ww||DLL$7$7@%d+<NNTU!% # 
 d*(+DGWt+),T!WX5k99;03<D$ $WW4!%hX$d?$3DM4=$QDMt#%4T(^T']%SDN((5#.DK$ *T'] :WII]T]]4CdCDD!r$   c                j    |d   j                         j                  d      ry t        |   |       y )Nr  r  )r  r  r+   depart_imager4  s     r"   r  zHTML5Translator.depart_image  s.    ;''8G &r$   c                "    t         j                  rE   r   rA   s     r"   visit_toctreezHTML5Translator.visit_toctree  s     nnr$   c                "    t         j                  rE   r   rA   s     r"   visit_indexzHTML5Translator.visit_index  r   r$   c                "    t         j                  rE   r   rA   s     r"   visit_tabular_col_specz&HTML5Translator.visit_tabular_col_spec  r   r$   c                     y rE   r\   rA   s     r"   visit_glossaryzHTML5Translator.visit_glossary  r^   r$   c                     y rE   r\   rA   s     r"   depart_glossaryzHTML5Translator.depart_glossary  r^   r$   c                     y rE   r\   rA   s     r"   
visit_ackszHTML5Translator.visit_acks  r^   r$   c                     y rE   r\   rA   s     r"   depart_ackszHTML5Translator.depart_acks  r^   r$   c                :    | j                   j                  d       y )Nz<table class="hlist"><tr>rO   rA   s     r"   visit_hlistzHTML5Translator.visit_hlist  s    		45r$   c                :    | j                   j                  d       y )Nz</tr></table>
rO   rA   s     r"   depart_hlistzHTML5Translator.depart_hlist  s    		*+r$   c                :    | j                   j                  d       y )Nz<td>rO   rA   s     r"   visit_hlistcolzHTML5Translator.visit_hlistcol  s    		 r$   c                :    | j                   j                  d       y )Nz</td>rO   rA   s     r"   depart_hlistcolzHTML5Translator.depart_hlistcol  rj   r$   c                4   |j                         }| j                  |      }| j                  r| j                  j	                  |      D ]~  }|j                         r| j                  j                  d|z         2|dv r| j                  j                  |       R| j                  j                  dt        |      dz
  z  dz           y | j                  r'| j                  j                  r| j                  |      }| j                  j                  |       y )Nz<span class="pre">%s</span>z 
z&#160;rS   r  )r^  encoder2   words_and_spacesfindallry  r@   r?   r   r   r   r   cloak_email)r:   rB   textencodedtokens        r"   
visit_TextzHTML5Translator.visit_Text  s    {{}++d#$$ ..66w? 	H;;=II$$%BU%JKe^II$$U+ II$$XUa%@3%FG	H ~~$--"E"E**73IIW%r$   c                (    | j                  |d       y )Nnoter   rA   s     r"   
visit_notezHTML5Translator.visit_note      dF+r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_notezHTML5Translator.depart_note  r  r$   c                (    | j                  |d       y )Nr  r   rA   s     r"   visit_warningzHTML5Translator.visit_warning
  r  r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_warningzHTML5Translator.depart_warning  r  r$   c                (    | j                  |d       y )N	attentionr   rA   s     r"   visit_attentionzHTML5Translator.visit_attention      dK0r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_attentionz HTML5Translator.depart_attention  r  r$   c                (    | j                  |d       y )Ncautionr   rA   s     r"   visit_cautionzHTML5Translator.visit_caution  r  r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_cautionzHTML5Translator.depart_caution  r  r$   c                (    | j                  |d       y )Ndangerr   rA   s     r"   visit_dangerzHTML5Translator.visit_danger  s    dH-r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_dangerzHTML5Translator.depart_danger  r  r$   c                (    | j                  |d       y )Nerrorr   rA   s     r"   visit_errorzHTML5Translator.visit_error"  s    dG,r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_errorzHTML5Translator.depart_error%  r  r$   c                (    | j                  |d       y )Nhintr   rA   s     r"   
visit_hintzHTML5Translator.visit_hint(  r  r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_hintzHTML5Translator.depart_hint+  r  r$   c                (    | j                  |d       y )N	importantr   rA   s     r"   visit_importantzHTML5Translator.visit_important.  r  r$   c                &    | j                  |       y rE   r  rA   s     r"   depart_importantz HTML5Translator.depart_important1  r  r$   c                (    | j                  |d       y )Ntipr   rA   s     r"   	visit_tipzHTML5Translator.visit_tip4  s    dE*r$   c                &    | j                  |       y rE   r  rA   s     r"   
depart_tipzHTML5Translator.depart_tip7  r  r$   c                $    | j                  |      S rE   )visit_emphasisrA   s     r"   visit_literal_emphasisz&HTML5Translator.visit_literal_emphasis:  s    ""4((r$   c                $    | j                  |      S rE   )depart_emphasisrA   s     r"   depart_literal_emphasisz'HTML5Translator.depart_literal_emphasis=  s    ##D))r$   c                $    | j                  |      S rE   )visit_strongrA   s     r"   visit_literal_strongz$HTML5Translator.visit_literal_strong@  s      &&r$   c                $    | j                  |      S rE   )depart_strongrA   s     r"   depart_literal_strongz%HTML5Translator.depart_literal_strongC  s    !!$''r$   c                    i }|j                  d      r|d   |d<   | j                  j                   | j                  |ddfi |       y )Nexplanationr   abbrr*   )r   r@   r?   rK   )r:   rB   attrss      r"   visit_abbreviationz"HTML5Translator.visit_abbreviationF  sG    <<&!-0E'N		tVRA5ABr$   c                :    | j                   j                  d       y )Nz</abbr>rO   rA   s     r"   depart_abbreviationz#HTML5Translator.depart_abbreviationL  rt   r$   c                    | j                  |       | j                  r; | j                  j                  di |j                  |d<   | j	                  |       y y )Nr   r\   )r  r1   r  
attributesr   rA   s     r"   visit_manpagezHTML5Translator.visit_manpageO  sO    ##D)5T..55HHDN  & r$   c                `    | j                   r| j                  |       | j                  |       y rE   )r1   r   r  rA   s     r"   depart_manpagezHTML5Translator.depart_manpageU  s'    !!$'$$T*r$   c                   | j                   j                  d       i }| j                  j                  j	                  d      D cg c]  }|j                  d       }}|j                  dd       |j                  d|j                  dd      z         d|v rd	|d   z  |d
<    | j                  |dfddj                  |      i|}| j                  j                  |       y c c}w )Nr   ,z 	
docutilsr  r  rV  r  z	width: %sstylerP  r   r  )r7   r?   r   table_stylesplitry  r   rX   rK   r   r@   )r:   rB   r   clsru  tags         r"   visit_tablezHTML5Translator.visit_table\  s    &&q)151J1J1P1PQT1UV#399W%VVq*% 	zDHHWi$@@Ad?'$w-7DMdmmD'K'1BKdK		 Ws   C%c                X    | j                   j                          t        |   |       y rE   )r7   rF   r+   depart_tabler4  s     r"   r4  zHTML5Translator.depart_tablek  s"    ##%T"r$   c                   | j                   dxx   dz  cc<   | j                   d   dz  dk(  r|d   j                  d       n|d   j                  d       | j                  j                  | j                  |dd	             d|_        y )
Nr	  rS      r   ru  zrow-evenzrow-oddtrr*   )r7   r?   r@   rK   columnrA   s     r"   	visit_rowzHTML5Translator.visit_rowo  sz    #q(#""2&*a/O"":.O""9-		tT267r$   c                X    | j                   j                  d       t        |   |      S )Nr   )r8   r?   r+   visit_field_listr4  s     r"   r;  z HTML5Translator.visit_field_listx  s'    ##**1-w'--r$   c                V    | j                   j                          t        |   |      S rE   )r8   rF   r+   depart_field_listr4  s     r"   r=  z!HTML5Translator.depart_field_list|  s%    ##'')w(..r$   c                    | j                   dxx   dz  cc<   | j                   d   dz  dk(  r|d   j                  d       y |d   j                  d       y )Nr	  rS   r6  r   ru  z
field-evenz	field-odd)r8   r?   rA   s     r"   visit_fieldzHTML5Translator.visit_field  sT    ##B'1,'&&r*Q.!3O""<0O"";/r$   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }} || |       y rE   r'   math_renderer_nameappregistryhtml_inline_math_renderersr:   rB   math_envr   visitr
   s         r"   
visit_mathzHTML5Translator.visit_math  s?    LL33<<##,,GGMqdDr$   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }}|r
 || |       y y rE   rA  r:   rB   rG  r   r
   departs         r"   depart_mathzHTML5Translator.depart_math  sG    LL33LL$$--HHN	64 r$   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }} || |       y rE   r'   rB  rC  rD  html_block_math_renderersrF  s         r"   visit_math_blockz HTML5Translator.visit_math_block  s?    LL33<<##,,FFtLqdDr$   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }}|r
 || |       y y rE   rO  rK  s         r"   depart_math_blockz!HTML5Translator.depart_math_block  sG    LL33LL$$--GGM	64 r$   c           
         d|d   z   }d| j                   j                  g}| j                  j                  | j	                  |dd|d|             | j                  j                  d       y )	Nr   r   zfootnote-referencer   r*   zdoc-noteref)r\  ru  roler   z!<span class="fn-bracket">[</span>)r   footnote_referencesr@   r?   rK   )r:   rB   r   ru  s       r"   visit_footnote_referencez(HTML5Translator.visit_footnote_reference  sh    T']"')J)JK		tSW,9 ' F 	G		<=r$   )r;   znodes.documentr'   r   r$  r%  )rB   r   r$  r%  )
rB   r   r   ztype[Element]r   r   r   r   r$  r%  )r*   )rB   r   r   r   r$  r%  rE   )rB   zElement | Noner$  r%  )rB   r   r$  ztuple[int, ...] | None)rB   r   r   r   r$  r%  )rB   r   r$  r%  )rB   r   rG  r   r$  r%  )__name__
__module____qualname____doc____annotations__setr(   r,   rC   rG   rL   rP   rT   rZ   r]   rb   rf   ri   rn   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*  rY   r3  r6  r8  r;  rC  rE  rH  rO  rR  r_  rh  rk  rm  rp  rr  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)  r2  r4  r9  r;  r=  r?  rI  rM  rQ  rS  rW  __classcell__)r<   s   @r"   r&   r&   .   s    #" '*e8+&M
4&'
$#8":$:$:$@
+-- '- 	-
 - 
-<NP.U.7(*()@2("J"
I%D8#$F%/%(V:4(8
$N&8&
<#,.P) 'F20((%*$(-*+"\'
6,!"&*,%/%1%/%.%-%,%1%+%)*'(C$'+#./0>r$   r&   )r   r   r   r   r$  r   )+r[  
__future__r   r  r  r   urllib.parser  collections.abcr   typingr   r   r,  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   	getLoggerrX  r  r#   r&   r\   r$   r"   <module>rn     sn    M " 	  	  $ &  L  1 1  1 -22': 
		8	$	"z>& z>r$   