I wonder whether we should use `!r` for `old` and `new`.  For strings at least that should lead to less ambiguous output.  It's good for floats, too, since the `str` of a float loses information in Python 2.