[Python-Dev] Let's stop eating exceptions in dict lookup (original) (raw)

Armin Rigo arigo at tunes.org
Tue May 30 00:04:38 CEST 2006


Re-hi,

On Mon, May 29, 2006 at 11:34:28PM +0200, Armin Rigo wrote:

At the moment, I'm trying to, but 2.5 HEAD keeps failing mysteriously on the tests I try to time, and even going into an infinite loop consuming all my memory

Ah, it's a corner case of str.find() whose behavior just changed. Previously, 'abc'.find('', 100) would return -1, and now it returns 100. Just to confuse matters, the same test with unicode returns 100, and has always done so in the past. (Oh well, one of these again...)

So, we need to decide which behavior is "right". One could argue that the current 2.5 HEAD now has a consistent behavior, so it could be kept; but there is an opposite argument as well, which is that some existing programs like the one I was testing are now thrown into annoying infinite loops because str.find() never returns -1 any more, even with larger and larger start arguments. I believe that it's a pattern that could be common in string-processing scripts, trying to match substrings at various points in a string trusting that str.find() will eventually return -1. It's harder to think of a case where a program previously relied on unicode.find('',n) never returning -1. Also, introducing a new way for programs to be caught in an infinite loop is probably not a good idea.

Hum, my apologies for my grumpy comments about the NFS sprint. At least, the unification of the string and unicode algorithm that was started there is a good move, also because it exposes pre-existing inconsistencies.

A bientot,

Armin.



More information about the Python-Dev mailing list