Hello Harlan, thanks for forwarding this! On Fri, Mar 27, 2020 at 11:43:36AM -0400, Harlan Lieberman-Berg wrote: > reassign 951696 requests > retitle 951696 requests: incompatibility between requests == 2.22.0-2 > and urllib3 == 1.25.8-1 > tag 951696 +unreproducible > affects 951696 certbot python3-urllib3 > thanks > > I've looked over this several times over the last few months, and I > can't reproduce the problem on any of my test systems. However, > looking at the code, if this bug exists, it's definitely between > requests and urllib3, not in certbot itself. > > Sending it over to the requests folks, in the hopes that they've seen > this somewhere else and can reproduce it.
Unfortunately I never seen something like this but I will investigate.
I would exclude requests involvement for now, it seems more on urllib3 side,
but let's see (anyway no need to move this now, since I maintain also urllib3).
I strictly follow upstream for compatibility versions, so I'm more
inclined to ithink to an urllib3 bug.
I looked at the differences of urllib3.util.url.parse_url in 1.25.8-1 and
1.24.1-1: upstream moved to a more "ask forgiveness" approach, and we can see
a try/except block from line 360 to line 391.
The except is:
except (ValueError, AttributeError):
return six.raise_from(LocationParseError(source_url), None)
So although Python 3 can chain exceptions since None is passed to
six.raise_from, every exceptions of kind ValueError or AttributeError are
masked as the LocationParseError we see in the traceback that Alexandre posted.
This can hide a possible root cause and I would look at this first.
@Alexandre since it seems tricky to reproduce, meanwhile I setup a test
environment, please can you try to unmask the exception above?
You need only to edit the lines above (lines 391 and 392 of
/usr/lib/python3/dist-packages/urllib3/util/url.py) into:
except (ValueError, AttributeError) as exp:
return six.raise_from(LocationParseError(source_url), exp)
This way you should get also the traceback of another exception that is
eventually raised.
Or you can just rethrow `exp`: choose the way you prefer.
From the exception we get now it's not possible to understand what is
happening. The source_url mentioned in the first report is parsed fine in my
system with urllib3 1.25.8-1:
❯ python3 -c "from urllib3.util.url import parse_url;
print(repr(parse_url('https://acme-v02.api.letsencrypt.org/directory')))"
Url(scheme='https', auth=None, host='acme-v02.api.letsencrypt.org', port=None,
path='/directory', query=None, fragment=None)
So maybe there is something hidden somewhere.
Regards,
--
Daniele Tricoli 'eriol'
https://mornie.org
signature.asc
Description: PGP signature
_______________________________________________ Python-modules-team mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/python-modules-team
