U
    \Shߐ                     @  s  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	m
Z
mZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZ ddlm Z  ddl!m"Z" e	rddl#m$Z$ e%e&Z'ddddddZ(G dd de eZ)dS )zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    )annotationsN)TYPE_CHECKINGIterablecast)nodes)ElementNodeText)HTMLTranslator)addnodes)Builder)___admonitionlabels)logging)SphinxTranslator)get_image_size)StandaloneHTMLBuilderstrint)lengthscalereturnc                 C  sL   t d| }|s| S |dkr | S | \}}t|| d }t| | S )z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$d   )rematchgroupsfloatr   )r   r   Zmatchedamountunitresult r!   G/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/writers/html5.pymultiply_length    s    r#   c                      s  e Zd ZU dZded< e Zded< dddd	 fd
dZdddddZdddddZ	dddddZ
dddddZdddddZdddddZdddddZdddddZdddddZdddd d!Zdddd"d#Zdddd$d%Zdddd&d'Zdddd(d)Zdddd*d+Zdddd,d-Zdddd.d/Zdddd0d1Zdddd2d3Zdddd4d5Zdd6d7d7dd8d9d:Zdddd;d<Zdddd=d>Zdddd?d@ZddddAdBZ ddddCdDZ!ddddEdFZ"ddddGdHZ#ddddIdJZ$ddddKdLZ%ddddMdNZ&ddddOdPZ'ddddQdRZ(ddddSdTZ)ddddUdVZ*ddddWdXZ+ddddYdZZ,dddd[d\Z-dddd]d^Z.dddd_d`Z/ddd7ddbdcddZ0ddfdddgdhZ1ddddidjZ2ddddkdlZ3ddmddndoZ4ddddpdqZ5ddddrdsZ6dd7ddtdudvZ7ddd fdwdxZ8ddddydzZ9dddd{d|Z:dddd}d~Z;dddddZ<dddddZ=dddddZ>ddd fddZ?ddd fddZ@ddd fddZAddd fddZBddd fddZCdddddZDdddddZEdddddZFdddddZGdddddZHdddddZIdddddZJdddddZKdddddZLdddddZMdddddZNdddddZOdddddZPdddddZQdddddZRddd fddZSddd fddZTddd fddZUdddddZVdddddZWdddddZXdddddZYdddddZZdddddZ[dddddZ\dddddZ]dddddĄZ^dddddƄZ_dddddȄZ`ddddd˄Zaddddd̈́ZbdddddτZcdddddфZddddddӄZedddddՄZfdddddׄZgdddddلZhdddddۄZiddddd݄Zjddddd߄ZkdddddZldddddZmdddddZndddddZodddddZpdddddZqdddddZrdddddZsdddddZtdddddZudddddZvdddddZwdddddZxdddddZydddddZzdddddZ{dddd dZ|ddd fddZ}dddddZ~ddd fddZddd fdd	Zdddd
dZddd7ddddZddd7ddddZddd7ddddZddd7ddddZdd Z  ZS (  HTML5Translatorz%
    Our custom HTML translator.
    r   builderzset[str]supported_inline_tagsznodes.documentr   None)documentr%   r   c                   sd   t  || | jj| _| jjg| _| jj| _d| _| jj	| _
d| _d| _dg| _dg| _d| _d S )Nr    )super__init__r%   highlighterZcurrent_docnamedocnamesconfigmanpages_urlprotect_literal_textZhtml_secnumber_suffixsecnumber_suffixparam_separatoroptional_param_level_table_row_indices_fieldlist_row_indicesrequired_params_left)selfr(   r%   	__class__r!   r"   r+   7   s    


zHTML5Translator.__init__r   )noder   c                 C  s(   | j |d  | jd|d   d S )Ndocnamez<span id="document-%s"></span>)r-   appendbodyr7   r:   r!   r!   r"   visit_start_of_fileE   s    z#HTML5Translator.visit_start_of_filec                 C  s   | j   d S N)r-   popr>   r!   r!   r"   depart_start_of_fileJ   s    z$HTML5Translator.depart_start_of_filec                 C  s   | j | |d d S )Ndlr=   r<   starttagr>   r!   r!   r"   
visit_descT   s    zHTML5Translator.visit_descc                 C  s   | j d d S )N</dl>

r=   r<   r>   r!   r!   r"   depart_descW   s    zHTML5Translator.depart_descc                 C  s&   | j | |d |  jd7  _d S )Ndt   )r=   r<   rE   r0   r>   r!   r!   r"   visit_desc_signatureZ   s    z$HTML5Translator.visit_desc_signaturec                 C  s8   |  j d8  _ |ds(| |td | jd d S )NrK   Zis_multilinePermalink to this definitionz</dt>
)r0   getadd_permalink_refr   r=   r<   r>   r!   r!   r"   depart_desc_signature_   s    
z%HTML5Translator.depart_desc_signaturec                 C  s   d S r@   r!   r>   r!   r!   r"   visit_desc_signature_linee   s    z)HTML5Translator.visit_desc_signature_linec                 C  s,   | dr| |jtd | jd d S )NZadd_permalinkrM   z<br />)rN   rO   parentr   r=   r<   r>   r!   r!   r"   depart_desc_signature_lineh   s    
z*HTML5Translator.depart_desc_signature_linec                 C  s   | j | |dd d S Nddr)   rD   r>   r!   r!   r"   visit_desc_contentn   s    z"HTML5Translator.visit_desc_contentc                 C  s   | j d d S )Nz</dd>rH   r>   r!   r!   r"   depart_desc_contentq   s    z#HTML5Translator.depart_desc_contentc                 C  s   | j | |dd d S Nspanr)   rD   r>   r!   r!   r"   visit_desc_inlinet   s    z!HTML5Translator.visit_desc_inlinec                 C  s   | j d d S N</span>rH   r>   r!   r!   r"   depart_desc_inlinew   s    z"HTML5Translator.depart_desc_inlinec                 C  s   | j | |dd d S rX   rD   r>   r!   r!   r"   visit_desc_name}   s    zHTML5Translator.visit_desc_namec                 C  s   | j d d S r[   rH   r>   r!   r!   r"   depart_desc_name   s    z HTML5Translator.depart_desc_namec                 C  s   | j | |dd d S rX   rD   r>   r!   r!   r"   visit_desc_addname   s    z"HTML5Translator.visit_desc_addnamec                 C  s   | j d d S r[   rH   r>   r!   r!   r"   depart_desc_addname   s    z#HTML5Translator.depart_desc_addnamec                 C  s   d S r@   r!   r>   r!   r!   r"   visit_desc_type   s    zHTML5Translator.visit_desc_typec                 C  s   d S r@   r!   r>   r!   r!   r"   depart_desc_type   s    z HTML5Translator.depart_desc_typec                 C  s(   | 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">rH   r>   r!   r!   r"   visit_desc_returns   s    z"HTML5Translator.visit_desc_returnsc                 C  s   | j d d S )Nz</span></span>rH   r>   r!   r!   r"   depart_desc_returns   s    z#HTML5Translator.depart_desc_returnsztype[Element]r   )r:   parameter_groupsig_open_parensig_close_parenr   c                   s   | j d| d d| _d| _d| _d| _ fdd|jD | _t| j| _	|j
| _|dd| _| jr| 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">r\   Tr   c                   s   g | ]}t | qS r!   )
isinstance.0crf   r!   r"   
<listcomp>   s     z=HTML5Translator._visit_sig_parameter_list.<locals>.<listcomp>multi_line_parameter_listFz

rC   N)r=   r<   is_first_paramr3   params_left_at_levelparam_group_indexchildrenlist_is_required_paramsumr6   Zchild_text_separatorr2   rN   rp   rE   rstripcontext)r7   r:   rf   rg   rh   r!   rn   r"   _visit_sig_parameter_list   s    z)HTML5Translator._visit_sig_parameter_listc                 C  s8   | dr| jd | j }| jd| d d S )Nrp   rG   ri   r\   )rN   r=   r<   rx   rA   )r7   r:   rh   r!   r!   r"   _depart_sig_parameter_list   s    

z*HTML5Translator._depart_sig_parameter_listc                 C  s   |  |tjdd d S )N())ry   r   desc_parameterr>   r!   r!   r"   visit_desc_parameterlist   s    z(HTML5Translator.visit_desc_parameterlistc                 C  s   |  | d S r@   rz   r>   r!   r!   r"   depart_desc_parameterlist   s    z)HTML5Translator.depart_desc_parameterlistc                 C  s   |  |tjdd d S )N[])ry   r   Zdesc_type_parameterr>   r!   r!   r"   visit_desc_type_parameter_list   s    z.HTML5Translator.visit_desc_type_parameter_listc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_desc_type_parameter_list   s    z/HTML5Translator.depart_desc_type_parameter_listc                 C  s   | j }|r0| jr| jdks0| j| |dd | jr>d| _n|sV| jsV| j| j | jdkrp|  jd8  _n|  jd8  _|	ds| jd d S )Nr   rU   r)   FrK   noemphz<em class="sig-param">)
rp   rq   r3   r=   r<   rE   r6   r2   rr   hasattr)r7   r:   Zon_separate_liner!   r!   r"   visit_desc_parameter   s    


z$HTML5Translator.visit_desc_parameterc                 C  s   | ds| jd | j| j }| jr| jd t| jk}| oP| j| jd  }| jdk}|sl|r|sl|r| j| j | jd n| j	r| j| j |r|  jd7  _d S )Nr   </em>rK   r   </dd>
)
r   r=   r<   ru   rs   rp   lenrr   r2   r6   )r7   r:   Zis_requiredZis_last_groupZnext_is_requiredZopt_param_left_at_levelr!   r!   r"   depart_desc_parameter   s     

z%HTML5Translator.depart_desc_parameterc                 C  s   |  | d S r@   )r   r>   r!   r!   r"   visit_desc_type_parameter   s    z)HTML5Translator.visit_desc_type_parameterc                 C  s   |  | d S r@   )r   r>   r!   r!   r"   depart_desc_type_parameter   s    z*HTML5Translator.depart_desc_type_parameterc                 C  s   t dd |jD | _|  jd7  _| j| _| jr| jr\| j| 	|dd | jd q| j
r| j| j | jd | jd q| jd | j| j | jd n| jd d S )Nc                 S  s   g | ]}t |tjqS r!   )rj   r   r}   rk   r!   r!   r"   ro      s   z7HTML5Translator.visit_desc_optional.<locals>.<listcomp>rK   rU   r)   z<span class="optional">[</span>r   )rv   rt   rr   r3   max_optional_param_levelrp   rq   r=   r<   rE   r6   r2   r>   r!   r!   r"   visit_desc_optional   s"    
z#HTML5Translator.visit_desc_optionalc                 C  s~   |  j d8  _ | jrV| j | jd kr2| j| j | jd | j dkrb| jd n| jd | j dkrz|  jd7  _d S )NrK   z<span class="optional">]</span>r   r   )r3   rp   r   r=   r<   r2   rs   r>   r!   r!   r"   depart_desc_optional  s    

z$HTML5Translator.depart_desc_optionalc                 C  s   | j | j|dddd d S )NZemr)   propertyCLASSrD   r>   r!   r!   r"   visit_desc_annotation!  s    z%HTML5Translator.visit_desc_annotationc                 C  s   | j d d S )Nr   rH   r>   r!   r!   r"   depart_desc_annotation$  s    z&HTML5Translator.depart_desc_annotationc                 C  s    | j | j|d|d d d S )Ndivtyper   rD   r>   r!   r!   r"   visit_versionmodified)  s    z%HTML5Translator.visit_versionmodifiedc                 C  s   | j d d S N</div>
rH   r>   r!   r!   r"   depart_versionmodified,  s    z&HTML5Translator.depart_versionmodifiedc              	   C  s\  ddi}| dsd|kr,|d  d7  < n|d  d7  < d|kr|d pNd|d< | jjr|d d	r| |d |d< d
| _n d|kstdd|d  |d< t|jt	j
st|dkrt|d t	jst|d  d7  < d|kr|d |d< d|kr|d |d< | j| j|ddf| | drX| jd| j dtt|d   d S )Nclass	referenceZinternalrefuri	 internal	 external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.rK   r   z image-referenceZreftitletitletargetar)   	secnumberz%s.)rN   settingscloak_email_addresses
startswithZcloak_mailto	in_mailtoAssertionErrorrj   rR   r   ZTextElementr   imager=   r<   rE   r1   joinmapr   r7   r:   attsr!   r!   r"   visit_reference0  s2    
 
zHTML5Translator.visit_referencec                 C  s   |  | d S r@   )r   r>   r!   r!   r"   visit_number_referenceL  s    z&HTML5Translator.visit_number_referencec                 C  s   |  | d S r@   )depart_referencer>   r!   r!   r"   depart_number_referenceO  s    z'HTML5Translator.depart_number_referencec                 C  s
   t jd S r@   r   SkipNoder>   r!   r!   r"   visit_commentS  s    zHTML5Translator.visit_commentr)   )r:   namer   c                 C  s<   | j | j|dd| d |r8|dt|t|  d S )Nr   zadmonition r   r   )r=   r<   rE   insertr   r   r   )r7   r:   r   r!   r!   r"   visit_admonitionW  s    
  z HTML5Translator.visit_admonitionNzElement | Nonec                 C  s   | j d d S r   rH   r>   r!   r!   r"   depart_admonition]  s    z!HTML5Translator.depart_admonitionc                 C  s   |  |d d S )NZseealsor   r>   r!   r!   r"   visit_seealso`  s    zHTML5Translator.visit_seealsoc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_seealsoc  s    zHTML5Translator.depart_seealsoztuple[int, ...] | Nonec                 C  s   | dr|d S t|jtjr| jjdkrb| jd }d||jd d }|| jj	krd| }n"d|jd d  }|| jj	krd	}| jj	 |r| jj	| S d S )
Nr   
singlehtmlz{}/#{}idsr   z%s/r   r)   )
rN   rj   rR   r   sectionr%   r   r-   formatZ
secnumbers)r7   r:   r;   Z
anchornamer!   r!   r"   get_secnumberf  s    


zHTML5Translator.get_secnumberc                 C  s4   |  |}|r0| jddtt|| j   d S )Nz&<span class="section-number">%s</span>r   )r   r=   r<   r   r   r   r1   )r7   r:   r   r!   r!   r"   add_secnumberz  s
    
zHTML5Translator.add_secnumberc                   sr   dddd fdd} j jjd |}|rnt|d dkr\td	|j }tj||d
 n|||d d  d S )Nr   r'   )figtype	figure_idr   c                   s    j jdkr" jd  d|  }n| }| j j|i kr jd  jj| }|d krtt	d|  }t
| n< j j| | } j|dtt| d   jd d S )	Nr   r   /z<span class="caption-number">z#numfig_format is not defined for %sr    r\   )r%   r   r-   Z
fignumbersrN   r=   r<   r.   Znumfig_formatr   loggerwarningr   r   r   )r   r   keyprefixmsgnumbersr7   r!   r"   append_fignumber  s     z7HTML5Translator.add_fignumber.<locals>.append_fignumberZstdr   r   z Any IDs not assigned for %s nodelocation)	r%   envdomainsZget_enumerable_node_typer   r   tagnamer   r   )r7   r:   r   r   r   r!   r   r"   add_fignumber  s    zHTML5Translator.add_fignumber)r:   r   r   c                 C  sB   |d r>| j jr>| jjr>d}| j||d d || j jf  d S )Nr   z2<a class="headerlink" href="#%s" title="%s">%s</a>r   )r.   html_permalinksr%   add_permalinksr=   r<   html_permalinks_icon)r7   r:   r   r   r!   r!   r"   rO     s
    z!HTML5Translator.add_permalink_refc                   s2   t |dkr"t|d tjr"tjt | d S )NrK   r   )r   rj   r   toctreer   r   r*   visit_bullet_listr>   r8   r!   r"   r     s    z!HTML5Translator.visit_bullet_listc                 C  s   | j | |dd d S rT   rD   r>   r!   r!   r"   visit_definition  s    z HTML5Translator.visit_definitionc                 C  s   | j d d S )Nr   rH   r>   r!   r!   r"   depart_definition  s    z!HTML5Translator.depart_definitionc                 C  s   | j | j|dddd d S )NrY   r)   
classifierr   rD   r>   r!   r!   r"   visit_classifier  s    z HTML5Translator.visit_classifierc                 C  s6   | j d |jddd}t|tjs2| j d d S )Nr\   FTZdescendZsiblings</dt>)r=   r<   	next_noderj   r   r   r7   r:   r   r!   r!   r"   depart_classifier  s    z!HTML5Translator.depart_classifierc                 C  s   | j | |dd d S )NrJ   r)   rD   r>   r!   r!   r"   
visit_term  s    zHTML5Translator.visit_termc                 C  sN   |j ddd}t|tjrn.t|jjjtjr>| |td | j	
d d S )NFTr   zPermalink to this termr   )r   rj   r   r   rR   r   ZglossaryrO   r   r=   r<   r   r!   r!   r"   depart_term  s    zHTML5Translator.depart_termc              	     s   t |jtjrP|jdrP| j| j|ddddd | jd | jd nt	 
| | | | |j t |jtjr| jd d S )	Nr   pr)   captionheading)r   ZROLEz<span class="caption-text">z</span></p>
)rj   rR   r   Zcompact_paragraphrN   r=   r<   rE   rx   r*   visit_titler   r   r   tabler>   r8   r!   r"   r     s    
zHTML5Translator.visit_titlec                   s   | j d }| jjr| jjr|jdr|jd r|drN| |jt	d q|dr| j
d|jd d  dt	d| jj  qt|jtjr| j
d	 | |jt	d
 nt|jtjr| j
d	 t | d S )Nr   r   z</hzPermalink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}r\   zPermalink to this table)rx   r.   r   r%   r   rR   r   r   rO   r   r=   r<   r   r   rj   r   r   r*   depart_title)r7   r:   Z	close_tagr8   r!   r"   r     s.    



zHTML5Translator.depart_titlec                   s   |j | krt |S |dd}|dd}|di }|dd|d< | jj|i }|rr| jjrr| jj}| jj	|j |f|||d|}| j
|dd	d
| d}| j|| d  tjd S )NlanguagedefaultlinenosFhighlight_argsforce)optsr   r   r   r)   zhighlight-%s notranslatesuffixr   r   )Z	rawsourceastextr*   visit_literal_blockrN   r.   highlight_optionsZhtml_codeblock_linenos_styler,   highlight_blockrE   r=   r<   r   r   )r7   r:   langr   r   r   highlightedrE   r8   r!   r"   r     s0      
z#HTML5Translator.visit_literal_blockc                   s^   t |jtjr(|jdr(| jd nt | | 	|j | j| j
|dddd d S )Nliteral_blockz <div class="code-block-caption">rY   r)   zcaption-textr   )rj   rR   r   	containerrN   r=   r<   r*   visit_captionr   rE   r>   r8   r!   r"   r  	  s
    zHTML5Translator.visit_captionc                   s   | j d t|jtjr:|jdr:| |jtd nBt|jtj	r\| |jtd n |jdr|| |jjtd t|jtjr|jdr| j d nt
 | d S )Nr\   r   zPermalink to this codezPermalink to this imager   zPermalink to this toctreer   )r=   r<   rj   rR   r   r   rN   rO   r   Zfigurer*   depart_captionr>   r8   r!   r"   r    s    zHTML5Translator.depart_captionc                 C  s   |  | d S r@   )r   r>   r!   r!   r"   visit_doctest_block!  s    z#HTML5Translator.visit_doctest_blockc                 C  s   | j | |dd  d S )NZ
blockquotez<div>rD   r>   r!   r!   r"   visit_block_quote%  s    z!HTML5Translator.visit_block_quotec                 C  s   | j d d S )Nz</div></blockquote>
rH   r>   r!   r!   r"   depart_block_quote(  s    z"HTML5Translator.depart_block_quotec                 C  s   d|d kr*| j | j|dddd d S |dd }d|d ksF|sr| j | j|dddd |  jd7  _d S | jj|i }| jj|	 |||d	d
}| j|ddd| d}| j ||
  d  tjd S )Nkbdclassesr)   zdocutils literal notranslater   r   coderK   T)r   r   Znowrapz'docutils literal highlight highlight-%sr   </code>)r=   r<   rE   rN   r0   r.   r   r,   r   r   stripr   r   )r7   r:   r   r   r   rE   r!   r!   r"   visit_literal,  s8        zHTML5Translator.visit_literalc                 C  s8   d|d kr| j d n|  jd8  _| j d d S )Nr  r  z</kbd>rK   r	  )r=   r<   r0   r>   r!   r!   r"   depart_literalD  s    zHTML5Translator.depart_literalc                 C  s   | j | |d g }tttj |}|D ]}||d  q,tdd |D }d }|D ]x}|d r|d |}| j | |dd | j |d  n |d k	r| j dd	t	|   |
|  | j d
 qZ| j d tjd S )NpreZ	tokennamec                 s  s   | ]}t |V  qd S r@   )r   )rl   r   r!   r!   r"   	<genexpr>Q  s     z7HTML5Translator.visit_productionlist.<locals>.<genexpr>strongr)   z</strong> ::= z%s     r   
z</pre>
)r=   r<   rE   r   r   r   
productionmaxljustr   Z	walkaboutr   r   )r7   r:   namesZproductionlistr  maxlenlastnamer!   r!   r"   visit_productionlistK  s$    
z$HTML5Translator.visit_productionlistc                 C  s   d S r@   r!   r>   r!   r!   r"   depart_productionlist_  s    z%HTML5Translator.depart_productionlistc                 C  s   d S r@   r!   r>   r!   r!   r"   visit_productionb  s    z HTML5Translator.visit_productionc                 C  s   d S r@   r!   r>   r!   r!   r"   depart_productione  s    z!HTML5Translator.depart_productionc                 C  s    | j | j|dddd  d S )Nr   Zcenteredr   z<strong>rD   r>   r!   r!   r"   visit_centeredh  s    zHTML5Translator.visit_centeredc                 C  s   | j d d S )Nz</strong></p>rH   r>   r!   r!   r"   depart_centeredl  s    zHTML5Translator.depart_centeredc                 C  s   d S r@   r!   r>   r!   r!   r"   visit_compact_paragrapho  s    z'HTML5Translator.visit_compact_paragraphc                 C  s   d S r@   r!   r>   r!   r!   r"   depart_compact_paragraphr  s    z(HTML5Translator.depart_compact_paragraphc                 C  s   ddd}| j js | jd nd|krl|d  d7  < |d |d< | j| j|ddf| | jd	 nld
|kr|d  d7  < t| j jt	j
|d
 |d< | j| j|ddf| | jd	 n| jd d S )Nzreference downloadr)   )r   downloadr   r   r   r   r   z</a>filenamer   )r%   Zdownload_supportrx   r<   r=   rE   	posixpathr   Zdlpathurllibparsequoter   r!   r!   r"   visit_download_referenceu  s$    
z(HTML5Translator.visit_download_referencec                 C  s   | j | j  d S r@   )r=   r<   rx   rA   r>   r!   r!   r"   depart_download_reference  s    z)HTML5Translator.depart_download_referencec                   s   | dd t |S )Nalignr   )
setdefaultr*   visit_figurer>   r8   r!   r"   r)    s    zHTML5Translator.visit_figurec                   s  |d }|| j jkr8t| j jtj| j j| |d< d|krd|krPd|kstt	j
| j j|}|d krtjtd|d n0d|krt|d |d< d|krt|d |d< |d }| d	rd
|i}d|kr|d |d< d|kr|d |d< d|krDd|kr$t|d |d |d< d|krDt|d |d |d< |d||d< d|krnd|d  |d< | j| j|ddf| d S t | d S )Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r   r   rK   svgZsvgzsrcZaltr'  align-%sr   Zimgr)   )r%   Zimagesr!  r   Zimgpathr"  r#  r$  r   ospathsrcdirr   r   r   r   lowerendswithr#   rN   r=   r<   Zemptytagr*   visit_image)r7   r:   Zoldurisizer*  r   r8   r!   r"   r6    sF    




zHTML5Translator.visit_imagec                   s$   |d   drnt | d S )Nr*  r-  )r4  r5  r*   depart_imager>   r8   r!   r"   r8    s    zHTML5Translator.depart_imagec                 C  s
   t jd S r@   r   r>   r!   r!   r"   visit_toctree  s    zHTML5Translator.visit_toctreec                 C  s
   t jd S r@   r   r>   r!   r!   r"   visit_index  s    zHTML5Translator.visit_indexc                 C  s
   t jd S r@   r   r>   r!   r!   r"   visit_tabular_col_spec  s    z&HTML5Translator.visit_tabular_col_specc                 C  s   d S r@   r!   r>   r!   r!   r"   visit_glossary  s    zHTML5Translator.visit_glossaryc                 C  s   d S r@   r!   r>   r!   r!   r"   depart_glossary  s    zHTML5Translator.depart_glossaryc                 C  s   d S r@   r!   r>   r!   r!   r"   
visit_acks  s    zHTML5Translator.visit_acksc                 C  s   d S r@   r!   r>   r!   r!   r"   depart_acks  s    zHTML5Translator.depart_acksc                 C  s   | j d d S )Nz<table class="hlist"><tr>rH   r>   r!   r!   r"   visit_hlist  s    zHTML5Translator.visit_hlistc                 C  s   | j d d S )Nz</tr></table>
rH   r>   r!   r!   r"   depart_hlist  s    zHTML5Translator.depart_hlistc                 C  s   | j d d S )Nz<td>rH   r>   r!   r!   r"   visit_hlistcol  s    zHTML5Translator.visit_hlistcolc                 C  s   | j d d S )Nz</td>rH   r>   r!   r!   r"   depart_hlistcol  s    zHTML5Translator.depart_hlistcolr	   c                 C  s   |  }| |}| jrx| j|D ]P}| rB| jd|  q$|dkrX| j| q$| jdt|d  d  q$n$| j	r| j
jr| |}| j| d S )Nz<span class="pre">%s</span>z 
z&#160;rK   r   )r   encoder0   Zwords_and_spacesfindallr
  r=   r<   r   r   r   r   Zcloak_email)r7   r:   textencodedtokenr!   r!   r"   
visit_Text  s    
 
zHTML5Translator.visit_Textc                 C  s   |  |d d S )NZnoter   r>   r!   r!   r"   
visit_note   s    zHTML5Translator.visit_notec                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_note  s    zHTML5Translator.depart_notec                 C  s   |  |d d S )Nr   r   r>   r!   r!   r"   visit_warning  s    zHTML5Translator.visit_warningc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_warning	  s    zHTML5Translator.depart_warningc                 C  s   |  |d d S )NZ	attentionr   r>   r!   r!   r"   visit_attention  s    zHTML5Translator.visit_attentionc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_attention  s    z HTML5Translator.depart_attentionc                 C  s   |  |d d S )NZcautionr   r>   r!   r!   r"   visit_caution  s    zHTML5Translator.visit_cautionc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_caution  s    zHTML5Translator.depart_cautionc                 C  s   |  |d d S )NZdangerr   r>   r!   r!   r"   visit_danger  s    zHTML5Translator.visit_dangerc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_danger  s    zHTML5Translator.depart_dangerc                 C  s   |  |d d S )Nerrorr   r>   r!   r!   r"   visit_error  s    zHTML5Translator.visit_errorc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_error!  s    zHTML5Translator.depart_errorc                 C  s   |  |d d S )Nhintr   r>   r!   r!   r"   
visit_hint$  s    zHTML5Translator.visit_hintc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_hint'  s    zHTML5Translator.depart_hintc                 C  s   |  |d d S )NZ	importantr   r>   r!   r!   r"   visit_important*  s    zHTML5Translator.visit_importantc                 C  s   |  | d S r@   r   r>   r!   r!   r"   depart_important-  s    z HTML5Translator.depart_importantc                 C  s   |  |d d S )NZtipr   r>   r!   r!   r"   	visit_tip0  s    zHTML5Translator.visit_tipc                 C  s   |  | d S r@   r   r>   r!   r!   r"   
depart_tip3  s    zHTML5Translator.depart_tipc                 C  s
   |  |S r@   )Zvisit_emphasisr>   r!   r!   r"   visit_literal_emphasis6  s    z&HTML5Translator.visit_literal_emphasisc                 C  s
   |  |S r@   )Zdepart_emphasisr>   r!   r!   r"   depart_literal_emphasis9  s    z'HTML5Translator.depart_literal_emphasisc                 C  s
   |  |S r@   )Zvisit_strongr>   r!   r!   r"   visit_literal_strong<  s    z$HTML5Translator.visit_literal_strongc                 C  s
   |  |S r@   )Zdepart_strongr>   r!   r!   r"   depart_literal_strong?  s    z%HTML5Translator.depart_literal_strongc                 C  s8   i }| dr|d |d< | j| j|ddf| d S )NZexplanationr   Zabbrr)   )r   r=   r<   rE   )r7   r:   attrsr!   r!   r"   visit_abbreviationB  s    
z"HTML5Translator.visit_abbreviationc                 C  s   | j d d S )Nz</abbr>rH   r>   r!   r!   r"   depart_abbreviationH  s    z#HTML5Translator.depart_abbreviationc                 C  s2   |  | | jr.| jjf |j|d< | | d S )Nr   )r^  r/   r   
attributesr   r>   r!   r!   r"   visit_manpageK  s    
zHTML5Translator.visit_manpagec                 C  s   | j r| | | | d S r@   )r/   r   r_  r>   r!   r!   r"   depart_manpageQ  s    
zHTML5Translator.depart_manpagec                 C  s   | j d i }dd | jjdD }|dd |d|dd  d	|krbd
|d	  |d< | j|dfdd|i|}| j	| d S )Nr   c                 S  s   g | ]}| d qS )z 	
)r
  )rl   clsr!   r!   r"   ro   \  s     z/HTML5Translator.visit_table.<locals>.<listcomp>,docutilsr0  r'  r   r+  z	width: %sstyler   r   r   )
r4   r<   r   table_stylesplitr   rN   rE   r   r=   )r7   r:   r   r  tagr!   r!   r"   visit_tableX  s    zHTML5Translator.visit_tablec                   s   | j   t | d S r@   )r4   rA   r*   depart_tabler>   r8   r!   r"   rp  g  s    
zHTML5Translator.depart_tablec                 C  sb   | j d  d7  < | j d d dkr4|d d n|d d | j| |dd	 d|_d S )
Nr   rK      r   r  zrow-evenzrow-oddtrr)   )r4   r<   r=   rE   columnr>   r!   r!   r"   	visit_rowk  s    zHTML5Translator.visit_rowc                   s   | j d t |S )Nr   )r5   r<   r*   visit_field_listr>   r8   r!   r"   ru  t  s    z HTML5Translator.visit_field_listc                   s   | j   t |S r@   )r5   rA   r*   depart_field_listr>   r8   r!   r"   rv  x  s    
z!HTML5Translator.depart_field_listc                 C  sF   | j d  d7  < | j d d dkr4|d d n|d d d S )Nr   rK   rq  r   r  z
field-evenz	field-odd)r5   r<   r>   r!   r!   r"   visit_field|  s    zHTML5Translator.visit_field)r:   math_envr   c                 C  s*   | j j}| j jjj| \}}|| | d S r@   r%   math_renderer_nameappregistryZhtml_inline_math_renderersr7   r:   rx  r   visitr   r!   r!   r"   
visit_math  s    zHTML5Translator.visit_mathc                 C  s.   | j j}| j jjj| \}}|r*|| | d S r@   ry  r7   r:   rx  r   r   Zdepartr!   r!   r"   depart_math  s    zHTML5Translator.depart_mathc                 C  s*   | j j}| j jjj| \}}|| | d S r@   r%   rz  r{  r|  Zhtml_block_math_renderersr}  r!   r!   r"   visit_math_block  s    z HTML5Translator.visit_math_blockc                 C  s.   | j j}| j jjj| \}}|r*|| | d S r@   r  r  r!   r!   r"   depart_math_block  s    z!HTML5Translator.depart_math_blockc              
   C  sF   d|d  }d| j jg}| j| j|dd|d|d | jd d S )	Nr   r   zfootnote-referencer   r)   zdoc-noteref)r   r  Zroler   z!<span class="fn-bracket">[</span>)r   Zfootnote_referencesr=   r<   rE   )r7   r:   r   r  r!   r!   r"   visit_footnote_reference  s     z(HTML5Translator.visit_footnote_reference)r)   )N)r)   )r)   )r)   )r)   )__name__
__module____qualname____doc____annotations__setr&   r+   r?   rB   rF   rI   rL   rP   rQ   rS   rV   rW   rZ   r]   r^   r_   r`   ra   rb   rc   rd   re   ry   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   rO   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)  r6  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rU  rV  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rc  rd  rf  rg  ro  rp  rt  ru  rv  rw  r  r  r  r  r  __classcell__r!   r!   r8   r"   r$   ,   s  

		-	r$   )*r  
__future__r   r1  r!  r   urllib.parser"  typingr   r   r   rj  r   Zdocutils.nodesr   r   r	   Zdocutils.writers.html5_polyglotr
   ZBaseTranslatorZsphinxr   Zsphinx.buildersr   Zsphinx.localer   r   r   Zsphinx.utilr   Zsphinx.util.docutilsr   Zsphinx.util.imagesr   Zsphinx.builders.htmlr   	getLoggerr  r   r#   r$   r!   r!   r!   r"   <module>   s(   
