o
    Ni                     @  s&  d Z ddlmZ ddl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 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 ddlmZm Z  erzddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( e)e*Z+G dd deZ,d"ddZ-d#d d!Z.dS )$zManual pages builder.    )annotationsN)path)TYPE_CHECKINGAny)OptionParser)
FileOutput)addnodes)Builder)__)logging)	darkgreen)progress_message)inline_all_toctrees)	ensuredirmake_filename_from_project)ManualPageTranslatorManualPageWriter)Set)Sphinx)Config)ExtensionMetadatac                   @  sr   e Zd ZU dZdZdZedZeZ	g Z
ded< ddd	ZdddZddddZeeddddZdddZdS ) ManualPageBuilderz4
    Builds groff output in manual page format.
    manz#The manual pages are in %(outdir)s.z	list[str]supported_image_typesreturnNonec                 C  s   | j jsttd d S d S )NzBno "man_pages" config value found; no manual pages will be written)config	man_pagesloggerwarningr
   self r"   K/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/manpage.pyinit,   s   zManualPageBuilder.initstr | list[str]c                 C     dS )Nzall manpagesr"   r    r"   r"   r#   get_outdated_docs5      z#ManualPageBuilder.get_outdated_docsNdocnamestrtyp
str | Nonec                 C  r&   )N r"   )r!   r)   r+   r"   r"   r#   get_target_uri8   r(   z ManualPageBuilder.get_target_uriwriting	_docnamesSet[str]c                 C  s  t | }t  tjdtd t| jj|fdd }W d    n1 s&w   Y  | j	j
D ]}|\}}}}}	|| jjvrGttd| q/t|trT|rR|g}ng }||_||_||_|	|_| j	jr|d|	 }
tt| j|
 |
 d| d|	 }n| d|	 }tt|d	  tt| j|d
d}| j|}t }t| |||t|g}||_tjddd | j |||  |!t"j#D ]}|$|j% q|&|| q/d S )Nignore)categoryT)defaults
componentsread_config_filesz7"man_pages" config value references unknown document %szman%s/.z { zutf-8)destination_pathencodingz} )nonl)'r   warningscatch_warningsfilterwarningsDeprecationWarningr   envsettingsget_default_valuesr   r   all_docsr   r   r
   
isinstancer*   titlesubtitleauthorssectionman_make_section_directoryr   r   joinoutdirinfor   r   get_doctreesetr   resolve_referencesfindallr   pending_xrefreplace_selfchildrenwrite)r!   r0   	docwriterdocsettingsrL   r)   namedescriptionrG   rH   dirname
targetnamedestinationtreedocnames	largetreependingnoder"   r"   r#   write_documents;   s`   


z!ManualPageBuilder.write_documentsc                 C  s   d S Nr"   r    r"   r"   r#   finishu   r(   zManualPageBuilder.finish)r   r   )r   r%   ra   )r)   r*   r+   r,   r   r*   )r0   r1   r   r   )__name__
__module____qualname____doc__rW   formatr
   epilogr   default_translator_classr   __annotations__r$   r'   r.   r   r`   rb   r"   r"   r"   r#   r       s   
 

	
9r   r   r   r   *list[tuple[str, str, str, list[str], int]]c                 C  s.   t | j}| j|| j d| j | jgdfgS )z"Better default man_pages settings.    )r   projectroot_docreleaseauthor)r   filenamer"   r"   r#   default_man_pagesy   s   
rs   appr   r   c                 C  s@   |  t | dtd | ddd | ddd ddddS )	Nr   r-   man_show_urlsFrI   builtinT)versionparallel_read_safeparallel_write_safe)add_builderr   add_config_valuers   )rt   r"   r"   r#   setup   s   
r|   )r   r   r   rk   )rt   r   r   r   )/rf   
__future__r   r<   osr   typingr   r   docutils.frontendr   docutils.ior   sphinxr   sphinx.buildersr	   sphinx.localer
   sphinx.utilr   sphinx.util.consoler   sphinx.util.displayr   sphinx.util.nodesr   sphinx.util.osutilr   r   sphinx.writers.manpager   r   collections.abcr   sphinx.applicationr   sphinx.configr   sphinx.util.typingr   	getLoggerrc   r   r   rs   r|   r"   r"   r"   r#   <module>   s2    

Y