splitport() shouldn't handle auth, it should be called after auth is dropped with splituser().
The patch makes URL parsing slower, especially URLs with IPv6 addresses.
$ ./python -m timeit -s "from urllib.parse import urlparse, clear_cache" -- "urlparse('http://python.org:80'); clear_cache()"
Unpatched: 10000 loops, best of 3: 70.3 usec per loop
Patched: 10000 loops, best of 3: 105 usec per loop
$ ./python -m timeit -s "from urllib.parse import urlparse, clear_cache" -- "urlparse('http://[2001:4802:7901:0:e60a:1375:0:5]:80'); clear_cache()"
Unpatched: 10000 loops, best of 3: 71.1 usec per loop
Patched: 1000 loops, best of 3: 239 usec per loop