Roll src/third_party/WebKit 44e0d7b:d79e3c1 (svn 190013:190016)
[chromium-blink-merge.git] / third_party / pycoverage / CHANGES.txt
blob1e4b888b52c5964a2609a60758bce029278783eb
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,
103   fixing `issue 221`_.
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
126   measurement.
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
145   branch coverage.
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`_
155   recommended.
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`_
160   and `issue 203`_.
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`_.
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.
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
184   operating systems.
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`.
190   Closes `issue 206`_.
192 - Added a page to the docs about contributing to coverage.py, closing
193   `issue 171`_.
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
338   now fixed.
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`_.
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.
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.
385   Closes `issue 121`_.
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,
425   closing `issue 80`_.
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,
437   Brett Cannon.
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
481   `issue 85`_.
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
503   source files.
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
519   fixed.
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,
540   Brett Cannon.
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
550   `issue 82`_.
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
597   `config_file=False`.
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
603   starts.
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
620   `issue 47`_.
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:
674     `issue 35`_.
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 ----------------------------------
693 - Branch coverage!
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
709   `issue 25`_.
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
729   `issue 13`_.
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
761   `issue 8`_.
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
765   example.
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
799   Offenbach.
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
830   extensibility.
832 - Removed the undocumented cache_file argument to coverage.usecache().
835 Version 3.0b1 --- 7 March 2009
836 ------------------------------
838 Major overhaul.
840 - Coverage is now a package rather than a module.  Functionality has been split
841   into classes.
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
845   other encouragement.
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 -----------------------------
888 - Better packaging.
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
917   programmatically.
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
941   mode and collect.
944 Version 2.5 --- 4 December 2005
945 -------------------------------
947 - Call threading.settrace so that all threads are measured. Thanks Martin
948   Fuzzey.
950 - Add a file argument to report so that reports can be captured to a different
951   destination.
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
979   lines.
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.
988 Earlier History
989 ---------------
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
998 -x, or -a and -r.
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
1004 and 2.1.1.
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.