feat(requests): Raise clear errors if requests_wrapper is missing; update docs #211
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses: #30498
Summary
This PR improves the usability and error handling of the RequestsTool family by providing explicit, user-friendly errors when required arguments are missing, and by enhancing documentation for both contributors and users.
Motivation
Previously, initializing any RequestsTool (such as
RequestsGetTool
) without the requiredrequests_wrapper
argument resulted in a generic and potentially confusing PydanticValidationError
.What's Changed
Code Fix:
A Pydantic
@model_validator
has been added to theBaseRequestsTool
. It now proactively checks for the requiredrequests_wrapper
argument and raises a clear, user-friendlyValueError
if it's missing. This fix is inherited by all request tools (GET, POST, etc.).Documentation Fix:
The docstring for
RequestsGetTool
has been improved to include a.. warning::
, a clear usage example, and a Google-styleArgs:
section detailing the required parameters.Testing:
Added a unit test (
test_requests_tool_missing_wrapper_raises_error
) to ensure that the new error handling triggers as intended ifrequests_wrapper
is not provided.Formatting and Linting:
All affected files have been formatted and linted to match project standards (
ruff format
andruff check --fix
).Example Usage
If the required
requests_wrapper
is omitted, the following error is now raised:Checklist
ruff format
/ruff check --fix
)pytest
)Closes
Closes #214