
    -Phʖ                       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mZmZ ddlmZ ddl m!Z!  ej"        e#          Z$ddZ% G d dee          Z&dS )zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    )annotationsN)TYPE_CHECKING)nodes)HTMLTranslator)addnodes)___admonitionlabels)logging)SphinxTranslator)get_image_size)ElementNodeText)Builder)StandaloneHTMLBuilderlengthstrscaleintreturnc                    t          j        d|           }|s| S |dk    r| S |                                \  }}t          |          |z  dz  }t	          |           | S )z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$d   )rematchgroupsfloatr   )r   r   matchedamountunitresults         T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/writers/html5.pymultiply_lengthr#       sn    h/88G ||>>##LFD6]]U"S(F&kk!4!!!    c                      e Zd ZU dZded<    e            Zded<   d fdZddZddZ	ddZ
ddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZdd Zdd!Zdd'Zdd(Zdd)Zdd*Zdd+Z dd,Z!dd-Z"dd.Z#dd/Z$dd0Z%dd1Z&dd2Z'dd3Z(dd4Z)dd5Z*dd6Z+dd7Z,dd8Z-dd9Z.dd:Z/ddd=Z0ddd@Z1ddAZ2ddBZ3ddDZ4ddEZ5ddFZ6ddHZ7d fdIZ8ddJZ9ddKZ:ddLZ;ddMZ<ddNZ=ddOZ>d fdPZ?d fdQZ@d fdSZAd fdTZBd fdUZCd fdVZDd fdWZEddXZFddYZGddZZHdd[ZIdd\ZJdd]ZKdd^ZLdd_ZMdd`ZNddaZOddbZPddcZQdddZRddeZSddfZTd fdgZUd fdhZVd fdiZWddjZXddkZYddlZZddmZ[ddnZ\ddoZ]ddpZ^ddqZ_ddrZ`ddsZaddtZbddvZcddwZdddxZeddyZfddzZgdd{Zhdd|Zidd}Zjdd~ZkddZlddZmddZnddZoddZpddZqddZrddZsddZtddZuddZvddZwddZxddZyddZzdd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_tagsdocumentnodes.documentr   r   Nonec                   t                                          ||           | j        j        | _        | j        j        g| _        d| _        | j        j        | _	        d| _
        d| _        dg| _        dg| _        d| _        d| _        d S )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)selfr)   r'   	__class__s      r"   r/   zHTML5Translator.__init__5   s    7+++<356$%! $ A!$%!#$#'(c#$%!).   r$   noder   c                    | j                             |d                    | j                            d|d         z             d S )Ndocnamez<span id="document-%s"></span>)r2   appendbodyr=   r?   s     r"   visit_start_of_filez#HTML5Translator.visit_start_of_fileC   sB    T)_---	9DOKLLLLLr$   c                8    | j                                          d S N)r2   poprD   s     r"   depart_start_of_filez$HTML5Translator.depart_start_of_fileH   s    r$   c                b    | j                             |                     |d                     d S )NdlrC   rB   starttagrD   s     r"   
visit_desczHTML5Translator.visit_descR   s,    	tT2233333r$   c                :    | j                             d           d S )N</dl>

rC   rB   rD   s     r"   depart_desczHTML5Translator.depart_descU   s    	%%%%%r$   c                    | j                             |                     |d                     | xj        dz  c_        d S )Ndt   )rC   rB   rM   r3   rD   s     r"   visit_desc_signaturez$HTML5Translator.visit_desc_signatureX   s@    	tT22333!!Q&!!!!r$   c                    | xj         dz  c_         |                    d          s#|                     |t          d                     | j                            d           d S )NrU   is_multilineLink to this definitionz</dt>
)r3   getadd_permalink_refr   rC   rB   rD   s     r"   depart_desc_signaturez%HTML5Translator.depart_desc_signature]   sf    !!Q&!!xx'' 	G""4+D)E)EFFF	#####r$   c                    d S rG    rD   s     r"   visit_desc_signature_linez)HTML5Translator.visit_desc_signature_linec       r$   c                    |                     d          r(|                     |j        t          d                     | j                            d           d S )Nadd_permalinkrY   z<br />)rZ   r[   parentr   rC   rB   rD   s     r"   depart_desc_signature_linez*HTML5Translator.depart_desc_signature_linef   sT    88O$$ 	N""4;2K0L0LMMM	"""""r$   c                d    | j                             |                     |dd                     d S Nddr-   rL   rD   s     r"   visit_desc_contentz"HTML5Translator.visit_desc_contentl   .    	tT26677777r$   c                :    | j                             d           d S )Nz</dd>rQ   rD   s     r"   depart_desc_contentz#HTML5Translator.depart_desc_contento       	!!!!!r$   c                d    | j                             |                     |dd                     d S Nspanr-   rL   rD   s     r"   visit_desc_inlinez!HTML5Translator.visit_desc_inliner   .    	tVR8899999r$   c                :    | j                             d           d S N</span>rQ   rD   s     r"   depart_desc_inlinez"HTML5Translator.depart_desc_inlineu       	#####r$   c                d    | j                             |                     |dd                     d S rn   rL   rD   s     r"   visit_desc_namezHTML5Translator.visit_desc_name{   rq   r$   c                :    | j                             d           d S rs   rQ   rD   s     r"   depart_desc_namez HTML5Translator.depart_desc_name~   rv   r$   c                d    | j                             |                     |dd                     d S rn   rL   rD   s     r"   visit_desc_addnamez"HTML5Translator.visit_desc_addname   rq   r$   c                :    | j                             d           d S rs   rQ   rD   s     r"   depart_desc_addnamez#HTML5Translator.depart_desc_addname   rv   r$   c                    d S rG   r^   rD   s     r"   visit_desc_typezHTML5Translator.visit_desc_type   r`   r$   c                    d S rG   r^   rD   s     r"   depart_desc_typez HTML5Translator.depart_desc_type   r`   r$   c                    | j                             d           | j                             d           | j                             d           d S )Nz <span class="sig-return">z-<span class="sig-return-icon">&#x2192;</span>z# <span class="sig-return-typehint">rQ   rD   s     r"   visit_desc_returnsz"HTML5Translator.visit_desc_returns   sM    	5666	HIII	>?????r$   c                :    | j                             d           d S )Nz</span></span>rQ   rD   s     r"   depart_desc_returnsz#HTML5Translator.depart_desc_returns   s    	)*****r$   parameter_grouptype[Element]sig_open_parenr   sig_close_parenc                p   | j                             d| d           d| _        d| _        d| _        d| _        fd|j        D             | _        t          | j                  | _	        |j
        | _        |                    dd          | _        |                    dd          | _        | j        rf| j                             d	           | j                             |                     |d
                     | j                                        | _        | j                            |           dS )zVisit a signature parameters or type parameters list.

        The *parameter_group* value is the type of child nodes acting as required parameters
        or as a set of contiguous optional parameters.
        <span class="sig-paren">rt   Tr   c                0    g | ]}t          |          S r^   )
isinstance).0cr   s     r"   
<listcomp>z=HTML5Translator._visit_sig_parameter_list.<locals>.<listcomp>   s0     '
 '
 '
/0Jq/**'
 '
 '
r$   multi_line_parameter_listFmulti_line_trailing_commaz

rK   N)rC   rB   is_first_paramr8   params_left_at_levelparam_group_indexchildrenlist_is_required_paramsumr;   child_text_separatorr7   rZ   r   trailing_commarM   rstripcontext)r=   r?   r   r   r   s     `  r"   _visit_sig_parameter_listz)HTML5Translator._visit_sig_parameter_list   s;    		KNKKKLLL"$%!$%!!"'
 '
 '
 '
48M'
 '
 '
# %((C$D$D!#8)-2Mu)U)U&"hh'BEJJ) 	AIV$$$IT]]466777#'#7#>#>#@#@D O,,,,,r$   c                    |                     d          r| j                            d           | j                                        }| j                            d| d           d S )Nr   rP   r   rt   )rZ   rC   rB   r   rH   )r=   r?   r   s      r"   _depart_sig_parameter_listz*HTML5Translator._depart_sig_parameter_list   sh    88/00 	*I[))),**,,	LOLLLMMMMMr$   c                J    |                      |t          j        dd           d S )N())r   r   desc_parameterrD   s     r"   visit_desc_parameterlistz(HTML5Translator.visit_desc_parameterlist   s%    &&tX-Dc3OOOOOr$   c                0    |                      |           d S rG   r   rD   s     r"   depart_desc_parameterlistz)HTML5Translator.depart_desc_parameterlist       ''-----r$   c                J    |                      |t          j        dd           d S )N[])r   r   desc_type_parameterrD   s     r"   visit_desc_type_parameter_listz.HTML5Translator.visit_desc_type_parameter_list   s&    &&tX-I3PSTTTTTr$   c                0    |                      |           d S rG   r   rD   s     r"   depart_desc_type_parameter_listz/HTML5Translator.depart_desc_type_parameter_list   r   r$   c                   | j         }|rA| j        r| j        dk    s/| j                            |                     |dd                     | j        rd| _        n(|s&| j        s| j                            | j                   | j        dk    r| xj        dz  c_        n| xj        dz  c_        |	                    d          s| j                            d           d S d S )Nr   rg   r-   FrU   noemphz<em class="sig-param">)
r   r   r8   rC   rB   rM   r;   r7   r   hasattr)r=   r?   on_separate_lines      r"   visit_desc_parameterz$HTML5Translator.visit_desc_parameter   s   9 	<	<$($=$A$AIT]]4r::;;; 	3"'D! 	3$*C 	3IT1222$))%%*%%%%%*%%||H%% 	7I566666	7 	7r$   c                .   |                     d          s| j                            d           | j        | j                 }| j        rt          | j                  }| j        dz   |k    }| o| j        | j        dz            }| j        dk    }|s|rH|s|rD|r	|s| j        r| j                            | j	                   | j                            d           n&| j
        r| j                            | j	                   |r| xj        dz  c_        d S d S )Nr   </em>rU   r   </dd>
)r   rC   rB   r   r   r   lenr   r   r7   r;   )r=   r?   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%% 	&IW%%%1$2HI) 	34677H 2Q6(BM!! L/0F0JK  '+&?!&C#',, #, '7,
 % ;(? ;4CV ;I$$T%9:::	  +++& 	3IT1222 	(""a'""""	( 	(r$   c                0    |                      |           d S rG   )r   rD   s     r"   visit_desc_type_parameterz)HTML5Translator.visit_desc_type_parameter   s    !!$'''''r$   c                0    |                      |           d S rG   )r   rD   s     r"   depart_desc_type_parameterz*HTML5Translator.depart_desc_type_parameter   s    ""4(((((r$   c                   t          d |j        D                       | _        | xj        dz  c_        | j        | _        | j        r| j        rK| j                            | 	                    |dd                     | j                            d           d S | j
        rU| j                            | j                   | j                            d           | j                            d           d S | j                            d           | j                            | j                   | j                            d           d S | j                            d           d S )Nc              3  J   K   | ]}t          |t          j                  V  d S rG   )r   r   r   )r   r   s     r"   	<genexpr>z6HTML5Translator.visit_desc_optional.<locals>.<genexpr>  s@       (
 (
78Jq(122(
 (
 (
 (
 (
 (
r$   rU   rg   r-   z<span class="optional">[</span>r   )r   r   r   r8   max_optional_param_levelr   r   rC   rB   rM   r;   r7   rD   s     r"   visit_desc_optionalz#HTML5Translator.visit_desc_optional  sq   $' (
 (
<@M(
 (
 (
 %
 %
! 	!!Q&!!(,(A%) 	@" ,	  tT2!>!>???	  !BCCCCC * 	,	  !5666	  !BCCC	  +++++ 	  !BCCC	  !5666	  +++++I>?????r$   c                   | xj         dz  c_         | j         }| j        r| j        }t          | j                  }| j        dz   |k    }||dz
  k    r.|r|dk    s| j        r| j                            | j	                   | j                            d           |dk    r| j                            d           n| j                            d           |dk    r| xj        dz  c_        d S d S )NrU   r   z<span class="optional">]</span>r   )
r8   r   r   r   r   r   r   rC   rB   r7   )r=   r?   level	max_levelr   r   s         r"   depart_desc_optionalz$HTML5Translator.depart_desc_optional  s   !!Q&!!)) 	@5I4677H 2Q6(BM 	A%%! &%*QYY$2EY	  !5666I>??? zz	  +++I>???A::""a'"""" :r$   c                h    | j                             |                     |ddd                     d S )Nemr-   propertyCLASSrL   rD   s     r"   visit_desc_annotationz%HTML5Translator.visit_desc_annotation3  s2    	tT2ZHHIIIIIr$   c                :    | j                             d           d S )Nr   rQ   rD   s     r"   depart_desc_annotationz&HTML5Translator.depart_desc_annotation6  rl   r$   c                r    | j                             |                     |d|d                              d S )Ndivtyper   rL   rD   s     r"   visit_versionmodifiedz%HTML5Translator.visit_versionmodified;  s4    	tU$v,GGHHHHHr$   c                :    | j                             d           d S )N</div>
rQ   rD   s     r"   depart_versionmodifiedz&HTML5Translator.depart_versionmodified>      	$$$$$r$   c           
        ddi}|                     d          sd|vr|dxx         dz  cc<   n|dxx         dz  cc<   d|v rZ|d         pd|d<   | j        j        r@|d                             d	          r%|                     |d                   |d<   d
| _        nd|v s
J d            d|d         z   |d<   t          |j        t          j	                  sEt          |          dk    r t          |d         t          j                  sJ |dxx         dz  cc<   d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   | j                             | j        |ddfi |           |                     d          rS| j                            d| j        z   d                    t#          t$          |d                             z             d S d S )Nclass	referenceinternalrefuri	 internal	 external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.rU   r   z image-referencereftitletitletargetrelar-   	secnumberz%s.)rZ   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   rc   r   TextElementr   imagerC   rB   rM   r6   joinmapr   r=   r?   attss      r"   visit_referencezHTML5Translator.visit_referenceB  s#   %88J 	)84#7#7MMM[(MMMMMMM[(MMMt>0SDL3&L++I66&  $00f>>V!%d???E #?? g.DL$+u'899 	0t99>>ja%+&F&F>>>MMM//MMM ,DMt!(^DND==u+DK	tS"====>>>88K   	I--#c4CT:U:U1V1VV    	 	r$   c                0    |                      |           d S rG   )r   rD   s     r"   visit_number_referencez&HTML5Translator.visit_number_referencee  s    T"""""r$   c                0    |                      |           d S rG   )depart_referencerD   s     r"   depart_number_referencez'HTML5Translator.depart_number_referenceh  s    d#####r$   c                    t           j        rG   r   SkipNoderD   s     r"   visit_commentzHTML5Translator.visit_commentl  
    nr$   r-   namec                Z   i }d}|                     d          x}rd}|dk    rd|d<   | j                             | j        ||fdd| i|           | j                            d| d           |r6|                    d	t          j        |t          |                              d S d S )
Nr   collapsibledetailsopenr   zadmonition z</>
r   )	rZ   rC   rB   rM   r   insertr   r   r
   )r=   r?   r  
attributestag_namer  s         r"   visit_admonitionz HTML5Translator.visit_admonitionp  s    
((=111; 	, Hf$$%+
6"	DM$SS0Dd0D0DS
SS	
 	
 	
 	..../// 	FKK5;t-=d-CDDEEEEE	F 	Fr$   NElement | Nonec                h    | j                             | j                                                   d S rG   rC   rB   r   rH   rD   s     r"   depart_admonitionz!HTML5Translator.depart_admonition~  ,    	))++,,,,,r$   c                2    |                      |d           d S )Nseealsor  rD   s     r"   visit_seealsozHTML5Translator.visit_seealso      dI.....r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_seealsozHTML5Translator.depart_seealso      t$$$$$r$   tuple[int, ...] | Nonec                   |                     d          r|d         S t          |j        t          j                  r| j        j        dk    r9| j        d         }| d|j        d         d          }|| j        j        vr| d}n&d|j        d         d         z   }|| j        j        vrd	}| j        j                             |          r| j        j        |         S d S )
Nr   
singlehtmlz/#idsr   /r   r-   )	rZ   r   rc   r   sectionr'   r  r2   
secnumbers)r=   r?   rA   
anchornames       r"   get_secnumberzHTML5Translator.get_secnumber  s    88K   	%$$dk5=11 	;| L00-+ 'BB4;u+=a+@BB
T\%<<<$+J 4;u#5a#88
T\%<<<!#J|&**:66 ;|.z::tr$   c           	         |                      |          }|rM| j                            dd                    t	          t
          |                    | j        z   z             d S d S )Nz&<span class="section-number">%s</span>r   )r%  rC   rB   r   r   r   r6   )r=   r?   r   s      r"   add_secnumberzHTML5Translator.add_secnumber  su    &&t,,	 	I888CY//0043HHJ    	 	r$   c                &    d fd} j         j                            |          }|rht          |d                   dk    r5t	          d	          |j        z  }t                              ||
           d S  |||d         d                    d S d S )Nfigtyper   	figure_idr   r+   c           	     \   j         j        dk    rj        d          d|  }n| }|j         j                            |i           v rj                            d           j        j                            |           }|.t          d          | z  }t                              |           d S j         j        |         |         }j                            |d                    t          t          |                    z  dz              j                            d           d S d S )	Nr  r  r!  z<span class="caption-number">z#numfig_format is not defined for %sr    rt   )r'   r  r2   
fignumbersrZ   rC   rB   r4   numfig_formatr	   loggerwarningr   r   r   )r)  r*  keyprefixmsgnumbersr=   s         r"   append_fignumberz7HTML5Translator.add_fignumber.<locals>.append_fignumber  s"   | L00r*66W66DL377R@@@@	  !@AAA266w??>BCCgMCNN3'''''"l5c:9EGI$$Vchhs37H7H.I.I%IC%OPPPI$$Y///// A@r$   r   r   z Any IDs not assigned for %s nodelocation)r)  r   r*  r   r   r+   )_domainsstandard_domainget_enumerable_node_typer   r	   tagnamer/  r0  )r=   r?   r5  r)  r3  s   `    r"   add_fignumberzHTML5Translator.add_fignumber  s    	0 	0 	0 	0 	0 	0" -/HHNN 	:4;1$$;<<t|KsT22222  $u+a.99999	: 	:r$   r   c           	         | j         j        }|d         rJ| j         j        r@| j        j        r6| j                            d|d         d          d| d| d           d S d S d S d S )Nr   z<a class="headerlink" href="#r   z	" title="z"></a>)r4   html_permalinks_iconhtml_permalinksr'   add_permalinksrC   rB   )r=   r?   r   icons       r"   r[   z!HTML5Translator.add_permalink_ref  s    {/; 	4;6 	4<;V 	I\UA\\\\RV\\\    	 	 	 	 	 	r$   c                    t          |          dk    r,t          |d         t          j                  rt          j        t                                          |           d S )NrU   r   )r   r   r   toctreer   r  r.   visit_bullet_listr=   r?   r>   s     r"   rE  z!HTML5Translator.visit_bullet_list  sM    t99>>ja(2BCC>. !!$'''''r$   c                d    | j                             |                     |dd                     d S rf   rL   rD   s     r"   visit_definitionz HTML5Translator.visit_definition  s.    	tT26677777r$   c                :    | j                             d           d S )Nr   rQ   rD   s     r"   depart_definitionz!HTML5Translator.depart_definition  rv   r$   c                h    | j                             |                     |ddd                     d S )Nro   r-   
classifierr   rL   rD   s     r"   visit_classifierz HTML5Translator.visit_classifier  s2    	tVR|LLMMMMMr$   c                    | j                             d           |                    dd          }t          |t          j                  s| j                             d           d S d S )Nrt   FTdescendsiblings</dt>)rC   rB   	next_noder   r   rL  r=   r?   rS  s      r"   depart_classifierz!HTML5Translator.depart_classifier  sh    	###...FF	)U%566 	&IW%%%%%	& 	&r$   c                d    | j                             |                     |dd                     d S )NrT   r-   rL   rD   s     r"   
visit_termzHTML5Translator.visit_term  ri   r$   c                8   |                     dd          }t          |t          j                  rd S t          |j        j        j        t
          j                  r#|                     |t          d                     | j	        
                    d           d S )NFTrO  zLink to this termrR  )rS  r   r   rL  rc   r   glossaryr[   r   rC   rB   rT  s      r"   depart_termzHTML5Translator.depart_term  s    ...FF	i!122 		& D$+,3X5FGG E&&tQ/B-C-CDDDIW%%%%%r$   c           	        t          |j        t          j                  r|j                            d          rg| j                            |                     |dddd                     | j                            d           | j                            d           nt          |j        t          j
                  rtt          |j        t          j                  rUd	|j        v rL| j                            |                     |d
dd                     | j                            d           n!t                                          |           |                     |           |                     |j                   t          |j        t          j                  r| j                            d           t          |j        t          j                  r`| j        j        rVd|j        d         v rI| j        d                             d          r+| j                                         d| j        d<   d S d S d S d S d S )NrD  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   rc   r   compact_paragraphrZ   rC   rB   rM   r   r   
Admonitionr   r.   visit_titler'  r<  tabletopicr   toc_backlinksr   rH   rF  s     r"   re  zHTML5Translator.visit_title  s)   t{H$>??	&	**	& IdC99MM   I:;;;L0000t{E$455
	&4;66
	& ,,IdIr9KLL   L////GG%%%4   4;'''dk5;// 	<I:;;; t{EK00		(+		( dk)444	"((// 5
 IMMOOO'DL		( 		( 		( 		( 5444r$   c                   | j         d         }| j        j        rI| j        j        r<|j                            d          r!|j        d         r|                    d          r*|                     |j        t          d                     n|                    d          r]| j
                            d|j        d         d         z  d                    t          d          | j        j                  z              nt          |j        t          j                  rB| j
                            d	           |                     |j        t          d
                     n9t          |j        t          j                  r| j
                            d	           t#                                          |           d S )Nr  r   </hzLink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="{}">{}rt   zLink to this table)r   r4   r@  r'   rA  rc   r   r   r[   r   rC   rB   formatr?  r   r   rf  r.   depart_title)r=   r?   	close_tagr>   s      r"   rl  zHTML5Translator.depart_title  s   L$	K'	(+	( ##E**	( E"		( ##E** M&&t{A6L4M4MNNNN%%i00 	M	  ;dk%>PQR>SS%,,0114;3S     DK55 M	  +++&&t{A6J4K4KLLLU[11 	(IY'''T"""""r$   nodes.rubricc                r   d|v r|d         }|dv r6| j                             |                     |d| dd                     d S t                              t          d          |d|	           t                                          |           d S t                                          |           d S )
Nheading-level   rU                  hr-   rubricr   z$unsupported rubric heading level: %shtml)r   r7  )rC   rB   rM   r/  r0  r	   r.   visit_rubricr=   r?   r   r>   s      r"   rz  zHTML5Translator.visit_rubric5  s    d"")E***	  t[[["H!U!UVVVVV=>>!	     $$T*****GG  &&&&&r$   c                    |                     d          x}dv r | j                            d| d           d S t                                          |           d S )Nrp  rq  rj  r	  )rZ   rC   rB   r.   depart_rubricr{  s      r"   r}  zHTML5Translator.depart_rubricF  sf    XXo...E3EEEI-5---.....GG!!$'''''r$   c                t   |j         |                                k    r!t                                          |          S |                    dd          }|                    dd          }|                    di           }|                    dd          |d<   | j        j                            |i           }|r| j        j        r| j        j        } | j        j	        |j         |f|||d|}| 
                    |dd	d
|z            }| j                            ||z   dz              t          j        )NlanguagedefaultlinenosFhighlight_argsforce)optsr  r7  r   r-   zhighlight-%s notranslatesuffixr   r   )	rawsourceastextr.   visit_literal_blockrZ   r4   highlight_optionshtml_codeblock_linenos_styler0   highlight_blockrM   rC   rB   r   r  )	r=   r?   langr  r  r  highlightedrM   r>   s	           r"   r  z#HTML5Translator.visit_literal_blockM  sK   >T[[]]**77..t444xx
I..((9e,,"2B77"&((7E":":w{,00r:: 	?t{? 	?k>G6d&6N
 
 
 
 
 ==%*Dt*K ! 
 
 		K/*<===nr$   c                   t          |j        t          j                  r5|j                            d          r| j                            d           n!t                                          |           | 	                    |j                   | j                            | 
                    |ddd                     d S )Nliteral_blockz <div class="code-block-caption">ro   r-   zcaption-textr   )r   rc   r   	containerrZ   rC   rB   r.   visit_captionr<  rM   rF  s     r"   r  zHTML5Translator.visit_captioni  s    t{EO44	(00	( I?@@@@GG!!$'''4;'''	tVR~NNOOOOOr$   c                
   | j                             d           t          |j        t          j                  rC|j                            d          r)|                     |j        t          d                     nt          |j        t          j	                  r)|                     |j        t          d                     nG|j                            d          r-|                     |j        j        t          d                     t          |j        t          j                  r6|j                            d          r| j                             d           d S t                                          |           d S )Nrt   r  zLink to this codezLink to this imagerD  zLink to this toctreer   )rC   rB   r   rc   r   r  rZ   r[   r   figurer.   depart_captionrF  s     r"   r  zHTML5Translator.depart_captiont  sO   	### t{EO44	R00	R ""4;2E0F0FGGGGU\22 	R""4;2F0G0GHHHH[__Y'' 	R""4;#5q9O7P7PQQQ t{EO44	)00	) IZ(((((GG""4(((((r$   c                0    |                      |           d S rG   )r  rD   s     r"   visit_doctest_blockz#HTML5Translator.visit_doctest_block  s      &&&&&r$   c                h    | j                             |                     |d          dz              d S )N
blockquotez<div>rL   rD   s     r"   visit_block_quotez!HTML5Translator.visit_block_quote  s1    	t\::WDEEEEEr$   c                :    | j                             d           d S )Nz</div></blockquote>
rQ   rD   s     r"   depart_block_quotez"HTML5Translator.depart_block_quote  s    	011111r$   c                   d|d         v r3| j                             |                     |ddd                     d S |                    dd           }d|d         vs|sC| j                             |                     |ddd                     | xj        dz  c_        d S | j        j                            |i           }| j                            |	                                |||d	
          }|                     |ddd|z            }| j                             ||
                                z   dz              t          j        )Nkbdrb  r-   zdocutils literal notranslater   r  coderU   T)r  r7  nowrapz'docutils literal highlight highlight-%sr  </code>)rC   rB   rM   rZ   r3   r4   r  r0   r  r  stripr   r  )r=   r?   r  r  r  rM   s         r"   visit_literalzHTML5Translator.visit_literal  si   DO##IdE25STT   Fxx
D))i(((IdFB6TUU   %%*%%F{,00r::&66KKMM4dT$ 7 
 
 ==;dB	 ! 
 
 		K$5$5$7$77)CDDDnr$   c                    d|d         v r| j                             d           d S | xj        dz  c_        | j                             d           d S )Nr  rb  z</kbd>rU   r  )rC   rB   r3   rD   s     r"   depart_literalzHTML5Translator.depart_literal  s]    DO##IX&&&&&%%*%%IY'''''r$   c                b    | j                             |                     |d                     d S )NprerL   rD   s     r"   visit_productionlistz$HTML5Translator.visit_productionlist  s,    	tU3344444r$   c                :    | j                             d           d S )Nz</pre>
rQ   rD   s     r"   depart_productionlistz%HTML5Translator.depart_productionlist  r   r$   c                    d S rG   r^   rD   s     r"   visit_productionz HTML5Translator.visit_production  r`   r$   c                    d S rG   r^   rD   s     r"   depart_productionz!HTML5Translator.depart_production  r`   r$   c                l    | j                             |                     |dd          dz              d S )Nr\  centeredr   z<strong>rL   rD   s     r"   visit_centeredzHTML5Translator.visit_centered  s5    	tS
CCjPQQQQQr$   c                :    | j                             d           d S )Nz</strong></p>rQ   rD   s     r"   depart_centeredzHTML5Translator.depart_centered  s    	)))))r$   c                    d S rG   r^   rD   s     r"   visit_compact_paragraphz'HTML5Translator.visit_compact_paragraph  r`   r$   c                    d S rG   r^   rD   s     r"   depart_compact_paragraphz(HTML5Translator.depart_compact_paragraph  r`   r$   c                   ddd}| j         j        s| j                            d           d S d|v r_|dxx         dz  cc<   |d         |d<   | j                             | j        |ddfi |           | j                            d	           d S d
|v r|dxx         dz  cc<   t          j        | j         j        t          j
                            |d
                             |d<   | j                             | j        |ddfi |           | j                            d	           d S | j                            d           d S )Nzreference downloadr-   )r   downloadr   r   r   r   r   r>  filenamer   )r'   download_supportr   rB   rC   rM   	posixpathr   dlpathurllibparsequoter   s      r"   visit_download_referencez(HTML5Translator.visit_download_reference  sm   -2>>|, 	$L#####MMM[(MMM>DLI]T]4bAADAABBBL'''''4MMM[(MMM$>#V\%7%7Z8H%I%I DL I]T]4bAADAABBBL'''''L#####r$   c                h    | j                             | j                                                   d S rG   r  rD   s     r"   depart_download_referencez)HTML5Translator.depart_download_reference  r  r$   c                r    |                     dd           t                                          |          S )Nalignr  )
setdefaultr.   visit_figurerF  s     r"   r  zHTML5Translator.visit_figure  s/    +++ww##D)))r$   c                ,   |d         }|| j         j        v rOt          j        | j         j        t
          j                            | j         j        |                             |d<   d|v rd|v rd|v st          | j         j	        |z            }|*t                              t          d          |           n8d|vrt          |d                   |d<   d|vrt          |d                   |d<   t                                          |           d S )	Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r6  r   rU   )r'   imagesr  r   imgpathr  r  r  r   srcdirr/  r0  r	   r   r.   visit_image)r=   r?   oldurisizer>   s       r"   r  zHTML5Translator.visit_image  s   eT\(((#.$fl&8&89LV9T&U&U DK d?? tOOD(8(8%dl&9F&BCC<NNTUU!% #    
 d**(+DGWt++),T!WXD!!!!!r$   c                    |d                                                              d          rd S t                                          |           d S )Nr  )svgsvgz)lowerendswithr.   depart_imagerF  s     r"   r  zHTML5Translator.depart_image
  sL    ;''88 	'DGG  &&&&&r$   c                    t           j        rG   r   rD   s     r"   visit_toctreezHTML5Translator.visit_toctree  s     nr$   c                    t           j        rG   r   rD   s     r"   visit_indexzHTML5Translator.visit_index  r  r$   c                    t           j        rG   r   rD   s     r"   visit_tabular_col_specz&HTML5Translator.visit_tabular_col_spec  r  r$   c                    d S rG   r^   rD   s     r"   visit_glossaryzHTML5Translator.visit_glossary  r`   r$   c                    d S rG   r^   rD   s     r"   depart_glossaryzHTML5Translator.depart_glossary  r`   r$   c                    d S rG   r^   rD   s     r"   
visit_ackszHTML5Translator.visit_acks!  r`   r$   c                    d S rG   r^   rD   s     r"   depart_ackszHTML5Translator.depart_acks$  r`   r$   c                :    | j                             d           d S )Nz<table class="hlist"><tr>rQ   rD   s     r"   visit_hlistzHTML5Translator.visit_hlist'  s    	455555r$   c                :    | j                             d           d S )Nz</tr></table>
rQ   rD   s     r"   depart_hlistzHTML5Translator.depart_hlist*  s    	*+++++r$   c                :    | j                             d           d S )Nz<td>rQ   rD   s     r"   visit_hlistcolzHTML5Translator.visit_hlistcol-  s    	     r$   c                :    | j                             d           d S )Nz</td>rQ   rD   s     r"   depart_hlistcolzHTML5Translator.depart_hlistcol0  rl   r$   r   c                *   |                                 }|                     |          }| j        r| j                            |          D ]}|                                r| j                            d|z             4|dv r| j                            |           S| j                            dt          |          dz
  z  dz              d S | j	        r!| j
        j        r|                     |          }| j                            |           d S )Nz<span class="pre">%s</span>>   
r,  z&#160;rU   r,  )r  encoder3   words_and_spacesfindallr  rC   rB   r   r   r   r   cloak_email)r=   r?   textencodedtokens        r"   
visit_TextzHTML5Translator.visit_Text4  s%   {{}}++d##$ 	& .66w?? 	H 	H;;== HI$$%BU%JKKKKk))I$$U++++ I$$XUa%@3%FGGGG	H 	H ~ 4$-"E 4**733IW%%%%%r$   c                2    |                      |d           d S )Nnoter  rD   s     r"   
visit_notezHTML5Translator.visit_noteI      dF+++++r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_notezHTML5Translator.depart_noteL  r  r$   c                2    |                      |d           d S )Nr0  r  rD   s     r"   visit_warningzHTML5Translator.visit_warningO  r  r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_warningzHTML5Translator.depart_warningR  r  r$   c                2    |                      |d           d S )N	attentionr  rD   s     r"   visit_attentionzHTML5Translator.visit_attentionU      dK00000r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_attentionz HTML5Translator.depart_attentionX  r  r$   c                2    |                      |d           d S )Ncautionr  rD   s     r"   visit_cautionzHTML5Translator.visit_caution[  r  r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_cautionzHTML5Translator.depart_caution^  r  r$   c                2    |                      |d           d S )Ndangerr  rD   s     r"   visit_dangerzHTML5Translator.visit_dangera  s    dH-----r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_dangerzHTML5Translator.depart_dangerd  r  r$   c                2    |                      |d           d S )Nerrorr  rD   s     r"   visit_errorzHTML5Translator.visit_errorg  s    dG,,,,,r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_errorzHTML5Translator.depart_errorj  r  r$   c                2    |                      |d           d S )Nhintr  rD   s     r"   
visit_hintzHTML5Translator.visit_hintm  r  r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_hintzHTML5Translator.depart_hintp  r  r$   c                2    |                      |d           d S )N	importantr  rD   s     r"   visit_importantzHTML5Translator.visit_importants  r  r$   c                0    |                      |           d S rG   r  rD   s     r"   depart_importantz HTML5Translator.depart_importantv  r  r$   c                2    |                      |d           d S )Ntipr  rD   s     r"   	visit_tipzHTML5Translator.visit_tipy  s    dE*****r$   c                0    |                      |           d S rG   r  rD   s     r"   
depart_tipzHTML5Translator.depart_tip|  r  r$   c                ,    |                      |          S rG   )visit_emphasisrD   s     r"   visit_literal_emphasisz&HTML5Translator.visit_literal_emphasis  s    ""4(((r$   c                ,    |                      |          S rG   )depart_emphasisrD   s     r"   depart_literal_emphasisz'HTML5Translator.depart_literal_emphasis  s    ##D)))r$   c                ,    |                      |          S rG   )visit_strongrD   s     r"   visit_literal_strongz$HTML5Translator.visit_literal_strong  s      &&&r$   c                ,    |                      |          S rG   )depart_strongrD   s     r"   depart_literal_strongz%HTML5Translator.depart_literal_strong  s    !!$'''r$   c                    i }|                     dd          x}r||d<   | j                             | j        |ddfi |           d S )Nexplanationr-   r   abbr)rZ   rC   rB   rM   )r=   r?   attrsr3  s       r"   visit_abbreviationz"HTML5Translator.visit_abbreviation  s_    ((="555; 	)(E'N	tVRAA5AABBBBBr$   c                :    | j                             d           d S )Nz</abbr>rQ   rD   s     r"   depart_abbreviationz#HTML5Translator.depart_abbreviation  rv   r$   c                0    |                      |           d S rG   )r(  rD   s     r"   visit_manpagezHTML5Translator.visit_manpage  s    ##D)))))r$   c                0    |                      |           d S rG   )r+  rD   s     r"   depart_manpagezHTML5Translator.depart_manpage  s    $$T*****r$   c                   | j                             d           i }d | j        j                            d          D             }|                    dd           |                    d|                    dd          z             d|v rd	|d         z  |d
<    | j        |dfdd                    |          i|}| j	                            |           d S )Nr   c                8    g | ]}|                     d           S )z 	
)r  )r   clss     r"   r   z/HTML5Translator.visit_table.<locals>.<listcomp>  s$    VVV#399W%%VVVr$   ,docutilszalign-%sr  r  r  z	width: %sstylerf  r   r,  )
r9   rB   r   table_stylesplitr
  rZ   rM   r   rC   )r=   r?   r   rb  tags        r"   visit_tablezHTML5Translator.visit_table  s    &&q)))VV1J1P1PQT1U1UVVVq*%%% 	zDHHWi$@$@@AAAd??'$w-7DMdmD'KK'1B1BKdKK	r$   c                |    | j                                          t                                          |           d S rG   )r9   rH   r.   depart_tablerF  s     r"   rH  zHTML5Translator.depart_table  s6    ##%%%T"""""r$   c                2   | j         dxx         dz  cc<   | j         d         dz  dk    r|d                             d           n|d                             d           | j                            |                     |dd	                     d|_        d S )
Nr  rU   rr  r   rb  zrow-evenzrow-oddtrr-   )r9   rB   rC   rM   columnrD   s     r"   	visit_rowzHTML5Translator.visit_row  s    ###q(###"2&*a//O"":....O""9---	tT266777r$   c                z    | j                             d           t                                          |          S )Nr   )r:   rB   r.   visit_field_listrF  s     r"   rN  z HTML5Translator.visit_field_list  s2    #**1---ww''---r$   c                x    | j                                          t                                          |          S rG   )r:   rH   r.   depart_field_listrF  s     r"   rP  z!HTML5Translator.depart_field_list  s0    #'')))ww((...r$   c                    | j         dxx         dz  cc<   | j         d         dz  dk    r|d                             d           d S |d                             d           d S )Nr  rU   rr  r   rb  z
field-evenz	field-odd)r:   rB   rD   s     r"   visit_fieldzHTML5Translator.visit_field  su    #B'''1,'''&r*Q.!33O""<00000O"";/////r$   
nodes.mathmath_envc                    d| _         | j        j        }| j        j        j        j        |         \  }} || |           d S NT)r<   r'   math_renderer_nameenv	_registryhtml_inline_math_renderersr=   r?   rT  r  visitr   s         r"   
visit_mathzHTML5Translator.visit_math  sG    #'  L3<#-HNqdDr$   c                |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rG   )r'   rW  rX  rY  rZ  r=   r?   rT  r  r   departs         r"   depart_mathzHTML5Translator.depart_math  sO    L3L$.I$O	6 	F4	 	r$   nodes.math_blockc                    d| _         | j        j        }| j        j        j        j        |         \  }} || |           d S rV  )r<   r'   rW  rX  rY  html_block_math_renderersr[  s         r"   visit_math_blockz HTML5Translator.visit_math_block  sG    #'  L3<#-GMqdDr$   c                |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S rG   )r'   rW  rX  rY  rd  r_  s         r"   depart_math_blockz!HTML5Translator.depart_math_block  sO    L3L$.HN	6 	F4	 	r$   c           
         d|d         z   }d| j         j        g}| j                            |                     |dd|d|                     | j                            d           d S )	Nr   r   zfootnote-referencer   r-   zdoc-noteref)r  rb  roler   z!<span class="fn-bracket">[</span>)r   footnote_referencesrC   rB   rM   )r=   r?   r   rb  s       r"   visit_footnote_referencez(HTML5Translator.visit_footnote_reference  s|    T']"')JK	MMc"gMPT   	
 	
 	

 		<=====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+   rG   )r?   r  r   r+   )r?   r   r   r  )r?   r   r   r   r   r+   )r?   rn  r   r+   )r?   r   r   r+   )r?   rS  rT  r   r   r+   )r?   rb  rT  r   r   r+   )__name__
__module____qualname____doc____annotations__setr(   r/   rE   rI   rN   rR   rV   r\   r_   rd   rh   rk   rp   ru   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r%  r'  r<  r[   rE  rH  rJ  rM  rU  rW  rZ  re  rl  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r   r#  r%  r(  r+  r.  r1  r6  r8  r:  r<  rF  rH  rL  rN  rP  rR  r]  ra  re  rg  rk  __classcell__)r>   s   @r"   r&   r&   ,   sg        %%"""" '*cee++++/ / / / / /M M M M
   4 4 4 4& & & &' ' ' '
$ $ $ $   # # # #8 8 8 8" " " ": : : :$ $ $ $: : : :$ $ $ $: : : :$ $ $ $      @ @ @ @
+ + + +- - - -BN N N NP P P P. . . .U U U U. . . .7 7 7 7"( ( ( (6( ( ( () ) ) )@ @ @ @4( ( ( (0J J J J" " " "
I I I I% % % %! ! ! !F# # # #$ $ $ $   F F F F F- - - - -/ / / /% % % %   *   : : : :4   ( ( ( ( ( (8 8 8 8
$ $ $ $N N N N& & & &8 8 8 8& & & &#( #( #( #( #( #(J# # # # # #6' ' ' ' ' '"( ( ( ( ( (     8	P 	P 	P 	P 	P 	P) ) ) ) ) ),' ' ' 'F F F F2 2 2 2   6( ( ( (5 5 5 5% % % %      R R R R* * * *      $ $ $ $(- - - -* * * * * *" " " " " "8' ' ' ' ' '   
                  6 6 6 6, , , ,! ! ! !" " " "& & & &*, , , ,% % % %/ / / /% % % %1 1 1 1% % % %/ / / /% % % %. . . .% % % %- - - -% % % %, , , ,% % % %1 1 1 1% % % %+ + + +% % % %) ) ) )* * * *' ' ' '( ( ( (C C C C$ $ $ $* * * *+ + + +
   # # # # # #   . . . . . ./ / / / / /0 0 0 0                > > > > > > > >r$   r&   )r   r   r   r   r   r   )'ro  
__future__r   r  r   urllib.parser  typingr   rA  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   	getLoggerrl  r/  r#   r&   r^   r$   r"   <module>r     s   M M " " " " " "     				                       L L L L L L       1 1 1 1 1 1 1 1 1 1       1 1 1 1 1 1 - - - - - - ;2222222222'''''':::::: 
	8	$	$	" 	" 	" 	"C> C> C> C> C>& C> C> C> C> C>r$   