diff --git a/constraints.txt b/constraints.txt
index 6e1232c..10edbdf 100644
--- a/constraints.txt
+++ b/constraints.txt
@@ -83,7 +83,7 @@ trio-websocket==0.11.1
     # via selenium
 typing-extensions==4.12.2
     # via selenium
-urllib3==2.2.3
+urllib3==2.3.0
     # via
     #   django-anymail
     #   requests
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 8f7b219..fcc1741 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -34,7 +34,7 @@ charset-normalizer==3.4.0
     # via
     #   -c constraints.txt
     #   requests
-click==8.1.7
+click==8.1.8
     # via
     #   black
     #   pip-tools
@@ -66,7 +66,7 @@ h11==0.14.0
     # via
     #   -c constraints.txt
     #   wsproto
-hypothesis==6.122.3
+hypothesis==6.123.0
     # via -r requirements-dev.in
 identify==2.6.3
     # via pre-commit
@@ -79,7 +79,7 @@ iniconfig==2.0.0
     # via pytest
 invoke==2.2.0
     # via -r requirements-dev.in
-jinja2==3.1.4
+jinja2==3.1.5
     # via pytest-html
 markupsafe==3.0.2
     # via jinja2
@@ -155,7 +155,7 @@ requests==2.32.3
     #   bpython
     #   pytest-base-url
     #   pytest-selenium
-ruff==0.8.3
+ruff==0.8.4
     # via -r requirements-dev.in
 selenium==4.27.1
     # via
@@ -192,7 +192,7 @@ typing-extensions==4.12.2
     # via
     #   -c constraints.txt
     #   selenium
-urllib3[socks]==2.2.3
+urllib3[socks]==2.3.0
     # via
     #   -c constraints.txt
     #   requests
diff --git a/requirements.txt b/requirements.txt
index 112cff0..258b243 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -83,7 +83,7 @@ trio-websocket==0.11.1
     # via selenium
 typing-extensions==4.12.2
     # via selenium
-urllib3[socks]==2.2.3
+urllib3[socks]==2.3.0
     # via
     #   django-anymail
     #   requests