⬆️ Upgrade Ruff
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e59e05abe4e3e..4e34cc7ede902 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -19,7 +19,7 @@ repos:
         - --py3-plus
         - --keep-runtime-typing
 -   repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.0.114
+    rev: v0.0.138
     hooks:
     -   id: ruff
         args:
diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py
index 3df5ccfc8b58e..4c817d5d0ba89 100644
--- a/fastapi/dependencies/utils.py
+++ b/fastapi/dependencies/utils.py
@@ -105,10 +105,10 @@ def check_file_field(field: ModelField) -> None:
                 assert parse_options_header
             except ImportError:
                 logger.error(multipart_incorrect_install_error)
-                raise RuntimeError(multipart_incorrect_install_error)
+                raise RuntimeError(multipart_incorrect_install_error) from None
         except ImportError:
             logger.error(multipart_not_installed_error)
-            raise RuntimeError(multipart_not_installed_error)
+            raise RuntimeError(multipart_not_installed_error) from None
 
 
 def get_param_sub_dependant(
diff --git a/fastapi/encoders.py b/fastapi/encoders.py
index 6bde9f4abf583..2f95bcbf6692d 100644
--- a/fastapi/encoders.py
+++ b/fastapi/encoders.py
@@ -157,7 +157,7 @@ def jsonable_encoder(
             data = vars(obj)
         except Exception as e:
             errors.append(e)
-            raise ValueError(errors)
+            raise ValueError(errors) from e
     return jsonable_encoder(
         data,
         include=include,
diff --git a/fastapi/utils.py b/fastapi/utils.py
index b94dacecc55d8..b15f6a2cfb09b 100644
--- a/fastapi/utils.py
+++ b/fastapi/utils.py
@@ -89,7 +89,7 @@ def create_response_field(
     except RuntimeError:
         raise fastapi.exceptions.FastAPIError(
             f"Invalid args for response field! Hint: check that {type_} is a valid pydantic field type"
-        )
+        ) from None
 
 
 def create_cloned_field(
diff --git a/pyproject.toml b/pyproject.toml
index 9549cc47da156..4ae3809864b2a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -53,7 +53,7 @@ test = [
     "pytest >=7.1.3,<8.0.0",
     "coverage[toml] >= 6.5.0,<7.0",
     "mypy ==0.982",
-    "ruff ==0.0.114",
+    "ruff ==0.0.138",
     "black == 22.10.0",
     "isort >=5.0.6,<6.0.0",
     "httpx >=0.23.0,<0.24.0",
@@ -87,7 +87,7 @@ doc = [
     "pyyaml >=5.3.1,<7.0.0",
 ]
 dev = [
-    "ruff ==0.0.114",
+    "ruff ==0.0.138",
     "uvicorn[standard] >=0.12.0,<0.19.0",
     "pre-commit >=2.17.0,<3.0.0",
 ]
@@ -168,6 +168,7 @@ select = [
 ignore = [
     "E501",  # line too long, handled by black
     "B008",  # do not perform function calls in argument defaults
+    "C901",  # too complex
 ]
 
 [tool.ruff.per-file-ignores]
@@ -178,7 +179,8 @@ ignore = [
 "docs_src/dependencies/tutorial010.py" = ["F821"]
 "docs_src/custom_response/tutorial007.py" = ["B007"]
 "docs_src/dataclasses/tutorial003.py" = ["I001"]
-
+"docs_src/path_operation_advanced_configuration/tutorial007.py" = ["B904"]
+"docs_src/custom_request_and_route/tutorial002.py" = ["B904"]
 
 [tool.ruff.isort]
 known-third-party = ["fastapi", "pydantic", "starlette"]

⬆️ Upgrade Ruff