Zero-configuration GitHub Action to maintain code quality with push and PR annotations.
On every push and pull request git diffs will get inline annotated with found errors from selected linters.
- Zero configuration based: Add a single line in your CI and done!
- GitHub Annotations on PR: Highlights issues inline on the PR diff.
- Most of the popular community trusted linters in one place.
Basic:
steps:
- uses: actions/checkout@v1
- uses: marian-code/python-lint-annotate@v3
Options:
steps:
- uses: actions/checkout@v1
- uses: marian-code/python-lint-annotate@v3
with:
python-root-list: "src/ tests/*" # accepts wildcards
use-pycodestyle: false
use-mypy: false
use-vulture: true
extra-pylint-options: "--output-format="colorized"
python-version: "3.7"
ℹ️ python-lint-annotate expects a
requirements.txt
file in your project. See example to generate one withpipenv
. Leave an empty one if needed.
- Only lint changed files, and ignore missing docstrings
- Install requirements from pipenv and lint all files
Uses actions/setup-python@v2
. Only python 3.6
- 3.10
version are tested since
they are by far most common now. Other python 3.x
versions should also work.
Any python 2.x
versions are unsupported! You can lint on Linux, Windows and MacOS.
The linter versions are defined in requirements.txt
The python version is set by actions/setup-python@v2
using composite actions. This
means that the the action will change python you might have previously set with
actions/setup-python@v2
. There are two ways to circumvent this.
- Keep the lintnig action separated from others
- Use it at the and of your workflow when the change in python version will not affect anything else
Example:
on:
push:
pull_request:
name: Lint Python
jobs:
lintpython:
name: Lint Python
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v2
with:
python-version: 3.9
- run: |
python --version # this will output 3.9 now
run tests or other things using python ...
- uses: marian-code/python-lint-annotate@v3
with:
python-root-list: "./tests/*.py"
use-black: true
use-isort: true
use-mypy: true
use-pycodestyle: true
use-pydocstyle: true
extra-pycodestyle-options: "--max-line-length=88"
use-pylint: false
use-flake8: false
use-vulture: true
python-version: "3.7"
- run: |
python --version # this will output 3.7 now !!!
The scripts and documentation in this project are released under the MIT License
Contributions are welcome through PRs.
Wait until this is resolved: PR646 so we can implement better python version control