Author martin.panter
Recipients gvanrossum, martin.panter, serhiy.storchaka
Date 2016-07-11.23:33:39
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1468280019.62.0.920205599857.issue27485@psf.upfronthosting.co.za>
In-reply-to
Content
Previous discussion: Issue 1722, Issue 11009.

In Python 2, most of the split- functions _have_ been in urllib.__all__ since revision 5d68afc5227c (2.1). Also, since revision c3656dca65e7 (Issue 1722, 2.7.4), the RST documentation does mention that at least some of them are deprecated in favour of the “urlparse” module. However there are no index entries, and splitport() is not mentioned by name.

In Python 3, these functions wandered into urllib.parse. There is no RST documentation, and the functions are not in __all__ (which was added for Issue 13287 in 3.3).

I think you can use the documented urllib.parse API instead of splitport(), but it is borderline unwieldy:

>>> netloc = "[::1]:80"
>>> urllib.parse.splitport(netloc)  # [Brackets] kept!
('[::1]', '80')
>>> split = urlsplit("//" + netloc); (split.hostname, split.port)
('::1', 80)
>>> split = SplitResult("", netloc, path="", query="", fragment=""); (split.hostname, split.port)
('::1', 80)

I opened Issue 23416 with a suggestion that would make SplitResult a bit simpler to use here. But maybe it makes the implementation too complicated.

I don’t think the non-split-names (Quoter, etc) are in much doubt. They were never in __all__.
History
Date User Action Args
2016-07-11 23:33:39martin.pantersetrecipients: + martin.panter, gvanrossum, serhiy.storchaka
2016-07-11 23:33:39martin.pantersetmessageid: <1468280019.62.0.920205599857.issue27485@psf.upfronthosting.co.za>
2016-07-11 23:33:39martin.panterlinkissue27485 messages
2016-07-11 23:33:39martin.pantercreate