The try statement at the end of hashlib.py is some of the worst python
code I've had the mispleasure of reading for a long time.
Secondly, it seems flawed in function as well as form.
__get_builtin_constructor can throw an ImportError, which seems
erroneously caught in the except (why on earth does the except span more
than the "import _hashlib"? That's bad style for precisely this reason.)
This will cause an error in the import of hashlib when there are
possibly many working hash functions already imported. Changing the:
try:
exec funcName + ' = __get_builtin_constructor(funcName)'
except ValueError:
pass
to catch ImportError as well solves the problem for me. |