DebugClients/Python3/coverage/doc/CHANGES.txt

branch
Py2 comp.
changeset 3495
fac17a82b431
parent 29
391dc0bc4ae5
child 4489
d0d6e4ad31bd
equal deleted inserted replaced
3485:f1cbc18f88b2 3495:fac17a82b431
1 ------------------------------ 1 ------------------------------
2 Change history for Coverage.py 2 Change history for Coverage.py
3 ------------------------------ 3 ------------------------------
4 4
5 5 3.7.1 -- 13 December 2013
6 Version 3.2, 5 December 2009 6 -------------------------
7
8 - Improved the speed of HTML report generation by about 20%.
9
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.
12
13
14 3.7 --- 6 October 2013
15 ----------------------
16
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.
19
20 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_.
21
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`_.
24
25 - Coverage can now run .pyc files directly, closing `issue 264`_.
26
27 - Coverage properly supports .pyw files, fixing `issue 261`_.
28
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.
32
33 - When specifying paths to alias together during data combining, you can now
34 specify relative paths, fixing `issue 267`_.
35
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``).
39
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`_.
42
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`_.
46
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`_.
49
50 - Source files with encoding declarations, but a blank first line, were not
51 decoded properly. Now they are. Thanks, Roger Hu.
52
53 - The source kit now includes the ``__main__.py`` file in the root coverage
54 directory, fixing `issue 255`_.
55
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
68
69
70 Version 3.6 --- 5 January 2013
71 ------------------------------
72
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`_.
75
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
78
79
80 Version 3.6b3 --- 29 December 2012
81 ----------------------------------
82
83 - Beta 2 broke the nose plugin. It's fixed again, closing `issue 224`_.
84
85 .. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexcover
86
87
88 Version 3.6b2 --- 23 December 2012
89 ----------------------------------
90
91 - Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1.
92
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.
95
96 - Combining data files would create entries for phantom files if used with
97 ``source`` and path aliases. It no longer does.
98
99 - ``debug sys`` now shows the configuration file path that was read.
100
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,
103 fixing `issue 221`_.
104
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
107
108
109 Version 3.6b1 --- 28 November 2012
110 ----------------------------------
111
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.
119
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`_.
123
124 - The reporting functions coverage.report(), coverage.html_report(), and
125 coverage.xml_report() now all return a float, the total percentage covered
126 measurement.
127
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.
130
131 - Configuration files now support substitution of environment variables, using
132 syntax like ``${WORD}``. Closes `issue 97`_.
133
134 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply
135 didn't work. Now it does.
136
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.
140
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
145 branch coverage.
146
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`_.
152
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`_
155 recommended.
156
157 - The coverage.py kit now includes docs (closing `issue 137`_) and tests.
158
159 - On Windows, files are now reported in their correct case, fixing `issue 89`_
160 and `issue 203`_.
161
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.
164 Fixes `issue 60`_.
165
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`_)
168 is now fixed.
169
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...
172
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`_.
175
176 - Jython files now work with the ``--source`` option, fixing `issue 100`_.
177
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`_.
180
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
184 operating systems.
185
186 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius
187 Gedminas. Closes `issue 205`_.
188
189 - The pydoc tool can now show docmentation for the class `coverage.coverage`.
190 Closes `issue 206`_.
191
192 - Added a page to the docs about contributing to coverage.py, closing
193 `issue 171`_.
194
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.
198
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
221
222
223 Version 3.5.3 --- 29 September 2012
224 -----------------------------------
225
226 - Line numbers in the HTML report line up better with the source lines, fixing
227 `issue 197`_, thanks Marius Gedminas.
228
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.
232
233 - Files encoded as UTF-8 with a BOM are now properly handled, fixing
234 `issue 179`_. Thanks, Pablo Carballo.
235
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.
239
240 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_.
241
242 - Optimized .pyo files may not have been handled correctly, `issue 195`_.
243 Thanks, Marius Gedminas.
244
245 - Certain unusually named file paths could have been mangled during reporting,
246 `issue 194`_. Thanks, Marius Gedminas.
247
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`_.
250
251 - Testing is now done with `tox`_, thanks, Marc Abramowitz.
252
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/
261
262
263
264 Version 3.5.2 --- 4 May 2012
7 ---------------------------- 265 ----------------------------
8 266
9 - Added a --version options on the command line. 267 No changes since 3.5.2.b1
10 268
11 269
12 Version 3.2b4, 1 December 2009 270 Version 3.5.2b1 --- 29 April 2012
271 ---------------------------------
272
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.
275
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.
278
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`_.
282
283 - Backup files left behind by editors are no longer collected by the source=
284 option, fixing `issue 168`_.
285
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`_.
289
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`_.
293
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`_.
299
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.
302
303 - When installing into pypy, we no longer attempt (and fail) to compile
304 the C tracer function, closing `issue 166`_.
305
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
313
314
315 Version 3.5.1 --- 23 September 2011
316 -----------------------------------
317
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.
321
322
323 Version 3.5.1b1 --- 28 August 2011
324 ----------------------------------
325
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`_.
330
331 - for-else constructs are understood better, and don't cause erroneous partial
332 branch warnings. Fixes `issue 122`_.
333
334 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_.
335
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
338 now fixed.
339
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
343 `issue 138`_.
344
345 - The HTML report now handles Unicode characters in Python source files
346 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin
347 Jeanpierre.
348
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.
353
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
360
361
362 Version 3.5 --- 29 June 2011
363 ----------------------------
364
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.
369
370
371 Version 3.5b1 --- 5 June 2011
372 -----------------------------
373
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.
381
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.
385 Closes `issue 121`_.
386
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:``.
393
394 - The ``coverage()`` constructor accepts single strings for the ``omit=`` and
395 ``include=`` arguments, adapting to a common error in programmatic use.
396
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.
399
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.
403
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.
407
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.
412
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.
416
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.
420
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`_.
423
424 - Installation from source now succeeds on machines without a C compiler,
425 closing `issue 80`_.
426
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.
430
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.
435
436 - Internally, files are now closed explicitly, fixing `issue 104`_. Thanks,
437 Brett Cannon.
438
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
448
449
450 Version 3.4 --- 19 September 2010
451 ---------------------------------
452
453 - The XML report is now sorted by package name, fixing `issue 88`_.
454
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.
457
458 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-packages-in-random-order
459
460
461 Version 3.4b2 --- 6 September 2010
462 ----------------------------------
463
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.
467
468 - The XML report output now properly includes a percentage for branch coverage,
469 fixing `issue 65`_ and `issue 81`_.
470
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`_.
475
476 - The precision of reported coverage percentages can be set with the
477 ``[report] precision`` config file setting. Completes `issue 16`_.
478
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
481 `issue 85`_.
482
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
489
490
491 Version 3.4b1 --- 21 August 2010
492 --------------------------------
493
494 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take
495 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_.
496
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.
500
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
503 source files.
504
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.
508
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.
512
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.
516
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
519 fixed.
520
521 - Python 2.7 and 3.2 have introduced new opcodes that are now supported.
522
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`_.
525
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.
530
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.
534
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`_.
538
539 - Coverage is now runnable as a module: ``python -m coverage``. Thanks,
540 Brett Cannon.
541
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.
544
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`_.
547
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
550 `issue 82`_.
551
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`_.
554
555 - Source files with DOS line endings are now properly tokenized for syntax
556 coloring on non-DOS machines. Fixes `issue 53`_.
557
558 - Unusual code structure that confused exits from methods with exits from
559 classes is now properly analyzed. See `issue 62`_.
560
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`_.
563
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
575
576
577 Version 3.3.1 --- 6 March 2010
13 ------------------------------ 578 ------------------------------
579
580 - Using `parallel=True` in .coveragerc file prevented reporting, but now does
581 not, fixing `issue 49`_.
582
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`_.
585
586 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49
587 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50
588
589
590 Version 3.3 --- 24 February 2010
591 --------------------------------
592
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
597 `config_file=False`.
598
599 - Fixed a problem with nested loops having their branch possibilities
600 mischaracterized: `issue 39`_.
601
602 - Added coverage.process_start to enable coverage measurement when Python
603 starts.
604
605 - Parallel data file names now have a random number appended to them in
606 addition to the machine name and process id.
607
608 - Parallel data files combined with "coverage combine" are deleted after
609 they're combined, to clean up unneeded files. Fixes `issue 40`_.
610
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.
614
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.
618
619 - Python source files that don't end with a newline can now be executed, fixing
620 `issue 47`_.
621
622 - Added an AUTHORS.txt file.
623
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
627
628
629 Version 3.2 --- 5 December 2009
630 -------------------------------
631
632 - Added a ``--version`` option on the command line.
633
634
635 Version 3.2b4 --- 1 December 2009
636 ---------------------------------
14 637
15 - Branch coverage improvements: 638 - Branch coverage improvements:
16 639
17 - The XML report now includes branch information. 640 - The XML report now includes branch information.
18 641
23 - On Python 3.x, setuptools has been replaced by `Distribute`_. 646 - On Python 3.x, setuptools has been replaced by `Distribute`_.
24 647
25 .. _Distribute: http://packages.python.org/distribute/ 648 .. _Distribute: http://packages.python.org/distribute/
26 649
27 650
28 Version 3.2b3, 23 November 2009 651 Version 3.2b3 --- 23 November 2009
29 ------------------------------- 652 ----------------------------------
30 653
31 - Fixed a memory leak in the C tracer that was introduced in 3.2b1. 654 - Fixed a memory leak in the C tracer that was introduced in 3.2b1.
32 655
33 - Branch coverage improvements: 656 - Branch coverage improvements:
34 657
38 on any column. Thanks, `Chris Adams`_. 661 on any column. Thanks, `Chris Adams`_.
39 662
40 .. _Chris Adams: http://improbable.org/chris/ 663 .. _Chris Adams: http://improbable.org/chris/
41 664
42 665
43 Version 3.2b2, 19 November 2009 666 Version 3.2b2 --- 19 November 2009
44 ------------------------------- 667 ----------------------------------
45 668
46 - Branch coverage improvements: 669 - Branch coverage improvements:
47 670
48 - Classes are no longer incorrectly marked as branches: `issue 32`_. 671 - Classes are no longer incorrectly marked as branches: `issue 32`_.
49 672
51 `issue 35`_. 674 `issue 35`_.
52 675
53 - Fixed some problems syntax coloring sources with line continuations and 676 - Fixed some problems syntax coloring sources with line continuations and
54 source with tabs: `issue 30`_ and `issue 31`_. 677 source with tabs: `issue 30`_ and `issue 31`_.
55 678
56 - The --omit option now works much better than before, fixing `issue 14` and 679 - The --omit option now works much better than before, fixing `issue 14`_ and
57 `issue 33`_. Thanks, Danek Duvall. 680 `issue 33`_. Thanks, Danek Duvall.
58 681
59 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 682 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14
60 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 683 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30
61 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 684 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31
62 .. _issue 32: http://bitbucket.org/ned/coveragepy/issue/32 685 .. _issue 32: http://bitbucket.org/ned/coveragepy/issue/32
63 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33 686 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33
64 .. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35 687 .. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35
65 688
66 689
67 Version 3.2b1, 10 November 2009 690 Version 3.2b1 --- 10 November 2009
68 ------------------------------- 691 ----------------------------------
69 692
70 - Branch coverage! 693 - Branch coverage!
71 694
72 - XML reporting has file paths that let Cobertura find the source code. 695 - XML reporting has file paths that let Cobertura find the source code.
73 696
77 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_. 700 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_.
78 701
79 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23 702 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23
80 703
81 704
82 Version 3.1, 4 October 2009 705 Version 3.1 --- 4 October 2009
83 --------------------------- 706 ------------------------------
84 707
85 - Source code can now be read from eggs. Thanks, Ross Lawley. Fixes 708 - Source code can now be read from eggs. Thanks, Ross Lawley. Fixes
86 `issue 25`_. 709 `issue 25`_.
87 710
88 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25 711 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25
89 712
90 713
91 Version 3.1b1, 27 September 2009 714 Version 3.1b1 --- 27 September 2009
92 -------------------------------- 715 -----------------------------------
93 716
94 - Python 3.1 is now supported. 717 - Python 3.1 is now supported.
95 718
96 - Coverage.py has a new command line syntax with sub-commands. This expands 719 - Coverage.py has a new command line syntax with sub-commands. This expands
97 the possibilities for adding features and options in the future. The old 720 the possibilities for adding features and options in the future. The old
119 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 742 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12
120 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 743 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13
121 .. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24 744 .. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24
122 745
123 746
124 Version 3.0.1, 7 July 2009 747 Version 3.0.1 --- 7 July 2009
125 -------------------------- 748 -----------------------------
126 749
127 - Removed the recursion limit in the tracer function. Previously, code that 750 - Removed the recursion limit in the tracer function. Previously, code that
128 ran more than 500 frames deep would crash. Fixed `issue 9`. 751 ran more than 500 frames deep would crash. Fixed `issue 9`_.
129 752
130 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser 753 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser
131 invocations could be overlooked. Fixed `issue 10`. 754 invocations could be overlooked. Fixed `issue 10`_.
132 755
133 - On Python 2.3, coverage.py could mis-measure code with exceptions being 756 - On Python 2.3, coverage.py could mis-measure code with exceptions being
134 raised. This is now fixed. 757 raised. This is now fixed.
135 758
136 - The coverage.py code itself will now not be measured by coverage.py, and no 759 - The coverage.py code itself will now not be measured by coverage.py, and no
137 coverage modules will be mentioned in the nose --with-cover plug-in. Fixed 760 coverage modules will be mentioned in the nose --with-cover plug-in. Fixed
138 `issue 8`. 761 `issue 8`_.
139 762
140 - When running source files, coverage.py now opens them in universal newline 763 - When running source files, coverage.py now opens them in universal newline
141 mode just like Python does. This lets it run Windows files on Mac, for 764 mode just like Python does. This lets it run Windows files on Mac, for
142 example. 765 example.
143 766
144 .. _issue 9: http://bitbucket.org/ned/coveragepy/issue/9 767 .. _issue 9: http://bitbucket.org/ned/coveragepy/issue/9
145 .. _issue 10: http://bitbucket.org/ned/coveragepy/issue/10 768 .. _issue 10: http://bitbucket.org/ned/coveragepy/issue/10
146 .. _issue 8: http://bitbucket.org/ned/coveragepy/issue/8 769 .. _issue 8: http://bitbucket.org/ned/coveragepy/issue/8
147 770
148 771
149 Version 3.0, 13 June 2009 772 Version 3.0 --- 13 June 2009
150 ------------------------- 773 ----------------------------
151 774
152 - Fixed the way the Python library was ignored. Too much code was being 775 - Fixed the way the Python library was ignored. Too much code was being
153 excluded the old way. 776 excluded the old way.
154 777
155 - Tabs are now properly converted in HTML reports. Previously indentation was 778 - Tabs are now properly converted in HTML reports. Previously indentation was
156 lost. Fixed `issue 6`. 779 lost. Fixed `issue 6`_.
157 780
158 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes. 781 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes.
159 782
160 .. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6 783 .. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6
161 784
162 785
163 Version 3.0b3, 16 May 2009 786 Version 3.0b3 --- 16 May 2009
164 -------------------------- 787 -----------------------------
165 788
166 - Added parameters to coverage.__init__ for options that had been set on the 789 - Added parameters to coverage.__init__ for options that had been set on the
167 coverage object itself. 790 coverage object itself.
168 791
169 - Added clear_exclude() and get_exclude_list() methods for programmatic 792 - Added clear_exclude() and get_exclude_list() methods for programmatic
179 is no longer saved automatically on process exit. You can re-enable it with 802 is no longer saved automatically on process exit. You can re-enable it with
180 the auto_data=True parameter on the coverage() constructor. The module-level 803 the auto_data=True parameter on the coverage() constructor. The module-level
181 interface still uses automatic saving. 804 interface still uses automatic saving.
182 805
183 806
184 Version 3.0b2, 30 April 2009 807 Version 3.0b --- 30 April 2009
185 ---------------------------- 808 ------------------------------
186 809
187 HTML reporting, and continued refactoring. 810 HTML reporting, and continued refactoring.
188 811
189 - HTML reports and annotation of source files: use the new -b (browser) switch. 812 - HTML reports and annotation of source files: use the new -b (browser) switch.
190 Thanks to George Song for code, inspiration and guidance. 813 Thanks to George Song for code, inspiration and guidance.
207 extensibility. 830 extensibility.
208 831
209 - Removed the undocumented cache_file argument to coverage.usecache(). 832 - Removed the undocumented cache_file argument to coverage.usecache().
210 833
211 834
212 Version 3.0b1, 7 March 2009 835 Version 3.0b1 --- 7 March 2009
213 --------------------------- 836 ------------------------------
214 837
215 Major overhaul. 838 Major overhaul.
216 839
217 - Coverage is now a package rather than a module. Functionality has been split 840 - Coverage is now a package rather than a module. Functionality has been split
218 into classes. 841 into classes.
232 programmatic use of Coverage. 855 programmatic use of Coverage.
233 856
234 - The minimum supported Python version is 2.3. 857 - The minimum supported Python version is 2.3.
235 858
236 859
237 Version 2.85, 14 September 2008 860 Version 2.85 --- 14 September 2008
238 ------------------------------- 861 ----------------------------------
239 862
240 - Add support for finding source files in eggs. Don't check for 863 - Add support for finding source files in eggs. Don't check for
241 morf's being instances of ModuleType, instead use duck typing so that 864 morf's being instances of ModuleType, instead use duck typing so that
242 pseudo-modules can participate. Thanks, Imri Goldberg. 865 pseudo-modules can participate. Thanks, Imri Goldberg.
243 866
244 - Use os.realpath as part of the fixing of file names so that symlinks won't 867 - Use os.realpath as part of the fixing of file names so that symlinks won't
245 confuse things. Thanks, Patrick Mezard. 868 confuse things. Thanks, Patrick Mezard.
246 869
247 870
248 Version 2.80, 25 May 2008 871 Version 2.80 --- 25 May 2008
249 ------------------------- 872 ----------------------------
250 873
251 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper. 874 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper.
252 875
253 876
254 Version 2.78, 30 September 2007 877 Version 2.78 --- 30 September 2007
255 ------------------------------- 878 ----------------------------------
256 879
257 - Don't try to predict whether a file is Python source based on the extension. 880 - Don't try to predict whether a file is Python source based on the extension.
258 Extension-less files are often Pythons scripts. Instead, simply parse the file 881 Extension-less files are often Pythons scripts. Instead, simply parse the file
259 and catch the syntax errors. Hat tip to Ben Finney. 882 and catch the syntax errors. Hat tip to Ben Finney.
260 883
261 884
262 Version 2.77, 29 July 2007 885 Version 2.77 --- 29 July 2007
263 -------------------------- 886 -----------------------------
264 887
265 - Better packaging. 888 - Better packaging.
266 889
267 890
268 Version 2.76, 23 July 2007 891 Version 2.76 --- 23 July 2007
269 -------------------------- 892 -----------------------------
270 893
271 - Now Python 2.5 is *really* fully supported: the body of the new with 894 - Now Python 2.5 is *really* fully supported: the body of the new with
272 statement is counted as executable. 895 statement is counted as executable.
273 896
274 897
275 Version 2.75, 22 July 2007 898 Version 2.75 --- 22 July 2007
276 -------------------------- 899 -----------------------------
277 900
278 - Python 2.5 now fully supported. The method of dealing with multi-line 901 - Python 2.5 now fully supported. The method of dealing with multi-line
279 statements is now less sensitive to the exact line that Python reports during 902 statements is now less sensitive to the exact line that Python reports during
280 execution. Pass statements are handled specially so that their disappearance 903 execution. Pass statements are handled specially so that their disappearance
281 during execution won't throw off the measurement. 904 during execution won't throw off the measurement.
282 905
283 906
284 Version 2.7, 21 July 2007 907 Version 2.7 --- 21 July 2007
285 ------------------------- 908 ----------------------------
286 909
287 - "#pragma: nocover" is excluded by default. 910 - "#pragma: nocover" is excluded by default.
288 911
289 - Properly ignore docstrings and other constant expressions that appear in the 912 - Properly ignore docstrings and other constant expressions that appear in the
290 middle of a function, a problem reported by Tim Leslie. 913 middle of a function, a problem reported by Tim Leslie.
303 - Python 2.2 support maintained, thanks Catherine Proulx. 926 - Python 2.2 support maintained, thanks Catherine Proulx.
304 927
305 - Minor changes to avoid lint warnings. 928 - Minor changes to avoid lint warnings.
306 929
307 930
308 Version 2.6, 23 August 2006 931 Version 2.6 --- 23 August 2006
309 --------------------------- 932 ------------------------------
310 933
311 - Applied Joseph Tate's patch for function decorators. 934 - Applied Joseph Tate's patch for function decorators.
312 935
313 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling. 936 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling.
314 937
316 939
317 - Refactorings to improve testability. Fixes to command-line logic for parallel 940 - Refactorings to improve testability. Fixes to command-line logic for parallel
318 mode and collect. 941 mode and collect.
319 942
320 943
321 Version 2.5, 4 December 2005 944 Version 2.5 --- 4 December 2005
322 ---------------------------- 945 -------------------------------
323 946
324 - Call threading.settrace so that all threads are measured. Thanks Martin 947 - Call threading.settrace so that all threads are measured. Thanks Martin
325 Fuzzey. 948 Fuzzey.
326 949
327 - Add a file argument to report so that reports can be captured to a different 950 - Add a file argument to report so that reports can be captured to a different
331 954
332 - Adapted Greg Rogers' patch for using relative file names, and sorting and 955 - Adapted Greg Rogers' patch for using relative file names, and sorting and
333 omitting files to report on. 956 omitting files to report on.
334 957
335 958
336 Version 2.2, 31 December 2004 959 Version 2.2 --- 31 December 2004
337 ----------------------------- 960 --------------------------------
338 961
339 - Allow for keyword arguments in the module global functions. Thanks, Allen. 962 - Allow for keyword arguments in the module global functions. Thanks, Allen.
340 963
341 964
342 Version 2.1, 14 December 2004 965 Version 2.1 --- 14 December 2004
343 ----------------------------- 966 --------------------------------
344 967
345 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global 968 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global
346 for 'annotate', and factor it, adding 'annotate_file'. 969 for 'annotate', and factor it, adding 'annotate_file'.
347 970
348 971
349 Version 2.0, 12 December 2004 972 Version 2.0 --- 12 December 2004
350 ----------------------------- 973 --------------------------------
351 974
352 Significant code changes. 975 Significant code changes.
353 976
354 - Finding executable statements has been rewritten so that docstrings and 977 - Finding executable statements has been rewritten so that docstrings and
355 other quirks of Python execution aren't mistakenly identified as missing 978 other quirks of Python execution aren't mistakenly identified as missing

eric ide

mercurial