
    Fe>                    &   d 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 ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ erddlmZ ddlmZ  ej@                  e!      Z" G d de      Z# G d d      Z$ G d dee      Z%y)z5Manual page writer, extended for Sphinx custom nodes.    )annotations)Iterable)TYPE_CHECKINGAnycast)nodes)
Translator)Writer)addnodes)_admonitionlabels)logging)SphinxTranslator)format_date)NodeMatcher)Element)Builderc                  (     e Zd Zd fdZddZ xZS )ManualPageWriterc                0    t         |           || _        y N)super__init__builder)selfr   	__class__s     8/usr/lib/python3/dist-packages/sphinx/writers/manpage.pyr   zManualPageWriter.__init__   s        c                L   t        | j                        }|j                          | j                  j	                  | j                  | j                        }t        t        |      | _        | j                  j                  |       | j                  j                         | _
        y r   )NestedInlineTransformdocumentapplyr   create_translatorr   ManualPageTranslatorvisitor	walkaboutastextoutput)r   	transformr%   s      r   	translatezManualPageWriter.translate    sm    )$--8	,,00M0':(ll))+r   )r   r   returnNone)r+   r,   )__name__
__module____qualname__r   r*   __classcell__r   s   @r   r   r      s    ,r   r   c                       e Zd ZdZddZddZy)r    a  
    Flatten nested inline nodes:

    Before:
        <strong>foo=<emphasis>1</emphasis>
        &bar=<emphasis>2</emphasis></strong>
    After:
        <strong>foo=</strong><emphasis>var</emphasis>
        <strong>&bar=</strong><emphasis>2</emphasis>
    c                    || _         y r   )r!   )r   r!   s     r   r   zNestedInlineTransform.__init__4   s	     r   c                   t        t        j                  t        j                  t        j                        t        | j                  j                              D ]  }t        fd|D              s|j                  j                  |      }t        t        |            D ]y  }|j                  |        |      r |j                  j                  |dz   |       < |j                  dd|fi |j                  }|j                  j                  |dz   |       { t!        |      r|j                  j                  |        y )Nc              3  .   K   | ]  } |        y wr    ).0subnodematchers     r   	<genexpr>z.NestedInlineTransform.apply.<locals>.<genexpr>:   s     877#8s       )r   r   literalemphasisstronglistr!   findallanyparentindexreversedremoveinsertr   
attributeslen)r   kwargsnodeposr8   newnoder9   s         @r   r"   zNestedInlineTransform.apply7   s    emmU^^U\\J..w78 	-D8488kk''-'T
3 =GKK(w'**37G<"0$..R"TDOO"T**37G<= 4yKK&&t,	-r   N)r!   nodes.documentr+   r,   )rJ   r   r+   r,   )r-   r.   r/   __doc__r   r"   r6   r   r   r    r    )   s    	!-r   r    c                      e Zd ZU dZi Zded<   dY fdZdZdZd[dZd[dZ	d[dZ
d[d	Zd[d
Zd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZd[dZ d[dZ!d[d Z"d[d!Z#d[d"Z$d[d#Z%d[d$Z&d[d%Z'd[d&Z(d[d'Z)d[ fd(Z*d[d)Z+d[ fd*Z,d[d+Z-d[d,Z.d[d-Z/d[d.Z0d[d/Z1d[d0Z2d[d1Z3d[d2Z4d[d3Z5d[d4Z6d[d5Z7d[d6Z8d[d7Z9d[d8Z:d[d9Z;d[d:Z<d[d;Z=d[d<Z>d[d=Z?d[d>Z@d[d?ZAd[d@ZBd[dAZCd[dBZDd[dCZEd[dDZFd[dEZGd[dFZHd[dGZId[dHZJd[dIZKd[dJZLd[dKZMd[dLZNd[ fdMZOd[ fdNZPd[ fdOZQd[ fdPZRd[dQZSd[dRZTd[dSZUd[dTZVd[dUZWd[dVZXd[dWZYd[dXZZ xZ[S )\r$   z%
    Custom man page translator.
    zdict[str, Any]_docinfoc                F   t         |   ||       d| _        d| _        | j                  j
                  | j                  d<   | j                  j                  | j                  d<   | j                  j                  r#| j                  j                  | j                  d<   | j                  j                  | j                  d<   | j                  d   j                         | j                  d<   | j                  j                  r$| j                  j                  | j                  d<   nOt        | j                  j                  xs t        d	      | j                  j                   
      | j                  d<   | j                  j"                  | j                  d<   | j                  j$                  | j                  d<   | j                  j&                  | j                  d<   t)        j*                         D ]-  \  }}| j-                  |      | j                   j.                  |<   / y )Nr   titlesubtitleauthormanual_sectiontitle_upperdatez	%b %d, %Y)language	copyrightversionmanual_group)r   r   in_productionlistsection_levelsettingsrT   rQ   rU   authorssectionupperconfigtodayr   	today_fmtr   rZ   r[   r\   projectr   items	deunicodelabels)r   r!   r   labeltranslationr   s        r   r   zManualPageTranslator.__init__O   s   7+!"   "&!4!4g$(MM$:$:j!==  &*mm&;&;DMM(#*.--*?*?&' (,}}W'='C'C'Em$;;$(KK$5$5DMM&!$/0E0E0W;9=9M9M%ODMM&!%)[[%:%:k"#';;#6#6i (,(;(;n% #3"8"8": 	FE;*...*EDMM  '	Fr   c                L    d}| j                   d   r|dz  }|| j                   z  S )NzW.TH "%(title_upper)s" "%(manual_section)s" "%(date)s" "%(version)s" "%(manual_group)s"
rU   z#.SH NAME
%(title)s \- %(subtitle)s
)rQ   )r   tmpls     r   headerzManualPageTranslator.headero   s4    G==$ 4 5Ddmm##r   c                     y r   r6   r   rK   s     r   visit_start_of_filez(ManualPageTranslator.visit_start_of_filew       r   c                     y r   r6   rq   s     r   depart_start_of_filez)ManualPageTranslator.depart_start_of_filez   rs   r   c                &    | j                  |       y r   )visit_definition_listrq   s     r   
visit_desczManualPageTranslator.visit_desc       ""4(r   c                &    | j                  |       y r   )depart_definition_listrq   s     r   depart_descz ManualPageTranslator.depart_desc   s    ##D)r   c                H    | j                  |       | j                  |       y r   )visit_definition_list_item
visit_termrq   s     r   visit_desc_signaturez)ManualPageTranslator.visit_desc_signature   s    ''-r   c                &    | j                  |       y r   )depart_termrq   s     r   depart_desc_signaturez*ManualPageTranslator.depart_desc_signature   s    r   c                     y r   r6   rq   s     r   visit_desc_signature_linez.ManualPageTranslator.visit_desc_signature_line   rs   r   c                :    | j                   j                  d       y )N bodyappendrq   s     r   depart_desc_signature_linez/ManualPageTranslator.depart_desc_signature_line       		r   c                &    | j                  |       y r   )visit_definitionrq   s     r   visit_desc_contentz'ManualPageTranslator.visit_desc_content       d#r   c                &    | j                  |       y r   )depart_definitionrq   s     r   depart_desc_contentz(ManualPageTranslator.depart_desc_content       t$r   c                     y r   r6   rq   s     r   visit_desc_inlinez&ManualPageTranslator.visit_desc_inline   rs   r   c                     y r   r6   rq   s     r   depart_desc_inlinez'ManualPageTranslator.depart_desc_inline   rs   r   c                     y r   r6   rq   s     r   visit_desc_namez$ManualPageTranslator.visit_desc_name   rs   r   c                     y r   r6   rq   s     r   depart_desc_namez%ManualPageTranslator.depart_desc_name   rs   r   c                     y r   r6   rq   s     r   visit_desc_addnamez'ManualPageTranslator.visit_desc_addname   rs   r   c                     y r   r6   rq   s     r   depart_desc_addnamez(ManualPageTranslator.depart_desc_addname   rs   r   c                     y r   r6   rq   s     r   visit_desc_typez$ManualPageTranslator.visit_desc_type   rs   r   c                     y r   r6   rq   s     r   depart_desc_typez%ManualPageTranslator.depart_desc_type   rs   r   c                :    | j                   j                  d       y )Nz -> r   rq   s     r   visit_desc_returnsz'ManualPageTranslator.visit_desc_returns   s    		 r   c                     y r   r6   rq   s     r   depart_desc_returnsz(ManualPageTranslator.depart_desc_returns   rs   r   c                H    | j                   j                  d       d| _        y )N(r;   r   r   first_paramrq   s     r   visit_desc_parameterlistz-ManualPageTranslator.visit_desc_parameterlist       		r   c                :    | j                   j                  d       y )N)r   rq   s     r   depart_desc_parameterlistz.ManualPageTranslator.depart_desc_parameterlist   r   r   c                H    | j                   j                  d       d| _        y )N[r;   r   rq   s     r   visit_desc_type_parameter_listz3ManualPageTranslator.visit_desc_type_parameter_list   r   r   c                :    | j                   j                  d       y N]r   rq   s     r   depart_desc_type_parameter_listz4ManualPageTranslator.depart_desc_type_parameter_list   r   r   c                b    | j                   s| j                  j                  d       y d| _         y )N, r   )r   r   r   rq   s     r   visit_desc_parameterz)ManualPageTranslator.visit_desc_parameter   s%    IIT" Dr   c                     y r   r6   rq   s     r   depart_desc_parameterz*ManualPageTranslator.depart_desc_parameter   rs   r   c                &    | j                  |       y r   )r   rq   s     r   visit_desc_type_parameterz.ManualPageTranslator.visit_desc_type_parameter   s    !!$'r   c                &    | j                  |       y r   )r   rq   s     r   depart_desc_type_parameterz/ManualPageTranslator.depart_desc_type_parameter   ry   r   c                :    | j                   j                  d       y )Nr   r   rq   s     r   visit_desc_optionalz(ManualPageTranslator.visit_desc_optional   r   r   c                :    | j                   j                  d       y r   r   rq   s     r   depart_desc_optionalz)ManualPageTranslator.depart_desc_optional   r   r   c                     y r   r6   rq   s     r   visit_desc_annotationz*ManualPageTranslator.visit_desc_annotation   rs   r   c                     y r   r6   rq   s     r   depart_desc_annotationz+ManualPageTranslator.depart_desc_annotation   rs   r   c                &    | j                  |       y r   )visit_paragraphrq   s     r   visit_versionmodifiedz*ManualPageTranslator.visit_versionmodified       T"r   c                &    | j                  |       y r   )depart_paragraphrq   s     r   depart_versionmodifiedz+ManualPageTranslator.depart_versionmodified   r   r   c                    t        |j                  t        j                              r| j                  j                  d       y t        |   |       y N
)rB   rA   r   r?   r   r   r   r   r   rK   r   s     r   r   zManualPageTranslator.visit_term   s7    t||ELL)*IIT"Gt$r   c                "    t         j                  r   r   SkipNoderq   s     r   visit_commentz"ManualPageTranslator.visit_comment       nnr   c                D    | j                          t        | 	  |       y r   )
ensure_eolr   visit_footnoter   s     r   r   z#ManualPageTranslator.visit_footnote   s    t$r   c                h   | j                          t        |      dk(  ry|j                         dt        d      fv r\| j                  j                  d| j                  |j                               j                         z   dz          t        j                  | j                  j                  d       y )Nr;   	Footnotesz.SH r   .sp
)
r   rI   r'   r   r   r   ri   rc   r   r   rq   s     r   visit_rubricz!ManualPageTranslator.visit_rubric   s}    t9>dkkmQ{^/LLIIVdnnT[[]&C&I&I&KKdRS.. 		!r   c                :    | j                   j                  d       y r   r   rq   s     r   depart_rubricz"ManualPageTranslator.depart_rubric  s    		r   c                (    | j                  |d       y )Nseealso)visit_admonitionrq   s     r   visit_seealsoz"ManualPageTranslator.visit_seealso
  s    dI.r   c                &    | j                  |       y r   )depart_admonitionrq   s     r   depart_seealsoz#ManualPageTranslator.depart_seealso  r   r   c                   | j                          g }| xj                  dz  c_        | j                  j                  d       t	        t
        t        j                     |      }|D ]  }|j                  |d           t        d |D              }d }|D ]  }|d   r|d   j                  |      }| j                  j                  | j                  d   d          | j                  j                  | j                  |             | j                  j                  | j                  d   d          | j                  j                  d       n,|*| j                  j                  dd	t        |      z  z         |j                  |        | j                  j                  d
        | j                  j                  d       | xj                  dz  c_        t        j                  )Nr;   z.sp
.nf
	tokennamec              3  2   K   | ]  }t        |        y wr   )rI   )r7   names     r   r:   z<ManualPageTranslator.visit_productionlist.<locals>.<genexpr>  s     14SY1s   r?   r   z ::= z%s     r   r   z
.fi
)r   r^   r   r   r   r   r   
productionmaxljustdefsri   rI   r&   r   r   )r   rK   namesproductionlistr   maxlenlastnames          r   visit_productionlistz)ManualPageTranslator.visit_productionlist  s   !#		&hx':':;TB( 	2JLLK01	21511( 
	#J+&%k288@		  8!4Q!78		  !9:		  8!4Q!78		  )%		  cCM.A!BC  &IIT"
	# 			#!#nnr   c                     y r   r6   rq   s     r   visit_productionz%ManualPageTranslator.visit_production)  rs   r   c                     y r   r6   rq   s     r   depart_productionz&ManualPageTranslator.depart_production,  rs   r   c                    d|j                   v r-| j                  j                  t        d      |d   z  dz          | j                  j                  t        d      dz          t        j
                  )Naltz[image: %s]r   z[image])rH   r   r   r   r   r   rq   s     r   visit_imagez ManualPageTranslator.visit_image0  sX    DOO#IIQ}-U;dBC		9,-nnr   c                4   | j                   j                  | j                  d   d          | j                  |       | j                   j                  | j                  d   d          |j	                  dd      }|j                  d      r| j                  j                  ri|j                         |k7  rV|j                  d      r|dd  }| j                   j                  d	| j                  d
   d   || j                  d
   d   dg       t        j                  )N	referencer   r;   refurir<   )mailto:zhttp:zhttps:zftp:r     z <r?   >)r   r   r   
visit_Textget
startswithrd   man_show_urlsr'   extendr   r   )r   rK   uris      r   visit_referencez$ManualPageTranslator.visit_reference7  s    		;/23 			;/23hhx$>>@A{{((T[[]c-A>>),ab'C		  IIh'*C81DQ1G"  nnr   c                    t        j                  |j                  dd            }| j                  |       t         j                  )NrT   #)r   Textr  r  r   )r   rK   texts      r   visit_number_referencez+ManualPageTranslator.visit_number_referenceJ  s1    zz$((7C01nnr   c                Z    | j                          | j                  j                  d       y )Nz.sp
.ce
)r   r   r   rq   s     r   visit_centeredz#ManualPageTranslator.visit_centeredO  s    		&r   c                :    | j                   j                  d       y )Nz
.ce 0
r   rq   s     r   depart_centeredz$ManualPageTranslator.depart_centeredS  s    		%r   c                     y r   r6   rq   s     r   visit_compact_paragraphz,ManualPageTranslator.visit_compact_paragraphV  rs   r   c                     y r   r6   rq   s     r   depart_compact_paragraphz-ManualPageTranslator.depart_compact_paragraphY  rs   r   c                     y r   r6   rq   s     r   visit_download_referencez-ManualPageTranslator.visit_download_reference\  rs   r   c                     y r   r6   rq   s     r   depart_download_referencez.ManualPageTranslator.depart_download_reference_  rs   r   c                "    t         j                  r   r   rq   s     r   visit_toctreez"ManualPageTranslator.visit_toctreeb  r   r   c                "    t         j                  r   r   rq   s     r   visit_indexz ManualPageTranslator.visit_indexe  r   r   c                "    t         j                  r   r   rq   s     r   visit_tabular_col_specz+ManualPageTranslator.visit_tabular_col_spech  r   r   c                     y r   r6   rq   s     r   visit_glossaryz#ManualPageTranslator.visit_glossaryk  rs   r   c                     y r   r6   rq   s     r   depart_glossaryz$ManualPageTranslator.depart_glossaryn  rs   r   c                   t        t        j                  |d         }t        t        t        j                     |      }| j                          t        t        j                  |d         }t        t        t        j                     |      }| j                  j                  dj                  d |D              dz          | j                  j                  d       t        j                  )Nr   r   c              3  <   K   | ]  }|j                           y wr   )r'   )r7   ns     r   r:   z2ManualPageTranslator.visit_acks.<locals>.<genexpr>w  s     "B!188:"Bs   .r   )
r   r   bullet_listr   	list_itemr   r   r   joinr   )r   rK   r*  
list_itemss       r   
visit_ackszManualPageTranslator.visit_acksq  s    5,,d1g6(5??3[A
5,,d1g6(5??3[A
		"Bz"BBSHI		nnr   c                &    | j                  |       y r   )visit_bullet_listrq   s     r   visit_hlistz ManualPageTranslator.visit_hlist{  r   r   c                &    | j                  |       y r   )depart_bullet_listrq   s     r   depart_hlistz!ManualPageTranslator.depart_hlist~  s    %r   c                     y r   r6   rq   s     r   visit_hlistcolz#ManualPageTranslator.visit_hlistcol  rs   r   c                     y r   r6   rq   s     r   depart_hlistcolz$ManualPageTranslator.depart_hlistcol  rs   r   c                $    | j                  |      S r   )visit_emphasisrq   s     r   visit_literal_emphasisz+ManualPageTranslator.visit_literal_emphasis  s    ""4((r   c                $    | j                  |      S r   )depart_emphasisrq   s     r   depart_literal_emphasisz,ManualPageTranslator.depart_literal_emphasis  s    ##D))r   c                $    | j                  |      S r   visit_strongrq   s     r   visit_literal_strongz)ManualPageTranslator.visit_literal_strong        &&r   c                $    | j                  |      S r   depart_strongrq   s     r   depart_literal_strongz*ManualPageTranslator.depart_literal_strong      !!$''r   c                     y r   r6   rq   s     r   visit_abbreviationz'ManualPageTranslator.visit_abbreviation  rs   r   c                     y r   r6   rq   s     r   depart_abbreviationz(ManualPageTranslator.depart_abbreviation  rs   r   c                $    | j                  |      S r   r@  rq   s     r   visit_manpagez"ManualPageTranslator.visit_manpage  rC  r   c                $    | j                  |      S r   rE  rq   s     r   depart_manpagez#ManualPageTranslator.depart_manpage  rH  r   c                    t        |j                  t        j                        r7|j                  j	                  d      r| j
                  j                  d       y t        | !  |       y )Nliteral_blockr   )	
isinstancerC   r   	containerr  r   r   r   visit_captionr   s     r   rU  z"ManualPageTranslator.visit_caption  sC    dkk5??38XIIW%G!$'r   c                    t        |j                  t        j                        r7|j                  j	                  d      r| j
                  j                  d       y t        | !  |       y )NrR  r   )	rS  rC   r   rT  r  r   r   r   depart_captionr   s     r   rW  z#ManualPageTranslator.depart_caption  sC    dkk5??38XIIT"G"4(r   c                   t        |j                  t        j                        r| j                  j                  d       y t        |j                  t        j                        r| j                  dk(  rt        j                  | j                  dk(  rY| j                  j                  d| j                  |j                         j                               z         t        j                  t        | 9  |      S )Nz.IP "r   r;   z.SH %s
)rS  rC   r   r   r   r   r   rb   r_   r   ri   r'   rc   r   visit_titler   s     r   rY  z ManualPageTranslator.visit_title  s    dkk8#3#34IIW%U]]3!!Q&nn$##q(		  !%0C0C0E!F"G Hnn$w"4((r   c                    t        |j                  t        j                        r| j                  j                  d       y t        |   |      S )Nz"
)rS  rC   r   r   r   r   r   depart_titler   s     r   r[  z!ManualPageTranslator.depart_title  s<    dkk8#3#34IIU#w#D))r   c                    d|j                  dd      j                         v r)| j                  j                  |j	                                t
        j                  )Nmanpageformatr<   )r  splitr   r   r'   r   r   rq   s     r   	visit_rawzManualPageTranslator.visit_raw  s@    2.4466IIT[[]+nnr   c                "    t         j                  r   r   rq   s     r   
visit_metazManualPageTranslator.visit_meta  r   r   c                     y r   r6   rq   s     r   visit_inlinez!ManualPageTranslator.visit_inline  rs   r   c                     y r   r6   rq   s     r   depart_inlinez"ManualPageTranslator.depart_inline  rs   r   c                     y r   r6   rq   s     r   
visit_mathzManualPageTranslator.visit_math  rs   r   c                     y r   r6   rq   s     r   depart_mathz ManualPageTranslator.depart_math  rs   r   c                &    | j                  |       y r   )r  rq   s     r   visit_math_blockz%ManualPageTranslator.visit_math_block  s    D!r   c                &    | j                  |       y r   )r  rq   s     r   depart_math_blockz&ManualPageTranslator.depart_math_block  r   r   )r!   rN   r   r   r+   r,   )r+   str)rK   r   r+   r,   )\r-   r.   r/   rO   rQ   __annotations__r   ro   rr   ru   rx   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%  r.  r1  r4  r6  r8  r;  r>  rB  rG  rJ  rL  rN  rP  rU  rW  rY  r[  r`  rb  rd  rf  rh  rj  rl  rn  r0   r1   s   @r   r$   r$   H   s     "Hn!F@$)*$%!!()
#$%%
"/%2&
'&%&)*'('(())*
"#r   r$   N)&rO   
__future__r   collections.abcr   typingr   r   r   docutilsr   docutils.writers.manpager	   BaseTranslatorr
   sphinxr   sphinx.localer   r   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.i18nr   sphinx.util.nodesr   docutils.nodesr   sphinx.buildersr   	getLoggerr-   loggerr   r    r$   r6   r   r   <module>r     sq    ; " $ + +  A +  -  1 ( )&'			8	$,v ,- ->Q#+^ Q#r   