Back to directory
marian-code avatar
marian-code / python-lint-annotate

python-lint-annotate

Zero-configuration GitHub Action to maintain code quality with push and PR annotations.

24

Stars

10

Forks

1

Watchers

MIT

License

python-lint-annotate

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.

Screenshot of annotations

Features

  • 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.
  • Allows to use either a new or existing Python version using use-external-python. See this example.

Linters supported

Usage

Basic:

steps:
  - uses: actions/checkout@v6
  - uses: marian-code/python-lint-annotate@v4

Options:

steps:
  - uses: actions/checkout@v6
  - uses: marian-code/python-lint-annotate@v4
    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.10"

Examples

Details

Uses actions/setup-python@v6. Only python 3.10 - 3.14 versions are tested. Python 3.x versions prior to 3.10 are not tested since they are EOL now. Any python 2.x versions are unsupported! You can lint on Linux, Windows and MacOS.

The linter versions are defined in requirements.txt.

IMPORTANT - test environment

The python version is set by actions/setup-python@v6 using composite actions. This means that the the action will change python you might have previously set with actions/setup-python@v6. 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@v6
    - uses: actions/setup-python@v6
      with:
        python-version: 3.10
    - run: |
        python --version  # this will output 3.10 now
        run tests or other things using python ...
    - uses: marian-code/python-lint-annotate@v4
      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.10"
    - run: |
        python --version  # this will output 3.10 now !!!

License

The scripts and documentation in this project are released under the MIT License

Contributions

Contributions are welcome through PRs.

TODO

Wait until this is resolved: PR646 so we can implement better python version control

Releases

v3

Jun 8, 2022

Multiple small fixes

Download .zip

What's Changed

Fixing default parameter for linting all files by @nmenardg-keeper in #3 Added an example actions.yml file by @nmenardg-keeper in #4 Fix mypy's missing stubs error by @nmenardg-keeper...

v2

May 27, 2021

Mypy fix

Download .zip

As title suggests, mypy regex has been updated.

Feb 11, 2021

Final v.2 relaease

Download .zip

Changes

new architecture relying on conda environments instead of docker images which is more flexible added new problem matchers fixed existing matchers repo cleanup test with more mistakes fix prob...