Issue 6999: TypeError in pathfix.py (original) (raw)

Tools/scripts/pathfix.py crashes with a TypeError:

Traceback (most recent call last): File "Tools/scripts/pathfix.py", line 149, in main() File "Tools/scripts/pathfix.py", line 54, in main if recursedown(arg): bad = 1 File "Tools/scripts/pathfix.py", line 82, in recursedown elif ispython(name): File "Tools/scripts/pathfix.py", line 64, in ispython return ispythonprog.match(name) >= 0 TypeError: unorderable types: NoneType() >= int()

It looks like an easy fix would be to change line 64 from:

return ispythonprog.match(name) >= 0

to:

return bool(ispythonprog.match(name))

After making this change, I got another crash, this time due to a UnicodeDecodeError. Apparently, the file (Demo/distutils/test2to3/setup.py) has a character encoded in ISO-8859. Since pathfix.py is only concerned with ASCII text in the first line of a file, it seems that it should probably operate on bytes instead of unicode strings.

By the way, it's a little odd (but not technically invalid) that the format string on line 146 is: '#! %s\n'. I would normally expect to see no whitespace: '#!%s\n'.

Anyway, I'm attaching a patch that fixes addresses all of the above issues and which seems to make pathfix.py work for all files in the Python 3.1.1 source tree.