aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Masood Malekghassemi <atash@google.com>2016-05-11 12:01:40 -0700
committerGravatar Masood Malekghassemi <atash@google.com>2017-01-17 10:55:32 -0800
commit06dea573daa2175b244a430bb89b49bb5c8e8c5b (patch)
treef5c0b6c2a3684e7bf9eaf0d75768074679f77151
parentd9f5b230c1dd78019ef1ed84fd2696f9e5f98fdd (diff)
Enable running Python formatting
-rw-r--r--.gitignore1
-rw-r--r--setup.cfg4
-rwxr-xr-xtools/distrib/pyformat_code.sh60
-rw-r--r--tools/run_tests/sanity/sanity_tests.yaml1
4 files changed, 66 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 3112445176..618c9ba5ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ objs
# Python items
cython_debug/
python_build/
+python_format_venv/
.coverage*
.eggs
htmlcov/
diff --git a/setup.cfg b/setup.cfg
index dd9161ca8b..218792e674 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -11,3 +11,7 @@ inplace=1
[build_package_protos]
exclude=.*protoc_plugin/protoc_plugin_test\.proto$
+
+# Style settings
+[yapf]
+based_on_style = google
diff --git a/tools/distrib/pyformat_code.sh b/tools/distrib/pyformat_code.sh
new file mode 100755
index 0000000000..e3ebf1c490
--- /dev/null
+++ b/tools/distrib/pyformat_code.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+# change to root directory
+cd $(dirname $0)/../..
+
+DIRS=src/python
+EXCLUSIONS='src/python/grpcio/grpc_*.py src/python/grpcio_health_checking/grpc_*.py src/python/grpcio_reflection/grpc_*.py src/python/grpcio_tests/grpc_*.py'
+
+VIRTUALENV=python_format_venv
+
+virtualenv $VIRTUALENV
+PYTHON=`realpath $VIRTUALENV/bin/python`
+$PYTHON -m pip install --upgrade futures yapf
+
+exclusion_args=""
+for exclusion in $EXCLUSIONS; do
+ exclusion_args="$exclusion_args --exclude $exclusion"
+done
+
+script_result=0
+for dir in $DIRS; do
+ tempdir=`mktemp -d`
+ cp -RT $dir $tempdir
+ $PYTHON -m yapf -i -r -p $exclusion_args $dir
+ if ! diff -rq $dir $tempdir; then
+ script_result=1
+ fi
+ rm -rf $tempdir
+done
+exit $script_result
diff --git a/tools/run_tests/sanity/sanity_tests.yaml b/tools/run_tests/sanity/sanity_tests.yaml
index 37819166e3..f29b700572 100644
--- a/tools/run_tests/sanity/sanity_tests.yaml
+++ b/tools/run_tests/sanity/sanity_tests.yaml
@@ -12,5 +12,6 @@
- script: tools/distrib/check_trailing_newlines.sh
- script: tools/distrib/check_nanopb_output.sh
- script: tools/distrib/check_include_guards.py
+- script: tools/distrib/pyformat_code.sh
- script: tools/distrib/python/check_grpcio_tools.py