diff --git a/.github/workflows/matchers/pylint.json b/.github/workflows/matchers/pylint.json new file mode 100644 index 0000000..4d9e13f --- /dev/null +++ b/.github/workflows/matchers/pylint.json @@ -0,0 +1,32 @@ +{ + "problemMatcher": [ + { + "owner": "pylint-error", + "severity": "error", + "pattern": [ + { + "regexp": "^(.+):(\\d+):(\\d+):\\s(([EF]\\d{4}):\\s.+)$", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "code": 5 + } + ] + }, + { + "owner": "pylint-warning", + "severity": "warning", + "pattern": [ + { + "regexp": "^(.+):(\\d+):(\\d+):\\s(([CRW]\\d{4}):\\s.+)$", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "code": 5 + } + ] + } + ] +} \ No newline at end of file diff --git a/.github/workflows/pylint.yaml b/.github/workflows/pylint.yaml new file mode 100644 index 0000000..d56a1a6 --- /dev/null +++ b/.github/workflows/pylint.yaml @@ -0,0 +1,59 @@ +--- + name: Run pylint + + defaults: + run: + # To load bashrc + shell: bash -ieo pipefail {0} + + on: + pull_request: + branches: [main, dev] + paths: + - "**/*.py" + + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + jobs: + build: + name: Lint Code Base + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + - name: Set up Python 3.8 + uses: actions/setup-python@v5 + with: + python-version: 3.8 + + - name: Install dependencies + run: | + mkdir -p .github/linters + cp pyproject.toml .github/linters + + - name: Register pylint problem matcher + run: | + echo "::add-matcher::.github/workflows/matchers/pylint.json" + + - name: Pylint + uses: super-linter/super-linter/slim@v6.1.1 + if: always() + env: + # Run linters only on new files for pylint to speed up the CI + VALIDATE_ALL_CODEBASE: false + # Compare against the base branch + # This is only accessible on PR + DEFAULT_BRANCH: ${{ github.base_ref }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Run only pylint + VALIDATE_PYTHON: true + VALIDATE_PYTHON_PYLINT: true + PYTHON_PYLINT_CONFIG_FILE: pyproject.toml + FILTER_REGEX_EXCLUDE: .*tests/.*.(json|zip|sol) \ No newline at end of file