From c6f2d856aa2a1c732788a34323e8242c2b72db57 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Tue, 13 Feb 2024 13:08:46 +0100 Subject: [PATCH] Introduce new hooks, upgrade existing and add wrapper script to call pylint --- .pre-commit-config.yaml | 101 ++++++++++++++++++++++++---------------- .pre-commit-pylint | 19 ++++++++ Dockerfile | 2 +- 3 files changed, 80 insertions(+), 42 deletions(-) create mode 100755 .pre-commit-pylint diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2de8f8a..9adf1f6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,45 +1,64 @@ # Pre-commit hooks to run tests and ensure code is cleaned. # See https://pre-commit.com for more information +--- repos: -- repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 - hooks: - - id: pyupgrade - args: ['--keep-percent-format', '--py37-plus'] -- repo: https://github.com/psf/black - rev: 23.11.0 - hooks: - - id: black - args: ['--target-version', 'py37', '--line-length', '100'] -- repo: https://github.com/PyCQA/isort - rev: 5.12.0 - hooks: - - id: isort - args: ['--profile', 'black', '--line-length', '100'] -- repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 - hooks: - - id: flake8 - args: ['--max-line-length=100'] -- repo: local - hooks: - - id: pylint - name: pylint - entry: pylint - language: system - types: [python] - require_serial: true -- repo: https://github.com/PyCQA/bandit - rev: 1.7.5 - hooks: - - id: bandit - args: [--skip, "B101", --recursive, "mylib"] -#- repo: local -# hooks: -# - id: pytest -# name: pytest -# entry: python3 -m pytest tests -# language: system -# types: [python] -# pass_filenames: false + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.6 + hooks: + - id: ruff + args: ["--fix"] + - repo: https://github.com/asottile/pyupgrade + rev: v3.15.0 + hooks: + - id: pyupgrade + args: ["--keep-percent-format", "--py37-plus"] + - repo: https://github.com/psf/black + rev: 23.11.0 + hooks: + - id: black + args: ["--target-version", "py37", "--line-length", "100"] + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + args: ["--profile", "black", "--line-length", "100"] + - repo: https://github.com/PyCQA/flake8 + rev: 6.1.0 + hooks: + - id: flake8 + args: ["--max-line-length=100"] + - repo: https://github.com/codespell-project/codespell + rev: v2.2.2 + hooks: + - id: codespell + args: + - --ignore-words-list=exten + - --skip="./.*,*.csv,*.json,*.ini,*.subject,*.txt,*.html,*.log,*.conf" + - --quiet-level=2 + - --ignore-regex=.*codespell-ignore$ + #- --write-changes # Uncomment to write changes + exclude_types: [csv, json] + - repo: https://github.com/adrienverge/yamllint + rev: v1.32.0 + hooks: + - id: yamllint + ignore: .github/ + - repo: https://github.com/pre-commit/mirrors-prettier + rev: v2.7.1 + hooks: + - id: prettier + args: ["--print-width", "100"] + - repo: local + hooks: + - id: pylint + name: pylint + entry: ./.pre-commit-pylint + language: system + types: [python] + require_serial: true + - repo: https://github.com/PyCQA/bandit + rev: 1.7.5 + hooks: + - id: bandit + args: [--skip, "B101", --recursive] minimum_pre_commit_version: 3.2.0 diff --git a/.pre-commit-pylint b/.pre-commit-pylint new file mode 100755 index 0000000..1f757f5 --- /dev/null +++ b/.pre-commit-pylint @@ -0,0 +1,19 @@ +#!/bin/bash + +PWD=`pwd` + +if [ -d "$PWD/venv" ] +then + echo "Run pylint inside venv ($PWD/venv)..." + $PWD/venv/bin/pylint "$@" + exit $? +elif [ -e "$PWD/pyproject.toml" ] +then + echo "Run pylint using poetry..." + poetry run pylint "$@" + exit $? +else + echo "Run pylint at system scope..." + pylint "$@" + exit $? +fi diff --git a/Dockerfile b/Dockerfile index 534050a..22481dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,5 +3,5 @@ from debian:stable-slim RUN apt-get update && apt-get install --no-install-recommends -y python3-all python3-dev python3-pip python3-venv build-essential pylint git && apt-get clean && rm -fr rm -rf /var/lib/apt/lists/* RUN pip install pre-commit --break-system-packages RUN mkdir /tmp/src -COPY .pre-commit-config.yaml fake_python_module /tmp/src/ +COPY .pre-commit-config.yaml .pre-commit-pylint fake_python_module /tmp/src/ RUN cd /tmp/src && git init && git add * && pre-commit autoupdate && pre-commit run --all-files && rm -fr /tmp/src