backport to python 2.7