o
    Ni                     @  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	 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rlddlmZm Z m!Z! ddl"m#Z# ddl$m%Z% e&e'Z(dddZ)G d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                 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   matchedamountunitresult r"   H/home/ubuntu/.local/lib/python3.10/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 fddZd ddZd ddZ	d ddZ
d ddZd ddZd ddZd ddZd ddZd dd Zd d!d"Zd d#d$Zd d%d&Zd d'd(Zd d)d*Zd d+d,Zd d-d.Zd d/d0Zd d1d2Zd d3d4Zd d5d6Zd!d<d=Zd d>d?Zd d@dAZd dBdCZd dDdEZ d dFdGZ!d dHdIZ"d dJdKZ#d dLdMZ$d dNdOZ%d dPdQZ&d dRdSZ'd dTdUZ(d dVdWZ)d dXdYZ*d dZd[Z+d d\d]Z,d d^d_Z-d d`daZ.d dbdcZ/d"d#dfdgZ0d$d%djdkZ1d dldmZ2d dndoZ3d&dqdrZ4d dsdtZ5d dudvZ6d'dxdyZ7d  fdzd{Z8d d|d}Z9d d~dZ:d ddZ;d ddZ<d ddZ=d ddZ>d  fddZ?d  fddZ@d( fddZAd( fddZBd  fddZCd  fddZDd  fddZEd ddZFd ddZGd ddZHd ddZId ddZJd ddZKd ddZLd ddZMd ddZNd ddZOd ddZPd ddZQd ddZRd ddZSd ddZTd  fddZUd  fddZVd  fddZWd ddZXd ddZYd ddZZd ddZ[d ddĄZ\d ddƄZ]d ddȄZ^d ddʄZ_d dd̄Z`d dd΄Zad ddЄZbd)ddӄZcd ddՄZdd ddׄZed ddلZfd ddۄZgd dd݄Zhd dd߄Zid ddZjd ddZkd ddZld ddZmd ddZnd ddZod ddZpd ddZqd ddZrd ddZsd ddZtd ddZud ddZvd ddZwd ddZxd ddZyd d dZzd ddZ{d ddZ|d ddZ}d dd	Z~d  fd
dZd ddZd  fddZd  fddZd ddZd"d*ddZd"d*ddZd"d*ddZd"d*ddZd ddZ  ZS (+  HTML5Translatorz%
    Our custom HTML translator.
    r   builderzset[str]supported_inline_tagsdocumentnodes.documentr   r   Nonec                   sZ   t  || | jj| _| jjg| _d| _| jj| _	d| _
d| _dg| _dg| _d| _d S )Nr    )super__init__r&   highlightercurrent_docnamedocnamesprotect_literal_textconfig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-   9   s   


zHTML5Translator.__init__noder   c                 C  s(   | j |d  | jd|d   d S )Ndocnamez<span id="document-%s"></span>)r0   appendbodyr:   r=   r"   r"   r#   visit_start_of_fileF   s   z#HTML5Translator.visit_start_of_filec                 C  s   | j   d S N)r0   poprA   r"   r"   r#   depart_start_of_fileK      z$HTML5Translator.depart_start_of_filec                 C  s   | j | |d d S )Ndlr@   r?   starttagrA   r"   r"   r#   
visit_descU   s   zHTML5Translator.visit_descc                 C     | j d d S )N</dl>

r@   r?   rA   r"   r"   r#   depart_descX      zHTML5Translator.depart_descc                 C  s&   | j | |d |  jd7  _d S )Ndt   )r@   r?   rI   r1   rA   r"   r"   r#   visit_desc_signature[   s   z$HTML5Translator.visit_desc_signaturec                 C  s8   |  j d8  _ |ds| |td | jd d S )NrQ   is_multilineLink to this definitionz</dt>
)r1   getadd_permalink_refr	   r@   r?   rA   r"   r"   r#   depart_desc_signature`   s   
z%HTML5Translator.depart_desc_signaturec                 C     d S rC   r"   rA   r"   r"   r#   visit_desc_signature_linef      z)HTML5Translator.visit_desc_signature_linec                 C  s,   | dr| |jtd | jd d S )Nadd_permalinkrT   z<br />)rU   rV   parentr	   r@   r?   rA   r"   r"   r#   depart_desc_signature_linei   s   
z*HTML5Translator.depart_desc_signature_linec                 C     | j | |dd d S Nddr+   rH   rA   r"   r"   r#   visit_desc_contento      z"HTML5Translator.visit_desc_contentc                 C  rK   )Nz</dd>rM   rA   r"   r"   r#   depart_desc_contentr   rO   z#HTML5Translator.depart_desc_contentc                 C  r^   Nspanr+   rH   rA   r"   r"   r#   visit_desc_inlineu   rb   z!HTML5Translator.visit_desc_inlinec                 C  rK   N</span>rM   rA   r"   r"   r#   depart_desc_inlinex   rO   z"HTML5Translator.depart_desc_inlinec                 C  r^   rd   rH   rA   r"   r"   r#   visit_desc_name~   rb   zHTML5Translator.visit_desc_namec                 C  rK   rg   rM   rA   r"   r"   r#   depart_desc_name   rO   z HTML5Translator.depart_desc_namec                 C  r^   rd   rH   rA   r"   r"   r#   visit_desc_addname   rb   z"HTML5Translator.visit_desc_addnamec                 C  rK   rg   rM   rA   r"   r"   r#   depart_desc_addname   rO   z#HTML5Translator.depart_desc_addnamec                 C  rX   rC   r"   rA   r"   r"   r#   visit_desc_type   rZ   zHTML5Translator.visit_desc_typec                 C  rX   rC   r"   rA   r"   r"   r#   depart_desc_type   rZ   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">rM   rA   r"   r"   r#   visit_desc_returns   s   z"HTML5Translator.visit_desc_returnsc                 C  rK   )Nz</span></span>rM   rA   r"   r"   r#   depart_desc_returns   rO   z#HTML5Translator.depart_desc_returnsparameter_grouptype[Element]sig_open_parenr   sig_close_parenc                   s   | j d| d d| _d| _d| _d| _ fdd|jD | _t| j| _	|j
| _|dd| _| jrK| 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">rh   Tr   c                   s   g | ]}t | qS r"   )
isinstance.0crr   r"   r#   
<listcomp>   s    
z=HTML5Translator._visit_sig_parameter_list.<locals>.<listcomp>multi_line_parameter_listFz

rG   N)r@   r?   is_first_paramr6   params_left_at_levelparam_group_indexchildrenlist_is_required_paramsumr9   child_text_separatorr5   rU   r}   rI   rstripcontext)r:   r=   rr   rt   ru   r"   r{   r#   _visit_sig_parameter_list   s    
z)HTML5Translator._visit_sig_parameter_listc                 C  s8   | dr| jd | j }| jd| d d S )Nr}   rL   rv   rh   )rU   r@   r?   r   rD   )r:   r=   ru   r"   r"   r#   _depart_sig_parameter_list   s   

z*HTML5Translator._depart_sig_parameter_listc                 C     |  |tjdd d S )N())r   r   desc_parameterrA   r"   r"   r#   visit_desc_parameterlist      z(HTML5Translator.visit_desc_parameterlistc                 C     |  | d S rC   r   rA   r"   r"   r#   depart_desc_parameterlist   rF   z)HTML5Translator.depart_desc_parameterlistc                 C  r   )N[])r   r   desc_type_parameterrA   r"   r"   r#   visit_desc_type_parameter_list   r   z.HTML5Translator.visit_desc_type_parameter_listc                 C  r   rC   r   rA   r"   r"   r#   depart_desc_type_parameter_list   rF   z/HTML5Translator.depart_desc_type_parameter_listc                 C  s   | j }|r| jr| jdks| j| |dd | jrd| _n|s+| js+| j| j | jdkr8|  jd8  _n|  jd8  _|	dsL| jd d S d S )Nr   r`   r+   FrQ   noemphz<em class="sig-param">)
r}   r~   r6   r@   r?   rI   r9   r5   r   hasattr)r:   r=   on_separate_liner"   r"   r#   visit_desc_parameter   s    



z$HTML5Translator.visit_desc_parameterc                 C  s   | ds| jd | j| j }| jrFt| j}| jd |k}| o*| j| jd  }| jdk}|s8|rE|s8|rE| j| j | jd n
| j	rP| j| j |r[|  jd7  _d S d S )Nr   </em>rQ   r   </dd>
)
r   r@   r?   r   r   r}   lenr   r5   r9   )r:   r=   is_requiredlen_lirpis_last_groupnext_is_requiredopt_param_left_at_levelr"   r"   r#   depart_desc_parameter   s4   


z%HTML5Translator.depart_desc_parameterc                 C  r   rC   )r   rA   r"   r"   r#   visit_desc_type_parameter   rF   z)HTML5Translator.visit_desc_type_parameterc                 C  r   rC   )r   rA   r"   r"   r#   depart_desc_type_parameter   rF   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 d S | j
rG| j| j | jd | jd d S | jd | j| j | jd d S | jd d S )Nc                 s  s    | ]	}t |tjV  qd S rC   )rw   r   r   rx   r"   r"   r#   	<genexpr>  s    
z6HTML5Translator.visit_desc_optional.<locals>.<genexpr>rQ   r`   r+   z<span class="optional">[</span>r   )r   r   r   r6   max_optional_param_levelr}   r~   r@   r?   rI   r9   r5   rA   r"   r"   r#   visit_desc_optional  s"   
z#HTML5Translator.visit_desc_optionalc                 C  s   |  j d8  _ | jr+| j | jd kr| j| j | jd | j dkr*| jd n| jd | j dkr?|  jd7  _d S d S )NrQ   z<span class="optional">]</span>r   r   )r6   r}   r   r@   r?   r5   r   rA   r"   r"   r#   depart_desc_optional  s   

z$HTML5Translator.depart_desc_optionalc                 C     | j | j|dddd d S )Nemr+   propertyCLASSrH   rA   r"   r"   r#   visit_desc_annotation,     z%HTML5Translator.visit_desc_annotationc                 C  rK   )Nr   rM   rA   r"   r"   r#   depart_desc_annotation/  rO   z&HTML5Translator.depart_desc_annotationc                 C  s    | j | j|d|d d d S )Ndivtyper   rH   rA   r"   r"   r#   visit_versionmodified4      z%HTML5Translator.visit_versionmodifiedc                 C  rK   N</div>
rM   rA   r"   r"   r#   depart_versionmodified7  rO   z&HTML5Translator.depart_versionmodifiedc              	   C  st  ddi}| dsd|vr|d  d7  < n|d  d7  < d|v rB|d p'd|d< | jjrA|d d	rA| |d |d< d
| _nd|v sJJ dd|d  |d< t|jtj	sqt
|dkrgt|d tjsiJ |d  d7  < d|v r{|d |d< d|v r|d |d< d|v r|d |d< | j| j|ddfi | | dr| jd| j dtt|d   d S d S )Nclass	referenceinternalrefuri	 internal	 external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.rQ   r   z image-referencereftitletitletargetrelar+   	secnumberz%s.)rU   settingscloak_email_addresses
startswithcloak_mailto	in_mailtorw   r\   r   TextElementr   imager@   r?   rI   r4   joinmapr   r:   r=   attsr"   r"   r#   visit_reference;  s@   
 
zHTML5Translator.visit_referencec                 C  r   rC   )r   rA   r"   r"   r#   visit_number_reference^  rF   z&HTML5Translator.visit_number_referencec                 C  r   rC   )depart_referencerA   r"   r"   r#   depart_number_referencea  rF   z'HTML5Translator.depart_number_referencec                 C     t jrC   r   SkipNoderA   r"   r"   r#   visit_commente     zHTML5Translator.visit_commentr+   namec                 C  s@   | j | j|dd| d |r|dt|t|  d S d S )Nr   zadmonition r   r   )r@   r?   rI   insertr   r   r   )r:   r=   r   r"   r"   r#   visit_admonitioni  s   z HTML5Translator.visit_admonitionNElement | Nonec                 C  rK   r   rM   rA   r"   r"   r#   depart_admonitionn  rO   z!HTML5Translator.depart_admonitionc                 C     |  |d d S )Nseealsor   rA   r"   r"   r#   visit_seealsoq  rO   zHTML5Translator.visit_seealsoc                 C  r   rC   r   rA   r"   r"   r#   depart_seealsot  rF   zHTML5Translator.depart_seealsotuple[int, ...] | Nonec                 C  s   | dr	|d S t|jtjrQ| jjdkr3| jd }| d|jd d  }|| jjvr2| d}nd|jd d  }|| jjvrDd	}| jj |rQ| jj| S d S )
Nr   
singlehtmlz/#idsr   /r   r+   )	rU   rw   r\   r   sectionr&   r   r0   
secnumbers)r:   r=   r>   
anchornamer"   r"   r#   get_secnumberw  s   


zHTML5Translator.get_secnumberc                 C  s8   |  |}|r| jddtt|| j   d S d S )Nz&<span class="section-number">%s</span>r   )r   r@   r?   r   r   r   r4   )r:   r=   r   r"   r"   r#   add_secnumber  s   
zHTML5Translator.add_secnumberc                   sn   d fdd} j jjj|}|r5t|d d	kr*td
|j }tj	||d d S |||d d	  d S d S )Nfigtyper   	figure_idr   r*   c                   s    j jdkr jd  d|  }n| }| j j|i v r[ jd  jj| }|d u r;t	d|  }t
| d S  j j| | } j|dtt| d   jd d S d S )	Nr   r   r   z<span class="caption-number">z#numfig_format is not defined for %sr    rh   )r&   r   r0   
fignumbersrU   r@   r?   r2   numfig_formatr
   loggerwarningr   r   r   )r   r   keyprefixmsgnumbersr:   r"   r#   append_fignumber  s    z7HTML5Translator.add_fignumber.<locals>.append_fignumberr   r   z Any IDs not assigned for %s nodelocation)r   r   r   r   r   r*   )
r&   envdomainsstandard_domainget_enumerable_node_typer   r
   tagnamer   r   )r:   r=   r   r   r   r"   r   r#   add_fignumber  s   zHTML5Translator.add_fignumberr   c              	   C  sX   | j j}|d r&| j jr(| jjr*| 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>)r2   html_permalinks_iconhtml_permalinksr&   add_permalinksr@   r?   )r:   r=   r   iconr"   r"   r#   rV     s   z!HTML5Translator.add_permalink_refc                   s2   t |dkrt|d tjrtjt | d S )NrQ   r   )r   rw   r   toctreer   r   r,   visit_bullet_listrA   r;   r"   r#   r    s   z!HTML5Translator.visit_bullet_listc                 C  r^   r_   rH   rA   r"   r"   r#   visit_definition  s   z HTML5Translator.visit_definitionc                 C  rK   )Nr   rM   rA   r"   r"   r#   depart_definition  rO   z!HTML5Translator.depart_definitionc                 C  r   )Nre   r+   
classifierr   rH   rA   r"   r"   r#   visit_classifier  r   z HTML5Translator.visit_classifierc                 C  s:   | j d |jddd}t|tjs| j d d S d S )Nrh   FTdescendsiblings</dt>)r@   r?   	next_noderw   r   r  r:   r=   r  r"   r"   r#   depart_classifier  s
   z!HTML5Translator.depart_classifierc                 C  r^   )NrP   r+   rH   rA   r"   r"   r#   
visit_term  rb   zHTML5Translator.visit_termc                 C  sP   |j ddd}t|tjrd S t|jjjtjr | |td | j	
d d S )NFTr  zLink to this termr  )r  rw   r   r  r\   r   glossaryrV   r	   r@   r?   r  r"   r"   r#   depart_term  s   zHTML5Translator.depart_termc              	     s   t |jtjr(|jdr(| j| j|ddddd | jd | jd nt	 
| | | | |j t |jtjrF| jd t |jtjrl| jjrnd	|jd
 v rp| jd drr| j  d| jd< d S d S d S d S d S )Nr  pr+   captionheading)r   ROLEz<span class="caption-text">z</span></p>
contentsclassesr   z<a z</p>
)rw   r\   r   compact_paragraphrU   r@   r?   rI   r   r,   visit_titler   r  r   tabletopicr   toc_backlinksr   rD   rA   r;   r"   r#   r#    s2   


zHTML5Translator.visit_titlec                   s   | j d }| jjr[| jjr[|jdr[|jd r[|dr'| |jt	d nA|drD| j
d|jd d  dt	d| jj  n$t|jtjrZ| j
d	 | |jt	d
 nt|jtjrh| j
d	 t | d S )Nr   r   </hzLink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}rh   zLink to this table)r   r2   r	  r&   r
  r\   r   r   rV   r	   r@   r?   formatr  rw   r   r$  r,   depart_title)r:   r=   	close_tagr;   r"   r#   r)    s4   



zHTML5Translator.depart_titlenodes.rubricc                   sr   d|v r1|d }|dv r| j | j|d| ddd d S tjtd|d|d	 t | d S t | d S )
Nheading-level   rQ                  hr+   rubricr   z$unsupported rubric heading level: %shtml)r   r   )r@   r?   rI   r   r   r
   r,   visit_rubricr:   r=   levelr;   r"   r#   r6    s   $zHTML5Translator.visit_rubricc                   s:   | d }dv r| jd| d d S t | d S )Nr,  r-  r'  z>
)rU   r@   r?   r,   depart_rubricr7  r;   r"   r#   r9  /  s   zHTML5Translator.depart_rubricc                   s   |j | krt |S |dd}|dd}|di }|dd|d< | jj|i }|r9| jjr9| jj}| jj	|j |f|||d|}| j
|dd	d
| d}| j|| d  tj)NlanguagedefaultlinenosFhighlight_argsforce)optsr<  r   r   r+   zhighlight-%s notranslatesuffixr   r   )	rawsourceastextr,   visit_literal_blockrU   r2   highlight_optionshtml_codeblock_linenos_styler.   highlight_blockrI   r@   r?   r   r   )r:   r=   langr<  r=  r?  highlightedrI   r;   r"   r#   rD  6  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">re   r+   zcaption-textr   )rw   r\   r   	containerrU   r@   r?   r,   visit_captionr  rI   rA   r;   r"   r#   rL  R  s   
zHTML5Translator.visit_captionc                   s   | j d t|jtjr|jdr| |jtd n!t|jtj	r.| |jtd n|jdr>| |jjtd t|jtjrS|jdrS| j d d S t
 | d S )Nrh   rJ  zLink to this codezLink to this imager  zLink to this toctreer   )r@   r?   rw   r\   r   rK  rU   rV   r	   figurer,   depart_captionrA   r;   r"   r#   rN  ]  s    

zHTML5Translator.depart_captionc                 C  r   rC   )rD  rA   r"   r"   r#   visit_doctest_blocks  rF   z#HTML5Translator.visit_doctest_blockc                 C  s   | j | |dd  d S )N
blockquotez<div>rH   rA   r"   r"   r#   visit_block_quotew  s   z!HTML5Translator.visit_block_quotec                 C  rK   )Nz</div></blockquote>
rM   rA   r"   r"   r#   depart_block_quotez  rO   z"HTML5Translator.depart_block_quotec                 C  s   d|d v r| j | j|dddd d S |dd }d|d vs#|s9| 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)Nkbdr!  r+   zdocutils literal notranslater   r:  coderQ   T)r?  r   nowrapz'docutils literal highlight highlight-%sr@  </code>)r@   r?   rI   rU   r1   r2   rE  r.   rG  rC  stripr   r   )r:   r=   rH  r?  rI  rI   r"   r"   r#   visit_literal~  s0   zHTML5Translator.visit_literalc                 C  s:   d|d v r| j d d S |  jd8  _| j d d S )NrS  r!  z</kbd>rQ   rV  )r@   r?   r1   rA   r"   r"   r#   depart_literal  s   zHTML5Translator.depart_literalc                 C  s   | j | |d tttj |}dd |D }tdd |D }d }|D ]<}|d rG|d |}| j | |dd | j |d  n|d urW| j d	d
t	|   |
|  | j d q&| j d tj)Nprec                 s  s    | ]}|d  V  qdS )	tokennameNr"   )ry   
productionr"   r"   r#   r         z7HTML5Translator.visit_productionlist.<locals>.<genexpr>c                 s  s    | ]}t |V  qd S rC   )r   )ry   r   r"   r"   r#   r     r]  r[  strongr+   z</strong> ::= z%s     r   
z</pre>
)r@   r?   rI   r   r   r   r\  maxljustr   	walkaboutr   r   )r:   r=   productionlistnamesmaxlenlastnamer\  r"   r"   r#   visit_productionlist  s    
z$HTML5Translator.visit_productionlistc                 C  rX   rC   r"   rA   r"   r"   r#   depart_productionlist  rZ   z%HTML5Translator.depart_productionlistc                 C  rX   rC   r"   rA   r"   r"   r#   visit_production  rZ   z HTML5Translator.visit_productionc                 C  rX   rC   r"   rA   r"   r"   r#   depart_production  rZ   z!HTML5Translator.depart_productionc                 C  s    | j | j|dddd  d S )Nr  centeredr   z<strong>rH   rA   r"   r"   r#   visit_centered  r   zHTML5Translator.visit_centeredc                 C  rK   )Nz</strong></p>rM   rA   r"   r"   r#   depart_centered  rO   zHTML5Translator.depart_centeredc                 C  rX   rC   r"   rA   r"   r"   r#   visit_compact_paragraph  rZ   z'HTML5Translator.visit_compact_paragraphc                 C  rX   rC   r"   rA   r"   r"   r#   depart_compact_paragraph  rZ   z(HTML5Translator.depart_compact_paragraphc                 C  s   ddd}| j js| jd d S d|v r:|d  d7  < |d |d< | j| j|ddfi | | jd	 d S d
|v rm|d  d7  < t| 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   r  filenamer   )r&   download_supportr   r?   r@   rI   	posixpathr   dlpathurllibparsequoter   r"   r"   r#   visit_download_reference  s    
z(HTML5Translator.visit_download_referencec                 C  s   | j | j  d S rC   )r@   r?   r   rD   rA   r"   r"   r#   depart_download_reference  r   z)HTML5Translator.depart_download_referencec                   s   | dd t |S )Nalignr;  )
setdefaultr,   visit_figurerA   r;   r"   r#   r|    s   zHTML5Translator.visit_figurec                   s   |d }|| j jv rt| j jtj| j j| |d< d|v r[d|v r(d|v s[tj	| j j
|}t|}|d u rCtjtd|d nd|vrOt|d |d< d|vr[t|d |d< t | d S )	Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r   r   rQ   )r&   imagesrs  r   imgpathru  rv  rw  ospathsrcdirr   r   r   r
   r   r,   visit_image)r:   r=   oldurir  sizer;   r"   r#   r    s&   zHTML5Translator.visit_imagec                   s&   |d   drd S t | d S )Nr}  )svgsvgz)lowerendswithr,   depart_imagerA   r;   r"   r#   r    s   zHTML5Translator.depart_imagec                 C  r   rC   r   rA   r"   r"   r#   visit_toctree	  s   zHTML5Translator.visit_toctreec                 C  r   rC   r   rA   r"   r"   r#   visit_index  r   zHTML5Translator.visit_indexc                 C  r   rC   r   rA   r"   r"   r#   visit_tabular_col_spec  r   z&HTML5Translator.visit_tabular_col_specc                 C  rX   rC   r"   rA   r"   r"   r#   visit_glossary  rZ   zHTML5Translator.visit_glossaryc                 C  rX   rC   r"   rA   r"   r"   r#   depart_glossary  rZ   zHTML5Translator.depart_glossaryc                 C  rX   rC   r"   rA   r"   r"   r#   
visit_acks  rZ   zHTML5Translator.visit_acksc                 C  rX   rC   r"   rA   r"   r"   r#   depart_acks  rZ   zHTML5Translator.depart_acksc                 C  rK   )Nz<table class="hlist"><tr>rM   rA   r"   r"   r#   visit_hlist   rO   zHTML5Translator.visit_hlistc                 C  rK   )Nz</tr></table>
rM   rA   r"   r"   r#   depart_hlist#  rO   zHTML5Translator.depart_hlistc                 C  rK   )Nz<td>rM   rA   r"   r"   r#   visit_hlistcol&  rO   zHTML5Translator.visit_hlistcolc                 C  rK   )Nz</td>rM   rA   r"   r"   r#   depart_hlistcol)  rO   zHTML5Translator.depart_hlistcolr   c                 C  s   |  }| |}| jr=| j|D ](}| r!| jd|  q|dv r,| j| q| jdt|d  d  qd S | j	rI| j
jrI| |}| j| d S )Nz<span class="pre">%s</span>z 
z&#160;rQ   r   )rC  encoder1   words_and_spacesfindallrW  r@   r?   r   r   r   r   cloak_email)r:   r=   textencodedtokenr"   r"   r#   
visit_Text-  s   

zHTML5Translator.visit_Textc                 C  r   )Nnoter   rA   r"   r"   r#   
visit_noteB  rO   zHTML5Translator.visit_notec                 C  r   rC   r   rA   r"   r"   r#   depart_noteE  rF   zHTML5Translator.depart_notec                 C  r   )Nr   r   rA   r"   r"   r#   visit_warningH  rO   zHTML5Translator.visit_warningc                 C  r   rC   r   rA   r"   r"   r#   depart_warningK  rF   zHTML5Translator.depart_warningc                 C  r   )N	attentionr   rA   r"   r"   r#   visit_attentionN  rO   zHTML5Translator.visit_attentionc                 C  r   rC   r   rA   r"   r"   r#   depart_attentionQ  rF   z HTML5Translator.depart_attentionc                 C  r   )Ncautionr   rA   r"   r"   r#   visit_cautionT  rO   zHTML5Translator.visit_cautionc                 C  r   rC   r   rA   r"   r"   r#   depart_cautionW  rF   zHTML5Translator.depart_cautionc                 C  r   )Ndangerr   rA   r"   r"   r#   visit_dangerZ  rO   zHTML5Translator.visit_dangerc                 C  r   rC   r   rA   r"   r"   r#   depart_danger]  rF   zHTML5Translator.depart_dangerc                 C  r   )Nerrorr   rA   r"   r"   r#   visit_error`  rO   zHTML5Translator.visit_errorc                 C  r   rC   r   rA   r"   r"   r#   depart_errorc  rF   zHTML5Translator.depart_errorc                 C  r   )Nhintr   rA   r"   r"   r#   
visit_hintf  rO   zHTML5Translator.visit_hintc                 C  r   rC   r   rA   r"   r"   r#   depart_hinti  rF   zHTML5Translator.depart_hintc                 C  r   )N	importantr   rA   r"   r"   r#   visit_importantl  rO   zHTML5Translator.visit_importantc                 C  r   rC   r   rA   r"   r"   r#   depart_importanto  rF   z HTML5Translator.depart_importantc                 C  r   )Ntipr   rA   r"   r"   r#   	visit_tipr  rO   zHTML5Translator.visit_tipc                 C  r   rC   r   rA   r"   r"   r#   
depart_tipu  rF   zHTML5Translator.depart_tipc                 C  
   |  |S rC   )visit_emphasisrA   r"   r"   r#   visit_literal_emphasisx     
z&HTML5Translator.visit_literal_emphasisc                 C  r  rC   )depart_emphasisrA   r"   r"   r#   depart_literal_emphasis{  r  z'HTML5Translator.depart_literal_emphasisc                 C  r  rC   )visit_strongrA   r"   r"   r#   visit_literal_strong~  r  z$HTML5Translator.visit_literal_strongc                 C  r  rC   )depart_strongrA   r"   r"   r#   depart_literal_strong  r  z%HTML5Translator.depart_literal_strongc                 C  s<   i }| dr|d |d< | j| j|ddfi | d S )Nexplanationr   abbrr+   )r   r@   r?   rI   )r:   r=   attrsr"   r"   r#   visit_abbreviation  s   
"z"HTML5Translator.visit_abbreviationc                 C  rK   )Nz</abbr>rM   rA   r"   r"   r#   depart_abbreviation  rO   z#HTML5Translator.depart_abbreviationc                 C  r   rC   )r  rA   r"   r"   r#   visit_manpage  rF   zHTML5Translator.visit_manpagec                 C  r   rC   )r  rA   r"   r"   r#   depart_manpage  rF   zHTML5Translator.depart_manpagec                 C  s   | j d i }dd | jjdD }|dd |d|dd  d	|v r1d
|d	  |d< | j|dfdd|i|}| j	| d S )Nr   c                 S  s   g | ]}| d qS )z 	
)rW  )ry   clsr"   r"   r#   r|     s    z/HTML5Translator.visit_table.<locals>.<listcomp>,docutilszalign-%srz  r;  r~  z	width: %sstyler$  r   r   )
r7   r?   r   table_stylesplitr   rU   rI   r   r@   )r:   r=   r   r!  tagr"   r"   r#   visit_table  s   zHTML5Translator.visit_tablec                   s   | j   t | d S rC   )r7   rD   r,   depart_tablerA   r;   r"   r#   r    s   
zHTML5Translator.depart_tablec                 C  sb   | j d  d7  < | j d d dkr|d d n|d d | j| |dd	 d|_d S )
Nr   rQ   r.  r   r!  zrow-evenzrow-oddtrr+   )r7   r?   r@   rI   columnrA   r"   r"   r#   	visit_row  s   
zHTML5Translator.visit_rowc                   s   | j d t |S )Nr   )r8   r?   r,   visit_field_listrA   r;   r"   r#   r    s   z HTML5Translator.visit_field_listc                   s   | j   t |S rC   )r8   rD   r,   depart_field_listrA   r;   r"   r#   r    s   
z!HTML5Translator.depart_field_listc                 C  sH   | j d  d7  < | j d d dkr|d d d S |d d d S )Nr   rQ   r.  r   r!  z
field-evenz	field-odd)r8   r?   rA   r"   r"   r#   visit_field  s   zHTML5Translator.visit_fieldmath_envc                 C  *   | j j}| j jjj| \}}|| | d S rC   r&   math_renderer_nameappregistryhtml_inline_math_renderersr:   r=   r  r   visitr	   r"   r"   r#   
visit_math     zHTML5Translator.visit_mathc                 C  2   | j j}| j jjj| \}}|r|| | d S d S rC   r  r:   r=   r  r   r	   departr"   r"   r#   depart_math  
   zHTML5Translator.depart_mathc                 C  r  rC   r&   r  r  r  html_block_math_renderersr  r"   r"   r#   visit_math_block  r  z HTML5Translator.visit_math_blockc                 C  r  rC   r  r  r"   r"   r#   depart_math_block  r  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)rA  r!  roler   z!<span class="fn-bracket">[</span>)r   footnote_referencesr@   r?   rI   )r:   r=   r   r!  r"   r"   r#   visit_footnote_reference  s   z(HTML5Translator.visit_footnote_reference)r(   r)   r&   r   r   r*   )r=   r   r   r*   )
r=   r   rr   rs   rt   r   ru   r   r   r*   )r+   )r=   r   r   r   r   r*   rC   )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*   )__name__
__module____qualname____doc____annotations__setr'   r-   rB   rE   rJ   rN   rR   rW   rY   r]   ra   rc   rf   ri   rj   rk   rl   rm   rn   ro   rp   rq   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  rV   r  r  r  r  r  r  r  r#  r)  r6  r9  rD  rL  rN  rO  rQ  rR  rX  rY  rg  rh  ri  rj  rl  rm  rn  ro  rx  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__r"   r"   r;   r#   r%   .   s  
 
 	#			r%   )r   r   r   r   r   r   )+r  
__future__r   r  rs  r   urllib.parseru  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   	getLoggerr  r   r$   r%   r"   r"   r"   r#   <module>   s,    

