Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: tools/telemetry/third_party/coverage/doc/changes.rst

Issue 1366913004: Add coverage Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ------------------------------ 1 .. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
2 Change history for Coverage.py 2 .. For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
3 ------------------------------ 3
4 4 .. _changes:
5 3.7.1 -- 13 December 2013 5
6 ------------------------- 6 ====================================
7 Major change history for coverage.py
8 ====================================
9
10 .. :history: 20090524T134300, brand new docs.
11 .. :history: 20090613T164000, final touches for 3.0
12 .. :history: 20090706T205000, changes for 3.0.1
13 .. :history: 20091004T170700, changes for 3.1
14 .. :history: 20091128T072200, changes for 3.2
15 .. :history: 20091205T161525, 3.2 final
16 .. :history: 20100221T151900, changes for 3.3
17 .. :history: 20100306T181400, changes for 3.3.1
18 .. :history: 20100725T211700, updated for 3.4.
19 .. :history: 20100820T151500, updated for 3.4b1
20 .. :history: 20100906T133800, updated for 3.4b2
21 .. :history: 20100919T163400, updated for 3.4 release.
22 .. :history: 20110604T214100, updated for 3.5b1
23 .. :history: 20110629T082200, updated for 3.5
24 .. :history: 20110923T081600, updated for 3.5.1
25 .. :history: 20120429T162100, updated for 3.5.2b1
26 .. :history: 20120503T233700, updated for 3.5.2
27 .. :history: 20120929T093100, updated for 3.5.3
28 .. :history: 20121129T060100, updated for 3.6b1.
29 .. :history: 20121223T180600, updated for 3.6b2.
30 .. :history: 20130105T173500, updated for 3.6
31 .. :history: 20131005T205700, updated for 3.7
32 .. :history: 20131212T213100, updated for 3.7.1
33 .. :history: 20150124T134800, updated for 4.0a4
34 .. :history: 20150802T174700, updated for 4.0b1
35 .. :history: 20150822T092800, updated for 4.0b2
36 .. :history: 20150919T072700, updated for 4.0
37
38
39 These are the major changes for coverage.py. For a more complete change
40 history, see the `CHANGES.txt`_ file in the source tree.
41
42 .. _CHANGES.txt: http://bitbucket.org/ned/coveragepy/src/tip/CHANGES.txt
43
44 .. module:: coverage
45
46 .. _changes_40:
47
48 Version 4.0 --- 20 September 2015
49 ---------------------------------
50
51
52 Backward incompatibilities:
53
54 - Python versions supported are now:
55
56 - CPython 2.6, 2.7, 3.3, 3.4 and 3.5
57 - PyPy2 2.4, 2.6
58 - PyPy3 2.4
59
60 - The original command line switches (``-x`` to run a program, etc) are no
61 longer supported.
62
63 - The ``COVERAGE_OPTIONS`` environment variable is no longer supported. It was
64 a hack for ``--timid`` before configuration files were available.
65
66 - The original module-level function interface to coverage.py is no longer
67 supported. You must now create a :class:`coverage.Coverage` object, and use
68 methods on it.
69
70 - The ``Coverage.use_cache`` method is no longer supported.
71
72 - The private method ``Coverage._harvest_data`` is now called
73 :meth:`Coverage.get_data`, and returns the :class:`CoverageData` containing
74 the collected data.
75
76 - Coverage.py is now licensed under the Apache 2.0 license. See `NOTICE.txt`_
77 for details.
78
79 - Coverage.py kits no longer include tests and docs. If you were using them,
80 get in touch and let me know how.
81
82 .. _NOTICE.txt: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
83
84
85 Major new features:
86
87 - Plugins: third parties can write plugins to add file support for non-Python
88 files, such as web application templating engines, or languages that compile
89 down to Python. See :ref:`plugins` for how to use plugins, and
90 :ref:`api_plugin` for details of how to write them. A plugin for measuring
91 Django template coverage is available: `django_coverage_plugin`_
92
93 - Gevent, eventlet, and greenlet are now supported. The ``[run] concurrency``
94 setting, or the ``--concurrency`` command line switch, specifies the
95 concurrency library in use. Huge thanks to Peter Portante for initial
96 implementation, and to Joe Jevnik for the final insight that completed the
97 work.
98
99 - The data storage has been re-written, using JSON instead of pickle. The
100 :class:`.CoverageData` class is a new supported API to the contents of the
101 data file. Data files from older versions of coverage.py can be converted to
102 the new format with ``python -m coverage.pickle2json``.
103
104 - Wildly experimental: support for measuring processes started by the
105 multiprocessing module. To use, set ``--concurrency=multiprocessing``,
106 either on the command line or in the .coveragerc file. Thanks, Eduardo
107 Schettino. Currently, this does not work on Windows.
108
109
110 New features:
111
112 - Options are now also read from a setup.cfg file, if any. Sections are
113 prefixed with "coverage:", so the ``[run]`` options will be read from the
114 ``[coverage:run]`` section of setup.cfg.
115
116 - The HTML report now has filtering. Type text into the Filter box on the
117 index page, and only modules with that text in the name will be shown.
118 Thanks, Danny Allen.
119
120 - A new option: ``coverage report --skip-covered`` (or ``[report] skip_covered`` )
121 will reduce the number of files reported by skipping files with 100%
122 coverage. Thanks, Krystian Kichewko. This means that empty ``__init__.py``
123 files will be skipped, since they are 100% covered.
124
125 - You can now specify the ``--fail-under`` option in the ``.coveragerc`` file
126 as the ``[report] fail_under`` option.
127
128 - The ``report -m`` command now shows missing branches when reporting on branch
129 coverage. Thanks, Steve Leonard.
130
131 - The ``coverage combine`` command now accepts any number of directories or
132 files as arguments, and will combine all the data from them. This means you
133 don't have to copy the files to one directory before combining. Thanks,
134 Christine Lytwynec.
135
136 - A new configuration option for the XML report: ``[xml] package_depth``
137 controls which directories are identified as packages in the report.
138 Directories deeper than this depth are not reported as packages.
139 The default is that all directories are reported as packages.
140 Thanks, Lex Berezhny.
141
142 - A new configuration option, ``[run] note``, lets you set a note that will be
143 stored in the ``runs`` section of the data file. You can use this to
144 annotate the data file with any information you like.
145
146 - The COVERAGE_DEBUG environment variable can be used to set the ``[run] debug``
147 configuration option to control what internal operations are logged.
148
149 - A new version identifier is available, `coverage.version_info`, a plain tuple
150 of values similar to `sys.version_info`_.
151
152
153 Improvements:
154
155 - Coverage.py now always adds the current directory to sys.path, so that
156 plugins can import files in the current directory.
157
158 - Coverage.py now accepts a directory name for ``coverage run`` and will run a
159 ``__main__.py`` found there, just like Python will. Thanks, Dmitry Trofimov.
160
161 - The ``--debug`` switch can now be used on any command.
162
163 - Reports now use file names with extensions. Previously, a report would
164 describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows
165 for better support of non-Python files.
166
167 - Missing branches in the HTML report now have a bit more information in the
168 right-hand annotations. Hopefully this will make their meaning clearer.
169
170 - The XML report now contains a <source> element. Thanks Stan Hu.
171
172 - The XML report now includes a ``missing-branches`` attribute. Thanks, Steve
173 Peak. This is not a part of the Cobertura DTD, so the XML report no longer
174 references the DTD.
175
176 - The XML report now reports each directory as a package again. This was a bad
177 regression, I apologize.
178
179 - In parallel mode, ``coverage erase`` will now delete all of the data files.
180
181 - A new warning is possible, if a desired file isn't measured because it was
182 imported before coverage.py was started.
183
184 - The :func:`coverage.process_startup` function now will start coverage
185 measurement only once, no matter how many times it is called. This fixes
186 problems due to unusual virtualenv configurations.
187
188 - Unrecognized configuration options will now print an error message and stop
189 coverage.py. This should help prevent configuration mistakes from passing
190 silently.
191
192
193 API changes:
194
195 - The class defined in the coverage module is now called ``Coverage`` instead
196 of ``coverage``, though the old name still works, for backward compatibility.
197
198 - You can now programmatically adjust the configuration of coverage.py by
199 calling :meth:`Coverage.set_option` after construction.
200 :meth:`Coverage.get_option` reads the configuration values.
201
202 - If the `config_file` argument to the Coverage constructor is specified as
203 ".coveragerc", it is treated as if it were True. This means setup.cfg is
204 also examined, and a missing file is not considered an error.
205
206
207 Bug fixes:
208
209 - The textual report and the HTML report used to report partial branches
210 differently for no good reason. Now the text report's "missing branches"
211 column is a "partial branches" column so that both reports show the same
212 numbers. This closes `issue 342`_.
213
214 - The ``fail-under`` value is now rounded the same as reported results,
215 preventing paradoxical results, fixing `issue 284`_.
216
217 - Branch coverage couldn't properly handle certain extremely long files. This
218 is now fixed, closing `issue 359`_.
219
220 - Branch coverage didn't understand yield statements properly. Mickie Betz
221 persisted in pursuing this despite Ned's pessimism. Fixes `issue 308`_ and
222 `issue 324`_.
223
224 - Files with incorrect encoding declaration comments are no longer ignored by
225 the reporting commands.
226
227 - Empty files are now reported as 100% covered in the XML report, not 0%
228 covered.
229
230 - The XML report will now create the output directory if need be. Thanks, Chris
231 Rose.
232
233 - HTML reports no longer raise UnicodeDecodeError if a Python file has
234 undecodable characters.
235
236 - The annotate command will now annotate all files, not just ones relative to
237 the current directory.
238
239
240 .. _django_coverage_plugin: https://pypi.python.org/pypi/django_coverage_plugin
241 .. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should- show-more-precision
242 .. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branc h-coverage
243 .. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-conf uses-branch-coverage
244 .. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-c overage-reports-differ
245 .. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-e rror
246 .. _sys.version_info: https://docs.python.org/3/library/sys.html#sys.version_inf o
247
248
249 .. _changes_371:
250
251 Version 3.7.1 --- 13 December 2013
252 ----------------------------------
7 253
8 - Improved the speed of HTML report generation by about 20%. 254 - Improved the speed of HTML report generation by about 20%.
9 255
10 - Fixed the mechanism for finding OS-installed static files for the HTML report 256 - Fixed the mechanism for finding OS-installed static files for the HTML report
11 so that it will actually find OS-installed static files. 257 so that it will actually find OS-installed static files.
12 258
13 259
14 3.7 --- 6 October 2013 260 .. _changes_37:
15 ---------------------- 261
262 Version 3.7 --- 6 October 2013
263 ------------------------------
16 264
17 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of 265 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of
18 options indicating the type of internal activity to log to stderr. 266 options indicating the type of internal activity to log to stderr. For
267 details, see :ref:`the run --debug options <cmd_run_debug>`.
19 268
20 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_. 269 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_.
21 270
22 - Running code with ``coverage run -m`` now behaves more like Python does, 271 - Running code with ``coverage run -m`` now behaves more like Python does,
23 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_. 272 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_.
24 273
25 - Coverage can now run .pyc files directly, closing `issue 264`_. 274 - Coverage.py can now run .pyc files directly, closing `issue 264`_.
26 275
27 - Coverage properly supports .pyw files, fixing `issue 261`_. 276 - Coverage.py properly supports .pyw files, fixing `issue 261`_.
28 277
29 - Omitting files within a tree specified with the ``source`` option would 278 - Omitting files within a tree specified with the ``source`` option would
30 cause them to be incorrectly marked as unexecuted, as described in 279 cause them to be incorrectly marked as unexecuted, as described in
31 `issue 218`_. This is now fixed. 280 `issue 218`_. This is now fixed.
32 281
33 - When specifying paths to alias together during data combining, you can now 282 - When specifying paths to alias together during data combining, you can now
34 specify relative paths, fixing `issue 267`_. 283 specify relative paths, fixing `issue 267`_.
35 284
36 - Most file paths can now be specified with username expansion (``~/src``, or 285 - Most file paths can now be specified with username expansion (``~/src``, or
37 ``~build/src``, for example), and with environment variable expansion 286 ``~build/src``, for example), and with environment variable expansion
38 (``build/$BUILDNUM/src``). 287 (``build/$BUILDNUM/src``).
39 288
40 - Trying to create an XML report with no files to report on, would cause a 289 - Trying to create an XML report with no files to report on, would cause a
41 ZeroDivideError, but no longer does, fixing `issue 250`_. 290 ZeroDivideError, but no longer does, fixing `issue 250`_.
42 291
43 - When running a threaded program under the Python tracer, coverage no longer 292 - When running a threaded program under the Python tracer, coverage.py no
44 issues a spurious warning about the trace function changing: "Trace function 293 longer issues a spurious warning about the trace function changing: "Trace
45 changed, measurement is likely wrong: None." This fixes `issue 164`_. 294 function changed, measurement is likely wrong: None." This fixes
295 `issue 164`_.
46 296
47 - Static files necessary for HTML reports are found in system-installed places, 297 - Static files necessary for HTML reports are found in system-installed places,
48 to ease OS-level packaging of coverage.py. Closes `issue 259`_. 298 to ease OS-level packaging of coverage.py. Closes `issue 259`_.
49 299
50 - Source files with encoding declarations, but a blank first line, were not 300 - Source files with encoding declarations, but a blank first line, were not
51 decoded properly. Now they are. Thanks, Roger Hu. 301 decoded properly. Now they are. Thanks, Roger Hu.
52 302
53 - The source kit now includes the ``__main__.py`` file in the root coverage 303 - The source kit now includes the ``__main__.py`` file in the root coverage
54 directory, fixing `issue 255`_. 304 directory, fixing `issue 255`_.
55 305
56 .. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-aren t-treated-properly-in 306 .. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-aren t-treated-properly-in
57 .. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-cha nged-warning-when-using 307 .. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-cha nged-warning-when-using
58 .. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-ge ts-confused-in-certain 308 .. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-ge ts-confused-in-certain
59 .. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find- module-or-package-in 309 .. _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-leve l-package-doesnt-work 310 .. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-leve l-package-doesnt-work
61 .. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-n ot-respect-the-omit-flag 311 .. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-n ot-respect-the-omit-flag
62 .. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivis ionerror-when-generating 312 .. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivis ionerror-when-generating
63 .. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__ main__py-not-included-in 313 .. _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-syste m-installed-third-party 314 .. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-syste m-installed-third-party
65 .. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-re ported-properly 315 .. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-re ported-properly
66 .. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run- pyc-files 316 .. _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-alia ses-dont-work 317 .. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-alia ses-dont-work
68 318
69 319
70 Version 3.6 --- 5 January 2013 320 Version 3.6 --- 5 January 2013
71 ------------------------------ 321 ------------------------------
72 322
73 - Added a page to the docs about troublesome situations, closing `issue 226`_, 323 Features:
74 and added some info to the TODO file, closing `issue 227`_.
75 324
76 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-sectio n-to-describe-when 325 - The **report**, **html**, and **xml** commands now accept a ``--fail-under``
77 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo 326 switch that indicates in the exit status whether the coverage percentage was
327 less than a particular value. Closes `issue 139`_.
78 328
329 - The reporting functions coverage.report(), coverage.html_report(), and
330 coverage.xml_report() now all return a float, the total percentage covered
331 measurement.
79 332
80 Version 3.6b3 --- 29 December 2012 333 - The HTML report's title can now be set in the configuration file, with the
81 ---------------------------------- 334 ``--title`` switch on the command line, or via the API.
82 335
83 - Beta 2 broke the nose plugin. It's fixed again, closing `issue 224`_. 336 - Configuration files now support substitution of environment variables, using
337 syntax like ``${WORD}``. Closes `issue 97`_.
84 338
85 .. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexc over 339 Packaging:
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 340
93 - The C extension is optionally compiled using a different more widely-used 341 - 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. 342 technique, taking another stab at fixing `issue 80`_ once and for all.
95 343
96 - Combining data files would create entries for phantom files if used with 344 - When installing, now in addition to creating a "coverage" command, two new
97 ``source`` and path aliases. It no longer does. 345 aliases are also installed. A "coverage2" or "coverage3" command will be
346 created, depending on whether you are installing in Python 2.x or 3.x.
347 A "coverage-X.Y" command will also be created corresponding to your specific
348 version of Python. Closes `issue 111`_.
98 349
99 - ``debug sys`` now shows the configuration file path that was read. 350 - The coverage.py installer no longer tries to bootstrap setuptools or
351 Distribute. You must have one of them installed first, as `issue 202`_
352 recommended.
100 353
101 - If an oddly-behaved package claims that code came from an empty-string 354 - The coverage.py kit now includes docs (closing `issue 137`_) and tests.
102 filename, coverage.py no longer associates it with the directory name,
103 fixing `issue 221`_.
104 355
105 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi ng-way-to-know-we-cant 356 Docs:
106 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompa tible-with-pyratemp
107 357
358 - Added a page to the docs about :doc:`contributing <contributing>` to
359 coverage.py, closing `issue 171`_.
108 360
109 Version 3.6b1 --- 28 November 2012 361 - Added a page to the docs about :doc:`troublesome situations <trouble>`,
110 ---------------------------------- 362 closing `issue 226`_.
363
364 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius
365 Gedminas. Closes `issue 205`_.
366
367 - The pydoc tool can now show documentation for the class `coverage.coverage`.
368 Closes `issue 206`_.
369
370 - Added some info to the TODO file, closing `issue 227`_.
371
372 Fixes:
111 373
112 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly 374 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly
113 in reporting functions, though they were when running. Now they are handled 375 in reporting functions, though they were when running. Now they are handled
114 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible 376 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible
115 that your configurations may now be incorrect. If you use ``include`` or 377 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 378 ``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 379 in a configuration file, please check carefully that you were not relying on
118 the old broken behavior. 380 the old broken behavior.
119 381
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 382 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply
135 didn't work. Now it does. 383 didn't work. Now it does.
136 384
137 - The XML report now consistently uses filenames for the filename attribute, 385 - Combining data files would create entries for phantom files if used with
386 ``source`` and path aliases. It no longer does.
387
388 - ``debug sys`` now shows the configuration file path that was read.
389
390 - If an oddly-behaved package claims that code came from an empty-string
391 file name, coverage.py no longer associates it with the directory name,
392 fixing `issue 221`_.
393
394 - The XML report now consistently uses file names for the filename attribute,
138 rather than sometimes using module names. Fixes `issue 67`_. 395 rather than sometimes using module names. Fixes `issue 67`_.
139 Thanks, Marcus Cobden. 396 Thanks, Marcus Cobden.
140 397
141 - Coverage percentage metrics are now computed slightly differently under 398 - Coverage percentage metrics are now computed slightly differently under
142 branch coverage. This means that completely unexecuted files will now 399 branch coverage. This means that completely unexecuted files will now
143 correctly have 0% coverage, fixing `issue 156`_. This also means that your 400 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 401 total coverage numbers will generally now be lower if you are measuring
145 branch coverage. 402 branch coverage.
146 403
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`_ 404 - On Windows, files are now reported in their correct case, fixing `issue 89`_
160 and `issue 203`_. 405 and `issue 203`_.
161 406
162 - If a file is missing during reporting, the path shown in the error message 407 - 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. 408 is now correct, rather than an incorrect path in the current directory.
164 Fixes `issue 60`_. 409 Fixes `issue 60`_.
165 410
166 - Running an HTML report in Python 3 in the same directory as an old Python 2 411 - 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`_) 412 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_)
168 is now fixed. 413 is now fixed.
169 414
170 - Fixed yet another error trying to parse non-Python files as Python, this 415 - Fixed yet another error trying to parse non-Python files as Python, this
171 time an IndentationError, closing `issue 82`_ for the fourth time... 416 time an IndentationError, closing `issue 82`_ for the fourth time...
172 417
173 - If `coverage xml` fails because there is no data to report, it used to 418 - 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`_. 419 create a zero-length XML file. Now it doesn't, fixing `issue 210`_.
175 420
176 - Jython files now work with the ``--source`` option, fixing `issue 100`_. 421 - Jython files now work with the ``--source`` option, fixing `issue 100`_.
177 422
178 - Running coverage under a debugger is unlikely to work, but it shouldn't fail 423 - Running coverage.py under a debugger is unlikely to work, but it shouldn't
179 with "TypeError: 'NoneType' object is not iterable". Fixes `issue 201`_. 424 fail with "TypeError: 'NoneType' object is not iterable". Fixes
425 `issue 201`_.
180 426
181 - On some Linux distributions, when installed with the OS package manager, 427 - 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, 428 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 429 fixing `issue 214`_, though this will take some time to be repackaged by the
184 operating systems. 430 operating systems.
185 431
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 432 - When coverage.py ended unsuccessfully, it may have reported odd errors like
196 ``'NoneType' object has no attribute 'isabs'``. It no longer does, 433 ``'NoneType' object has no attribute 'isabs'``. It no longer does,
197 so kiss `issue 153`_ goodbye. 434 so kiss `issue 153`_ goodbye.
198 435
436
199 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-or phaned-pyc-files 437 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-or phaned-pyc-files
200 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames -may-be-generated 438 .. _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-gene rating-html-report 439 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi ng-way-to-know-we-cant
202 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packa ges-are-reported-in 440 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packa ges-are-reported-in
203 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-va riables-to-be 441 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-va riables-to-be
204 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-d oesnt-work-for-packages 442 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-d oesnt-work-for-packages
205 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-co verage-with-pip-not 443 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-co verage-with-pip-not
206 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with- source-distribution 444 .. _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-c ertain-coverage-in-tests 445 .. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-c ertain-coverage-in-tests
208 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-t o-work-in-coverage 446 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-t o-work-in-coverage
209 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filen ame-triggers 447 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filen ame-triggers
210 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexe cuted-file-shows-14 448 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexe cuted-file-shows-14
211 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-inclu de-and-omit-filename 449 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-inclu de-and-omit-filename
212 .. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute- and-run-tests 450 .. _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 451 .. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror -on-htmlpy
214 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-dja ngo-14-with-pydb-on 452 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-dja ngo-14-with-pydb-on
215 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setu ppy-and 453 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setu ppy-and
216 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filename s-reported-when-filename 454 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filename s-reported-when-filename
217 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverag e-more-friendly 455 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverag e-more-friendly
218 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecove rage-fails-with-an-error 456 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecove rage-fails-with-an-error
219 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-cover age-data-coverage-xml 457 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-cover age-data-coverage-xml
220 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measure s-itself-on-precise 458 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measure s-itself-on-precise
459 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompa tible-with-pyratemp
460 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-sectio n-to-describe-when
461 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo
221 462
222 463
223 Version 3.5.3 --- 29 September 2012 464 Version 3.5.3 --- 29 September 2012
224 ----------------------------------- 465 -----------------------------------
225 466
226 - Line numbers in the HTML report line up better with the source lines, fixing 467 - Line numbers in the HTML report line up better with the source lines, fixing
227 `issue 197`_, thanks Marius Gedminas. 468 `issue 197`_, thanks Marius Gedminas.
228 469
229 - When specifying a directory as the source= option, the directory itself no 470 - 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 471 longer needs to have a ``__init__.py`` file, though its sub-directories do,
231 be considered as source files. 472 to be considered as source files.
232 473
233 - Files encoded as UTF-8 with a BOM are now properly handled, fixing 474 - Files encoded as UTF-8 with a BOM are now properly handled, fixing
234 `issue 179`_. Thanks, Pablo Carballo. 475 `issue 179`_. Thanks, Pablo Carballo.
235 476
236 - Fixed more cases of non-Python files being reported as Python source, and 477 - 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). 478 then not being able to parse them as Python. Closes `issue 82`_ (again).
238 Thanks, Julian Berman. 479 Thanks, Julian Berman.
239 480
240 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_. 481 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_.
241 482
242 - Optimized .pyo files may not have been handled correctly, `issue 195`_. 483 - Optimized .pyo files may not have been handled correctly, `issue 195`_.
243 Thanks, Marius Gedminas. 484 Thanks, Marius Gedminas.
244 485
245 - Certain unusually named file paths could have been mangled during reporting, 486 - Certain unusually named file paths could have been mangled during reporting,
246 `issue 194`_. Thanks, Marius Gedminas. 487 `issue 194`_. Thanks, Marius Gedminas.
247 488
248 - Try to do a better job of the impossible task of detecting when we can't 489 - Try to do a better job of the impossible task of detecting when we can't
249 build the C extension, fixing `issue 183`_. 490 build the C extension, fixing `issue 183`_.
250 491
251 - Testing is now done with `tox`_, thanks, Marc Abramowitz.
252
253 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene rating-html-report
254 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usa ge-by-ctracer 492 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usa ge-by-ctracer
255 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails -when-source-file-is 493 .. _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 494 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for- python-23
257 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelativ e_filename-could-mangle 495 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelativ e_filename-could-mangle
258 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling- in-codeunit 496 .. _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-ht ml-report-do-not-align 497 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-ht ml-report-do-not-align
260 .. _tox: http://tox.readthedocs.org/
261
262 498
263 499
264 Version 3.5.2 --- 4 May 2012 500 Version 3.5.2 --- 4 May 2012
265 ---------------------------- 501 ----------------------------
266 502
267 No changes since 3.5.2.b1
268
269
270 Version 3.5.2b1 --- 29 April 2012
271 ---------------------------------
272
273 - The HTML report has slightly tweaked controls: the buttons at the top of 503 - 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. 504 the page are color-coded to the source lines they affect.
275 505
276 - Custom CSS can be applied to the HTML report by specifying a CSS file as 506 - 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. 507 the extra_css configuration value in the [html] section.
278 508
279 - Source files with custom encodings declared in a comment at the top are now 509 - 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 510 properly handled during reporting on Python 2. Python 3 always handled them
281 properly. This fixes `issue 157`_. 511 properly. This fixes `issue 157`_.
282 512
283 - Backup files left behind by editors are no longer collected by the source= 513 - Backup files left behind by editors are no longer collected by the source=
284 option, fixing `issue 168`_. 514 option, fixing `issue 168`_.
285 515
286 - If a file doesn't parse properly as Python, we don't report it as an error 516 - 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 517 if the file name seems like maybe it wasn't meant to be Python. This is a
288 pragmatic fix for `issue 82`_. 518 pragmatic fix for `issue 82`_.
289 519
290 - The ``-m`` switch on ``coverage report``, which includes missing line numbers 520 - 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 521 in the summary report, can now be specified as ``show_missing`` in the
292 config file. Closes `issue 173`_. 522 config file. Closes `issue 173`_.
293 523
294 - When running a module with ``coverage run -m <modulename>``, certain details 524 - When running a module with ``coverage run -m <modulename>``, certain details
295 of the execution environment weren't the same as for 525 of the execution environment weren't the same as for
296 ``python -m <modulename>``. This had the unfortunate side-effect of making 526 ``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 527 ``coverage run -m unittest discover`` not work if you had tests in a
298 directory named "test". This fixes `issue 155`_ and `issue 142`_. 528 directory named "test". This fixes `issue 155`_.
299 529
300 - Now the exit status of your product code is properly used as the process 530 - 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. 531 status when running ``python -m coverage run ...``. Thanks, JT Olds.
302 532
303 - When installing into pypy, we no longer attempt (and fail) to compile 533 - When installing into pypy, we no longer attempt (and fail) to compile
304 the C tracer function, closing `issue 166`_. 534 the C tracer function, closing `issue 166`_.
305 535
306 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene rating-html-report 536 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene rating-html-report
307 .. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-f ile-syspath-is-replaced
308 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage- run-m-unittest-discover 537 .. _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-f iles-with-non-utf-8 538 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-f iles-with-non-utf-8
310 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compil e-c-extension-on-pypy 539 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compil e-c-extension-on-pypy
311 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by -emacs-droppings 540 .. _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-s pecify-show-missing-in 541 .. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-s pecify-show-missing-in
313 542
314 543
315 Version 3.5.1 --- 23 September 2011 544 Version 3.5.1 --- 23 September 2011
316 ----------------------------------- 545 -----------------------------------
317 546
318 - The ``[paths]`` feature unfortunately didn't work in real world situations 547 - When combining data files from parallel runs, you can now instruct
319 where you wanted to, you know, report on the combined data. Now all paths 548 coverage.py about which directories are equivalent on different machines. A
320 stored in the combined file are canonicalized properly. 549 ``[paths]`` section in the configuration file lists paths that are to be
321 550 considered equivalent. Finishes `issue 17`_.
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 551
331 - for-else constructs are understood better, and don't cause erroneous partial 552 - for-else constructs are understood better, and don't cause erroneous partial
332 branch warnings. Fixes `issue 122`_. 553 branch warnings. Fixes `issue 122`_.
333 554
334 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_. 555 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_.
335 556
336 - The number of partial branches reported on the HTML summary page was 557 - 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 558 different than the number reported on the individual file pages. This is
338 now fixed. 559 now fixed.
339 560
340 - An explicit include directive to measure files in the Python installation 561 - An explicit include directive to measure files in the Python installation
341 wouldn't work because of the standard library exclusion. Now the include 562 wouldn't work because of the standard library exclusion. Now the include
342 directive takes precendence, and the files will be measured. Fixes 563 directive takes precedence, and the files will be measured. Fixes
343 `issue 138`_. 564 `issue 138`_.
344 565
345 - The HTML report now handles Unicode characters in Python source files 566 - The HTML report now handles Unicode characters in Python source files
346 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin 567 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin
347 Jeanpierre. 568 Jeanpierre.
348 569
349 - In order to help the core developers measure the test coverage of the 570 - 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 571 standard library, Brandon Rhodes devised an aggressive hack to trick Python
351 into running some coverage code before anything else in the process. 572 into running some coverage.py code before anything else in the process.
352 See the coverage/fullcoverage directory if you are interested. 573 See the coverage/fullcoverage directory if you are interested.
353 574
354 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-cov erage-data-from 575 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-cov erage-data-from
355 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-rep orts-missing-branch 576 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-rep orts-missing-branch
356 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicod e-in-html-reports-in 577 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicod e-in-html-reports-in
357 .. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of- with-statement-in-27 578 .. _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 579 .. _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 580 .. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating- html-output-for
360 581
361 582
362 Version 3.5 --- 29 June 2011 583 Version 3.5 --- 29 June 2011
363 ---------------------------- 584 ----------------------------
364 585
365 - The HTML report hotkeys now behave slightly differently when the current 586 HTML reporting:
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 587
374 - The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``, 588 - 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. 589 ``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, 590 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing,
377 excluded, and partial line markings. You can navigate the highlighted 591 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. 592 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, 593 The ``1`` (one) key jumps to the first highlighted section in the file,
380 and ``0`` (zero) scrolls to the top of the file. 594 and ``0`` (zero) scrolls to the top of the file.
381 595
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 596 - 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 597 produced the HTML reports, and only files whose data has changed will
406 be generated. This should make most HTML reporting faster. 598 be generated. This should make most HTML reporting faster.
407 599
600
601 Running Python files
602
603 - Modules can now be run directly using ``coverage run -m modulename``, to
604 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes.
605
606 - ``coverage run`` didn't emulate Python accurately in one detail: the
607 current directory inserted into ``sys.path`` was relative rather than
608 absolute. This is now fixed.
609
408 - Pathological code execution could disable the trace function behind our 610 - Pathological code execution could disable the trace function behind our
409 backs, leading to incorrect code measurement. Now if this happens, 611 backs, leading to incorrect code measurement. Now if this happens,
410 coverage.py will issue a warning, at least alerting you to the problem. 612 coverage.py will issue a warning, at least alerting you to the problem.
411 Closes `issue 93`_. Thanks to Marius Gedminas for the idea. 613 Closes `issue 93`_. Thanks to Marius Gedminas for the idea.
412 614
413 - The C-based trace function now behaves properly when saved and restored 615 - The C-based trace function now behaves properly when saved and restored
414 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_ 616 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_
415 and `issue 123`_. Thanks, Devin Jeanpierre. 617 and `issue 123`_. Thanks, Devin Jeanpierre.
416 618
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 619 - 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 ...``. 620 the directory name to python: ``python coverage_py_working_dir run ...``.
429 Thanks, Brett Cannon. 621 Thanks, Brett Cannon.
430 622
431 - A little bit of Jython support: `coverage run` can now measure Jython 623 - 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. 624 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 625
436 - Internally, files are now closed explicitly, fixing `issue 104`_. Thanks,
437 Brett Cannon.
438 626
439 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi ng-way-to-know-we-cant 627 Reporting
628
629 - Partial branch warnings can now be pragma'd away. The configuration option
630 ``partial_branches`` is a list of regular expressions. Lines matching any of
631 those expressions will never be marked as a partial branch. In addition,
632 there's a built-in list of regular expressions marking statements which should
633 never be marked as partial. This list includes ``while True:``, ``while 1:``,
634 ``if 1:``, and ``if 0:``.
635
636 - The ``--omit`` and ``--include`` switches now interpret their values more
637 usefully. If the value starts with a wildcard character, it is used as-is.
638 If it does not, it is interpreted relative to the current directory.
639 Closes `issue 121`_.
640
641 - Syntax errors in supposed Python files can now be ignored during reporting
642 with the ``-i`` switch just like other source errors. Closes `issue 115`_.
643
440 .. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object -breaks-coverage 644 .. _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-shoul d-take-a-module-name 645 .. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-shoul d-take-a-module-name
442 .. _issue 104: https://bitbucket.org/ned/coveragepy/issue/104/explicitly-close-f iles
443 .. _issue 107: https://bitbucket.org/ned/coveragepy/issue/107/codeparser-not-ope ning-source-files-with
444 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-wh en-reporting-on-file 646 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-wh en-reporting-on-file
445 .. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns- are-applied-stupidly 647 .. _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-us ed-in-way-that-breaks 648 .. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-us ed-in-way-that-breaks
447 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-d ecoratortoolss-tracing 649 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-d ecoratortoolss-tracing
448 650
449 651
450 Version 3.4 --- 19 September 2010 652 Version 3.4 --- 19 September 2010
451 --------------------------------- 653 ---------------------------------
452 654
453 - The XML report is now sorted by package name, fixing `issue 88`_. 655 Controlling source:
454 656
455 - Programs that exited with ``sys.exit()`` with no argument weren't handled 657 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take
456 properly, producing a coverage.py stack trace. That is now fixed. 658 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_.
457 659
458 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-pack ages-in-random-order 660 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout
661 coverage.py, replaced with `omit`, a list of file name patterns suitable for
662 `fnmatch`. A parallel argument `include` controls what files are included.
459 663
664 - The run command now has a ``--source`` switch, a list of directories or
665 module names. If provided, coverage.py will only measure execution in those
666 source files. The run command also now supports ``--include`` and ``--omit``
667 to control what modules it measures. This can speed execution and reduce the
668 amount of data during reporting. Thanks Zooko.
460 669
461 Version 3.4b2 --- 6 September 2010 670 - The reporting commands (report, annotate, html, and xml) now have an
462 ---------------------------------- 671 ``--include`` switch to restrict reporting to modules matching those file
672 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko.
673
674 Reporting:
463 675
464 - Completely unexecuted files can now be included in coverage results, reported 676 - 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 677 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. 678 coverage.py needs guidance about where to look for source files.
467 679
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-o f-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-rep orted-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-h ave-condition-coverage-attribute-for-lines-with-a
488 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measur ed
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, 680 - 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`_. 681 are now reported as having zero statements instead of one. Fixes `issue 1`_.
525 682
526 - Reports now have a column of missed line counts rather than executed line 683 - 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, 684 counts, since developers should focus on reducing the missed lines to zero,
528 rather than increasing the executed lines to varying targets. Once 685 rather than increasing the executed lines to varying targets. Once
529 suggested, this seemed blindingly obvious. 686 suggested, this seemed blindingly obvious.
530 687
688 - Coverage percentages are now displayed uniformly across reporting methods.
689 Previously, different reports could round percentages differently. Also,
690 percentages are only reported as 0% or 100% if they are truly 0 or 100, and
691 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_.
692
693 - The XML report output now properly includes a percentage for branch coverage,
694 fixing `issue 65`_ and `issue 81`_, and the report is sorted by package
695 name, fixing `issue 88`_.
696
697 - The XML report is now sorted by package name, fixing `issue 88`_.
698
699 - The precision of reported coverage percentages can be set with the
700 ``[report] precision`` config file setting. Completes `issue 16`_.
701
531 - Line numbers in HTML source pages are clickable, linking directly to that 702 - 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 703 line, which is highlighted on arrival. Added a link back to the index page
533 at the bottom of each HTML page. 704 at the bottom of each HTML page.
534 705
706 Execution and measurement:
707
708 - Various warnings are printed to stderr for problems encountered during data
709 measurement: if a ``--source`` module has no Python source to measure, or is
710 never encountered at all, or if no data is collected.
711
712 - Doctest text files are no longer recorded in the coverage data, since they
713 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_.
714
715 - Threads derived from ``threading.Thread`` with an overridden `run` method
716 would report no coverage for the `run` method. This is now fixed, closing
717 `issue 85`_.
718
719 - Programs that exited with ``sys.exit()`` with no argument weren't handled
720 properly, producing a coverage.py stack trace. This is now fixed.
721
535 - Programs that call ``os.fork`` will properly collect data from both the child 722 - 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 723 and parent processes. Use ``coverage run -p`` to get two data files that can
537 be combined with ``coverage combine``. Fixes `issue 56`_. 724 be combined with ``coverage combine``. Fixes `issue 56`_.
538 725
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 726 - 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. 727 being measured when it shouldn't have been. This is now fixed.
544 728
545 - Doctest text files are no longer recorded in the coverage data, since they 729 - Coverage.py can now be run as a module: ``python -m coverage``. Thanks,
546 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. 730 Brett Cannon.
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 731
564 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files -are-reported-as-1-executable 732 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files -are-reported-as-1-executable
733 .. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-o f-accuracy-of-percentage-totals
565 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbin g-handling 734 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbin g-handling
566 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-o mit 735 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-o mit
567 .. _issue 46: http://bitbucket.org/ned/coveragepy/issue/46 736 .. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when- it-isnt-quite-there
568 .. _issue 53: http://bitbucket.org/ned/coveragepy/issue/53
569 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confu ses-source-detection 737 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confu ses-source-detection
570 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56 738 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56/coveragepy-cant-trace -child-processes-of-a
571 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-wor k 739 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-wor k
572 .. _issue 62: http://bitbucket.org/ned/coveragepy/issue/62 740 .. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-rep orted-in-cobertura
573 .. _issue 59: http://bitbucket.org/ned/coveragepy/issue/59/html-report-fails-wit h-int-object-is 741 .. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html- report-disagree-on-coverage
574 .. _issue 82: http://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gener ating-html-report 742 .. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-h ave-condition-coverage-attribute-for-lines-with-a
743 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measur ed
744 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-pack ages-in-random-order
575 745
576 746
577 Version 3.3.1 --- 6 March 2010 747 Version 3.3.1 --- 6 March 2010
578 ------------------------------ 748 ------------------------------
579 749
580 - Using `parallel=True` in .coveragerc file prevented reporting, but now does 750 - Using ``parallel=True`` in a .coveragerc file prevented reporting, but now
581 not, fixing `issue 49`_. 751 does not, fixing `issue 49`_.
582 752
583 - When running your code with "coverage run", if you call `sys.exit()`, 753 - When running your code with ``coverage run``, if you call ``sys.exit()``,
584 coverage.py will exit with that status code, fixing `issue 50`_. 754 coverage.py will exit with that status code, fixing `issue 50`_.
585 755
586 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49 756 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49
587 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50 757 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50
588 758
589 759
590 Version 3.3 --- 24 February 2010 760 Version 3.3 --- 24 February 2010
591 -------------------------------- 761 --------------------------------
592 762
593 - Settings are now read from a .coveragerc file. A specific file can be 763 - 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 764 specified on the command line with ``--rcfile=FILE``. The name of the file
595 be programmatically set with the `config_file` argument to the coverage() 765 can be programmatically set with the ``config_file`` argument to the
596 constructor, or reading a config file can be disabled with 766 coverage() constructor, or reading a config file can be disabled with
597 `config_file=False`. 767 ``config_file=False``.
598
599 - Fixed a problem with nested loops having their branch possibilities
600 mischaracterized: `issue 39`_.
601 768
602 - Added coverage.process_start to enable coverage measurement when Python 769 - Added coverage.process_start to enable coverage measurement when Python
603 starts. 770 starts.
604 771
605 - Parallel data file names now have a random number appended to them in 772 - Parallel data file names now have a random number appended to them in
606 addition to the machine name and process id. 773 addition to the machine name and process id. Also, parallel data files
774 combined with ``coverage combine`` are deleted after they're combined, to
775 clean up unneeded files. Fixes `issue 40`_.
607 776
608 - Parallel data files combined with "coverage combine" are deleted after 777 - Exceptions thrown from product code run with ``coverage run`` are now
609 they're combined, to clean up unneeded files. Fixes `issue 40`_. 778 displayed without internal coverage.py frames, so the output is the same as
779 when the code is run without coverage.py.
610 780
611 - Exceptions thrown from product code run with "coverage run" are now displayed 781 - Fixed `issue 39`_ and `issue 47`_.
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 782
624 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39 783 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39
625 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40 784 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40
626 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47 785 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47
627 786
628 787
629 Version 3.2 --- 5 December 2009 788 Version 3.2 --- 5 December 2009
630 ------------------------------- 789 -------------------------------
631 790
791 - Branch coverage: coverage.py can tell you which branches didn't have both (or
792 all) choices executed, even where the choice doesn't affect which lines were
793 executed. See :ref:`branch` for more details.
794
795 - The table of contents in the HTML report is now sortable: click the headers
796 on any column. The sorting is persisted so that subsequent reports are
797 sorted as you wish. Thanks, `Chris Adams`_.
798
799 - XML reporting has file paths that let Cobertura find the source code, fixing
800 `issue 21`_.
801
802 - The ``--omit`` option now works much better than before, fixing `issue 14`_
803 and `issue 33`_. Thanks, Danek Duvall.
804
632 - Added a ``--version`` option on the command line. 805 - Added a ``--version`` option on the command line.
633 806
807 - Program execution under coverage.py is a few percent faster.
634 808
635 Version 3.2b4 --- 1 December 2009 809 - Some exceptions reported by the command line interface have been cleaned up
636 --------------------------------- 810 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_.
637
638 - Branch coverage improvements:
639
640 - The XML report now includes branch information.
641
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`_.
645
646 - On Python 3.x, setuptools has been replaced by `Distribute`_.
647
648 .. _Distribute: http://packages.python.org/distribute/
649
650
651 Version 3.2b3 --- 23 November 2009
652 ----------------------------------
653
654 - Fixed a memory leak in the C tracer that was introduced in 3.2b1.
655
656 - Branch coverage improvements:
657
658 - Branches to excluded code are ignored.
659
660 - The table of contents in the HTML report is now sortable: click the headers
661 on any column. Thanks, `Chris Adams`_.
662
663 .. _Chris Adams: http://improbable.org/chris/
664
665
666 Version 3.2b2 --- 19 November 2009
667 ----------------------------------
668
669 - Branch coverage improvements:
670
671 - Classes are no longer incorrectly marked as branches: `issue 32`_.
672
673 - "except" clauses with types are no longer incorrectly marked as branches:
674 `issue 35`_.
675 811
676 - Fixed some problems syntax coloring sources with line continuations and 812 - Fixed some problems syntax coloring sources with line continuations and
677 source with tabs: `issue 30`_ and `issue 31`_. 813 source with tabs: `issue 30`_ and `issue 31`_.
678 814
679 - The --omit option now works much better than before, fixing `issue 14`_ and 815 .. _Chris Adams: http://improbable.org/chris/
680 `issue 33`_. Thanks, Danek Duvall. 816 .. _issue 21: http://bitbucket.org/ned/coveragepy/issue/21
681 817 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23
682 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 818 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14
683 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 819 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30
684 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 820 .. _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 821 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33
687 .. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35
688
689
690 Version 3.2b1 --- 10 November 2009
691 ----------------------------------
692
693 - Branch coverage!
694
695 - XML reporting has file paths that let Cobertura find the source code.
696
697 - The tracer code has changed, it's a few percent faster.
698
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`_.
701
702 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23
703 822
704 823
705 Version 3.1 --- 4 October 2009 824 Version 3.1 --- 4 October 2009
706 ------------------------------ 825 ------------------------------
707 826
708 - Source code can now be read from eggs. Thanks, Ross Lawley. Fixes
709 `issue 25`_.
710
711 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25
712
713
714 Version 3.1b1 --- 27 September 2009
715 -----------------------------------
716
717 - Python 3.1 is now supported. 827 - Python 3.1 is now supported.
718 828
719 - Coverage.py has a new command line syntax with sub-commands. This expands 829 - 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 830 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. 831 syntax is still supported. Try ``coverage help`` to see the new commands.
722 Thanks to Ben Finney for early help. 832 Thanks to Ben Finney for early help.
723 833
724 - Added an experimental "coverage xml" command for producing coverage reports 834 - Added an experimental ``coverage xml`` command for producing coverage reports
725 in a Cobertura-compatible XML format. Thanks, Bill Hart. 835 in a Cobertura-compatible XML format. Thanks, Bill Hart.
726 836
727 - Added the --timid option to enable a simpler slower trace function that works 837 - Added the ``--timid`` option to enable a simpler slower trace function that
728 for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ and 838 works for DecoratorTools projects, including TurboGears. Fixed `issue 12`_
729 `issue 13`_. 839 and `issue 13`_.
730
731 - HTML reports show modules from other directories. Fixed `issue 11`_.
732 840
733 - HTML reports now display syntax-colored Python source. 841 - HTML reports now display syntax-colored Python source.
734 842
735 - Programs that change directory will still write .coverage files in the 843 - Added a ``coverage debug`` command for getting diagnostic information about
736 directory where execution started. Fixed `issue 24`_. 844 the coverage.py installation.
737 845
738 - Added a "coverage debug" command for getting diagnostic information about the 846 - Source code can now be read from eggs. Thanks, `Ross Lawley`_. Fixes
739 coverage.py installation. 847 `issue 25`_.
740 848
741 .. _issue 11: http://bitbucket.org/ned/coveragepy/issue/11 849 .. _Ross Lawley: http://agileweb.org/
850 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25
742 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 851 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12
743 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 852 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13
744 .. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24
745 853
746 854
747 Version 3.0.1 --- 7 July 2009 855 Version 3.0.1 --- 7 July 2009
748 ----------------------------- 856 -----------------------------
749 857
750 - Removed the recursion limit in the tracer function. Previously, code that 858 - Removed the recursion limit in the tracer function. Previously, code that
751 ran more than 500 frames deep would crash. Fixed `issue 9`_. 859 ran more than 500 frames deep would crash.
752 860
753 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser 861 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser
754 invocations could be overlooked. Fixed `issue 10`_. 862 invocations could be overlooked.
755 863
756 - On Python 2.3, coverage.py could mis-measure code with exceptions being 864 - On Python 2.3, coverage.py could mis-measure code with exceptions being
757 raised. This is now fixed. 865 raised. This is now fixed.
758 866
759 - The coverage.py code itself will now not be measured by coverage.py, and no 867 - 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 868 coverage.py modules will be mentioned in the nose ``--with-cover`` plugin.
761 `issue 8`_.
762 869
763 - When running source files, coverage.py now opens them in universal newline 870 - 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 871 mode just like Python does. This lets it run Windows files on Mac, for
765 example. 872 example.
766 873
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
770
771 874
772 Version 3.0 --- 13 June 2009 875 Version 3.0 --- 13 June 2009
773 ---------------------------- 876 ----------------------------
774 877
775 - Fixed the way the Python library was ignored. Too much code was being 878 - Coverage.py is now a package rather than a module. Functionality has been
776 excluded the old way. 879 split into classes.
777 880
778 - Tabs are now properly converted in HTML reports. Previously indentation was 881 - HTML reports and annotation of source files: use the new ``-b`` (browser)
779 lost. Fixed `issue 6`_. 882 switch. Thanks to George Song for code, inspiration and guidance.
780 883
781 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes. 884 - The trace function is implemented in C for speed. Coverage.py runs are now
885 much faster. Thanks to David Christian for productive micro-sprints and
886 other encouragement.
782 887
783 .. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6 888 - The minimum supported Python version is 2.3.
784
785
786 Version 3.0b3 --- 16 May 2009
787 -----------------------------
788
789 - Added parameters to coverage.__init__ for options that had been set on the
790 coverage object itself.
791
792 - Added clear_exclude() and get_exclude_list() methods for programmatic
793 manipulation of the exclude regexes.
794
795 - Added coverage.load() to read previously-saved data from the data file.
796
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.
800 889
801 - When using the object API (that is, constructing a coverage() object), data 890 - 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 891 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 892 the ``auto_data=True`` parameter on the coverage() constructor.
804 interface still uses automatic saving. 893 The module-level interface still uses automatic saving.
805
806
807 Version 3.0b --- 30 April 2009
808 ------------------------------
809
810 HTML reporting, and continued refactoring.
811
812 - HTML reports and annotation of source files: use the new -b (browser) switch.
813 Thanks to George Song for code, inspiration and guidance.
814 894
815 - Code in the Python standard library is not measured by default. If you need 895 - 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 896 to measure standard library code, use the ``-L`` command-line switch during
817 execution, or the cover_pylib=True argument to the coverage() constructor. 897 execution, or the ``cover_pylib=True`` argument to the coverage()
898 constructor.
818 899
819 - Source annotation into a directory (-a -d) behaves differently. The 900 - API changes:
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.
823 901
824 - coverage.annotate_file is no longer available. 902 - Added parameters to coverage.__init__ for options that had been set on
903 the coverage object itself.
825 904
826 - Programs executed with -x now behave more as they should, for example, 905 - Added clear_exclude() and get_exclude_list() methods for programmatic
827 __file__ has the correct value. 906 manipulation of the exclude regexes.
828 907
829 - .coverage data files have a new pickle-based format designed for better 908 - Added coverage.load() to read previously-saved data from the data file.
830 extensibility.
831 909
832 - Removed the undocumented cache_file argument to coverage.usecache(). 910 - coverage.annotate_file is no longer available.
833 911
834 912 - Removed the undocumented cache_file argument to coverage.usecache().
835 Version 3.0b1 --- 7 March 2009
836 ------------------------------
837
838 Major overhaul.
839
840 - Coverage is now a package rather than a module. Functionality has been split
841 into classes.
842
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.
846
847 - Executable lines are identified by reading the line number tables in the
848 compiled code, removing a great deal of complicated analysis code.
849
850 - Precisely which lines are considered executable has changed in some cases.
851 Therefore, your coverage stats may also change slightly.
852
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.
856
857 - The minimum supported Python version is 2.3.
858
859
860 Version 2.85 --- 14 September 2008
861 ----------------------------------
862
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.
866
867 - Use os.realpath as part of the fixing of file names so that symlinks won't
868 confuse things. Thanks, Patrick Mezard.
869
870
871 Version 2.80 --- 25 May 2008
872 ----------------------------
873
874 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper.
875
876
877 Version 2.78 --- 30 September 2007
878 ----------------------------------
879
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.
883
884
885 Version 2.77 --- 29 July 2007
886 -----------------------------
887
888 - Better packaging.
889
890
891 Version 2.76 --- 23 July 2007
892 -----------------------------
893
894 - Now Python 2.5 is *really* fully supported: the body of the new with
895 statement is counted as executable.
896
897
898 Version 2.75 --- 22 July 2007
899 -----------------------------
900
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.
905
906
907 Version 2.7 --- 21 July 2007
908 ----------------------------
909
910 - "#pragma: nocover" is excluded by default.
911
912 - Properly ignore docstrings and other constant expressions that appear in the
913 middle of a function, a problem reported by Tim Leslie.
914
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.
918
919 - In reports, ignore code executed from strings, since we can't do anything
920 useful with it anyway.
921
922 - Better file handling on Linux, thanks Guillaume Chazarain.
923
924 - Better shell support on Windows, thanks Noel O'Boyle.
925
926 - Python 2.2 support maintained, thanks Catherine Proulx.
927
928 - Minor changes to avoid lint warnings.
929
930
931 Version 2.6 --- 23 August 2006
932 ------------------------------
933
934 - Applied Joseph Tate's patch for function decorators.
935
936 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling.
937
938 - Applied Geoff Bache's parallel mode patch.
939
940 - Refactorings to improve testability. Fixes to command-line logic for parallel
941 mode and collect.
942
943
944 Version 2.5 --- 4 December 2005
945 -------------------------------
946
947 - Call threading.settrace so that all threads are measured. Thanks Martin
948 Fuzzey.
949
950 - Add a file argument to report so that reports can be captured to a different
951 destination.
952
953 - coverage.py can now measure itself.
954
955 - Adapted Greg Rogers' patch for using relative file names, and sorting and
956 omitting files to report on.
957
958
959 Version 2.2 --- 31 December 2004
960 --------------------------------
961
962 - Allow for keyword arguments in the module global functions. Thanks, Allen.
963
964
965 Version 2.1 --- 14 December 2004
966 --------------------------------
967
968 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global
969 for 'annotate', and factor it, adding 'annotate_file'.
970
971
972 Version 2.0 --- 12 December 2004
973 --------------------------------
974
975 Significant code changes.
976
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.
980
981 - Lines can be excluded from consideration, even entire suites of lines.
982
983 - The file system cache of covered lines can be disabled programmatically.
984
985 - Modernized the code.
986
987
988 Earlier History
989 ---------------
990
991 2001-12-04 GDR Created.
992
993 2001-12-06 GDR Added command-line interface and source code annotation.
994
995 2001-12-09 GDR Moved design and interface to separate documents.
996
997 2001-12-10 GDR Open cache file as binary on Windows. Allow simultaneous -e and
998 -x, or -a and -r.
999
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.
1002
1003 2001-12-13 GDR Improved speed while recording. Portable between Python 1.5.2
1004 and 2.1.1.
1005
1006 2002-01-03 GDR Module-level functions work correctly.
1007
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.
OLDNEW
« no previous file with comments | « tools/telemetry/third_party/coverage/doc/branch.rst ('k') | tools/telemetry/third_party/coverage/doc/cmd.rst » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698