o
    Ni?                     @  s   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 e!Z"G dd deZ#G dd dZ$G dd deeZ%dS )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                      s(   e Zd Zd	 fddZd
ddZ  ZS )ManualPageWriterbuilderr   returnNonec                   s   t    || _d S N)super__init__r   )selfr   	__class__ J/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/writers/manpage.pyr      s   

zManualPageWriter.__init__c                 C  sL   t | j}|  | j| j| j}tt|| _| j| | j	 | _
d S r   )NestedInlineTransformdocumentapplyr   create_translatorr   ManualPageTranslatorvisitor	walkaboutastextoutput)r   	transformr$   r   r   r   	translate    s   
zManualPageWriter.translate)r   r   r   r   )r   r   )__name__
__module____qualname__r   r)   __classcell__r   r   r   r   r      s    r   c                   @  s$   e Zd ZdZdddZdd
dZdS )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>
    r    nodes.documentr   r   c                 C  s
   || _ d S r   )r    )r   r    r   r   r   r   5      
zNestedInlineTransform.__init__kwargsr   c                   s   t tjtjtj t | jD ]N}t fdd|D r_|j	
|}tt|D ]*}||  |r?|j	|d | q*|jdd|fi |j}|j	|d | q*t|s_|j	| qd S )Nc                 3  s    | ]} |V  qd S r   r   ).0subnodematcherr   r   	<genexpr>;       z.NestedInlineTransform.apply.<locals>.<genexpr>    )r   r   literalemphasisstronglistfindallr    anyparentindexreversedremoveinsertr   
attributeslen)r   r0   nodeposr2   newnoder   r3   r   r!   8   s   
zNestedInlineTransform.applyN)r    r.   r   r   )r0   r   r   r   )r*   r+   r,   __doc__r   r!   r   r   r   r   r   )   s    
r   c                      s  e Zd ZU dZi Zded< d fd
dZdddZdddZdddZ	dddZ
dddZdddZdddZdddZddd Zdd!d"Zdd#d$Zdd%d&Zdd'd(Zdd)d*Zdd+d,Zdd-d.Zdd/d0Zdd1d2Zdd3d4Zdd5d6Zdd7d8Zdd9d:Zdd;d<Zdd=d>Zdd?d@ZddAdBZ ddCdDZ!ddEdFZ"ddGdHZ#ddIdJZ$ddKdLZ%ddMdNZ&ddOdPZ'ddQdRZ(ddSdTZ)d fdUdVZ*ddWdXZ+d fdYdZZ,dd[d\Z-dd]d^Z.dd_d`Z/ddadbZ0ddcddZ1ddedfZ2ddgdhZ3ddidjZ4ddkdlZ5ddmdnZ6ddodpZ7ddqdrZ8ddsdtZ9ddudvZ:ddwdxZ;ddydzZ<dd{d|Z=dd}d~Z>dddZ?dddZ@dddZAdddZBdddZCdddZDdddZEdddZFdddZGdddZHdddZIdddZJdddZKdddZLdddZMdddZNd fddZOd fddZPd fddZQd fddZRdddZSdddZTdddZUdddZVdddZWdddZXdddZYdddZZ  Z[S )r#   z%
    Custom man page translator.
    zdict[str, Any]_docinfor    r.   r   r   r   r   c                   s   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d< | jjrC| jj| jd< n| jjpJtd	}t|| jjd
| jd< | jj| jd< | jj| jd< | jj| jd< t D ]\}}| || jj|< qod S )Nr   titlesubtitleauthormanual_sectiontitle_upperdatez	%b %d, %Y)language	copyrightversionmanual_group)r   r   in_productionlistsection_levelsettingsrL   rJ   rM   authorssectionupperconfigtoday	today_fmtr   r   rR   rS   rT   projectr   items	deunicodelabels)r   r    r   r^   labeltranslationr   r   r   r   P   s*   zManualPageTranslator.__init__strc                 C  s    d}| j d r|d7 }|| j  S )NzW.TH "%(title_upper)s" "%(manual_section)s" "%(date)s" "%(version)s" "%(manual_group)s"
rM   z#.SH NAME
%(title)s \- %(subtitle)s
)rJ   )r   tmplr   r   r   headerr   s
   

zManualPageTranslator.headerrF   r   c                 C     d S r   r   r   rF   r   r   r   visit_start_of_file{      z(ManualPageTranslator.visit_start_of_filec                 C  rh   r   r   ri   r   r   r   depart_start_of_file~   rk   z)ManualPageTranslator.depart_start_of_filec                 C     |  | d S r   )visit_definition_listri   r   r   r   
visit_desc      zManualPageTranslator.visit_descc                 C  rm   r   )depart_definition_listri   r   r   r   depart_desc   rp   z ManualPageTranslator.depart_descc                 C  s   |  | | | d S r   )visit_definition_list_item
visit_termri   r   r   r   visit_desc_signature   s   
z)ManualPageTranslator.visit_desc_signaturec                 C  rm   r   )depart_termri   r   r   r   depart_desc_signature   rp   z*ManualPageTranslator.depart_desc_signaturec                 C  rh   r   r   ri   r   r   r   visit_desc_signature_line   rk   z.ManualPageTranslator.visit_desc_signature_linec                 C     | j d d S )N bodyappendri   r   r   r   depart_desc_signature_line      z/ManualPageTranslator.depart_desc_signature_linec                 C  rm   r   )visit_definitionri   r   r   r   visit_desc_content   rp   z'ManualPageTranslator.visit_desc_contentc                 C  rm   r   )depart_definitionri   r   r   r   depart_desc_content   rp   z(ManualPageTranslator.depart_desc_contentc                 C  rh   r   r   ri   r   r   r   visit_desc_inline   rk   z&ManualPageTranslator.visit_desc_inlinec                 C  rh   r   r   ri   r   r   r   depart_desc_inline   rk   z'ManualPageTranslator.depart_desc_inlinec                 C  rh   r   r   ri   r   r   r   visit_desc_name   rk   z$ManualPageTranslator.visit_desc_namec                 C  rh   r   r   ri   r   r   r   depart_desc_name   rk   z%ManualPageTranslator.depart_desc_namec                 C  rh   r   r   ri   r   r   r   visit_desc_addname   rk   z'ManualPageTranslator.visit_desc_addnamec                 C  rh   r   r   ri   r   r   r   depart_desc_addname   rk   z(ManualPageTranslator.depart_desc_addnamec                 C  rh   r   r   ri   r   r   r   visit_desc_type   rk   z$ManualPageTranslator.visit_desc_typec                 C  rh   r   r   ri   r   r   r   depart_desc_type   rk   z%ManualPageTranslator.depart_desc_typec                 C  ry   )Nz -> r{   ri   r   r   r   visit_desc_returns   r   z'ManualPageTranslator.visit_desc_returnsc                 C  rh   r   r   ri   r   r   r   depart_desc_returns   rk   z(ManualPageTranslator.depart_desc_returnsc                 C     | j d d| _d S )N(r7   r|   r}   first_paramri   r   r   r   visit_desc_parameterlist      
z-ManualPageTranslator.visit_desc_parameterlistc                 C  ry   )N)r{   ri   r   r   r   depart_desc_parameterlist   r   z.ManualPageTranslator.depart_desc_parameterlistc                 C  r   )N[r7   r   ri   r   r   r   visit_desc_type_parameter_list   r   z3ManualPageTranslator.visit_desc_type_parameter_listc                 C  ry   N]r{   ri   r   r   r   depart_desc_type_parameter_list   r   z4ManualPageTranslator.depart_desc_type_parameter_listc                 C  s    | j s| jd d S d| _ d S )N, r   )r   r|   r}   ri   r   r   r   visit_desc_parameter   s   
z)ManualPageTranslator.visit_desc_parameterc                 C  rh   r   r   ri   r   r   r   depart_desc_parameter   rk   z*ManualPageTranslator.depart_desc_parameterc                 C  rm   r   )r   ri   r   r   r   visit_desc_type_parameter   rp   z.ManualPageTranslator.visit_desc_type_parameterc                 C  rm   r   )r   ri   r   r   r   depart_desc_type_parameter   rp   z/ManualPageTranslator.depart_desc_type_parameterc                 C  ry   )Nr   r{   ri   r   r   r   visit_desc_optional   r   z(ManualPageTranslator.visit_desc_optionalc                 C  ry   r   r{   ri   r   r   r   depart_desc_optional   r   z)ManualPageTranslator.depart_desc_optionalc                 C  rh   r   r   ri   r   r   r   visit_desc_annotation   rk   z*ManualPageTranslator.visit_desc_annotationc                 C  rh   r   r   ri   r   r   r   depart_desc_annotation   rk   z+ManualPageTranslator.depart_desc_annotationc                 C  rm   r   )visit_paragraphri   r   r   r   visit_versionmodified   rp   z*ManualPageTranslator.visit_versionmodifiedc                 C  rm   r   )depart_paragraphri   r   r   r   depart_versionmodified   rp   z+ManualPageTranslator.depart_versionmodifiedc                   s0   t |tjr| jd d S t | d S N
)r>   r=   r   r;   r|   r}   r   rt   ri   r   r   r   rt      s   zManualPageTranslator.visit_termc                 C     t jr   r   SkipNoderi   r   r   r   visit_comment      z"ManualPageTranslator.visit_commentc                   s   |    t | d S r   )
ensure_eolr   visit_footnoteri   r   r   r   r         z#ManualPageTranslator.visit_footnotec                 C  s`   |    t|dkr(| dtdfv r(| jd| |   d  tj	| jd d S )Nr7   	Footnotes.SH r   .sp
)
r   rE   r&   r   r|   r}   ra   r[   r   r   ri   r   r   r   visit_rubric  s
    "z!ManualPageTranslator.visit_rubricc                 C  ry   r   r{   ri   r   r   r   depart_rubric  r   z"ManualPageTranslator.depart_rubricc                 C  s   |  |d d S )Nseealso)visit_admonitionri   r   r   r   visit_seealso  r   z"ManualPageTranslator.visit_seealsoc                 C  rm   r   )depart_admonitionri   r   r   r   depart_seealso  rp   z#ManualPageTranslator.depart_seealsoc                 C  s  |    |  jd7  _| jd tttj |}dd |D }tdd |D }d }|D ]N}|d r`|d 	|}| j| j
d d  | j| | | j| j
d d  | jd	 n|d urp| jd
dt|   ||  | jd q-| jd |  jd8  _tj)Nr7   z.sp
.nf
c                 s  s    | ]}|d  V  qdS )	tokennameNr   )r1   
productionr   r   r   r5     r6   z<ManualPageTranslator.visit_productionlist.<locals>.<genexpr>c                 s  s    | ]}t |V  qd S r   )rE   )r1   namer   r   r   r5     r6   r   r;   r   z ::= z%s     rz   r   z
.fi
)r   rV   r|   r}   r   r   r
   r   maxljustdefsra   rE   r%   r   r   )r   rF   productionlistnamesmaxlenlastnamer   r   r   r   visit_productionlist  s*   
z)ManualPageTranslator.visit_productionlistc                 C  rh   r   r   ri   r   r   r   visit_production+  rk   z%ManualPageTranslator.visit_productionc                 C  rh   r   r   ri   r   r   r   depart_production.  rk   z&ManualPageTranslator.depart_productionc                 C  s@   d|j v r| jtd|d  d  | jtdd  tj)Naltz[image: %s]r   z[image])rD   r|   r}   r   r   r   ri   r   r   r   visit_image2  s   
z ManualPageTranslator.visit_imagec                 C  s   | dd}|d}|r| jd| d | j| jd d  | | | j| jd d  |r]|d	s]| jjr]| |kr]|	d
}| j
d| jd d || jd d dg |re| jd tj)Nrefurir8   )mailto:zhttp:zhttps:zftp:z\X'tty: link '	referencer   r7   #r   z <r;   >z\X'tty: link')get
startswithr|   r}   r   
visit_Textr\   man_show_urlsr&   removeprefixextendr   r   )r   rF   uriis_safe_to_clickr   r   r   visit_reference9  s(   


z$ManualPageTranslator.visit_referencec                 C  s"   t |dd}| | t j)NrL   r   )r   Textr   r   r   )r   rF   textr   r   r   visit_number_referenceV  s   
z+ManualPageTranslator.visit_number_referencec                 C  s   |    | jd d S )Nz.sp
.ce
)r   r|   r}   ri   r   r   r   visit_centered[  r   z#ManualPageTranslator.visit_centeredc                 C  ry   )Nz
.ce 0
r{   ri   r   r   r   depart_centered_  r   z$ManualPageTranslator.depart_centeredc                 C  rh   r   r   ri   r   r   r   visit_compact_paragraphb  rk   z,ManualPageTranslator.visit_compact_paragraphc                 C  rh   r   r   ri   r   r   r   depart_compact_paragraphe  rk   z-ManualPageTranslator.depart_compact_paragraphc                 C  rh   r   r   ri   r   r   r   visit_download_referenceh  rk   z-ManualPageTranslator.visit_download_referencec                 C  rh   r   r   ri   r   r   r   depart_download_referencek  rk   z.ManualPageTranslator.depart_download_referencec                 C  r   r   r   ri   r   r   r   visit_toctreen  r   z"ManualPageTranslator.visit_toctreec                 C  r   r   r   ri   r   r   r   visit_indexq  r   z ManualPageTranslator.visit_indexc                 C  r   r   r   ri   r   r   r   visit_tabular_col_spect  r   z+ManualPageTranslator.visit_tabular_col_specc                 C  rh   r   r   ri   r   r   r   visit_glossaryw  rk   z#ManualPageTranslator.visit_glossaryc                 C  rh   r   r   ri   r   r   r   depart_glossaryz  rk   z$ManualPageTranslator.depart_glossaryc                 C  sz   t tj|d }t ttj |}|   t tj|d }t ttj |}| jddd |D d  | jd tj	)Nr   r   c                 s  s    | ]}|  V  qd S r   )r&   )r1   nr   r   r   r5     r6   z2ManualPageTranslator.visit_acks.<locals>.<genexpr>.r   )
r   r   bullet_listr   	list_itemr   r|   r}   joinr   )r   rF   r   
list_itemsr   r   r   
visit_acks}  s    zManualPageTranslator.visit_acksc                 C  rm   r   )visit_bullet_listri   r   r   r   visit_hlist  rp   z ManualPageTranslator.visit_hlistc                 C  rm   r   )depart_bullet_listri   r   r   r   depart_hlist  rp   z!ManualPageTranslator.depart_hlistc                 C  rh   r   r   ri   r   r   r   visit_hlistcol  rk   z#ManualPageTranslator.visit_hlistcolc                 C  rh   r   r   ri   r   r   r   depart_hlistcol  rk   z$ManualPageTranslator.depart_hlistcolc                 C  
   |  |S r   )visit_emphasisri   r   r   r   visit_literal_emphasis  r/   z+ManualPageTranslator.visit_literal_emphasisc                 C  r   r   )depart_emphasisri   r   r   r   depart_literal_emphasis  r/   z,ManualPageTranslator.depart_literal_emphasisc                 C  r   r   visit_strongri   r   r   r   visit_literal_strong  r/   z)ManualPageTranslator.visit_literal_strongc                 C  r   r   depart_strongri   r   r   r   depart_literal_strong  r/   z*ManualPageTranslator.depart_literal_strongc                 C  rh   r   r   ri   r   r   r   visit_abbreviation  rk   z'ManualPageTranslator.visit_abbreviationc                 C  rh   r   r   ri   r   r   r   depart_abbreviation  rk   z(ManualPageTranslator.depart_abbreviationc                 C  r   r   r   ri   r   r   r   visit_manpage  r/   z"ManualPageTranslator.visit_manpagec                 C  r   r   r   ri   r   r   r   depart_manpage  r/   z#ManualPageTranslator.depart_manpagec                   :   t |jtjr|jdr| jd d S t | d S )Nliteral_blockr   )	
isinstancer?   r   	containerr   r|   r}   r   visit_captionri   r   r   r   r       
z"ManualPageTranslator.visit_captionc                   r  )Nr  r   )	r  r?   r   r  r   r|   r}   r   depart_captionri   r   r   r   r
    r	  z#ManualPageTranslator.depart_captionc                   sz   t |jtjr| jd d S t |jtjr7| jdkrtj	| jdkr7| jd| 
|   d tj	t |S )Nz.IP "r   r7   r   r   )r  r?   r
   r   r|   r}   r   rZ   rW   r   ra   r&   r[   r   visit_titleri   r   r   r   r    s   

"z ManualPageTranslator.visit_titlec                   s*   t |jtjr| jd d S t |S )Nz"
)r  r?   r
   r   r|   r}   r   depart_titleri   r   r   r   r    s   z!ManualPageTranslator.depart_titlec                 C  s*   d| dd v r| j|  tj)Nmanpageformatr8   )r   splitr|   r}   r&   r   r   ri   r   r   r   	visit_raw  s   zManualPageTranslator.visit_rawc                 C  r   r   r   ri   r   r   r   
visit_meta  r   zManualPageTranslator.visit_metac                 C  rh   r   r   ri   r   r   r   visit_inline  rk   z!ManualPageTranslator.visit_inlinec                 C  rh   r   r   ri   r   r   r   depart_inline  rk   z"ManualPageTranslator.depart_inlinec                 C  rh   r   r   ri   r   r   r   
visit_math  rk   zManualPageTranslator.visit_mathc                 C  rh   r   r   ri   r   r   r   depart_math  rk   z ManualPageTranslator.depart_mathc                 C  rm   r   )r   ri   r   r   r   visit_math_block  rp   z%ManualPageTranslator.visit_math_blockc                 C  rm   r   )r   ri   r   r   r   depart_math_block  rp   z&ManualPageTranslator.depart_math_block)r    r.   r   r   r   r   )r   re   )rF   r   r   r   )\r*   r+   r,   rI   rJ   __annotations__r   rg   rj   rl   ro   rr   ru   rw   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   rt   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#   I   s   
 
"
	





































































	







r#   N)&rI   
__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#   r   r   r   r   <module>   s(    
 