# See CONTRIBUTING.rst, we expect this to be run via a git pre-commit hook. # You can also run the checks directly at the terminal, e.g. # # $ pre-commit run --all-files # repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-executables-have-shebangs files: \.(py|sh)$ - id: check-json - id: end-of-file-fixer files: \.py$ - id: mixed-line-ending exclude: \.bb$ - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.13.3 hooks: # Run the Ruff linter. - id: ruff-check args: [ '--fix', '--extend-select=B,C4,D,ISC,UP', '--extend-ignore=E501,F401,F841,D105,D2,D4', '--extend-ignore=B007,B009,B010,B018,B028,B904,UP031', '--extend-per-file-ignores=Tests/*.py:D101,Tests/*.py:D102,Tests/*.py:D103', '--extend-per-file-ignores=Tests/*.py:B015', '--config=lint.isort.force-single-line=true', '--config=lint.isort.order-by-type=false', ] - repo: https://github.com/psf/black-pre-commit-mirror rev: 24.10.0 hooks: - id: black args: [--check,--target-version,py310] - repo: https://github.com/PyCQA/flake8 rev: 7.3.0 hooks: - id: flake8 additional_dependencies: [ 'flake8-rst-docstrings>=0.2.3', ] - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.16.1 hooks: - id: mypy # equivalent to "files" in .mypy.ini files: '^(Bio|BioSQL)/' - repo: https://github.com/asottile/blacken-docs rev: 1.20.0 hooks: - id: blacken-docs additional_dependencies: [black==24.10.0] exclude: ^.github/ - repo: https://github.com/rstcheck/rstcheck rev: v6.2.5 hooks: - id: rstcheck args: [ '--ignore-roles=ref,numref,py:mod', --ignore-directives=toctree, --ignore-substitutions=version, --report-level=warning, --ignore-messages=Unknown\ target\ name ] - repo: https://github.com/PyCQA/doc8 rev: v2.0.0 hooks: - id: doc8 additional_dependencies: [pygments] args: [ --quiet, --ignore-path=Doc/examples/ec_*.txt, '--ignore=D000,D001,D002,D004' ] - repo: https://github.com/codespell-project/codespell rev: v2.4.1 hooks: - id: codespell files: \.(rst|md)$ args: [ --ignore-regex, '(^|\W)([A-Z]{2,3})(\W|$)', -L, 'ser,hsa,hist,fpr,blosum,ags,manuel,mian,fallin' ] - repo: local hooks: - id: doi-link-style name: Enforce https://doi.org/ style description: Check DOI link style, see https://www.crossref.org/display-guidelines/ entry: '(?i)(doi:|dx\.doi\.org|http://doi\.org)' language: pygrep files: \.(rst|tex)$ - id: contrib-sort name: Contributor sorting description: Confirms alphabetical sorting of the CONTRIB.rst file entry: bash -c 'for n in $(seq 0 "$#"); do grep "^- " "${!n}" | LC_ALL=C sort -u -c -f; done' #entry: 'grep "^- " CONTRIB.rst | LC_ALL=C sort -u -c -f' language: system files: ^CONTRIB\.rst$ ci: # Settings for the https://pre-commit.ci/ continuous integration service autofix_prs: true # Default message is more verbose autoupdate_commit_msg: '[pre-commit.ci] autoupdate' # Default is weekly autoupdate_schedule: quarterly # Currently pre-commit.ci checks all files, and all hooks takes too long # and causes a timeout - so as a short-term workaround, skip flake8 etc: skip: [ check-json, mixed-line-ending, flake8, rstcheck, doc8, codespell, doi-link-style ]