The bug is simply with pyexiv2 updating its internal cache after passing the new value down to the underlying exiv2 library (which occurs on line 594).
So as a short-term workaround if you call writeMetadata after the exception you'll see that the new value still ends up in your destination file.
I've attached a patch the fixes the problem with updating the cache using the same logic that is present in the __getExifTagValue to process the values coming from exiv2 originally.
The bug is simply with pyexiv2 updating its internal cache after passing the new value down to the underlying exiv2 library (which occurs on line 594).
So as a short-term workaround if you call writeMetadata after the exception you'll see that the new value still ends up in your destination file.
I've attached a patch the fixes the problem with updating the cache using the same logic that is present in the __getExifTagValue to process the values coming from exiv2 originally.