[Python-Dev] dictionary order
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.add_password
> >>> 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.find_user_password("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