From fb2b1e1be3fb18eafe10d2106ab8e0db3c9b005e Mon Sep 17 00:00:00 2001 From: Tim Schilling <tim@aspiredu.com> Date: Mon, 6 Mar 2023 15:51:42 -0600 Subject: [PATCH] Utilize pre-commit to manage lint and styles. --- .flake8 | 4 ++ .gitignore | 1 - .pre-commit-config.yaml | 54 +++++++++++++++++++ pyproject.toml | 31 ++++++----- .../management/commands/safemigrate.py | 4 +- tests/safemigrate_test.py | 3 ++ 6 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 .flake8 create mode 100644 .pre-commit-config.yaml diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..7d44b7e --- /dev/null +++ b/.flake8 @@ -0,0 +1,4 @@ +# TODO: move this to pyproject.toml when supported, see https://github.com/PyCQA/flake8/issues/234 + +[flake8] +extend-ignore = E203, E501 diff --git a/.gitignore b/.gitignore index c4b0eb9..7a06605 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,3 @@ db.sqlite3 htmlcov/ dist/ .tox/ - diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..b07dcec --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,54 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-toml + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + - id: mixed-line-ending +- repo: https://github.com/pycqa/flake8 + rev: 6.0.0 + hooks: + - id: flake8 +- repo: https://github.com/pycqa/doc8 + rev: v1.1.1 + hooks: + - id: doc8 +- repo: https://github.com/asottile/pyupgrade + rev: v3.3.1 + hooks: + - id: pyupgrade + args: [--py38-plus] +- repo: https://github.com/adamchainz/django-upgrade + rev: 1.13.0 + hooks: + - id: django-upgrade + args: [--target-version, "3.2"] +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort +- repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: + - id: python-check-blanket-noqa + - id: python-check-mock-methods + - id: python-no-eval + - id: python-no-log-warn + - id: rst-backticks + - id: rst-directive-colons +- repo: https://github.com/psf/black + rev: 23.1.0 + hooks: + - id: black + language_version: python3 + entry: black --target-version=py38 +- repo: https://github.com/tox-dev/pyproject-fmt + rev: 0.9.2 + hooks: + - id: pyproject-fmt +- repo: https://github.com/abravalheri/validate-pyproject + rev: v0.12.1 + hooks: + - id: validate-pyproject diff --git a/pyproject.toml b/pyproject.toml index a3a9a6f..f6d36c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,23 @@ [build-system] -requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" +requires = [ + "poetry>=0.12", +] + +[tool.isort] +combine_as_imports = true +profile = "black" + +[tool.coverage.run] +branch = true +parallel = true +source = ["django_safemigrate"] + +[tool.coverage.paths] +source = ["src", ".tox/*/site-packages"] + +[tool.coverage.report] +show_missing = true [tool.poetry] name = "django-safemigrate" @@ -16,15 +33,3 @@ django = ">=3.2,<5.0" [tool.poetry.dev-dependencies] tox = "*" -black = "*" - -[tool.coverage.run] -branch = true -parallel = true -source = ["django_safemigrate"] - -[tool.coverage.paths] -source = ["src", ".tox/*/site-packages"] - -[tool.coverage.report] -show_missing = true diff --git a/src/django_safemigrate/management/commands/safemigrate.py b/src/django_safemigrate/management/commands/safemigrate.py index 8ca530d..53b5c1a 100644 --- a/src/django_safemigrate/management/commands/safemigrate.py +++ b/src/django_safemigrate/management/commands/safemigrate.py @@ -3,11 +3,11 @@ Migration safety is enforced by a pre_migrate signal receiver. """ from django.conf import settings -from django.db.models.signals import pre_migrate from django.core.management.base import CommandError from django.core.management.commands import migrate +from django.db.models.signals import pre_migrate + from django_safemigrate import Safe -from django_safemigrate.apps import SafeMigrateConfig def safety(migration): diff --git a/tests/safemigrate_test.py b/tests/safemigrate_test.py index 1cd4539..36702ff 100644 --- a/tests/safemigrate_test.py +++ b/tests/safemigrate_test.py @@ -1,6 +1,7 @@ """Unit tests for the safemigrate command.""" import pytest from django.core.management.base import CommandError + from django_safemigrate import Safe from django_safemigrate.management.commands.safemigrate import Command @@ -156,6 +157,8 @@ def test_blocked_by_after_run_before(self, receiver): ), (Migration("eggs", "0001_safety", safe=Safe.before_deploy), False), ] + with pytest.raises(CommandError): + receiver(plan=plan) def test_consecutive_after(self, receiver): """Consecutive after migrations are ok."""