From ce7f9ee3c4a7fcce6a2f57a189f15f8e3d36d5c0 Mon Sep 17 00:00:00 2001 From: Sergii Tkachenko Date: Mon, 12 Feb 2024 15:12:21 -0800 Subject: [PATCH 1/2] Add ./bin/pylint tool --- .pylintrc | 13 ++++++++++++ bin/pylint.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100755 bin/pylint.sh diff --git a/.pylintrc b/.pylintrc index 323b0dbc..23731843 100644 --- a/.pylintrc +++ b/.pylintrc @@ -19,6 +19,19 @@ max-parents=8 # "TODO():", "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= diff --git a/bin/pylint.sh b/bin/pylint.sh new file mode 100755 index 00000000..d949745a --- /dev/null +++ b/bin/pylint.sh @@ -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 </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}" From ecb3cf90a51686b8597ae27cb0b5dd20ef41a7b3 Mon Sep 17 00:00:00 2001 From: Sergii Tkachenko Date: Mon, 12 Feb 2024 17:13:00 -0800 Subject: [PATCH 2/2] Fix typo --- bin/pylint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/pylint.sh b/bin/pylint.sh index d949745a..3faba4de 100755 --- a/bin/pylint.sh +++ b/bin/pylint.sh @@ -26,7 +26,7 @@ display_usage() { A helper to run black pylint. USAGE: - ./bin/pylint.rc + ./bin/pylint.sh ONE-TIME INSTALLATION: 1. python3.9 -m venv --upgrade-deps venv-pylint