B
    d                 @   s4  d Z ddlZddlmZ ddlmZmZmZmZ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 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"m#Z# ddl$m%Z%m&Z& e'e(Z)G dd deZ*eee
e+e+e+ee+ e,f  dddZ-eee+ef dddZ.dS )zManual pages builder.    N)path)AnyDictListOptionalSetTupleUnion)OptionParser)
FileOutput)addnodes)Sphinx)Builder)Config)__)loggingprogress_message)	darkgreen)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
ee ed< ddddZeeee f dd	d
Zdeee edddZeede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.supported_image_typesN)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"   d/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sphinx/builders/manpage.pyinit#   s    zManualPageBuilder.initc             C   s   dS )Nzall manpagesr"   )r!   r"   r"   r#   get_outdated_docs(   s    z#ManualPageBuilder.get_outdated_docs)docnametypr   c             C   s   dS )N r"   )r!   r&   r'   r"   r"   r#   get_target_uri+   s    z ManualPageBuilder.get_target_uriwriting)ignoredr   c          	   G   s  t | }t , tjdtd t| jj|fdd }W d Q R X xT| j	j
D ]F}|\}}}}}	|| jjkrttd| qNt|tr|r|g}ng }||_||_||_|	|_| j	jrd|	 }
tt| j|
 d|
||	f }nd||	f }tjt|d	 dd
 tt| j|dd}| j|}t }t| |||t|g}||_tjddd
 | j |||  x"|!t"j#D ]}|$|j% qtW |&|| qNW d S )Nignore)categoryT)defaults
componentsZread_config_filesz7"man_pages" config value references unknown document %szman%sz%s/%s.%sz%s.%sz { )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   
isinstancestr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
targetnamedestinationtreeZdocnamesZ	largetreeZpendingnoder"   r"   r#   rD   .   sP    




zManualPageBuilder.writec             C   s   d S )Nr"   )r!   r"   r"   r#   finishd   s    zManualPageBuilder.finish)N)__name__
__module____qualname____doc__rE   formatr   epilogr   Zdefault_translator_classr   r   r9   __annotations__r$   r	   r%   r   r)   r   r   rD   rJ   r"   r"   r"   r#   r      s   

5r   )r   r   c             C   s,   t | j}| j|d| j| jf | jgdfgS )z$ Better default man_pages settings. z%s %s   )r   projectZroot_docreleaseauthor)r   filenamer"   r"   r#   default_man_pagesh   s    
rW   )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_valuerW   )rX   r"   r"   r#   setupo   s    
r[   )/rN   r1   osr   typingr   r   r   r   r   r   r	   Zdocutils.frontendr
   Zdocutils.ior   Zsphinxr   Zsphinx.applicationr   Zsphinx.buildersr   Zsphinx.configr   Zsphinx.localer   Zsphinx.utilr   r   Zsphinx.util.consoler   Zsphinx.util.nodesr   Zsphinx.util.osutilr   r   Zsphinx.writers.manpager   r   	getLoggerrK   r   r   r9   intrW   r[   r"   r"   r"   r#   <module>   s&   $
P&