
    ~TiB                       d Z ddlmZ ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ erddlmZ ddlmZmZmZ ddl m!Z! ddl"m#Z#  ejH                  e%      Z&ddZ' G d dee      Z(y)zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    )annotationsN)TYPE_CHECKING)nodes)HTMLTranslator)addnodes)___admonitionlabels)logging)SphinxTranslator)get_image_size)Callable)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         G/home/agent/.local/lib/python3.12/site-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.	 d	 	 	 	 	 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ZCd fdCZDd fdDZEddEZFddFZGddGZHddHZIddIZJddJZKddKZLddLZMddMZNddNZOddOZPddPZQddQZRddRZSddSZTd fdTZUd fdUZVd fdV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|dd|Z}dd}Z~d fd~ZddZd fdZd fdZddZdddZdddZdddZdddZddZ xZS )HTML5TranslatorzOur custom HTML translator.r   builderzset[str]supported_inline_tagsc                0   t         |   ||       | j                  j                  | _        | j                  j                  g| _        d| _        | j                  j                  | _	        d| _
        d| _        dg| _        dg| _        d| _        d| _        y )Nr    F)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_has_maths_elements)selfdocumentr&   	__class__s      r!   r+   zHTML5Translator.__init__7   s    7+<<33556$%! $ A A!$%!#$#'(c#$%!). r#   c                    | j                   j                  |d          | j                  j                  d|d   z         y )Ndocnamez<span id="document-%s"></span>)r.   appendbodyr9   nodes     r!   visit_start_of_filez#HTML5Translator.visit_start_of_fileE   s4    T)_-		9DOKLr#   c                8    | j                   j                          y N)r.   popr@   s     r!   depart_start_of_filez$HTML5Translator.depart_start_of_fileJ   s    r#   c                Z    | j                   j                  | j                  |d             y )Ndlr?   r>   starttagr@   s     r!   
visit_desczHTML5Translator.visit_descT   s    		tT23r#   c                :    | j                   j                  d       y )N</dl>

r?   r>   r@   s     r!   depart_desczHTML5Translator.depart_descW   s    		%r#   c                    | j                   j                  | j                  |d             | xj                  dz  c_        y )Ndt   )r?   r>   rJ   r/   r@   s     r!   visit_desc_signaturez$HTML5Translator.visit_desc_signatureZ   s0    		tT23!!Q&!r#   c                    | xj                   dz  c_         |j                  d      s| j                  |t        d             | j                  j                  d       y )NrR   is_multilineLink to this definitionz</dt>
)r/   getadd_permalink_refr   r?   r>   r@   s     r!   depart_desc_signaturez%HTML5Translator.depart_desc_signature_   sG    !!Q&!xx'""4+D)EF		#r#   c                     y rD    r@   s     r!   visit_desc_signature_linez)HTML5Translator.visit_desc_signature_linee       r#   c                    |j                  d      r%| j                  |j                  t        d             | j                  j                  d       y )Nadd_permalinkrV   z<br />)rW   rX   parentr   r?   r>   r@   s     r!   depart_desc_signature_linez*HTML5Translator.depart_desc_signature_lineh   s:    88O$""4;;2K0LM		"r#   c                \    | j                   j                  | j                  |dd             y Nddr)   rI   r@   s     r!   visit_desc_contentz"HTML5Translator.visit_desc_contentn   !    		tT267r#   c                :    | j                   j                  d       y )Nz</dd>rN   r@   s     r!   depart_desc_contentz#HTML5Translator.depart_desc_contentq       		!r#   c                \    | j                   j                  | j                  |dd             y Nspanr)   rI   r@   s     r!   visit_desc_inlinez!HTML5Translator.visit_desc_inlinet   !    		tVR89r#   c                :    | j                   j                  d       y N</span>rN   r@   s     r!   depart_desc_inlinez"HTML5Translator.depart_desc_inlinew       		#r#   c                \    | j                   j                  | j                  |dd             y rk   rI   r@   s     r!   visit_desc_namezHTML5Translator.visit_desc_name}   rn   r#   c                :    | j                   j                  d       y rp   rN   r@   s     r!   depart_desc_namez HTML5Translator.depart_desc_name   rs   r#   c                \    | j                   j                  | j                  |dd             y rk   rI   r@   s     r!   visit_desc_addnamez"HTML5Translator.visit_desc_addname   rn   r#   c                :    | j                   j                  d       y rp   rN   r@   s     r!   depart_desc_addnamez#HTML5Translator.depart_desc_addname   rs   r#   c                     y rD   r[   r@   s     r!   visit_desc_typezHTML5Translator.visit_desc_type   r]   r#   c                     y rD   r[   r@   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">rN   r@   s     r!   visit_desc_returnsz"HTML5Translator.visit_desc_returns   s;    		56		HI		>?r#   c                :    | j                   j                  d       y )Nz</span></span>rN   r@   s     r!   depart_desc_returnsz#HTML5Translator.depart_desc_returns   s    		)*r#   c                   | j                   j                  d| d       d| _        d| _        d| _        d| _        |j                  D cg c]  }t        ||       c}| _        t        | j                        | _
        |j                  | _        |j                  dd      | _        |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">rq   Tr   multi_line_parameter_listFmulti_line_trailing_commaz

rH   N)r?   r>   is_first_paramr4   params_left_at_levelparam_group_indexchildren
isinstancelist_is_required_paramsumr7   child_text_separatorr3   rW   r   trailing_commarJ   rstripcontext)r9   rA   parameter_groupsig_open_parensig_close_parencs         r!   _visit_sig_parameter_listz)HTML5Translator._visit_sig_parameter_list   s    			3N3C7KL"$%!$%!!" 59MM'
/0Jq/*'
# %((C(C$D!#88)-2Mu)U&"hh'BEJ))IIV$IIT]]467#'#7#7#>#>#@D O,'
s   
Ec                    |j                  d      r| j                  j                  d       | j                  j	                         }| j                  j                  d| d       y )Nr   rM   r   rq   )rW   r?   r>   r   rE   )r9   rA   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_parameterr@   s     r!   visit_desc_parameterlistz(HTML5Translator.visit_desc_parameterlist   s    &&tX-D-Dc3Or#   c                &    | j                  |       y rD   r   r@   s     r!   depart_desc_parameterlistz)HTML5Translator.depart_desc_parameterlist       ''-r#   c                H    | j                  |t        j                  dd       y )N[])r   r   desc_type_parameterr@   s     r!   visit_desc_type_parameter_listz.HTML5Translator.visit_desc_type_parameter_list   s    &&tX-I-I3PSTr#   c                &    | j                  |       y rD   r   r@   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   rd   r)   FrR   noemphz<em class="sig-param">)
r   r   r4   r?   r>   rJ   r7   r3   r   hasattr)r9   rA   on_separate_lines      r!   visit_desc_parameterz$HTML5Translator.visit_desc_parameter   s    99D$=$=$AIIT]]4r:;"'D!$*C*CIIT112$$)%%*%%%*%||H%II56 &r#   c                   |j                  d      s| j                  j                  d       | j                  | j                     }| j
                  rt        | j                        }| j                  dz   |k(  }| xr | j                  | j                  dz      }| j                  dkD  }|s|r|s|r|r|s| j                  r%| j                  j                  | j                         | j                  j                  d       n1| j                  r%| j                  j                  | j                         |r| xj                  dz  c_        y y )Nr   z</em>rR   r   </dd>
)r   r?   r>   r   r   r   lenr   r   r3   r7   )r9   rA   is_requiredlen_lirp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))4667H 22Q6(BM!! L//0F0F0JK  '+&?&?!&C#'"&6$(?4CVCVII$$T%9%9:		  +&&IIT112""a'" r#   c                &    | j                  |       y rD   )r   r@   s     r!   visit_desc_type_parameterz)HTML5Translator.visit_desc_type_parameter   s    !!$'r#   c                &    | j                  |       y rD   )r   r@   s     r!   depart_desc_type_parameterz*HTML5Translator.depart_desc_type_parameter   s    ""4(r#   c                   t        d |j                  D              | _        | xj                  dz  c_        | j                  | _        | j
                  r| j                  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 )Nc              3  P   K   | ]  }t        |t        j                           y wrD   )r   r   r   ).0r   s     r!   	<genexpr>z6HTML5Translator.visit_desc_optional.<locals>.<genexpr>  s"      (
78Jq(112(
s   $&rR   rd   r)   z<span class="optional">[</span>r   )r   r   r   r4   max_optional_param_levelr   r   r?   r>   rJ   r7   r3   r@   s     r!   visit_desc_optionalz#HTML5Translator.visit_desc_optional  s   $' (
<@MM(
 %
! 	!!Q&!(,(A(A%))""		  tT2!>?		  !BC **		  !5!56		  !BC		  + 		  !BC		  !5!56		  +II>?r#   c                (   | xj                   dz  c_         | j                   }| j                  r| j                  }t        | j                        }| j
                  dz   |k(  }||dz
  k(  r8|r|dkD  s| j                  r%| j                  j                  | j                         | j                  j                  d       |dk(  r7| j                  j                  d       n| j                  j                  d       |dk(  r| xj
                  dz  c_        y y )NrR   r   z<span class="optional">]</span>r   )
r4   r   r   r   r   r   r   r?   r>   r3   )r9   rA   level	max_levelr   r   s         r!   depart_desc_optionalz$HTML5Translator.depart_desc_optional  s    !!Q&!))))55I4667H 22Q6(BM 	A%!UQY$2E2E		  !5!56II>? z		  +II>?A:""a'" r#   c                `    | j                   j                  | j                  |ddd             y )Nrl   r)   propertyCLASSrI   r@   s     r!   visit_desc_annotationz%HTML5Translator.visit_desc_annotation5  s%    		tVRzJKr#   c                :    | j                   j                  d       y rp   rN   r@   s     r!   depart_desc_annotationz&HTML5Translator.depart_desc_annotation8  rs   r#   c                d    | j                   j                  | j                  |d|d                y )Ndivtyper   rI   r@   s     r!   visit_versionmodifiedz%HTML5Translator.visit_versionmodified=  s'    		tU$v,GHr#   c                :    | j                   j                  d       y )N</div>
rN   r@   s     r!   depart_versionmodifiedz&HTML5Translator.depart_versionmodified@      		$r#   c           
     d   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<   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.rR   r   z image-referencereftitletitletargetrelar)   	secnumberz%s.)rW   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   r`   r   TextElementr   imager?   r>   rJ   r2   joinmapstrr9   rA   attss      r!   visit_referencezHTML5Translator.visit_referenceD  s   %88J84#7M[(MM[(Mt>0SDL33L++I6#00f>V!%d? E? g.DL$++u'8'89t9>ja%++&FFFM//M ,DMt!(^DND=u+DK 			tS"==>88K II---#c4CT:U1VV !r#   c                &    | j                  |       y rD   )r   r@   s     r!   visit_number_referencez&HTML5Translator.visit_number_referencej  s    T"r#   c                &    | j                  |       y rD   )depart_referencer@   s     r!   depart_number_referencez'HTML5Translator.depart_number_referencem  s    d#r#   c                "    t         j                  rD   r   SkipNode)r9   rA   subs      r!   visit_commentzHTML5Translator.visit_commentq       nnr#   c                L   i }d}|j                  d      x}rd}|dk(  rd|d<   | j                  j                   | j                  ||fdd| i|       | j                  j                  d| d       |r.|j                  d	t        j                  |t        |                y y )
Nr   collapsibledetailsopenr   zadmonition z</>
r   )	rW   r?   r>   rJ   r   insertr   r   r
   )r9   rA   name
attributestag_namer   s         r!   visit_admonitionz HTML5Translator.visit_admonitionw  s    
((=11;1 Hf$%+
6" 			DMM $D6* 		
 	b
#./KK5;;t-=d-CDE r#   c                j    | j                   j                  | j                  j                                y rD   r?   r>   r   rE   r@   s     r!   depart_admonitionz!HTML5Translator.depart_admonition  !    		))+,r#   c                (    | j                  |d       y )Nseealsor  r@   s     r!   visit_seealsozHTML5Translator.visit_seealso      dI.r#   c                &    | j                  |       y rD   r
  r@   s     r!   depart_seealsozHTML5Translator.depart_seealso      t$r#   c                   |j                  d      r|d   S t        |j                  t        j                        r| j
                  j                  dk(  rD| j                  d   }| d|j                  d   d    }|| j
                  j                  vr5| d}n/d|j                  d   d   z   }|| j
                  j                  vrd	}| j
                  j                  j                  |      r| j
                  j                  |   S y )
Nr   
singlehtmlz/#idsr   /r   r)   )	rW   r   r`   r   sectionr&   r  r.   
secnumbers)r9   rA   r=   
anchornames       r!   get_secnumberzHTML5Translator.get_secnumber  s    88K $$dkk5==1||  L0--+ 'y4;;u+=a+@*AB
T\\%<%<<$+9A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   r2   )r9   rA   r   s      r!   add_secnumberzHTML5Translator.add_secnumber  sS    &&t,	II888CY/043H3HHJ r#   c                    d fd} j                   j                  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  r  z<span class="caption-number">z#numfig_format is not defined for %sr    rq   )r&   r  r.   
fignumbersrW   r?   r>   r0   numfig_formatr	   loggerwarningr   r   r   )figtype	figure_idkeyprefixmsgnumbersr9   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#   r  r   z Any IDs not assigned for %s nodelocation)r'  r   r(  r   returnNone)_domainsstandard_domainget_enumerable_node_typer   r	   tagnamer%  r&  )r9   rA   r-  r'  r+  s   `    r!   add_fignumberzHTML5Translator.add_fignumber  ss    	0" --//HHN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>   )r9   rA   r   icons       r!   rX   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 )NrR   r   )r   r   r   toctreer   r   r*   visit_bullet_listr9   rA   r;   s     r!   r?  z!HTML5Translator.visit_bullet_list  s8    t9>ja(2B2BC.. !$'r#   c                \    | j                   j                  | j                  |dd             y rc   rI   r@   s     r!   visit_definitionz HTML5Translator.visit_definition  s!    		tT267r#   c                :    | j                   j                  d       y )Nr   rN   r@   s     r!   depart_definitionz!HTML5Translator.depart_definition  rs   r#   c                `    | j                   j                  | j                  |ddd             y )Nrl   r)   
classifierr   rI   r@   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 )Nrq   FTdescendsiblings</dt>)r?   r>   	next_noder   r   rF  r9   rA   rM  s      r!   depart_classifierz!HTML5Translator.depart_classifier  sM    		#!%!M	)U%5%56IIW% 7r#   c                \    | j                   j                  | j                  |dd             y )NrQ   r)   rI   r@   s     r!   
visit_termzHTML5Translator.visit_term  rf   r#   c                <   |j                  dd      }t        |t        j                        ry t        |j                  j                  j                  t
        j                        r| j                  |t        d             | j                  j                  d       y )NFTrI  zLink to this termrL  )rM  r   r   rF  r`   r   glossaryrX   r   r?   r>   rN  s      r!   depart_termzHTML5Translator.depart_term  sq    !%!M	i!1!12 $++,,33X5F5FG&&tQ/B-CDIIW%r#   c           	        t        |j                  t        j                        r|j                  j	                  d      rf| j
                  j                  | j                  |dddd             | j
                  j                  d       | j                  j                  d       nt        |j                  t        j                        r|t        |j                  t        j                        rXd	|j                  v rJ| j
                  j                  | j                  |d
dd             | j                  j                  d       nt        | 5  |       | j                  |       | j                  |j                         t        |j                  t        j                         r| j
                  j                  d       t        |j                  t        j"                        rr| j$                  j&                  r[d|j                  d   v rI| j
                  d   j)                  d      r*| j
                  j+                          d| j                  d<   y y y y y )Nr>  pr)   captionheading)r   ROLEz<span class="caption-text">z</span></p>
r   summaryzadmonition-titler   z</summary>
contentsclassesr  z<a z</p>
)r   r`   r   compact_paragraphrW   r?   r>   rJ   r   r   
Admonitionr   r*   visit_titler  r6  tabletopicr   toc_backlinksr   rE   r@  s     r!   r_  zHTML5Translator.visit_title  s   t{{H$>$>?	*IIdC99M II:;LL0t{{E$4$454;;6,IIdIr9KL LL/G%4 4;;'dkk5;;/II:; t{{EKK0++dkk)44		"((/ IIMMO'DLL 0 5 , 1r#   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  </hzLink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}rq   zLink to this table)r   r0   r:  r&   r;  r`   r   r   rX   r   r?   r>   formatr9  r   r   r`  r*   depart_title)r9   rA   	close_tagr;   s      r!   rf  zHTML5Translator.depart_title)  sC   LL$	KK''++##E*E" ##E*&&t{{A6L4MN%%i0		  ;dkk%>PQR>SS%,,014;;3S3S DKK5		  +&&t{{A6J4KLU[[1IIY'T"r#   c                   d|v rm|d   }|dv r2| j                   j                  | j                  |d| dd             y t        j	                  t        d      |d|	       t        |   |       y t        |   |       y )
Nheading-level   rR                  hr)   rubricr   z$unsupported rubric heading level: %shtml)r   r/  )r?   r>   rJ   r%  r&  r	   r*   visit_rubricr9   rA   r   r;   s      r!   rs  zHTML5Translator.visit_rubricD  s    d")E**		  tq["H!UV=>!	   $T*G &r#   c                    |j                  d      x}dv r | j                  j                  d| d       y t        |   |       y )Nri  rj  rd  r  )rW   r?   r>   r*   depart_rubricrt  s      r!   rv  zHTML5Translator.depart_rubricU  sB    XXo..E3EEIIs5'-.G!$'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)optsrz  r/  r   r)   zhighlight-%s notranslatesuffixr   r   )	rawsourceastextr*   visit_literal_blockrW   r0   highlight_optionshtml_codeblock_linenos_styler,   highlight_blockrJ   r?   r>   r   r   )	r9   rA   langrz  r{  r}  highlightedrJ   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NN
 
 
 ==%*Dt*K ! 
 			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">rl   r)   zcaption-textr   )r   r`   r   	containerrW   r?   r>   r*   visit_captionr6  rJ   r@  s     r!   r  zHTML5Translator.visit_captionx  sz    t{{EOO40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 )Nrq   r  zLink to this codezLink to this imager>  zLink to this toctreer   )r?   r>   r   r`   r   r  rW   rX   r   figurer*   depart_captionr@  s     r!   r  zHTML5Translator.depart_caption  s    		# t{{EOO40""4;;2E0FGU\\2""4;;2F0GH[[__Y'""4;;#5#5q9O7PQ t{{EOO40IIZ(G"4(r#   c                &    | j                  |       y rD   )r  r@   s     r!   visit_doctest_blockz#HTML5Translator.visit_doctest_block  s      &r#   c                `    | j                   j                  | j                  |d      dz          y )N
blockquotez<div>rI   r@   s     r!   visit_block_quotez!HTML5Translator.visit_block_quote  s$    		t\:WDEr#   c                :    | j                   j                  d       y )Nz</div></blockquote>
rN   r@   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kbdr\  r)   zdocutils literal notranslater   rx  coderR   T)r}  r/  nowrapz'docutils literal highlight highlight-%sr~  </code>)r?   r>   rJ   rW   r/   r0   r  r,   r  r  stripr   r   )r9   rA   r  r}  r  rJ   s         r!   visit_literalzHTML5Translator.visit_literal  s4   DO#IIdE25ST xx
D)i(IIdFB6TU %%*%{{,,00r:&&66KKM4dT$ 7 
 ==;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 )Nr  r\  z</kbd>rR   r  )r?   r>   r/   r@   s     r!   depart_literalzHTML5Translator.depart_literal  sC    DO#IIX&%%*%IIY'r#   c                Z    | j                   j                  | j                  |d             y )NprerI   r@   s     r!   visit_productionlistz$HTML5Translator.visit_productionlist  s    		tU34r#   c                :    | j                   j                  d       y )Nz</pre>
rN   r@   s     r!   depart_productionlistz%HTML5Translator.depart_productionlist  r   r#   c                     y rD   r[   r@   s     r!   visit_productionz HTML5Translator.visit_production  r]   r#   c                     y rD   r[   r@   s     r!   depart_productionz!HTML5Translator.depart_production  r]   r#   c                d    | j                   j                  | j                  |dd      dz          y )NrV  centeredr   z<strong>rI   r@   s     r!   visit_centeredzHTML5Translator.visit_centered  s(    		tS
CjPQr#   c                :    | j                   j                  d       y )Nz</strong></p>rN   r@   s     r!   depart_centeredzHTML5Translator.depart_centered  s    		)r#   c                     y rD   r[   r@   s     r!   visit_compact_paragraphz'HTML5Translator.visit_compact_paragraph  r]   r#   c                     y rD   r[   r@   s     r!   depart_compact_paragraphz(HTML5Translator.depart_compact_paragraph  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   r8  filenamer   )r&   download_supportr   r>   r?   rJ   	posixpathr   dlpathurllibparsequoter   s      r!   visit_download_referencez(HTML5Translator.visit_download_reference  s   -2>||,,LL#M[(M>DL II]T]]4bADABLL'4M[(M$>>##V\\%7%7Z8H%IDL II]T]]4bADABLL'LL#r#   c                j    | j                   j                  | j                  j                                y rD   r	  r@   s     r!   depart_download_referencez)HTML5Translator.depart_download_reference  r  r#   c                F    |j                  dd       t        | 	  |      S )Nalignry  )
setdefaultr*   visit_figurer@  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 rwd|v rd|v sot        | j                   j                  |z        }|!t        j                  t        d      |       n*d|vrt        |d         |d<   d|vrt        |d         |d<   t        | =  |       y )	Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r.  r   rR   )r&   imagesr  r   imgpathr  r  r  r   srcdirr%  r&  r	   r   r*   visit_image)r9   rA   oldurisizer;   s       r!   r  zHTML5Translator.visit_image  s    eT\\(((#..$$fll&8&89L9LV9T&UDK d? tOD(8%dll&9&9F&BC<NNTU!% # 
 d*(+DGWt+),T!WXD!r#   c                j    |d   j                         j                  d      ry t        |   |       y )Nr  )svgsvgz)lowerendswithr*   depart_imager@  s     r!   r  zHTML5Translator.depart_image  s.    ;''8G &r#   c                "    t         j                  rD   r   r@   s     r!   visit_toctreezHTML5Translator.visit_toctree%  r   r#   c                "    t         j                  rD   r   r@   s     r!   visit_indexzHTML5Translator.visit_index*      nnr#   c                "    t         j                  rD   r   r@   s     r!   visit_tabular_col_specz&HTML5Translator.visit_tabular_col_spec-  r  r#   c                     y rD   r[   r@   s     r!   visit_glossaryzHTML5Translator.visit_glossary0  r]   r#   c                     y rD   r[   r@   s     r!   depart_glossaryzHTML5Translator.depart_glossary3  r]   r#   c                     y rD   r[   r@   s     r!   
visit_ackszHTML5Translator.visit_acks6  r]   r#   c                     y rD   r[   r@   s     r!   depart_ackszHTML5Translator.depart_acks9  r]   r#   c                :    | j                   j                  d       y )Nz<table class="hlist"><tr>rN   r@   s     r!   visit_hlistzHTML5Translator.visit_hlist<  s    		45r#   c                :    | j                   j                  d       y )Nz</tr></table>
rN   r@   s     r!   depart_hlistzHTML5Translator.depart_hlist?  s    		*+r#   c                :    | j                   j                  d       y )Nz<td>rN   r@   s     r!   visit_hlistcolzHTML5Translator.visit_hlistcolB  s    		 r#   c                :    | j                   j                  d       y )Nz</td>rN   r@   s     r!   depart_hlistcolzHTML5Translator.depart_hlistcolE  ri   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>>   
r"  z&#160;rR   r"  )r  encoder/   words_and_spacesfindallr  r?   r>   r   r   r   r   cloak_email)r9   rA   textencodedtokens        r!   
visit_TextzHTML5Translator.visit_TextI  s    {{}++d#$$ ..66w? 	H;;=II$$%BU%JKk)II$$U+ II$$XUa%@3%FG	H ~~$--"E"E**73IIW%r#   c                (    | j                  |d       y )Nnoter  r@   s     r!   
visit_notezHTML5Translator.visit_note^      dF+r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_notezHTML5Translator.depart_notea  r  r#   c                (    | j                  |d       y )Nr&  r  r@   s     r!   visit_warningzHTML5Translator.visit_warningd  r  r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_warningzHTML5Translator.depart_warningg  r  r#   c                (    | j                  |d       y )N	attentionr  r@   s     r!   visit_attentionzHTML5Translator.visit_attentionj      dK0r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_attentionz HTML5Translator.depart_attentionm  r  r#   c                (    | j                  |d       y )Ncautionr  r@   s     r!   visit_cautionzHTML5Translator.visit_cautionp  r  r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_cautionzHTML5Translator.depart_cautions  r  r#   c                (    | j                  |d       y )Ndangerr  r@   s     r!   visit_dangerzHTML5Translator.visit_dangerv  s    dH-r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_dangerzHTML5Translator.depart_dangery  r  r#   c                (    | j                  |d       y )Nerrorr  r@   s     r!   visit_errorzHTML5Translator.visit_error|  s    dG,r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_errorzHTML5Translator.depart_error  r  r#   c                (    | j                  |d       y )Nhintr  r@   s     r!   
visit_hintzHTML5Translator.visit_hint  r  r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_hintzHTML5Translator.depart_hint  r  r#   c                (    | j                  |d       y )N	importantr  r@   s     r!   visit_importantzHTML5Translator.visit_important  r  r#   c                &    | j                  |       y rD   r  r@   s     r!   depart_importantz HTML5Translator.depart_important  r  r#   c                (    | j                  |d       y )Ntipr  r@   s     r!   	visit_tipzHTML5Translator.visit_tip  s    dE*r#   c                &    | j                  |       y rD   r  r@   s     r!   
depart_tipzHTML5Translator.depart_tip  r  r#   c                $    | j                  |      S rD   )visit_emphasisr@   s     r!   visit_literal_emphasisz&HTML5Translator.visit_literal_emphasis  s    ""4((r#   c                $    | j                  |      S rD   )depart_emphasisr@   s     r!   depart_literal_emphasisz'HTML5Translator.depart_literal_emphasis  s    ##D))r#   c                $    | j                  |      S rD   )visit_strongr@   s     r!   visit_literal_strongz$HTML5Translator.visit_literal_strong  s      &&r#   c                $    | j                  |      S rD   )depart_strongr@   s     r!   depart_literal_strongz%HTML5Translator.depart_literal_strong  s    !!$''r#   c                    i }|j                  dd      x}r||d<   | j                  j                   | j                  |ddfi |       y )Nexplanationr)   r   abbr)rW   r?   r>   rJ   )r9   rA   attrsr-  s       r!   visit_abbreviationz"HTML5Translator.visit_abbreviation  sN    ((="55;5(E'N 			tVRA5ABr#   c                :    | j                   j                  d       y )Nz</abbr>rN   r@   s     r!   depart_abbreviationz#HTML5Translator.depart_abbreviation  rs   r#   c                &    | j                  |       y rD   )r"  r@   s     r!   visit_manpagezHTML5Translator.visit_manpage  s    ##D)r#   c                &    | j                  |       y rD   )r%  r@   s     r!   depart_manpagezHTML5Translator.depart_manpage  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 	
docutilszalign-%sr  ry  r  z	width: %sstyler`  r   r"  )r5   r>   r   table_stylesplitr  r  rW   rJ   r   r?   )r9   rA   r   clsr\  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 rD   )r5   rE   r*   depart_tabler@  s     r!   rA  zHTML5Translator.depart_table  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  rR   rk  r   r\  zrow-evenzrow-oddtrr)   )r5   r>   r?   rJ   columnr@   s     r!   	visit_rowzHTML5Translator.visit_row  sz    #q(#""2&*a/O"":.O""9-		tT267r#   c                X    | j                   j                  d       t        |   |      S )Nr   )r6   r>   r*   visit_field_listr@  s     r!   rG  z HTML5Translator.visit_field_list  s'    ##**1-w'--r#   c                V    | j                   j                          t        |   |      S rD   )r6   rE   r*   depart_field_listr@  s     r!   rI  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  rR   rk  r   r\  z
field-evenz	field-odd)r6   r>   r@   s     r!   visit_fieldzHTML5Translator.visit_field  sT    ##B'1,'&&r*Q.!3O""<0O"";/r#   c                    d| _         | j                  j                  }| j                  j                  j                  j
                  |   \  }} || |       y NT)r8   r&   math_renderer_nameenv	_registryhtml_inline_math_renderersr9   rA   math_envr  visitr   s         r!   
visit_mathzHTML5Translator.visit_math  sI    #'  LL33<<##--HHNqdDr#   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }}|r
 || |       y y rD   )r&   rN  rO  rP  rQ  r9   rA   rS  r  r   departs         r!   depart_mathzHTML5Translator.depart_math  sG    LL33LL$$..II$O	64 r#   c                    d| _         | j                  j                  }| j                  j                  j                  j
                  |   \  }} || |       y rM  )r8   r&   rN  rO  rP  html_block_math_renderersrR  s         r!   visit_math_blockz HTML5Translator.visit_math_block  sI    #'  LL33<<##--GGMqdDr#   c                    | j                   j                  }| j                   j                  j                  j                  |   \  }}|r
 || |       y y rD   )r&   rN  rO  rP  r[  rW  s         r!   depart_math_blockz!HTML5Translator.depart_math_block  sG    LL33LL$$..HHN	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  r\  roler   z!<span class="fn-bracket">[</span>)r   footnote_referencesr?   r>   rJ   )r9   rA   r   r\  s       r!   visit_footnote_referencez(HTML5Translator.visit_footnote_reference  sj    T']"')J)JK		MMc"gMPT  	

 			<=r#   )r:   znodes.documentr&   r   r0  r1  )rA   r   r0  r1  )
rA   r   r   ztype[Element]r   r   r   r   r0  r1  )rA   znodes.referencer0  r1  rD   )rA   znodes.commentr   z Callable[[str, str], str] | Noner0  r1  )r)   )rA   r   r  r   r0  r1  )rA   zElement | Noner0  r1  )rA   r   r0  ztuple[int, ...] | None)rA   r   r   r   r0  r1  )rA   znodes.bullet_listr0  r1  )rA   znodes.titler0  r1  )rA   znodes.rubricr0  r1  )rA   znodes.literal_blockr0  r1  )rA   znodes.captionr0  r1  )rA   znodes.figurer0  r1  )rA   znodes.imager0  r1  )rA   r   r0  r1  )rA   znodes.emphasisr0  r1  )rA   znodes.strongr0  r1  )rA   znodes.tabler0  r1  )rA   znodes.field_listr0  r1  )rA   z
nodes.mathrS  r   r0  r1  )rA   znodes.math_blockrS  r   r0  r1  )__name__
__module____qualname____doc____annotations__setr'   r+   rB   rF   rK   rO   rS   rY   r\   ra   re   rh   rm   rr   ru   rw   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  r6  rX   r?  rB  rD  rG  rO  rQ  rT  r_  rf  rs  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r"  r%  r(  r+  r0  r2  r4  r6  r?  rA  rE  rG  rI  rK  rU  rY  r\  r^  rb  __classcell__)r;   s   @r!   r%   r%   .   s   %"" '*e8+/M
4&'
$#8":$:$:$@
+-- '- 	-
 - 
-BNP.U.7"(6()@4(0L$
I%$L#$
 LP!(H	F,-/%*:4(8
$N&8&#(J#6'"(8	P),'F26(5%R*$4-*"8'
6,!"&*,%/%1%/%.%-%,%1%+%)*'(C$*+
$#./0>r#   r%   )r   r   r   r   r0  r   ))rf  
__future__r   r  r   urllib.parser  typingr   r9  r   docutils.writers.html5_polyglotr   BaseTranslatorsphinxr   sphinx.localer   r	   r
   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.imagesr   collections.abcr   docutils.nodesr   r   r   sphinx.buildersr   sphinx.builders.htmlr   	getLoggerrc  r%  r"   r%   r[   r#   r!   <module>ry     sk    M "  	     L  1 1  1 -(22': 
		8	$	"\>& \>r#   