[Python-Dev] dictionary order (original) (raw)

John J Lee jjl at pobox.com
Mon May 29 00:53:44 CEST 2006


On Sun, 28 May 2006, Armin Rigo wrote: [...]

Now I'm stumbling upon this test for urllib2:

>>> mgr = urllib2.HTTPPasswordMgr() >>> add = mgr.addpassword >>> add("Some Realm", "http://example.com/", "joe", "password") >>> add("Some Realm", "http://example.com/ni", "ni", "ni") (...) Currently, we use the highest-level path where more than one match: >>> mgr.finduserpassword("Some Realm", "http://example.com/ni") ('joe', 'password') Returning the outermost path is a bit strange, if you ask me, but I am no expert here. Stranger is the fact that the actual implement actually returns, not the outermost path at all -- there is no code to do that -- but a random pick, the first match in dictionary order. The comment in the test is just misleading. I believe that urllib2 should be fixed to always return the innermost path, but I need confirmation about this...

I noticed the same things, and in fact I think this was fixed before you posted :-)

FWIW, here are the details:

The checkin was from Georg as -r 46509, patch was http://python.org/sf/1496206

Part of the comment on the patch:

""" The patch also comments out one test which was testing something not actually guaranteed by the code at all -- it was passing by fluke. The code it's trying to test could do with some review, which is why I left this test commented out rather than deleting the test (but that is a long-standing issue unrelated to this patch, so should not block this patch from being applied). """

Recently I have been slowly working my way through urllib2 auth, fixing bugs and adding tests as I go. This particular issue is horribly unclear in the RFC, though, and I haven't yet got round to the necessary checking of real-world behaviour.

John



More information about the Python-Dev mailing list