- Feature: Now the
--concurrency
setting can now have a list of values, so that threads and another lightweight threading package can be measured together, such as--concurrency=gevent,thread
. Closes issue 1012 and issue 1082. - Fix: A module specified as the
source
setting is imported during startup, before the user program imports it. This could cause problems if the rest of the program isn’t ready yet. For example, issue 1203 describes a Django setting that is accessed before settings have been configured. Now the early import is wrapped in a try/except so errors then don’t stop execution. - Fix: A colon in a decorator expression would cause an exclusion to end too early, preventing the exclusion of the decorated function. This is now fixed.
- Fix: The HTML report now will not overwrite a .gitignore file that already exists in the HTML output directory (follow-on for issue 1244).
- API: The exceptions raised by Coverage.py have been specialized, to provide finer-grained catching of exceptions by third-party code.
- API: Using
suffix=False
when constructing a Coverage object with multiprocessing wouldn’t suppress the data file suffix (issue 989). This is now fixed. - Debug: The
coverage debug data
command will now sniff out combinable data files, and report on all of them. - Debug: The
coverage debug
command used to accept a number of topics at a time, and show all of them, though this was never documented. This no longer works, to allow for command-line options in the future.