1 ------------------------------
2 Change history for Coverage.py
3 ------------------------------
5 3.7.1 -- 13 December 2013
6 -------------------------
8 - Improved the speed of HTML report generation by about 20%.
10 - Fixed the mechanism for finding OS-installed static files for the HTML report
11 so that it will actually find OS-installed static files.
14 3.7 --- 6 October 2013
15 ----------------------
17 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of
18 options indicating the type of internal activity to log to stderr.
20 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_.
22 - Running code with ``coverage run -m`` now behaves more like Python does,
23 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_.
25 - Coverage can now run .pyc files directly, closing `issue 264`_.
27 - Coverage properly supports .pyw files, fixing `issue 261`_.
29 - Omitting files within a tree specified with the ``source`` option would
30 cause them to be incorrectly marked as unexecuted, as described in
31 `issue 218`_. This is now fixed.
33 - When specifying paths to alias together during data combining, you can now
34 specify relative paths, fixing `issue 267`_.
36 - Most file paths can now be specified with username expansion (``~/src``, or
37 ``~build/src``, for example), and with environment variable expansion
38 (``build/$BUILDNUM/src``).
40 - Trying to create an XML report with no files to report on, would cause a
41 ZeroDivideError, but no longer does, fixing `issue 250`_.
43 - When running a threaded program under the Python tracer, coverage no longer
44 issues a spurious warning about the trace function changing: "Trace function
45 changed, measurement is likely wrong: None." This fixes `issue 164`_.
47 - Static files necessary for HTML reports are found in system-installed places,
48 to ease OS-level packaging of coverage.py. Closes `issue 259`_.
50 - Source files with encoding declarations, but a blank first line, were not
51 decoded properly. Now they are. Thanks, Roger Hu.
53 - The source kit now includes the ``__main__.py`` file in the root coverage
54 directory, fixing `issue 255`_.
56 .. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-arent-treated-properly-in
57 .. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-changed-warning-when-using
58 .. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-gets-confused-in-certain
59 .. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-module-or-package-in
60 .. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-level-package-doesnt-work
61 .. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-not-respect-the-omit-flag
62 .. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivisionerror-when-generating
63 .. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__main__py-not-included-in
64 .. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-system-installed-third-party
65 .. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-reported-properly
66 .. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files
67 .. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work
70 Version 3.6 --- 5 January 2013
71 ------------------------------
73 - Added a page to the docs about troublesome situations, closing `issue 226`_,
74 and added some info to the TODO file, closing `issue 227`_.
76 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-section-to-describe-when
77 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo
80 Version 3.6b3 --- 29 December 2012
81 ----------------------------------
83 - Beta 2 broke the nose plugin. It's fixed again, closing `issue 224`_.
85 .. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexcover
88 Version 3.6b2 --- 23 December 2012
89 ----------------------------------
91 - Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1.
93 - The C extension is optionally compiled using a different more widely-used
94 technique, taking another stab at fixing `issue 80`_ once and for all.
96 - Combining data files would create entries for phantom files if used with
97 ``source`` and path aliases. It no longer does.
99 - ``debug sys`` now shows the configuration file path that was read.
101 - If an oddly-behaved package claims that code came from an empty-string
102 filename, coverage.py no longer associates it with the directory name,
105 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant
106 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp
109 Version 3.6b1 --- 28 November 2012
110 ----------------------------------
112 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly
113 in reporting functions, though they were when running. Now they are handled
114 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible
115 that your configurations may now be incorrect. If you use ``include`` or
116 ``omit`` during reporting, whether on the command line, through the API, or
117 in a configuration file, please check carefully that you were not relying on
118 the old broken behavior.
120 - The **report**, **html**, and **xml** commands now accept a ``--fail-under``
121 switch that indicates in the exit status whether the coverage percentage was
122 less than a particular value. Closes `issue 139`_.
124 - The reporting functions coverage.report(), coverage.html_report(), and
125 coverage.xml_report() now all return a float, the total percentage covered
128 - The HTML report's title can now be set in the configuration file, with the
129 ``--title`` switch on the command line, or via the API.
131 - Configuration files now support substitution of environment variables, using
132 syntax like ``${WORD}``. Closes `issue 97`_.
134 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply
135 didn't work. Now it does.
137 - The XML report now consistently uses filenames for the filename attribute,
138 rather than sometimes using module names. Fixes `issue 67`_.
139 Thanks, Marcus Cobden.
141 - Coverage percentage metrics are now computed slightly differently under
142 branch coverage. This means that completely unexecuted files will now
143 correctly have 0% coverage, fixing `issue 156`_. This also means that your
144 total coverage numbers will generally now be lower if you are measuring
147 - When installing, now in addition to creating a "coverage" command, two new
148 aliases are also installed. A "coverage2" or "coverage3" command will be
149 created, depending on whether you are installing in Python 2.x or 3.x.
150 A "coverage-X.Y" command will also be created corresponding to your specific
151 version of Python. Closes `issue 111`_.
153 - The coverage.py installer no longer tries to bootstrap setuptools or
154 Distribute. You must have one of them installed first, as `issue 202`_
157 - The coverage.py kit now includes docs (closing `issue 137`_) and tests.
159 - On Windows, files are now reported in their correct case, fixing `issue 89`_
162 - If a file is missing during reporting, the path shown in the error message
163 is now correct, rather than an incorrect path in the current directory.
166 - Running an HTML report in Python 3 in the same directory as an old Python 2
167 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_)
170 - Fixed yet another error trying to parse non-Python files as Python, this
171 time an IndentationError, closing `issue 82`_ for the fourth time...
173 - If `coverage xml` fails because there is no data to report, it used to
174 create a zero-length XML file. Now it doesn't, fixing `issue 210`_.
176 - Jython files now work with the ``--source`` option, fixing `issue 100`_.
178 - Running coverage under a debugger is unlikely to work, but it shouldn't fail
179 with "TypeError: 'NoneType' object is not iterable". Fixes `issue 201`_.
181 - On some Linux distributions, when installed with the OS package manager,
182 coverage.py would report its own code as part of the results. Now it won't,
183 fixing `issue 214`_, though this will take some time to be repackaged by the
186 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius
187 Gedminas. Closes `issue 205`_.
189 - The pydoc tool can now show docmentation for the class `coverage.coverage`.
192 - Added a page to the docs about contributing to coverage.py, closing
195 - When coverage.py ended unsuccessfully, it may have reported odd errors like
196 ``'NoneType' object has no attribute 'isabs'``. It no longer does,
197 so kiss `issue 153`_ goodbye.
199 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files
200 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated
201 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
202 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in
203 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be
204 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages
205 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not
206 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution
207 .. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-certain-coverage-in-tests
208 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-to-work-in-coverage
209 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filename-triggers
210 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexecuted-file-shows-14
211 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-include-and-omit-filename
212 .. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-and-run-tests
213 .. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror-on-htmlpy
214 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-django-14-with-pydb-on
215 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setuppy-and
216 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filenames-reported-when-filename
217 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverage-more-friendly
218 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecoverage-fails-with-an-error
219 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-coverage-data-coverage-xml
220 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measures-itself-on-precise
223 Version 3.5.3 --- 29 September 2012
224 -----------------------------------
226 - Line numbers in the HTML report line up better with the source lines, fixing
227 `issue 197`_, thanks Marius Gedminas.
229 - When specifying a directory as the source= option, the directory itself no
230 longer needs to have a ``__init__.py`` file, though its subdirectories do, to
231 be considered as source files.
233 - Files encoded as UTF-8 with a BOM are now properly handled, fixing
234 `issue 179`_. Thanks, Pablo Carballo.
236 - Fixed more cases of non-Python files being reported as Python source, and
237 then not being able to parse them as Python. Closes `issue 82`_ (again).
238 Thanks, Julian Berman.
240 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_.
242 - Optimized .pyo files may not have been handled correctly, `issue 195`_.
243 Thanks, Marius Gedminas.
245 - Certain unusually named file paths could have been mangled during reporting,
246 `issue 194`_. Thanks, Marius Gedminas.
248 - Try to do a better job of the impossible task of detecting when we can't
249 build the C extension, fixing `issue 183`_.
251 - Testing is now done with `tox`_, thanks, Marc Abramowitz.
253 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
254 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer
255 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is
256 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23
257 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle
258 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit
259 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align
260 .. _tox: http://tox.readthedocs.org/
264 Version 3.5.2 --- 4 May 2012
265 ----------------------------
267 No changes since 3.5.2.b1
270 Version 3.5.2b1 --- 29 April 2012
271 ---------------------------------
273 - The HTML report has slightly tweaked controls: the buttons at the top of
274 the page are color-coded to the source lines they affect.
276 - Custom CSS can be applied to the HTML report by specifying a CSS file as
277 the extra_css configuration value in the [html] section.
279 - Source files with custom encodings declared in a comment at the top are now
280 properly handled during reporting on Python 2. Python 3 always handled them
281 properly. This fixes `issue 157`_.
283 - Backup files left behind by editors are no longer collected by the source=
284 option, fixing `issue 168`_.
286 - If a file doesn't parse properly as Python, we don't report it as an error
287 if the filename seems like maybe it wasn't meant to be Python. This is a
288 pragmatic fix for `issue 82`_.
290 - The ``-m`` switch on ``coverage report``, which includes missing line numbers
291 in the summary report, can now be specifed as ``show_missing`` in the
292 config file. Closes `issue 173`_.
294 - When running a module with ``coverage run -m <modulename>``, certain details
295 of the execution environment weren't the same as for
296 ``python -m <modulename>``. This had the unfortunate side-effect of making
297 ``coverage run -m unittest discover`` not work if you had tests in a
298 directory named "test". This fixes `issue 155`_ and `issue 142`_.
300 - Now the exit status of your product code is properly used as the process
301 status when running ``python -m coverage run ...``. Thanks, JT Olds.
303 - When installing into pypy, we no longer attempt (and fail) to compile
304 the C tracer function, closing `issue 166`_.
306 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
307 .. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced
308 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover
309 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8
310 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy
311 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings
312 .. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-specify-show-missing-in
315 Version 3.5.1 --- 23 September 2011
316 -----------------------------------
318 - The ``[paths]`` feature unfortunately didn't work in real world situations
319 where you wanted to, you know, report on the combined data. Now all paths
320 stored in the combined file are canonicalized properly.
323 Version 3.5.1b1 --- 28 August 2011
324 ----------------------------------
326 - When combining data files from parallel runs, you can now instruct coverage
327 about which directories are equivalent on different machines. A ``[paths]``
328 section in the configuration file lists paths that are to be considered
329 equivalent. Finishes `issue 17`_.
331 - for-else constructs are understood better, and don't cause erroneous partial
332 branch warnings. Fixes `issue 122`_.
334 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_.
336 - The number of partial branches reported on the HTML summary page was
337 different than the number reported on the individual file pages. This is
340 - An explicit include directive to measure files in the Python installation
341 wouldn't work because of the standard library exclusion. Now the include
342 directive takes precendence, and the files will be measured. Fixes
345 - The HTML report now handles Unicode characters in Python source files
346 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin
349 - In order to help the core developers measure the test coverage of the
350 standard library, Brandon Rhodes devised an aggressive hack to trick Python
351 into running some coverage code before anything else in the process.
352 See the coverage/fullcoverage directory if you are interested.
354 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from
355 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch
356 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in
357 .. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-with-statement-in-27
358 .. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take-precedence-over-is
359 .. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-html-output-for
362 Version 3.5 --- 29 June 2011
363 ----------------------------
365 - The HTML report hotkeys now behave slightly differently when the current
366 chunk isn't visible at all: a chunk on the screen will be selected,
367 instead of the old behavior of jumping to the literal next chunk.
368 The hotkeys now work in Google Chrome. Thanks, Guido van Rossum.
371 Version 3.5b1 --- 5 June 2011
372 -----------------------------
374 - The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``,
375 ``p``, and ``c`` on the overview page to change the column sorting.
376 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing,
377 excluded, and partial line markings. You can navigate the highlighted
378 sections of code by using the ``j`` and ``k`` keys for next and previous.
379 The ``1`` (one) key jumps to the first highlighted section in the file,
380 and ``0`` (zero) scrolls to the top of the file.
382 - The ``--omit`` and ``--include`` switches now interpret their values more
383 usefully. If the value starts with a wildcard character, it is used as-is.
384 If it does not, it is interpreted relative to the current directory.
387 - Partial branch warnings can now be pragma'd away. The configuration option
388 ``partial_branches`` is a list of regular expressions. Lines matching any of
389 those expressions will never be marked as a partial branch. In addition,
390 there's a built-in list of regular expressions marking statements which should
391 never be marked as partial. This list includes ``while True:``, ``while 1:``,
392 ``if 1:``, and ``if 0:``.
394 - The ``coverage()`` constructor accepts single strings for the ``omit=`` and
395 ``include=`` arguments, adapting to a common error in programmatic use.
397 - Modules can now be run directly using ``coverage run -m modulename``, to
398 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes.
400 - ``coverage run`` didn't emulate Python accurately in one small detail: the
401 current directory inserted into ``sys.path`` was relative rather than
402 absolute. This is now fixed.
404 - HTML reporting is now incremental: a record is kept of the data that
405 produced the HTML reports, and only files whose data has changed will
406 be generated. This should make most HTML reporting faster.
408 - Pathological code execution could disable the trace function behind our
409 backs, leading to incorrect code measurement. Now if this happens,
410 coverage.py will issue a warning, at least alerting you to the problem.
411 Closes `issue 93`_. Thanks to Marius Gedminas for the idea.
413 - The C-based trace function now behaves properly when saved and restored
414 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_
415 and `issue 123`_. Thanks, Devin Jeanpierre.
417 - Source files are now opened with Python 3.2's ``tokenize.open()`` where
418 possible, to get the best handling of Python source files with encodings.
419 Closes `issue 107`_, thanks, Brett Cannon.
421 - Syntax errors in supposed Python files can now be ignored during reporting
422 with the ``-i`` switch just like other source errors. Closes `issue 115`_.
424 - Installation from source now succeeds on machines without a C compiler,
427 - Coverage.py can now be run directly from a working tree by specifying
428 the directory name to python: ``python coverage_py_working_dir run ...``.
429 Thanks, Brett Cannon.
431 - A little bit of Jython support: `coverage run` can now measure Jython
432 execution by adapting when $py.class files are traced. Thanks, Adi Roiban.
433 Jython still doesn't provide the Python libraries needed to make
434 coverage reporting work, unfortunately.
436 - Internally, files are now closed explicitly, fixing `issue 104`_. Thanks,
439 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant
440 .. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object-breaks-coverage
441 .. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-should-take-a-module-name
442 .. _issue 104: https://bitbucket.org/ned/coveragepy/issue/104/explicitly-close-files
443 .. _issue 107: https://bitbucket.org/ned/coveragepy/issue/107/codeparser-not-opening-source-files-with
444 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-when-reporting-on-file
445 .. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-are-applied-stupidly
446 .. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-used-in-way-that-breaks
447 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-decoratortoolss-tracing
450 Version 3.4 --- 19 September 2010
451 ---------------------------------
453 - The XML report is now sorted by package name, fixing `issue 88`_.
455 - Programs that exited with ``sys.exit()`` with no argument weren't handled
456 properly, producing a coverage.py stack trace. That is now fixed.
458 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-packages-in-random-order
461 Version 3.4b2 --- 6 September 2010
462 ----------------------------------
464 - Completely unexecuted files can now be included in coverage results, reported
465 as 0% covered. This only happens if the --source option is specified, since
466 coverage.py needs guidance about where to look for source files.
468 - The XML report output now properly includes a percentage for branch coverage,
469 fixing `issue 65`_ and `issue 81`_.
471 - Coverage percentages are now displayed uniformly across reporting methods.
472 Previously, different reports could round percentages differently. Also,
473 percentages are only reported as 0% or 100% if they are truly 0 or 100, and
474 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_.
476 - The precision of reported coverage percentages can be set with the
477 ``[report] precision`` config file setting. Completes `issue 16`_.
479 - Threads derived from ``threading.Thread`` with an overridden `run` method
480 would report no coverage for the `run` method. This is now fixed, closing
483 .. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-of-accuracy-of-percentage-totals
484 .. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when-it-isnt-quite-there
485 .. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-reported-in-cobertura
486 .. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html-report-disagree-on-coverage
487 .. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-have-condition-coverage-attribute-for-lines-with-a
488 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measured
491 Version 3.4b1 --- 21 August 2010
492 --------------------------------
494 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take
495 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_.
497 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout
498 coverage.py, replaced with `omit`, a list of filename patterns suitable for
499 `fnmatch`. A parallel argument `include` controls what files are included.
501 - The run command now has a ``--source`` switch, a list of directories or
502 module names. If provided, coverage.py will only measure execution in those
505 - Various warnings are printed to stderr for problems encountered during data
506 measurement: if a ``--source`` module has no Python source to measure, or is
507 never encountered at all, or if no data is collected.
509 - The reporting commands (report, annotate, html, and xml) now have an
510 ``--include`` switch to restrict reporting to modules matching those file
511 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko.
513 - The run command now supports ``--include`` and ``--omit`` to control what
514 modules it measures. This can speed execution and reduce the amount of data
515 during reporting. Thanks Zooko.
517 - Since coverage.py 3.1, using the Python trace function has been slower than
518 it needs to be. A cache of tracing decisions was broken, but has now been
521 - Python 2.7 and 3.2 have introduced new opcodes that are now supported.
523 - Python files with no statements, for example, empty ``__init__.py`` files,
524 are now reported as having zero statements instead of one. Fixes `issue 1`_.
526 - Reports now have a column of missed line counts rather than executed line
527 counts, since developers should focus on reducing the missed lines to zero,
528 rather than increasing the executed lines to varying targets. Once
529 suggested, this seemed blindingly obvious.
531 - Line numbers in HTML source pages are clickable, linking directly to that
532 line, which is highlighted on arrival. Added a link back to the index page
533 at the bottom of each HTML page.
535 - Programs that call ``os.fork`` will properly collect data from both the child
536 and parent processes. Use ``coverage run -p`` to get two data files that can
537 be combined with ``coverage combine``. Fixes `issue 56`_.
539 - Coverage is now runnable as a module: ``python -m coverage``. Thanks,
542 - When measuring code running in a virtualenv, most of the system library was
543 being measured when it shouldn't have been. This is now fixed.
545 - Doctest text files are no longer recorded in the coverage data, since they
546 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_.
548 - Jinja HTML templates compile into Python code using the HTML filename,
549 which confused coverage.py. Now these files are no longer traced, fixing
552 - Source files can have more than one dot in them (foo.test.py), and will be
553 treated properly while reporting. Fixes `issue 46`_.
555 - Source files with DOS line endings are now properly tokenized for syntax
556 coloring on non-DOS machines. Fixes `issue 53`_.
558 - Unusual code structure that confused exits from methods with exits from
559 classes is now properly analyzed. See `issue 62`_.
561 - Asking for an HTML report with no files now shows a nice error message rather
562 than a cryptic failure ('int' object is unsubscriptable). Fixes `issue 59`_.
564 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files-are-reported-as-1-executable
565 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbing-handling
566 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-omit
567 .. _issue 46: http://bitbucket.org/ned/coveragepy/issue/46
568 .. _issue 53: http://bitbucket.org/ned/coveragepy/issue/53
569 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confuses-source-detection
570 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56
571 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-work
572 .. _issue 62: http://bitbucket.org/ned/coveragepy/issue/62
573 .. _issue 59: http://bitbucket.org/ned/coveragepy/issue/59/html-report-fails-with-int-object-is
574 .. _issue 82: http://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
577 Version 3.3.1 --- 6 March 2010
578 ------------------------------
580 - Using `parallel=True` in .coveragerc file prevented reporting, but now does
581 not, fixing `issue 49`_.
583 - When running your code with "coverage run", if you call `sys.exit()`,
584 coverage.py will exit with that status code, fixing `issue 50`_.
586 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49
587 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50
590 Version 3.3 --- 24 February 2010
591 --------------------------------
593 - Settings are now read from a .coveragerc file. A specific file can be
594 specified on the command line with --rcfile=FILE. The name of the file can
595 be programmatically set with the `config_file` argument to the coverage()
596 constructor, or reading a config file can be disabled with
599 - Fixed a problem with nested loops having their branch possibilities
600 mischaracterized: `issue 39`_.
602 - Added coverage.process_start to enable coverage measurement when Python
605 - Parallel data file names now have a random number appended to them in
606 addition to the machine name and process id.
608 - Parallel data files combined with "coverage combine" are deleted after
609 they're combined, to clean up unneeded files. Fixes `issue 40`_.
611 - Exceptions thrown from product code run with "coverage run" are now displayed
612 without internal coverage.py frames, so the output is the same as when the
613 code is run without coverage.py.
615 - The `data_suffix` argument to the coverage constructor is now appended with
616 an added dot rather than simply appended, so that .coveragerc files will not
617 be confused for data files.
619 - Python source files that don't end with a newline can now be executed, fixing
622 - Added an AUTHORS.txt file.
624 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39
625 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40
626 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47
629 Version 3.2 --- 5 December 2009
630 -------------------------------
632 - Added a ``--version`` option on the command line.
635 Version 3.2b4 --- 1 December 2009
636 ---------------------------------
638 - Branch coverage improvements:
640 - The XML report now includes branch information.
642 - Click-to-sort HTML report columns are now persisted in a cookie. Viewing
643 a report will sort it first the way you last had a coverage report sorted.
644 Thanks, `Chris Adams`_.
646 - On Python 3.x, setuptools has been replaced by `Distribute`_.
648 .. _Distribute: http://packages.python.org/distribute/
651 Version 3.2b3 --- 23 November 2009
652 ----------------------------------
654 - Fixed a memory leak in the C tracer that was introduced in 3.2b1.
656 - Branch coverage improvements:
658 - Branches to excluded code are ignored.
660 - The table of contents in the HTML report is now sortable: click the headers
661 on any column. Thanks, `Chris Adams`_.
663 .. _Chris Adams: http://improbable.org/chris/
666 Version 3.2b2 --- 19 November 2009
667 ----------------------------------
669 - Branch coverage improvements:
671 - Classes are no longer incorrectly marked as branches: `issue 32`_.
673 - "except" clauses with types are no longer incorrectly marked as branches:
676 - Fixed some problems syntax coloring sources with line continuations and
677 source with tabs: `issue 30`_ and `issue 31`_.
679 - The --omit option now works much better than before, fixing `issue 14`_ and
680 `issue 33`_. Thanks, Danek Duvall.
682 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14
683 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30
684 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31
685 .. _issue 32: http://bitbucket.org/ned/coveragepy/issue/32
686 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33
687 .. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35
690 Version 3.2b1 --- 10 November 2009
691 ----------------------------------
695 - XML reporting has file paths that let Cobertura find the source code.
697 - The tracer code has changed, it's a few percent faster.
699 - Some exceptions reported by the command line interface have been cleaned up
700 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_.
702 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23
705 Version 3.1 --- 4 October 2009
706 ------------------------------
708 - Source code can now be read from eggs. Thanks, Ross Lawley. Fixes
711 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25
714 Version 3.1b1 --- 27 September 2009
715 -----------------------------------
717 - Python 3.1 is now supported.
719 - Coverage.py has a new command line syntax with sub-commands. This expands
720 the possibilities for adding features and options in the future. The old
721 syntax is still supported. Try "coverage help" to see the new commands.
722 Thanks to Ben Finney for early help.
724 - Added an experimental "coverage xml" command for producing coverage reports
725 in a Cobertura-compatible XML format. Thanks, Bill Hart.
727 - Added the --timid option to enable a simpler slower trace function that works
728 for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ and
731 - HTML reports show modules from other directories. Fixed `issue 11`_.
733 - HTML reports now display syntax-colored Python source.
735 - Programs that change directory will still write .coverage files in the
736 directory where execution started. Fixed `issue 24`_.
738 - Added a "coverage debug" command for getting diagnostic information about the
739 coverage.py installation.
741 .. _issue 11: http://bitbucket.org/ned/coveragepy/issue/11
742 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12
743 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13
744 .. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24
747 Version 3.0.1 --- 7 July 2009
748 -----------------------------
750 - Removed the recursion limit in the tracer function. Previously, code that
751 ran more than 500 frames deep would crash. Fixed `issue 9`_.
753 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser
754 invocations could be overlooked. Fixed `issue 10`_.
756 - On Python 2.3, coverage.py could mis-measure code with exceptions being
757 raised. This is now fixed.
759 - The coverage.py code itself will now not be measured by coverage.py, and no
760 coverage modules will be mentioned in the nose --with-cover plug-in. Fixed
763 - When running source files, coverage.py now opens them in universal newline
764 mode just like Python does. This lets it run Windows files on Mac, for
767 .. _issue 9: http://bitbucket.org/ned/coveragepy/issue/9
768 .. _issue 10: http://bitbucket.org/ned/coveragepy/issue/10
769 .. _issue 8: http://bitbucket.org/ned/coveragepy/issue/8
772 Version 3.0 --- 13 June 2009
773 ----------------------------
775 - Fixed the way the Python library was ignored. Too much code was being
776 excluded the old way.
778 - Tabs are now properly converted in HTML reports. Previously indentation was
779 lost. Fixed `issue 6`_.
781 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes.
783 .. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6
786 Version 3.0b3 --- 16 May 2009
787 -----------------------------
789 - Added parameters to coverage.__init__ for options that had been set on the
790 coverage object itself.
792 - Added clear_exclude() and get_exclude_list() methods for programmatic
793 manipulation of the exclude regexes.
795 - Added coverage.load() to read previously-saved data from the data file.
797 - Improved the finding of code files. For example, .pyc files that have been
798 installed after compiling are now located correctly. Thanks, Detlev
801 - When using the object API (that is, constructing a coverage() object), data
802 is no longer saved automatically on process exit. You can re-enable it with
803 the auto_data=True parameter on the coverage() constructor. The module-level
804 interface still uses automatic saving.
807 Version 3.0b --- 30 April 2009
808 ------------------------------
810 HTML reporting, and continued refactoring.
812 - HTML reports and annotation of source files: use the new -b (browser) switch.
813 Thanks to George Song for code, inspiration and guidance.
815 - Code in the Python standard library is not measured by default. If you need
816 to measure standard library code, use the -L command-line switch during
817 execution, or the cover_pylib=True argument to the coverage() constructor.
819 - Source annotation into a directory (-a -d) behaves differently. The
820 annotated files are named with their hierarchy flattened so that same-named
821 files from different directories no longer collide. Also, only files in the
822 current tree are included.
824 - coverage.annotate_file is no longer available.
826 - Programs executed with -x now behave more as they should, for example,
827 __file__ has the correct value.
829 - .coverage data files have a new pickle-based format designed for better
832 - Removed the undocumented cache_file argument to coverage.usecache().
835 Version 3.0b1 --- 7 March 2009
836 ------------------------------
840 - Coverage is now a package rather than a module. Functionality has been split
843 - The trace function is implemented in C for speed. Coverage runs are now
844 much faster. Thanks to David Christian for productive micro-sprints and
847 - Executable lines are identified by reading the line number tables in the
848 compiled code, removing a great deal of complicated analysis code.
850 - Precisely which lines are considered executable has changed in some cases.
851 Therefore, your coverage stats may also change slightly.
853 - The singleton coverage object is only created if the module-level functions
854 are used. This maintains the old interface while allowing better
855 programmatic use of Coverage.
857 - The minimum supported Python version is 2.3.
860 Version 2.85 --- 14 September 2008
861 ----------------------------------
863 - Add support for finding source files in eggs. Don't check for
864 morf's being instances of ModuleType, instead use duck typing so that
865 pseudo-modules can participate. Thanks, Imri Goldberg.
867 - Use os.realpath as part of the fixing of file names so that symlinks won't
868 confuse things. Thanks, Patrick Mezard.
871 Version 2.80 --- 25 May 2008
872 ----------------------------
874 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper.
877 Version 2.78 --- 30 September 2007
878 ----------------------------------
880 - Don't try to predict whether a file is Python source based on the extension.
881 Extension-less files are often Pythons scripts. Instead, simply parse the file
882 and catch the syntax errors. Hat tip to Ben Finney.
885 Version 2.77 --- 29 July 2007
886 -----------------------------
891 Version 2.76 --- 23 July 2007
892 -----------------------------
894 - Now Python 2.5 is *really* fully supported: the body of the new with
895 statement is counted as executable.
898 Version 2.75 --- 22 July 2007
899 -----------------------------
901 - Python 2.5 now fully supported. The method of dealing with multi-line
902 statements is now less sensitive to the exact line that Python reports during
903 execution. Pass statements are handled specially so that their disappearance
904 during execution won't throw off the measurement.
907 Version 2.7 --- 21 July 2007
908 ----------------------------
910 - "#pragma: nocover" is excluded by default.
912 - Properly ignore docstrings and other constant expressions that appear in the
913 middle of a function, a problem reported by Tim Leslie.
915 - coverage.erase() shouldn't clobber the exclude regex. Change how parallel
916 mode is invoked, and fix erase() so that it erases the cache when called
919 - In reports, ignore code executed from strings, since we can't do anything
920 useful with it anyway.
922 - Better file handling on Linux, thanks Guillaume Chazarain.
924 - Better shell support on Windows, thanks Noel O'Boyle.
926 - Python 2.2 support maintained, thanks Catherine Proulx.
928 - Minor changes to avoid lint warnings.
931 Version 2.6 --- 23 August 2006
932 ------------------------------
934 - Applied Joseph Tate's patch for function decorators.
936 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling.
938 - Applied Geoff Bache's parallel mode patch.
940 - Refactorings to improve testability. Fixes to command-line logic for parallel
944 Version 2.5 --- 4 December 2005
945 -------------------------------
947 - Call threading.settrace so that all threads are measured. Thanks Martin
950 - Add a file argument to report so that reports can be captured to a different
953 - coverage.py can now measure itself.
955 - Adapted Greg Rogers' patch for using relative file names, and sorting and
956 omitting files to report on.
959 Version 2.2 --- 31 December 2004
960 --------------------------------
962 - Allow for keyword arguments in the module global functions. Thanks, Allen.
965 Version 2.1 --- 14 December 2004
966 --------------------------------
968 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global
969 for 'annotate', and factor it, adding 'annotate_file'.
972 Version 2.0 --- 12 December 2004
973 --------------------------------
975 Significant code changes.
977 - Finding executable statements has been rewritten so that docstrings and
978 other quirks of Python execution aren't mistakenly identified as missing
981 - Lines can be excluded from consideration, even entire suites of lines.
983 - The file system cache of covered lines can be disabled programmatically.
985 - Modernized the code.
991 2001-12-04 GDR Created.
993 2001-12-06 GDR Added command-line interface and source code annotation.
995 2001-12-09 GDR Moved design and interface to separate documents.
997 2001-12-10 GDR Open cache file as binary on Windows. Allow simultaneous -e and
1000 2001-12-12 GDR Added command-line help. Cache analysis so that it only needs to
1001 be done once when you specify -a and -r.
1003 2001-12-13 GDR Improved speed while recording. Portable between Python 1.5.2
1006 2002-01-03 GDR Module-level functions work correctly.
1008 2002-01-07 GDR Update sys.path when running a file with the -x option, so that
1009 it matches the value the program would get if it were run on its own.