{"action":"closed","number":1,"pull_request":{"url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1","id":96664241,"html_url":"https://github.com/tanbro/exosip2ctypes/pull/1","diff_url":"https://github.com/tanbro/exosip2ctypes/pull/1.diff","patch_url":"https://github.com/tanbro/exosip2ctypes/pull/1.patch","issue_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/1","number":1,"state":"closed","locked":false,"title":"Initial Update","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars.githubusercontent.com/u/16239342?v=3","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"body":"\nThis is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge. \n\n*Close this pull request and delete the branch if you want me to start with single pull requests right away*\n\nHere's the executive summary:\n\n## Updates\nHere's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.\n<table align=\"center\">\n\n<tr>\n<td><b>futures</b></td>\n<td align=\"center\">3.0.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">3.0.5</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/futures\">PyPI</a> | <a href=\"https://pyup.io/changelogs/futures/\">Changelog</a> | <a href=\"https://github.com/agronholm/pythonfutures\">Repo</a> | <a href=\"http://pythonhosted.org/futures/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>Sphinx</b></td>\n<td align=\"center\">1.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.5</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/Sphinx\">PyPI</a> | <a href=\"http://sphinx-doc.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>Sphinx</b></td>\n<td align=\"center\">1.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.5</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/Sphinx\">PyPI</a> | <a href=\"http://sphinx-doc.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>Sphinx</b></td>\n<td align=\"center\">1.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.5</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/Sphinx\">PyPI</a> | <a href=\"http://sphinx-doc.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>coverage</b></td>\n<td align=\"center\">4.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.2</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/coverage\">PyPI</a> | <a href=\"https://pyup.io/changelogs/coverage/\">Changelog</a> | <a href=\"https://coverage.readthedocs.io\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>coverage</b></td>\n<td align=\"center\">4.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.2</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/coverage\">PyPI</a> | <a href=\"https://pyup.io/changelogs/coverage/\">Changelog</a> | <a href=\"https://coverage.readthedocs.io\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>coverage</b></td>\n<td align=\"center\">4.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.2</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/coverage\">PyPI</a> | <a href=\"https://pyup.io/changelogs/coverage/\">Changelog</a> | <a href=\"https://coverage.readthedocs.io\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>wheel</b></td>\n<td align=\"center\">0.29.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.29.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/wheel\">PyPI</a> | <a href=\"https://pyup.io/changelogs/wheel/\">Changelog</a> | <a href=\"https://bitbucket.org/pypa/wheel/\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>wheel</b></td>\n<td align=\"center\">0.29.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.29.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/wheel\">PyPI</a> | <a href=\"https://pyup.io/changelogs/wheel/\">Changelog</a> | <a href=\"https://bitbucket.org/pypa/wheel/\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>wheel</b></td>\n<td align=\"center\">0.29.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.29.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/wheel\">PyPI</a> | <a href=\"https://pyup.io/changelogs/wheel/\">Changelog</a> | <a href=\"https://bitbucket.org/pypa/wheel/\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>setuptools</b></td>\n<td align=\"center\">30.2.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">30.2.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/setuptools\">PyPI</a> | <a href=\"https://pyup.io/changelogs/setuptools/\">Changelog</a> | <a href=\"https://github.com/pypa/setuptools\">Repo</a> | <a href=\"http://pythonhosted.org/setuptools/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>setuptools</b></td>\n<td align=\"center\">30.2.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">30.2.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/setuptools\">PyPI</a> | <a href=\"https://pyup.io/changelogs/setuptools/\">Changelog</a> | <a href=\"https://github.com/pypa/setuptools\">Repo</a> | <a href=\"http://pythonhosted.org/setuptools/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>setuptools</b></td>\n<td align=\"center\">30.2.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">30.2.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/setuptools\">PyPI</a> | <a href=\"https://pyup.io/changelogs/setuptools/\">Changelog</a> | <a href=\"https://github.com/pypa/setuptools\">Repo</a> | <a href=\"http://pythonhosted.org/setuptools/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>sphinx-autobuild</b></td>\n<td align=\"center\">0.6.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.6.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/sphinx-autobuild\">PyPI</a> | <a href=\"https://pyup.io/changelogs/sphinx-autobuild/\">Changelog</a> | <a href=\"https://github.com/GaretJax/sphinx-autobuild\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>sphinx-autobuild</b></td>\n<td align=\"center\">0.6.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.6.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/sphinx-autobuild\">PyPI</a> | <a href=\"https://pyup.io/changelogs/sphinx-autobuild/\">Changelog</a> | <a href=\"https://github.com/GaretJax/sphinx-autobuild\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>sphinx-autobuild</b></td>\n<td align=\"center\">0.6.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.6.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/sphinx-autobuild\">PyPI</a> | <a href=\"https://pyup.io/changelogs/sphinx-autobuild/\">Changelog</a> | <a href=\"https://github.com/GaretJax/sphinx-autobuild\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>enum34</b></td>\n<td align=\"center\">1.1.6</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.1.6</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/enum34\">PyPI</a> | <a href=\"https://bitbucket.org/stoneleaf/enum34\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>enum34</b></td>\n<td align=\"center\">1.1.6</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.1.6</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/enum34\">PyPI</a> | <a href=\"https://bitbucket.org/stoneleaf/enum34\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>recommonmark</b></td>\n<td align=\"center\">0.4.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.4.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/recommonmark\">PyPI</a> \n\n</td>\n\n<tr>\n<td><b>recommonmark</b></td>\n<td align=\"center\">0.4.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.4.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/recommonmark\">PyPI</a> \n\n</td>\n\n<tr>\n<td><b>recommonmark</b></td>\n<td align=\"center\">0.4.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.4.0</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/recommonmark\">PyPI</a> \n\n</td>\n\n<tr>\n<td><b>twine</b></td>\n<td align=\"center\">1.8.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.8.1</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/twine\">PyPI</a> | <a href=\"https://github.com/pypa/twine\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>twine</b></td>\n<td align=\"center\">1.8.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.8.1</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/twine\">PyPI</a> | <a href=\"https://github.com/pypa/twine\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>twine</b></td>\n<td align=\"center\">1.8.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.8.1</td>\n<td>\n     <a href=\"http://pypi.python.org/pypi/twine\">PyPI</a> | <a href=\"https://github.com/pypa/twine\">Repo</a> \n\n</td>\n\n</tr>\n</table>\n\n\n\n## Changelogs\n\n\n### futures  -> 3.0.5\n\n>### 3.0.5\n\n>=====\n\n>- Fixed OverflowError with ProcessPoolExecutor on Windows (regression introduced in 3.0.4)\n\n\n\n\n>### 3.0.4\n\n>=====\n\n>- Fixed inability to forcibly terminate the process if there are pending workers\n\n\n\n\n>### 3.0.3\n\n>=====\n\n>- Fixed AttributeErrors on exit on Python 2.x\n\n\n\n\n>### 3.0.2\n\n>=====\n\n>- Made multiprocessing optional again on implementations other than just Jython\n\n\n\n\n>### 3.0.1\n\n>=====\n\n>- Made Executor.map() non-greedy\n\n\n\n\n>### 3.0.0\n\n>=====\n\n>- Dropped Python 2.5 and 3.1 support\n>- Removed the deprecated &quot;futures&quot; top level package\n>- Applied patch for issue 11777 (Executor.map does not submit futures until\n>                                 iter.next() is called)\n>- Applied patch for issue 15015 (accessing an non-existing attribute)\n>- Applied patch for issue 16284 (memory leak)\n>- Applied patch for issue 20367 (behavior of concurrent.futures.as_completed()\n>                                 for duplicate arguments)\n\n\n\n>### 2.2.0\n\n>=====\n\n>- Added the set_exception_info() and exception_info() methods to Future\n>  to enable extraction of tracebacks on Python 2.x\n>- Added support for Future.set_exception_info() to ThreadPoolExecutor\n\n\n\n\n>### 2.1.6\n\n>=====\n\n>- Fixed a problem with files missing from the source distribution\n\n\n\n\n>### 2.1.5\n\n>=====\n\n>- Fixed Jython compatibility\n>- Added metadata for wheel support\n\n\n\n\n>### 2.1.4\n\n>=====\n\n>- Ported the library again from Python 3.2.5 to get the latest bug fixes \n\n\n\n\n>### 2.1.3\n\n>=====\n\n>- Fixed race condition in wait(return_when=ALL_COMPLETED)\n>  (http://bugs.python.org/issue14406) -- thanks Ralf Schmitt\n>- Added missing setUp() methods to several test classes\n\n\n\n\n>### 2.1.2\n\n>=====\n\n>- Fixed installation problem on Python 3.1\n\n\n\n\n>### 2.1.1\n\n>=====\n\n>- Fixed missing &#39;concurrent&#39; package declaration in setup.py\n\n\n\n\n>### 2.1\n\n>===\n\n>- Moved the code from the &#39;futures&#39; package to &#39;concurrent.futures&#39; to provide\n>  a drop in backport that matches the code in Python 3.2 standard library\n>- Deprecated the old &#39;futures&#39; package\n\n\n\n\n>### 2.0\n\n>===\n\n>- Changed implementation to match PEP 3148\n\n\n\n\n>### 1.0\n\n>===\n\n>Initial release.\n\n\n\n\n\n\n### coverage  -> 4.2\n\n>### 4.2\n\n>--------------------------\n\n>- Since ``concurrency=multiprocessing`` uses subprocesses, options specified on\n>  the coverage.py command line will not be communicated down to them.  Only\n>  options in the configuration file will apply to the subprocesses.\n>  Previously, the options didn&#39;t apply to the subprocesses, but there was no\n>  indication.  Now it is an error to use ``--concurrency=multiprocessing`` and\n>  other run-affecting options on the command line.  This prevents\n>  failures like those reported in `issue 495`_.\n\n>- Filtering the HTML report is now faster, thanks to Ville SkyttÃ¤.\n\n>.. _issue 495: https://bitbucket.org/ned/coveragepy/issues/495/branch-and-concurrency-are-conflicting\n\n\n\n\n>### 4.2b1\n\n>----------------------------\n\n>Work from the PyCon 2016 Sprints!\n\n>- BACKWARD INCOMPATIBILITY: the ``coverage combine`` command now ignores an\n>  existing ``.coverage`` data file.  It used to include that file in its\n>  combining.  This caused confusing results, and extra tox &quot;clean&quot; steps.  If\n>  you want the old behavior, use the new ``coverage combine --append`` option.\n\n>- The ``concurrency`` option can now take multiple values, to support programs\n>  using multiprocessing and another library such as eventlet.  This is only\n>  possible in the configuration file, not from the command line. The\n>  configuration file is the only way for sub-processes to all run with the same\n>  options.  Fixes `issue 484`_.  Thanks to Josh Williams for prototyping.\n\n>- Using a ``concurrency`` setting of ``multiprocessing`` now implies\n>  ``--parallel`` so that the main program is measured similarly to the\n>  sub-processes.\n\n>- When using `automatic subprocess measurement`_, running coverage commands\n>  would create spurious data files.  This is now fixed, thanks to diagnosis and\n>  testing by Dan Riti.  Closes `issue 492`_.\n\n>- A new configuration option, ``report:sort``, controls what column of the\n>  text report is used to sort the rows.  Thanks to Dan Wandschneider, this\n>  closes `issue 199`_.\n\n>- The HTML report has a more-visible indicator for which column is being\n>  sorted.  Closes `issue 298`_, thanks to Josh Williams.\n\n>- If the HTML report cannot find the source for a file, the message now\n>  suggests using the ``-i`` flag to allow the report to continue. Closes\n>  `issue 231`_, thanks, Nathan Land.\n\n>- When reports are ignoring errors, there&#39;s now a warning if a file cannot be\n>  parsed, rather than being silently ignored.  Closes `issue 396`_. Thanks,\n>  Matthew Boehm.\n\n>- A new option for ``coverage debug`` is available: ``coverage debug config``\n>  shows the current configuration.  Closes `issue 454`_, thanks to Matthew\n>  Boehm.\n\n>- Running coverage as a module (``python -m coverage``) no longer shows the\n>  program name as ``__main__.py``.  Fixes `issue 478`_.  Thanks, Scott Belden.\n\n>- The `test_helpers` module has been moved into a separate pip-installable\n>  package: `unittest-mixins`_.\n\n>.. _automatic subprocess measurement: http://coverage.readthedocs.io/en/latest/subprocess.html\n>.. _issue 199: https://bitbucket.org/ned/coveragepy/issues/199/add-a-way-to-sort-the-text-report\n>.. _issue 231: https://bitbucket.org/ned/coveragepy/issues/231/various-default-behavior-in-report-phase\n>.. _issue 298: https://bitbucket.org/ned/coveragepy/issues/298/show-in-html-report-that-the-columns-are\n>.. _issue 396: https://bitbucket.org/ned/coveragepy/issues/396/coverage-xml-shouldnt-bail-out-on-parse\n>.. _issue 454: https://bitbucket.org/ned/coveragepy/issues/454/coverage-debug-config-should-be\n>.. _issue 478: https://bitbucket.org/ned/coveragepy/issues/478/help-shows-silly-program-name-when-running\n>.. _issue 484: https://bitbucket.org/ned/coveragepy/issues/484/multiprocessing-greenlet-concurrency\n>.. _issue 492: https://bitbucket.org/ned/coveragepy/issues/492/subprocess-coverage-strange-detection-of\n>.. _unittest-mixins: https://pypi.python.org/pypi/unittest-mixins\n\n\n\n\n>### 4.1\n\n>--------------------------\n\n>- The internal attribute `Reporter.file_reporters` was removed in 4.1b3.  It\n>  should have come has no surprise that there were third-party tools out there\n>  using that attribute.  It has been restored, but with a deprecation warning.\n\n\n\n\n>### 4.1b3\n\n>----------------------------\n\n>- When running your program, execution can jump from an ``except X:`` line to\n>  some other line when an exception other than ``X`` happens.  This jump is no\n>  longer considered a branch when measuring branch coverage.\n\n>- When measuring branch coverage, ``yield`` statements that were never resumed\n>  were incorrectly marked as missing, as reported in `issue 440`_.  This is now\n>  fixed.\n\n>- During branch coverage of single-line callables like lambdas and generator\n>  expressions, coverage.py can now distinguish between them never being called,\n>  or being called but not completed.  Fixes `issue 90`_, `issue 460`_ and\n>  `issue 475`_.\n\n>- The HTML report now has a map of the file along the rightmost edge of the\n>  page, giving an overview of where the missed lines are.  Thanks, Dmitry\n>  Shishov.\n\n>- The HTML report now uses different monospaced fonts, favoring Consolas over\n>  Courier.  Along the way, `issue 472`_ about not properly handling one-space\n>  indents was fixed.  The index page also has slightly different styling, to\n>  try to make the clickable detail pages more apparent.\n\n>- Missing branches reported with ``coverage report -m`` will now say ``-&gt;exit``\n>  for missed branches to the exit of a function, rather than a negative number.\n>  Fixes `issue 469`_.\n\n>- ``coverage --help`` and ``coverage --version`` now mention which tracer is\n>  installed, to help diagnose problems. The docs mention which features need\n>  the C extension. (`issue 479`_)\n\n>- Officially support PyPy 5.1, which required no changes, just updates to the\n>  docs.\n\n>- The `Coverage.report` function had two parameters with non-None defaults,\n>  which have been changed.  `show_missing` used to default to True, but now\n>  defaults to None.  If you had been calling `Coverage.report` without\n>  specifying `show_missing`, you&#39;ll need to explicitly set it to True to keep\n>  the same behavior.  `skip_covered` used to default to False. It is now None,\n>  which doesn&#39;t change the behavior.  This fixes `issue 485`_.\n\n>- It&#39;s never been possible to pass a namespace module to one of the analysis\n>  functions, but now at least we raise a more specific error message, rather\n>  than getting confused. (`issue 456`_)\n\n>- The `coverage.process_startup` function now returns the `Coverage` instance\n>  it creates, as suggested in `issue 481`_.\n\n>- Make a small tweak to how we compare threads, to avoid buggy custom\n>  comparison code in thread classes. (`issue 245`_)\n\n>.. _issue 90: https://bitbucket.org/ned/coveragepy/issues/90/lambda-expression-confuses-branch\n>.. _issue 245: https://bitbucket.org/ned/coveragepy/issues/245/change-solution-for-issue-164\n>.. _issue 440: https://bitbucket.org/ned/coveragepy/issues/440/yielded-twisted-failure-marked-as-missed\n>.. _issue 456: https://bitbucket.org/ned/coveragepy/issues/456/coverage-breaks-with-implicit-namespaces\n>.. _issue 460: https://bitbucket.org/ned/coveragepy/issues/460/confusing-html-report-for-certain-partial\n>.. _issue 469: https://bitbucket.org/ned/coveragepy/issues/469/strange-1-line-number-in-branch-coverage\n>.. _issue 472: https://bitbucket.org/ned/coveragepy/issues/472/html-report-indents-incorrectly-for-one\n>.. _issue 475: https://bitbucket.org/ned/coveragepy/issues/475/generator-expression-is-marked-as-not\n>.. _issue 479: https://bitbucket.org/ned/coveragepy/issues/479/clarify-the-need-for-the-c-extension\n>.. _issue 481: https://bitbucket.org/ned/coveragepy/issues/481/asyncioprocesspoolexecutor-tracing-not\n>.. _issue 485: https://bitbucket.org/ned/coveragepy/issues/485/coveragereport-ignores-show_missing-and\n\n\n\n\n>### 4.1b2\n\n>----------------------------\n\n>- Problems with the new branch measurement in 4.1 beta 1 were fixed:\n\n>  - Class docstrings were considered executable.  Now they no longer are.\n\n>  - ``yield from`` and ``await`` were considered returns from functions, since\n>    they could tranfer control to the caller.  This produced unhelpful &quot;missing\n>    branch&quot; reports in a number of circumstances.  Now they no longer are\n>    considered returns.\n\n>  - In unusual situations, a missing branch to a negative number was reported.\n>    This has been fixed, closing `issue 466`_.\n\n>- The XML report now produces correct package names for modules found in\n>  directories specified with ``source=``.  Fixes `issue 465`_.\n\n>- ``coverage report`` won&#39;t produce trailing whitespace.\n\n>.. _issue 465: https://bitbucket.org/ned/coveragepy/issues/465/coveragexml-produces-package-names-with-an\n>.. _issue 466: https://bitbucket.org/ned/coveragepy/issues/466/impossible-missed-branch-to-a-negative\n\n\n\n\n>### 4.1b1\n\n>----------------------------\n\n>- Branch analysis has been rewritten: it used to be based on bytecode, but now\n>  uses AST analysis.  This has changed a number of things:\n\n>  - More code paths are now considered runnable, especially in\n>    ``try``/``except`` structures.  This may mean that coverage.py will\n>    identify more code paths as uncovered.  This could either raise or lower\n>    your overall coverage number.\n\n>  - Python 3.5&#39;s ``async`` and ``await`` keywords are properly supported,\n>    fixing `issue 434`_.\n\n>  - Some long-standing branch coverage bugs were fixed:\n\n>    - `issue 129`_: functions with only a docstring for a body would\n>      incorrectly report a missing branch on the ``def`` line.\n\n>    - `issue 212`_: code in an ``except`` block could be incorrectly marked as\n>      a missing branch.\n\n>    - `issue 146`_: context managers (``with`` statements) in a loop or ``try``\n>      block could confuse the branch measurement, reporting incorrect partial\n>      branches.\n\n>    - `issue 422`_: in Python 3.5, an actual partial branch could be marked as\n>      complete.\n\n>- Pragmas to disable coverage measurement can now be used on decorator lines,\n>  and they will apply to the entire function or class being decorated.  This\n>  implements the feature requested in `issue 131`_.\n\n>- Multiprocessing support is now available on Windows.  Thanks, Rodrigue\n>  Cloutier.\n\n>- Files with two encoding declarations are properly supported, fixing\n>  `issue 453`_. Thanks, Max Linke.\n\n>- Non-ascii characters in regexes in the configuration file worked in 3.7, but\n>  stopped working in 4.0.  Now they work again, closing `issue 455`_.\n\n>- Form-feed characters would prevent accurate determination of the beginning of\n>  statements in the rest of the file.  This is now fixed, closing `issue 461`_.\n\n>.. _issue 129: https://bitbucket.org/ned/coveragepy/issues/129/misleading-branch-coverage-of-empty\n>.. _issue 131: https://bitbucket.org/ned/coveragepy/issues/131/pragma-on-a-decorator-line-should-affect\n>.. _issue 146: https://bitbucket.org/ned/coveragepy/issues/146/context-managers-confuse-branch-coverage\n>.. _issue 212: https://bitbucket.org/ned/coveragepy/issues/212/coverage-erroneously-reports-partial\n>.. _issue 422: https://bitbucket.org/ned/coveragepy/issues/422/python35-partial-branch-marked-as-fully\n>.. _issue 434: https://bitbucket.org/ned/coveragepy/issues/434/indexerror-in-python-35\n>.. _issue 453: https://bitbucket.org/ned/coveragepy/issues/453/source-code-encoding-can-only-be-specified\n>.. _issue 455: https://bitbucket.org/ned/coveragepy/issues/455/unusual-exclusions-stopped-working-in\n>.. _issue 461: https://bitbucket.org/ned/coveragepy/issues/461/multiline-asserts-need-too-many-pragma\n\n\n\n\n>### 4.0.3\n\n>----------------------------\n\n>- Fixed a mysterious problem that manifested in different ways: sometimes\n>  hanging the process (`issue 420`_), sometimes making database connections\n>  fail (`issue 445`_).\n\n>- The XML report now has correct ``&lt;source&gt;`` elements when using a\n>  ``--source=`` option somewhere besides the current directory.  This fixes\n>  `issue 439`_. Thanks, Arcady Ivanov.\n\n>- Fixed an unusual edge case of detecting source encodings, described in\n>  `issue 443`_.\n\n>- Help messages that mention the command to use now properly use the actual\n>  command name, which might be different than &quot;coverage&quot;.  Thanks to Ben\n>  Finney, this closes `issue 438`_.\n\n>.. _issue 420: https://bitbucket.org/ned/coveragepy/issues/420/coverage-40-hangs-indefinitely-on-python27\n>.. _issue 438: https://bitbucket.org/ned/coveragepy/issues/438/parameterise-coverage-command-name\n>.. _issue 439: https://bitbucket.org/ned/coveragepy/issues/439/incorrect-cobertura-file-sources-generated\n>.. _issue 443: https://bitbucket.org/ned/coveragepy/issues/443/coverage-gets-confused-when-encoding\n>.. _issue 445: https://bitbucket.org/ned/coveragepy/issues/445/django-app-cannot-connect-to-cassandra\n\n\n\n\n>### 4.0.2\n\n>----------------------------\n\n>- More work on supporting unusually encoded source. Fixed `issue 431`_.\n\n>- Files or directories with non-ASCII characters are now handled properly,\n>  fixing `issue 432`_.\n\n>- Setting a trace function with sys.settrace was broken by a change in 4.0.1,\n>  as reported in `issue 436`_.  This is now fixed.\n\n>- Officially support PyPy 4.0, which required no changes, just updates to the\n>  docs.\n\n>.. _issue 431: https://bitbucket.org/ned/coveragepy/issues/431/couldnt-parse-python-file-with-cp1252\n>.. _issue 432: https://bitbucket.org/ned/coveragepy/issues/432/path-with-unicode-characters-various\n>.. _issue 436: https://bitbucket.org/ned/coveragepy/issues/436/disabled-coverage-ctracer-may-rise-from\n\n\n\n\n>### 4.0.1\n\n>----------------------------\n\n>- When combining data files, unreadable files will now generate a warning\n>  instead of failing the command.  This is more in line with the older\n>  coverage.py v3.7.1 behavior, which silently ignored unreadable files.\n>  Prompted by `issue 418`_.\n\n>- The --skip-covered option would skip reporting on 100% covered files, but\n>  also skipped them when calculating total coverage.  This was wrong, it should\n>  only remove lines from the report, not change the final answer.  This is now\n>  fixed, closing `issue 423`_.\n\n>- In 4.0, the data file recorded a summary of the system on which it was run.\n>  Combined data files would keep all of those summaries.  This could lead to\n>  enormous data files consisting of mostly repetitive useless information. That\n>  summary is now gone, fixing `issue 415`_.  If you want summary information,\n>  get in touch, and we&#39;ll figure out a better way to do it.\n\n>- Test suites that mocked os.path.exists would experience strange failures, due\n>  to coverage.py using their mock inadvertently.  This is now fixed, closing\n>  `issue 416`_.\n\n>- Importing a ``__init__`` module explicitly would lead to an error:\n>  ``AttributeError: &#39;module&#39; object has no attribute &#39;__path__&#39;``, as reported\n>  in `issue 410`_.  This is now fixed.\n\n>- Code that uses ``sys.settrace(sys.gettrace())`` used to incur a more than 2x\n>  speed penalty.  Now there&#39;s no penalty at all. Fixes `issue 397`_.\n\n>- Pyexpat C code will no longer be recorded as a source file, fixing\n>  `issue 419`_.\n\n>- The source kit now contains all of the files needed to have a complete source\n>  tree, re-fixing `issue 137`_ and closing `issue 281`_.\n\n>.. _issue 281: https://bitbucket.org/ned/coveragepy/issues/281/supply-scripts-for-testing-in-the\n>.. _issue 397: https://bitbucket.org/ned/coveragepy/issues/397/stopping-and-resuming-coverage-with\n>.. _issue 410: https://bitbucket.org/ned/coveragepy/issues/410/attributeerror-module-object-has-no\n>.. _issue 415: https://bitbucket.org/ned/coveragepy/issues/415/repeated-coveragedataupdates-cause\n>.. _issue 416: https://bitbucket.org/ned/coveragepy/issues/416/mocking-ospathexists-causes-failures\n>.. _issue 418: https://bitbucket.org/ned/coveragepy/issues/418/json-parse-error\n>.. _issue 419: https://bitbucket.org/ned/coveragepy/issues/419/nosource-no-source-for-code-path-to-c\n>.. _issue 423: https://bitbucket.org/ned/coveragepy/issues/423/skip_covered-changes-reported-total\n\n\n\n\n>### 4.0\n\n>--------------------------\n\n\n\n>### 4.0b3\n\n>----------------------------\n\n>- Reporting on an unmeasured file would fail with a traceback.  This is now\n>  fixed, closing `issue 403`_.\n\n>- The Jenkins ShiningPanda plugin looks for an obsolete file name to find the\n>  HTML reports to publish, so it was failing under coverage.py 4.0.  Now we\n>  create that file if we are running under Jenkins, to keep things working\n>  smoothly. `issue 404`_.\n\n>- Kits used to include tests and docs, but didn&#39;t install them anywhere, or\n>  provide all of the supporting tools to make them useful.  Kits no longer\n>  include tests and docs.  If you were using them from the older packages, get\n>  in touch and help me understand how.\n\n>.. _issue 403: https://bitbucket.org/ned/coveragepy/issues/403/hasherupdate-fails-with-typeerror-nonetype\n>.. _issue 404: https://bitbucket.org/ned/coveragepy/issues/404/shiningpanda-jenkins-plugin-cant-find-html\n\n\n\n\n\n>### 4.0b2\n\n>----------------------------\n\n>- 4.0b1 broke ``--append`` creating new data files.  This is now fixed, closing\n>  `issue 392`_.\n\n>- ``py.test --cov`` can write empty data, then touch files due to ``--source``,\n>  which made coverage.py mistakenly force the data file to record lines instead\n>  of arcs.  This would lead to a &quot;Can&#39;t combine line data with arc data&quot; error\n>  message.  This is now fixed, and changed some method names in the\n>  CoverageData interface.  Fixes `issue 399`_.\n\n>- `CoverageData.read_fileobj` and `CoverageData.write_fileobj` replace the\n>  `.read` and `.write` methods, and are now properly inverses of each other.\n\n>- When using ``report --skip-covered``, a message will now be included in the\n>  report output indicating how many files were skipped, and if all files are\n>  skipped, coverage.py won&#39;t accidentally scold you for having no data to\n>  report.  Thanks, Krystian Kichewko.\n\n>- A new conversion utility has been added:  ``python -m coverage.pickle2json``\n>  will convert v3.x pickle data files to v4.x JSON data files.  Thanks,\n>  Alexander Todorov.  Closes `issue 395`_.\n\n>- A new version identifier is available, `coverage.version_info`, a plain tuple\n>  of values similar to `sys.version_info`_.\n\n>.. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file\n>.. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for\n>.. _issue 399: https://bitbucket.org/ned/coveragepy/issues/399/coverageexception-cant-combine-line-data\n>.. _sys.version_info: https://docs.python.org/3/library/sys.htmlsys.version_info\n\n\n\n\n>### 4.0b1\n\n>----------------------------\n\n>- Coverage.py is now licensed under the Apache 2.0 license.  See NOTICE.txt for\n>  details.  Closes `issue 313`_.\n\n>- The data storage has been completely revamped.  The data file is now\n>  JSON-based instead of a pickle, closing `issue 236`_.  The `CoverageData`\n>  class is now a public supported documented API to the data file.\n\n>- A new configuration option, ``[run] note``, lets you set a note that will be\n>  stored in the `runs` section of the data file.  You can use this to annotate\n>  the data file with any information you like.\n\n>- Unrecognized configuration options will now print an error message and stop\n>  coverage.py.  This should help prevent configuration mistakes from passing\n>  silently.  Finishes `issue 386`_.\n\n>- In parallel mode, ``coverage erase`` will now delete all of the data files,\n>  fixing `issue 262`_.\n\n>- Coverage.py now accepts a directory name for ``coverage run`` and will run a\n>  ``__main__.py`` found there, just like Python will.  Fixes `issue 252`_.\n>  Thanks, Dmitry Trofimov.\n\n>- The XML report now includes a ``missing-branches`` attribute.  Thanks, Steve\n>  Peak.  This is not a part of the Cobertura DTD, so the XML report no longer\n>  references the DTD.\n\n>- Missing branches in the HTML report now have a bit more information in the\n>  right-hand annotations.  Hopefully this will make their meaning clearer.\n\n>- All the reporting functions now behave the same if no data had been\n>  collected, exiting with a status code of 1.  Fixed ``fail_under`` to be\n>  applied even when the report is empty.  Thanks, Ionel Cristian MÄrieÈ.\n\n>- Plugins are now initialized differently.  Instead of looking for a class\n>  called ``Plugin``, coverage.py looks for a function called ``coverage_init``.\n\n>- A file-tracing plugin can now ask to have built-in Python reporting by\n>  returning `&quot;python&quot;` from its `file_reporter()` method.\n\n>- Code that was executed with `exec` would be mis-attributed to the file that\n>  called it.  This is now fixed, closing `issue 380`_.\n\n>- The ability to use item access on `Coverage.config` (introduced in 4.0a2) has\n>  been changed to a more explicit `Coverage.get_option` and\n>  `Coverage.set_option` API.\n\n>- The ``Coverage.use_cache`` method is no longer supported.\n\n>- The private method ``Coverage._harvest_data`` is now called\n>  ``Coverage.get_data``, and returns the ``CoverageData`` containing the\n>  collected data.\n\n>- The project is consistently referred to as &quot;coverage.py&quot; throughout the code\n>  and the documentation, closing `issue 275`_.\n\n>- Combining data files with an explicit configuration file was broken in 4.0a6,\n>  but now works again, closing `issue 385`_.\n\n>- ``coverage combine`` now accepts files as well as directories.\n\n>- The speed is back to 3.7.1 levels, after having slowed down due to plugin\n>  support, finishing up `issue 387`_.\n\n>.. _issue 236: https://bitbucket.org/ned/coveragepy/issues/236/pickles-are-bad-and-you-should-feel-bad\n>.. _issue 252: https://bitbucket.org/ned/coveragepy/issues/252/coverage-wont-run-a-program-with\n>.. _issue 262: https://bitbucket.org/ned/coveragepy/issues/262/when-parallel-true-erase-should-erase-all\n>.. _issue 275: https://bitbucket.org/ned/coveragepy/issues/275/refer-consistently-to-project-as-coverage\n>.. _issue 313: https://bitbucket.org/ned/coveragepy/issues/313/add-license-file-containing-2-3-or-4\n>.. _issue 380: https://bitbucket.org/ned/coveragepy/issues/380/code-executed-by-exec-excluded-from\n>.. _issue 385: https://bitbucket.org/ned/coveragepy/issues/385/coverage-combine-doesnt-work-with-rcfile\n>.. _issue 386: https://bitbucket.org/ned/coveragepy/issues/386/error-on-unrecognised-configuration\n>.. _issue 387: https://bitbucket.org/ned/coveragepy/issues/387/performance-degradation-from-371-to-40\n\n>.. 40 issues closed in 4.0 below here\n\n\n\n\n>### 4.0a6\n\n>----------------------------\n\n>- Python 3.5b2 and PyPy 2.6.0 are supported.\n\n>- The original module-level function interface to coverage.py is no longer\n>  supported.  You must now create a ``coverage.Coverage`` object, and use\n>  methods on it.\n\n>- The ``coverage combine`` command now accepts any number of directories as\n>  arguments, and will combine all the data files from those directories.  This\n>  means you don&#39;t have to copy the files to one directory before combining.\n>  Thanks, Christine Lytwynec.  Finishes `issue 354`_.\n\n>- Branch coverage couldn&#39;t properly handle certain extremely long files. This\n>  is now fixed (`issue 359`_).\n\n>- Branch coverage didn&#39;t understand yield statements properly.  Mickie Betz\n>  persisted in pursuing this despite Ned&#39;s pessimism.  Fixes `issue 308`_ and\n>  `issue 324`_.\n\n>- The COVERAGE_DEBUG environment variable can be used to set the ``[run] debug``\n>  configuration option to control what internal operations are logged.\n\n>- HTML reports were truncated at formfeed characters.  This is now fixed\n>  (`issue 360`_).  It&#39;s always fun when the problem is due to a `bug in the\n>  Python standard library &lt;http://bugs.python.org/issue19035&gt;`_.\n\n>- Files with incorrect encoding declaration comments are no longer ignored by\n>  the reporting commands, fixing `issue 351`_.\n\n>- HTML reports now include a timestamp in the footer, closing `issue 299`_.\n>  Thanks, Conrad Ho.\n\n>- HTML reports now begrudgingly use double-quotes rather than single quotes,\n>  because there are &quot;software engineers&quot; out there writing tools that read HTML\n>  and somehow have no idea that single quotes exist.  Capitulates to the absurd\n>  `issue 361`_.  Thanks, Jon Chappell.\n\n>- The ``coverage annotate`` command now handles non-ASCII characters properly,\n>  closing `issue 363`_.  Thanks, Leonardo Pistone.\n\n>- Drive letters on Windows were not normalized correctly, now they are. Thanks,\n>  Ionel Cristian MÄrieÈ.\n\n>- Plugin support had some bugs fixed, closing `issue 374`_ and `issue 375`_.\n>  Thanks, Stefan Behnel.\n\n>.. _issue 299: https://bitbucket.org/ned/coveragepy/issue/299/inserted-created-on-yyyy-mm-dd-hh-mm-in\n>.. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branch-coverage\n>.. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-confuses-branch-coverage\n>.. _issue 351: https://bitbucket.org/ned/coveragepy/issue/351/files-with-incorrect-encoding-are-ignored\n>.. _issue 354: https://bitbucket.org/ned/coveragepy/issue/354/coverage-combine-should-take-a-list-of\n>.. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-error\n>.. _issue 360: https://bitbucket.org/ned/coveragepy/issue/360/html-reports-get-confused-by-l-in-the-code\n>.. _issue 361: https://bitbucket.org/ned/coveragepy/issue/361/use-double-quotes-in-html-output-to\n>.. _issue 363: https://bitbucket.org/ned/coveragepy/issue/363/annotate-command-hits-unicode-happy-fun\n>.. _issue 374: https://bitbucket.org/ned/coveragepy/issue/374/c-tracer-lookups-fail-in\n>.. _issue 375: https://bitbucket.org/ned/coveragepy/issue/375/ctracer_handle_return-reads-byte-code\n\n\n\n\n>### 4.0a5\n\n>----------------------------\n\n>- Plugin support is now implemented in the C tracer instead of the Python\n>  tracer. This greatly improves the speed of tracing projects using plugins.\n\n>- Coverage.py now always adds the current directory to sys.path, so that\n>  plugins can import files in the current directory (`issue 358`_).\n\n>- If the `config_file` argument to the Coverage constructor is specified as\n>  &quot;.coveragerc&quot;, it is treated as if it were True.  This means setup.cfg is\n>  also examined, and a missing file is not considered an error (`issue 357`_).\n\n>- Wildly experimental: support for measuring processes started by the\n>  multiprocessing module.  To use, set ``--concurrency=multiprocessing``,\n>  either on the command line or in the .coveragerc file (`issue 117`_). Thanks,\n>  Eduardo Schettino.  Currently, this does not work on Windows.\n\n>- A new warning is possible, if a desired file isn&#39;t measured because it was\n>  imported before coverage.py was started (`issue 353`_).\n\n>- The `coverage.process_startup` function now will start coverage measurement\n>  only once, no matter how many times it is called.  This fixes problems due\n>  to unusual virtualenv configurations (`issue 340`_).\n\n>- Added 3.5.0a1 to the list of supported CPython versions.\n\n>.. _issue 117: https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by\n>.. _issue 340: https://bitbucket.org/ned/coveragepy/issue/340/keyerror-subpy\n>.. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case\n>.. _issue 357: https://bitbucket.org/ned/coveragepy/issue/357/behavior-changed-when-coveragerc-is\n>.. _issue 358: https://bitbucket.org/ned/coveragepy/issue/358/all-coverage-commands-should-adjust\n\n\n\n\n>### 4.0a4\n\n>----------------------------\n\n>- Plugins can now provide sys_info for debugging output.\n\n>- Started plugins documentation.\n\n>- Prepared to move the docs to readthedocs.org.\n\n\n\n\n>### 4.0a3\n\n>----------------------------\n\n>- Reports now use file names with extensions.  Previously, a report would\n>  describe a/b/c.py as &quot;a/b/c&quot;.  Now it is shown as &quot;a/b/c.py&quot;.  This allows\n>  for better support of non-Python files, and also fixed `issue 69`_.\n\n>- The XML report now reports each directory as a package again.  This was a bad\n>  regression, I apologize.  This was reported in `issue 235`_, which is now\n>  fixed.\n\n>- A new configuration option for the XML report: ``[xml] package_depth``\n>  controls which directories are identified as packages in the report.\n>  Directories deeper than this depth are not reported as packages.\n>  The default is that all directories are reported as packages.\n>  Thanks, Lex Berezhny.\n\n>- When looking for the source for a frame, check if the file exists. On\n>  Windows, .pyw files are no longer recorded as .py files. Along the way, this\n>  fixed `issue 290`_.\n\n>- Empty files are now reported as 100% covered in the XML report, not 0%\n>  covered (`issue 345`_).\n\n>- Regexes in the configuration file are now compiled as soon as they are read,\n>  to provide error messages earlier (`issue 349`_).\n\n>.. _issue 69: https://bitbucket.org/ned/coveragepy/issue/69/coverage-html-overwrite-files-that-doesnt\n>.. _issue 235: https://bitbucket.org/ned/coveragepy/issue/235/package-name-is-missing-in-xml-report\n>.. _issue 290: https://bitbucket.org/ned/coveragepy/issue/290/running-programmatically-with-pyw-files\n>.. _issue 345: https://bitbucket.org/ned/coveragepy/issue/345/xml-reports-line-rate-0-for-empty-files\n>.. _issue 349: https://bitbucket.org/ned/coveragepy/issue/349/bad-regex-in-config-should-get-an-earlier\n\n\n\n\n>### 4.0a2\n\n>----------------------------\n\n>- Officially support PyPy 2.4, and PyPy3 2.4.  Drop support for\n>  CPython 3.2 and older versions of PyPy.  The code won&#39;t work on CPython 3.2.\n>  It will probably still work on older versions of PyPy, but I&#39;m not testing\n>  against them.\n\n>- Plugins!\n\n>- The original command line switches (`-x` to run a program, etc) are no\n>  longer supported.\n\n>- A new option: `coverage report --skip-covered` will reduce the number of\n>  files reported by skipping files with 100% coverage.  Thanks, Krystian\n>  Kichewko.  This means that empty `__init__.py` files will be skipped, since\n>  they are 100% covered, closing `issue 315`_.\n\n>- You can now specify the ``--fail-under`` option in the ``.coveragerc`` file\n>  as the ``[report] fail_under`` option.  This closes `issue 314`_.\n\n>- The ``COVERAGE_OPTIONS`` environment variable is no longer supported.  It was\n>  a hack for ``--timid`` before configuration files were available.\n\n>- The HTML report now has filtering.  Type text into the Filter box on the\n>  index page, and only modules with that text in the name will be shown.\n>  Thanks, Danny Allen.\n\n>- The textual report and the HTML report used to report partial branches\n>  differently for no good reason.  Now the text report&#39;s &quot;missing branches&quot;\n>  column is a &quot;partial branches&quot; column so that both reports show the same\n>  numbers.  This closes `issue 342`_.\n\n>- If you specify a ``--rcfile`` that cannot be read, you will get an error\n>  message.  Fixes `issue 343`_.\n\n>- The ``--debug`` switch can now be used on any command.\n\n>- You can now programmatically adjust the configuration of coverage.py by\n>  setting items on `Coverage.config` after construction.\n\n>- A module run with ``-m`` can be used as the argument to ``--source``, fixing\n>  `issue 328`_.  Thanks, Buck Evan.\n\n>- The regex for matching exclusion pragmas has been fixed to allow more kinds\n>  of whitespace, fixing `issue 334`_.\n\n>- Made some PyPy-specific tweaks to improve speed under PyPy.  Thanks, Alex\n>  Gaynor.\n\n>- In some cases, with a source file missing a final newline, coverage.py would\n>  count statements incorrectly.  This is now fixed, closing `issue 293`_.\n\n>- The status.dat file that HTML reports use to avoid re-creating files that\n>  haven&#39;t changed is now a JSON file instead of a pickle file.  This obviates\n>  `issue 287`_ and `issue 237`_.\n\n>.. _issue 237: https://bitbucket.org/ned/coveragepy/issue/237/htmlcov-with-corrupt-statusdat\n>.. _issue 287: https://bitbucket.org/ned/coveragepy/issue/287/htmlpy-doesnt-specify-pickle-protocol\n>.. _issue 293: https://bitbucket.org/ned/coveragepy/issue/293/number-of-statement-detection-wrong-if-no\n>.. _issue 314: https://bitbucket.org/ned/coveragepy/issue/314/fail_under-param-not-working-in-coveragerc\n>.. _issue 315: https://bitbucket.org/ned/coveragepy/issue/315/option-to-omit-empty-files-eg-__init__py\n>.. _issue 328: https://bitbucket.org/ned/coveragepy/issue/328/misbehavior-in-run-source\n>.. _issue 334: https://bitbucket.org/ned/coveragepy/issue/334/pragma-not-recognized-if-tab-character\n>.. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-coverage-reports-differ\n>.. _issue 343: https://bitbucket.org/ned/coveragepy/issue/343/an-explicitly-named-non-existent-config\n\n\n\n\n>### 4.0a1\n\n>----------------------------\n\n>- Python versions supported are now CPython 2.6, 2.7, 3.2, 3.3, and 3.4, and\n>  PyPy 2.2.\n\n>- Gevent, eventlet, and greenlet are now supported, closing `issue 149`_.\n>  The ``concurrency`` setting specifies the concurrency library in use.  Huge\n>  thanks to Peter Portante for initial implementation, and to Joe Jevnik for\n>  the final insight that completed the work.\n\n>- Options are now also read from a setup.cfg file, if any.  Sections are\n>  prefixed with &quot;coverage:&quot;, so the ``[run]`` options will be read from the\n>  ``[coverage:run]`` section of setup.cfg.  Finishes `issue 304`_.\n\n>- The ``report -m`` command can now show missing branches when reporting on\n>  branch coverage.  Thanks, Steve Leonard. Closes `issue 230`_.\n\n>- The XML report now contains a &lt;source&gt; element, fixing `issue 94`_.  Thanks\n>  Stan Hu.\n\n>- The class defined in the coverage module is now called ``Coverage`` instead\n>  of ``coverage``, though the old name still works, for backward compatibility.\n\n>- The ``fail-under`` value is now rounded the same as reported results,\n>  preventing paradoxical results, fixing `issue 284`_.\n\n>- The XML report will now create the output directory if need be, fixing\n>  `issue 285`_.  Thanks, Chris Rose.\n\n>- HTML reports no longer raise UnicodeDecodeError if a Python file has\n>  undecodable characters, fixing `issue 303`_ and `issue 331`_.\n\n>- The annotate command will now annotate all files, not just ones relative to\n>  the current directory, fixing `issue 57`_.\n\n>- The coverage module no longer causes deprecation warnings on Python 3.4 by\n>  importing the imp module, fixing `issue 305`_.\n\n>- Encoding declarations in source files are only considered if they are truly\n>  comments.  Thanks, Anthony Sottile.\n\n>.. _issue 57: https://bitbucket.org/ned/coveragepy/issue/57/annotate-command-fails-to-annotate-many\n>.. _issue 94: https://bitbucket.org/ned/coveragepy/issue/94/coverage-xml-doesnt-produce-sources\n>.. _issue 149: https://bitbucket.org/ned/coveragepy/issue/149/coverage-gevent-looks-broken\n>.. _issue 230: https://bitbucket.org/ned/coveragepy/issue/230/show-line-no-for-missing-branches-in\n>.. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-show-more-precision\n>.. _issue 285: https://bitbucket.org/ned/coveragepy/issue/285/xml-report-fails-if-output-file-directory\n>.. _issue 303: https://bitbucket.org/ned/coveragepy/issue/303/unicodedecodeerror\n>.. _issue 304: https://bitbucket.org/ned/coveragepy/issue/304/attempt-to-get-configuration-from-setupcfg\n>.. _issue 305: https://bitbucket.org/ned/coveragepy/issue/305/pendingdeprecationwarning-the-imp-module\n>.. _issue 331: https://bitbucket.org/ned/coveragepy/issue/331/failure-of-encoding-detection-on-python2\n\n\n\n\n>### 3.7.1\n\n>----------------------------\n\n>- Improved the speed of HTML report generation by about 20%.\n\n>- Fixed the mechanism for finding OS-installed static files for the HTML report\n>  so that it will actually find OS-installed static files.\n\n\n\n\n>### 3.7\n\n>--------------------------\n\n>- Added the ``--debug`` switch to ``coverage run``.  It accepts a list of\n>  options indicating the type of internal activity to log to stderr.\n\n>- Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_.\n\n>- Running code with ``coverage run -m`` now behaves more like Python does,\n>  setting sys.path properly, which fixes `issue 207`_ and `issue 242`_.\n\n>- Coverage.py can now run .pyc files directly, closing `issue 264`_.\n\n>- Coverage.py properly supports .pyw files, fixing `issue 261`_.\n\n>- Omitting files within a tree specified with the ``source`` option would\n>  cause them to be incorrectly marked as unexecuted, as described in\n>  `issue 218`_.  This is now fixed.\n\n>- When specifying paths to alias together during data combining, you can now\n>  specify relative paths, fixing `issue 267`_.\n\n>- Most file paths can now be specified with username expansion (``~/src``, or\n>  ``~build/src``, for example), and with environment variable expansion\n>  (``build/$BUILDNUM/src``).\n\n>- Trying to create an XML report with no files to report on, would cause a\n>  ZeroDivideError, but no longer does, fixing `issue 250`_.\n\n>- When running a threaded program under the Python tracer, coverage.py no\n>  longer issues a spurious warning about the trace function changing: &quot;Trace\n>  function changed, measurement is likely wrong: None.&quot;  This fixes `issue\n>  164`_.\n\n>- Static files necessary for HTML reports are found in system-installed places,\n>  to ease OS-level packaging of coverage.py.  Closes `issue 259`_.\n\n>- Source files with encoding declarations, but a blank first line, were not\n>  decoded properly.  Now they are.  Thanks, Roger Hu.\n\n>- The source kit now includes the ``__main__.py`` file in the root coverage\n>  directory, fixing `issue 255`_.\n\n>.. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-arent-treated-properly-in\n>.. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-changed-warning-when-using\n>.. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-gets-confused-in-certain\n>.. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-module-or-package-in\n>.. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-level-package-doesnt-work\n>.. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-not-respect-the-omit-flag\n>.. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivisionerror-when-generating\n>.. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__main__py-not-included-in\n>.. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-system-installed-third-party\n>.. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-reported-properly\n>.. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files\n>.. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work\n\n\n\n\n>### 3.6\n\n>--------------------------\n\n>- Added a page to the docs about troublesome situations, closing `issue 226`_,\n>  and added some info to the TODO file, closing `issue 227`_.\n\n>.. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-section-to-describe-when\n>.. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo\n\n\n\n\n>### 3.6b3\n\n>----------------------------\n\n>- Beta 2 broke the nose plugin. It&#39;s fixed again, closing `issue 224`_.\n\n>.. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexcover\n\n\n\n\n>### 3.6b2\n\n>----------------------------\n\n>- Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1.\n\n>- The C extension is optionally compiled using a different more widely-used\n>  technique, taking another stab at fixing `issue 80`_ once and for all.\n\n>- Combining data files would create entries for phantom files if used with\n>  ``source`` and path aliases.  It no longer does.\n\n>- ``debug sys`` now shows the configuration file path that was read.\n\n>- If an oddly-behaved package claims that code came from an empty-string\n>  file name, coverage.py no longer associates it with the directory name,\n>  fixing `issue 221`_.\n\n>.. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp\n\n\n\n\n>### 3.6b1\n\n>----------------------------\n\n>- Wildcards in ``include=`` and ``omit=`` arguments were not handled properly\n>  in reporting functions, though they were when running.  Now they are handled\n>  uniformly, closing `issue 143`_ and `issue 163`_.  **NOTE**: it is possible\n>  that your configurations may now be incorrect.  If you use ``include`` or\n>  ``omit`` during reporting, whether on the command line, through the API, or\n>  in a configuration file, please check carefully that you were not relying on\n>  the old broken behavior.\n\n>- The **report**, **html**, and **xml** commands now accept a ``--fail-under``\n>  switch that indicates in the exit status whether the coverage percentage was\n>  less than a particular value.  Closes `issue 139`_.\n\n>- The reporting functions coverage.report(), coverage.html_report(), and\n>  coverage.xml_report() now all return a float, the total percentage covered\n>  measurement.\n\n>- The HTML report&#39;s title can now be set in the configuration file, with the\n>  ``--title`` switch on the command line, or via the API.\n\n>- Configuration files now support substitution of environment variables, using\n>  syntax like ``${WORD}``.  Closes `issue 97`_.\n\n>- Embarrassingly, the ``[xml] output=`` setting in the .coveragerc file simply\n>  didn&#39;t work.  Now it does.\n\n>- The XML report now consistently uses file names for the file name attribute,\n>  rather than sometimes using module names.  Fixes `issue 67`_.\n>  Thanks, Marcus Cobden.\n\n>- Coverage percentage metrics are now computed slightly differently under\n>  branch coverage.  This means that completely unexecuted files will now\n>  correctly have 0% coverage, fixing `issue 156`_.  This also means that your\n>  total coverage numbers will generally now be lower if you are measuring\n>  branch coverage.\n\n>- When installing, now in addition to creating a &quot;coverage&quot; command, two new\n>  aliases are also installed.  A &quot;coverage2&quot; or &quot;coverage3&quot; command will be\n>  created, depending on whether you are installing in Python 2.x or 3.x.\n>  A &quot;coverage-X.Y&quot; command will also be created corresponding to your specific\n>  version of Python.  Closes `issue 111`_.\n\n>- The coverage.py installer no longer tries to bootstrap setuptools or\n>  Distribute.  You must have one of them installed first, as `issue 202`_\n>  recommended.\n\n>- The coverage.py kit now includes docs (closing `issue 137`_) and tests.\n\n>- On Windows, files are now reported in their correct case, fixing `issue 89`_\n>  and `issue 203`_.\n\n>- If a file is missing during reporting, the path shown in the error message\n>  is now correct, rather than an incorrect path in the current directory.\n>  Fixes `issue 60`_.\n\n>- Running an HTML report in Python 3 in the same directory as an old Python 2\n>  HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_)\n>  is now fixed.\n\n>- Fixed yet another error trying to parse non-Python files as Python, this\n>  time an IndentationError, closing `issue 82`_ for the fourth time...\n\n>- If `coverage xml` fails because there is no data to report, it used to\n>  create a zero-length XML file.  Now it doesn&#39;t, fixing `issue 210`_.\n\n>- Jython files now work with the ``--source`` option, fixing `issue 100`_.\n\n>- Running coverage.py under a debugger is unlikely to work, but it shouldn&#39;t\n>  fail with &quot;TypeError: &#39;NoneType&#39; object is not iterable&quot;.  Fixes `issue\n>  201`_.\n\n>- On some Linux distributions, when installed with the OS package manager,\n>  coverage.py would report its own code as part of the results.  Now it won&#39;t,\n>  fixing `issue 214`_, though this will take some time to be repackaged by the\n>  operating systems.\n\n>- Docstrings for the legacy singleton methods are more helpful.  Thanks Marius\n>  Gedminas.  Closes `issue 205`_.\n\n>- The pydoc tool can now show documentation for the class `coverage.coverage`.\n>  Closes `issue 206`_.\n\n>- Added a page to the docs about contributing to coverage.py, closing\n>  `issue 171`_.\n\n>- When coverage.py ended unsuccessfully, it may have reported odd errors like\n>  ``&#39;NoneType&#39; object has no attribute &#39;isabs&#39;``.  It no longer does,\n>  so kiss `issue 153`_ goodbye.\n\n>.. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files\n>.. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated\n>.. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in\n>.. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be\n>.. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages\n>.. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not\n>.. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution\n>.. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-certain-coverage-in-tests\n>.. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-to-work-in-coverage\n>.. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filename-triggers\n>.. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexecuted-file-shows-14\n>.. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-include-and-omit-filename\n>.. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-and-run-tests\n>.. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror-on-htmlpy\n>.. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-django-14-with-pydb-on\n>.. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setuppy-and\n>.. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filenames-reported-when-filename\n>.. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverage-more-friendly\n>.. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecoverage-fails-with-an-error\n>.. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-coverage-data-coverage-xml\n>.. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measures-itself-on-precise\n\n\n\n\n>### 3.5.3\n\n>----------------------------\n\n>- Line numbers in the HTML report line up better with the source lines, fixing\n>  `issue 197`_, thanks Marius Gedminas.\n\n>- When specifying a directory as the source= option, the directory itself no\n>  longer needs to have a ``__init__.py`` file, though its sub-directories do,\n>  to be considered as source files.\n\n>- Files encoded as UTF-8 with a BOM are now properly handled, fixing\n>  `issue 179`_.  Thanks, Pablo Carballo.\n\n>- Fixed more cases of non-Python files being reported as Python source, and\n>  then not being able to parse them as Python.  Closes `issue 82`_ (again).\n>  Thanks, Julian Berman.\n\n>- Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_.\n\n>- Optimized .pyo files may not have been handled correctly, `issue 195`_.\n>  Thanks, Marius Gedminas.\n\n>- Certain unusually named file paths could have been mangled during reporting,\n>  `issue 194`_.  Thanks, Marius Gedminas.\n\n>- Try to do a better job of the impossible task of detecting when we can&#39;t\n>  build the C extension, fixing `issue 183`_.\n\n>- Testing is now done with `tox`_, thanks, Marc Abramowitz.\n\n>.. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer\n>.. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is\n>.. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23\n>.. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle\n>.. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit\n>.. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align\n>.. _tox: http://tox.readthedocs.org/\n\n\n\n\n>### 3.5.2\n\n>----------------------------\n\n\n\n>### 3.5.2b1\n\n>------------------------------\n\n>- The HTML report has slightly tweaked controls: the buttons at the top of\n>  the page are color-coded to the source lines they affect.\n\n>- Custom CSS can be applied to the HTML report by specifying a CSS file as\n>  the ``extra_css`` configuration value in the ``[html]`` section.\n\n>- Source files with custom encodings declared in a comment at the top are now\n>  properly handled during reporting on Python 2.  Python 3 always handled them\n>  properly.  This fixes `issue 157`_.\n\n>- Backup files left behind by editors are no longer collected by the source=\n>  option, fixing `issue 168`_.\n\n>- If a file doesn&#39;t parse properly as Python, we don&#39;t report it as an error\n>  if the file name seems like maybe it wasn&#39;t meant to be Python.  This is a\n>  pragmatic fix for `issue 82`_.\n\n>- The ``-m`` switch on ``coverage report``, which includes missing line numbers\n>  in the summary report, can now be specified as ``show_missing`` in the\n>  config file.  Closes `issue 173`_.\n\n>- When running a module with ``coverage run -m &lt;modulename&gt;``, certain details\n>  of the execution environment weren&#39;t the same as for\n>  ``python -m &lt;modulename&gt;``.  This had the unfortunate side-effect of making\n>  ``coverage run -m unittest discover`` not work if you had tests in a\n>  directory named &quot;test&quot;.  This fixes `issue 155`_ and `issue 142`_.\n\n>- Now the exit status of your product code is properly used as the process\n>  status when running ``python -m coverage run ...``.  Thanks, JT Olds.\n\n>- When installing into pypy, we no longer attempt (and fail) to compile\n>  the C tracer function, closing `issue 166`_.\n\n>.. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced\n>.. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover\n>.. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8\n>.. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy\n>.. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings\n>.. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-specify-show-missing-in\n\n\n\n\n>### 3.5.2.b1\n\n\n\n\n\n>### 3.5.1\n\n>----------------------------\n\n>- The ``[paths]`` feature unfortunately didn&#39;t work in real world situations\n>  where you wanted to, you know, report on the combined data.  Now all paths\n>  stored in the combined file are canonicalized properly.\n\n\n\n\n>### 3.5.1b1\n\n>------------------------------\n\n>- When combining data files from parallel runs, you can now instruct\n>  coverage.py about which directories are equivalent on different machines.  A\n>  ``[paths]`` section in the configuration file lists paths that are to be\n>  considered equivalent.  Finishes `issue 17`_.\n\n>- for-else constructs are understood better, and don&#39;t cause erroneous partial\n>  branch warnings.  Fixes `issue 122`_.\n\n>- Branch coverage for ``with`` statements is improved, fixing `issue 128`_.\n\n>- The number of partial branches reported on the HTML summary page was\n>  different than the number reported on the individual file pages.  This is\n>  now fixed.\n\n>- An explicit include directive to measure files in the Python installation\n>  wouldn&#39;t work because of the standard library exclusion.  Now the include\n>  directive takes precedence, and the files will be measured.  Fixes\n>  `issue 138`_.\n\n>- The HTML report now handles Unicode characters in Python source files\n>  properly.  This fixes `issue 124`_ and `issue 144`_. Thanks, Devin\n>  Jeanpierre.\n\n>- In order to help the core developers measure the test coverage of the\n>  standard library, Brandon Rhodes devised an aggressive hack to trick Python\n>  into running some coverage.py code before anything else in the process.\n>  See the coverage/fullcoverage directory if you are interested.\n\n>.. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from\n>.. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch\n>.. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in\n>.. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-with-statement-in-27\n>.. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take-precedence-over-is\n>.. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-html-output-for\n\n\n\n\n>### 3.5\n\n>--------------------------\n\n>- The HTML report hotkeys now behave slightly differently when the current\n>  chunk isn&#39;t visible at all:  a chunk on the screen will be selected,\n>  instead of the old behavior of jumping to the literal next chunk.\n>  The hotkeys now work in Google Chrome.  Thanks, Guido van Rossum.\n\n\n\n\n>### 3.5b1\n\n>----------------------------\n\n>- The HTML report now has hotkeys.  Try ``n``, ``s``, ``m``, ``x``, ``b``,\n>  ``p``, and ``c`` on the overview page to change the column sorting.\n>  On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing,\n>  excluded, and partial line markings.  You can navigate the highlighted\n>  sections of code by using the ``j`` and ``k`` keys for next and previous.\n>  The ``1`` (one) key jumps to the first highlighted section in the file,\n>  and ``0`` (zero) scrolls to the top of the file.\n\n>- The ``--omit`` and ``--include`` switches now interpret their values more\n>  usefully.  If the value starts with a wildcard character, it is used as-is.\n>  If it does not, it is interpreted relative to the current directory.\n>  Closes `issue 121`_.\n\n>- Partial branch warnings can now be pragma&#39;d away.  The configuration option\n>  ``partial_branches`` is a list of regular expressions.  Lines matching any of\n>  those expressions will never be marked as a partial branch.  In addition,\n>  there&#39;s a built-in list of regular expressions marking statements which should\n>  never be marked as partial.  This list includes ``while True:``, ``while 1:``,\n>  ``if 1:``, and ``if 0:``.\n\n>- The ``coverage()`` constructor accepts single strings for the ``omit=`` and\n>  ``include=`` arguments, adapting to a common error in programmatic use.\n\n>- Modules can now be run directly using ``coverage run -m modulename``, to\n>  mirror Python&#39;s ``-m`` flag.  Closes `issue 95`_, thanks, Brandon Rhodes.\n\n>- ``coverage run`` didn&#39;t emulate Python accurately in one small detail: the\n>  current directory inserted into ``sys.path`` was relative rather than\n>  absolute. This is now fixed.\n\n>- HTML reporting is now incremental: a record is kept of the data that\n>  produced the HTML reports, and only files whose data has changed will\n>  be generated.  This should make most HTML reporting faster.\n\n>- Pathological code execution could disable the trace function behind our\n>  backs, leading to incorrect code measurement.  Now if this happens,\n>  coverage.py will issue a warning, at least alerting you to the problem.\n>  Closes `issue 93`_.  Thanks to Marius Gedminas for the idea.\n\n>- The C-based trace function now behaves properly when saved and restored\n>  with ``sys.gettrace()`` and ``sys.settrace()``.  This fixes `issue 125`_\n>  and `issue 123`_.  Thanks, Devin Jeanpierre.\n\n>- Source files are now opened with Python 3.2&#3","created_at":"2016-12-06T05:40:16Z","updated_at":"2016-12-09T06:39:19Z","closed_at":"2016-12-09T06:39:19Z","merged_at":"2016-12-09T06:39:19Z","merge_commit_sha":"8ec3898c393cfea6aed3eadfb2914657581aab70","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1/commits","review_comments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1/comments","review_comment_url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/1/comments","statuses_url":"https://api.github.com/repos/tanbro/exosip2ctypes/statuses/59bc5f14497d6f24047c05cea257eeafc2326eb4","head":{"label":"tanbro:pyup-initial-update","ref":"pyup-initial-update","sha":"59bc5f14497d6f24047c05cea257eeafc2326eb4","user":{"login":"tanbro","id":564168,"avatar_url":"https://avatars.githubusercontent.com/u/564168?v=3","gravatar_id":"","url":"https://api.github.com/users/tanbro","html_url":"https://github.com/tanbro","followers_url":"https://api.github.com/users/tanbro/followers","following_url":"https://api.github.com/users/tanbro/following{/other_user}","gists_url":"https://api.github.com/users/tanbro/gists{/gist_id}","starred_url":"https://api.github.com/users/tanbro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanbro/subscriptions","organizations_url":"https://api.github.com/users/tanbro/orgs","repos_url":"https://api.github.com/users/tanbro/repos","events_url":"https://api.github.com/users/tanbro/events{/privacy}","received_events_url":"https://api.github.com/users/tanbro/received_events","type":"User","site_admin":false},"repo":{"id":55747623,"name":"exosip2ctypes","full_name":"tanbro/exosip2ctypes","owner":{"login":"tanbro","id":564168,"avatar_url":"https://avatars.githubusercontent.com/u/564168?v=3","gravatar_id":"","url":"https://api.github.com/users/tanbro","html_url":"https://github.com/tanbro","followers_url":"https://api.github.com/users/tanbro/followers","following_url":"https://api.github.com/users/tanbro/following{/other_user}","gists_url":"https://api.github.com/users/tanbro/gists{/gist_id}","starred_url":"https://api.github.com/users/tanbro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanbro/subscriptions","organizations_url":"https://api.github.com/users/tanbro/orgs","repos_url":"https://api.github.com/users/tanbro/repos","events_url":"https://api.github.com/users/tanbro/events{/privacy}","received_events_url":"https://api.github.com/users/tanbro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tanbro/exosip2ctypes","description":"eXosip python wrapper","fork":false,"url":"https://api.github.com/repos/tanbro/exosip2ctypes","forks_url":"https://api.github.com/repos/tanbro/exosip2ctypes/forks","keys_url":"https://api.github.com/repos/tanbro/exosip2ctypes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tanbro/exosip2ctypes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tanbro/exosip2ctypes/teams","hooks_url":"https://api.github.com/repos/tanbro/exosip2ctypes/hooks","issue_events_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/events{/number}","events_url":"https://api.github.com/repos/tanbro/exosip2ctypes/events","assignees_url":"https://api.github.com/repos/tanbro/exosip2ctypes/assignees{/user}","branches_url":"https://api.github.com/repos/tanbro/exosip2ctypes/branches{/branch}","tags_url":"https://api.github.com/repos/tanbro/exosip2ctypes/tags","blobs_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/refs{/sha}","trees_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tanbro/exosip2ctypes/statuses/{sha}","languages_url":"https://api.github.com/repos/tanbro/exosip2ctypes/languages","stargazers_url":"https://api.github.com/repos/tanbro/exosip2ctypes/stargazers","contributors_url":"https://api.github.com/repos/tanbro/exosip2ctypes/contributors","subscribers_url":"https://api.github.com/repos/tanbro/exosip2ctypes/subscribers","subscription_url":"https://api.github.com/repos/tanbro/exosip2ctypes/subscription","commits_url":"https://api.github.com/repos/tanbro/exosip2ctypes/commits{/sha}","git_commits_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/commits{/sha}","comments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/comments{/number}","issue_comment_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/comments{/number}","contents_url":"https://api.github.com/repos/tanbro/exosip2ctypes/contents/{+path}","compare_url":"https://api.github.com/repos/tanbro/exosip2ctypes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tanbro/exosip2ctypes/merges","archive_url":"https://api.github.com/repos/tanbro/exosip2ctypes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tanbro/exosip2ctypes/downloads","issues_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues{/number}","pulls_url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls{/number}","milestones_url":"https://api.github.com/repos/tanbro/exosip2ctypes/milestones{/number}","notifications_url":"https://api.github.com/repos/tanbro/exosip2ctypes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tanbro/exosip2ctypes/labels{/name}","releases_url":"https://api.github.com/repos/tanbro/exosip2ctypes/releases{/id}","deployments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/deployments","created_at":"2016-04-08T03:35:09Z","updated_at":"2016-12-08T02:22:27Z","pushed_at":"2016-12-09T06:39:20Z","git_url":"git://github.com/tanbro/exosip2ctypes.git","ssh_url":"git@github.com:tanbro/exosip2ctypes.git","clone_url":"https://github.com/tanbro/exosip2ctypes.git","svn_url":"https://github.com/tanbro/exosip2ctypes","homepage":null,"size":141,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"tanbro:master","ref":"master","sha":"7573f36e1cb35516d52be3b4fe7b8993013ca593","user":{"login":"tanbro","id":564168,"avatar_url":"https://avatars.githubusercontent.com/u/564168?v=3","gravatar_id":"","url":"https://api.github.com/users/tanbro","html_url":"https://github.com/tanbro","followers_url":"https://api.github.com/users/tanbro/followers","following_url":"https://api.github.com/users/tanbro/following{/other_user}","gists_url":"https://api.github.com/users/tanbro/gists{/gist_id}","starred_url":"https://api.github.com/users/tanbro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanbro/subscriptions","organizations_url":"https://api.github.com/users/tanbro/orgs","repos_url":"https://api.github.com/users/tanbro/repos","events_url":"https://api.github.com/users/tanbro/events{/privacy}","received_events_url":"https://api.github.com/users/tanbro/received_events","type":"User","site_admin":false},"repo":{"id":55747623,"name":"exosip2ctypes","full_name":"tanbro/exosip2ctypes","owner":{"login":"tanbro","id":564168,"avatar_url":"https://avatars.githubusercontent.com/u/564168?v=3","gravatar_id":"","url":"https://api.github.com/users/tanbro","html_url":"https://github.com/tanbro","followers_url":"https://api.github.com/users/tanbro/followers","following_url":"https://api.github.com/users/tanbro/following{/other_user}","gists_url":"https://api.github.com/users/tanbro/gists{/gist_id}","starred_url":"https://api.github.com/users/tanbro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanbro/subscriptions","organizations_url":"https://api.github.com/users/tanbro/orgs","repos_url":"https://api.github.com/users/tanbro/repos","events_url":"https://api.github.com/users/tanbro/events{/privacy}","received_events_url":"https://api.github.com/users/tanbro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tanbro/exosip2ctypes","description":"eXosip python wrapper","fork":false,"url":"https://api.github.com/repos/tanbro/exosip2ctypes","forks_url":"https://api.github.com/repos/tanbro/exosip2ctypes/forks","keys_url":"https://api.github.com/repos/tanbro/exosip2ctypes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tanbro/exosip2ctypes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tanbro/exosip2ctypes/teams","hooks_url":"https://api.github.com/repos/tanbro/exosip2ctypes/hooks","issue_events_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/events{/number}","events_url":"https://api.github.com/repos/tanbro/exosip2ctypes/events","assignees_url":"https://api.github.com/repos/tanbro/exosip2ctypes/assignees{/user}","branches_url":"https://api.github.com/repos/tanbro/exosip2ctypes/branches{/branch}","tags_url":"https://api.github.com/repos/tanbro/exosip2ctypes/tags","blobs_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/refs{/sha}","trees_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tanbro/exosip2ctypes/statuses/{sha}","languages_url":"https://api.github.com/repos/tanbro/exosip2ctypes/languages","stargazers_url":"https://api.github.com/repos/tanbro/exosip2ctypes/stargazers","contributors_url":"https://api.github.com/repos/tanbro/exosip2ctypes/contributors","subscribers_url":"https://api.github.com/repos/tanbro/exosip2ctypes/subscribers","subscription_url":"https://api.github.com/repos/tanbro/exosip2ctypes/subscription","commits_url":"https://api.github.com/repos/tanbro/exosip2ctypes/commits{/sha}","git_commits_url":"https://api.github.com/repos/tanbro/exosip2ctypes/git/commits{/sha}","comments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/comments{/number}","issue_comment_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/comments{/number}","contents_url":"https://api.github.com/repos/tanbro/exosip2ctypes/contents/{+path}","compare_url":"https://api.github.com/repos/tanbro/exosip2ctypes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tanbro/exosip2ctypes/merges","archive_url":"https://api.github.com/repos/tanbro/exosip2ctypes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tanbro/exosip2ctypes/downloads","issues_url":"https://api.github.com/repos/tanbro/exosip2ctypes/issues{/number}","pulls_url":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls{/number}","milestones_url":"https://api.github.com/repos/tanbro/exosip2ctypes/milestones{/number}","notifications_url":"https://api.github.com/repos/tanbro/exosip2ctypes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tanbro/exosip2ctypes/labels{/name}","releases_url":"https://api.github.com/repos/tanbro/exosip2ctypes/releases{/id}","deployments_url":"https://api.github.com/repos/tanbro/exosip2ctypes/deployments","created_at":"2016-04-08T03:35:09Z","updated_at":"2016-12-08T02:22:27Z","pushed_at":"2016-12-09T06:39:20Z","git_url":"git://github.com/tanbro/exosip2ctypes.git","ssh_url":"git@github.com:tanbro/exosip2ctypes.git","clone_url":"https://github.com/tanbro/exosip2ctypes.git","svn_url":"https://github.com/tanbro/exosip2ctypes","homepage":null,"size":141,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1"},"html":{"href":"https://github.com/tanbro/exosip2ctypes/pull/1"},"issue":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/1"},"comments":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/tanbro/exosip2ctypes/statuses/59bc5f14497d6f24047c05cea257eeafc2326eb4"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"tanbro","id":564168,"avatar_url":"https://avatars.githubusercontent.com/u/564168?v=3","gravatar_id":"","url":"https://api.github.com/users/tanbro","html_url":"https://github.com/tanbro","followers_url":"https://api.github.com/users/tanbro/followers","following_url":"https://api.github.com/users/tanbro/following{/other_user}","gists_url":"https://api.github.com/users/tanbro/gists{/gist_id}","starred_url":"https://api.github.com/users/tanbro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanbro/subscriptions","organizations_url":"https://api.github.com/users/tanbro/orgs","repos_url":"https://api.github.com/users/tanbro/repos","events_url":"https://api.github.com/users/tanbro/events{/privacy}","received_events_url":"https://api.github.com/users/tanbro/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"commits":24,"additions":24,"deletions":24,"changed_files":3}}
{"actor":{"display_login":"tanbro"}}