From 396e84814869b977bc3f76b93f77960e7ecd2016 Mon Sep 17 00:00:00 2001 From: David Slusser Date: Sat, 18 Apr 2026 15:01:56 -0700 Subject: [PATCH 1/4] updating workflows and django version --- .github/workflows/bandit.yaml | 10 ++++++---- .github/workflows/django.yaml | 31 ++++++++++++++++++++++++++++++ .github/workflows/fawltydeps.yaml | 21 ++++++++++++++++++++ .github/workflows/isort.yaml | 10 +++++++--- .github/workflows/mypy.yaml | 11 ++++++++--- .github/workflows/radon.yaml | 8 ++++++-- .github/workflows/ruff_format.yaml | 10 +++++++--- .github/workflows/ruff_lint.yaml | 12 ++++++++---- pyproject.toml | 4 ++-- 9 files changed, 96 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/django.yaml create mode 100644 .github/workflows/fawltydeps.yaml diff --git a/.github/workflows/bandit.yaml b/.github/workflows/bandit.yaml index 28d261b..29a1b76 100644 --- a/.github/workflows/bandit.yaml +++ b/.github/workflows/bandit.yaml @@ -1,6 +1,9 @@ -name: Bandit Security Analysis +name: Security Analysis (bandit) -on: [push] +on: + push: + branches-ignore: + - main jobs: bandit: @@ -11,5 +14,4 @@ jobs: with: src: "src" options: "-c pyproject.toml -r" - pip_install_command: "pip install .[dev]" - python_version: "3.11" + python_version: "3.13" diff --git a/.github/workflows/django.yaml b/.github/workflows/django.yaml new file mode 100644 index 0000000..df74ee1 --- /dev/null +++ b/.github/workflows/django.yaml @@ -0,0 +1,31 @@ +name: Django Check + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + django-check: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v4 + with: + python-version: "3.13" + + - name: Install dependencies + run: | + pip install -e . + + - name: Run Django check + env: + DJANGO_SETTINGS_MODULE: core.settings + DB_ENGINE: django.db.backends.sqlite3 + DB_NAME: test_db.sqlite3 + SECRET_KEY: test_secret_key + DJANGO_DEBUG: False + run: | + cd src/django_project + python manage.py check diff --git a/.github/workflows/fawltydeps.yaml b/.github/workflows/fawltydeps.yaml new file mode 100644 index 0000000..4f709ad --- /dev/null +++ b/.github/workflows/fawltydeps.yaml @@ -0,0 +1,21 @@ +name: Dependency Consistency Check (fawltydeps) + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + fawltydeps: + runs-on: ubuntu-latest + name: "fawltydeps" + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: "3.13" + - name: Install dependencies + run: | + pip install -e .[dev] + - name: Run fawltydeps + run: | + fawltydeps diff --git a/.github/workflows/isort.yaml b/.github/workflows/isort.yaml index 2364170..5b52f95 100644 --- a/.github/workflows/isort.yaml +++ b/.github/workflows/isort.yaml @@ -1,14 +1,18 @@ -name: isort +name: Import Order Validation (isort) -on: [push] +on: + push: + branches-ignore: + - main jobs: isort: runs-on: ubuntu-latest name: "isort" + if: github.event.created == false # Skip if this push created a new branch steps: - uses: davidslusser/actions_python_isort@v1.0.1 with: src: "src/django_project" options: "--check --diff" - python_version: "3.11" + python_version: "3.13" diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml index cd94de4..ac392b3 100644 --- a/.github/workflows/mypy.yaml +++ b/.github/workflows/mypy.yaml @@ -1,14 +1,19 @@ -name: mypy +name: Type Checking (mypy) -on: [push] +on: + push: + branches-ignore: + - main jobs: mypy: runs-on: ubuntu-latest name: "mypy" + if: github.event.created == false # Skip if this push created a new branch steps: - uses: davidslusser/actions_python_mypy@v1.0.1 with: src: "src" - options: "-v" + options: "" pip_install_command: "pip install -e .[dev]" + python_version: "3.13" diff --git a/.github/workflows/radon.yaml b/.github/workflows/radon.yaml index 31a1fde..516014c 100644 --- a/.github/workflows/radon.yaml +++ b/.github/workflows/radon.yaml @@ -1,11 +1,15 @@ -name: radon +name: Code Metrics Analysis (radon) -on: [push] +on: + push: + branches-ignore: + - main jobs: radon: runs-on: ubuntu-latest name: "radon" + if: github.event.created == false # Skip if this push created a new branch steps: - uses: actions/checkout@v3 - uses: davidslusser/actions_python_radon@v1.0.0 diff --git a/.github/workflows/ruff_format.yaml b/.github/workflows/ruff_format.yaml index eff2b7a..ea1f7fb 100644 --- a/.github/workflows/ruff_format.yaml +++ b/.github/workflows/ruff_format.yaml @@ -1,15 +1,19 @@ -name: ruff_format +name: Code Consistency Check (ruff format) -on: [push] +on: + push: + branches-ignore: + - main jobs: ruff: runs-on: ubuntu-latest name: "ruff" + if: github.event.created == false # Skip if this push created a new branch steps: - name: actions_python_ruff uses: davidslusser/actions_python_ruff@v1.0.3 with: src: "src/django_project" command: ruff format src --check - python_version: "3.11" + python_version: "3.13" diff --git a/.github/workflows/ruff_lint.yaml b/.github/workflows/ruff_lint.yaml index 1c88f6b..ea1f7fb 100644 --- a/.github/workflows/ruff_lint.yaml +++ b/.github/workflows/ruff_lint.yaml @@ -1,15 +1,19 @@ -name: ruff_lint +name: Code Consistency Check (ruff format) -on: [push] +on: + push: + branches-ignore: + - main jobs: ruff: runs-on: ubuntu-latest name: "ruff" + if: github.event.created == false # Skip if this push created a new branch steps: - name: actions_python_ruff uses: davidslusser/actions_python_ruff@v1.0.3 with: src: "src/django_project" - options: "-v" - python_version: "3.11" + command: ruff format src --check + python_version: "3.13" diff --git a/pyproject.toml b/pyproject.toml index 9a4c096..8abcf83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] dependencies = [ - "django~=5.2", + "django~=5.2.12", "django-braces", "django-debug-toolbar", "django-environ", @@ -20,7 +20,7 @@ keywords = ["django"] license = {file = "LICENSE"} name = "my_django_project" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.13" [project.optional-dependencies] From 91ff3cc4232030da0c9dc9e2b61e0b377a4f6923 Mon Sep 17 00:00:00 2001 From: David Slusser Date: Sat, 18 Apr 2026 15:14:34 -0700 Subject: [PATCH 2/4] fix unused dependencies --- pyproject.toml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8abcf83..66361a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,6 @@ dependencies = [ "djangorestframework-filters==1.0.0.dev0", "drf-flex-fields", "drf-spectacular", - "drf-renderer-xlsx", "whitenoise", ] description = "Spokane Python Community" @@ -26,8 +25,8 @@ requires-python = ">=3.13" [project.optional-dependencies] dev = [ "bandit", - "coveralls", "faker", + "fawltydeps", "isort", "model-bakery", "mypy", @@ -37,7 +36,6 @@ dev = [ "pytest-cov", "pytest-django", "radon", - "safety", "types-python-dateutil", "types-requests", "typing_extensions", @@ -72,6 +70,39 @@ omit = [ ] +[tool.fawltydeps] +code = ["src/django_project"] +deps = ["pyproject.toml"] +ignore_unused = [ + "bandit", + "black", + "django-braces", + "django-celery-beat", + "django-debug-toolbar", + "django-extensions", + "django-filter", + "gunicorn", + "faker", + "fawltydeps", + "isort", + "model-bakery", + "mypy", + "mypy-extensions", + "ruff", + "psycopg2-binary", + "pytest", + "pytest-cov", + "pytest-django", + "radon", + "redis", + "types-python-dateutil", + "types-requests", + "typing_extensions", + "whitenoise" + ] +output_format = "human_detailed" + + [tool.isort] profile = "black" From a8b510a1f439bb62de761dc5fde0fa6bba730ffb Mon Sep 17 00:00:00 2001 From: David Slusser Date: Sat, 18 Apr 2026 15:15:39 -0700 Subject: [PATCH 3/4] change minimum python version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 66361a1..5aaf662 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ keywords = ["django"] license = {file = "LICENSE"} name = "my_django_project" readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.12" [project.optional-dependencies] From 74fcdd59a024334acf7bd443e3e55d2a4b3cddc2 Mon Sep 17 00:00:00 2001 From: David Slusser Date: Sat, 18 Apr 2026 15:19:05 -0700 Subject: [PATCH 4/4] restore xlsx renderer --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5aaf662..e1473d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ dependencies = [ "djangorestframework", "djangorestframework-filters==1.0.0.dev0", "drf-flex-fields", + "drf-renderer-xlsx", "drf-spectacular", "whitenoise", ] @@ -81,6 +82,7 @@ ignore_unused = [ "django-debug-toolbar", "django-extensions", "django-filter", + "drf-renderer-xlsx", "gunicorn", "faker", "fawltydeps",