Replace urllib.request with urllib3 to support WebAssembly #2515
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.
As discussed in #2514,
urllib.requestis not supported in WebAssembly. This replacesurllib.requestwhere needed withurllib3which does work with WebAssembly. I've tried to keep the code changes to a minimum and to reuse existing semantic patterns.The linter did introduce new lines in one of the imports. I found it odd but left it in place.
Rationale
This enables the use of Cartopy is Pyodide and JupyterLite. Without it, downloading of shape files, etc., fail. See #2514.
Implications
I've run the unit tests and nothing new fails. It's also been tested in JupyterLite and works. There is a chance that the download code path hasn't been fully tested and something may still need to be changed to support
urllib3.This also introduces a new dependency, even though
urllib3is widely available. It is also an existing package in Pyodide.