Fix: Improve error message for invalid data parameter with AsyncClient #3758
+34
−0
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.
Summary
Fixes #3471
When
AsyncClientreceives invaliddatalikedata=[{"a": "b"}](a list of dicts), it was raising a confusing error:This error is misleading because the user IS using an async client correctly - the actual problem is passing invalid data.
With this fix, both sync and async clients now raise a clear error immediately:
Changes
encode_request()to check ifdatais a list/tuple containing non-bytes objectsTypeErrorwith helpful error message directing users to correct alternatives (json=ordata={...})Test Plan
Before this fix:
After this fix:
Valid use cases still work:
data={"key": "value"}(dict for form encoding)data=[b"bytes", b"data"](list of bytes)json={"key": "value"}(JSON encoding)Testing
tests/test_content.py