B
    \                 @   s   d 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 ddlmZ ddlmZmZ eeZG dd deZ dd Z!dS )z
    sphinx.builders.manpage
    ~~~~~~~~~~~~~~~~~~~~~~~

    Manual pages builder.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )path)OptionParser)
FileOutput)string_types)addnodes)Builder)NoUri)__)logging)bold	darkgreen)inline_all_toctrees)make_filename)ManualPageWriterManualPageTranslatorc               @   sR   e Zd ZdZdZdZedZeZ	g Z
dd Zdd Zdd	d
Zdd Zdd ZdS )ManualPageBuilderz4
    Builds groff output in manual page format.
    Zmanz#The manual pages are in %(outdir)s.c             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   6lib/python3.7/site-packages/sphinx/builders/manpage.pyinit0   s    zManualPageBuilder.initc             C   s   dS )Nzall manpagesr   )r   r   r   r   get_outdated_docs6   s    z#ManualPageBuilder.get_outdated_docsNc             C   s   |dkrdS t d S )Ntoken )r   )r   docnametypr   r   r   get_target_uri:   s    z ManualPageBuilder.get_target_uric             G   sr  t | }t| jj|fdd }tjttddd x*| j	j
D ]}|\}}}}}	|| jjkrtttd| qBt|tr|r|g}ng }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 qW ||_||j_||j_||j_|	|j_ |!|| qBW td d S )NT)defaultsZ
componentsZread_config_fileszwriting... )Znonlz7"man_pages" config value references unknown document %sz%s.%sz { zutf-8)Zdestination_pathencodingz} r   )"r   r   envZsettingsZget_default_valuesr   infor   r	   r   r   Zall_docsr   
isinstancer   r   r   r   joinZoutdirZget_doctreesetr   Zresolve_referencesZtraverser   Zpending_xrefZreplace_selfZchildrentitleZsubtitleauthorssectionwrite)r   ZignoredZ	docwriterZdocsettingsr#   r   nameZdescriptionr(   r)   Z
targetnameZdestinationZtreeZdocnamesZ	largetreeZpendingnoder   r   r   r*   @   sH    



zManualPageBuilder.writec             C   s   d S )Nr   )r   r   r   r   finisho   s    zManualPageBuilder.finish)N)__name__
__module____qualname____doc__r+   formatr	   Zepilogr   Zdefault_translator_classZsupported_image_typesr   r   r   r*   r,   r   r   r   r   r   %   s   
/r   c             C   s6   |  t | ddd d  | ddd  ddddS )	Nr   c             S   s(   | j t| j d| j| jf g dfgS )Nz%s %s   )Z
master_docr   Zprojectlowerrelease)r   r   r   r   <lambda>y   s   zsetup.<locals>.<lambda>Zman_show_urlsFZbuiltinT)versionZparallel_read_safeZparallel_write_safe)Zadd_builderr   Zadd_config_value)Zappr   r   r   setupt   s    
r7   N)"r0   osr   Zdocutils.frontendr   Zdocutils.ior   Zsixr   Zsphinxr   Zsphinx.buildersr   Zsphinx.environmentr   Zsphinx.localer	   Zsphinx.utilr
   Zsphinx.util.consoler   r   Zsphinx.util.nodesr   Zsphinx.util.osutilr   Zsphinx.writers.manpager   r   Z	getLoggerr-   r   r   r7   r   r   r   r   <module>
   s    
O