
U|#                 @   s`  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l Z Wn e k
 r| d  d l	 Z Yn XyD d  d l
 m Z d  d l
 m Z d  d l
 m Z d  d l
 m Z Wn7 e k
 r Z z e e e    WYd d Z [ Xn Xd  d l m Z d  d l m Z d	 Z d
 d   Z Gd d   d e j  Z Gd d   d e  Z d S)    )logN)apidoc)application)config)setup_command)git)optionszi%(heading)s
%(underline)s

.. automodule:: %(module)s
  :members:
  :undoc-members:
  :show-inheritance:
c             C   sZ   xS | D]K } | j  d  r | d k r d |  d | j d d  | d  d  f <q Wd  S)	Nz.pyz__init__.pyTz%s.%s/.   )endswithreplace)argdirnamefilesfilename r   ./usr/lib/python3/dist-packages/pbr/builddoc.py_find_modules<   s    r   c               @   sy   e  Z d  Z d Z d d g Z d d   Z d d d  Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d S)LocalBuildDocbuild_sphinxZhtmlmanc             C   sg   |  j  j d  } d | k r> t j j | d d d  } n d } t j j |  sc t j |  | S)Nr   
source_dir   Zapizdoc/source/api)distributionget_option_dictospathjoinexistsmakedirs)selfoption_dictr   r   r   r   _get_source_dirH   s     zLocalBuildDoc._get_source_dirNc                s  t  j d t j j t j   i  } |  j   } xS |  j j D]E } d | k r? x0 t j	 |  D] \ } } } t
 | | |  qa Wq? W  f d d    t  f d d   | j   D  } t j j | d  }	 t |	 d   }
 |
 j d	  x | D] } t j j | d
 |  } d | } d t |  } t d | d | d |  } t  j d |  t | d   } | j t |  Wd  QRX|
 j d |  q WWd  QRXd  S)Nz[pbr] Autodocumenting from %sr
   c                s   t    f d d    D  S)Nc             3   s!   |  ] } t  j    |  Vq d  S)N)fnmatch).0Zpat)moduler   r   	<genexpr>]   s   zDLocalBuildDoc.generate_autoindex.<locals>.include.<locals>.<genexpr>)any)r'   )excluded_modules)r'   r   include\   s    z1LocalBuildDoc.generate_autoindex.<locals>.includec             3   s!   |  ] }   |  r | Vq d  S)Nr   )r&   mod)r+   r   r   r(   `   s    z3LocalBuildDoc.generate_autoindex.<locals>.<genexpr>zautoindex.rstwz.. toctree::
   :maxdepth: 1

z%s.rstzThe :mod:`%s` Module=r'   heading	underlinez[pbr] Generating %sz
   %s.rst
)r   infor   r   abspathcurdirr$   r   Zpackageswalkr   sortedkeysr   openwritelendict_rst_template)r"   r*   modulesr   pkgdirpathZdirnamesr   Zmodule_listZautoindex_filenameZ	autoindexr'   Zoutput_filenamer/   r0   valuesZoutput_filer   )r*   r+   r   generate_autoindexR   s4    	%
		z LocalBuildDoc.generate_autoindexc             C   s<   |  j    } d d d d d | g } t j | |  j  d  S)Nr   r
   z-HModulesz-o)r$   r   mainautodoc_tree_excludes)r"   r   cmdr   r   r   _sphinx_treeu   s    zLocalBuildDoc._sphinx_treec       
      C   s'  |  j  s t j   } n	 t j } i  } |  j r= |  j | d <|  j rS |  j | d <|  j ri |  j | d <t j	 |  j
 d i  g   } t j d  j } t j |  t j d  k r | j t j  n
 | j   |  j d k r t | j  d k r d  St j |  j |  j
 |  j |  j |  j | | d	 |  j d
 d } y | j d |  j  Wn t k
 r} zp d d l m } t | | j   rt j! j" d  t j# j" | j$ d j% d d   t j# j" d  n   WYd  d  } ~ Xn X|  j& r#| j j' | j j( } | j j) d  }	 t* j+ | |	  d  S)Nversionreleasetodayzconf.pysphinxz1.3.1r   r   ZfreshenvZwarningiserrorFZ	force_all)utilszreST markup error:
asciibackslashreplace
index),verbose	cStringIOStringIOsysstdoutrF   rG   rH   r   ZConfigZ
config_dirpkg_resourcesZget_distributionZparse_versionZinit_valueswarningswarnbuilderr9   Z	man_pagesr   ZSphinxr   Zbuilder_target_dirZdoctree_dirZ	fresh_envZbuildZ	all_files	ExceptionZdocutilsrJ   
isinstanceZSystemMessageZstderr8   stderrargsencodeZ
link_indexZ
master_docZ
out_suffixZget_outfilenamer   symlink)
r"   Zstatus_streamZconfoverridesZsphinx_configZ
sphinx_verZapperrrJ   srcZdstr   r   r   _sphinx_runz   sJ    					
$
	zLocalBuildDoc._sphinx_runc             C   sO  |  j  j d  } t j   r> t j d |  t j d |  t j | d d  } t j | d d  } t j	 d  s | r |  j
   | r |  j t | j d d  d	 g  d
 j     x |  j D] } | |  _ |  j   |  j  j   |  _ |  j  j   |  _ |  j  j   |  _ t j | d d  r7|  j   q t j j |   q Wd  S)Npbrr#   Zautodoc_tree_index_modulesZAUTODOC_TREE_INDEX_MODULESZautodoc_index_modulesZAUTODOC_INDEX_MODULESZSPHINX_DEBUGZautodoc_exclude_modules r   Z
warnerrorsZ
WARNERRORS)r   r   r   Z_git_is_installedZwrite_git_changelogZgenerate_authorsr   Zget_boolean_optionr   getenvrE   r@   setgetsplitbuildersrW   finalize_optionsZget_nameZprojectZget_versionrF   rG   r`   r   BuildDocrun)r"   r#   Z
tree_indexZ
auto_indexrW   r   r   r   rj      s8    				
		
	zLocalBuildDoc.runc             C   s    t  j j |   d g |  _ d  S)Nzsetup.py)r   ri   initialize_optionsrC   )r"   r   r   r   rk      s    z LocalBuildDoc.initialize_optionsc             C   s   t  j j |   |  j j d  } d | j d g  g  d k rR | d d |  _ t |  j t  r |  j r |  j j	 d  |  _ d } |  j j d  } | | k r | | d |  _
 |  j |  d  S)	Nr   zcommand linerW   r   r   ,rC   ra   )r   ri   rh   r   r   re   rg   rY   listrf   rC   Zensure_string_list)r"   r#   Zoptr   r   r   rh      s    zLocalBuildDoc.finalize_options)__name__
__module____qualname__command_namerg   r$   r@   rE   r`   rj   rk   rh   r   r   r   r   r   C   s   
#,"r   c               @   s   e  Z d  Z d g Z d Z d S)LocalBuildLatexZlatexZbuild_sphinx_latexN)rn   ro   rp   rg   rq   r   r   r   r   rr      s   	rr   )Z	distutilsr   r%   r   rT   rR   rU   rP   ImportErroriorI   r   r   r   r   rX   estrra   r   r   r;   r   ri   r   rr   r   r   r   r   <module>   s,   %
