Add json_deserialize parameter to ClientSession
#11741
Open
+49
−5
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.
What do these changes do?
Adds a
json_deserializeparameter toClientSessionto configure JSONdeserialization at the session level, matching the existing
json_serializeparameter.
This allows users to configure a custom JSON deserializer (e.g.,
orjson.loads)once at session creation, and all calls to
ClientResponse.json()will use it bydefault.
Additionally, fixed an inconsistency where
json_serializeparameter defaulted tojson.dumpsdirectly instead of usingDEFAULT_JSON_ENCODERconstant.Are there changes in behavior for the user?
Is it a substantial burden for the maintainers to support this?
I don't think so.
Related issue number
examples, you're adding a feature
from orjson, you're adding deserializer config
modified client.py/client_reqrep.py)
(Closed, Jan 2020)
orjson usage more ergonomic
aspect
(Open, April 2025)
Checklist
CONTRIBUTORS.txtCHANGES/foldername it
<issue_or_pr_num>.<type>.rst(e.g.588.bugfix.rst)if you don't have an issue number, change it to the pull request
number after creating the PR
.bugfix: A bug fix for something the maintainers deemed animproper undesired behavior that got corrected to match
pre-agreed expectations.
.feature: A new behavior, public APIs. That sort of stuff..deprecation: A declaration of future API removals and breakingchanges in behavior.
.breaking: When something public is removed in a breaking way.Could be deprecated in an earlier release.
.doc: Notable updates to the documentation structure or buildprocess.
.packaging: Notes for downstreams about unobvious side effectsand tooling. Changes in the test invocation considerations and
runtime assumptions.
.contrib: Stuff that affects the contributor experience. e.g.Running tests, building the docs, setting up the development
environment.
.misc: Changes that are hard to assign to any of the abovecategories.
Make sure to use full sentences with correct case and punctuation,
for example:
Use the past tense or the present tense a non-imperative mood,
referring to what's changed compared to the last released version
of this project.