mirror of
https://github.com/google/benchmark.git
synced 2025-01-16 06:40:13 +08:00
b93f5a5929
* Add pre-commit config and GitHub Actions job Contains the following hooks: * buildifier - for formatting and linting Bazel files. * mypy, ruff, isort, black - for Python typechecking, import hygiene, static analysis, and formatting. The pylint CI job was changed to be a pre-commit CI job, where pre-commit is bootstrapped via Python. Pylint is currently no longer part of the code checks, but can be re-added if requested. The reason to drop was that it does not play nicely with pre-commit, and lots of its functionality and responsibilities are actually covered in ruff. * Add dev extra to pyproject.toml for development installs * Clarify that pre-commit contains only Python and Bazel hooks * Add one-line docstrings to Bazel modules * Apply buildifier pre-commit fixes to Bazel files * Apply pre-commit fixes to Python files * Supply --profile=black to isort to prevent conflicts * Fix nanobind build file formatting * Add tooling configs to `pyproject.toml` In particular, set line length 80 for all Python files. * Reformat all Python files to line length 80, fix return type annotations Also ignores the `tools/compare.py` and `tools/gbench/report.py` files for mypy, since they emit a barrage of errors which we can deal with later. The errors are mostly related to dynamic classmethod definition.
40 lines
1.1 KiB
YAML
40 lines
1.1 KiB
YAML
name: python + Bazel pre-commit checks
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
pre-commit:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
MYPY_CACHE_DIR: "${{ github.workspace }}/.cache/mypy"
|
|
RUFF_CACHE_DIR: "${{ github.workspace }}/.cache/ruff"
|
|
PRE_COMMIT_HOME: "${{ github.workspace }}/.cache/pre-commit"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: 3.11
|
|
cache: 'pip'
|
|
cache-dependency-path: pyproject.toml
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install -e ".[dev]"
|
|
- name: Cache pre-commit tools
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.MYPY_CACHE_DIR }}
|
|
${{ env.RUFF_CACHE_DIR }}
|
|
${{ env.PRE_COMMIT_HOME }}
|
|
key: ${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}-linter-cache
|
|
- name: Run pre-commit checks
|
|
run: |
|
|
pre-commit run --all-files --verbose --show-diff-on-failure
|