requests: Allow passing None header values #11370
Merged
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.
#7773 changed
requests.session.Session
methods to accept None for header values, but didn't do quite the same for the functions inrequests.api
. I think this was a mistake. The functions inrequests.api
just pass through theheaders
argument without doing anything in particular to it.Furthermore, it's useful to be able to pass None as a header value: because
requests.utils.default_headers
sets anAccept-Encoding
header by default, the easiest way to send a request with noAccept-Encoding
header is something likerequests.get(url, headers={"Accept-Encoding": None})
. It's annoying to have to construct aSession
just to pass type-checking.It's a little confusing for the type alias to be called
_HeadersUpdateMapping
inrequests.sessions
but_HeadersMapping
inrequests.api
; this is because the latter name was already used in other type stubs (tensorflow.keras.callbacks
), so it seemed best to avoid breaking API.