U
    \Sh                     @  s  d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ 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$e%Z&G dd deZ'dddddZ(dddddZ)dS )zManual pages builder.    )annotationsN)path)Any)OptionParser)
FileOutput)addnodes)Sphinx)Builder)Config)__)logging)	darkgreen)progress_message)inline_all_toctrees)	ensuredirmake_filename_from_project)ManualPageTranslatorManualPageWriterc                   @  s   e Zd ZU dZdZdZedZeZ	g Z
ded< dddd	Zd
dddZdddddddZeeddddddZd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None)returnc                 C  s   | j jsttd d S )NzBno "man_pages" config value found; no manual pages will be written)config	man_pagesloggerwarningr   self r   J/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/builders/manpage.pyinit&   s    zManualPageBuilder.initzstr | list[str]c                 C  s   dS )Nzall manpagesr   r   r   r   r    get_outdated_docs+   s    z#ManualPageBuilder.get_outdated_docsNstrz
str | None)docnametypr   c                 C  s   dS )N r   )r   r$   r%   r   r   r    get_target_uri.   s    z ManualPageBuilder.get_target_uriwritingr   )ignoredr   c              	   G  s  t | }t , tjdtd t| jj|fdd }W 5 Q R X | j	j
D ]J}|\}}}}}	|| jjkr|ttd| qJt|tr|r|g}ng }||_||_||_|	|_| j	jrd|	 }
tt| j|
 |
 d| d|	 }n| d|	 }tjt|d	 dd
 tt| j|dd}| j|}t }t| |||t|g}||_tjddd
 | j |||  |!t"j#D ]}|$|j% qv|&|| qJd S )Nignore)categoryT)defaults
componentsZread_config_filesz7"man_pages" config value references unknown document %szman%s/.z { )Znonlzutf-8)Zdestination_pathencodingz} )'r   warningscatch_warningsfilterwarningsDeprecationWarningr   envsettingsget_default_valuesr   r   Zall_docsr   r   r   
isinstancer#   titlesubtitleauthorssectionman_make_section_directoryr   r   joinZoutdirinfor   r   Zget_doctreesetr   Zresolve_referencesfindallr   Zpending_xrefZreplace_selfchildrenwrite)r   r)   Z	docwriterZdocsettingsr?   r$   namedescriptionr;   r<   dirnameZ
targetnameZdestinationtreeZdocnamesZ	largetreeZpendingnoder   r   r    rC   1   sZ    



 zManualPageBuilder.writec                 C  s   d S )Nr   r   r   r   r    finishg   s    zManualPageBuilder.finish)N)__name__
__module____qualname____doc__rD   formatr   epilogr   Zdefault_translator_classr   __annotations__r!   r"   r'   r   rC   rH   r   r   r   r    r      s   

5r   r
   z*list[tuple[str, str, str, list[str], int]])r   r   c                 C  s.   t | j}| j|| j d| j | jgdfgS )z$ Better default man_pages settings.     )r   projectZroot_docreleaseauthor)r   filenamer   r   r    default_man_pagesk   s
    
 rV   r   zdict[str, Any])appr   c                 C  s@   |  t | dtd | ddd | ddd ddddS )Nr   FZman_show_urlsr=   builtinT)versionZparallel_read_safeZparallel_write_safe)Zadd_builderr   Zadd_config_valuerV   )rW   r   r   r    setupr   s    
rZ   )*rL   
__future__r   r1   osr   typingr   Zdocutils.frontendr   Zdocutils.ior   Zsphinxr   Zsphinx.applicationr   Zsphinx.buildersr	   Zsphinx.configr
   Zsphinx.localer   Zsphinx.utilr   Zsphinx.util.consoler   Zsphinx.util.displayr   Zsphinx.util.nodesr   Zsphinx.util.osutilr   r   Zsphinx.writers.manpager   r   	getLoggerrI   r   r   rV   rZ   r   r   r   r    <module>   s*   
P