Closed defkev closed 6 months ago
This is one hundred percent your own fault. InvalidSchema is documented as a problem when we cannot find a suitable adapter to use for a request and adapters are found by looking at the longest prefix. You registered one with htxp
so you then told Requests you were registering an adapter to handle that scheme. After that, we were unable to use the adapter you configured to complete the request. Finally you're concerned with an exception we catch and then raise a new exception from, there you're being tripped up by the way exceptions are printed in python 3. You're also handling the correct exception when we can't manage that request for you
The typo (htxp) was just an example, i am seeing the exact same behavior with valid schemes (e.g. rtmp://) unsupported by urllib3 also throwing requests.exceptions.InvalidURL
The million dollar question is:
How do i catch urllib3.exceptions.URLSchemeUnknown
in the stack if the URL is in fact NOT invalid (htxp:// vs rtmp://) if requests throws requests.exceptions.InvalidURL
for both without adding my own protocol validator?
If you're writing your own totally custom adapters for those protocols then why do you care about catching an exception from urllib3?
If you're just using the HTTPAdapter from us for unsupported protocols why do you want to handle an exception from urllib3?
None of this makes any sense as a use case and it seems you're not reading the documentation and expecting me to give you solutions to problems that aren't problematic. This is now a request for help that belongs on StackOverflow.
Mounting a custom HTTPAdapter (e.g. for retry) using an unsupported protocol (e.g. typo) doesn't throw requests.exceptions.InvalidSchema like the default adapter?!
Expected Result
Should throw requests.exceptions.InvalidSchema
Actual Result
Reproduction Steps
System Information