
    }cV                     `   d Z ddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ 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(  e"j)        e*          Z+de,de-de,fdZ. G d de          Z/ G d de$e          ZdS )z/docutils writers handling Sphinx' custom nodes.    N)TYPE_CHECKINGIterableOptionalTuplecast)nodes)ElementNodeText)HTMLTranslator)Writer)addnodes)Builder)RemovedInSphinx60Warning)___admonitionlabels)logging)SphinxTranslator)get_image_size)StandaloneHTMLBuilderlengthscale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floatint)r   r   matchedamountunitresults         3lib/python3.11/site-packages/sphinx/writers/html.pymultiply_lengthr'   !   so    h/88G ,	# ,~~''v&,Vdd++    c                   0     e Zd ZddiZd	 fdZd
dZ xZS )
HTMLWriterembed_stylesheetFbuilderr   r   Nc                 V    t                                                       || _        d S N)super__init__r,   )selfr,   	__class__s     r&   r0   zHTMLWriter.__init__3   s$    r(   c           
         | j                             | j        | j                   }t          t          |          | _        | j                            |           | j                                        | _        dD ]"}t          | |t          ||d                      #d                    | j        j        dd                    | _        d S )N)head_prefix
stylesheetheadbody_prefixbody_pre_docinfodocinfobodyfragmentbody_suffixmetatitlesubtitleheaderfooterhtml_prolog	html_head
html_titlehtml_subtitle	html_body    )r,   create_translatordocumentr   r   visitor	walkaboutastextoutputsetattrgetattrjoinr=   
clean_meta)r1   rK   attrs      r&   	translatezHTMLWriter.translate7   s    ,00MMNG44(((l))++5 	> 	>D
 D$t < <====''$,"3ABB"788r(   )r,   r   r   N)r   N)__name__
__module____qualname__settings_default_overridesr0   rT   __classcell__r2   s   @r&   r*   r*   .   s^         #5e!<     9 9 9 9 9 9 9 9r(   r*   c                       e Zd ZU dZdZded<   dej        deddf fdZ	de
ddfd	Zde
ddfd
Zde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZde
ddfdZ de
ddfdZ!de
ddfd Z"de
ddfd!Z#de
ddfd"Z$de
ddfd#Z%de
ddfd$Z&de
ddfd%Z'de
ddfd&Z(de
ddfd'Z)de
ddfd(Z*de
ddfd)Z+de
ddfd*Z,dde
d,e-ddfd-Z.dde/e
         ddfd.Z0de
ddfd/Z1de
ddfd0Z2de
de3e4d1f         fd2Z5de
ddfd3Z6de
ddfd4Z7de
d5e-ddfd6Z8de
ddfd7Z9de
ddf fd8Z:de
ddf fd9Z;de
ddfd:Z<de
ddfd;Z=de
ddfd<Z>de
ddfd=Z?de
ddfd>Z@de
ddfd?ZAde
ddf fd@ZBde
ddf fdAZCde
ddf fdBZDde
ddf fdCZEde
ddf fdDZFde
ddfdEZGde
ddfdFZHde
ddfdGZIde
ddfdHZJde
ddfdIZKde
ddfdJZLde
ddfdKZMde
ddfdLZNde
ddfdMZOde
ddfdNZPde
ddfdOZQdeRdeSf fdPZTde
ddfdQZUde
ddfdRZVde
ddfdSZWde
ddfdTZXde
ddf fdUZYde
ddf fdVZZde
ddf fdWZ[de
ddfdXZ\de
ddfdYZ]de
ddfdZZ^de
ddfd[Z_de
ddfd\Z`de
ddfd]Zade
ddfd^Zbde
ddfd_Zcde
ddfd`Zdde
ddfdaZede
ddfdbZfde
ddf fdcZgdehddfddZide
ddfdeZjde
ddfdfZkde
ddfdgZlde
ddfdhZmde
ddfdiZnde
ddfdjZode
ddfdkZpde
ddfdlZqde
ddfdmZrde
ddfdnZsde
ddfdoZtde
ddfdpZude
ddfdqZvde
ddfdrZwde
ddfdsZxde
ddfdtZyde
ddfduZzde
ddfdvZ{de
ddfdwZ|de
ddfdxZ}de
ddfdyZ~de
ddfdzZde
ddfd{Zde
ddfd|Zde
ddfd}Zde
ddfd~Zde
ddf fdZde
ddf fdZde
ddfdZde
ddf fdZde
ddf fdZde
ddf fdZde
ddfdZde
ddf fdZdde
de-ddfdZdde
de-ddfdZdde
de-ddfdZdde
de-ddfdZed             Zed             Z xZS )r   z%
    Our custom HTML translator.
    Nr   r,   rJ   r   c                 .   t                                          ||           | j        j        | _        | j        j        g| _        | j        j        | _        d| _        | j        j	        | _
        d| _        d| _        dg| _        dg| _        d| _        d S )Nr   rG   )r/   r0   r,   highlightercurrent_docnamedocnamesconfigmanpages_urlprotect_literal_texthtml_secnumber_suffixsecnumber_suffixparam_separatoroptional_param_level_table_row_indices_fieldlist_row_indicesrequired_params_left)r1   rJ   r,   r2   s      r&   r0   zHTMLTranslator.__init__M   s    7+++<356 K4$%! $ A!$%!#$#'(c#$%!!!r(   nodec                     | j                             |d                    | j                            d|d         z             d S )Ndocnamez<span id="document-%s"></span>)r_   appendr:   r1   rj   s     r&   visit_start_of_filez"HTMLTranslator.visit_start_of_file[   sB    T)_---	9DOKLLLLLr(   c                 8    | j                                          d S r.   )r_   poprn   s     r&   depart_start_of_filez#HTMLTranslator.depart_start_of_file`   s    r(   c                 b    | j                             |                     |d                     d S )Ndlr:   rm   starttagrn   s     r&   
visit_desczHTMLTranslator.visit_descj   s,    	tT2233333r(   c                 :    | j                             d           d S )Nz</dl>

r:   rm   rn   s     r&   depart_desczHTMLTranslator.depart_descm   s    	%%%%%r(   c                     | j                             |                     |d                     | xj        dz  c_        d S )Ndt   )r:   rm   rv   rb   rn   s     r&   visit_desc_signaturez#HTMLTranslator.visit_desc_signaturep   s@    	tT22333!!Q&!!!!r(   c                     | xj         dz  c_         |                    d          s#|                     |t          d                     | j                            d           d S )Nr}   is_multilinePermalink to this definitionz</dt>
)rb   getadd_permalink_refr   r:   rm   rn   s     r&   depart_desc_signaturez$HTMLTranslator.depart_desc_signatureu   sf    !!Q&!!xx'' 	L""4+I)J)JKKK	#####r(   c                     d S r.    rn   s     r&   visit_desc_signature_linez(HTMLTranslator.visit_desc_signature_line{       r(   c                     |                     d          r(|                     |j        t          d                     | j                            d           d S )Nadd_permalinkr   z<br />)r   r   parentr   r:   rm   rn   s     r&   depart_desc_signature_linez)HTMLTranslator.depart_desc_signature_line~   sT    88O$$ 	S""4;2P0Q0QRRR	"""""r(   c                 d    | j                             |                     |dd                     d S NddrG   ru   rn   s     r&   visit_desc_contentz!HTMLTranslator.visit_desc_content   .    	tT26677777r(   c                 :    | j                             d           d S )Nz</dd>ry   rn   s     r&   depart_desc_contentz"HTMLTranslator.depart_desc_content       	!!!!!r(   c                 d    | j                             |                     |dd                     d S )NspanrG   ru   rn   s     r&   visit_desc_inlinez HTMLTranslator.visit_desc_inline   .    	tVR8899999r(   c                 :    | j                             d           d S )N</span>ry   rn   s     r&   depart_desc_inlinez!HTMLTranslator.depart_desc_inline       	#####r(   c                 d    | j                             |                     |dd                     d S NcoderG   ru   rn   s     r&   visit_desc_namezHTMLTranslator.visit_desc_name   r   r(   c                 :    | j                             d           d S N</code>ry   rn   s     r&   depart_desc_namezHTMLTranslator.depart_desc_name   r   r(   c                 d    | j                             |                     |dd                     d S r   ru   rn   s     r&   visit_desc_addnamez!HTMLTranslator.visit_desc_addname   r   r(   c                 :    | j                             d           d S r   ry   rn   s     r&   depart_desc_addnamez"HTMLTranslator.depart_desc_addname   r   r(   c                     d S r.   r   rn   s     r&   visit_desc_typezHTMLTranslator.visit_desc_type   r   r(   c                     d S r.   r   rn   s     r&   depart_desc_typezHTMLTranslator.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">ry   rn   s     r&   visit_desc_returnsz!HTMLTranslator.visit_desc_returns   sM    	5666	HIII	>?????r(   c                 :    | j                             d           d S )Nz</span></span>ry   rn   s     r&   depart_desc_returnsz"HTMLTranslator.depart_desc_returns   s    	)*****r(   c                     | j                             d           d| _        d| _        t	          d |j        D                       | _        |j        | _        d S )Nz <span class="sig-paren">(</span>r}   r   c                 B    g | ]}t          |t          j                  S r   )
isinstancer   desc_parameter).0cs     r&   
<listcomp>z;HTMLTranslator.visit_desc_parameterlist.<locals>.<listcomp>   s;     )A )A )A-. *4Ax7N)O)O )A )A )Ar(   )	r:   rm   first_paramrf   sumchildrenri   child_text_separatorre   rn   s     r&   visit_desc_parameterlistz'HTMLTranslator.visit_desc_parameterlist   sq    	;<<<$%!$' )A )A26-)A )A )A %B %B!#8r(   c                 :    | j                             d           d S )Nz <span class="sig-paren">)</span>ry   rn   s     r&   depart_desc_parameterlistz(HTMLTranslator.depart_desc_parameterlist   s    	;<<<<<r(   c                    | j         rd| _         n&| j        s| j                            | j                   | j        dk    r| xj        dz  c_        |                    d          s| j                            d           d S d S )Nr   r}   noemphz<em>)r   ri   r:   rm   re   rf   hasattrrn   s     r&   visit_desc_parameterz#HTMLTranslator.visit_desc_parameter   s     	3 D* 	3IT1222$) 	+%%*%%||H%% 	%IV$$$$$	% 	%r(   c                     |                     d          s| j                            d           | j        r!| j                            | j                   d S d S )Nr   </em>)r   r:   rm   ri   re   rn   s     r&   depart_desc_parameterz$HTMLTranslator.depart_desc_parameter   s`    ||H%% 	&IW%%%$ 	3IT122222	3 	3r(   c                 Z    | xj         dz  c_         | j                            d           d S )Nr}   z<span class="optional">[</span>rf   r:   rm   rn   s     r&   visit_desc_optionalz"HTMLTranslator.visit_desc_optional   3    !!Q&!!	:;;;;;r(   c                 Z    | xj         dz  c_         | j                            d           d S )Nr}   z<span class="optional">]</span>r   rn   s     r&   depart_desc_optionalz#HTMLTranslator.depart_desc_optional   r   r(   c                 h    | j                             |                     |ddd                     d S )NemrG   propertyCLASSru   rn   s     r&   visit_desc_annotationz$HTMLTranslator.visit_desc_annotation   s2    	tT2ZHHIIIIIr(   c                 :    | j                             d           d S )Nr   ry   rn   s     r&   depart_desc_annotationz%HTMLTranslator.depart_desc_annotation   r   r(   c                 r    | j                             |                     |d|d                              d S )Ndivtyper   ru   rn   s     r&   visit_versionmodifiedz$HTMLTranslator.visit_versionmodified   s4    	tU$v,GGHHHHHr(   c                 :    | j                             d           d S N</div>
ry   rn   s     r&   depart_versionmodifiedz%HTMLTranslator.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<   | 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.r}   r   z image-referencereftitler>   targetarG   	secnumberz%s.)r   settingscloak_email_addresses
startswithcloak_mailto	in_mailtor   r   r   TextElementlenimager:   rm   rv   rd   rQ   mapstrr1   rj   attss      r&   visit_referencezHTMLTranslator.visit_reference   s0   %88J 	)84#7 	)MMM[(MMMMMMM[(MMMt 	/>0SDL}2 &tF|7N7Ny7Y7Y &#00f>>V!%d? I IHI I Ig.DL$+u'899 	0t99>Fja%+&F&FFFFMMM//MMM 	- ,DMt 	,!(^DN	tS"====>>>88K   	DIdT%:: XXc#tK/@&A&ABBC D D D D D	D 	Dr(   c                 0    |                      |           d S r.   )r   rn   s     r&   visit_number_referencez%HTMLTranslator.visit_number_reference  s    T"""""r(   c                 0    |                      |           d S r.   )depart_referencern   s     r&   depart_number_referencez&HTMLTranslator.depart_number_reference  s    d#####r(   c                     t           j        r.   r   SkipNodern   s     r&   visit_commentzHTMLTranslator.visit_comment	  
    nr(   rG   namec                    | j                             |                     |dd|z                        |r4|                    dt	          j        |t          |                              |                     |           d S )Nr   zadmonition r   r   )r:   rm   rv   insertr   r>   r   set_first_last)r1   rj   r  s      r&   visit_admonitionzHTMLTranslator.visit_admonition  s    	% 4 ' 7 7 	8 	8 	8 	FKK5;t-=d-CDDEEED!!!!!r(   c                 :    | j                             d           d S r   ry   rn   s     r&   depart_admonitionz HTMLTranslator.depart_admonition  r   r(   c                 2    |                      |d           d S )Nseealsor  rn   s     r&   visit_seealsozHTMLTranslator.visit_seealso      dI.....r(   c                 0    |                      |           d S r.   r	  rn   s     r&   depart_seealsozHTMLTranslator.depart_seealso      t$$$$$r(   .c                    |                     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|z  }n&d|j        d         d         z   }|| j        j        vrd	}| j        j                             |          r| j        j        |         S d S )
Nr   
singlehtmlz/#idsr   z%s/r   rG   )	r   r   r   r   sectionr,   r  r_   
secnumbers)r1   rj   rl   
anchornames       r&   get_secnumberzHTMLTranslator.get_secnumber  s    88K   	;$$U]33 	;| L0 $-+)0$+e2DQ2G2GH
T\%<< 1!&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  r:   rm   rQ   r   r   rd   )r1   rj   r   s      r&   add_secnumberzHTMLTranslator.add_secnumber0  s}    &&t,,	 	VIE!hhs3	':':;;d>SSU V V V V V	V 	Vr(   c                 \    dt           dt           dd f fd} j        j        j        d                             |          }|rht          |d                   dk    r5t          d          |j        z  }t          	                    ||	           d S  |||d         d                    d S d S )
Nfigtype	figure_idr   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  /z<span class="caption-number">z#numfig_format is not defined for %sr    r   )r,   r  r_   
fignumbersr   r:   rm   r`   numfig_formatr   loggerwarningrQ   r   r   )r  r  keyprefixmsgnumbersr1   s         r&   append_fignumberz6HTMLTranslator.add_fignumber.<locals>.append_fignumber7  s)   | L0 !%r!2!2!2GG<DL377R@@@ 	0	  !@AAA266w?? 0BCCgMCNN3'''''"l5c:9EGI$$Vchhs37H7H.I.I%IC%OPPPI$$Y/////	0 	0r(   stdr  r   z Any IDs not assigned for %s nodelocation)
r   r,   envdomainsget_enumerable_node_typer   r   tagnamer%  r&  )r1   rj   r+  r  r)  s   `    r&   add_fignumberzHTMLTranslator.add_fignumber6  s    	0c 	0c 	0d 	0 	0 	0 	0 	0 	0" ,"*51JJ4PP 	:4;1$ :;<<t|KsT22222  $u+a.99999	: 	:r(   r>   c                     |d         rR| j         j        rH| j        j        r>d}| j                            ||d         d         || j         j        fz             d S d S d S d S )Nr  z2<a class="headerlink" href="#%s" title="%s">%s</a>r   )r`   html_permalinksr,   add_permalinksr:   rm   html_permalinks_icon)r1   rj   r>   formats       r&   r   z HTMLTranslator.add_permalink_refP  s    ; 	J4;6 	J4<;V 	JIFIVtE{1~u'+{'G'I I J J J J J	J 	J 	J 	J 	J 	Jr(   c                     |d         dd         D ]:}| j                             d|z             |d                             |           ;dS )a  Generate hyperlink targets for listings.

        Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list()
        generates hyperlink targets inside listing tags (<ul>, <ol> and <dl>) if multiple
        IDs are assigned to listings.  That is invalid DOM structure.
        (This is a bug of docutils <= 0.12)

        This exports hyperlink targets before listings to make valid DOM structure.
        r  r}   Nz<span id="%s"></span>)r:   rm   remove)r1   rj   ids      r&   generate_targets_for_listingz+HTMLTranslator.generate_targets_for_listingV  s`     u+abb/ 	# 	#BI4r9:::Kr""""	# 	#r(   c                     t          |          dk    r,t          |d         t          j                  rt          j        |                     |           t                                          |           d S )Nr}   r   )	r   r   r   toctreer   r   r<  r/   visit_bullet_listr1   rj   r2   s     r&   r?  z HTMLTranslator.visit_bullet_liste  sg    t99> 	!ja(2BCC 	!. ))$///!!$'''''r(   c                 t    |                      |           t                                          |           d S r.   )r<  r/   visit_enumerated_listr@  s     r&   rB  z$HTMLTranslator.visit_enumerated_listm  s5    ))$///%%d+++++r(   c                 d    | j                             |                     |dd                     d S r   ru   rn   s     r&   visit_definitionzHTMLTranslator.visit_definitionr  s.    	tT26677777r(   c                 :    | j                             d           d S )Nz</dd>
ry   rn   s     r&   depart_definitionz HTMLTranslator.depart_definitionw  r   r(   c                 h    | j                             |                     |ddd                     d S )Nr   rG   
classifierr   ru   rn   s     r&   visit_classifierzHTMLTranslator.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 )Nr   FTdescendsiblings</dt>)r:   rm   	next_noder   r   rH  r1   rj   rO  s      r&   depart_classifierz HTMLTranslator.depart_classifier  sh    	###...FF	)U%566 	&IW%%%%%	& 	&r(   c                 d    | j                             |                     |dd                     d S )Nr|   rG   ru   rn   s     r&   
visit_termzHTMLTranslator.visit_term  r   r(   c                 8   |                     dd          }t          |t          j                  rd S t          |j        j        j        t
          j                  r#|                     |t          d                     | j	        
                    d           d S )NFTrK  zPermalink to this termrN  )rO  r   r   rH  r   r   glossaryr   r   r:   rm   rP  s      r&   depart_termzHTMLTranslator.depart_term  s    ...FF	i!122 		& D$+,3X5FGG J&&tQ/G-H-HIIIIW%%%%%r(   c           	      ^   t          |j        t          j                  r|j                            d          rg| j                            |                     |dddd                     | j                            d           | j                            d           n!t                      
                    |           |                     |           |                     |j                   t          |j        t          j                  r| j                            d           d S d S )	Nr>  prG   captionheading)r   ROLEz<span class="caption-text">z</span></p>
)r   r   r   compact_paragraphr   r:   rm   rv   contextr/   visit_titler  r3  r   tabler@  s     r&   r^  zHTMLTranslator.visit_title  s   dk8#=>> 	&4;??S\C]C] 	&IT]]4b	PY]ZZ[[[I:;;;L0000GG%%%4   4;'''dk5;// 	<I:;;;;;	< 	<r(   c                 d   | j         d         }| j        j        r:| j        j        r-|j                            d          r|j        d         r|                    d          r)|                     |j        t          d                     n|                    d          rO| j
                            d|j        d         d         z  dt          d          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  z</hzPermalink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="z">r   zPermalink to this table)r]  r`   r5  r,   r6  r   r   r   r   r   r:   rm   r7  r   r   r_  r/   depart_title)r1   rj   	close_tagr2   s      r&   ra  zHTMLTranslator.depart_title  s   L$	K' 	(DL,G 	(;u%%	(*.+e*<	( ##E** 
R&&t{A6Q4R4RSSSS%%i00 R	  !H!%U!3A!6"7 "7 &''B%C%C%C%C%)[%E%E"G"G H H H H
 DK55 R	  +++&&t{A6O4P4PQQQU[11 	(IY'''T"""""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)optsrf  r.  r   rG   zhighlight-%s notranslatesuffixr   r   )	rawsourcerM   r/   visit_literal_blockr   r`   highlight_optionshtml_codeblock_linenos_styler]   highlight_blockrv   r:   rm   r   r   )	r1   rj   langrf  rg  ri  highlightedrv   r2   s	           r&   rm  z"HTMLTranslator.visit_literal_block  sF   >T[[]]* 	577..t444xx
I..((9e,,"2B77"&((7E":":w{,00r:: 	?t{? 	?k>G6d&6ND
'+W
 
+
 
 ==uR'AD'H ! J J	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">r   rG   zcaption-textr   )r   r   r   	containerr   r:   rm   r/   visit_captionr3  rv   r@  s     r&   rv  zHTMLTranslator.visit_caption  s    dk5?33 	(8X8X 	(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 )Nr   rt  zPermalink to this codezPermalink to this imager>  zPermalink to this toctreer   )r:   rm   r   r   r   ru  r   r   r   figurer/   depart_captionr@  s     r&   ry  zHTMLTranslator.depart_caption  sG   	### dk5?33 	W8X8X 	W""4;2J0K0KLLLLU\22 	W""4;2K0L0LMMMM[__Y'' 	W""4;#5q9T7U7UVVVdk5?33 	)8X8X 	)IZ(((((GG""4(((((r(   c                 0    |                      |           d S r.   )rm  rn   s     r&   visit_doctest_blockz"HTMLTranslator.visit_doctest_block  s      &&&&&r(   c                 h    | j                             |                     |d          dz              d S )N
blockquotez<div>ru   rn   s     r&   visit_block_quotez HTMLTranslator.visit_block_quote  s1    	t\::WDEEEEEr(   c                 :    | j                             d           d S )Nz</div></blockquote>
ry   rn   s     r&   depart_block_quotez!HTMLTranslator.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kbdclassesrG   zdocutils literal notranslater   rd  r   r}   T)ri  r.  nowrapz'docutils literal highlight highlight-%srj  r   )r:   rm   rv   r   rb   r`   rn  r]   rp  rM   stripr   r   )r1   rj   rq  ri  rr  rv   s         r&   visit_literalzHTMLTranslator.visit_literal  s   DO# 	IT]]41O + Q Q R R RFxx
D))i( 	 	IT]]41O + Q Q R R R%%*%%F{,00r::&66KKMM4dT$ 7 H H==;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  r  z</kbd>r}   r   )r:   rm   rb   rn   s     r&   depart_literalzHTMLTranslator.depart_literal  s_    DO# 	(IX&&&&&%%*%%IY'''''r(   c                    | j                             |                     |d                     g }t          t          t
          j                 |          }|D ]}|                    |d                    t          d |D                       }d }|D ]}|d         rh|d                             |          }| j                             |                     |dd                     | j                             |dz              n/|-| j                             ddt          |          z  z             |
                    |            | j                             d	           | j                             d
           t          j        )Npre	tokennamec              3   4   K   | ]}t          |          V  d S r.   )r   )r   r  s     r&   	<genexpr>z6HTMLTranslator.visit_productionlist.<locals>.<genexpr>  s(      114SYY111111r(   strongrG   z</strong> ::= z%s     r"  
z</pre>
)r:   rm   rv   r   r   r   
productionmaxljustr   rL   r   r   )r1   rj   namesproductionlistr  maxlenlastnames          r&   visit_productionlistz#HTMLTranslator.visit_productionlist  s   	tU33444hx':;TBB( 	2 	2JLLK0111111511111( 	# 	#J+& D%k288@@	  z8R!H!HIII	  ,<!<==== D	  cCMM.A!BCCC  &&&IT""""	$$$nr(   c                     d S r.   r   rn   s     r&   depart_productionlistz$HTMLTranslator.depart_productionlist)  r   r(   c                     d S r.   r   rn   s     r&   visit_productionzHTMLTranslator.visit_production,  r   r(   c                     d S r.   r   rn   s     r&   depart_productionz HTMLTranslator.depart_production/  r   r(   c                 l    | j                             |                     |dd          dz              d S )NrX  centeredr   z<strong>ru   rn   s     r&   visit_centeredzHTMLTranslator.visit_centered2  sB    	tS
CC#$ 	% 	% 	% 	% 	%r(   c                 :    | j                             d           d S )Nz</strong></p>ry   rn   s     r&   depart_centeredzHTMLTranslator.depart_centered6  s    	)))))r(   c                     t          |j        t          j                  rdS t          |j        t          j                  rdS t                                          |          S )z:Determine if the <p> tags around paragraph can be omitted.F)r   r   r   desc_contentversionmodifiedr/   should_be_compact_paragraphr@  s     r&   r  z*HTMLTranslator.should_be_compact_paragraph:  sS    dk8#899 	5dk8#;<< 	5ww224888r(   c                     d S r.   r   rn   s     r&   visit_compact_paragraphz&HTMLTranslator.visit_compact_paragraphD  r   r(   c                     d S r.   r   rn   s     r&   depart_compact_paragraphz'HTMLTranslator.depart_compact_paragraphG  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 downloadrG   )r   downloadr   r   r   r   r   z</a>filenamer   )r,   download_supportr]  rm   r:   rv   	posixpathrQ   dlpathurllibparsequoter   s      r&   visit_download_referencez'HTMLTranslator.visit_download_referenceJ  sx   -    |, 	$L##### 	$MMM[(MMM>DLI]T]4bAADAABBBL'''''4 	$MMM[(MMM$>$,*=*0,*<*<T*=M*N*NP PDLI]T]4bAADAABBBL'''''L#####r(   c                 h    | j                             | j                                                   d S r.   )r:   rm   r]  rq   rn   s     r&   depart_download_referencez(HTMLTranslator.depart_download_reference^  s,    	))++,,,,,r(   c                 r    |                     dd           t                                          |          S )Nalignre  )
setdefaultr/   visit_figurer@  s     r&   r  zHTMLTranslator.visit_figureb  s/    +++ww##D)))r(   c                    |d         }|| j         j        v r2t          j        | j         j        | j         j        |                   |d<   d|v rd|v rd|v st          t          j                            | j         j        |                    }|*t          
                    t          d          |           n8d|vrt          |d                   |d<   d|vrt          |d                   |d<   |d         }|                                                    d	          rd
|i}d|v r|d         |d<   d|v r|d         |d<   d|v rFd|v rt          |d         |d                   |d<   d|v rt          |d         |d                   |d<   |                    d|          |d<   d|v rd|d         z  |d<   | j                             | j        |ddfi |           d S t)                                          |           d S )Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.r-  r   r}   svgsvgzsrcaltr  zalign-%sr   imgrG   )r,   imagesr  rQ   imgpathr   ospathsrcdirr%  r&  r   r   lowerendswithr'   r   r:   rm   emptytagr/   visit_image)r1   rj   oldurisizer  r   r2   s         r&   r  zHTMLTranslator.visit_imagei  sS   eT\(( 	F#.)=)-)<V)DF FDK d? 	6 tO 	6D(8 	6%bgll4<3F&O&OPP 6NN2&_#`#`,0 # 2 2 2 2 d* 5(+DGWt+ 6),T!WX5k99;;00 	3<D$ . $WW4 0!%hX$ Td? R$3DM4=$Q$QDMt# T%4T(^T']%S%SDN((5#..DK$ ; *T'] :WI]T]4CCdCCDDDFD!!!!!r(   c                     |d                                                              d          rd S t                                          |           d S )Nr  r  )r  r  r/   depart_imager@  s     r&   r  zHTMLTranslator.depart_image  sL    ;''88 	'DGG  &&&&&r(   c                     t           j        r.   r   rn   s     r&   visit_toctreezHTMLTranslator.visit_toctree  s     nr(   c                     t           j        r.   r   rn   s     r&   visit_indexzHTMLTranslator.visit_index  r  r(   c                     t           j        r.   r   rn   s     r&   visit_tabular_col_specz%HTMLTranslator.visit_tabular_col_spec  r  r(   c                     d S r.   r   rn   s     r&   visit_glossaryzHTMLTranslator.visit_glossary  r   r(   c                     d S r.   r   rn   s     r&   depart_glossaryzHTMLTranslator.depart_glossary  r   r(   c                     d S r.   r   rn   s     r&   
visit_ackszHTMLTranslator.visit_acks  r   r(   c                     d S r.   r   rn   s     r&   depart_ackszHTMLTranslator.depart_acks  r   r(   c                 :    | j                             d           d S )Nz<table class="hlist"><tr>ry   rn   s     r&   visit_hlistzHTMLTranslator.visit_hlist  s    	455555r(   c                 :    | j                             d           d S )Nz</tr></table>
ry   rn   s     r&   depart_hlistzHTMLTranslator.depart_hlist  s    	*+++++r(   c                 :    | j                             d           d S )Nz<td>ry   rn   s     r&   visit_hlistcolzHTMLTranslator.visit_hlistcol  s    	     r(   c                 :    | j                             d           d S )Nz</td>ry   rn   s     r&   depart_hlistcolzHTMLTranslator.depart_hlistcol  r   r(   c                     t                                          |           | j        d                             dd          | j        d<   d S )N&nbsp;&#160;)r/   visit_option_groupr]  replacer@  s     r&   r  z!HTMLTranslator.visit_option_group  sD    ""4(((<+33HhGG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>z 
r  r}   r"  )rM   encoderb   words_and_spacesfindallr  r:   rm   r   r   r   r   cloak_email)r1   rj   textencodedtokens        r&   
visit_TextzHTMLTranslator.visit_Text  s'   {{}}++d##$ 	& .66w?? 	H 	H;;== HI$$%BU%JKKKKe^ H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  rn   s     r&   
visit_notezHTMLTranslator.visit_note      dF+++++r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_notezHTMLTranslator.depart_note  r  r(   c                 2    |                      |d           d S )Nr&  r  rn   s     r&   visit_warningzHTMLTranslator.visit_warning  r  r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_warningzHTMLTranslator.depart_warning  r  r(   c                 2    |                      |d           d S )N	attentionr  rn   s     r&   visit_attentionzHTMLTranslator.visit_attention      dK00000r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_attentionzHTMLTranslator.depart_attention  r  r(   c                 2    |                      |d           d S )Ncautionr  rn   s     r&   visit_cautionzHTMLTranslator.visit_caution  r  r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_cautionzHTMLTranslator.depart_caution  r  r(   c                 2    |                      |d           d S )Ndangerr  rn   s     r&   visit_dangerzHTMLTranslator.visit_danger  s    dH-----r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_dangerzHTMLTranslator.depart_danger  r  r(   c                 2    |                      |d           d S )Nerrorr  rn   s     r&   visit_errorzHTMLTranslator.visit_error  s    dG,,,,,r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_errorzHTMLTranslator.depart_error  r  r(   c                 2    |                      |d           d S )Nhintr  rn   s     r&   
visit_hintzHTMLTranslator.visit_hint  r  r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_hintzHTMLTranslator.depart_hint  r  r(   c                 2    |                      |d           d S )N	importantr  rn   s     r&   visit_importantzHTMLTranslator.visit_important  r  r(   c                 0    |                      |           d S r.   r  rn   s     r&   depart_importantzHTMLTranslator.depart_important  r  r(   c                 2    |                      |d           d S )Ntipr  rn   s     r&   	visit_tipzHTMLTranslator.visit_tip  s    dE*****r(   c                 0    |                      |           d S r.   r  rn   s     r&   
depart_tipzHTMLTranslator.depart_tip
  r  r(   c                 ,    |                      |          S r.   )visit_emphasisrn   s     r&   visit_literal_emphasisz%HTMLTranslator.visit_literal_emphasis  s    ""4(((r(   c                 ,    |                      |          S r.   )depart_emphasisrn   s     r&   depart_literal_emphasisz&HTMLTranslator.depart_literal_emphasis  s    ##D)))r(   c                 ,    |                      |          S r.   )visit_strongrn   s     r&   visit_literal_strongz#HTMLTranslator.visit_literal_strong  s      &&&r(   c                 ,    |                      |          S r.   )depart_strongrn   s     r&   depart_literal_strongz$HTMLTranslator.depart_literal_strong  s    !!$'''r(   c                     i }|                     d          r|d         |d<   | j                             | j        |ddfi |           d S )Nexplanationr>   abbrrG   )r   r:   rm   rv   )r1   rj   attrss      r&   visit_abbreviationz!HTMLTranslator.visit_abbreviation  s]    <<&& 	1!-0E'N	tVRAA5AABBBBBr(   c                 :    | j                             d           d S )Nz</abbr>ry   rn   s     r&   depart_abbreviationz"HTMLTranslator.depart_abbreviation  r   r(   c                     |                      |           | j        r1 | j        j        di |j        |d<   |                     |           d S d S )Nr   r   )r'  ra   r8  
attributesr   rn   s     r&   visit_manpagezHTMLTranslator.visit_manpage"  sf    ##D))) 	'5T.5HHHHDN  &&&&&	' 	'r(   c                 h    | j         r|                     |           |                     |           d S r.   )ra   r   r*  rn   s     r&   depart_manpagezHTMLTranslator.depart_manpage(  s;     	(!!$'''$$T*****r(   c                     | j                             d           |                    dd           t                                          |          S )Nr   r  re  )rg   rm   r  r/   visit_tabler@  s     r&   r>  zHTMLTranslator.visit_table/  sH    &&q))) 	+++ww""4(((r(   c                 |    | j                                          t                                          |           d S r.   )rg   rq   r/   depart_tabler@  s     r&   r@  zHTMLTranslator.depart_table7  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  r}   rH   r   r  zrow-evenzrow-oddtrrG   )rg   rm   r:   rv   columnrn   s     r&   	visit_rowzHTMLTranslator.visit_row;  s    ###q(###"2&*a/ 	.O"":....O""9---	tT266777r(   c                     t                                          |           | j        d         dk    rd| j        d<   d S d S Nr  r  r  )r/   visit_entryr:   r@  s     r&   rG  zHTMLTranslator.visit_entryD  sG    D!!!9R=H$ 	%$DIbMMM	% 	%r(   c                 z    | j                             d           t                                          |          S )Nr   )rh   rm   r/   visit_field_listr@  s     r&   rI  zHTMLTranslator.visit_field_listI  s2    #**1---ww''---r(   c                 x    | j                                          t                                          |          S r.   )rh   rq   r/   depart_field_listr@  s     r&   rK  z HTMLTranslator.depart_field_listM  s0    #'')))ww((...r(   c                 (   | 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  r}   rH   r   r  z
field-evenz	field-oddrB  rG   fieldr   )rh   rm   r:   rv   rn   s     r&   visit_fieldzHTMLTranslator.visit_fieldQ  s    #B'''1,'''&r*Q.!3 	0O""<0000O"";///	tT2WEEFFFFFr(   c                     t          | j                  }t                                          |           |t          | j                  k    r+| j        d                             dd          | j        d<   d S d S rF  )r   r]  r/   visit_field_namer  )r1   rj   context_countr2   s      r&   rP  zHTMLTranslator.visit_field_nameY  sw    DL))  &&&C--- 	L#|B/77(KKDL	L 	Lr(   math_envc                 t    | j         j        }| j         j        j        j        |         \  }} || |           d S r.   r,   math_renderer_nameappregistryhtml_inline_math_renderersr1   rj   rR  r  visitr   s         r&   
visit_mathzHTMLTranslator.visit_math_  s=    |.<#,GMqdDr(   c                 |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S r.   rT  r1   rj   rR  r  r   departs         r&   depart_mathzHTMLTranslator.depart_mathd  sO    |.L$-HN	6 	F4	 	r(   c                 t    | j         j        }| j         j        j        j        |         \  }} || |           d S r.   r,   rU  rV  rW  html_block_math_renderersrY  s         r&   visit_math_blockzHTMLTranslator.visit_math_blockj  s=    |.<#,FtLqdDr(   c                 |    | j         j        }| j         j        j        j        |         \  }}|r || |           d S d S r.   ra  r]  s         r&   depart_math_blockz HTMLTranslator.depart_math_blocko  sO    |.L$-GM	6 	F4	 	r(   c                 T    t          j        dt          d           | j        d         S )Nz"_fieldlist_row_index is deprecatedrH   
stacklevelr  )warningswarnr   rh   r1   s    r&   _fieldlist_row_indexz#HTMLTranslator._fieldlist_row_indexu  s1    :.1	> 	> 	> 	>*2..r(   c                 T    t          j        dt          d           | j        d         S )Nz_table_row_index is deprecatedrH   rg  r  )ri  rj  r   rg   rk  s    r&   _table_row_indexzHTMLTranslator._table_row_index{  s1    6.1	> 	> 	> 	>&r**r(   )rG   r.   )rU   rV   rW   __doc__r,   __annotations__r   rJ   r   r0   r	   ro   rr   rw   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  r3  r   r<  r?  rB  rD  rF  rI  rQ  rS  rV  r^  ra  rm  rv  ry  r{  r~  r  r  r  r  r  r  r  r  r  r
   boolr  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  r5  r7  r:  r<  r>  r@  rD  rG  rI  rK  rN  rP  r[  r_  rc  re  r   rl  rn  rY   rZ   s   @r&   r   r   F   s          (,G$+++& &' &d & & & & & &M MD M M M M
 T    4w 44 4 4 4 4& &D & & & &' 'T ' ' ' '
$' $d $ $ $ $g $    #w #4 # # # #8w 84 8 8 8 8" "D " " " ":g :$ : : : :$w $4 $ $ $ $:G : : : : :$W $ $ $ $ $:w :4 : : : :$ $D $ $ $ $G     W     @w @4 @ @ @ @
+ +D + + + +9W 9 9 9 9 9=g =$ = = = =% %T % % % %3' 3d 3 3 3 3< <D < < < << <T < < < <J' Jd J J J J"7 "t " " " "
I' Id I I I I%7 %t % % % %DG D D D D D8#7 #t # # # #$G $ $ $ $ $' d    " "W "C " " " " "% %hw&7 %4 % % % %/' /d / / / /%7 %t % % % %' eCHo    &V' Vd V V V V:' :d : : : :4Jg Jc Jd J J J J# #T # # # #(g ($ ( ( ( ( ( (,' ,d , , , , , ,
8W 8 8 8 8 8
$g $$ $ $ $ $NW N N N N N&g &$ & & & &8w 84 8 8 8 8& &D & & & &
< 
<D 
< 
< 
< 
< 
< 
<# #T # # # # # #, D      .P' Pd P P P P P P)7 )t ) ) ) ) ) ) ' 'D ' ' ' 'Fg F$ F F F F2w 24 2 2 2 2' d    0(7 (t ( ( ( ( T    (' d    W     g $    %7 %t % % % %*G * * * * *9 9 9 9 9 9 9 9G     W     $W $ $ $ $ $(-g -$ - - - -* *T * * * * * *(" ("D (" (" (" (" (" ("V' 'T ' ' ' ' ' '' d    
 D    7 t    7 t    G     w 4     D    6 6D 6 6 6 6, ,T , , , ,!7 !t ! ! ! !"G " " " " "Hw H4 H H H H H H
&t & & & & &*,w ,4 , , , ,% %D % % % %/' /d / / / /%7 %t % % % %1G 1 1 1 1 1%W % % % % %/' /d / / / /%7 %t % % % %. .T . . . .%' %d % % % %- -D - - - -% %T % % % %,w ,4 , , , ,% %D % % % %1G 1 1 1 1 1%W % % % % %+g +$ + + + +%w %4 % % % %)7 )t ) ) ) )*G * * * * *' 'T ' ' ' '(' (d ( ( ( (Cw C4 C C C C$ $D $ $ $ $'' 'd ' ' ' '+7 +t + + + +) )D ) ) ) ) ) )# #T # # # # # #g $    % %D % % % % % %
.W . . . . . . ./g /$ / / / / / /G GD G G G GLW L L L L L L L w # t    
  3      W  T    
 g  d     / / X/
 + + X+ + + + +r(   r   )0ro  r  r  r   urllib.parser  ri  typingr   r   r   r   r   docutilsr   docutils.nodesr	   r
   r   docutils.writers.html4css1r   BaseTranslatorr   sphinxr   sphinx.buildersr   sphinx.deprecationr   sphinx.localer   r   r   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.imagesr   sphinx.builders.htmlr   	getLoggerrU   r%  r   r!   r'   r*   r   r(   r&   <module>r     s   5 5 				     				      A A A A A A A A A A A A A A       . . . . . . . . . . G G G G G G - - - - - -       # # # # # # 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1       1 1 1 1 1 1 - - - - - - ;:::::: 
	8	$	$
,C 
, 
, 
, 
, 
, 
,9 9 9 9 9 9 9 90y+ y+ y+ y+ y+%~ y+ y+ y+ y+ y+r(   