Skip to content

Commit

Permalink
Add ./bin/pylint tool
Browse files Browse the repository at this point in the history
  • Loading branch information
sergiitk committed Feb 12, 2024
1 parent d316aa8 commit 8e476a2
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
13 changes: 13 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,19 @@ max-parents=8
# "TODO(<username>):", "FIXME:", or anything else.
notes=FIXME,XXX

[TYPECHECK]
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
#
# TODO(sergiitk): remove when astroid upgraded to astroid 2.15.5, see
# https://pylint.pycqa.org/projects/astroid/en/latest/changelog.html#what-s-new-in-astroid-2-15-5
# > Recognize stub pyi Python files.
ignored-modules=
protos.grpc.testing.messages_pb2,
protos.grpc.testing.empty_pb2,

[MESSAGES CONTROL]

disable=
Expand Down
59 changes: 59 additions & 0 deletions bin/pylint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
# Copyright 2024 gRPC authors.
#
# 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.

set -eo pipefail

SCRIPT_DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
readonly SCRIPT_DIR
XDS_K8S_DRIVER_DIR="$( cd -- "$(dirname "${SCRIPT_DIR}")" >/dev/null 2>&1 ; pwd -P )"
readonly XDS_K8S_DRIVER_DIR

# TODO(sergiitk): Once upgraded to be compatible with requirements-dev.txt, use the default venv.
display_usage() {
cat <<EOF >/dev/stderr
A helper to run black pylint.
USAGE:
./bin/pylint.rc
ONE-TIME INSTALLATION:
1. python3.9 -m venv --upgrade-deps venv-pylint
2. source ./venv-pylint/bin/activate
3. pip install pylint==2.2.2 astroid==2.3.3 toml==0.10.2 "isort>=4.3.0,<5.0.0"
4. deactivate
ENVIRONMENT:
XDS_K8S_DRIVER_PYLINT_VENV_DIR: the path to python virtual environment directory
Default: $XDS_K8S_DRIVER_DIR/venv-pylint
EOF
exit 1
}

if [[ "$1" == "-h" || "$1" == "--help" ]]; then
display_usage
fi

cd "${XDS_K8S_DRIVER_DIR}"

# Relative paths not yet supported by shellcheck.
# shellcheck source=/dev/null
XDS_K8S_DRIVER_VENV_DIR="${XDS_K8S_DRIVER_PYLINT_VENV_DIR:-$XDS_K8S_DRIVER_DIR/venv-pylint}" \
source "${XDS_K8S_DRIVER_DIR}/bin/ensure_venv.sh"

EXIT=0
set -x
pylint -rn 'bin' 'framework' || EXIT=1
pylint --rcfile=./tests/.pylintrc -rn 'tests' || EXIT=1
exit "${EXIT}"

0 comments on commit 8e476a2

Please sign in to comment.