1.. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 2.. For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt 3 4============================== 5Change history for Coverage.py 6============================== 7 8 9Version 4.0.3, 24 November 2015 10------------------------------- 11 12- Fixed a mysterious problem that manifested in different ways: sometimes 13 hanging the process (`issue 420`_), sometimes making database connections 14 fail (`issue 445`_). 15 16- The XML report now has correct ``<source>`` elements when using a 17 ``--source=`` option somewhere besides the current directory. This fixes 18 `issue 439`_. Thanks, Arcady Ivanov. 19 20- Fixed an unusual edge case of detecting source encodings, described in 21 `issue 443`_. 22 23- Help messages that mention the command to use now properly use the actual 24 command name, which might be different than "coverage". Thanks to Ben Finney, 25 this closes `issue 438`_. 26 27.. _issue 420: https://bitbucket.org/ned/coveragepy/issues/420/coverage-40-hangs-indefinitely-on-python27 28.. _issue 438: https://bitbucket.org/ned/coveragepy/issues/438/parameterise-coverage-command-name 29.. _issue 439: https://bitbucket.org/ned/coveragepy/issues/439/incorrect-cobertura-file-sources-generated 30.. _issue 443: https://bitbucket.org/ned/coveragepy/issues/443/coverage-gets-confused-when-encoding 31.. _issue 445: https://bitbucket.org/ned/coveragepy/issues/445/django-app-cannot-connect-to-cassandra 32 33 34Version 4.0.2 --- 4 November 2015 35--------------------------------- 36 37- More work on supporting unusually encoded source. Fixed `issue 431`_. 38 39- Files or directories with non-ASCII characters are now handled properly, 40 fixing `issue 432`_. 41 42- Setting a trace function with sys.settrace was broken by a change in 4.0.1, 43 as reported in `issue 436`_. This is now fixed. 44 45- Officially support PyPy 4.0, which required no changes, just updates to the 46 docs. 47 48.. _issue 431: https://bitbucket.org/ned/coveragepy/issues/431/couldnt-parse-python-file-with-cp1252 49.. _issue 432: https://bitbucket.org/ned/coveragepy/issues/432/path-with-unicode-characters-various 50.. _issue 436: https://bitbucket.org/ned/coveragepy/issues/436/disabled-coverage-ctracer-may-rise-from 51 52 53Version 4.0.1 --- 13 October 2015 54--------------------------------- 55 56- When combining data files, unreadable files will now generate a warning 57 instead of failing the command. This is more in line with the older 58 coverage.py v3.7.1 behavior, which silently ignored unreadable files. 59 Prompted by `issue 418`_. 60 61- The --skip-covered option would skip reporting on 100% covered files, but 62 also skipped them when calculating total coverage. This was wrong, it should 63 only remove lines from the report, not change the final answer. This is now 64 fixed, closing `issue 423`_. 65 66- In 4.0, the data file recorded a summary of the system on which it was run. 67 Combined data files would keep all of those summaries. This could lead to 68 enormous data files consisting of mostly repetitive useless information. That 69 summary is now gone, fixing `issue 415`_. If you want summary information, 70 get in touch, and we'll figure out a better way to do it. 71 72- Test suites that mocked os.path.exists would experience strange failures, due 73 to coverage.py using their mock inadvertently. This is now fixed, closing 74 `issue 416`_. 75 76- Importing a ``__init__`` module explicitly would lead to an error: 77 ``AttributeError: 'module' object has no attribute '__path__'``, as reported 78 in `issue 410`_. This is now fixed. 79 80- Code that uses ``sys.settrace(sys.gettrace())`` used to incur a more than 2x 81 speed penalty. Now there's no penalty at all. Fixes `issue 397`_. 82 83- Pyexpat C code will no longer be recorded as a source file, fixing 84 `issue 419`_. 85 86- The source kit now contains all of the files needed to have a complete source 87 tree, re-fixing `issue 137`_ and closing `issue 281`_. 88 89.. _issue 281: https://bitbucket.org/ned/coveragepy/issues/281/supply-scripts-for-testing-in-the 90.. _issue 397: https://bitbucket.org/ned/coveragepy/issues/397/stopping-and-resuming-coverage-with 91.. _issue 410: https://bitbucket.org/ned/coveragepy/issues/410/attributeerror-module-object-has-no 92.. _issue 415: https://bitbucket.org/ned/coveragepy/issues/415/repeated-coveragedataupdates-cause 93.. _issue 416: https://bitbucket.org/ned/coveragepy/issues/416/mocking-ospathexists-causes-failures 94.. _issue 418: https://bitbucket.org/ned/coveragepy/issues/418/json-parse-error 95.. _issue 419: https://bitbucket.org/ned/coveragepy/issues/419/nosource-no-source-for-code-path-to-c 96.. _issue 423: https://bitbucket.org/ned/coveragepy/issues/423/skip_covered-changes-reported-total 97 98 99Version 4.0 --- 20 September 2015 100--------------------------------- 101 102No changes from 4.0b3 103 104 105Version 4.0b3 --- 7 September 2015 106---------------------------------- 107 108- Reporting on an unmeasured file would fail with a traceback. This is now 109 fixed, closing `issue 403`_. 110 111- The Jenkins ShiningPanda plugin looks for an obsolete file name to find the 112 HTML reports to publish, so it was failing under coverage.py 4.0. Now we 113 create that file if we are running under Jenkins, to keep things working 114 smoothly. `issue 404`_. 115 116- Kits used to include tests and docs, but didn't install them anywhere, or 117 provide all of the supporting tools to make them useful. Kits no longer 118 include tests and docs. If you were using them from the older packages, get 119 in touch and help me understand how. 120 121.. _issue 403: https://bitbucket.org/ned/coveragepy/issues/403/hasherupdate-fails-with-typeerror-nonetype 122.. _issue 404: https://bitbucket.org/ned/coveragepy/issues/404/shiningpanda-jenkins-plugin-cant-find-html 123 124 125 126Version 4.0b2 --- 22 August 2015 127-------------------------------- 128 129- 4.0b1 broke --append creating new data files. This is now fixed, closing 130 `issue 392`_. 131 132- ``py.test --cov`` can write empty data, then touch files due to ``--source``, 133 which made coverage.py mistakenly force the data file to record lines instead 134 of arcs. This would lead to a "Can't combine line data with arc data" error 135 message. This is now fixed, and changed some method names in the 136 CoverageData interface. Fixes `issue 399`_. 137 138- `CoverageData.read_fileobj` and `CoverageData.write_fileobj` replace the 139 `.read` and `.write` methods, and are now properly inverses of each other. 140 141- When using ``report --skip-covered``, a message will now be included in the 142 report output indicating how many files were skipped, and if all files are 143 skipped, coverage.py won't accidentally scold you for having no data to 144 report. Thanks, Krystian Kichewko. 145 146- A new conversion utility has been added: ``python -m coverage.pickle2json`` 147 will convert v3.x pickle data files to v4.x JSON data files. Thanks, 148 Alexander Todorov. Closes `issue 395`_. 149 150- A new version identifier is available, `coverage.version_info`, a plain tuple 151 of values similar to `sys.version_info`_. 152 153.. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file 154.. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for 155.. _issue 399: https://bitbucket.org/ned/coveragepy/issues/399/coverageexception-cant-combine-line-data 156.. _sys.version_info: https://docs.python.org/3/library/sys.html#sys.version_info 157 158 159Version 4.0b1 --- 2 August 2015 160------------------------------- 161 162- Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for 163 details. Closes `issue 313`_. 164 165- The data storage has been completely revamped. The data file is now 166 JSON-based instead of a pickle, closing `issue 236`_. The `CoverageData` 167 class is now a public supported documented API to the data file. 168 169- A new configuration option, ``[run] note``, lets you set a note that will be 170 stored in the `runs` section of the data file. You can use this to annotate 171 the data file with any information you like. 172 173- Unrecognized configuration options will now print an error message and stop 174 coverage.py. This should help prevent configuration mistakes from passing 175 silently. Finishes `issue 386`_. 176 177- In parallel mode, ``coverage erase`` will now delete all of the data files, 178 fixing `issue 262`_. 179 180- Coverage.py now accepts a directory name for ``coverage run`` and will run a 181 ``__main__.py`` found there, just like Python will. Fixes `issue 252`_. 182 Thanks, Dmitry Trofimov. 183 184- The XML report now includes a ``missing-branches`` attribute. Thanks, Steve 185 Peak. This is not a part of the Cobertura DTD, so the XML report no longer 186 references the DTD. 187 188- Missing branches in the HTML report now have a bit more information in the 189 right-hand annotations. Hopefully this will make their meaning clearer. 190 191- All the reporting functions now behave the same if no data had been 192 collected, exiting with a status code of 1. Fixed ``fail_under`` to be 193 applied even when the report is empty. Thanks, Ionel Cristian Mărieș. 194 195- Plugins are now initialized differently. Instead of looking for a class 196 called ``Plugin``, coverage.py looks for a function called ``coverage_init``. 197 198- A file-tracing plugin can now ask to have built-in Python reporting by 199 returning `"python"` from its `file_reporter()` method. 200 201- Code that was executed with `exec` would be mis-attributed to the file that 202 called it. This is now fixed, closing `issue 380`_. 203 204- The ability to use item access on `Coverage.config` (introduced in 4.0a2) has 205 been changed to a more explicit `Coverage.get_option` and 206 `Coverage.set_option` API. 207 208- The ``Coverage.use_cache`` method is no longer supported. 209 210- The private method ``Coverage._harvest_data`` is now called 211 ``Coverage.get_data``, and returns the ``CoverageData`` containing the 212 collected data. 213 214- The project is consistently referred to as "coverage.py" throughout the code 215 and the documentation, closing `issue 275`_. 216 217- Combining data files with an explicit configuration file was broken in 4.0a6, 218 but now works again, closing `issue 385`_. 219 220- ``coverage combine`` now accepts files as well as directories. 221 222- The speed is back to 3.7.1 levels, after having slowed down due to plugin 223 support, finishing up `issue 387`_. 224 225.. _issue 236: https://bitbucket.org/ned/coveragepy/issues/236/pickles-are-bad-and-you-should-feel-bad 226.. _issue 252: https://bitbucket.org/ned/coveragepy/issues/252/coverage-wont-run-a-program-with 227.. _issue 262: https://bitbucket.org/ned/coveragepy/issues/262/when-parallel-true-erase-should-erase-all 228.. _issue 275: https://bitbucket.org/ned/coveragepy/issues/275/refer-consistently-to-project-as-coverage 229.. _issue 313: https://bitbucket.org/ned/coveragepy/issues/313/add-license-file-containing-2-3-or-4 230.. _issue 380: https://bitbucket.org/ned/coveragepy/issues/380/code-executed-by-exec-excluded-from 231.. _issue 385: https://bitbucket.org/ned/coveragepy/issues/385/coverage-combine-doesnt-work-with-rcfile 232.. _issue 386: https://bitbucket.org/ned/coveragepy/issues/386/error-on-unrecognised-configuration 233.. _issue 387: https://bitbucket.org/ned/coveragepy/issues/387/performance-degradation-from-371-to-40 234 235.. 40 issues closed in 4.0 below here 236 237 238Version 4.0a6 --- 21 June 2015 239------------------------------ 240 241- Python 3.5b2 and PyPy 2.6.0 are supported. 242 243- The original module-level function interface to coverage.py is no longer 244 supported. You must now create a ``coverage.Coverage`` object, and use 245 methods on it. 246 247- The ``coverage combine`` command now accepts any number of directories as 248 arguments, and will combine all the data files from those directories. This 249 means you don't have to copy the files to one directory before combining. 250 Thanks, Christine Lytwynec. Finishes `issue 354`_. 251 252- Branch coverage couldn't properly handle certain extremely long files. This 253 is now fixed (`issue 359`_). 254 255- Branch coverage didn't understand yield statements properly. Mickie Betz 256 persisted in pursuing this despite Ned's pessimism. Fixes `issue 308`_ and 257 `issue 324`_. 258 259- The COVERAGE_DEBUG environment variable can be used to set the ``[run] debug`` 260 configuration option to control what internal operations are logged. 261 262- HTML reports were truncated at formfeed characters. This is now fixed 263 (`issue 360`_). It's always fun when the problem is due to a `bug in the 264 Python standard library <http://bugs.python.org/issue19035>`_. 265 266- Files with incorrect encoding declaration comments are no longer ignored by 267 the reporting commands, fixing `issue 351`_. 268 269- HTML reports now include a timestamp in the footer, closing `issue 299`_. 270 Thanks, Conrad Ho. 271 272- HTML reports now begrudgingly use double-quotes rather than single quotes, 273 because there are "software engineers" out there writing tools that read HTML 274 and somehow have no idea that single quotes exist. Capitulates to the absurd 275 `issue 361`_. Thanks, Jon Chappell. 276 277- The ``coverage annotate`` command now handles non-ASCII characters properly, 278 closing `issue 363`_. Thanks, Leonardo Pistone. 279 280- Drive letters on Windows were not normalized correctly, now they are. Thanks, 281 Ionel Cristian Mărieș. 282 283- Plugin support had some bugs fixed, closing `issue 374`_ and `issue 375`_. 284 Thanks, Stefan Behnel. 285 286.. _issue 299: https://bitbucket.org/ned/coveragepy/issue/299/inserted-created-on-yyyy-mm-dd-hh-mm-in 287.. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branch-coverage 288.. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-confuses-branch-coverage 289.. _issue 351: https://bitbucket.org/ned/coveragepy/issue/351/files-with-incorrect-encoding-are-ignored 290.. _issue 354: https://bitbucket.org/ned/coveragepy/issue/354/coverage-combine-should-take-a-list-of 291.. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-error 292.. _issue 360: https://bitbucket.org/ned/coveragepy/issue/360/html-reports-get-confused-by-l-in-the-code 293.. _issue 361: https://bitbucket.org/ned/coveragepy/issue/361/use-double-quotes-in-html-output-to 294.. _issue 363: https://bitbucket.org/ned/coveragepy/issue/363/annotate-command-hits-unicode-happy-fun 295.. _issue 374: https://bitbucket.org/ned/coveragepy/issue/374/c-tracer-lookups-fail-in 296.. _issue 375: https://bitbucket.org/ned/coveragepy/issue/375/ctracer_handle_return-reads-byte-code 297 298 299Version 4.0a5 --- 16 February 2015 300---------------------------------- 301 302- Plugin support is now implemented in the C tracer instead of the Python 303 tracer. This greatly improves the speed of tracing projects using plugins. 304 305- Coverage.py now always adds the current directory to sys.path, so that 306 plugins can import files in the current directory (`issue 358`_). 307 308- If the `config_file` argument to the Coverage constructor is specified as 309 ".coveragerc", it is treated as if it were True. This means setup.cfg is 310 also examined, and a missing file is not considered an error (`issue 357`_). 311 312- Wildly experimental: support for measuring processes started by the 313 multiprocessing module. To use, set ``--concurrency=multiprocessing``, 314 either on the command line or in the .coveragerc file (`issue 117`_). Thanks, 315 Eduardo Schettino. Currently, this does not work on Windows. 316 317- A new warning is possible, if a desired file isn't measured because it was 318 imported before coverage.py was started (`issue 353`_). 319 320- The `coverage.process_startup` function now will start coverage measurement 321 only once, no matter how many times it is called. This fixes problems due 322 to unusual virtualenv configurations (`issue 340`_). 323 324- Added 3.5.0a1 to the list of supported CPython versions. 325 326.. _issue 117: https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by 327.. _issue 340: https://bitbucket.org/ned/coveragepy/issue/340/keyerror-subpy 328.. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case 329.. _issue 357: https://bitbucket.org/ned/coveragepy/issue/357/behavior-changed-when-coveragerc-is 330.. _issue 358: https://bitbucket.org/ned/coveragepy/issue/358/all-coverage-commands-should-adjust 331 332 333Version 4.0a4 --- 25 January 2015 334--------------------------------- 335 336- Plugins can now provide sys_info for debugging output. 337 338- Started plugins documentation. 339 340- Prepared to move the docs to readthedocs.org. 341 342 343Version 4.0a3 --- 20 January 2015 344--------------------------------- 345 346- Reports now use file names with extensions. Previously, a report would 347 describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows 348 for better support of non-Python files, and also fixed `issue 69`_. 349 350- The XML report now reports each directory as a package again. This was a bad 351 regression, I apologize. This was reported in `issue 235`_, which is now 352 fixed. 353 354- A new configuration option for the XML report: ``[xml] package_depth`` 355 controls which directories are identified as packages in the report. 356 Directories deeper than this depth are not reported as packages. 357 The default is that all directories are reported as packages. 358 Thanks, Lex Berezhny. 359 360- When looking for the source for a frame, check if the file exists. On 361 Windows, .pyw files are no longer recorded as .py files. Along the way, this 362 fixed `issue 290`_. 363 364- Empty files are now reported as 100% covered in the XML report, not 0% 365 covered (`issue 345`_). 366 367- Regexes in the configuration file are now compiled as soon as they are read, 368 to provide error messages earlier (`issue 349`_). 369 370.. _issue 69: https://bitbucket.org/ned/coveragepy/issue/69/coverage-html-overwrite-files-that-doesnt 371.. _issue 235: https://bitbucket.org/ned/coveragepy/issue/235/package-name-is-missing-in-xml-report 372.. _issue 290: https://bitbucket.org/ned/coveragepy/issue/290/running-programmatically-with-pyw-files 373.. _issue 345: https://bitbucket.org/ned/coveragepy/issue/345/xml-reports-line-rate-0-for-empty-files 374.. _issue 349: https://bitbucket.org/ned/coveragepy/issue/349/bad-regex-in-config-should-get-an-earlier 375 376 377Version 4.0a2 --- 14 January 2015 378--------------------------------- 379 380- Officially support PyPy 2.4, and PyPy3 2.4. Drop support for 381 CPython 3.2 and older versions of PyPy. The code won't work on CPython 3.2. 382 It will probably still work on older versions of PyPy, but I'm not testing 383 against them. 384 385- Plugins! 386 387- The original command line switches (`-x` to run a program, etc) are no 388 longer supported. 389 390- A new option: `coverage report --skip-covered` will reduce the number of 391 files reported by skipping files with 100% coverage. Thanks, Krystian 392 Kichewko. This means that empty `__init__.py` files will be skipped, since 393 they are 100% covered, closing `issue 315`_. 394 395- You can now specify the ``--fail-under`` option in the ``.coveragerc`` file 396 as the ``[report] fail_under`` option. This closes `issue 314`_. 397 398- The ``COVERAGE_OPTIONS`` environment variable is no longer supported. It was 399 a hack for ``--timid`` before configuration files were available. 400 401- The HTML report now has filtering. Type text into the Filter box on the 402 index page, and only modules with that text in the name will be shown. 403 Thanks, Danny Allen. 404 405- The textual report and the HTML report used to report partial branches 406 differently for no good reason. Now the text report's "missing branches" 407 column is a "partial branches" column so that both reports show the same 408 numbers. This closes `issue 342`_. 409 410- If you specify a ``--rcfile`` that cannot be read, you will get an error 411 message. Fixes `issue 343`_. 412 413- The ``--debug`` switch can now be used on any command. 414 415- You can now programmatically adjust the configuration of coverage.py by 416 setting items on `Coverage.config` after construction. 417 418- A module run with ``-m`` can be used as the argument to ``--source``, fixing 419 `issue 328`_. Thanks, Buck Evan. 420 421- The regex for matching exclusion pragmas has been fixed to allow more kinds 422 of whitespace, fixing `issue 334`_. 423 424- Made some PyPy-specific tweaks to improve speed under PyPy. Thanks, Alex 425 Gaynor. 426 427- In some cases, with a source file missing a final newline, coverage.py would 428 count statements incorrectly. This is now fixed, closing `issue 293`_. 429 430- The status.dat file that HTML reports use to avoid re-creating files that 431 haven't changed is now a JSON file instead of a pickle file. This obviates 432 `issue 287`_ and `issue 237`_. 433 434.. _issue 237: https://bitbucket.org/ned/coveragepy/issue/237/htmlcov-with-corrupt-statusdat 435.. _issue 287: https://bitbucket.org/ned/coveragepy/issue/287/htmlpy-doesnt-specify-pickle-protocol 436.. _issue 293: https://bitbucket.org/ned/coveragepy/issue/293/number-of-statement-detection-wrong-if-no 437.. _issue 314: https://bitbucket.org/ned/coveragepy/issue/314/fail_under-param-not-working-in-coveragerc 438.. _issue 315: https://bitbucket.org/ned/coveragepy/issue/315/option-to-omit-empty-files-eg-__init__py 439.. _issue 328: https://bitbucket.org/ned/coveragepy/issue/328/misbehavior-in-run-source 440.. _issue 334: https://bitbucket.org/ned/coveragepy/issue/334/pragma-not-recognized-if-tab-character 441.. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-coverage-reports-differ 442.. _issue 343: https://bitbucket.org/ned/coveragepy/issue/343/an-explicitly-named-non-existent-config 443 444 445Version 4.0a1 --- 27 September 2014 446----------------------------------- 447 448- Python versions supported are now CPython 2.6, 2.7, 3.2, 3.3, and 3.4, and 449 PyPy 2.2. 450 451- Gevent, eventlet, and greenlet are now supported, closing `issue 149`_. 452 The ``concurrency`` setting specifies the concurrency library in use. Huge 453 thanks to Peter Portante for initial implementation, and to Joe Jevnik for 454 the final insight that completed the work. 455 456- Options are now also read from a setup.cfg file, if any. Sections are 457 prefixed with "coverage:", so the ``[run]`` options will be read from the 458 ``[coverage:run]`` section of setup.cfg. Finishes `issue 304`_. 459 460- The ``report -m`` command can now show missing branches when reporting on 461 branch coverage. Thanks, Steve Leonard. Closes `issue 230`_. 462 463- The XML report now contains a <source> element, fixing `issue 94`_. Thanks 464 Stan Hu. 465 466- The class defined in the coverage module is now called ``Coverage`` instead 467 of ``coverage``, though the old name still works, for backward compatibility. 468 469- The ``fail-under`` value is now rounded the same as reported results, 470 preventing paradoxical results, fixing `issue 284`_. 471 472- The XML report will now create the output directory if need be, fixing 473 `issue 285`_. Thanks, Chris Rose. 474 475- HTML reports no longer raise UnicodeDecodeError if a Python file has 476 undecodable characters, fixing `issue 303`_ and `issue 331`_. 477 478- The annotate command will now annotate all files, not just ones relative to 479 the current directory, fixing `issue 57`_. 480 481- The coverage module no longer causes deprecation warnings on Python 3.4 by 482 importing the imp module, fixing `issue 305`_. 483 484- Encoding declarations in source files are only considered if they are truly 485 comments. Thanks, Anthony Sottile. 486 487.. _issue 57: https://bitbucket.org/ned/coveragepy/issue/57/annotate-command-fails-to-annotate-many 488.. _issue 94: https://bitbucket.org/ned/coveragepy/issue/94/coverage-xml-doesnt-produce-sources 489.. _issue 149: https://bitbucket.org/ned/coveragepy/issue/149/coverage-gevent-looks-broken 490.. _issue 230: https://bitbucket.org/ned/coveragepy/issue/230/show-line-no-for-missing-branches-in 491.. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-show-more-precision 492.. _issue 285: https://bitbucket.org/ned/coveragepy/issue/285/xml-report-fails-if-output-file-directory 493.. _issue 303: https://bitbucket.org/ned/coveragepy/issue/303/unicodedecodeerror 494.. _issue 304: https://bitbucket.org/ned/coveragepy/issue/304/attempt-to-get-configuration-from-setupcfg 495.. _issue 305: https://bitbucket.org/ned/coveragepy/issue/305/pendingdeprecationwarning-the-imp-module 496.. _issue 331: https://bitbucket.org/ned/coveragepy/issue/331/failure-of-encoding-detection-on-python2 497 498 499Version 3.7.1 --- 13 December 2013 500---------------------------------- 501 502- Improved the speed of HTML report generation by about 20%. 503 504- Fixed the mechanism for finding OS-installed static files for the HTML report 505 so that it will actually find OS-installed static files. 506 507 508Version 3.7 --- 6 October 2013 509------------------------------ 510 511- Added the ``--debug`` switch to ``coverage run``. It accepts a list of 512 options indicating the type of internal activity to log to stderr. 513 514- Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_. 515 516- Running code with ``coverage run -m`` now behaves more like Python does, 517 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_. 518 519- Coverage.py can now run .pyc files directly, closing `issue 264`_. 520 521- Coverage.py properly supports .pyw files, fixing `issue 261`_. 522 523- Omitting files within a tree specified with the ``source`` option would 524 cause them to be incorrectly marked as unexecuted, as described in 525 `issue 218`_. This is now fixed. 526 527- When specifying paths to alias together during data combining, you can now 528 specify relative paths, fixing `issue 267`_. 529 530- Most file paths can now be specified with username expansion (``~/src``, or 531 ``~build/src``, for example), and with environment variable expansion 532 (``build/$BUILDNUM/src``). 533 534- Trying to create an XML report with no files to report on, would cause a 535 ZeroDivideError, but no longer does, fixing `issue 250`_. 536 537- When running a threaded program under the Python tracer, coverage.py no 538 longer issues a spurious warning about the trace function changing: "Trace 539 function changed, measurement is likely wrong: None." This fixes `issue 540 164`_. 541 542- Static files necessary for HTML reports are found in system-installed places, 543 to ease OS-level packaging of coverage.py. Closes `issue 259`_. 544 545- Source files with encoding declarations, but a blank first line, were not 546 decoded properly. Now they are. Thanks, Roger Hu. 547 548- The source kit now includes the ``__main__.py`` file in the root coverage 549 directory, fixing `issue 255`_. 550 551.. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-arent-treated-properly-in 552.. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-changed-warning-when-using 553.. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-gets-confused-in-certain 554.. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-module-or-package-in 555.. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-level-package-doesnt-work 556.. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-not-respect-the-omit-flag 557.. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivisionerror-when-generating 558.. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__main__py-not-included-in 559.. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-system-installed-third-party 560.. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-reported-properly 561.. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files 562.. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work 563 564 565Version 3.6 --- 5 January 2013 566------------------------------ 567 568- Added a page to the docs about troublesome situations, closing `issue 226`_, 569 and added some info to the TODO file, closing `issue 227`_. 570 571.. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-section-to-describe-when 572.. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo 573 574 575Version 3.6b3 --- 29 December 2012 576---------------------------------- 577 578- Beta 2 broke the nose plugin. It's fixed again, closing `issue 224`_. 579 580.. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexcover 581 582 583Version 3.6b2 --- 23 December 2012 584---------------------------------- 585 586- Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1. 587 588- The C extension is optionally compiled using a different more widely-used 589 technique, taking another stab at fixing `issue 80`_ once and for all. 590 591- Combining data files would create entries for phantom files if used with 592 ``source`` and path aliases. It no longer does. 593 594- ``debug sys`` now shows the configuration file path that was read. 595 596- If an oddly-behaved package claims that code came from an empty-string 597 file name, coverage.py no longer associates it with the directory name, 598 fixing `issue 221`_. 599 600.. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp 601 602 603Version 3.6b1 --- 28 November 2012 604---------------------------------- 605 606- Wildcards in ``include=`` and ``omit=`` arguments were not handled properly 607 in reporting functions, though they were when running. Now they are handled 608 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible 609 that your configurations may now be incorrect. If you use ``include`` or 610 ``omit`` during reporting, whether on the command line, through the API, or 611 in a configuration file, please check carefully that you were not relying on 612 the old broken behavior. 613 614- The **report**, **html**, and **xml** commands now accept a ``--fail-under`` 615 switch that indicates in the exit status whether the coverage percentage was 616 less than a particular value. Closes `issue 139`_. 617 618- The reporting functions coverage.report(), coverage.html_report(), and 619 coverage.xml_report() now all return a float, the total percentage covered 620 measurement. 621 622- The HTML report's title can now be set in the configuration file, with the 623 ``--title`` switch on the command line, or via the API. 624 625- Configuration files now support substitution of environment variables, using 626 syntax like ``${WORD}``. Closes `issue 97`_. 627 628- Embarrassingly, the ``[xml] output=`` setting in the .coveragerc file simply 629 didn't work. Now it does. 630 631- The XML report now consistently uses file names for the file name attribute, 632 rather than sometimes using module names. Fixes `issue 67`_. 633 Thanks, Marcus Cobden. 634 635- Coverage percentage metrics are now computed slightly differently under 636 branch coverage. This means that completely unexecuted files will now 637 correctly have 0% coverage, fixing `issue 156`_. This also means that your 638 total coverage numbers will generally now be lower if you are measuring 639 branch coverage. 640 641- When installing, now in addition to creating a "coverage" command, two new 642 aliases are also installed. A "coverage2" or "coverage3" command will be 643 created, depending on whether you are installing in Python 2.x or 3.x. 644 A "coverage-X.Y" command will also be created corresponding to your specific 645 version of Python. Closes `issue 111`_. 646 647- The coverage.py installer no longer tries to bootstrap setuptools or 648 Distribute. You must have one of them installed first, as `issue 202`_ 649 recommended. 650 651- The coverage.py kit now includes docs (closing `issue 137`_) and tests. 652 653- On Windows, files are now reported in their correct case, fixing `issue 89`_ 654 and `issue 203`_. 655 656- If a file is missing during reporting, the path shown in the error message 657 is now correct, rather than an incorrect path in the current directory. 658 Fixes `issue 60`_. 659 660- Running an HTML report in Python 3 in the same directory as an old Python 2 661 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_) 662 is now fixed. 663 664- Fixed yet another error trying to parse non-Python files as Python, this 665 time an IndentationError, closing `issue 82`_ for the fourth time... 666 667- If `coverage xml` fails because there is no data to report, it used to 668 create a zero-length XML file. Now it doesn't, fixing `issue 210`_. 669 670- Jython files now work with the ``--source`` option, fixing `issue 100`_. 671 672- Running coverage.py under a debugger is unlikely to work, but it shouldn't 673 fail with "TypeError: 'NoneType' object is not iterable". Fixes `issue 674 201`_. 675 676- On some Linux distributions, when installed with the OS package manager, 677 coverage.py would report its own code as part of the results. Now it won't, 678 fixing `issue 214`_, though this will take some time to be repackaged by the 679 operating systems. 680 681- Docstrings for the legacy singleton methods are more helpful. Thanks Marius 682 Gedminas. Closes `issue 205`_. 683 684- The pydoc tool can now show documentation for the class `coverage.coverage`. 685 Closes `issue 206`_. 686 687- Added a page to the docs about contributing to coverage.py, closing 688 `issue 171`_. 689 690- When coverage.py ended unsuccessfully, it may have reported odd errors like 691 ``'NoneType' object has no attribute 'isabs'``. It no longer does, 692 so kiss `issue 153`_ goodbye. 693 694.. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files 695.. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated 696.. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in 697.. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be 698.. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages 699.. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not 700.. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution 701.. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-certain-coverage-in-tests 702.. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-to-work-in-coverage 703.. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filename-triggers 704.. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexecuted-file-shows-14 705.. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-include-and-omit-filename 706.. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-and-run-tests 707.. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror-on-htmlpy 708.. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-django-14-with-pydb-on 709.. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setuppy-and 710.. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filenames-reported-when-filename 711.. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverage-more-friendly 712.. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecoverage-fails-with-an-error 713.. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-coverage-data-coverage-xml 714.. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measures-itself-on-precise 715 716 717Version 3.5.3 --- 29 September 2012 718----------------------------------- 719 720- Line numbers in the HTML report line up better with the source lines, fixing 721 `issue 197`_, thanks Marius Gedminas. 722 723- When specifying a directory as the source= option, the directory itself no 724 longer needs to have a ``__init__.py`` file, though its sub-directories do, 725 to be considered as source files. 726 727- Files encoded as UTF-8 with a BOM are now properly handled, fixing 728 `issue 179`_. Thanks, Pablo Carballo. 729 730- Fixed more cases of non-Python files being reported as Python source, and 731 then not being able to parse them as Python. Closes `issue 82`_ (again). 732 Thanks, Julian Berman. 733 734- Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_. 735 736- Optimized .pyo files may not have been handled correctly, `issue 195`_. 737 Thanks, Marius Gedminas. 738 739- Certain unusually named file paths could have been mangled during reporting, 740 `issue 194`_. Thanks, Marius Gedminas. 741 742- Try to do a better job of the impossible task of detecting when we can't 743 build the C extension, fixing `issue 183`_. 744 745- Testing is now done with `tox`_, thanks, Marc Abramowitz. 746 747.. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer 748.. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is 749.. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23 750.. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle 751.. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit 752.. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align 753.. _tox: http://tox.readthedocs.org/ 754 755 756Version 3.5.2 --- 4 May 2012 757---------------------------- 758 759No changes since 3.5.2.b1 760 761 762Version 3.5.2b1 --- 29 April 2012 763--------------------------------- 764 765- The HTML report has slightly tweaked controls: the buttons at the top of 766 the page are color-coded to the source lines they affect. 767 768- Custom CSS can be applied to the HTML report by specifying a CSS file as 769 the ``extra_css`` configuration value in the ``[html]`` section. 770 771- Source files with custom encodings declared in a comment at the top are now 772 properly handled during reporting on Python 2. Python 3 always handled them 773 properly. This fixes `issue 157`_. 774 775- Backup files left behind by editors are no longer collected by the source= 776 option, fixing `issue 168`_. 777 778- If a file doesn't parse properly as Python, we don't report it as an error 779 if the file name seems like maybe it wasn't meant to be Python. This is a 780 pragmatic fix for `issue 82`_. 781 782- The ``-m`` switch on ``coverage report``, which includes missing line numbers 783 in the summary report, can now be specified as ``show_missing`` in the 784 config file. Closes `issue 173`_. 785 786- When running a module with ``coverage run -m <modulename>``, certain details 787 of the execution environment weren't the same as for 788 ``python -m <modulename>``. This had the unfortunate side-effect of making 789 ``coverage run -m unittest discover`` not work if you had tests in a 790 directory named "test". This fixes `issue 155`_ and `issue 142`_. 791 792- Now the exit status of your product code is properly used as the process 793 status when running ``python -m coverage run ...``. Thanks, JT Olds. 794 795- When installing into pypy, we no longer attempt (and fail) to compile 796 the C tracer function, closing `issue 166`_. 797 798.. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced 799.. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover 800.. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8 801.. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy 802.. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings 803.. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-specify-show-missing-in 804 805 806Version 3.5.1 --- 23 September 2011 807----------------------------------- 808 809- The ``[paths]`` feature unfortunately didn't work in real world situations 810 where you wanted to, you know, report on the combined data. Now all paths 811 stored in the combined file are canonicalized properly. 812 813 814Version 3.5.1b1 --- 28 August 2011 815---------------------------------- 816 817- When combining data files from parallel runs, you can now instruct 818 coverage.py about which directories are equivalent on different machines. A 819 ``[paths]`` section in the configuration file lists paths that are to be 820 considered equivalent. Finishes `issue 17`_. 821 822- for-else constructs are understood better, and don't cause erroneous partial 823 branch warnings. Fixes `issue 122`_. 824 825- Branch coverage for ``with`` statements is improved, fixing `issue 128`_. 826 827- The number of partial branches reported on the HTML summary page was 828 different than the number reported on the individual file pages. This is 829 now fixed. 830 831- An explicit include directive to measure files in the Python installation 832 wouldn't work because of the standard library exclusion. Now the include 833 directive takes precedence, and the files will be measured. Fixes 834 `issue 138`_. 835 836- The HTML report now handles Unicode characters in Python source files 837 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin 838 Jeanpierre. 839 840- In order to help the core developers measure the test coverage of the 841 standard library, Brandon Rhodes devised an aggressive hack to trick Python 842 into running some coverage.py code before anything else in the process. 843 See the coverage/fullcoverage directory if you are interested. 844 845.. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from 846.. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch 847.. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in 848.. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-with-statement-in-27 849.. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take-precedence-over-is 850.. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-html-output-for 851 852 853Version 3.5 --- 29 June 2011 854---------------------------- 855 856- The HTML report hotkeys now behave slightly differently when the current 857 chunk isn't visible at all: a chunk on the screen will be selected, 858 instead of the old behavior of jumping to the literal next chunk. 859 The hotkeys now work in Google Chrome. Thanks, Guido van Rossum. 860 861 862Version 3.5b1 --- 5 June 2011 863----------------------------- 864 865- The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``, 866 ``p``, and ``c`` on the overview page to change the column sorting. 867 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing, 868 excluded, and partial line markings. You can navigate the highlighted 869 sections of code by using the ``j`` and ``k`` keys for next and previous. 870 The ``1`` (one) key jumps to the first highlighted section in the file, 871 and ``0`` (zero) scrolls to the top of the file. 872 873- The ``--omit`` and ``--include`` switches now interpret their values more 874 usefully. If the value starts with a wildcard character, it is used as-is. 875 If it does not, it is interpreted relative to the current directory. 876 Closes `issue 121`_. 877 878- Partial branch warnings can now be pragma'd away. The configuration option 879 ``partial_branches`` is a list of regular expressions. Lines matching any of 880 those expressions will never be marked as a partial branch. In addition, 881 there's a built-in list of regular expressions marking statements which should 882 never be marked as partial. This list includes ``while True:``, ``while 1:``, 883 ``if 1:``, and ``if 0:``. 884 885- The ``coverage()`` constructor accepts single strings for the ``omit=`` and 886 ``include=`` arguments, adapting to a common error in programmatic use. 887 888- Modules can now be run directly using ``coverage run -m modulename``, to 889 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes. 890 891- ``coverage run`` didn't emulate Python accurately in one small detail: the 892 current directory inserted into ``sys.path`` was relative rather than 893 absolute. This is now fixed. 894 895- HTML reporting is now incremental: a record is kept of the data that 896 produced the HTML reports, and only files whose data has changed will 897 be generated. This should make most HTML reporting faster. 898 899- Pathological code execution could disable the trace function behind our 900 backs, leading to incorrect code measurement. Now if this happens, 901 coverage.py will issue a warning, at least alerting you to the problem. 902 Closes `issue 93`_. Thanks to Marius Gedminas for the idea. 903 904- The C-based trace function now behaves properly when saved and restored 905 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_ 906 and `issue 123`_. Thanks, Devin Jeanpierre. 907 908- Source files are now opened with Python 3.2's ``tokenize.open()`` where 909 possible, to get the best handling of Python source files with encodings. 910 Closes `issue 107`_, thanks, Brett Cannon. 911 912- Syntax errors in supposed Python files can now be ignored during reporting 913 with the ``-i`` switch just like other source errors. Closes `issue 115`_. 914 915- Installation from source now succeeds on machines without a C compiler, 916 closing `issue 80`_. 917 918- Coverage.py can now be run directly from a working tree by specifying 919 the directory name to python: ``python coverage_py_working_dir run ...``. 920 Thanks, Brett Cannon. 921 922- A little bit of Jython support: `coverage run` can now measure Jython 923 execution by adapting when $py.class files are traced. Thanks, Adi Roiban. 924 Jython still doesn't provide the Python libraries needed to make 925 coverage reporting work, unfortunately. 926 927- Internally, files are now closed explicitly, fixing `issue 104`_. Thanks, 928 Brett Cannon. 929 930.. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant 931.. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object-breaks-coverage 932.. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-should-take-a-module-name 933.. _issue 104: https://bitbucket.org/ned/coveragepy/issue/104/explicitly-close-files 934.. _issue 107: https://bitbucket.org/ned/coveragepy/issue/107/codeparser-not-opening-source-files-with 935.. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-when-reporting-on-file 936.. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-are-applied-stupidly 937.. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-used-in-way-that-breaks 938.. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-decoratortoolss-tracing 939 940 941Version 3.4 --- 19 September 2010 942--------------------------------- 943 944- The XML report is now sorted by package name, fixing `issue 88`_. 945 946- Programs that exited with ``sys.exit()`` with no argument weren't handled 947 properly, producing a coverage.py stack trace. That is now fixed. 948 949.. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-packages-in-random-order 950 951 952Version 3.4b2 --- 6 September 2010 953---------------------------------- 954 955- Completely unexecuted files can now be included in coverage results, reported 956 as 0% covered. This only happens if the --source option is specified, since 957 coverage.py needs guidance about where to look for source files. 958 959- The XML report output now properly includes a percentage for branch coverage, 960 fixing `issue 65`_ and `issue 81`_. 961 962- Coverage percentages are now displayed uniformly across reporting methods. 963 Previously, different reports could round percentages differently. Also, 964 percentages are only reported as 0% or 100% if they are truly 0 or 100, and 965 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_. 966 967- The precision of reported coverage percentages can be set with the 968 ``[report] precision`` config file setting. Completes `issue 16`_. 969 970- Threads derived from ``threading.Thread`` with an overridden `run` method 971 would report no coverage for the `run` method. This is now fixed, closing 972 `issue 85`_. 973 974.. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-of-accuracy-of-percentage-totals 975.. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when-it-isnt-quite-there 976.. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-reported-in-cobertura 977.. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html-report-disagree-on-coverage 978.. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-have-condition-coverage-attribute-for-lines-with-a 979.. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measured 980 981 982Version 3.4b1 --- 21 August 2010 983-------------------------------- 984 985- BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take 986 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_. 987 988- BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout 989 coverage.py, replaced with `omit`, a list of file name patterns suitable for 990 `fnmatch`. A parallel argument `include` controls what files are included. 991 992- The run command now has a ``--source`` switch, a list of directories or 993 module names. If provided, coverage.py will only measure execution in those 994 source files. 995 996- Various warnings are printed to stderr for problems encountered during data 997 measurement: if a ``--source`` module has no Python source to measure, or is 998 never encountered at all, or if no data is collected. 999 1000- The reporting commands (report, annotate, html, and xml) now have an 1001 ``--include`` switch to restrict reporting to modules matching those file 1002 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko. 1003 1004- The run command now supports ``--include`` and ``--omit`` to control what 1005 modules it measures. This can speed execution and reduce the amount of data 1006 during reporting. Thanks Zooko. 1007 1008- Since coverage.py 3.1, using the Python trace function has been slower than 1009 it needs to be. A cache of tracing decisions was broken, but has now been 1010 fixed. 1011 1012- Python 2.7 and 3.2 have introduced new opcodes that are now supported. 1013 1014- Python files with no statements, for example, empty ``__init__.py`` files, 1015 are now reported as having zero statements instead of one. Fixes `issue 1`_. 1016 1017- Reports now have a column of missed line counts rather than executed line 1018 counts, since developers should focus on reducing the missed lines to zero, 1019 rather than increasing the executed lines to varying targets. Once 1020 suggested, this seemed blindingly obvious. 1021 1022- Line numbers in HTML source pages are clickable, linking directly to that 1023 line, which is highlighted on arrival. Added a link back to the index page 1024 at the bottom of each HTML page. 1025 1026- Programs that call ``os.fork`` will properly collect data from both the child 1027 and parent processes. Use ``coverage run -p`` to get two data files that can 1028 be combined with ``coverage combine``. Fixes `issue 56`_. 1029 1030- Coverage.py is now runnable as a module: ``python -m coverage``. Thanks, 1031 Brett Cannon. 1032 1033- When measuring code running in a virtualenv, most of the system library was 1034 being measured when it shouldn't have been. This is now fixed. 1035 1036- Doctest text files are no longer recorded in the coverage data, since they 1037 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. 1038 1039- Jinja HTML templates compile into Python code using the HTML file name, 1040 which confused coverage.py. Now these files are no longer traced, fixing 1041 `issue 82`_. 1042 1043- Source files can have more than one dot in them (foo.test.py), and will be 1044 treated properly while reporting. Fixes `issue 46`_. 1045 1046- Source files with DOS line endings are now properly tokenized for syntax 1047 coloring on non-DOS machines. Fixes `issue 53`_. 1048 1049- Unusual code structure that confused exits from methods with exits from 1050 classes is now properly analyzed. See `issue 62`_. 1051 1052- Asking for an HTML report with no files now shows a nice error message rather 1053 than a cryptic failure ('int' object is unsubscriptable). Fixes `issue 59`_. 1054 1055.. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files-are-reported-as-1-executable 1056.. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbing-handling 1057.. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-omit 1058.. _issue 46: http://bitbucket.org/ned/coveragepy/issue/46 1059.. _issue 53: http://bitbucket.org/ned/coveragepy/issue/53 1060.. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confuses-source-detection 1061.. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56 1062.. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-work 1063.. _issue 62: http://bitbucket.org/ned/coveragepy/issue/62 1064.. _issue 59: http://bitbucket.org/ned/coveragepy/issue/59/html-report-fails-with-int-object-is 1065.. _issue 82: http://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report 1066 1067 1068Version 3.3.1 --- 6 March 2010 1069------------------------------ 1070 1071- Using `parallel=True` in .coveragerc file prevented reporting, but now does 1072 not, fixing `issue 49`_. 1073 1074- When running your code with "coverage run", if you call `sys.exit()`, 1075 coverage.py will exit with that status code, fixing `issue 50`_. 1076 1077.. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49 1078.. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50 1079 1080 1081Version 3.3 --- 24 February 2010 1082-------------------------------- 1083 1084- Settings are now read from a .coveragerc file. A specific file can be 1085 specified on the command line with --rcfile=FILE. The name of the file can 1086 be programmatically set with the `config_file` argument to the coverage() 1087 constructor, or reading a config file can be disabled with 1088 `config_file=False`. 1089 1090- Fixed a problem with nested loops having their branch possibilities 1091 mischaracterized: `issue 39`_. 1092 1093- Added coverage.process_start to enable coverage measurement when Python 1094 starts. 1095 1096- Parallel data file names now have a random number appended to them in 1097 addition to the machine name and process id. 1098 1099- Parallel data files combined with "coverage combine" are deleted after 1100 they're combined, to clean up unneeded files. Fixes `issue 40`_. 1101 1102- Exceptions thrown from product code run with "coverage run" are now displayed 1103 without internal coverage.py frames, so the output is the same as when the 1104 code is run without coverage.py. 1105 1106- The `data_suffix` argument to the coverage constructor is now appended with 1107 an added dot rather than simply appended, so that .coveragerc files will not 1108 be confused for data files. 1109 1110- Python source files that don't end with a newline can now be executed, fixing 1111 `issue 47`_. 1112 1113- Added an AUTHORS.txt file. 1114 1115.. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39 1116.. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40 1117.. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47 1118 1119 1120Version 3.2 --- 5 December 2009 1121------------------------------- 1122 1123- Added a ``--version`` option on the command line. 1124 1125 1126Version 3.2b4 --- 1 December 2009 1127--------------------------------- 1128 1129- Branch coverage improvements: 1130 1131 - The XML report now includes branch information. 1132 1133- Click-to-sort HTML report columns are now persisted in a cookie. Viewing 1134 a report will sort it first the way you last had a coverage report sorted. 1135 Thanks, `Chris Adams`_. 1136 1137- On Python 3.x, setuptools has been replaced by `Distribute`_. 1138 1139.. _Distribute: http://packages.python.org/distribute/ 1140 1141 1142Version 3.2b3 --- 23 November 2009 1143---------------------------------- 1144 1145- Fixed a memory leak in the C tracer that was introduced in 3.2b1. 1146 1147- Branch coverage improvements: 1148 1149 - Branches to excluded code are ignored. 1150 1151- The table of contents in the HTML report is now sortable: click the headers 1152 on any column. Thanks, `Chris Adams`_. 1153 1154.. _Chris Adams: http://improbable.org/chris/ 1155 1156 1157Version 3.2b2 --- 19 November 2009 1158---------------------------------- 1159 1160- Branch coverage improvements: 1161 1162 - Classes are no longer incorrectly marked as branches: `issue 32`_. 1163 1164 - "except" clauses with types are no longer incorrectly marked as branches: 1165 `issue 35`_. 1166 1167- Fixed some problems syntax coloring sources with line continuations and 1168 source with tabs: `issue 30`_ and `issue 31`_. 1169 1170- The --omit option now works much better than before, fixing `issue 14`_ and 1171 `issue 33`_. Thanks, Danek Duvall. 1172 1173.. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 1174.. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 1175.. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 1176.. _issue 32: http://bitbucket.org/ned/coveragepy/issue/32 1177.. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33 1178.. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35 1179 1180 1181Version 3.2b1 --- 10 November 2009 1182---------------------------------- 1183 1184- Branch coverage! 1185 1186- XML reporting has file paths that let Cobertura find the source code. 1187 1188- The tracer code has changed, it's a few percent faster. 1189 1190- Some exceptions reported by the command line interface have been cleaned up 1191 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_. 1192 1193.. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23 1194 1195 1196Version 3.1 --- 4 October 2009 1197------------------------------ 1198 1199- Source code can now be read from eggs. Thanks, Ross Lawley. Fixes 1200 `issue 25`_. 1201 1202.. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25 1203 1204 1205Version 3.1b1 --- 27 September 2009 1206----------------------------------- 1207 1208- Python 3.1 is now supported. 1209 1210- Coverage.py has a new command line syntax with sub-commands. This expands 1211 the possibilities for adding features and options in the future. The old 1212 syntax is still supported. Try "coverage help" to see the new commands. 1213 Thanks to Ben Finney for early help. 1214 1215- Added an experimental "coverage xml" command for producing coverage reports 1216 in a Cobertura-compatible XML format. Thanks, Bill Hart. 1217 1218- Added the --timid option to enable a simpler slower trace function that works 1219 for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ and 1220 `issue 13`_. 1221 1222- HTML reports show modules from other directories. Fixed `issue 11`_. 1223 1224- HTML reports now display syntax-colored Python source. 1225 1226- Programs that change directory will still write .coverage files in the 1227 directory where execution started. Fixed `issue 24`_. 1228 1229- Added a "coverage debug" command for getting diagnostic information about the 1230 coverage.py installation. 1231 1232.. _issue 11: http://bitbucket.org/ned/coveragepy/issue/11 1233.. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 1234.. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 1235.. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24 1236 1237 1238Version 3.0.1 --- 7 July 2009 1239----------------------------- 1240 1241- Removed the recursion limit in the tracer function. Previously, code that 1242 ran more than 500 frames deep would crash. Fixed `issue 9`_. 1243 1244- Fixed a bizarre problem involving pyexpat, whereby lines following XML parser 1245 invocations could be overlooked. Fixed `issue 10`_. 1246 1247- On Python 2.3, coverage.py could mis-measure code with exceptions being 1248 raised. This is now fixed. 1249 1250- The coverage.py code itself will now not be measured by coverage.py, and no 1251 coverage.py modules will be mentioned in the nose --with-cover plug-in. 1252 Fixed `issue 8`_. 1253 1254- When running source files, coverage.py now opens them in universal newline 1255 mode just like Python does. This lets it run Windows files on Mac, for 1256 example. 1257 1258.. _issue 9: http://bitbucket.org/ned/coveragepy/issue/9 1259.. _issue 10: http://bitbucket.org/ned/coveragepy/issue/10 1260.. _issue 8: http://bitbucket.org/ned/coveragepy/issue/8 1261 1262 1263Version 3.0 --- 13 June 2009 1264---------------------------- 1265 1266- Fixed the way the Python library was ignored. Too much code was being 1267 excluded the old way. 1268 1269- Tabs are now properly converted in HTML reports. Previously indentation was 1270 lost. Fixed `issue 6`_. 1271 1272- Nested modules now get a proper flat_rootname. Thanks, Christian Heimes. 1273 1274.. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6 1275 1276 1277Version 3.0b3 --- 16 May 2009 1278----------------------------- 1279 1280- Added parameters to coverage.__init__ for options that had been set on the 1281 coverage object itself. 1282 1283- Added clear_exclude() and get_exclude_list() methods for programmatic 1284 manipulation of the exclude regexes. 1285 1286- Added coverage.load() to read previously-saved data from the data file. 1287 1288- Improved the finding of code files. For example, .pyc files that have been 1289 installed after compiling are now located correctly. Thanks, Detlev 1290 Offenbach. 1291 1292- When using the object API (that is, constructing a coverage() object), data 1293 is no longer saved automatically on process exit. You can re-enable it with 1294 the auto_data=True parameter on the coverage() constructor. The module-level 1295 interface still uses automatic saving. 1296 1297 1298Version 3.0b --- 30 April 2009 1299------------------------------ 1300 1301HTML reporting, and continued refactoring. 1302 1303- HTML reports and annotation of source files: use the new -b (browser) switch. 1304 Thanks to George Song for code, inspiration and guidance. 1305 1306- Code in the Python standard library is not measured by default. If you need 1307 to measure standard library code, use the -L command-line switch during 1308 execution, or the cover_pylib=True argument to the coverage() constructor. 1309 1310- Source annotation into a directory (-a -d) behaves differently. The 1311 annotated files are named with their hierarchy flattened so that same-named 1312 files from different directories no longer collide. Also, only files in the 1313 current tree are included. 1314 1315- coverage.annotate_file is no longer available. 1316 1317- Programs executed with -x now behave more as they should, for example, 1318 __file__ has the correct value. 1319 1320- .coverage data files have a new pickle-based format designed for better 1321 extensibility. 1322 1323- Removed the undocumented cache_file argument to coverage.usecache(). 1324 1325 1326Version 3.0b1 --- 7 March 2009 1327------------------------------ 1328 1329Major overhaul. 1330 1331- Coverage.py is now a package rather than a module. Functionality has been 1332 split into classes. 1333 1334- The trace function is implemented in C for speed. Coverage.py runs are now 1335 much faster. Thanks to David Christian for productive micro-sprints and 1336 other encouragement. 1337 1338- Executable lines are identified by reading the line number tables in the 1339 compiled code, removing a great deal of complicated analysis code. 1340 1341- Precisely which lines are considered executable has changed in some cases. 1342 Therefore, your coverage stats may also change slightly. 1343 1344- The singleton coverage object is only created if the module-level functions 1345 are used. This maintains the old interface while allowing better 1346 programmatic use of Coverage.py. 1347 1348- The minimum supported Python version is 2.3. 1349 1350 1351Version 2.85 --- 14 September 2008 1352---------------------------------- 1353 1354- Add support for finding source files in eggs. Don't check for 1355 morf's being instances of ModuleType, instead use duck typing so that 1356 pseudo-modules can participate. Thanks, Imri Goldberg. 1357 1358- Use os.realpath as part of the fixing of file names so that symlinks won't 1359 confuse things. Thanks, Patrick Mezard. 1360 1361 1362Version 2.80 --- 25 May 2008 1363---------------------------- 1364 1365- Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper. 1366 1367 1368Version 2.78 --- 30 September 2007 1369---------------------------------- 1370 1371- Don't try to predict whether a file is Python source based on the extension. 1372 Extension-less files are often Pythons scripts. Instead, simply parse the file 1373 and catch the syntax errors. Hat tip to Ben Finney. 1374 1375 1376Version 2.77 --- 29 July 2007 1377----------------------------- 1378 1379- Better packaging. 1380 1381 1382Version 2.76 --- 23 July 2007 1383----------------------------- 1384 1385- Now Python 2.5 is *really* fully supported: the body of the new with 1386 statement is counted as executable. 1387 1388 1389Version 2.75 --- 22 July 2007 1390----------------------------- 1391 1392- Python 2.5 now fully supported. The method of dealing with multi-line 1393 statements is now less sensitive to the exact line that Python reports during 1394 execution. Pass statements are handled specially so that their disappearance 1395 during execution won't throw off the measurement. 1396 1397 1398Version 2.7 --- 21 July 2007 1399---------------------------- 1400 1401- "#pragma: nocover" is excluded by default. 1402 1403- Properly ignore docstrings and other constant expressions that appear in the 1404 middle of a function, a problem reported by Tim Leslie. 1405 1406- coverage.erase() shouldn't clobber the exclude regex. Change how parallel 1407 mode is invoked, and fix erase() so that it erases the cache when called 1408 programmatically. 1409 1410- In reports, ignore code executed from strings, since we can't do anything 1411 useful with it anyway. 1412 1413- Better file handling on Linux, thanks Guillaume Chazarain. 1414 1415- Better shell support on Windows, thanks Noel O'Boyle. 1416 1417- Python 2.2 support maintained, thanks Catherine Proulx. 1418 1419- Minor changes to avoid lint warnings. 1420 1421 1422Version 2.6 --- 23 August 2006 1423------------------------------ 1424 1425- Applied Joseph Tate's patch for function decorators. 1426 1427- Applied Sigve Tjora and Mark van der Wal's fixes for argument handling. 1428 1429- Applied Geoff Bache's parallel mode patch. 1430 1431- Refactorings to improve testability. Fixes to command-line logic for parallel 1432 mode and collect. 1433 1434 1435Version 2.5 --- 4 December 2005 1436------------------------------- 1437 1438- Call threading.settrace so that all threads are measured. Thanks Martin 1439 Fuzzey. 1440 1441- Add a file argument to report so that reports can be captured to a different 1442 destination. 1443 1444- Coverage.py can now measure itself. 1445 1446- Adapted Greg Rogers' patch for using relative file names, and sorting and 1447 omitting files to report on. 1448 1449 1450Version 2.2 --- 31 December 2004 1451-------------------------------- 1452 1453- Allow for keyword arguments in the module global functions. Thanks, Allen. 1454 1455 1456Version 2.1 --- 14 December 2004 1457-------------------------------- 1458 1459- Return 'analysis' to its original behavior and add 'analysis2'. Add a global 1460 for 'annotate', and factor it, adding 'annotate_file'. 1461 1462 1463Version 2.0 --- 12 December 2004 1464-------------------------------- 1465 1466Significant code changes. 1467 1468- Finding executable statements has been rewritten so that docstrings and 1469 other quirks of Python execution aren't mistakenly identified as missing 1470 lines. 1471 1472- Lines can be excluded from consideration, even entire suites of lines. 1473 1474- The file system cache of covered lines can be disabled programmatically. 1475 1476- Modernized the code. 1477 1478 1479Earlier History 1480--------------- 1481 14822001-12-04 GDR Created. 1483 14842001-12-06 GDR Added command-line interface and source code annotation. 1485 14862001-12-09 GDR Moved design and interface to separate documents. 1487 14882001-12-10 GDR Open cache file as binary on Windows. Allow simultaneous -e and 1489-x, or -a and -r. 1490 14912001-12-12 GDR Added command-line help. Cache analysis so that it only needs to 1492be done once when you specify -a and -r. 1493 14942001-12-13 GDR Improved speed while recording. Portable between Python 1.5.2 1495and 2.1.1. 1496 14972002-01-03 GDR Module-level functions work correctly. 1498 14992002-01-07 GDR Update sys.path when running a file with the -x option, so that 1500it matches the value the program would get if it were run on its own. 1501