diff --git a/.github/contributors.json b/.github/contributors.json index 802922753..d567a6de9 100644 --- a/.github/contributors.json +++ b/.github/contributors.json @@ -1758,5 +1758,10 @@ "name": "Maurício Gioachini", "github_login": "MauGx3", "twitter_username": "" + }, + { + "name": "Donghoon Nam", + "github_login": "codenamenam", + "twitter_username": "" } ] \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 483755913..e772c8e65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,6 +103,6 @@ jobs: run: uv sync --locked - uses: actions/setup-node@v5 with: - node-version: "24.7" + node-version: "24.8" - name: Bare Metal ${{ matrix.script.name }} run: sh tests/test_bare.sh ${{ matrix.script.args }} diff --git a/CHANGELOG.md b/CHANGELOG.md index e5dafc1e7..052a78b39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All enhancements and patches to Cookiecutter Django will be documented in this f +## 2025.09.10 + + +### Updated + +- Bump traefik from 3.5.1 to 3.5.2 ([#6041](https://github.com/cookiecutter/cookiecutter-django/pull/6041)) + ## 2025.09.09 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index af6e67d4b..464648b07 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -803,6 +803,13 @@ Listed in alphabetical order. + + Donghoon Nam + + codenamenam + + + Douglas diff --git a/pyproject.toml b/pyproject.toml index 0657a6cb6..ccc37b8fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "cookiecutter-django" -version = "2025.09.09" +version = "2025.09.10" description = "A Cookiecutter template for creating production-ready Django projects quickly." readme = "README.md" keywords = [ @@ -44,7 +44,7 @@ dependencies = [ "pyyaml==6.0.2", "requests==2.32.5", "ruff==0.13.0", - "sh==2.1; sys_platform!='win23'", + "sh==2.2.2; sys_platform!='win23'", "tox==4.30.2", "tox-uv>=1.17", ] @@ -125,14 +125,6 @@ lint.ignore = [ "S101", # Use of assert detected https://docs.astral.sh/ruff/rules/assert/ "SIM102", # sometimes it's better to nest "TRY003", # Avoid specifying long messages outside the exception class - # Checks for uses of isinstance/issubclass that take a tuple of types for comparison. - # Deactivated because it can make the code slow: https://github.com/astral-sh/ruff/issues/7871 - "UP038", -] -# The fixes in extend-unsafe-fixes will require -# provide the `--unsafe-fixes` flag when fixing. -lint.extend-unsafe-fixes = [ - "UP038", ] lint.isort.force-single-line = true diff --git a/scripts/create_django_issue.py b/scripts/create_django_issue.py index bbc897f5c..ef4c07663 100644 --- a/scripts/create_django_issue.py +++ b/scripts/create_django_issue.py @@ -204,7 +204,7 @@ class GitHubManager: # updated packages, or known releases that will happen but haven't yet if issue := self.existing_issues.get(needed_dj_version): if index := issue.body.find(package_name): - name, _current, prev_compat, ok = (s.strip() for s in issue.body[index:].split("|", 4)[:4]) + _name, _current, prev_compat, ok = (s.strip() for s in issue.body[index:].split("|", 4)[:4]) if ok in ("✅", "❓", "🕒"): return prev_compat, ok diff --git a/uv.lock b/uv.lock index 74148c689..21a14d73a 100644 --- a/uv.lock +++ b/uv.lock @@ -183,7 +183,7 @@ wheels = [ [[package]] name = "cookiecutter-django" -version = "2025.9.9" +version = "2025.9.10" source = { virtual = "." } dependencies = [ { name = "binaryornot" }, @@ -231,7 +231,7 @@ requires-dist = [ { name = "pyyaml", specifier = "==6.0.2" }, { name = "requests", specifier = "==2.32.5" }, { name = "ruff", specifier = "==0.13.0" }, - { name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.1" }, + { name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.2.2" }, { name = "tox", specifier = "==4.30.2" }, { name = "tox-uv", specifier = ">=1.17" }, ] @@ -854,11 +854,11 @@ wheels = [ [[package]] name = "sh" -version = "2.1.0" +version = "2.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/12/b7965006c5adc57ba5459385358bd27c4983cd490884a75be86eb1d3efeb/sh-2.1.0.tar.gz", hash = "sha256:7e27301c574bec8ca5bf6f211851357526455ee97cd27a7c4c6cc5e2375399cb", size = 345525, upload-time = "2024-10-09T07:16:26.683Z" } +sdist = { url = "https://files.pythonhosted.org/packages/59/52/f43920223c93e31874677c681b8603d36a40d3d8502d3a37f80d3995d43e/sh-2.2.2.tar.gz", hash = "sha256:653227a7c41a284ec5302173fbc044ee817c7bad5e6e4d8d55741b9aeb9eb65b", size = 345866, upload-time = "2025-02-24T07:16:25.363Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/59/f6551f49c123751e921038c24215157bd50aef375ced16cac57229678c43/sh-2.1.0-py3-none-any.whl", hash = "sha256:bf5e44178dd96a542126c2774e9b7ab1d89bfe0e2ef84d92e6d0ed7358d63d01", size = 38080, upload-time = "2024-10-09T07:16:23.84Z" }, + { url = "https://files.pythonhosted.org/packages/70/98/d82f14ac7ffedbd38dfa2383f142b26d18d23ca6cf35a40f4af60df666bd/sh-2.2.2-py3-none-any.whl", hash = "sha256:e0b15b4ae8ffcd399bc8ffddcbd770a43c7a70a24b16773fbb34c001ad5d52af", size = 38295, upload-time = "2025-02-24T07:16:23.782Z" }, ] [[package]] diff --git a/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile index 8a8ee7f8a..b1538723a 100644 --- a/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/node:24.7-bookworm-slim +FROM docker.io/node:24.8-bookworm-slim WORKDIR /app diff --git a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile index d7999cd9f..2df9dcb21 100644 --- a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile @@ -1,5 +1,5 @@ {% if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] -%} -FROM docker.io/node:24.7-bookworm-slim AS client-builder +FROM docker.io/node:24.8-bookworm-slim AS client-builder ARG APP_HOME=/app WORKDIR ${APP_HOME} diff --git a/{{cookiecutter.project_slug}}/config/settings/production.py b/{{cookiecutter.project_slug}}/config/settings/production.py index 8ef7b57c8..1981be38f 100644 --- a/{{cookiecutter.project_slug}}/config/settings/production.py +++ b/{{cookiecutter.project_slug}}/config/settings/production.py @@ -205,6 +205,7 @@ STATIC_URL = f"https://storage.googleapis.com/{GS_BUCKET_NAME}/static/" {%- elif cookiecutter.cloud_provider == 'Azure' %} MEDIA_URL = f"https://{AZURE_ACCOUNT_NAME}.blob.core.windows.net/media/" {%- if cookiecutter.use_whitenoise == 'n' %} +COLLECTFASTA_STRATEGY = "collectfasta.strategies.azure.AzureBlobStrategy" STATIC_URL = f"https://{AZURE_ACCOUNT_NAME}.blob.core.windows.net/static/" {%- endif %} {%- endif %} @@ -324,7 +325,7 @@ COMPRESS_FILTERS = { "js": ["compressor.filters.jsmin.JSMinFilter"], } {% endif %} -{%- if cookiecutter.use_whitenoise == 'n' and cookiecutter.cloud_provider in ('AWS', 'GCP') -%} +{%- if cookiecutter.use_whitenoise == 'n' and cookiecutter.cloud_provider in ('AWS', 'GCP', 'Azure') -%} # Collectfasta # ------------------------------------------------------------------------------ # https://github.com/jasongi/collectfasta#installation diff --git a/{{cookiecutter.project_slug}}/package.json b/{{cookiecutter.project_slug}}/package.json index 0cc93797d..5a7da9b28 100644 --- a/{{cookiecutter.project_slug}}/package.json +++ b/{{cookiecutter.project_slug}}/package.json @@ -35,7 +35,7 @@ "webpack-merge": "^6.0.1" }, "engines": { - "node": "24.7" + "node": "24.8" }, "browserslist": [ "last 2 versions" diff --git a/{{cookiecutter.project_slug}}/pyproject.toml b/{{cookiecutter.project_slug}}/pyproject.toml index 0147262bf..e523b4ca4 100644 --- a/{{cookiecutter.project_slug}}/pyproject.toml +++ b/{{cookiecutter.project_slug}}/pyproject.toml @@ -127,16 +127,10 @@ ignore = [ "S101", # Use of assert detected https://docs.astral.sh/ruff/rules/assert/ "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` "SIM102", # sometimes it's better to nest - "UP038", # Checks for uses of isinstance/issubclass that take a tuple # of types for comparison. # Deactivated because it can make the code slow: # https://github.com/astral-sh/ruff/issues/7871 ] -# The fixes in extend-unsafe-fixes will require -# provide the `--unsafe-fixes` flag when fixing. -extend-unsafe-fixes = [ - "UP038", -] [tool.ruff.lint.isort] force-single-line = true diff --git a/{{cookiecutter.project_slug}}/requirements/production.txt b/{{cookiecutter.project_slug}}/requirements/production.txt index e6bf55e1e..0c7c236b0 100644 --- a/{{cookiecutter.project_slug}}/requirements/production.txt +++ b/{{cookiecutter.project_slug}}/requirements/production.txt @@ -4,7 +4,7 @@ gunicorn==23.0.0 # https://github.com/benoitc/gunicorn psycopg[c]==3.2.10 # https://github.com/psycopg/psycopg -{%- if cookiecutter.use_whitenoise == 'n'and cookiecutter.cloud_provider in ('AWS', 'GCP') %} +{%- if cookiecutter.use_whitenoise == 'n'and cookiecutter.cloud_provider in ('AWS', 'GCP', 'Azure') %} Collectfasta==3.3.1 # https://github.com/jasongi/collectfasta {%- endif %} {%- if cookiecutter.use_sentry == "y" %}