B
    .Kc                 @   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.
    Z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!   6lib/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_uriZ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)defaultsZ
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
   envZsettingsZget_default_valuesr   r   Zall_docsr   r   r   
isinstancestrtitleZsubtitleauthorssectionman_make_section_directoryr   r   joinZoutdirinfor   r   Zget_doctreesetr   Zresolve_referencesfindallr   Zpending_xrefZreplace_selfZchildrenwrite)r    r)   Z	docwriterZdocsettingsr:   r%   namedescriptionr6   r7   dirnameZ
targetnameZdestinationZtreeZdocnamesZ	largetreeZpendingnoder!   r!   r"   r=   .   sP    




zManualPageBuilder.writec             C   s   d S )Nr!   )r    r!   r!   r"   finishd   s    zManualPageBuilder.finish)N)__name__
__module____qualname____doc__r>   formatr   epilogr   Zdefault_translator_classr   r   r4   __annotations__r#   r	   r$   r   r(   r   r   r=   rA   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   ZprojectZroot_docreleaseZauthor)r   filenamer!   r!   r"   default_man_pagesh   s    
rL   )appr   c             C   s@   |  t | dtd | ddd | ddd ddddS )Nr   FZman_show_urlsr8   ZbuiltinT)versionZparallel_read_safeZparallel_write_safe)Zadd_builderr   Zadd_config_valuerL   )rM   r!   r!   r"   setupo   s    
rO   )/rE   r.   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   Z	getLoggerrB   r   r   r4   intrL   rO   r!   r!   r!   r"   <module>   s&   $
P&