New submission from Nathan Collins: I have a file f1.py
$ cat f1.py import os (lambda **x:x)(**dict(y,y for y in ())) and when I run it $ python f1.py Traceback (most recent call last): File "f1.py", line 1, in <module> import os TypeError: 'int' object is not iterable Notice that the TypeError exception is from the import os on line 1. But the import isn't the problem. The problem is the illegal generator expression on line 2. I.e. if $ cat f2.py #import os dict(y,y for y in ()) then $ python f2.py File "f2.py", line 2 dict(y,y for y in ()) SyntaxError: Generator expression must be parenthesized if not sole argument The mess (lambda **x:x)(**dict(y,y for y in ())) is a simplified version of something I had about 100 lines into a file, but the resulting TypeError still complains about an import on line 1, which is really confusing. I'm using Python 2.5.2 (r252:60911, Mar 4 2008, 14:33:51) [GCC 3.4.4] on linux2 for python. ################################################################################ The above is probably a good enough description, but here's some more weirdness in case it's helpful: Some variations of f1.py cause the same error, but others don't. E.g. if f4.py is for c in [1]: pass (lambda **x:x)(**dict(y,y for y in ())) I get Traceback (most recent call last): File "f4.py", line 1, in <module> for c in [1]: pass TypeError: 'int' object is not iterable as before. But if f5.py is for c in "1": pass (lambda **x:x)(**dict(y,y for y in ())) running the script results in no output and a successful run $ echo $? 0 Finally, if f6.py is just the single line (lambda **x:x)(**dict(y,y for y in ())) then my 2.5.2 python has the same successful with no output result as for f5.py, but if I run f6.py in an older Python 2.5 (r25:51908, Oct 30 2006, 16:20:39) [GCC 3.4.4] on linux2 python I get Exception exceptions.SyntaxError: ('Generator expression must be parenthesized if not sole argument', 1) in 'garbage collection' ignored Fatal Python error: unexpected exception during garbage collection zsh: abort (core dumped) python f6.py The older 2.5 python runs f5.py successfully with no output like 2.5.2 does. I searched the bug tracker for "TypeError: 'int' object is not iterable" and didn't find anything, so I'm assuming this bug is unknown. I'm sure someone will let me know if I'm mistaken =) I'd guess the problem has to do with a bad parse. ---------- components: None messages: 63273 nosy: NathanCollins severity: normal status: open title: TypeError instead of SyntaxError for syntactically invalid gen exp versions: Python 2.5 __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue2238> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com