Skip to content

Add pylint to workflow (#9) #20

Add pylint to workflow (#9)

Add pylint to workflow (#9) #20

Workflow file for this run

name: PSM Interop
env:
# Force the stdout and stderr streams to be unbuffered
PYTHONUNBUFFERED: 1
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
jobs:
unittest:
# By default, only version is printed out in parens, e.g. "unittest (3.10)"
# This changes it to "unittest (python3.10)"
name: "unittest (python${{ matrix.python_version }})"
runs-on: ubuntu-latest
strategy:
matrix:
python_version: ["3.9", "3.10", "3.11"]
fail-fast: false
permissions:
pull-requests: read # Used by paths-filter to read the diff.
contents: read
defaults:
run:
working-directory: './'
steps:
- uses: actions/checkout@v4
# To add this job to required GitHub checks, it's not enough to use
# the on.pull_request.paths filter. For required checks, the job needs to
# return the success status, and not be skipped.
# Using paths-filter action, we skip the setup/test steps when psm interop
# files are unchanged, and the job returns success.
- uses: dorny/paths-filter@v2
id: paths_filter
with:
filters: |
psm_interop_src:
- './**'
- './protos/empty.proto'
- './protos/messages.proto'
- './protos/test.proto'
- uses: actions/setup-python@v4
if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }}
with:
python-version: "${{ matrix.python_version }}"
cache: 'pip'
cache-dependency-path: './requirements.lock'
- name: "Install requirements"
if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }}
run: |
pip list
pip install --upgrade pip setuptools
pip list
pip install -r requirements.lock
pip list
- name: "Generate protos"
if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }}
run: >
python -m grpc_tools.protoc --proto_path=.
--python_out=. --grpc_python_out=.
protos/empty.proto
protos/messages.proto
protos/test.proto
- name: "Run unit tests"
if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }}
run: python -m tests.unit
black-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: psf/black@stable
with:
options: "--check --config black.toml"
version: "23.3.0"
isort-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: isort/isort-action@v1
with:
configuration: "--diff --check-only --dont-follow-links --settings-path=black.toml"
isort-version: "5.9.2"
pylint-check:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: |
pip list
python -m pip install --upgrade pip
pip install pylint==2.2.2 astroid==2.3.3 toml==0.10.2 "isort>=4.3.0,<5.0.0"
- name: Analysing the code with pylint
run: |
python -m pylint 'bin' 'framework' --rcfile=.pylintrc -rn
python -m pylint 'tests' 'framework' --rcfile=.pylintrc-tests -rn