Fix urllib3 getheaders/getheader deprecation in RESTResponse (#195)#225
Open
CedricConday wants to merge 1 commit into
Open
Fix urllib3 getheaders/getheader deprecation in RESTResponse (#195)#225CedricConday wants to merge 1 commit into
CedricConday wants to merge 1 commit into
Conversation
…#195) urllib3 deprecated HTTPResponse.getheaders() and getheader() in favour of accessing HTTPResponse.headers directly. RESTResponse wrapped those deprecated accessors, emitting DeprecationWarnings on every response and risking breakage when urllib3 removes them. Read headers via .headers / .headers.get() instead. The public RESTResponse.getheaders()/getheader() methods are unchanged, so callers in api_client and exceptions keep working. Adds regression tests pinning the wrapper to the non-deprecated accessors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #195
urllib3deprecatedHTTPResponse.getheaders()andHTTPResponse.getheader()in favour of accessingHTTPResponse.headersdirectly, and has scheduled them for removal.RESTResponsewrapped those deprecated accessors, so every response emitted aDeprecationWarningand the SDK would break once urllib3 drops them.Change
RESTResponsenow reads headers via.headers/.headers.get(name, default):This is behaviour-preserving — in urllib3 2.x
getheaders()returnsself.headersandgetheader(name, default)returnsself.headers.get(name, default). The publicRESTResponse.getheaders()/getheader()methods are unchanged, so the call sites inapi_client/__init__.pyandexceptions/__init__.pykeep working.Tests
Added
tests/test_api_client/test_rest.pywith version-independent regression tests: a spy response whose deprecated accessors raise if called, plus a check against a real urllib3HTTPResponse. The spy tests fail on the old code and pass on the fix. Fulltest_api_clientsuite (150 tests) stays green.AI-assisted, human-reviewed — I'm an AI engineer; I find, fix, and test with AI, then review and verify before opening.