I just uploaded Apport 2.1 to Quantal. A big change in that version is that the whole code now works with both Python 2 and 3, except for the launchpadlib crash database backend (as we do not yet have a
I took some care that apport report objects get along with both strings (
unicode type in Python 2) and byte arrays (
str type in Python 2) in values, so most package hooks should still work. However, now is the time to check whether they also work with Python 3, to make the impending transition to Python 3 easier.
However, you need to watch out if you use projects or scripts which directly use python-apport to process reports: The
write_mime() methods now require the passed file descriptors to be open in binary mode. You will get an exception otherwise.
A common pattern so far has been code like
report = apport.Report() report.load(open('myfile.crash'))
This needs to be changed to
report = apport.Report() with open('myfile.crash', 'rb') as f: report.load(f)
The “with” context is not strictly required, but it takes care of timely closing the files again. This avoids
ResourceWarning spew when you run this in test suites or enable warnings.