mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-09-20 10:52:34 +03:00
Merge branch 'main' into uv-generated-project
# Conflicts: # README.md # {{cookiecutter.project_slug}}/compose/local/django/Dockerfile # {{cookiecutter.project_slug}}/compose/local/docs/Dockerfile
This commit is contained in:
commit
5ef36ecefc
1
.github/ISSUE_TEMPLATE/bug.md
vendored
1
.github/ISSUE_TEMPLATE/bug.md
vendored
|
@ -13,7 +13,6 @@ labels: bug
|
|||
<!-- To assist you best, please include commands that you've run, options you've selected and any relevant logs -->
|
||||
|
||||
- Host system configuration:
|
||||
|
||||
- Version of cookiecutter CLI (get it with `cookiecutter --version`):
|
||||
- OS name and version:
|
||||
|
||||
|
|
25
.github/contributors.json
vendored
25
.github/contributors.json
vendored
|
@ -1728,5 +1728,30 @@
|
|||
"name": "Dominique Plante",
|
||||
"github_login": "dominiqueplante",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Lucas Klasa",
|
||||
"github_login": "lucaskbr",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "DevForsure",
|
||||
"github_login": "DevForsure",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Vincent Leduc",
|
||||
"github_login": "leducvin",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Martín Blech",
|
||||
"github_login": "martinblech",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "jlitrell",
|
||||
"github_login": "jlitrell",
|
||||
"twitter_username": ""
|
||||
}
|
||||
]
|
8
.github/workflows/align-versions.yml
vendored
8
.github/workflows/align-versions.yml
vendored
|
@ -14,7 +14,7 @@ permissions:
|
|||
|
||||
jobs:
|
||||
run:
|
||||
if: ${{ github.actor == 'pyup-bot' }}
|
||||
if: ${{ github.event_name == 'workflow_dispatch' || github.actor == 'pyup-bot' || github.actor == 'dependabot[bot]' }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
|
@ -31,14 +31,14 @@ jobs:
|
|||
name: "${{ matrix.job.name }} versions"
|
||||
steps:
|
||||
- name: Checkout with token
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
if: ${{ env.GH_PAT != '' }}
|
||||
with:
|
||||
token: ${{ env.GH_PAT }}
|
||||
ref: ${{ github.head_ref }}
|
||||
|
||||
- name: Checkout without token
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
if: ${{ env.GH_PAT == '' }}
|
||||
with:
|
||||
ref: ${{ github.head_ref }}
|
||||
|
@ -47,6 +47,6 @@ jobs:
|
|||
|
||||
- run: uv run ${{ matrix.job.script }}
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
- uses: stefanzweifel/git-auto-commit-action@v6
|
||||
with:
|
||||
commit_message: Align versions
|
||||
|
|
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
|
@ -2,7 +2,7 @@ name: CI
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: ["master", "main"]
|
||||
branches: ["main"]
|
||||
pull_request:
|
||||
|
||||
concurrency:
|
||||
|
@ -22,7 +22,7 @@ jobs:
|
|||
name: "pytest ${{ matrix.os }}"
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
- name: Install dependencies
|
||||
|
@ -51,7 +51,7 @@ jobs:
|
|||
COMPOSE_DOCKER_CLI_BUILD: 1
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
- name: Install dependencies
|
||||
|
@ -93,7 +93,7 @@ jobs:
|
|||
DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
@ -103,6 +103,6 @@ jobs:
|
|||
run: uv sync
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "22.14"
|
||||
node-version: "24.6"
|
||||
- name: Bare Metal ${{ matrix.script.name }}
|
||||
run: sh tests/test_bare.sh ${{ matrix.script.args }}
|
||||
|
|
6
.github/workflows/dependabot-uv-lock.yml
vendored
6
.github/workflows/dependabot-uv-lock.yml
vendored
|
@ -17,17 +17,17 @@ jobs:
|
|||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
steps:
|
||||
- name: Checkout with token
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
if: ${{ env.GH_PAT != '' }}
|
||||
with:
|
||||
token: ${{ env.GH_PAT }}
|
||||
|
||||
- name: Checkout without token
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
if: ${{ env.GH_PAT == '' }}
|
||||
|
||||
- uses: astral-sh/setup-uv@v6
|
||||
- run: uv lock
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
- uses: stefanzweifel/git-auto-commit-action@v6
|
||||
with:
|
||||
commit_message: Regenerate uv.lock
|
||||
|
|
2
.github/workflows/django-issue-checker.yml
vendored
2
.github/workflows/django-issue-checker.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
|||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
- name: Create Django Major Issue
|
||||
|
|
2
.github/workflows/pre-commit-autoupdate.yml
vendored
2
.github/workflows/pre-commit-autoupdate.yml
vendored
|
@ -21,7 +21,7 @@ jobs:
|
|||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
|
2
.github/workflows/update-changelog.yml
vendored
2
.github/workflows/update-changelog.yml
vendored
|
@ -14,7 +14,7 @@ jobs:
|
|||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
- name: Set git details
|
||||
|
|
6
.github/workflows/update-contributors.yml
vendored
6
.github/workflows/update-contributors.yml
vendored
|
@ -3,7 +3,7 @@ name: Update Contributors
|
|||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
@ -17,7 +17,7 @@ jobs:
|
|||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
- name: Update list
|
||||
|
@ -26,7 +26,7 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Commit changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v5.0.1
|
||||
uses: stefanzweifel/git-auto-commit-action@v6
|
||||
with:
|
||||
commit_message: Update Contributors
|
||||
file_pattern: CONTRIBUTORS.md .github/contributors.json
|
||||
|
|
|
@ -7,7 +7,7 @@ default_language_version:
|
|||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
|
@ -44,7 +44,7 @@ repos:
|
|||
- id: isort
|
||||
|
||||
- repo: https://github.com/PyCQA/flake8
|
||||
rev: 7.2.0
|
||||
rev: 7.3.0
|
||||
hooks:
|
||||
- id: flake8
|
||||
|
||||
|
|
384
CHANGELOG.md
384
CHANGELOG.md
|
@ -3,6 +3,390 @@ All enhancements and patches to Cookiecutter Django will be documented in this f
|
|||
|
||||
<!-- GENERATOR_PLACEHOLDER -->
|
||||
|
||||
## 2025.08.27
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-upgrade pre-commit hook ([#5991](https://github.com/cookiecutter/cookiecutter-django/pull/5991))
|
||||
|
||||
## 2025.08.26
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.35.1 ([#5988](https://github.com/cookiecutter/cookiecutter-django/pull/5988))
|
||||
|
||||
- Update sphinx-autobuild to 2025.8.25 ([#5989](https://github.com/cookiecutter/cookiecutter-django/pull/5989))
|
||||
|
||||
## 2025.08.25
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update collectfasta to 3.3.1 ([#5987](https://github.com/cookiecutter/cookiecutter-django/pull/5987))
|
||||
|
||||
- Update coverage to 7.10.5 ([#5986](https://github.com/cookiecutter/cookiecutter-django/pull/5986))
|
||||
|
||||
- Update pytest-sugar to 1.1.1 ([#5984](https://github.com/cookiecutter/cookiecutter-django/pull/5984))
|
||||
|
||||
## 2025.08.21
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.10 ([#5983](https://github.com/cookiecutter/cookiecutter-django/pull/5983))
|
||||
|
||||
## 2025.08.18
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Bump node from 24.5 to 24.6 ([#5981](https://github.com/cookiecutter/cookiecutter-django/pull/5981))
|
||||
|
||||
- Update coverage to 7.10.4 ([#5980](https://github.com/cookiecutter/cookiecutter-django/pull/5980))
|
||||
|
||||
- Update pytest-sugar to 1.1.0 ([#5979](https://github.com/cookiecutter/cookiecutter-django/pull/5979))
|
||||
|
||||
## 2025.08.15
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-allauth to 65.11.0 ([#5977](https://github.com/cookiecutter/cookiecutter-django/pull/5977))
|
||||
|
||||
- Update sentry-sdk to 2.35.0 ([#5976](https://github.com/cookiecutter/cookiecutter-django/pull/5976))
|
||||
|
||||
## 2025.08.14
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.9 ([#5975](https://github.com/cookiecutter/cookiecutter-django/pull/5975))
|
||||
|
||||
## 2025.08.13
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix imagemin corruption with Gulp ([#5974](https://github.com/cookiecutter/cookiecutter-django/pull/5974))
|
||||
|
||||
## 2025.08.12
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.10.3 ([#5972](https://github.com/cookiecutter/cookiecutter-django/pull/5972))
|
||||
|
||||
## 2025.08.10
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update pre-commit to 4.3.0 ([#5971](https://github.com/cookiecutter/cookiecutter-django/pull/5971))
|
||||
|
||||
- Auto-update pre-commit hooks ([#5970](https://github.com/cookiecutter/cookiecutter-django/pull/5970))
|
||||
|
||||
## 2025.08.08
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- Remove `project.css` when a bundler is used ([#5874](https://github.com/cookiecutter/cookiecutter-django/pull/5874))
|
||||
|
||||
### Updated
|
||||
|
||||
- Update redis to 6.4.0 ([#5968](https://github.com/cookiecutter/cookiecutter-django/pull/5968))
|
||||
|
||||
- Update ruff to 0.12.8 ([#5969](https://github.com/cookiecutter/cookiecutter-django/pull/5969))
|
||||
|
||||
## 2025.08.07
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update djangorestframework to 3.16.1 ([#5966](https://github.com/cookiecutter/cookiecutter-django/pull/5966))
|
||||
|
||||
## 2025.08.06
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.10.2 ([#5964](https://github.com/cookiecutter/cookiecutter-django/pull/5964))
|
||||
|
||||
- Update redis to 6.3.0 ([#5963](https://github.com/cookiecutter/cookiecutter-django/pull/5963))
|
||||
|
||||
## 2025.08.05
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- Rename `master` branch to `main` ([#5961](https://github.com/cookiecutter/cookiecutter-django/pull/5961))
|
||||
|
||||
### Updated
|
||||
|
||||
- Bump node from 22.14 to 24.5 in local Docker image ([#5960](https://github.com/cookiecutter/cookiecutter-django/pull/5960))
|
||||
|
||||
## 2025.08.01
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-debug-toolbar to 6.0.0 ([#5945](https://github.com/cookiecutter/cookiecutter-django/pull/5945))
|
||||
|
||||
- Bump amazon/aws-cli from 2.27.12 to 2.28.0 ([#5957](https://github.com/cookiecutter/cookiecutter-django/pull/5957))
|
||||
|
||||
- Update mypy to 1.17.1 ([#5956](https://github.com/cookiecutter/cookiecutter-django/pull/5956))
|
||||
|
||||
## 2025.07.30
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- docs: remove `$` from shell command examples for easier copy-pasting ([#5948](https://github.com/cookiecutter/cookiecutter-django/pull/5948))
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.34.1 ([#5955](https://github.com/cookiecutter/cookiecutter-django/pull/5955))
|
||||
|
||||
- Update ruff to 0.12.7 ([#5952](https://github.com/cookiecutter/cookiecutter-django/pull/5952))
|
||||
|
||||
## 2025.07.27
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.10.1 ([#5947](https://github.com/cookiecutter/cookiecutter-django/pull/5947))
|
||||
|
||||
## 2025.07.25
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-anymail to 13.0.1 ([#5946](https://github.com/cookiecutter/cookiecutter-django/pull/5946))
|
||||
|
||||
## 2025.07.24
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.10.0 ([#5944](https://github.com/cookiecutter/cookiecutter-django/pull/5944))
|
||||
|
||||
- Update ruff to 0.12.5 ([#5943](https://github.com/cookiecutter/cookiecutter-django/pull/5943))
|
||||
|
||||
- Bump traefik from 3.4.4 to 3.5.0 ([#5942](https://github.com/cookiecutter/cookiecutter-django/pull/5942))
|
||||
|
||||
## 2025.07.22
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.33.2 ([#5941](https://github.com/cookiecutter/cookiecutter-django/pull/5941))
|
||||
|
||||
## 2025.07.21
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.33.1 ([#5940](https://github.com/cookiecutter/cookiecutter-django/pull/5940))
|
||||
|
||||
## 2025.07.18
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update mypy to 1.17.0 ([#5937](https://github.com/cookiecutter/cookiecutter-django/pull/5937))
|
||||
|
||||
- Update django-stubs to 5.2.2 ([#5936](https://github.com/cookiecutter/cookiecutter-django/pull/5936))
|
||||
|
||||
## 2025.07.17
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.4 ([#5935](https://github.com/cookiecutter/cookiecutter-django/pull/5935))
|
||||
|
||||
## 2025.07.16
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.33.0 ([#5933](https://github.com/cookiecutter/cookiecutter-django/pull/5933))
|
||||
|
||||
## 2025.07.15
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update mypy to 1.16.1 ([#5901](https://github.com/cookiecutter/cookiecutter-django/pull/5901))
|
||||
|
||||
- Bump traefik from 3.4.3 to 3.4.4 ([#5930](https://github.com/cookiecutter/cookiecutter-django/pull/5930))
|
||||
|
||||
## 2025.07.14
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- Fix howto docker command ([#5929](https://github.com/cookiecutter/cookiecutter-django/pull/5929))
|
||||
|
||||
## 2025.07.11
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.3 ([#5928](https://github.com/cookiecutter/cookiecutter-django/pull/5928))
|
||||
|
||||
- Update django-allauth to 65.10.0 ([#5927](https://github.com/cookiecutter/cookiecutter-django/pull/5927))
|
||||
|
||||
## 2025.07.05
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.9.2 ([#5925](https://github.com/cookiecutter/cookiecutter-django/pull/5925))
|
||||
|
||||
## 2025.07.04
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.2 ([#5923](https://github.com/cookiecutter/cookiecutter-django/pull/5923))
|
||||
|
||||
## 2025.07.02
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update pillow to 11.3.0 ([#5921](https://github.com/cookiecutter/cookiecutter-django/pull/5921))
|
||||
|
||||
## 2025.06.30
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Bump traefik from 3.4.1 to 3.4.3 ([#5917](https://github.com/cookiecutter/cookiecutter-django/pull/5917))
|
||||
|
||||
- Update uvicorn to 0.35.0 ([#5919](https://github.com/cookiecutter/cookiecutter-django/pull/5919))
|
||||
|
||||
- Update sentry-sdk to 2.32.0 ([#5918](https://github.com/cookiecutter/cookiecutter-django/pull/5918))
|
||||
|
||||
## 2025.06.26
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.1 ([#5916](https://github.com/cookiecutter/cookiecutter-django/pull/5916))
|
||||
|
||||
## 2025.06.24
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.31.0 ([#5912](https://github.com/cookiecutter/cookiecutter-django/pull/5912))
|
||||
|
||||
## 2025.06.19
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update pytest to 8.4.1 ([#5907](https://github.com/cookiecutter/cookiecutter-django/pull/5907))
|
||||
|
||||
## 2025.06.18
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.12.0 ([#5904](https://github.com/cookiecutter/cookiecutter-django/pull/5904))
|
||||
|
||||
- Update django-stubs to 5.2.1 ([#5905](https://github.com/cookiecutter/cookiecutter-django/pull/5905))
|
||||
|
||||
- Update django-redis to 6.0.0 ([#5903](https://github.com/cookiecutter/cookiecutter-django/pull/5903))
|
||||
|
||||
- Update django-webpack-loader to 3.2.1 ([#5902](https://github.com/cookiecutter/cookiecutter-django/pull/5902))
|
||||
|
||||
## 2025.06.17
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-coverage-plugin to 3.1.1 ([#5900](https://github.com/cookiecutter/cookiecutter-django/pull/5900))
|
||||
|
||||
- Update watchfiles to 1.1.0 ([#5899](https://github.com/cookiecutter/cookiecutter-django/pull/5899))
|
||||
|
||||
## 2025.06.15
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.9.1 ([#5898](https://github.com/cookiecutter/cookiecutter-django/pull/5898))
|
||||
|
||||
## 2025.06.13
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.9.0 ([#5897](https://github.com/cookiecutter/cookiecutter-django/pull/5897))
|
||||
|
||||
- Update sentry-sdk to 2.30.0 ([#5896](https://github.com/cookiecutter/cookiecutter-django/pull/5896))
|
||||
|
||||
## 2025.06.11
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update collectfasta to 3.3.0 ([#5892](https://github.com/cookiecutter/cookiecutter-django/pull/5892))
|
||||
|
||||
## 2025.06.10
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django to 5.1.11 ([#5891](https://github.com/cookiecutter/cookiecutter-django/pull/5891))
|
||||
|
||||
- Update crispy-bootstrap5 to 2025.6 ([#5888](https://github.com/cookiecutter/cookiecutter-django/pull/5888))
|
||||
|
||||
## 2025.06.06
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.11.13 ([#5887](https://github.com/cookiecutter/cookiecutter-django/pull/5887))
|
||||
|
||||
## 2025.06.05
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Bump python from 3.12.10 to 3.12.11 in docs Docker ([#5883](https://github.com/cookiecutter/cookiecutter-django/pull/5883))
|
||||
|
||||
- Bump python from 3.12.10 to 3.12.11 in production Docker ([#5884](https://github.com/cookiecutter/cookiecutter-django/pull/5884))
|
||||
|
||||
- Bump python from 3.12.10 3.12.11 in local Docker ([#5885](https://github.com/cookiecutter/cookiecutter-django/pull/5885))
|
||||
|
||||
- Update django to 5.1.10 ([#5882](https://github.com/cookiecutter/cookiecutter-django/pull/5882))
|
||||
|
||||
## 2025.06.04
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update argon2-cffi to 25.1.0 ([#5880](https://github.com/cookiecutter/cookiecutter-django/pull/5880))
|
||||
|
||||
- Update pytest to 8.4.0 ([#5881](https://github.com/cookiecutter/cookiecutter-django/pull/5881))
|
||||
|
||||
## 2025.06.02
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-allauth to 65.9.0 ([#5879](https://github.com/cookiecutter/cookiecutter-django/pull/5879))
|
||||
|
||||
- Update uvicorn to 0.34.3 ([#5878](https://github.com/cookiecutter/cookiecutter-django/pull/5878))
|
||||
|
||||
- Update celery to 5.5.3 ([#5877](https://github.com/cookiecutter/cookiecutter-django/pull/5877))
|
||||
|
||||
- Update ruff to 0.11.12 ([#5872](https://github.com/cookiecutter/cookiecutter-django/pull/5872))
|
||||
|
||||
## 2025.05.28
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Always happy to get issues identified and pull requests!
|
|||
2. Clone your fork
|
||||
3. Create a branch for your changes
|
||||
|
||||
This last step is very important, don't start developing from master, it'll cause pain if you need to send another change later.
|
||||
This last step is very important, don't start developing from main, it'll cause pain if you need to send another change later.
|
||||
|
||||
## Testing
|
||||
|
||||
|
|
|
@ -768,6 +768,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>DevForsure</td>
|
||||
<td>
|
||||
<a href="https://github.com/DevForsure">DevForsure</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Diane Chen</td>
|
||||
<td>
|
||||
|
@ -1265,6 +1272,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td>afrowave</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>jlitrell</td>
|
||||
<td>
|
||||
<a href="https://github.com/jlitrell">jlitrell</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>John</td>
|
||||
<td>
|
||||
|
@ -1510,6 +1524,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lucas Klasa</td>
|
||||
<td>
|
||||
<a href="https://github.com/lucaskbr">lucaskbr</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Luis Nell</td>
|
||||
<td>
|
||||
|
@ -1594,6 +1615,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Martín Blech</td>
|
||||
<td>
|
||||
<a href="https://github.com/martinblech">martinblech</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>masavini</td>
|
||||
<td>
|
||||
|
@ -2336,6 +2364,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Vincent Leduc</td>
|
||||
<td>
|
||||
<a href="https://github.com/leducvin">leducvin</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Vitaly Babiy</td>
|
||||
<td>
|
||||
|
|
20
README.md
20
README.md
|
@ -1,8 +1,8 @@
|
|||
# Cookiecutter Django
|
||||
|
||||
[](https://github.com/cookiecutter/cookiecutter-django/actions/workflows/ci.yml?query=branch%3Amaster)
|
||||
[](https://github.com/cookiecutter/cookiecutter-django/actions/workflows/ci.yml?query=branch%3Amain)
|
||||
[](https://cookiecutter-django.readthedocs.io/en/latest/?badge=latest)
|
||||
[](https://results.pre-commit.ci/latest/github/cookiecutter/cookiecutter-django/master)
|
||||
[](https://results.pre-commit.ci/latest/github/cookiecutter/cookiecutter-django/main)
|
||||
[](https://github.com/ambv/black)
|
||||
|
||||
[](https://pyup.io/repos/github/cookiecutter/cookiecutter-django/)
|
||||
|
@ -67,7 +67,7 @@ Projects that provide financial support to the maintainers:
|
|||
|
||||
### Two Scoops of Django
|
||||
|
||||
[](https://www.feldroy.com/two-scoops-press#two-scoops-of-django)
|
||||
[](https://www.feldroy.com/two-scoops-of-django)
|
||||
|
||||
Two Scoops of Django 3.x is the best ice cream-themed Django reference in the universe!
|
||||
|
||||
|
@ -175,16 +175,16 @@ Answer the prompts with your own desired [options](http://cookiecutter-django.re
|
|||
|
||||
Enter the project and take a look around:
|
||||
|
||||
$ cd reddit/
|
||||
$ ls
|
||||
cd reddit/
|
||||
ls
|
||||
|
||||
Create a git repo and push it there:
|
||||
|
||||
$ git init
|
||||
$ git add .
|
||||
$ git commit -m "first awesome commit"
|
||||
$ git remote add origin git@github.com:pydanny/redditclone.git
|
||||
$ git push -u origin master
|
||||
git init
|
||||
git add .
|
||||
git commit -m "first awesome commit"
|
||||
git remote add origin git@github.com:pydanny/redditclone.git
|
||||
git push -u origin main
|
||||
|
||||
Now take a look at your repo. Don't forget to carefully look at the generated README. Awesome, right?
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ It is there to add a migration so you don't have to manually change the ``sites.
|
|||
|
||||
See `0003_set_site_domain_and_name.py`_.
|
||||
|
||||
.. _`0003_set_site_domain_and_name.py`: https://github.com/cookiecutter/cookiecutter-django/blob/master/%7B%7Bcookiecutter.project_slug%7D%7D/%7B%7Bcookiecutter.project_slug%7D%7D/contrib/sites/migrations/0003_set_site_domain_and_name.py
|
||||
.. _`0003_set_site_domain_and_name.py`: https://github.com/cookiecutter/cookiecutter-django/blob/main/%7B%7Bcookiecutter.project_slug%7D%7D/%7B%7Bcookiecutter.project_slug%7D%7D/contrib/sites/migrations/0003_set_site_domain_and_name.py
|
||||
|
||||
|
||||
Why aren't you using just one configuration file (12-Factor App)
|
||||
|
|
|
@ -96,9 +96,9 @@ With that in mind, when merging changes, it's a good idea to set the labels and
|
|||
|
||||
`update-contributors.yml`
|
||||
|
||||
Runs on each push to master branch. List the 5 most recently merged pull requests and extract their author. If any of the authors is a new one, updates the `.github/contributors.json`, regenerate the `CONTRIBUTORS.md` from it, and push back the changes to master.
|
||||
Runs on each push to main branch. List the 5 most recently merged pull requests and extract their author. If any of the authors is a new one, updates the `.github/contributors.json`, regenerate the `CONTRIBUTORS.md` from it, and push back the changes to master.
|
||||
|
||||
#### Limitations
|
||||
|
||||
- If you merge a pull request from a new contributor, and merge another one right after, the push to master will fail as the remote will be out of date.
|
||||
- If you merge a pull request from a new contributor, and merge another one right after, the push to main will fail as the remote will be out of date.
|
||||
- If you merge more than 5 pull requests in a row like this, the new contributor might fail to be added.
|
||||
|
|
|
@ -9,7 +9,7 @@ from pathlib import Path
|
|||
|
||||
try:
|
||||
# Inspired by
|
||||
# https://github.com/django/django/blob/master/django/utils/crypto.py
|
||||
# https://github.com/django/django/blob/main/django/utils/crypto.py
|
||||
random = random.SystemRandom()
|
||||
using_sysrandom = True
|
||||
except NotImplementedError:
|
||||
|
@ -109,6 +109,12 @@ def remove_vendors_js():
|
|||
vendors_js_path.unlink()
|
||||
|
||||
|
||||
def remove_project_css():
|
||||
project_css_path = Path("{{ cookiecutter.project_slug }}", "static", "css", "project.css")
|
||||
if project_css_path.exists():
|
||||
project_css_path.unlink()
|
||||
|
||||
|
||||
def remove_packagejson_file():
|
||||
file_names = ["package.json"]
|
||||
for file_name in file_names:
|
||||
|
@ -470,6 +476,7 @@ def main():
|
|||
if "{{ cookiecutter.use_docker }}".lower() == "y":
|
||||
remove_node_dockerfile()
|
||||
else:
|
||||
remove_project_css()
|
||||
handle_js_runner(
|
||||
"{{ cookiecutter.frontend_pipeline }}",
|
||||
use_docker=("{{ cookiecutter.use_docker }}".lower() == "y"),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "cookiecutter-django"
|
||||
version = "2025.05.28"
|
||||
version = "2025.08.27"
|
||||
description = "A Cookiecutter template for creating production-ready Django projects quickly."
|
||||
readme = "README.md"
|
||||
keywords = [
|
||||
|
@ -43,7 +43,7 @@ dependencies = [
|
|||
"pytest-xdist==3.6.1",
|
||||
"pyyaml==6.0.2",
|
||||
"requests==2.32.3",
|
||||
"ruff==0.11.11",
|
||||
"ruff==0.12.10",
|
||||
"sh==2.1; sys_platform!='win23'",
|
||||
"tox==4.23.2",
|
||||
"tox-uv>=1.17",
|
||||
|
|
43
uv.lock
43
uv.lock
|
@ -182,7 +182,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "cookiecutter-django"
|
||||
version = "2025.5.28"
|
||||
version = "2025.8.27"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "binaryornot" },
|
||||
|
@ -229,7 +229,7 @@ requires-dist = [
|
|||
{ name = "pytest-xdist", specifier = "==3.6.1" },
|
||||
{ name = "pyyaml", specifier = "==6.0.2" },
|
||||
{ name = "requests", specifier = "==2.32.3" },
|
||||
{ name = "ruff", specifier = "==0.11.11" },
|
||||
{ name = "ruff", specifier = "==0.12.10" },
|
||||
{ name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.1" },
|
||||
{ name = "tox", specifier = "==4.23.2" },
|
||||
{ name = "tox-uv", specifier = ">=1.17" },
|
||||
|
@ -839,27 +839,28 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.11.11"
|
||||
version = "0.12.10"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707 }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3b/eb/8c073deb376e46ae767f4961390d17545e8535921d2f65101720ed8bd434/ruff-0.12.10.tar.gz", hash = "sha256:189ab65149d11ea69a2d775343adf5f49bb2426fc4780f65ee33b423ad2e47f9", size = 5310076 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049 },
|
||||
{ url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601 },
|
||||
{ url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421 },
|
||||
{ url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980 },
|
||||
{ url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241 },
|
||||
{ url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398 },
|
||||
{ url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955 },
|
||||
{ url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630 },
|
||||
{ url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310 },
|
||||
{ url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144 },
|
||||
{ url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987 },
|
||||
{ url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537 },
|
||||
{ url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492 },
|
||||
{ url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951 },
|
||||
{ url = "https://files.pythonhosted.org/packages/24/e7/560d049d15585d6c201f9eeacd2fd130def3741323e5ccf123786e0e3c95/ruff-0.12.10-py3-none-linux_armv6l.whl", hash = "sha256:8b593cb0fb55cc8692dac7b06deb29afda78c721c7ccfed22db941201b7b8f7b", size = 11935161 },
|
||||
{ url = "https://files.pythonhosted.org/packages/d1/b0/ad2464922a1113c365d12b8f80ed70fcfb39764288ac77c995156080488d/ruff-0.12.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ebb7333a45d56efc7c110a46a69a1b32365d5c5161e7244aaf3aa20ce62399c1", size = 12660884 },
|
||||
{ url = "https://files.pythonhosted.org/packages/d7/f1/97f509b4108d7bae16c48389f54f005b62ce86712120fd8b2d8e88a7cb49/ruff-0.12.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d59e58586829f8e4a9920788f6efba97a13d1fa320b047814e8afede381c6839", size = 11872754 },
|
||||
{ url = "https://files.pythonhosted.org/packages/12/ad/44f606d243f744a75adc432275217296095101f83f966842063d78eee2d3/ruff-0.12.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822d9677b560f1fdeab69b89d1f444bf5459da4aa04e06e766cf0121771ab844", size = 12092276 },
|
||||
{ url = "https://files.pythonhosted.org/packages/06/1f/ed6c265e199568010197909b25c896d66e4ef2c5e1c3808caf461f6f3579/ruff-0.12.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b4a64f4062a50c75019c61c7017ff598cb444984b638511f48539d3a1c98db", size = 11734700 },
|
||||
{ url = "https://files.pythonhosted.org/packages/63/c5/b21cde720f54a1d1db71538c0bc9b73dee4b563a7dd7d2e404914904d7f5/ruff-0.12.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c6f4064c69d2542029b2a61d39920c85240c39837599d7f2e32e80d36401d6e", size = 13468783 },
|
||||
{ url = "https://files.pythonhosted.org/packages/02/9e/39369e6ac7f2a1848f22fb0b00b690492f20811a1ac5c1fd1d2798329263/ruff-0.12.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:059e863ea3a9ade41407ad71c1de2badfbe01539117f38f763ba42a1206f7559", size = 14436642 },
|
||||
{ url = "https://files.pythonhosted.org/packages/e3/03/5da8cad4b0d5242a936eb203b58318016db44f5c5d351b07e3f5e211bb89/ruff-0.12.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bef6161e297c68908b7218fa6e0e93e99a286e5ed9653d4be71e687dff101cf", size = 13859107 },
|
||||
{ url = "https://files.pythonhosted.org/packages/19/19/dd7273b69bf7f93a070c9cec9494a94048325ad18fdcf50114f07e6bf417/ruff-0.12.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4f1345fbf8fb0531cd722285b5f15af49b2932742fc96b633e883da8d841896b", size = 12886521 },
|
||||
{ url = "https://files.pythonhosted.org/packages/c0/1d/b4207ec35e7babaee62c462769e77457e26eb853fbdc877af29417033333/ruff-0.12.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f68433c4fbc63efbfa3ba5db31727db229fa4e61000f452c540474b03de52a9", size = 13097528 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ff/00/58f7b873b21114456e880b75176af3490d7a2836033779ca42f50de3b47a/ruff-0.12.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:141ce3d88803c625257b8a6debf4a0473eb6eed9643a6189b68838b43e78165a", size = 13080443 },
|
||||
{ url = "https://files.pythonhosted.org/packages/12/8c/9e6660007fb10189ccb78a02b41691288038e51e4788bf49b0a60f740604/ruff-0.12.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f3fc21178cd44c98142ae7590f42ddcb587b8e09a3b849cbc84edb62ee95de60", size = 11896759 },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/4c/6d092bb99ea9ea6ebda817a0e7ad886f42a58b4501a7e27cd97371d0ba54/ruff-0.12.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7d1a4e0bdfafcd2e3e235ecf50bf0176f74dd37902f241588ae1f6c827a36c56", size = 11701463 },
|
||||
{ url = "https://files.pythonhosted.org/packages/59/80/d982c55e91df981f3ab62559371380616c57ffd0172d96850280c2b04fa8/ruff-0.12.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e67d96827854f50b9e3e8327b031647e7bcc090dbe7bb11101a81a3a2cbf1cc9", size = 12691603 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ad/37/63a9c788bbe0b0850611669ec6b8589838faf2f4f959647f2d3e320383ae/ruff-0.12.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ae479e1a18b439c59138f066ae79cc0f3ee250712a873d00dbafadaad9481e5b", size = 13164356 },
|
||||
{ url = "https://files.pythonhosted.org/packages/47/d4/1aaa7fb201a74181989970ebccd12f88c0fc074777027e2a21de5a90657e/ruff-0.12.10-py3-none-win32.whl", hash = "sha256:9de785e95dc2f09846c5e6e1d3a3d32ecd0b283a979898ad427a9be7be22b266", size = 11896089 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ad/14/2ad38fd4037daab9e023456a4a40ed0154e9971f8d6aed41bdea390aabd9/ruff-0.12.10-py3-none-win_amd64.whl", hash = "sha256:7837eca8787f076f67aba2ca559cefd9c5cbc3a9852fd66186f4201b87c1563e", size = 13004616 },
|
||||
{ url = "https://files.pythonhosted.org/packages/24/3c/21cf283d67af33a8e6ed242396863af195a8a6134ec581524fd22b9811b6/ruff-0.12.10-py3-none-win_arm64.whl", hash = "sha256:cc138cc06ed9d4bfa9d667a65af7172b47840e1a98b02ce7011c391e54635ffc", size = 12074225 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -7,11 +7,11 @@ env:
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
branches: ['master', 'main']
|
||||
branches: ['main']
|
||||
paths-ignore: ['docs/**']
|
||||
|
||||
push:
|
||||
branches: ['master', 'main']
|
||||
branches: ['main']
|
||||
paths-ignore: ['docs/**']
|
||||
|
||||
concurrency:
|
||||
|
@ -23,7 +23,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
|
@ -65,7 +65,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout Code Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
{%- if cookiecutter.use_docker == 'y' %}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
|
|
|
@ -7,7 +7,7 @@ default_language_version:
|
|||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
|
@ -29,17 +29,17 @@ repos:
|
|||
exclude: '{{cookiecutter.project_slug}}/templates/'
|
||||
|
||||
- repo: https://github.com/adamchainz/django-upgrade
|
||||
rev: '1.25.0'
|
||||
rev: '1.27.0'
|
||||
hooks:
|
||||
- id: django-upgrade
|
||||
args: ['--target-version', '5.0']
|
||||
|
||||
# Run the Ruff linter.
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.11
|
||||
rev: v0.12.10
|
||||
hooks:
|
||||
# Linter
|
||||
- id: ruff
|
||||
- id: ruff-check
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
# Formatter
|
||||
- id: ruff-format
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM docker.io/node:22.14-bookworm-slim
|
||||
FROM docker.io/node:24.6-bookworm-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM docker.io/amazon/aws-cli:2.27.12
|
||||
FROM docker.io/amazon/aws-cli:2.28.0
|
||||
|
||||
# Clear entrypoint from the base image, otherwise it's always calling the aws CLI
|
||||
ENTRYPOINT []
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] -%}
|
||||
FROM docker.io/node:22.14-bookworm-slim AS client-builder
|
||||
FROM docker.io/node:24.6-bookworm-slim AS client-builder
|
||||
|
||||
ARG APP_HOME=/app
|
||||
WORKDIR ${APP_HOME}
|
||||
|
@ -24,7 +24,7 @@ ENV DJANGO_AZURE_ACCOUNT_NAME=${DJANGO_AZURE_ACCOUNT_NAME}
|
|||
RUN npm run build
|
||||
{%- endif %}
|
||||
# define an alias for the specific python version used in this file.
|
||||
FROM docker.io/python:3.12.10-slim-bookworm AS python
|
||||
FROM docker.io/python:3.12.11-slim-bookworm AS python
|
||||
|
||||
# Python build stage
|
||||
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS python-build-stage
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM docker.io/traefik:3.4.1
|
||||
FROM docker.io/traefik:3.5.0
|
||||
RUN mkdir -p /etc/traefik/acme \
|
||||
&& touch /etc/traefik/acme/acme.json \
|
||||
&& chmod 600 /etc/traefik/acme/acme.json
|
||||
|
|
|
@ -17,9 +17,9 @@ app.config_from_object("django.conf:settings", namespace="CELERY")
|
|||
|
||||
@setup_logging.connect
|
||||
def config_loggers(*args, **kwargs):
|
||||
from logging.config import dictConfig
|
||||
from logging.config import dictConfig # noqa: PLC0415
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf import settings # noqa: PLC0415
|
||||
|
||||
dictConfig(settings.LOGGING)
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# ruff: noqa: E501
|
||||
from .base import * # noqa: F403
|
||||
from .base import INSTALLED_APPS
|
||||
from .base import MIDDLEWARE
|
||||
|
@ -79,7 +78,7 @@ if env("USE_DOCKER") == "yes":
|
|||
import socket
|
||||
|
||||
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
|
||||
INTERNAL_IPS += [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
|
||||
INTERNAL_IPS += [".".join([*ip.split(".")[:-1], "1"]) for ip in ips]
|
||||
{%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %}
|
||||
try:
|
||||
_, _, ips = socket.gethostbyname_ex("node")
|
||||
|
|
|
@ -15,7 +15,7 @@ from inside the `{{cookiecutter.project_slug}}/docs` directory.
|
|||
{% else %}
|
||||
To build and serve docs, use the commands::
|
||||
|
||||
docker compose -f docker-compose.local.yml up docs
|
||||
docker compose -f docker-compose.docs.yml up
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ function vendorScripts() {
|
|||
// Image compression
|
||||
async function imgCompression() {
|
||||
const imagemin = (await import("gulp-imagemin")).default;
|
||||
return src(`${paths.images}/*`)
|
||||
return src(`${paths.images}/*`, { encoding: false })
|
||||
.pipe(imagemin()) // Compresses PNG, JPEG, GIF and SVG images
|
||||
.pipe(dest(paths.images));
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ def main():
|
|||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
|
||||
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
from django.core.management import execute_from_command_line # noqa: PLC0415
|
||||
except ImportError as exc:
|
||||
raise ImportError( # noqa: TRY003
|
||||
"Couldn't import Django. Are you sure it's installed and " # noqa: EM101
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
"webpack-merge": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "22.14"
|
||||
"node": "24.6"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 2 versions"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
python-slugify==8.0.4 # https://github.com/un33k/python-slugify
|
||||
Pillow==11.2.1 # pyup: != 11.2.0 # https://github.com/python-pillow/Pillow
|
||||
Pillow==11.3.0 # pyup: != 11.2.0 # https://github.com/python-pillow/Pillow
|
||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
||||
rcssmin==1.1.2 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
||||
|
@ -7,45 +7,45 @@ rcssmin==1.1.2 --install-option="--without-c-extensions" # https://github.com/n
|
|||
rcssmin==1.1.2 # https://github.com/ndparker/rcssmin
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi
|
||||
argon2-cffi==25.1.0 # https://github.com/hynek/argon2_cffi
|
||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||
whitenoise==6.9.0 # https://github.com/evansd/whitenoise
|
||||
{%- endif %}
|
||||
redis==6.2.0 # https://github.com/redis/redis-py
|
||||
redis==6.4.0 # https://github.com/redis/redis-py
|
||||
{%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %}
|
||||
hiredis==3.2.1 # https://github.com/redis/hiredis-py
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_celery == "y" %}
|
||||
celery==5.5.2 # pyup: < 6.0 # https://github.com/celery/celery
|
||||
celery==5.5.3 # pyup: < 6.0 # https://github.com/celery/celery
|
||||
django-celery-beat==2.8.1 # https://github.com/celery/django-celery-beat
|
||||
{%- if cookiecutter.use_docker == 'y' %}
|
||||
flower==2.0.1 # https://github.com/mher/flower
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_async == 'y' %}
|
||||
uvicorn[standard]==0.34.2 # https://github.com/encode/uvicorn
|
||||
uvicorn[standard]==0.35.0 # https://github.com/encode/uvicorn
|
||||
uvicorn-worker==0.3.0 # https://github.com/Kludex/uvicorn-worker
|
||||
{%- endif %}
|
||||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
django==5.1.9 # pyup: < 5.2 # https://www.djangoproject.com/
|
||||
django==5.1.11 # pyup: < 5.2 # https://www.djangoproject.com/
|
||||
django-environ==0.12.0 # https://github.com/joke2k/django-environ
|
||||
django-model-utils==5.0.0 # https://github.com/jazzband/django-model-utils
|
||||
django-allauth[mfa]==65.8.1 # https://github.com/pennersr/django-allauth
|
||||
django-allauth[mfa]==65.11.1 # https://github.com/pennersr/django-allauth
|
||||
django-crispy-forms==2.4 # https://github.com/django-crispy-forms/django-crispy-forms
|
||||
crispy-bootstrap5==2025.4 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
||||
crispy-bootstrap5==2025.6 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||
django-compressor==4.5.1 # https://github.com/django-compressor/django-compressor
|
||||
{%- endif %}
|
||||
django-redis==5.4.0 # https://github.com/jazzband/django-redis
|
||||
django-redis==6.0.0 # https://github.com/jazzband/django-redis
|
||||
{%- if cookiecutter.use_drf == 'y' %}
|
||||
# Django REST Framework
|
||||
djangorestframework==3.16.0 # https://github.com/encode/django-rest-framework
|
||||
djangorestframework==3.16.1 # https://github.com/encode/django-rest-framework
|
||||
django-cors-headers==4.7.0 # https://github.com/adamchainz/django-cors-headers
|
||||
# DRF-spectacular for api documentation
|
||||
drf-spectacular==0.28.0 # https://github.com/tfranzel/drf-spectacular
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.frontend_pipeline == 'Webpack' %}
|
||||
django-webpack-loader==3.2.0 # https://github.com/django-webpack/django-webpack-loader
|
||||
django-webpack-loader==3.2.1 # https://github.com/django-webpack/django-webpack-loader
|
||||
{%- endif %}
|
||||
|
|
|
@ -6,15 +6,15 @@ psycopg[c]==3.2.9 # https://github.com/psycopg/psycopg
|
|||
psycopg[binary]==3.2.9 # https://github.com/psycopg/psycopg
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %}
|
||||
watchfiles==1.0.5 # https://github.com/samuelcolvin/watchfiles
|
||||
watchfiles==1.1.0 # https://github.com/samuelcolvin/watchfiles
|
||||
{%- endif %}
|
||||
|
||||
# Testing
|
||||
# ------------------------------------------------------------------------------
|
||||
mypy==1.15.0 # https://github.com/python/mypy
|
||||
django-stubs[compatible-mypy]==5.2.0 # https://github.com/typeddjango/django-stubs
|
||||
pytest==8.3.5 # https://github.com/pytest-dev/pytest
|
||||
pytest-sugar==1.0.0 # https://github.com/Teemu/pytest-sugar
|
||||
mypy==1.17.1 # https://github.com/python/mypy
|
||||
django-stubs[compatible-mypy]==5.2.2 # https://github.com/typeddjango/django-stubs
|
||||
pytest==8.4.1 # https://github.com/pytest-dev/pytest
|
||||
pytest-sugar==1.1.1 # https://github.com/Teemu/pytest-sugar
|
||||
{%- if cookiecutter.use_drf == "y" %}
|
||||
djangorestframework-stubs==3.16.0 # https://github.com/typeddjango/djangorestframework-stubs
|
||||
{%- endif %}
|
||||
|
@ -22,20 +22,20 @@ djangorestframework-stubs==3.16.0 # https://github.com/typeddjango/djangorestfr
|
|||
# Documentation
|
||||
# ------------------------------------------------------------------------------
|
||||
sphinx==8.2.3 # pyup: != 8.3.0 # https://github.com/sphinx-doc/sphinx
|
||||
sphinx-autobuild==2024.10.3 # https://github.com/GaretJax/sphinx-autobuild
|
||||
sphinx-autobuild==2025.8.25 # https://github.com/GaretJax/sphinx-autobuild
|
||||
|
||||
# Code quality
|
||||
# ------------------------------------------------------------------------------
|
||||
ruff==0.11.11 # https://github.com/astral-sh/ruff
|
||||
coverage==7.8.2 # https://github.com/nedbat/coveragepy
|
||||
ruff==0.12.10 # https://github.com/astral-sh/ruff
|
||||
coverage==7.10.5 # https://github.com/nedbat/coveragepy
|
||||
djlint==1.36.4 # https://github.com/Riverside-Healthcare/djLint
|
||||
pre-commit==4.2.0 # https://github.com/pre-commit/pre-commit
|
||||
pre-commit==4.3.0 # https://github.com/pre-commit/pre-commit
|
||||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
factory-boy==3.3.2 # https://github.com/FactoryBoy/factory_boy
|
||||
|
||||
django-debug-toolbar==5.2.0 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-debug-toolbar==6.0.0 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-extensions==4.1 # https://github.com/django-extensions/django-extensions
|
||||
django-coverage-plugin==3.1.0 # https://github.com/nedbat/django_coverage_plugin
|
||||
django-coverage-plugin==3.1.1 # https://github.com/nedbat/django_coverage_plugin
|
||||
pytest-django==4.11.1 # https://github.com/pytest-dev/pytest-django
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
gunicorn==23.0.0 # https://github.com/benoitc/gunicorn
|
||||
psycopg[c]==3.2.9 # https://github.com/psycopg/psycopg
|
||||
{%- if cookiecutter.use_whitenoise == 'n'and cookiecutter.cloud_provider in ('AWS', 'GCP') %}
|
||||
Collectfasta==3.2.1 # https://github.com/jasongi/collectfasta
|
||||
Collectfasta==3.3.1 # https://github.com/jasongi/collectfasta
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_sentry == "y" %}
|
||||
sentry-sdk==2.29.1 # https://github.com/getsentry/sentry-python
|
||||
sentry-sdk==2.35.1 # https://github.com/getsentry/sentry-python
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
||||
hiredis==3.2.1 # https://github.com/redis/hiredis-py
|
||||
|
@ -24,21 +24,21 @@ django-storages[google]==1.14.6 # https://github.com/jschneier/django-storages
|
|||
django-storages[azure]==1.14.6 # https://github.com/jschneier/django-storages
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.mail_service == 'Mailgun' %}
|
||||
django-anymail[mailgun]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mailgun]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Amazon SES' %}
|
||||
django-anymail[amazon-ses]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[amazon-ses]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Mailjet' %}
|
||||
django-anymail[mailjet]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mailjet]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Mandrill' %}
|
||||
django-anymail[mandrill]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mandrill]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Postmark' %}
|
||||
django-anymail[postmark]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[postmark]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Sendgrid' %}
|
||||
django-anymail[sendgrid]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[sendgrid]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Brevo' %}
|
||||
django-anymail[brevo]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[brevo]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'SparkPost' %}
|
||||
django-anymail[sparkpost]==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[sparkpost]==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Other SMTP' %}
|
||||
django-anymail==13.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail==13.0.1 # https://github.com/anymail/django-anymail
|
||||
{%- endif %}
|
||||
|
|
|
@ -10,4 +10,4 @@ class UsersConfig(AppConfig):
|
|||
|
||||
def ready(self):
|
||||
with contextlib.suppress(ImportError):
|
||||
import {{ cookiecutter.project_slug }}.users.signals # noqa: F401
|
||||
import {{ cookiecutter.project_slug }}.users.signals # noqa: F401, PLC0415
|
||||
|
|
|
@ -60,7 +60,7 @@ class TestUserAdmin:
|
|||
def _force_allauth(self, settings):
|
||||
settings.DJANGO_ADMIN_FORCE_ALLAUTH = True
|
||||
# Reload the admin module to apply the setting change
|
||||
import {{ cookiecutter.project_slug }}.users.admin as users_admin
|
||||
import {{ cookiecutter.project_slug }}.users.admin as users_admin # noqa: PLC0415
|
||||
|
||||
with contextlib.suppress(admin.sites.AlreadyRegistered): # type: ignore[attr-defined]
|
||||
reload(users_admin)
|
||||
|
|
Loading…
Reference in New Issue
Block a user