diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..62b24c9f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,66 @@ +--- +default_language_version: + # force all unspecified python hooks to run python3 + python: python3 +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: trailing-whitespace + # NOTE(JayF): We shouldn't modify release notes after their + # associated release. Instead, ignore these minor lint issues. + - id: mixed-line-ending + args: ['--fix', 'lf'] + exclude: | + (?x)( + .*.svg$| + ) + - id: fix-byte-order-marker + - id: check-merge-conflict + - id: debug-statements + - id: check-json + files: .*\.json$ + - id: check-yaml + files: .*\.(yaml|yml)$ + exclude: releasenotes/.*$ + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.4 + hooks: + - id: remove-tabs + exclude: '.*\.(svg)$' + - repo: https://opendev.org/openstack/hacking + rev: 6.1.0 + hooks: + - id: hacking + additional_dependencies: [] + exclude: '^(doc|releasenotes|tools)/.*$' + - repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + args: [--write-changes] + - repo: https://github.com/sphinx-contrib/sphinx-lint + rev: v1.0.0 + hooks: + - id: sphinx-lint + args: [--enable=default-role] + files: ^doc/|releasenotes|api-ref + - repo: https://opendev.org/openstack/bashate + rev: 2.1.0 + hooks: + - id: bashate + args: ["-iE006,E044", "-eE005,E042"] + name: bashate + description: This hook runs bashate for linting shell scripts + entry: bashate + language: python + types: [shell] + - repo: https://github.com/PyCQA/doc8 + rev: v1.1.2 + hooks: + - id: doc8 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.7.3 + hooks: + - id: ruff + args: ['--fix', '--unsafe-fixes'] diff --git a/pyproject.toml b/pyproject.toml index 5e862a95..4fa5ffdd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,18 @@ [build-system] requires = ["pbr>=6.0.0", "setuptools>=64.0.0"] build-backend = "pbr.build" + +[tool.doc8] +ignore = ["D001"] + +[tool.ruff] +line-length = 79 +target-version = "py37" + +[tool.ruff.lint] +select = [ + "E", # pycodestyle (error) + "F", # pyflakes + "G", # flake8-logging-format + "LOG", # flake8-logging +] diff --git a/tox.ini b/tox.ini index 3a67abc4..bf8061c0 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -minversion = 3.18.0 +minversion = 4.4.0 envlist = pep8 ignore_basepython_conflict=true @@ -14,11 +14,9 @@ deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/up commands = stestr run --slowest {posargs} [testenv:pep8] -deps = - hacking~=6.0.0 # Apache-2.0 - flake8-import-order>=0.17.1 # LGPLv3 - pycodestyle>=2.0.0,<3.0.0 # MIT -commands = flake8 {posargs} +deps = pre-commit +allowlist_externals = pre-commit +commands = pre-commit run --all-files --show-diff-on-failure {posargs} [testenv:venv] commands = {posargs}