# SPARKNET Pre-commit Configuration # Following FAANG best practices for code quality # Install: pip install pre-commit && pre-commit install repos: # Python code formatting - repo: https://github.com/psf/black rev: 23.12.1 hooks: - id: black language_version: python3.12 args: [--line-length=100] # Python import sorting - repo: https://github.com/pycqa/isort rev: 5.13.2 hooks: - id: isort args: [--profile=black, --line-length=100] # Python linting - repo: https://github.com/pycqa/flake8 rev: 7.0.0 hooks: - id: flake8 args: [--max-line-length=100, --extend-ignore=E203,E501,W503] additional_dependencies: - flake8-bugbear - flake8-comprehensions # Type checking - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.8.0 hooks: - id: mypy args: [--ignore-missing-imports, --no-strict-optional] additional_dependencies: - types-requests - types-PyYAML - pydantic>=2.0 # General file checks - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml args: [--unsafe] - id: check-json - id: check-added-large-files args: [--maxkb=1000] - id: check-merge-conflict - id: detect-private-key - id: check-case-conflict # Security checks - repo: https://github.com/PyCQA/bandit rev: 1.7.7 hooks: - id: bandit args: [-r, src/, -ll, --skip=B101] exclude: tests/ # Markdown linting - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.38.0 hooks: - id: markdownlint args: [--fix] exclude: ^docs/archive/ # CI/CD Settings ci: autofix_commit_msg: "style: auto-fix code style issues" autofix_prs: true autoupdate_commit_msg: "chore: update pre-commit hooks"