diff --git a/Makefile b/Makefile index 28d09959..00f8a74c 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ migrate: build: @echo "-> Build the dev Docker images" - ${COMPOSE} build + ${COMPOSE} build --pull superuser: ${MANAGE} createsuperuser diff --git a/compose.demo.yml b/compose.demo.yml index ed7b71a2..4e4dca0a 100644 --- a/compose.demo.yml +++ b/compose.demo.yml @@ -4,7 +4,7 @@ x-description: "Minimal demo stack: web + db only, auto-created superuser, Codes services: db: - image: docker.io/library/postgres:16.13 + image: docker.io/library/postgres:16.15 env_file: - .env.demo volumes: diff --git a/compose.dev.yml b/compose.dev.yml index 470fe658..835bc9e5 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -4,7 +4,7 @@ x-description: "Development stack: source mounted, runserver with auto-reload" services: db: - image: docker.io/library/postgres:16.13 + image: docker.io/library/postgres:16.15 env_file: - docker.env volumes: diff --git a/compose.yml b/compose.yml index 9d4902ab..0e66d00d 100644 --- a/compose.yml +++ b/compose.yml @@ -4,7 +4,7 @@ x-description: "Full DejaCode stack: all services, pre-built image, no checkout services: db: - image: docker.io/library/postgres:16.13 + image: docker.io/library/postgres:16.15 env_file: - docker.env volumes: @@ -19,7 +19,7 @@ services: retries: 5 redis: - image: docker.io/library/redis:8.6-alpine + image: docker.io/library/redis:8.8-alpine # Enable redis data persistence using the "Append Only File" with the # default policy of fsync every second. See https://redis.io/topics/persistence command: redis-server --appendonly yes @@ -79,7 +79,7 @@ services: - web nginx: - image: docker.io/library/nginx:1.29-alpine + image: docker.io/library/nginx:1.30-alpine ports: - "${NGINX_PUBLISHED_HTTP_PORT:-80}:80" - "${NGINX_PUBLISHED_HTTPS_PORT:-443}:443" diff --git a/pyproject.toml b/pyproject.toml index b703eb75..e8eddd60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,11 +41,11 @@ dependencies = [ # Django apps "django-crispy-forms==2.7", "crispy-bootstrap5==2026.9", - "django-grappelli==5.0.0", + "django-grappelli==5.0.1", "django-filter==26.2", "django-registration==5.2.1", "confusable_homoglyphs==3.3.1", - "django-guardian==3.5.0", + "django-guardian==3.5.1", "django-environ==0.14.0", "django-debug-toolbar==8.0.0", # Parallel testing @@ -65,7 +65,7 @@ dependencies = [ # Track failed login attempts "django-axes==8.3.1", # Multi-factor authentication - "django-otp==1.7.4", + "django-otp==1.7.5", "qrcode==8.2", # Database "psycopg==3.3.6", @@ -79,9 +79,9 @@ dependencies = [ "rq==2.12.0", "croniter==6.2.4", "django-rq==4.2.0", - "fakeredis==2.39.0", + "fakeredis==2.40.0", # Libs - "certifi==2026.7.22", + "certifi==2026.10.19", "urllib3==2.8.0", "python-dateutil==2.9.0.post0", "six==1.17.0", @@ -91,7 +91,7 @@ dependencies = [ "PyYAML==6.0.3", "XlsxWriter==3.2.9", # Markdown - "markdown==3.11", + "markdown==3.11.1", "bleach==6.4.0", "webencodings==0.6.1", # Authentication @@ -133,7 +133,7 @@ dependencies = [ # OpenVEX "msgspec==0.22.0", # OpenDocument Format - "odfdo==3.27.1", + "odfdo==3.27.2", "lxml==6.1.3", ] diff --git a/thirdparty/dist/certifi-2026.10.19-py3-none-any.whl b/thirdparty/dist/certifi-2026.10.19-py3-none-any.whl new file mode 100644 index 00000000..c9cedc09 Binary files /dev/null and b/thirdparty/dist/certifi-2026.10.19-py3-none-any.whl differ diff --git a/thirdparty/dist/certifi-2026.7.22-py3-none-any.whl b/thirdparty/dist/certifi-2026.7.22-py3-none-any.whl deleted file mode 100644 index 7a4afb13..00000000 Binary files a/thirdparty/dist/certifi-2026.7.22-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_grappelli-5.0.0-py3-none-any.whl b/thirdparty/dist/django_grappelli-5.0.1-py3-none-any.whl similarity index 91% rename from thirdparty/dist/django_grappelli-5.0.0-py3-none-any.whl rename to thirdparty/dist/django_grappelli-5.0.1-py3-none-any.whl index e62aed15..8660f1d6 100644 Binary files a/thirdparty/dist/django_grappelli-5.0.0-py3-none-any.whl and b/thirdparty/dist/django_grappelli-5.0.1-py3-none-any.whl differ diff --git a/thirdparty/dist/django_guardian-3.5.0-py3-none-any.whl b/thirdparty/dist/django_guardian-3.5.0-py3-none-any.whl deleted file mode 100644 index 7825b659..00000000 Binary files a/thirdparty/dist/django_guardian-3.5.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_guardian-3.5.1-py3-none-any.whl b/thirdparty/dist/django_guardian-3.5.1-py3-none-any.whl new file mode 100644 index 00000000..dd72e588 Binary files /dev/null and b/thirdparty/dist/django_guardian-3.5.1-py3-none-any.whl differ diff --git a/thirdparty/dist/django_otp-1.7.4-py3-none-any.whl b/thirdparty/dist/django_otp-1.7.5-py3-none-any.whl similarity index 82% rename from thirdparty/dist/django_otp-1.7.4-py3-none-any.whl rename to thirdparty/dist/django_otp-1.7.5-py3-none-any.whl index 09941247..9614101b 100644 Binary files a/thirdparty/dist/django_otp-1.7.4-py3-none-any.whl and b/thirdparty/dist/django_otp-1.7.5-py3-none-any.whl differ diff --git a/thirdparty/dist/fakeredis-2.39.0-py3-none-any.whl b/thirdparty/dist/fakeredis-2.39.0-py3-none-any.whl deleted file mode 100644 index 530236b4..00000000 Binary files a/thirdparty/dist/fakeredis-2.39.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/fakeredis-2.40.0-py3-none-any.whl b/thirdparty/dist/fakeredis-2.40.0-py3-none-any.whl new file mode 100644 index 00000000..b0b9036c Binary files /dev/null and b/thirdparty/dist/fakeredis-2.40.0-py3-none-any.whl differ diff --git a/thirdparty/dist/markdown-3.11-py3-none-any.whl b/thirdparty/dist/markdown-3.11.1-py3-none-any.whl similarity index 57% rename from thirdparty/dist/markdown-3.11-py3-none-any.whl rename to thirdparty/dist/markdown-3.11.1-py3-none-any.whl index e7f1c286..343f362e 100644 Binary files a/thirdparty/dist/markdown-3.11-py3-none-any.whl and b/thirdparty/dist/markdown-3.11.1-py3-none-any.whl differ diff --git a/thirdparty/dist/odfdo-3.27.1-py3-none-any.whl b/thirdparty/dist/odfdo-3.27.2-py3-none-any.whl similarity index 83% rename from thirdparty/dist/odfdo-3.27.1-py3-none-any.whl rename to thirdparty/dist/odfdo-3.27.2-py3-none-any.whl index 1b57433f..8032de1f 100644 Binary files a/thirdparty/dist/odfdo-3.27.1-py3-none-any.whl and b/thirdparty/dist/odfdo-3.27.2-py3-none-any.whl differ diff --git a/thirdparty/dist/uv-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl b/thirdparty/dist/uv-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl deleted file mode 100644 index 124a685b..00000000 Binary files a/thirdparty/dist/uv-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl and /dev/null differ diff --git a/thirdparty/dist/uv-0.13.4-py3-none-macosx_11_0_arm64.whl b/thirdparty/dist/uv-0.13.4-py3-none-macosx_11_0_arm64.whl new file mode 100644 index 00000000..9995d559 Binary files /dev/null and b/thirdparty/dist/uv-0.13.4-py3-none-macosx_11_0_arm64.whl differ diff --git a/thirdparty/dist/uv-0.11.8-py3-none-macosx_11_0_arm64.whl b/thirdparty/dist/uv-0.13.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl similarity index 59% rename from thirdparty/dist/uv-0.11.8-py3-none-macosx_11_0_arm64.whl rename to thirdparty/dist/uv-0.13.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl index a034ade6..0e67524f 100644 Binary files a/thirdparty/dist/uv-0.11.8-py3-none-macosx_11_0_arm64.whl and b/thirdparty/dist/uv-0.13.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl differ diff --git a/uv.lock b/uv.lock index 68f95b48..83224d52 100644 --- a/uv.lock +++ b/uv.lock @@ -87,10 +87,10 @@ wheels = [ [[package]] name = "certifi" -version = "2026.7.22" +version = "2026.10.19" source = { registry = "thirdparty/dist" } wheels = [ - { path = "certifi-2026.7.22-py3-none-any.whl" }, + { path = "certifi-2026.10.19-py3-none-any.whl" }, ] [[package]] @@ -173,7 +173,7 @@ wheels = [ [[package]] name = "dejacode" -version = "5.9.0" +version = "6.0.0" source = { editable = "." } dependencies = [ { name = "aboutcode-toolkit" }, @@ -268,7 +268,7 @@ requires-dist = [ { name = "attrs", specifier = "==26.1.0" }, { name = "bleach", specifier = "==6.4.0" }, { name = "boolean-py", specifier = "==5.0" }, - { name = "certifi", specifier = "==2026.7.22" }, + { name = "certifi", specifier = "==2026.10.19" }, { name = "charset-normalizer", specifier = "==3.5.2" }, { name = "clamd", specifier = "==1.0.2" }, { name = "click", specifier = "==8.5.0" }, @@ -285,16 +285,16 @@ requires-dist = [ { name = "django-debug-toolbar", specifier = "==8.0.0" }, { name = "django-environ", specifier = "==0.14.0" }, { name = "django-filter", specifier = "==26.2" }, - { name = "django-grappelli", specifier = "==5.0.0" }, - { name = "django-guardian", specifier = "==3.5.0" }, + { name = "django-grappelli", specifier = "==5.0.1" }, + { name = "django-guardian", specifier = "==3.5.1" }, { name = "django-notifications-patched", specifier = "==2.0.0" }, - { name = "django-otp", specifier = "==1.7.4" }, + { name = "django-otp", specifier = "==1.7.5" }, { name = "django-registration", specifier = "==5.2.1" }, { name = "django-rq", specifier = "==4.2.0" }, { name = "djangorestframework", specifier = "==3.18.3" }, { name = "drf-yasg", specifier = "==1.21.15" }, { name = "et-xmlfile", specifier = "==2.0.0" }, - { name = "fakeredis", specifier = "==2.39.0" }, + { name = "fakeredis", specifier = "==2.40.0" }, { name = "gunicorn", specifier = "==26.2.0" }, { name = "idna", specifier = "==3.20" }, { name = "inflection", specifier = "==0.5.1" }, @@ -302,11 +302,11 @@ requires-dist = [ { name = "jsonfield", specifier = "==3.2.0" }, { name = "license-expression", specifier = "==30.4.4" }, { name = "lxml", specifier = "==6.1.3" }, - { name = "markdown", specifier = "==3.11" }, + { name = "markdown", specifier = "==3.11.1" }, { name = "markupsafe", specifier = "==3.0.4" }, { name = "model-bakery", specifier = "==1.24.2" }, { name = "msgspec", specifier = "==0.22.0" }, - { name = "odfdo", specifier = "==3.27.1" }, + { name = "odfdo", specifier = "==3.27.2" }, { name = "openpyxl", specifier = "==3.1.5" }, { name = "packageurl-python", specifier = "==0.17.6" }, { name = "packaging", specifier = "==26.3" }, @@ -433,21 +433,21 @@ wheels = [ [[package]] name = "django-grappelli" -version = "5.0.0" +version = "5.0.1" source = { registry = "thirdparty/dist" } wheels = [ - { path = "django_grappelli-5.0.0-py3-none-any.whl" }, + { path = "django_grappelli-5.0.1-py3-none-any.whl" }, ] [[package]] name = "django-guardian" -version = "3.5.0" +version = "3.5.1" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_guardian-3.5.0-py3-none-any.whl" }, + { path = "django_guardian-3.5.1-py3-none-any.whl" }, ] [[package]] @@ -463,13 +463,13 @@ sdist = { path = "django-notifications-patched-2.0.0.tar.gz" } [[package]] name = "django-otp" -version = "1.7.4" +version = "1.7.5" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_otp-1.7.4-py3-none-any.whl" }, + { path = "django_otp-1.7.5-py3-none-any.whl" }, ] [[package]] @@ -535,14 +535,14 @@ wheels = [ [[package]] name = "fakeredis" -version = "2.39.0" +version = "2.40.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "redis" }, { name = "sortedcontainers" }, ] wheels = [ - { path = "fakeredis-2.39.0-py3-none-any.whl" }, + { path = "fakeredis-2.40.0-py3-none-any.whl" }, ] [[package]] @@ -613,10 +613,10 @@ wheels = [ [[package]] name = "markdown" -version = "3.11" +version = "3.11.1" source = { registry = "thirdparty/dist" } wheels = [ - { path = "markdown-3.11-py3-none-any.whl" }, + { path = "markdown-3.11.1-py3-none-any.whl" }, ] [[package]] @@ -650,14 +650,14 @@ wheels = [ [[package]] name = "odfdo" -version = "3.27.1" +version = "3.27.2" source = { registry = "thirdparty/dist" } dependencies = [ { name = "lxml" }, { name = "typing-extensions" }, ] wheels = [ - { path = "odfdo-3.27.1-py3-none-any.whl" }, + { path = "odfdo-3.27.2-py3-none-any.whl" }, ] [[package]]