diff --git a/.github/contributors.json b/.github/contributors.json index 7f2d3d468..78ea3b65e 100644 --- a/.github/contributors.json +++ b/.github/contributors.json @@ -1598,5 +1598,10 @@ "name": "Alexandr Artemyev", "github_login": "Mogost", "twitter_username": "MOGOST" + }, + { + "name": "Ali Shamakhi", + "github_login": "ali-shamakhi", + "twitter_username": "" } ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d2e5371e..0fa376e15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,214 @@ All enhancements and patches to Cookiecutter Django will be documented in this f +## 2024.07.19 + + +### Changed + +- Use "ENV key=value" instead of "ENV key value" in Dockerfiles ([#5225](https://github.com/cookiecutter/cookiecutter-django/pull/5225)) + +### Updated + +- Update django-upgrade to 1.20.0 ([#5227](https://github.com/cookiecutter/cookiecutter-django/pull/5227)) + +- Update ruff to 0.5.3 ([#5224](https://github.com/cookiecutter/cookiecutter-django/pull/5224)) + +## 2024.07.18 + + +### Updated + +- Update sphinx to 7.4.6 ([#5223](https://github.com/cookiecutter/cookiecutter-django/pull/5223)) + +## 2024.07.17 + + +### Updated + +- Update sphinx to 7.4.5 ([#5222](https://github.com/cookiecutter/cookiecutter-django/pull/5222)) + +## 2024.07.16 + + +### Fixed + +- Clear `ENTRYPOINT` in `awscli` image to allow script execution ([#5221](https://github.com/cookiecutter/cookiecutter-django/pull/5221)) + +### Updated + +- Update sphinx to 7.4.4 ([#5218](https://github.com/cookiecutter/cookiecutter-django/pull/5218)) + +## 2024.07.15 + + +### Updated + +- Update sentry-sdk to 2.10.0 ([#5216](https://github.com/cookiecutter/cookiecutter-django/pull/5216)) + +- Update sphinx to 7.4.2 ([#5215](https://github.com/cookiecutter/cookiecutter-django/pull/5215)) + +- Update ruff to 0.5.2 ([#5211](https://github.com/cookiecutter/cookiecutter-django/pull/5211)) + +- Update sphinx to 7.4.0 ([#5214](https://github.com/cookiecutter/cookiecutter-django/pull/5214)) + +## 2024.07.12 + + +### Updated + +- Update django-allauth to 0.63.6 ([#5210](https://github.com/cookiecutter/cookiecutter-django/pull/5210)) + +- Update django-allauth to 0.63.5 ([#5206](https://github.com/cookiecutter/cookiecutter-django/pull/5206)) + +- Update coverage to 7.6.0 ([#5207](https://github.com/cookiecutter/cookiecutter-django/pull/5207)) + +- Update django-anymail to 11.0.1 ([#5208](https://github.com/cookiecutter/cookiecutter-django/pull/5208)) + +## 2024.07.10 + + +### Updated + +- Update django-allauth to 0.63.4 ([#5204](https://github.com/cookiecutter/cookiecutter-django/pull/5204)) + +- Update django to 4.2.14 ([#5200](https://github.com/cookiecutter/cookiecutter-django/pull/5200)) + +- Update collectfasta to 3.2.0 ([#5201](https://github.com/cookiecutter/cookiecutter-django/pull/5201)) + +- Update sentry-sdk to 2.9.0 ([#5202](https://github.com/cookiecutter/cookiecutter-django/pull/5202)) + +- Update django-debug-toolbar to 4.4.6 ([#5203](https://github.com/cookiecutter/cookiecutter-django/pull/5203)) + +## 2024.07.09 + + +### Changed + +- Migrate from Collectfast to Collestfasta ([#5172](https://github.com/cookiecutter/cookiecutter-django/pull/5172)) + +### Documentation + +- Fix a typo in the `--all` option of the `makemessages` command ([#5198](https://github.com/cookiecutter/cookiecutter-django/pull/5198)) + +### Updated + +- Update django-storages to 1.14.4 ([#5197](https://github.com/cookiecutter/cookiecutter-django/pull/5197)) + +## 2024.07.08 + + +### Updated + +- Update ruff to 0.5.1 ([#5190](https://github.com/cookiecutter/cookiecutter-django/pull/5190)) + +- Update django-debug-toolbar to 4.4.5 ([#5192](https://github.com/cookiecutter/cookiecutter-django/pull/5192)) + +- Update sentry-sdk to 2.8.0 ([#5195](https://github.com/cookiecutter/cookiecutter-django/pull/5195)) + +## 2024.07.05 + + +### Updated + +- Update django-debug-toolbar to 4.4.3 ([#5189](https://github.com/cookiecutter/cookiecutter-django/pull/5189)) + +## 2024.07.02 + + +### Updated + +- Update pillow to 10.4.0 ([#5182](https://github.com/cookiecutter/cookiecutter-django/pull/5182)) + +## 2024.07.01 + + +### Updated + +- Update ruff to 0.5.0 ([#5181](https://github.com/cookiecutter/cookiecutter-django/pull/5181)) + +- Update sentry-sdk to 2.7.1 ([#5174](https://github.com/cookiecutter/cookiecutter-django/pull/5174)) + +- Auto-update pre-commit hooks ([#5175](https://github.com/cookiecutter/cookiecutter-django/pull/5175)) + +- Update psycopg to 3.2.1 ([#5180](https://github.com/cookiecutter/cookiecutter-django/pull/5180)) + +## 2024.06.30 + + +### Updated + +- Update django-upgrade to 1.19.0 ([#5171](https://github.com/cookiecutter/cookiecutter-django/pull/5171)) + +## 2024.06.26 + + +### Fixed + +- Fix keywords case warning in Dockerfile ([#5164](https://github.com/cookiecutter/cookiecutter-django/pull/5164)) + +### Updated + +- Update redis to 5.0.7 ([#5170](https://github.com/cookiecutter/cookiecutter-django/pull/5170)) + +- Update sentry-sdk to 2.7.0 ([#5169](https://github.com/cookiecutter/cookiecutter-django/pull/5169)) + +## 2024.06.24 + + +### Updated + +- Update django-anymail to 11.0 ([#5163](https://github.com/cookiecutter/cookiecutter-django/pull/5163)) + +- Update coverage to 7.5.4 ([#5162](https://github.com/cookiecutter/cookiecutter-django/pull/5162)) + +## 2024.06.22 + + +### Updated + +- Bump amazon/aws-cli from 2.16.10 to 2.17.0 ([#5161](https://github.com/cookiecutter/cookiecutter-django/pull/5161)) + +- Auto-update pre-commit hooks ([#5160](https://github.com/cookiecutter/cookiecutter-django/pull/5160)) + +- Update ruff to 0.4.10 ([#5159](https://github.com/cookiecutter/cookiecutter-django/pull/5159)) + +## 2024.06.20 + + +### Fixed + +- Remove deprecated docker and python tags from GitLab CI config ([#5158](https://github.com/cookiecutter/cookiecutter-django/pull/5158)) + +## 2024.06.19 + + +### Updated + +- Update djangorestframework to 3.15.2 ([#5156](https://github.com/cookiecutter/cookiecutter-django/pull/5156)) + +- Update django-cors-headers to 4.4.0 ([#5154](https://github.com/cookiecutter/cookiecutter-django/pull/5154)) + +- Update sentry-sdk to 2.6.0 ([#5153](https://github.com/cookiecutter/cookiecutter-django/pull/5153)) + +- Update whitenoise to 6.7.0 ([#5155](https://github.com/cookiecutter/cookiecutter-django/pull/5155)) + +## 2024.06.18 + + +### Updated + +- Bump amazon/aws-cli from 2.16.8 to 2.16.10 ([#5149](https://github.com/cookiecutter/cookiecutter-django/pull/5149)) + +## 2024.06.17 + + +### Updated + +- Update django-compressor to 4.5 ([#5145](https://github.com/cookiecutter/cookiecutter-django/pull/5145)) + +- Update rcssmin to 1.1.2 ([#4614](https://github.com/cookiecutter/cookiecutter-django/pull/4614)) + ## 2024.06.15 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 06f31200b..209b2014f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -222,6 +222,13 @@ Listed in alphabetical order. MOGOST + + Ali Shamakhi + + ali-shamakhi + + + Alvaro [Andor] diff --git a/docs/requirements.txt b/docs/requirements.txt index 26cb8da1b..e1bc625ff 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,3 @@ -sphinx==7.3.7 +sphinx==7.4.6 sphinx-rtd-theme==2.0.0 myst-parser==3.0.1 diff --git a/requirements.txt b/requirements.txt index cd8a823f8..ca98dce69 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,14 +4,14 @@ binaryornot==0.4.4 # Code quality # ------------------------------------------------------------------------------ -ruff==0.4.9 -django-upgrade==1.18.0 +ruff==0.5.3 +django-upgrade==1.20.0 djlint==1.34.1 pre-commit==3.7.1 # Testing # ------------------------------------------------------------------------------ -tox==4.15.1 +tox==4.16.0 pytest==8.2.2 pytest-xdist==3.6.1 pytest-cookies==0.7.0 diff --git a/setup.py b/setup.py index e240446f8..1cf1166e7 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ except ImportError: from distutils.core import setup # We use calendar versioning -version = "2024.06.15" +version = "2024.07.19" with open("README.md") as readme_file: long_description = readme_file.read() diff --git a/{{cookiecutter.project_slug}}/.gitlab-ci.yml b/{{cookiecutter.project_slug}}/.gitlab-ci.yml index 41eea0db4..71216bc7a 100644 --- a/{{cookiecutter.project_slug}}/.gitlab-ci.yml +++ b/{{cookiecutter.project_slug}}/.gitlab-ci.yml @@ -28,8 +28,6 @@ pytest: stage: test {%- if cookiecutter.use_docker == 'y' %} image: docker:25.0 - tags: - - docker services: - docker:dind before_script: @@ -42,8 +40,6 @@ pytest: - docker compose -f docker-compose.local.yml run django pytest {%- else %} image: python:3.12 - tags: - - python services: - postgres:{{ cookiecutter.postgresql_version }} variables: diff --git a/{{cookiecutter.project_slug}}/.pre-commit-config.yaml b/{{cookiecutter.project_slug}}/.pre-commit-config.yaml index b47b091c8..8764a8e36 100644 --- a/{{cookiecutter.project_slug}}/.pre-commit-config.yaml +++ b/{{cookiecutter.project_slug}}/.pre-commit-config.yaml @@ -32,14 +32,14 @@ repos: exclude: '{{cookiecutter.project_slug}}/templates/' - repo: https://github.com/adamchainz/django-upgrade - rev: '1.18.0' + rev: '1.20.0' hooks: - id: django-upgrade args: ['--target-version', '4.2'] # Run the Ruff linter. - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 + rev: v0.5.3 hooks: # Linter - id: ruff diff --git a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile index b085d990c..1183ae984 100644 --- a/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/django/Dockerfile @@ -1,8 +1,8 @@ # define an alias for the specific python version used in this file. -FROM docker.io/python:3.12.4-slim-bookworm as python +FROM docker.io/python:3.12.4-slim-bookworm AS python # Python build stage -FROM python as python-build-stage +FROM python AS python-build-stage ARG BUILD_ENVIRONMENT=local @@ -22,14 +22,14 @@ RUN pip wheel --wheel-dir /usr/src/app/wheels \ # Python 'run' stage -FROM python as python-run-stage +FROM python AS python-run-stage ARG BUILD_ENVIRONMENT=local ARG APP_HOME=/app -ENV PYTHONUNBUFFERED 1 -ENV PYTHONDONTWRITEBYTECODE 1 -ENV BUILD_ENV ${BUILD_ENVIRONMENT} +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV BUILD_ENV=${BUILD_ENVIRONMENT} WORKDIR ${APP_HOME} diff --git a/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile index 0fadd009b..cdc002fe0 100644 --- a/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/docs/Dockerfile @@ -1,11 +1,11 @@ # define an alias for the specific python version used in this file. -FROM docker.io/python:3.12.4-slim-bookworm as python +FROM docker.io/python:3.12.4-slim-bookworm AS python # Python build stage -FROM python as python-build-stage +FROM python AS python-build-stage -ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONDONTWRITEBYTECODE=1 RUN apt-get update && apt-get install --no-install-recommends -y \ # dependencies for building Python packages @@ -26,11 +26,11 @@ RUN pip wheel --no-cache-dir --wheel-dir /usr/src/app/wheels \ # Python 'run' stage -FROM python as python-run-stage +FROM python AS python-run-stage ARG BUILD_ENVIRONMENT -ENV PYTHONUNBUFFERED 1 -ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 RUN apt-get update && apt-get install --no-install-recommends -y \ # To run the Makefile diff --git a/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile b/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile index 0848ecaf8..438e3fa08 100644 --- a/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/local/node/Dockerfile @@ -6,4 +6,4 @@ COPY ./package.json /app RUN npm install && npm cache clean --force -ENV PATH ./node_modules/.bin/:$PATH +ENV PATH=./node_modules/.bin/:$PATH diff --git a/{{cookiecutter.project_slug}}/compose/production/aws/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/aws/Dockerfile index 687c6d5cf..9c7b8a69a 100644 --- a/{{cookiecutter.project_slug}}/compose/production/aws/Dockerfile +++ b/{{cookiecutter.project_slug}}/compose/production/aws/Dockerfile @@ -1,4 +1,7 @@ -FROM docker.io/amazon/aws-cli:2.16.8 +FROM docker.io/amazon/aws-cli:2.17.0 + +# Clear entrypoint from the base image, otherwise it's always calling the aws CLI +ENTRYPOINT [] COPY ./compose/production/aws/maintenance /usr/local/bin/maintenance COPY ./compose/production/postgres/maintenance/_sourced /usr/local/bin/maintenance/_sourced diff --git a/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile b/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile index ab83fcd8f..6279908a9 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:20-bookworm-slim as client-builder +FROM docker.io/node:20-bookworm-slim AS client-builder ARG APP_HOME=/app WORKDIR ${APP_HOME} @@ -25,10 +25,10 @@ RUN npm run build {%- endif %} # define an alias for the specific python version used in this file. -FROM docker.io/python:3.12.4-slim-bookworm as python +FROM docker.io/python:3.12.4-slim-bookworm AS python # Python build stage -FROM python as python-build-stage +FROM python AS python-build-stage ARG BUILD_ENVIRONMENT=production @@ -48,14 +48,14 @@ RUN pip wheel --wheel-dir /usr/src/app/wheels \ # Python 'run' stage -FROM python as python-run-stage +FROM python AS python-run-stage ARG BUILD_ENVIRONMENT=production ARG APP_HOME=/app -ENV PYTHONUNBUFFERED 1 -ENV PYTHONDONTWRITEBYTECODE 1 -ENV BUILD_ENV ${BUILD_ENVIRONMENT} +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV BUILD_ENV=${BUILD_ENVIRONMENT} WORKDIR ${APP_HOME} diff --git a/{{cookiecutter.project_slug}}/config/settings/production.py b/{{cookiecutter.project_slug}}/config/settings/production.py index a650d8315..706d04e0a 100644 --- a/{{cookiecutter.project_slug}}/config/settings/production.py +++ b/{{cookiecutter.project_slug}}/config/settings/production.py @@ -198,13 +198,13 @@ STORAGES = { {%- if cookiecutter.cloud_provider == 'AWS' %} MEDIA_URL = f"https://{aws_s3_domain}/media/" {%- if cookiecutter.use_whitenoise == 'n' %} -COLLECTFAST_STRATEGY = "collectfast.strategies.boto3.Boto3Strategy" +COLLECTFASTA_STRATEGY = "collectfasta.strategies.boto3.Boto3Strategy" STATIC_URL = f"https://{aws_s3_domain}/static/" {%- endif %} {%- elif cookiecutter.cloud_provider == 'GCP' %} MEDIA_URL = f"https://storage.googleapis.com/{GS_BUCKET_NAME}/media/" {%- if cookiecutter.use_whitenoise == 'n' %} -COLLECTFAST_STRATEGY = "collectfast.strategies.gcloud.GoogleCloudStrategy" +COLLECTFASTA_STRATEGY = "collectfasta.strategies.gcloud.GoogleCloudStrategy" STATIC_URL = f"https://storage.googleapis.com/{GS_BUCKET_NAME}/static/" {%- endif %} {%- elif cookiecutter.cloud_provider == 'Azure' %} @@ -329,10 +329,10 @@ COMPRESS_FILTERS = { } {% endif %} {%- if cookiecutter.use_whitenoise == 'n' -%} -# Collectfast +# Collectfasta # ------------------------------------------------------------------------------ -# https://github.com/antonagestam/collectfast#installation -INSTALLED_APPS = ["collectfast", *INSTALLED_APPS] +# https://github.com/jasongi/collectfasta#installation +INSTALLED_APPS = ["collectfasta", *INSTALLED_APPS] {% endif %} # LOGGING # ------------------------------------------------------------------------------ diff --git a/{{cookiecutter.project_slug}}/locale/README.md b/{{cookiecutter.project_slug}}/locale/README.md index 8971441a0..7cb6876ad 100644 --- a/{{cookiecutter.project_slug}}/locale/README.md +++ b/{{cookiecutter.project_slug}}/locale/README.md @@ -3,7 +3,7 @@ Start by configuring the `LANGUAGES` settings in `base.py`, by uncommenting languages you are willing to support. Then, translations strings will be placed in this folder when running: ```bash -{% if cookiecutter.use_docker == 'y' %}docker compose -f docker-compose.local.yml run --rm django {% endif %}python manage.py makemessages -all --no-location +{% if cookiecutter.use_docker == 'y' %}docker compose -f docker-compose.local.yml run --rm django {% endif %}python manage.py makemessages --all --no-location ``` This should generate `django.po` (stands for Portable Object) files under each locale `/LC_MESSAGES/django.po`. Each translatable string in the codebase is collected with its `msgid` and need to be translated as `msgstr`, for example: diff --git a/{{cookiecutter.project_slug}}/requirements/base.txt b/{{cookiecutter.project_slug}}/requirements/base.txt index 2907abada..db88971b0 100644 --- a/{{cookiecutter.project_slug}}/requirements/base.txt +++ b/{{cookiecutter.project_slug}}/requirements/base.txt @@ -1,5 +1,5 @@ python-slugify==8.0.4 # https://github.com/un33k/python-slugify -Pillow==10.3.0 # https://github.com/python-pillow/Pillow +Pillow==10.4.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 @@ -9,11 +9,11 @@ rcssmin==1.1.2 # https://github.com/ndparker/rcssmin {%- endif %} argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi {%- if cookiecutter.use_whitenoise == 'y' %} -whitenoise==6.6.0 # https://github.com/evansd/whitenoise +whitenoise==6.7.0 # https://github.com/evansd/whitenoise {%- endif %} -redis==5.0.6 # https://github.com/redis/redis-py +redis==5.0.7 # https://github.com/redis/redis-py {%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %} -hiredis==2.3.2 # https://github.com/redis/hiredis-py +hiredis==3.0.0 # https://github.com/redis/hiredis-py {%- endif %} {%- if cookiecutter.use_celery == "y" %} celery==5.4.0 # pyup: < 6.0 # https://github.com/celery/celery @@ -23,17 +23,17 @@ flower==2.0.1 # https://github.com/mher/flower {%- endif %} {%- endif %} {%- if cookiecutter.use_async == 'y' %} -uvicorn[standard]==0.30.1 # https://github.com/encode/uvicorn +uvicorn[standard]==0.30.3 # https://github.com/encode/uvicorn uvicorn-worker==0.2.0 # https://github.com/Kludex/uvicorn-worker {%- endif %} # Django # ------------------------------------------------------------------------------ -django==4.2.13 # pyup: < 5.0 # https://www.djangoproject.com/ +django==4.2.14 # pyup: < 5.0 # https://www.djangoproject.com/ django-environ==0.11.2 # https://github.com/joke2k/django-environ django-model-utils==4.5.1 # https://github.com/jazzband/django-model-utils -django-allauth[mfa]==0.63.3 # https://github.com/pennersr/django-allauth -django-crispy-forms==2.2 # https://github.com/django-crispy-forms/django-crispy-forms +django-allauth[mfa]==0.63.6 # https://github.com/pennersr/django-allauth +django-crispy-forms==2.3 # https://github.com/django-crispy-forms/django-crispy-forms crispy-bootstrap5==2024.2 # https://github.com/django-crispy-forms/crispy-bootstrap5 {%- if cookiecutter.frontend_pipeline == 'Django Compressor' %} django-compressor==4.5 # https://github.com/django-compressor/django-compressor @@ -41,8 +41,8 @@ django-compressor==4.5 # https://github.com/django-compressor/django-compressor django-redis==5.4.0 # https://github.com/jazzband/django-redis {%- if cookiecutter.use_drf == 'y' %} # Django REST Framework -djangorestframework==3.15.1 # https://github.com/encode/django-rest-framework -django-cors-headers==4.3.1 # https://github.com/adamchainz/django-cors-headers +djangorestframework==3.15.2 # https://github.com/encode/django-rest-framework +django-cors-headers==4.4.0 # https://github.com/adamchainz/django-cors-headers # DRF-spectacular for api documentation drf-spectacular==0.27.2 # https://github.com/tfranzel/drf-spectacular {%- endif %} diff --git a/{{cookiecutter.project_slug}}/requirements/local.txt b/{{cookiecutter.project_slug}}/requirements/local.txt index 89d049d0e..7d00b2e76 100644 --- a/{{cookiecutter.project_slug}}/requirements/local.txt +++ b/{{cookiecutter.project_slug}}/requirements/local.txt @@ -3,9 +3,9 @@ Werkzeug[watchdog]==3.0.3 # https://github.com/pallets/werkzeug ipdb==0.13.13 # https://github.com/gotcha/ipdb {%- if cookiecutter.use_docker == 'y' %} -psycopg[c]==3.1.19 # https://github.com/psycopg/psycopg +psycopg[c]==3.2.1 # https://github.com/psycopg/psycopg {%- else %} -psycopg[binary]==3.1.19 # https://github.com/psycopg/psycopg +psycopg[binary]==3.2.1 # https://github.com/psycopg/psycopg {%- endif %} {%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %} watchfiles==0.22.0 # https://github.com/samuelcolvin/watchfiles @@ -23,14 +23,14 @@ djangorestframework-stubs[compatible-mypy]==3.15.0 # https://github.com/typeddj # Documentation # ------------------------------------------------------------------------------ -sphinx==7.3.7 # https://github.com/sphinx-doc/sphinx +sphinx==7.4.6 # https://github.com/sphinx-doc/sphinx sphinx-autobuild==2024.4.16 # https://github.com/GaretJax/sphinx-autobuild sphinx-rtd-theme==2.0.0 # https://pypi.org/project/sphinx-rtd-theme/ # Code quality # ------------------------------------------------------------------------------ -ruff==0.4.9 # https://github.com/astral-sh/ruff -coverage==7.5.3 # https://github.com/nedbat/coveragepy +ruff==0.5.3 # https://github.com/astral-sh/ruff +coverage==7.6.0 # https://github.com/nedbat/coveragepy djlint==1.34.1 # https://github.com/Riverside-Healthcare/djLint pre-commit==3.7.1 # https://github.com/pre-commit/pre-commit @@ -38,7 +38,7 @@ pre-commit==3.7.1 # https://github.com/pre-commit/pre-commit # ------------------------------------------------------------------------------ factory-boy==3.3.0 # https://github.com/FactoryBoy/factory_boy -django-debug-toolbar==4.4.2 # https://github.com/jazzband/django-debug-toolbar +django-debug-toolbar==4.4.6 # https://github.com/jazzband/django-debug-toolbar django-extensions==3.2.3 # https://github.com/django-extensions/django-extensions django-coverage-plugin==3.1.0 # https://github.com/nedbat/django_coverage_plugin pytest-django==4.8.0 # https://github.com/pytest-dev/pytest-django diff --git a/{{cookiecutter.project_slug}}/requirements/production.txt b/{{cookiecutter.project_slug}}/requirements/production.txt index 9a742a16a..3cda1be50 100644 --- a/{{cookiecutter.project_slug}}/requirements/production.txt +++ b/{{cookiecutter.project_slug}}/requirements/production.txt @@ -3,42 +3,42 @@ -r base.txt gunicorn==22.0.0 # https://github.com/benoitc/gunicorn -psycopg[c]==3.1.19 # https://github.com/psycopg/psycopg +psycopg[c]==3.2.1 # https://github.com/psycopg/psycopg {%- if cookiecutter.use_whitenoise == 'n' %} -Collectfast==2.2.0 # https://github.com/antonagestam/collectfast +Collectfasta==3.2.0 # https://github.com/jasongi/collectfasta {%- endif %} {%- if cookiecutter.use_sentry == "y" %} -sentry-sdk==2.5.1 # https://github.com/getsentry/sentry-python +sentry-sdk==2.10.0 # https://github.com/getsentry/sentry-python {%- endif %} {%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %} -hiredis==2.3.2 # https://github.com/redis/hiredis-py +hiredis==3.0.0 # https://github.com/redis/hiredis-py {%- endif %} # Django # ------------------------------------------------------------------------------ {%- if cookiecutter.cloud_provider == 'AWS' %} -django-storages[s3]==1.14.3 # https://github.com/jschneier/django-storages +django-storages[s3]==1.14.4 # https://github.com/jschneier/django-storages {%- elif cookiecutter.cloud_provider == 'GCP' %} -django-storages[google]==1.14.3 # https://github.com/jschneier/django-storages +django-storages[google]==1.14.4 # https://github.com/jschneier/django-storages {%- elif cookiecutter.cloud_provider == 'Azure' %} -django-storages[azure]==1.14.3 # https://github.com/jschneier/django-storages +django-storages[azure]==1.14.4 # https://github.com/jschneier/django-storages {%- endif %} {%- if cookiecutter.mail_service == 'Mailgun' %} -django-anymail[mailgun]==10.3 # https://github.com/anymail/django-anymail +django-anymail[mailgun]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Amazon SES' %} -django-anymail[amazon-ses]==10.3 # https://github.com/anymail/django-anymail +django-anymail[amazon-ses]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Mailjet' %} -django-anymail[mailjet]==10.3 # https://github.com/anymail/django-anymail +django-anymail[mailjet]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Mandrill' %} -django-anymail[mandrill]==10.3 # https://github.com/anymail/django-anymail +django-anymail[mandrill]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Postmark' %} -django-anymail[postmark]==10.3 # https://github.com/anymail/django-anymail +django-anymail[postmark]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Sendgrid' %} -django-anymail[sendgrid]==10.3 # https://github.com/anymail/django-anymail +django-anymail[sendgrid]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Brevo' %} -django-anymail[brevo]==10.3 # https://github.com/anymail/django-anymail +django-anymail[brevo]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'SparkPost' %} -django-anymail[sparkpost]==10.3 # https://github.com/anymail/django-anymail +django-anymail[sparkpost]==11.0.1 # https://github.com/anymail/django-anymail {%- elif cookiecutter.mail_service == 'Other SMTP' %} -django-anymail==10.3 # https://github.com/anymail/django-anymail +django-anymail==11.0.1 # https://github.com/anymail/django-anymail {%- endif %} diff --git a/{{cookiecutter.project_slug}}/runtime.txt b/{{cookiecutter.project_slug}}/runtime.txt index 4ddc7cd66..74d315a82 100644 --- a/{{cookiecutter.project_slug}}/runtime.txt +++ b/{{cookiecutter.project_slug}}/runtime.txt @@ -1 +1 @@ -python-3.12.3 +python-3.12.4