the format for rerasing an exception without clobbering the stacktrace is a bit different between Python 2 and Python 3