aboutsummaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py')
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py230
1 files changed, 230 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py
new file mode 100644
index 0000000..a91dda9
--- /dev/null
+++ b/jython-tosca-parser/src/main/resources/Lib/site-packages/pbr-1.8.0-py2.7.egg/pbr/builddoc.py
@@ -0,0 +1,230 @@
+# Copyright 2011 OpenStack LLC.
+# Copyright 2012-2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from distutils import log
+import fnmatch
+import os
+import pkg_resources
+import sys
+import warnings
+
+try:
+ import cStringIO
+except ImportError:
+ import io as cStringIO
+
+try:
+ from sphinx import apidoc
+ from sphinx import application
+ from sphinx import config
+ from sphinx import setup_command
+except Exception as e:
+ # NOTE(dhellmann): During the installation of docutils, setuptools
+ # tries to import pbr code to find the egg_info.writer hooks. That
+ # imports this module, which imports sphinx, which imports
+ # docutils, which is being installed. Because docutils uses 2to3
+ # to convert its code during installation under python 3, the
+ # import fails, but it fails with an error other than ImportError
+ # (today it's a NameError on StandardError, an exception base
+ # class). Convert the exception type here so it can be caught in
+ # packaging.py where we try to determine if we can import and use
+ # sphinx by importing this module. See bug #1403510 for details.
+ raise ImportError(str(e))
+from pbr import git
+from pbr import options
+
+
+_rst_template = """%(heading)s
+%(underline)s
+
+.. automodule:: %(module)s
+ :members:
+ :undoc-members:
+ :show-inheritance:
+"""
+
+
+def _find_modules(arg, dirname, files):
+ for filename in files:
+ if filename.endswith('.py') and filename != '__init__.py':
+ arg["%s.%s" % (dirname.replace('/', '.'),
+ filename[:-3])] = True
+
+
+class LocalBuildDoc(setup_command.BuildDoc):
+
+ command_name = 'build_sphinx'
+ builders = ['html', 'man']
+
+ def _get_source_dir(self):
+ option_dict = self.distribution.get_option_dict('build_sphinx')
+ if 'source_dir' in option_dict:
+ source_dir = os.path.join(option_dict['source_dir'][1], 'api')
+ else:
+ source_dir = 'doc/source/api'
+ if not os.path.exists(source_dir):
+ os.makedirs(source_dir)
+ return source_dir
+
+ def generate_autoindex(self, excluded_modules=None):
+ log.info("[pbr] Autodocumenting from %s"
+ % os.path.abspath(os.curdir))
+ modules = {}
+ source_dir = self._get_source_dir()
+ for pkg in self.distribution.packages:
+ if '.' not in pkg:
+ for dirpath, dirnames, files in os.walk(pkg):
+ _find_modules(modules, dirpath, files)
+
+ def include(module):
+ return not any(fnmatch.fnmatch(module, pat)
+ for pat in excluded_modules)
+
+ module_list = sorted(mod for mod in modules.keys() if include(mod))
+ autoindex_filename = os.path.join(source_dir, 'autoindex.rst')
+ with open(autoindex_filename, 'w') as autoindex:
+ autoindex.write(""".. toctree::
+ :maxdepth: 1
+
+""")
+ for module in module_list:
+ output_filename = os.path.join(source_dir,
+ "%s.rst" % module)
+ heading = "The :mod:`%s` Module" % module
+ underline = "=" * len(heading)
+ values = dict(module=module, heading=heading,
+ underline=underline)
+
+ log.info("[pbr] Generating %s"
+ % output_filename)
+ with open(output_filename, 'w') as output_file:
+ output_file.write(_rst_template % values)
+ autoindex.write(" %s.rst\n" % module)
+
+ def _sphinx_tree(self):
+ source_dir = self._get_source_dir()
+ cmd = ['apidoc', '.', '-H', 'Modules', '-o', source_dir]
+ apidoc.main(cmd + self.autodoc_tree_excludes)
+
+ def _sphinx_run(self):
+ if not self.verbose:
+ status_stream = cStringIO.StringIO()
+ else:
+ status_stream = sys.stdout
+ confoverrides = {}
+ if self.version:
+ confoverrides['version'] = self.version
+ if self.release:
+ confoverrides['release'] = self.release
+ if self.today:
+ confoverrides['today'] = self.today
+ sphinx_config = config.Config(self.config_dir, 'conf.py', {}, [])
+ sphinx_ver = pkg_resources.get_distribution("sphinx").version
+ if pkg_resources.parse_version(sphinx_ver) >= \
+ pkg_resources.parse_version('1.3.1'):
+ sphinx_config.init_values(warnings.warn)
+ else:
+ sphinx_config.init_values()
+ if self.builder == 'man' and len(sphinx_config.man_pages) == 0:
+ return
+ app = application.Sphinx(
+ self.source_dir, self.config_dir,
+ self.builder_target_dir, self.doctree_dir,
+ self.builder, confoverrides, status_stream,
+ freshenv=self.fresh_env, warningiserror=False)
+
+ try:
+ app.build(force_all=self.all_files)
+ except Exception as err:
+ from docutils import utils
+ if isinstance(err, utils.SystemMessage):
+ sys.stder.write('reST markup error:\n')
+ sys.stderr.write(err.args[0].encode('ascii',
+ 'backslashreplace'))
+ sys.stderr.write('\n')
+ else:
+ raise
+
+ if self.link_index:
+ src = app.config.master_doc + app.builder.out_suffix
+ dst = app.builder.get_outfilename('index')
+ os.symlink(src, dst)
+
+ def run(self):
+ option_dict = self.distribution.get_option_dict('pbr')
+ if git._git_is_installed():
+ git.write_git_changelog(option_dict=option_dict)
+ git.generate_authors(option_dict=option_dict)
+ tree_index = options.get_boolean_option(option_dict,
+ 'autodoc_tree_index_modules',
+ 'AUTODOC_TREE_INDEX_MODULES')
+ auto_index = options.get_boolean_option(option_dict,
+ 'autodoc_index_modules',
+ 'AUTODOC_INDEX_MODULES')
+ if not os.getenv('SPHINX_DEBUG'):
+ # NOTE(afazekas): These options can be used together,
+ # but they do a very similar thing in a different way
+ if tree_index:
+ self._sphinx_tree()
+ if auto_index:
+ self.generate_autoindex(
+ set(option_dict.get(
+ "autodoc_exclude_modules",
+ [None, ""])[1].split()))
+
+ for builder in self.builders:
+ self.builder = builder
+ self.finalize_options()
+ self.project = self.distribution.get_name()
+ self.version = self.distribution.get_version()
+ self.release = self.distribution.get_version()
+ if options.get_boolean_option(option_dict,
+ 'warnerrors', 'WARNERRORS'):
+ self._sphinx_run()
+ else:
+ setup_command.BuildDoc.run(self)
+
+ def initialize_options(self):
+ # Not a new style class, super keyword does not work.
+ setup_command.BuildDoc.initialize_options(self)
+
+ # NOTE(dstanek): exclude setup.py from the autodoc tree index
+ # builds because all projects will have an issue with it
+ self.autodoc_tree_excludes = ['setup.py']
+
+ def finalize_options(self):
+ # Not a new style class, super keyword does not work.
+ setup_command.BuildDoc.finalize_options(self)
+ # Handle builder option from command line - override cfg
+ option_dict = self.distribution.get_option_dict('build_sphinx')
+ if 'command line' in option_dict.get('builder', [[]])[0]:
+ self.builders = option_dict['builder'][1]
+ # Allow builders to be configurable - as a comma separated list.
+ if not isinstance(self.builders, list) and self.builders:
+ self.builders = self.builders.split(',')
+
+ # NOTE(dstanek): check for autodoc tree exclusion overrides
+ # in the setup.cfg
+ opt = 'autodoc_tree_excludes'
+ option_dict = self.distribution.get_option_dict('pbr')
+ if opt in option_dict:
+ self.autodoc_tree_excludes = option_dict[opt][1]
+ self.ensure_string_list(opt)
+
+
+class LocalBuildLatex(LocalBuildDoc):
+ builders = ['latex']
+ command_name = 'build_sphinx_latex'