python / cpython

The Python programming language
https://www.python.org
Other
63.16k stars 30.24k forks source link

Confusing documentation in the urllib2 HOWTO #63114

Closed abbd0e94-f64f-4e4d-b6a7-99447166716d closed 11 years ago

abbd0e94-f64f-4e4d-b6a7-99447166716d commented 11 years ago
BPO 18914
Nosy @orsenthil, @bitdancer, @voidspace

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields: ```python assignee = None closed_at = created_at = labels = ['docs'] title = 'Confusing documentation in the urllib2 HOWTO' updated_at = user = 'https://bugs.python.org/mingus' ``` bugs.python.org fields: ```python activity = actor = 'michael.foord' assignee = 'docs@python' closed = True closed_date = closer = 'michael.foord' components = ['Documentation'] creation = creator = 'mingus' dependencies = [] files = [] hgrepos = [] issue_num = 18914 keywords = [] message_count = 6.0 messages = ['196854', '196865', '196866', '196867', '196868', '196875'] nosy_count = 5.0 nosy_names = ['orsenthil', 'r.david.murray', 'michael.foord', 'docs@python', 'mingus'] pr_nums = [] priority = 'normal' resolution = 'wont fix' stage = 'resolved' status = 'closed' superseder = None type = None url = 'https://bugs.python.org/issue18914' versions = ['Python 2.7'] ```

abbd0e94-f64f-4e4d-b6a7-99447166716d commented 11 years ago

The python documentation links to an outside website for info and examples on http basic auth. This documentation is terrible and confusing. The link should be removed, and user's should be advised to use the Requests library.

# this example is from http://www.voidspace.org.uk/python/articles/authentication.shtml # which is linked to by the official python docs http://docs.python.org/2/howto/urllib2.html

import urllib2

theurl = 'http://www.someserver.com/toplevelurl/somepage.htm'
username = 'johnny'
password = 'XXXXXX'
# a great password

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
# this creates a password manager
passman.add_password(None, theurl, username, password)
# because we have put None at the start it will always
# use this username/password combination for  urls
# for which `theurl` is a super-url

authhandler = urllib2.HTTPBasicAuthHandler(passman)
# create the AuthHandler

opener = urllib2.build_opener(authhandler)

urllib2.install_opener(opener)
# All calls to urllib2.urlopen will now use our handler
# Make sure not to include the protocol in with the URL, or
# HTTPPasswordMgrWithDefaultRealm will be very confused.
# You must (of course) use it when fetching the page though.

pagehandle = urllib2.urlopen(theurl)
# authentication is now handled automatically for us
bitdancer commented 11 years ago

Suggesting using a 3rd party library in order to explain how to use the python standard library to do something isn't going to work.

Would you like to propose an alternate article or an improvement to the howto, using only stdlib facilities?

(Note that the external web page linked to is that of an active Python core contributor.)

abbd0e94-f64f-4e4d-b6a7-99447166716d commented 11 years ago

The documentation is confusing. Consider this comment:

# All calls to urllib2.urlopen will now use our handler # Make sure not to include the protocol in with the URL, or # HTTPPasswordMgrWithDefaultRealm will be very confused. # You must (of course) use it when fetching the page though.

In the actual code he provides, he uses the protocol. Furthermore, before showing a simple way to use the libary, he shows a godawfully complex way.

Either the documentation should made beautiful and comprehensible, or it should not be linked to.

bitdancer commented 11 years ago

The article is *explaining* basic auth, thus the pedegogy of the presentation, and why it is a "see also" and not part of the docs proper.

I'll admit I don't understand the first part of that comment, since the second part says you do have to put the protocol in the URL, which is what the example does.

As I said, would you care to propose a replacement?

abbd0e94-f64f-4e4d-b6a7-99447166716d commented 11 years ago

Yes - this link was a waste of my time. It would have been better if it had not been there. I propose to replace it with nothing.

voidspace commented 11 years ago

As David explained, the linked article *explains* basic auth as well as showing how to use the standard library support. I think the article is still of some value, it has certainly been useful to many people.