diff --git a/pyproject.toml b/pyproject.toml
index 9fb3e3315..67c21d402 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -65,7 +65,7 @@ line-length = 120
 
 [tool.ruff.lint]
 select = ["E", "F", "I", "FA", "UP"]
-ignore = ["B904", "B028"]
+ignore = ["B904", "B028", "UP031"]
 
 [tool.ruff.lint.isort]
 combine-as-imports = true
@@ -90,16 +90,13 @@ filterwarnings = [
     "error",
     'ignore: \"watchgod\" is deprecated\, you should switch to watchfiles \(`pip install watchfiles`\)\.:DeprecationWarning',
     "ignore:Uvicorn's native WSGI implementation is deprecated.*:DeprecationWarning",
-    "ignore: 'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning"
+    "ignore: 'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning",
 ]
 
 [tool.coverage.run]
 source_pkgs = ["uvicorn", "tests"]
 plugins = ["coverage_conditional_plugin"]
-omit = [
-    "uvicorn/workers.py",
-    "uvicorn/__main__.py",
-]
+omit = ["uvicorn/workers.py", "uvicorn/__main__.py"]
 
 [tool.coverage.report]
 precision = 2
@@ -128,7 +125,7 @@ py-not-win32 = "sys_platform != 'win32'"
 py-linux = "sys_platform == 'linux'"
 py-darwin = "sys_platform == 'darwin'"
 py-gte-38 = "sys_version_info >= (3, 8)"
-py-lt-38 =  "sys_version_info < (3, 8)"
+py-lt-38 = "sys_version_info < (3, 8)"
 py-gte-39 = "sys_version_info >= (3, 9)"
 py-lt-39 = "sys_version_info < (3, 9)"
 py-gte-310 = "sys_version_info >= (3, 10)"
diff --git a/requirements.txt b/requirements.txt
index d35fd7f30..b3aba41c8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,28 +5,28 @@
 h11 @ git+https://github.com/python-hyper/h11.git@master
 
 # Explicit optionals
-a2wsgi==1.10.4
+a2wsgi==1.10.6
 wsproto==1.2.0
 websockets==12.0
 
 # Packaging
 build==1.2.1
-twine==5.0.0
+twine==5.1.1
 
 # Testing
-ruff==0.3.7
-pytest==8.1.1
+ruff==0.5.0
+pytest==8.2.2
 pytest-mock==3.14.0
-mypy==1.9.0
+mypy==1.10.1
 types-click==7.1.8
 types-pyyaml==6.0.12.20240311
 trustme==1.1.0
-cryptography==42.0.5
-coverage==7.4.4
+cryptography==42.0.8
+coverage==7.5.4
 coverage-conditional-plugin==0.9.0
 httpx==0.27.0
 watchgod==0.8.2
 
 # Documentation
-mkdocs==1.5.3
-mkdocs-material==9.5.17
+mkdocs==1.6.0
+mkdocs-material==9.5.27