diff --git a/constraints.txt b/constraints.txt
index 195d3c9..7ccfe02 100644
--- a/constraints.txt
+++ b/constraints.txt
@@ -45,7 +45,7 @@ django-linear-migrations==2.12.0
     # via -r requirements.in
 django-registration==3.4
     # via -r requirements.in
-gunicorn==21.2.0
+gunicorn==22.0.0
     # via -r requirements.in
 h11==0.14.0
     # via wsproto
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 135d993..9c27e08 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -68,7 +68,7 @@ h11==0.14.0
     #   wsproto
 hypothesis==6.100.1
     # via -r requirements-dev.in
-identify==2.5.35
+identify==2.5.36
     # via pre-commit
 idna==3.7
     # via
@@ -83,7 +83,7 @@ jinja2==3.1.3
     # via pytest-html
 markupsafe==2.1.5
     # via jinja2
-model-bakery==1.17.0
+model-bakery==1.18.0
     # via -r requirements-dev.in
 mypy-extensions==1.0.0
     # via black
@@ -107,7 +107,7 @@ platformdirs==4.2.0
     # via
     #   black
     #   virtualenv
-pluggy==1.4.0
+pluggy==1.5.0
     # via pytest
 pre-commit==3.7.0
     # via -r requirements-dev.in
@@ -155,7 +155,7 @@ requests==2.31.0
     #   bpython
     #   pytest-base-url
     #   pytest-selenium
-ruff==0.3.7
+ruff==0.4.1
     # via -r requirements-dev.in
 selenium==4.19.0
     # via
@@ -197,7 +197,7 @@ urllib3[socks]==2.2.1
     #   -c constraints.txt
     #   requests
     #   selenium
-virtualenv==20.25.1
+virtualenv==20.25.3
     # via pre-commit
 wcwidth==0.2.13
     # via blessed
diff --git a/requirements.txt b/requirements.txt
index 1360f9e..c684f1d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -45,7 +45,7 @@ django-linear-migrations==2.12.0
     # via -r requirements.in
 django-registration==3.4
     # via -r requirements.in
-gunicorn==21.2.0
+gunicorn==22.0.0
     # via -r requirements.in
 h11==0.14.0
     # via wsproto