Repository: beam
Updated Branches:
  refs/heads/master d03e3980c -> 92190ba5d


[BEAM-1320] Add script to generate documentation for the python sdk


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/87f20520
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/87f20520
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/87f20520

Branch: refs/heads/master
Commit: 87f205207d28d54b3a4e02465c493cb8d626d56b
Parents: d03e398
Author: Sourabh Bajaj <sourabhba...@google.com>
Authored: Thu Feb 16 16:01:36 2017 -0800
Committer: Davor Bonaci <da...@google.com>
Committed: Sun Feb 19 17:40:33 2017 -0800

----------------------------------------------------------------------
 sdks/python/generate_pydoc.sh | 66 ++++++++++++++++++++++++++++++++++++++
 sdks/python/pom.xml           |  1 -
 sdks/python/setup.py          |  5 +++
 sdks/python/tox.ini           |  2 ++
 4 files changed, 73 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/87f20520/sdks/python/generate_pydoc.sh
----------------------------------------------------------------------
diff --git a/sdks/python/generate_pydoc.sh b/sdks/python/generate_pydoc.sh
new file mode 100755
index 0000000..f96a649
--- /dev/null
+++ b/sdks/python/generate_pydoc.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You 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.
+#
+
+# This script will run sphinx to create documentation for python sdk
+#
+# Use "generate_pydocs.sh" to update documentation in the docs directory.
+#
+# The exit-code of the script indicates success or a failure.
+
+# Quit on any errors
+set -e
+
+# Create docs directory if it does not exist
+mkdir -p target/docs/source
+
+# Exclude autogenerated API message definition files that aren't part of SDK.
+excluded_internal_clients=(apache_beam/internal/clients/)
+python $(type -p sphinx-apidoc) -f -o target/docs/source apache_beam \
+    "${excluded_internal_clients[@]}"
+
+# Remove Cython modules from doc template; they won't load
+sed -i -e '/.. automodule:: apache_beam.coders.stream/d' \
+    target/docs/source/apache_beam.coders.rst
+
+# Create the configuration and index files
+cat > target/docs/source/conf.py <<'EOF'
+import os
+import sys
+
+sys.path.insert(0, os.path.abspath('../../..'))
+
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.napoleon',
+    'sphinx.ext.viewcode',
+]
+master_doc = 'index'
+html_theme = 'sphinxdoc'
+project = 'Apache Beam'
+EOF
+cat > target/docs/source/index.rst <<'EOF'
+.. include:: ./modules.rst
+EOF
+
+# Build the documentation using sphinx
+python $(type -p sphinx-build) -q target/docs/source target/docs/_build -c 
target/docs/source \
+    -w "/tmp/sphinx-build.warnings.log"
+
+# Message is useful only when this script is run locally.  In a remote
+# test environment, this path will be removed when the test completes.
+echo "Browse to file://$PWD/target/docs/_build/index.html"

http://git-wip-us.apache.org/repos/asf/beam/blob/87f20520/sdks/python/pom.xml
----------------------------------------------------------------------
diff --git a/sdks/python/pom.xml b/sdks/python/pom.xml
index 615ddc5..2b35f4d 100644
--- a/sdks/python/pom.xml
+++ b/sdks/python/pom.xml
@@ -165,5 +165,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>

http://git-wip-us.apache.org/repos/asf/beam/blob/87f20520/sdks/python/setup.py
----------------------------------------------------------------------
diff --git a/sdks/python/setup.py b/sdks/python/setup.py
index 90a4e53..59c0994 100644
--- a/sdks/python/setup.py
+++ b/sdks/python/setup.py
@@ -103,6 +103,10 @@ REQUIRED_TEST_PACKAGES = [
     'pyhamcrest>=1.9,<2.0',
     ]
 
+EXTRA_REQUIRES = {
+  'docs': ['Sphinx>=1.5.2,<2.0'],
+}
+
 setuptools.setup(
     name=PACKAGE_NAME,
     version=PACKAGE_VERSION,
@@ -127,6 +131,7 @@ setuptools.setup(
     install_requires=REQUIRED_PACKAGES,
     test_suite='nose.collector',
     tests_require=REQUIRED_TEST_PACKAGES,
+    extras_require=EXTRA_REQUIRES,
     zip_safe=False,
     # PyPI package information.
     classifiers=[

http://git-wip-us.apache.org/repos/asf/beam/blob/87f20520/sdks/python/tox.ini
----------------------------------------------------------------------
diff --git a/sdks/python/tox.ini b/sdks/python/tox.ini
index 20afa58..2f5a7b5 100644
--- a/sdks/python/tox.ini
+++ b/sdks/python/tox.ini
@@ -30,9 +30,11 @@ deps=
   nose
   pep8
   pylint
+  Sphinx
 commands =
   python --version
   python apache_beam/examples/complete/autocomplete_test.py
   python setup.py test
   {toxinidir}/run_pylint.sh
+  {toxinidir}/generate_pydoc.sh
 passenv = TRAVIS*

Reply via email to