
    Fe                    *   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rddl!m"Z" ddl#m$Z$  ejJ                  e&      Z' G d de      Z(ddZ)ddZ*y)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)Sphinx)Configc                      e Zd ZU dZdZdZ ed      ZeZ	g Z
ded<   ddZddZddd	Z e ed
            dd       ZddZy)ManualPageBuilderz4
    Builds groff output in manual page format.
    manz#The manual pages are in %(outdir)s.z	list[str]supported_image_typesc                n    | j                   j                  st        j                  t	        d             y y )NzBno "man_pages" config value found; no manual pages will be written)config	man_pagesloggerwarningr   selfs    9/usr/lib/python3/dist-packages/sphinx/builders/manpage.pyinitzManualPageBuilder.init(   s,    {{$$NN2 0 1 2 %    c                     y)Nzall manpages r   s    r!   get_outdated_docsz#ManualPageBuilder.get_outdated_docs-   s    r#   Nc                     y)N r%   )r    docnametyps      r!   get_target_uriz ManualPageBuilder.get_target_uri0   s    r#   writingc           	        t        |       }t        j                         5  t        j                  dt               t        | j                  j                  |fd      j                         }d d d        | j                  j                  D ]  }|\  }}}}}	|| j                  j                  vr t        j                  t        d      |       Dt        |t               r|r|g}ng }|_        ||_        ||_        |	|_        | j                  j*                  r9d|	z  }
t-        t/        j0                  | j2                  |
             |
 d| d|	 }n| d|	 }t        j5                  t7        |      d	z   d
       t9        t/        j0                  | j2                  |      d      }| j                  j;                  |      }t=               }t?        | |||t6        |g      }||_        t        j5                  dd
       | j                  jA                  |||        |jC                  tD        jF                        D ]  }|jI                  |jJ                          |jM                  ||        y # 1 sw Y   xY w)Nignore)categoryT)defaults
componentsread_config_filesz7"man_pages" config value references unknown document %szman%s/.z { )nonlzutf-8)destination_pathencodingz} )'r   warningscatch_warningsfilterwarningsDeprecationWarningr   envsettingsget_default_valuesr   r   all_docsr   r   r   
isinstancestr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    ignored	docwriterdocsettingsrI   r)   namedescriptionrD   rE   dirname
targetnamedestinationtreedocnames	largetreependingnodes                    r!   rQ   zManualPageBuilder.write3   s8   $T*	$$& 	=##H7IJ  ,**%<"& ( );(:(< 		= KK)) (	4D;?8GT;dhh///r #0  129;'3'&iG G $K#.K ")K")K{{55!G+$))DKK9: 'y$q	:
 $vQwi0
KK	*-5DKA$!%4;;
!C "K 88''0D!$H+D(GT,5yBI!,IKK4K(HH''	7DA(001F1FG ?(()=)=>? OOI{3Q(	4	= 	=s   AI11I;c                     y Nr%   r   s    r!   finishzManualPageBuilder.finishi   s    r#   )returnNone)ra   zstr | list[str]r_   )r)   rA   r*   z
str | Nonera   rA   )rR   r   ra   rb   )__name__
__module____qualname____doc__rU   formatr   epilogr   default_translator_classr   __annotations__r"   r&   r+   r   rQ   r`   r%   r#   r!   r   r      sa     DF56F3')9)2
 bm$34 %34jr#   r   c                    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   filenames     r!   default_man_pagesrs   m   sJ    )&..9H__h6>>*:!FNN;K(Lmm_a! " "r#   c                    | j                  t               | j                  dt        d       | j                  ddd       | j                  ddd       ddddS )Nr   Fman_show_urlsrF   builtinT)versionparallel_read_safeparallel_write_safe)add_builderr   add_config_valuers   )apps    r!   setupr}   t   s\    OO%&&7?%75ueD "# r#   )r   r   ra   z*list[tuple[str, str, str, list[str], int]])r|   r   ra   zdict[str, Any])+rf   
__future__r   r8   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   sphinx.applicationr   sphinx.configr   	getLoggerrc   r   r   rs   r}   r%   r#   r!   <module>r      si     "   % * "  #   ) 0 1 D I)$			8	$M M`"r#   