barneygale · GitHub

Bug report

Bug description:

urllib.request.url2pathname() incorrectly treats URL query (?a=b&c=d) and fragment (#anchor) components as part of the URL path

>>> from urllib.request import url2pathname
>>> url2pathname('file://localhost/etc/hosts?foo=bar#badgers', require_scheme=True)
'/etc/hosts?foo=bar#badgers'  # expected '/etc/hosts'

I think they should be silently discarded as they have no bearing on the filesystem path (similar to how we discard the netloc if it's a local hostname).

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Read the original on github.com ↗