Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #20

Merged
merged 21 commits into from
Aug 22, 2016
Merged

Initial Update #20

merged 21 commits into from
Aug 22, 2016

Conversation

pyup-bot
Copy link
Contributor

This 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.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Name used latest pypi
WTForms 2.0.2 2.1 pypi
Werkzeug 0.10.4 0.11.9 pypi
mongoengine 0.9.0 0.10.6 pypi
six 1.9.0 1.10.0 pypi
Jinja2 2.7.3 2.8 pypi
pytz 2015.2 2016.6.1 pypi
pytest 2.7.0 2.9.2 pypi
coveralls 0.5 1.1 pypi
uWSGI 2.0.10 2.0.13.1 pypi
pymongo 2.7.2 3.3.0 pypi
flask-mongoengine 0.7.1 0.7.5 pypi
Flask-RESTful 0.3.2 0.3.5 pypi
Flask 0.10.1 0.11.1 pypi
coverage 3.7.1 4.1 pypi
Flask-WTF 0.11 0.12 pypi
aniso8601 0.92 1.1.0 pypi
py 1.4.26 1.4.31 pypi
pylama 6.3.1 7.0.9 pypi
passlib 1.6.2 1.6.5 pypi
Flask-JWT 0.2.0 0.3.2 pypi
pytest-cov 1.8.1 2.3.0 pypi

Changelogs

Jinja2 2.7.3 -> 2.8

2.8


(codename Replacement, released on July 26th 2015)

  • Added target parameter to urlize function.
  • Added support for followsymlinks to the file system loader.
  • The truncate filter now counts the length.
  • Added equalto filter that helps with select filters.
  • Changed cache keys to use absolute file names if available
    instead of load names.
  • Fixed loop length calculation for some iterators.
  • Changed how Jinja2 enforces strings to be native strings in
    Python 2 to work when people break their default encoding.
  • Added :func:make_logging_undefined which returns an undefined
    object that logs failures into a logger.
  • If unmarshalling of cached data fails the template will be
    reloaded now.
  • Implemented a block set tag.
  • Default cache size was incrased to 400 from a low 50.
  • Fixed is number test to accept long integers in all Python versions.
  • Changed is number to accept Decimal as a number.
  • Added a check for default arguments followed by non-default arguments. This
    change makes {% macro m(x, y=1, z) %}...{% endmacro %} a syntax error. The
    previous behavior for this code was broken anyway (resulting in the default
    value being applied to y).
  • Add ability to use custom subclasses of jinja2.compiler.CodeGenerator and
    jinja2.runtime.Context by adding two new attributes to the environment
    (code_generator_class and context_class) (pull request 404).
  • added support for context/environment/evalctx decorator functions on
    the finalize callback of the environment.
  • escape query strings for urlencode properly. Previously slashes were not
    escaped in that place.
  • Add 'base' parameter to 'int' filter.

pytest 2.7.0 -> 2.9.2

2.9.2.dev1

Bug Fixes

  • fix 510: skip tests where one parameterize dimension was empty
    thanks Alex Stapleton for the Report and RonnyPfannschmidt
    for the PR
  • Fix Xfail does not work with condition keyword argument.
    Thanks astraw38_ for reporting the issue (1496) and tomviner
    for PR the (1524_).
  • Fix win32 path issue when puttinging custom config file with absolute path
    in pytest.main("-c your_absolute_path").
  • Fix maximum recursion depth detection when raised error class is not aware
    of unicode/encoded bytes.
    Thanks prusse-martin_ for the PR (1506_).
  • Fix pytest.mark.skip mark when used in strict mode.
    Thanks pquentin_ for the PR and RonnyPfannschmidt_ for
    showing how to fix the bug.
  • Minor improvements and fixes to the documentation.
    Thanks omarkohl_ for the PR.
  • Fix --fixtures to show all fixture definitions as opposed to just
    one per fixture name.
    Thanks to hackebrot_ for the PR.

.. _510: pytest-dev/pytest#510
.. _1506: pytest-dev/pytest#1506
.. _1496: https://github.com/pytest-dev/pytest/issue/1496
.. _1524: https://github.com/pytest-dev/pytest/issue/1524

.. _prusse-martin: https://github.com/prusse-martin
.. _astraw38: https://github.com/astraw38

2.9.1

Bug Fixes

  • Improve error message when a plugin fails to load.
    Thanks nicoddemus_ for the PR.
  • Fix (1178 <https://github.com/pytest-dev/pytest/issues/1178>):
    pytest.fail with non-ascii characters raises an internal pytest error.
    Thanks nicoddemus
    for the PR.
  • Fix (469): junit parses report.nodeid incorrectly, when params IDs
    contain ::. Thanks tomviner
    for the PR (1431_).
  • Fix (578 <https://github.com/pytest-dev/pytest/issues/578>): SyntaxErrors
    containing non-ascii lines at the point of failure generated an internal
    py.test error.
    Thanks asottile
    for the report and nicoddemus_ for the PR.
  • Fix (1437_): When passing in a bytestring regex pattern to parameterize
    attempt to decode it as utf-8 ignoring errors.
  • Fix (649_): parametrized test nodes cannot be specified to run on the command line.

.. _1437: pytest-dev/pytest#1437
.. _469: pytest-dev/pytest#469
.. _1431: pytest-dev/pytest#1431
.. _649: pytest-dev/pytest#649

.. _asottile: https://github.com/asottile

2.9.0

New Features

  • New pytest.mark.skip mark, which unconditionally skips marked tests.
    Thanks MichaelAquilina_ for the complete PR (1040_).
  • --doctest-glob may now be passed multiple times in the command-line.
    Thanks jab_ and nicoddemus_ for the PR.
  • New -rp and -rP reporting options give the summary and full output
    of passing tests, respectively. Thanks to codewarrior0_ for the PR.
  • pytest.mark.xfail now has a strict option, which makes XPASS
    tests to fail the test suite (defaulting to False). There's also a
    xfail_strict ini option that can be used to configure it project-wise.
    Thanks rabbbit_ for the request and nicoddemus_ for the PR (1355_).
  • Parser.addini now supports options of type bool.
    Thanks nicoddemus_ for the PR.
  • New ALLOW_BYTES doctest option. This strips b prefixes from byte strings
    in doctest output (similar to ALLOW_UNICODE).
    Thanks jaraco_ for the request and nicoddemus_ for the PR (1287_).
  • Give a hint on KeyboardInterrupt to use the --fulltrace option to show the errors.
    Fixes 1366.
    Thanks to hpk42
    for the report and RonnyPfannschmidt_ for the PR.
  • Catch IndexError exceptions when getting exception source location.
    Fixes a pytest internal error for dynamically generated code (fixtures and tests)
    where source lines are fake by intention.

Changes

  • Important: py.code <https://pylib.readthedocs.io/en/latest/code.html>_ has been
    merged into the pytest repository as pytest._code. This decision
    was made because py.code had very few uses outside pytest and the
    fact that it was in a different repository made it difficult to fix bugs on
    its code in a timely manner. The team hopes with this to be able to better
    refactor out and improve that code.
    This change shouldn't affect users, but it is useful to let users aware
    if they encounter any strange behavior.

    Keep in mind that the code for pytest._code is private and
    experimental, so you definitely should not import it explicitly!

    Please note that the original py.code is still available in
    pylib <https://pylib.readthedocs.io>_.

  • pytest_enter_pdb now optionally receives the pytest config object.
    Thanks nicoddemus_ for the PR.

  • Removed code and documentation for Python 2.5 or lower versions,
    including removal of the obsolete _pytest.assertion.oldinterpret module.
    Thanks nicoddemus_ for the PR (1226_).

  • Comparisons now always show up in full when CI or BUILD_NUMBER is
    found in the environment, even when -vv isn't used.
    Thanks The-Compiler_ for the PR.

  • --lf and --ff now support long names: --last-failed and
    --failed-first respectively.
    Thanks MichaelAquilina_ for the PR.

  • Added expected exceptions to pytest.raises fail message.

  • Collection only displays progress ("collecting X items") when in a terminal.
    This avoids cluttering the output when using --color=yes to obtain
    colors in CI integrations systems (1397_).

Bug Fixes

  • The -s and -c options should now work under xdist;
    Config.fromdictargs now represents its input much more faithfully.
    Thanks to bukzor_ for the complete PR (680_).
  • Fix (1290): support Python 3.5's ````operator in assertion rewriting.
    ThanksShinkenjoe
    for report with test case and `tomviner`_ for the PR.
  • Fix formatting utf-8 explanation messages (1379).
    Thanks biern
    for the PR.
  • Fix traceback style docs_ to describe all of the available options
    (auto/long/short/line/native/no), with auto being the default since v2.6.
    Thanks hackebrot_ for the PR.
  • Fix (1422_): junit record_xml_property doesn't allow multiple records
    with same name.

.. _traceback style docs: https://pytest.org/latest/usage.htmlmodifying-python-traceback-printing

.. _1422: pytest-dev/pytest#1422
.. _1379: pytest-dev/pytest#1379
.. _1366: pytest-dev/pytest#1366
.. _1040: pytest-dev/pytest#1040
.. _680: pytest-dev/pytest#680
.. _1287: pytest-dev/pytest#1287
.. _1226: pytest-dev/pytest#1226
.. _1290: pytest-dev/pytest#1290
.. _1355: pytest-dev/pytest#1355
.. _1397: pytest-dev/pytest#1397
.. _biern: https://github.com/biern
.. _MichaelAquilina: https://github.com/MichaelAquilina
.. _bukzor: https://github.com/bukzor
.. _hpk42: https://github.com/hpk42
.. _nicoddemus: https://github.com/nicoddemus
.. _jab: https://github.com/jab
.. _codewarrior0: https://github.com/codewarrior0
.. _jaraco: https://github.com/jaraco
.. _The-Compiler: https://github.com/The-Compiler
.. _Shinkenjoe: https://github.com/Shinkenjoe
.. _tomviner: https://github.com/tomviner
.. _RonnyPfannschmidt: https://github.com/RonnyPfannschmidt
.. _rabbbit: https://github.com/rabbbit
.. _hackebrot: https://github.com/hackebrot
.. _omarkohl: https://github.com/omarkohl
.. _pquentin: https://github.com/pquentin

2.8.7

  • fix 1338: use predictable object resolution for monkeypatch

2.8.6

  • fix 1259: allow for double nodeids in junitxml,
    this was a regression failing plugins combinations
    like pytest-pep8 + pytest-flakes
  • Workaround for exception that occurs in pyreadline when using
    --pdb with standard I/O capture enabled.
    Thanks Erik M. Bray for the PR.
  • fix 900: Better error message in case the target of a monkeypatch call
    raises an ImportError.
  • fix 1292: monkeypatch calls (setattr, setenv, etc.) are now O(1).
    Thanks David R. MacIver for the report and Bruno Oliveira for the PR.
  • fix 1223: captured stdout and stderr are now properly displayed before
    entering pdb when --pdb is used instead of being thrown away.
    Thanks Cal Leeming for the PR.
  • fix 1305: pytest warnings emitted during pytest_terminal_summary are now
    properly displayed.
    Thanks Ionel Maries Cristian for the report and Bruno Oliveira for the PR.
  • fix 628: fixed internal UnicodeDecodeError when doctests contain unicode.
    Thanks Jason R. Coombs for the report and Bruno Oliveira for the PR.
  • fix 1334: Add captured stdout to jUnit XML report on setup error.
    Thanks Georgy Dyuldin for the PR.

2.8.5

  • fix 1243: fixed issue where class attributes injected during collection could break pytest.
    PR by Alexei Kozlenok, thanks Ronny Pfannschmidt and Bruno Oliveira for the review and help.
  • fix 1074: precompute junitxml chunks instead of storing the whole tree in objects
    Thanks Bruno Oliveira for the report and Ronny Pfannschmidt for the PR
  • fix 1238: fix pytest.deprecated_call() receiving multiple arguments
    (Regression introduced in 2.8.4). Thanks Alex Gaynor for the report and
    Bruno Oliveira for the PR.

2.8.4

  • fix 1190: deprecated_call() now works when the deprecated
    function has been already called by another test in the same
    module. Thanks Mikhail Chernykh for the report and Bruno Oliveira for the
    PR.
  • fix 1198: --pastebin option now works on Python 3. Thanks
    Mehdy Khoshnoody for the PR.
  • fix 1219: --pastebin now works correctly when captured output contains
    non-ascii characters. Thanks Bruno Oliveira for the PR.
  • fix 1204: another error when collecting with a nasty getattr().
    Thanks Florian Bruhin for the PR.
  • fix the summary printed when no tests did run.
    Thanks Florian Bruhin for the PR.
  • fix 1185 - ensure MANIFEST.in exactly matches what should go to a sdist
  • a number of documentation modernizations wrt good practices.
    Thanks Bruno Oliveira for the PR.

2.8.3

  • fix 1169: add name attribute to testcases in TestCaseFunction to
    support the unittest.skip decorator on functions and methods.
    Thanks Lee Kamentsky for the PR.
  • fix 1035: collecting tests if test module level obj has getattr().
    Thanks Suor for the report and Bruno Oliveira / Tom Viner for the PR.
  • fix 331: don't collect tests if their failure cannot be reported correctly
    e.g. they are a callable instance of a class.
  • fix 1133: fixed internal error when filtering tracebacks where one entry
    belongs to a file which is no longer available.
    Thanks Bruno Oliveira for the PR.
  • enhancement made to highlight in red the name of the failing tests so
    they stand out in the output.
    Thanks Gabriel Reis for the PR.
  • add more talks to the documentation
  • extend documentation on the --ignore cli option
  • use pytest-runner for setuptools integration
  • minor fixes for interaction with OS X El Capitan
    system integrity protection (thanks Florian)

2.8.2

  • fix 1085: proper handling of encoding errors when passing encoded byte
    strings to pytest.parametrize in Python 2.
    Thanks Themanwithoutaplan for the report and Bruno Oliveira for the PR.
  • fix 1087: handling SystemError when passing empty byte strings to
    pytest.parametrize in Python 3.
    Thanks Paul Kehrer for the report and Bruno Oliveira for the PR.
  • fix 995: fixed internal error when filtering tracebacks where one entry
    was generated by an exec() statement.
    Thanks Daniel Hahler, Ashley C Straw, Philippe Gauthier and Pavel Savchenko
    for contributing and Bruno Oliveira for the PR.
  • fix 1100 and 1057: errors when using autouse fixtures and doctest modules.
    Thanks Sergey B Kirpichev and Vital Kudzelka for contributing and Bruno
    Oliveira for the PR.

2.8.1

  • fix 1034: Add missing nodeid on pytest_logwarning call in
    addhook. Thanks Simon Gomizelj for the PR.
  • 'deprecated_call' is now only satisfied with a DeprecationWarning or
    PendingDeprecationWarning. Before 2.8.0, it accepted any warning, and 2.8.0
    made it accept only DeprecationWarning (but not PendingDeprecationWarning).
    Thanks Alex Gaynor for the issue and Eric Hunsberger for the PR.
  • fix issue 1073: avoid calling getattr on potential plugin objects.
    This fixes an incompatibility with pytest-django. Thanks Andreas Pelme,
    Bruno Oliveira and Ronny Pfannschmidt for contributing and Holger Krekel
    for the fix.
  • Fix issue 704: handle versionconflict during plugin loading more
    gracefully. Thanks Bruno Oliveira for the PR.
  • Fix issue 1064: ""--junitxml" regression when used with the
    "pytest-xdist" plugin, with test reports being assigned to the wrong tests.
    Thanks Daniel Grunwald for the report and Bruno Oliveira for the PR.
  • (experimental) adapt more SEMVER style versioning and change meaning of
    master branch in git repo: "master" branch now keeps the bugfixes, changes
    aimed for micro releases. "features" branch will only be be released
    with minor or major pytest releases.
  • Fix issue 766 by removing documentation references to distutils.
    Thanks Russel Winder.
  • Fix issue 1030: now byte-strings are escaped to produce item node ids
    to make them always serializable.
    Thanks Andy Freeland for the report and Bruno Oliveira for the PR.
  • Python 2: if unicode parametrized values are convertible to ascii, their
    ascii representation is used for the node id.
  • Fix issue 411: Add eq method to assertion comparison example.
    Thanks Ben Webb.
  • Fix issue 653: deprecated_call can be used as context manager.
  • fix issue 877: properly handle assertion explanations with non-ascii repr
    Thanks Mathieu Agopian for the report and Ronny Pfannschmidt for the PR.
  • fix issue 1029: transform errors when writing cache values into pytest-warnings

2.8.0

  • new --lf and -ff options to run only the last failing tests or
    "failing tests first" from the last run. This functionality is provided
    through porting the formerly external pytest-cache plugin into pytest core.
    BACKWARD INCOMPAT: if you used pytest-cache's functionality to persist
    data between test runs be aware that we don't serialize sets anymore.
    Thanks Ronny Pfannschmidt for most of the merging work.

  • "-r" option now accepts "a" to include all possible reports, similar
    to passing "fEsxXw" explicitly (isse960).
    Thanks Abhijeet Kasurde for the PR.

  • avoid python3.5 deprecation warnings by introducing version
    specific inspection helpers, thanks Michael Droettboom.

  • fix issue562: nose.tools.istest now fully respected.

  • fix issue934: when string comparison fails and a diff is too large to display
    without passing -vv, still show a few lines of the diff.
    Thanks Florian Bruhin for the report and Bruno Oliveira for the PR.

  • fix issue736: Fix a bug where fixture params would be discarded when combined
    with parametrization markers.
    Thanks to Markus Unterwaditzer for the PR.

  • fix issue710: introduce ALLOW_UNICODE doctest option: when enabled, the
    u prefix is stripped from unicode strings in expected doctest output. This
    allows doctests which use unicode to run in Python 2 and 3 unchanged.
    Thanks Jason R. Coombs for the report and Bruno Oliveira for the PR.

  • parametrize now also generates meaningful test IDs for enum, regex and class
    objects (as opposed to class instances).
    Thanks to Florian Bruhin for the PR.

  • Add 'warns' to assert that warnings are thrown (like 'raises').
    Thanks to Eric Hunsberger for the PR.

  • Fix issue683: Do not apply an already applied mark. Thanks ojake for the PR.

  • Deal with capturing failures better so fewer exceptions get lost to
    /dev/null. Thanks David Szotten for the PR.

  • fix issue730: deprecate and warn about the --genscript option.
    Thanks Ronny Pfannschmidt for the report and Christian Pommranz for the PR.

  • fix issue751: multiple parametrize with ids bug if it parametrizes class with
    two or more test methods. Thanks Sergey Chipiga for reporting and Jan
    Bednarik for PR.

  • fix issue82: avoid loading conftest files from setup.cfg/pytest.ini/tox.ini
    files and upwards by default (--confcutdir can still be set to override this).
    Thanks Bruno Oliveira for the PR.

  • fix issue768: docstrings found in python modules were not setting up session
    fixtures. Thanks Jason R. Coombs for reporting and Bruno Oliveira for the PR.

  • added tmpdir_factory, a session-scoped fixture that can be used to create
    directories under the base temporary directory. Previously this object was
    installed as a _tmpdirhandler attribute of the config object, but now it
    is part of the official API and using config._tmpdirhandler is
    deprecated.
    Thanks Bruno Oliveira for the PR.

  • fix issue808: pytest's internal assertion rewrite hook now implements the
    optional PEP302 get_data API so tests can access data files next to them.
    Thanks xmo-odoo for request and example and Bruno Oliveira for
    the PR.

  • rootdir and inifile are now displayed during usage errors to help
    users diagnose problems such as unexpected ini files which add
    unknown options being picked up by pytest. Thanks to Pavel Savchenko for
    bringing the problem to attention in 821 and Bruno Oliveira for the PR.

  • Summary bar now is colored yellow for warning
    situations such as: all tests either were skipped or xpass/xfailed,
    or no tests were run at all (this is a partial fix for issue500).

  • fix issue812: pytest now exits with status code 5 in situations where no
    tests were run at all, such as the directory given in the command line does
    not contain any tests or as result of a command line option filters
    all out all tests (-k for example).
    Thanks Eric Siegerman (issue812) and Bruno Oliveira for the PR.

  • Summary bar now is colored yellow for warning
    situations such as: all tests either were skipped or xpass/xfailed,
    or no tests were run at all (related to issue500).
    Thanks Eric Siegerman.

  • New testpaths ini option: list of directories to search for tests
    when executing pytest from the root directory. This can be used
    to speed up test collection when a project has well specified directories
    for tests, being usually more practical than configuring norecursedirs for
    all directories that do not contain tests.
    Thanks to Adrian for idea (694) and Bruno Oliveira for the PR.

  • fix issue713: JUnit XML reports for doctest failures.
    Thanks Punyashloka Biswal.

  • fix issue970: internal pytest warnings now appear as "pytest-warnings" in
    the terminal instead of "warnings", so it is clear for users that those
    warnings are from pytest and not from the builtin "warnings" module.
    Thanks Bruno Oliveira.

  • Include setup and teardown in junitxml test durations.
    Thanks Janne Vanhala.

  • fix issue735: assertion failures on debug versions of Python 3.4+

  • new option --import-mode to allow to change test module importing
    behaviour to append to sys.path instead of prepending. This better allows
    to run test modules against installated versions of a package even if the
    package under test has the same import root. In this example::

     testing/__init__.py
     testing/test_pkg_under_test.py
     pkg_under_test/
    

    the tests will run against the installed version
    of pkg_under_test when --import-mode=append is used whereas
    by default they would always pick up the local version. Thanks Holger Krekel.

  • pytester: add method TmpTestdir.delete_loaded_modules(), and call it
    from inline_run() to allow temporary modules to be reloaded.
    Thanks Eduardo Schettino.

  • internally refactor pluginmanager API and code so that there
    is a clear distinction between a pytest-agnostic rather simple
    pluginmanager and the PytestPluginManager which adds a lot of
    behaviour, among it handling of the local conftest files.
    In terms of documented methods this is a backward compatible
    change but it might still break 3rd party plugins which relied on
    details like especially the pluginmanager.add_shutdown() API.
    Thanks Holger Krekel.

  • pluginmanagement: introduce pytest.hookimpl and
    pytest.hookspec decorators for setting impl/spec
    specific parameters. This substitutes the previous
    now deprecated use of pytest.mark which is meant to
    contain markers for test functions only.

  • write/refine docs for "writing plugins" which now have their
    own page and are separate from the "using/installing plugins`` page.

  • fix issue732: properly unregister plugins from any hook calling
    sites allowing to have temporary plugins during test execution.

  • deprecate and warn about __multicall__ argument in hook
    implementations. Use the hookwrapper mechanism instead already
    introduced with pytest-2.7.

  • speed up pytest's own test suite considerably by using inprocess
    tests by default (testrun can be modified with --runpytest=subprocess
    to create subprocesses in many places instead). The main
    APIs to run pytest in a test is "runpytest()" or "runpytest_subprocess"
    and "runpytest_inprocess" if you need a particular way of running
    the test. In all cases you get back a RunResult but the inprocess
    one will also have a "reprec" attribute with the recorded events/reports.

  • fix monkeypatch.setattr("x.y", raising=False) to actually not raise
    if "y" is not a pre-existing attribute. Thanks Florian Bruhin.

  • fix issue741: make running output from testdir.run copy/pasteable
    Thanks Bruno Oliveira.

  • add a new --noconftest argument which ignores all conftest.py files.

  • add file and line attributes to JUnit-XML output.

  • fix issue890: changed extension of all documentation files from txt to
    rst. Thanks to Abhijeet for the PR.

  • fix issue714: add ability to apply indirect=True parameter on particular argnames.
    Thanks Elizaveta239.

  • fix issue890: changed extension of all documentation files from txt to
    rst. Thanks to Abhijeet for the PR.

  • fix issue957: " doctest: SKIP" option will now register doctests as SKIPPED
    rather than PASSED.
    Thanks Thomas Grainger for the report and Bruno Oliveira for the PR.

  • issue951: add new record_xml_property fixture, that supports logging
    additional information on xml output. Thanks David Diaz for the PR.

  • issue949: paths after normal options (for example -s, -v, etc) are now
    properly used to discover rootdir and ini files.
    Thanks Peter Lauri for the report and Bruno Oliveira for the PR.

2.7.3

  • Allow 'dev', 'rc', or other non-integer version strings in importorskip.
    Thanks to Eric Hunsberger for the PR.
  • fix issue856: consider --color parameter in all outputs (for example
    --fixtures). Thanks Barney Gale for the report and Bruno Oliveira for the PR.
  • fix issue855: passing str objects as plugins argument to pytest.main
    is now interpreted as a module name to be imported and registered as a
    plugin, instead of silently having no effect.
    Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
  • fix issue744: fix for ast.Call changes in Python 3.5+. Thanks
    Guido van Rossum, Matthias Bussonnier, Stefan Zimmermann and
    Thomas Kluyver.
  • fix issue842: applying markers in classes no longer propagate this markers
    to superclasses which also have markers.
    Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
  • preserve warning functions after call to pytest.deprecated_call. Thanks
    Pieter Mulder for PR.
  • fix issue854: autouse yield_fixtures defined as class members of
    unittest.TestCase subclasses now work as expected.
    Thannks xmo-odoo for the report and Bruno Oliveira for the PR.
  • fix issue833: --fixtures now shows all fixtures of collected test files, instead of just the
    fixtures declared on the first one.
    Thanks Florian Bruhin for reporting and Bruno Oliveira for the PR.
  • fix issue863: skipped tests now report the correct reason when a skip/xfail
    condition is met when using multiple markers.
    Thanks Raphael Pierzina for reporting and Bruno Oliveira for the PR.
  • optimized tmpdir fixture initialization, which should make test sessions
    faster (specially when using pytest-xdist). The only visible effect
    is that now pytest uses a subdirectory in the $TEMP directory for all
    directories created by this fixture (defaults to $TEMP/pytest-$USER).
    Thanks Bruno Oliveira for the PR.

2.7.2

  • fix issue767: pytest.raises value attribute does not contain the exception
    instance on Python 2.6. Thanks Eric Siegerman for providing the test
    case and Bruno Oliveira for PR.
  • Automatically create directory for junitxml and results log.
    Thanks Aron Curzon.
  • fix issue713: JUnit XML reports for doctest failures.
    Thanks Punyashloka Biswal.
  • fix issue735: assertion failures on debug versions of Python 3.4+
    Thanks Benjamin Peterson.
  • fix issue114: skipif marker reports to internal skipping plugin;
    Thanks Floris Bruynooghe for reporting and Bruno Oliveira for the PR.
  • fix issue748: unittest.SkipTest reports to internal pytest unittest plugin.
    Thanks Thomas De Schampheleire for reporting and Bruno Oliveira for the PR.
  • fix issue718: failed to create representation of sets containing unsortable
    elements in python 2. Thanks Edison Gustavo Muenz.
  • fix issue756, fix issue752 (and similar issues): depend on py-1.4.29
    which has a refined algorithm for traceback generation.

2.7.1

  • fix issue731: do not get confused by the braces which may be present
    and unbalanced in an object's repr while collapsing False
    explanations. Thanks Carl Meyer for the report and test case.
  • fix issue553: properly handling inspect.getsourcelines failures in
    FixtureLookupError which would lead to to an internal error,
    obfuscating the original problem. Thanks talljosh for initial
    diagnose/patch and Bruno Oliveira for final patch.
  • fix issue660: properly report scope-mismatch-access errors
    independently from ordering of fixture arguments. Also
    avoid the pytest internal traceback which does not provide
    information to the user. Thanks Holger Krekel.
  • streamlined and documented release process. Also all versions
    (in setup.py and documentation generation) are now read
    from _pytest/init.py. Thanks Holger Krekel.
  • fixed docs to remove the notion that yield-fixtures are experimental.
    They are here to stay :) Thanks Bruno Oliveira.
  • Support building wheels by using environment markers for the
    requirements. Thanks Ionel Maries Cristian.
  • fixed regression to 2.6.4 which surfaced e.g. in lost stdout capture printing
    when tests raised SystemExit. Thanks Holger Krekel.
  • reintroduced _pytest fixture of the pytester plugin which is used
    at least by pytest-xdist.

coveralls 0.5 -> 1.1

1.1

* Suupport for Circle CI



### 1.0

  • Official coverage 4.0 support

1.0b1

* Coverage 4 beta support
* Codeship experimetal support (CI_BRANCH env variable)
* Drop python 3.2 support (as coverage 4 does not support it)
* Repo token usage is deprecated (but still supported) in favor of env variable.
* Error reporting is improved, exist status codes added



### 1.0a2

  • Fix latest alpha coverage.py support
  • Remove erroneous warning message when writing output to a file

1.0a1

* **Backwards incompatible**: make pyyaml optional. If you're using .coveralls.yml, make sure to install coveralls[yaml]
* Coverage 4 alpha support
* Allow debug and output options to work without repo_token
* Fix merge command for python 3.X






pymongo 2.7.2 -> 3.3.0

3.3

  • C extensions support on big endian systems.
  • Kerberos authentication support on Windows using WinKerberos <https://pypi.python.org/pypi/winkerberos>_.
  • A new ssl_clrfile option to support certificate revocation lists.
  • A new ssl_pem_passphrase option to support encrypted key files.
  • Support for publishing server discovery and monitoring events. See
    :mod:~pymongo.monitoring for details.
  • New connection pool options minPoolSize and maxIdleTimeMS.
  • New heartbeatFrequencyMS option controls the rate at which background
    monitoring threads re-check servers. Default is once every 10 seconds.

.. warning:: PyMongo 3.3 drops support for MongoDB versions older than 2.4.
It also drops support for python 3.2 (pypy3 continues to be supported).

Issues Resolved
...............

See the PyMongo 3.3 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.3 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16005

3.2.2

a fix for using the connect option in the MongoDB URI and support for setting
the batch size for a query to 1 when using MongoDB 3.2+.

Issues Resolved
...............

See the PyMongo 3.2.2 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.2.2 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16538

3.2.1

running the mapreduce command twice when calling the
:meth:~pymongo.collection.Collection.inline_map_reduce method and a
:exc:TypeError being raised when calling
:meth:~gridfs.GridFSBucket.download_to_stream. This release also
improves error messaging around BSON decoding.

Issues Resolved
...............

See the PyMongo 3.2.1 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.2.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16312

3.2


Version 3.2 implements the new server features introduced in MongoDB 3.2.

Highlights include:

  • Full support for MongoDB 3.2 including:
    • Support for :class:~pymongo.read_concern.ReadConcern
    • :class:~pymongo.write_concern.WriteConcern is now applied to
      :meth:~pymongo.collection.Collection.find_one_and_replace,
      :meth:~pymongo.collection.Collection.find_one_and_update, and
      :meth:~pymongo.collection.Collection.find_one_and_delete.
    • Support for the new bypassDocumentValidation option in write
      helpers.
  • Support for reading and writing raw BSON with
    :class:~bson.raw_bson.RawBSONDocument

.. note:: Certain :class:~pymongo.mongo_client.MongoClient properties now
block until a connection is established or raise
:exc:~pymongo.errors.ServerSelectionTimeoutError if no server is available.
See :class:~pymongo.mongo_client.MongoClient for details.

3.1.1

regression in error handling for oversize command documents and interrupt
handling issues in the C extensions.

Issues Resolved
...............

See the PyMongo 3.1.1 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.1.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16211

3.1

of 3.0.3.

Highlights include:

  • Command monitoring support. See :mod:~pymongo.monitoring for details.
  • Configurable error handling for :exc:UnicodeDecodeError. See the
    unicode_decode_error_handler option of
    :class:~bson.codec_options.CodecOptions.
  • Optional automatic timezone conversion when decoding BSON datetime. See the
    tzinfo option of :class:~bson.codec_options.CodecOptions.
  • An implementation of :class:~gridfs.GridFSBucket from the new GridFS spec.
  • Compliance with the new Connection String spec.
  • Reduced idle CPU usage in Python 2.

Changes in internal classes
...........................

The private PeriodicExecutor class no longer takes a condition_class
option, and the private thread_util.Event class is removed.

Issues Resolved
...............

See the PyMongo 3.1 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/14796

3.0.3

feature breaking bug in the GSSAPI implementation.

Issues Resolved
...............

See the PyMongo 3.0.3 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.0.3 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/15528

3.0.2

importantly a bug that could route operations to replica set members
that are not in primary or secondary state when using
:class:~pymongo.read_preferences.PrimaryPreferred or
:class:~pymongo.read_preferences.Nearest. It is a recommended upgrade for
all users of PyMongo 3.0.x.

Issues Resolved
...............

See the PyMongo 3.0.2 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.0.2 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/15430

3.0.1

importantly a bug in GridFS.delete that could prevent file chunks from
actually being deleted.

Issues Resolved
...............

See the PyMongo 3.0.1 release notes in JIRA_ for the list of resolved issues
in this release.

.. _PyMongo 3.0.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/15322

3.0


PyMongo 3.0 is a partial rewrite of PyMongo bringing a large number of
improvements:

  • A unified client class. MongoClient is the one and only client class for
    connecting to a standalone mongod, replica set, or sharded cluster. Migrating
    from a standalone, to a replica set, to a sharded cluster can be accomplished
    with only a simple URI change.
  • MongoClient is much more responsive to configuration changes in your MongoDB
    deployment. All connected servers are monitored in a non-blocking manner.
    Slow to respond or down servers no longer block server discovery, reducing
    application startup time and time to respond to new or reconfigured
    servers and replica set failovers.
  • A unified CRUD API. All official MongoDB drivers now implement a standard
    CRUD API allowing polyglot developers to move from language to language
    with ease.
  • Single source support for Python 2.x and 3.x. PyMongo no longer relies on
    2to3 to support Python 3.
  • A rewritten pure Python BSON implementation, improving performance
    with pypy and cpython deployments without support for C extensions.
  • Better support for greenlet based async frameworks including eventlet.
  • Immutable client, database, and collection classes, avoiding a host of thread
    safety issues in client applications.

PyMongo 3.0 brings a large number of API changes. Be sure to read the changes
listed below before upgrading from PyMongo 2.x.

.. warning:: PyMongo no longer supports Python 2.4, 2.5, or 3.1. If you
must use PyMongo with these versions of Python the 2.x branch of PyMongo
will be minimally supported for some time.

SONManipulator changes
......................

The :class:~pymongo.son_manipulator.SONManipulator API has limitations as a
technique for transforming your data. Instead, it is more flexible and
straightforward to transform outgoing documents in your own code before passing
them to PyMongo, and transform incoming documents after receiving them from
PyMongo.

Thus the :meth:~pymongo.database.Database.add_son_manipulator method is
deprecated. PyMongo 3's new CRUD API does not apply SON manipulators to
documents passed to :meth:~pymongo.collection.Collection.bulk_write,
:meth:~pymongo.collection.Collection.insert_one,
:meth:~pymongo.collection.Collection.insert_many,
:meth:~pymongo.collection.Collection.update_one, or
:meth:~pymongo.collection.Collection.update_many. SON manipulators are not
applied to documents returned by the new methods
:meth:~pymongo.collection.Collection.find_one_and_delete,
:meth:~pymongo.collection.Collection.find_one_and_replace, and
:meth:~pymongo.collection.Collection.find_one_and_update.

SSL/TLS changes
...............

When ssl is True the ssl_cert_reqs option now defaults to
:attr:ssl.CERT_REQUIRED if not provided. PyMongo will attempt to load OS
provided CA certificates to verify the server, raising
:exc:~pymongo.errors.ConfigurationError if it cannot.

Gevent Support
..............

In previous versions, PyMongo supported Gevent in two modes: you could call
gevent.monkey.patch_socket() and pass use_greenlets=True to
:class:~pymongo.mongo_client.MongoClient, or you could simply call
gevent.monkey.patch_all() and omit the use_greenlets argument.

In PyMongo 3.0, the use_greenlets option is gone. To use PyMongo with
Gevent simply call gevent.monkey.patch_all().

For more information,
see :doc:PyMongo's Gevent documentation <examples/gevent>.

:class:~pymongo.mongo_client.MongoClient changes
..................................................

:class:~pymongo.mongo_client.MongoClient is now the one and only
client class for a standalone server, mongos, or replica set.
It includes the functionality that had been split into
MongoReplicaSetClient: it can connect to a replica set, discover all its
members, and monitor the set for stepdowns, elections, and reconfigs.
:class:~pymongo.mongo_client.MongoClient now also supports the full
:class:~pymongo.read_preferences.ReadPreference API.

The obsolete classes MasterSlaveConnection, Connection, and
ReplicaSetConnection are removed.

The :class:~pymongo.mongo_client.MongoClient constructor no
longer blocks while connecting to the server or servers, and it no
longer raises :class:~pymongo.errors.ConnectionFailure if they
are unavailable, nor :class:~pymongo.errors.ConfigurationError
if the user's credentials are wrong. Instead, the constructor
returns immediately and launches the connection process on
background threads. The connect option is added to control whether
these threads are started immediately, or when the client is first used.

Therefore the alive method is removed since it no longer provides meaningful
information; even if the client is disconnected, it may discover a server in
time to fulfill the next operation.

In PyMongo 2.x, :class:~pymongo.mongo_client.MongoClient accepted a list of
standalone MongoDB servers and used the first it could connect to::

MongoClient(['host1.com:27017', 'host2.com:27017'])

A list of multiple standalones is no longer supported; if multiple servers
are listed they must be members of the same replica set, or mongoses in the
same sharded cluster.

The behavior for a list of mongoses is changed from "high availability" to
"load balancing". Before, the client connected to the lowest-latency mongos in
the list, and used it until a network error prompted it to re-evaluate all
mongoses' latencies and reconnect to one of them. In PyMongo 3, the client
monitors its network latency to all the mongoses continuously, and distributes
operations evenly among those with the lowest latency.
See :ref:mongos-load-balancing for more information.

The client methods start_request, in_request, and end_request
are removed, and so is the auto_start_request option. Requests were
designed to make read-your-writes consistency more likely with the w=0
write concern. Additionally, a thread in a request used the same member for
all secondary reads in a replica set. To ensure read-your-writes consistency
in PyMongo 3.0, do not override the default write concern with w=0, and
do not override the default :ref:read preference <secondary-reads> of
PRIMARY.

Support for the slaveOk (or slave_okay), safe, and
network_timeout options has been removed. Use
:attr:~pymongo.read_preferences.ReadPreference.SECONDARY_PREFERRED instead of
slave_okay. Accept the default write concern, acknowledged writes, instead of
setting safe=True. Use socketTimeoutMS in place of network_timeout (note that
network_timeout was in seconds, where as socketTimeoutMS is milliseconds).

The max_pool_size option has been removed. It is replaced by the
maxPoolSize MongoDB URI option. maxPoolSize is now a supported URI
option in PyMongo and can be passed as a keyword argument.

The copy_database method is removed, see the
:doc:copy_database examples </examples/copydb> for alternatives.

The disconnect method is removed. Use
:meth:~pymongo.mongo_client.MongoClient.close instead.

The get_document_class method is removed. Use
:attr:~pymongo.mongo_client.MongoClient.codec_options instead.

The get_lasterror_options, set_lasterror_options, and
unset_lasterror_options methods are removed. Write concern options
can be passed to :class:~pymongo.mongo_client.MongoClient as keyword
arguments or MongoDB URI options.

The :meth:~pymongo.mongo_client.MongoClient.get_database method is added for
getting a Database instance with its options configured differently than the
MongoClient's.

The following read-only attributes have been added:

  • :attr:~pymongo.mongo_client.MongoClient.codec_options

The following attributes are now read-only:

  • :attr:~pymongo.mongo_client.MongoClient.read_preference
  • :attr:~pymongo.mongo_client.MongoClient.write_concern

The following attributes have been removed:

  • :attr:~pymongo.mongo_client.MongoClient.document_class
    (use :attr:~pymongo.mongo_client.MongoClient.codec_options instead)
  • :attr:~pymongo.mongo_client.MongoClient.host
    (use :attr:~pymongo.mongo_client.MongoClient.address instead)
  • :attr:~pymongo.mongo_client.MongoClient.min_wire_version
  • :attr:~pymongo.mongo_client.MongoClient.max_wire_version
  • :attr:~pymongo.mongo_client.MongoClient.port
    (use :attr:~pymongo.mongo_client.MongoClient.address instead)
  • :attr:~pymongo.mongo_client.MongoClient.safe
    (use :attr:~pymongo.mongo_client.MongoClient.write_concern instead)
  • :attr:~pymongo.mongo_client.MongoClient.slave_okay
    (use :attr:~pymongo.mongo_client.MongoClient.read_preference instead)
  • :attr:~pymongo.mongo_client.MongoClient.tag_sets
    (use :attr:~pymongo.mongo_client.MongoClient.read_preference instead)
  • :attr:~pymongo.mongo_client.MongoClient.tz_aware
    (use :attr:~pymongo.mongo_client.MongoClient.codec_options instead)

The following attributes have been renamed:

  • :attr:~pymongo.mongo_client.MongoClient.secondary_acceptable_latency_ms is
    now :attr:~pymongo.mongo_client.MongoClient.local_threshold_ms and is now
    read-only.

:class:~pymongo.cursor.Cursor changes
.......................................

The conn_id property is renamed to :attr:~pymongo.cursor.Cursor.address.

Cursor management changes
.........................

:class:~pymongo.cursor_manager.CursorManager and
:meth:~pymongo.mongo_client.MongoClient.set_cursor_manager are no longer
deprecated. If you subclass :class:~pymongo.cursor_manager.CursorManager
your implementation of :meth:~pymongo.cursor_manager.CursorManager.close
must now take a second parameter, address. The BatchCursorManager class
is removed.

The second parameter to :meth:~pymongo.mongo_client.MongoClient.close_cursor
is renamed from _conn_id to address.
:meth:~pymongo.mongo_client.MongoClient.kill_cursors now accepts an address
parameter.

:class:~pymongo.database.Database changes
...........................................

The connection property is renamed to
:attr:~pymongo.database.Database.client.

The following read-only attributes have been added:

  • :attr:~pymongo.database.Database.codec_options

The following attributes are now read-only:

  • :attr:~pymongo.database.Database.read_preference
  • :attr:~pymongo.database.Database.write_concern

Use :meth:~pymongo.mongo_client.MongoClient.get_database for getting a
Database instance with its options configured differently than the
MongoClient's.

The following attributes have been removed:

  • :attr:~pymongo.database.Database.safe
  • :attr:~pymongo.database.Database.secondary_acceptable_latency_ms
  • :attr:~pymongo.database.Database.slave_okay
  • :attr:~pymongo.database.Database.tag_sets

The following methods have been added:

  • :meth:~pymongo.database.Database.get_collection

The following methods have been changed:

  • :meth:~pymongo.database.Database.command. Support for as_class,
    uuid_subtype, tag_sets, and secondary_acceptable_latency_ms have been
    removed. You can instead pass an instance of
    :class:~bson.codec_options.CodecOptions as codec_options and an instance
    of a read preference class from :mod:~pymongo.read_preferences as
    read_preference. The fields and compile_re options are also removed.
    The fields options was undocumented and never really worked. Regular
    expressions are always decoded to :class:~bson.regex.Regex.

The following methods have been deprecated:

  • :meth:~pymongo.database.Database.add_son_manipulator

The following methods have been removed:

The get_lasterror_options, set_lasterror_options, and
unset_lasterror_options methods have been removed. Use
:class:~pymongo.write_concern.WriteConcern with
:meth:~pymongo.mongo_client.MongoClient.get_database instead.

:class:~pymongo.collection.Collection changes
...............................................

The following read-only attributes have been added:

  • :attr:~pymongo.collection.Collection.codec_options

The following attributes are now read-only:

  • :attr:~pymongo.collection.Collection.read_preference
  • :attr:~pymongo.collection.Collection.write_concern

Use :meth:~pymongo.database.Database.get_collection or
:meth:~pymongo.collection.Collection.with_options for getting a Collection
instance with its options configured differently than the Database's.

The following attributes have been removed:

  • :attr:~pymongo.collection.Collection.safe
  • :attr:~pymongo.collection.Collection.secondary_acceptable_latency_ms
  • :attr:~pymongo.collection.Collection.slave_okay
  • :attr:~pymongo.collection.Collection.tag_sets

The following methods have been added:

  • :meth:~pymongo.collection.Collection.bulk_write
  • :meth:~pymongo.collection.Collection.insert_one
  • :meth:~pymongo.collection.Collection.insert_many
  • :meth:~pymongo.collection.Collection.update_one
  • :meth:~pymongo.collection.Collection.update_many
  • :meth:~pymongo.collection.Collection.replace_one
  • :meth:~pymongo.collection.Collection.delete_one
  • :meth:~pymongo.collection.Collection.delete_many
  • :meth:~pymongo.collection.Collection.find_one_and_delete
  • :meth:~pymongo.collection.Collection.find_one_and_replace
  • :meth:~pymongo.collection.Collection.find_one_and_update
  • :meth:~pymongo.collection.Collection.with_options
  • :meth:~pymongo.collection.Collection.create_indexes
  • :meth:~pymongo.collection.Collection.list_indexes

The following methods have changed:

  • :meth:~pymongo.collection.Collection.aggregate now always returns an
    instance of :class:~pymongo.command_cursor.CommandCursor. See the
    documentation for all options.
  • :meth:~pymongo.collection.Collection.count now optionally takes a filter
    argument, as well as other options supported by the count command.
  • :meth:~pymongo.collection.Collection.distinct now optionally takes a filter
    argument.
  • :meth:~pymongo.collection.Collection.create_index no longer caches
    indexes, therefore the cache_for parameter has been removed. It also
    no longer supports the bucket_size and drop_dups aliases for bucketSize
    and dropDups.

The following methods are deprecated:

  • :meth:~pymongo.collection.Collection.save
  • :meth:~pymongo.collection.Collection.insert
  • :meth:~pymongo.collection.Collection.update
  • :meth:~pymongo.collection.Collection.remove
  • :meth:~pymongo.collection.Collection.find_and_modify
  • :meth:~pymongo.collection.Collection.ensure_index

The following methods have been removed:

The get_lasterror_options, set_lasterror_options, and
unset_lasterror_options methods have been removed. Use
:class:~pymongo.write_concern.WriteConcern with
:meth:~pymongo.collection.Collection.with_options instead.

Changes to :meth:~pymongo.collection.Collection.find and :meth:~pymongo.collection.Collection.find_one


The following find/find_one options have been renamed:

These renames only affect your code if you passed these as keyword arguments,
like find(fields=['fieldname']). If you passed only positional parameters these
changes are not significant for your application.

- spec -> filter
- fields -> projection
- partial -> allow_partial_results

The following find/find_one options have been added:

- cursor_type (see :class:`~pymongo.cursor.CursorType` for values)
- oplog_replay
- modifiers

The following find/find_one options have been removed:

- network_timeout (use :meth:`~pymongo.cursor.Cursor.max_time_ms` instead)
- slave_okay (use one of the read preference classes from
 :mod:`~pymongo.read_preferences` and
 :meth:`~pymongo.collection.Collection.with_options` instead)
- read_preference (use :meth:`~pymongo.collection.Collection.with_options`
 instead)
- tag_sets (use one of the read preference classes from
 :mod:`~pymongo.read_preferences` and
 :meth:`~pymongo.collection.Collection.with_options` instead)
- secondary_acceptable_latency_ms (use the `localThresholdMS` URI option
 instead)
- max_scan (use the new `modifiers` option instead)
- snapshot (use the new `modifiers` option instead)
- tailable (use the new `cursor_type` option instead)
- await_data (use the new `cursor_type` option instead)
- exhaust (use the new `cursor_type` option instead)
- as_class (use :meth:`~pymongo.collection.Collection.with_options` with
 :class:`~bson.codec_options.CodecOptions` instead)
- compile_re (BSON regular expressions are always decoded to
 :class:`~bson.regex.Regex`)

The following find/find_one options are deprecated:

- manipulate

The following renames need special handling.

- timeout -> no_cursor_timeout -
 The default for `timeout` was True. The default for `no_cursor_timeout` is
 False. If you were previously passing False for `timeout` you must pass
 **True** for `no_cursor_timeout` to keep the previous behavior.

:mod:`~pymongo.errors` changes
..............................

The exception classes ``UnsupportedOption`` and ``TimeoutError`` are deleted.

:mod:`~gridfs` changes
......................

Since PyMongo 1.6, methods ``open`` and ``close`` of :class:`~gridfs.GridFS`
raised an ``UnsupportedAPI`` exception, as did the entire ``GridFile`` class.
The unsupported methods, the class, and the exception are all deleted.

:mod:`~bson` changes
....................

The `compile_re` option is removed from all methods
that accepted it in :mod:`~bson` and :mod:`~bson.json_util`. Additionally, it
is removed from :meth:`~pymongo.collection.Collection.find`,
:meth:`~pymongo.collection.Collection.find_one`,
:meth:`~pymongo.collection.Collection.aggregate`,
:meth:`~pymongo.database.Database.command`, and so on.
PyMongo now always represents BSON regular expressions as
:class:`~bson.regex.Regex` objects. This prevents errors for incompatible
patterns, see `PYTHON-500`_. Use :meth:`~bson.regex.Regex.try_compile` to
attempt to convert from a BSON regular expression to a Python regular
expression object.

PyMongo now decodes the int64 BSON type to :class:`~bson.int64.Int64`, a
trivial wrapper around long (in python 2.x) or int (in python 3.x). This
allows BSON int64 to be round tripped without losing type information in
python 3. Note that if you store a python long (or a python int larger than
4 bytes) it will be returned from PyMongo as :class:`~bson.int64.Int64`.

The `as_class`, `tz_aware`, and `uuid_subtype` options are removed from all
BSON encoding and decoding methods. Use
:class:`~bson.codec_options.CodecOptions` to configure these options. The
APIs affected are:

- :func:`~bson.decode_all`
- :func:`~bson.decode_iter`
- :func:`~bson.decode_file_iter`
- :meth:`~bson.BSON.encode`
- :meth:`~bson.BSON.decode`

This is a breaking change for any application that uses the BSON API directly
and changes any of the named parameter defaults. No changes are required for
applications that use the default values for these options. The behavior
remains the same.

.. _PYTHON-500: https://jira.mongodb.org/browse/PYTHON-500

Issues Resolved
...............

See the `PyMongo 3.0 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 3.0 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/12501



### 2.9.3

thread safety issues in :meth:`~pymongo.collection.Collection.ensure_index`,
:meth:`~pymongo.collection.Collection.drop_index`, and
:meth:`~pymongo.collection.Collection.drop_indexes`.

Issues Resolved
...............

See the `PyMongo 2.9.3 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.9.3 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16539



### 2.9.2

improves an error message when decoding BSON as well as fixes a couple other
issues including :meth:`~pymongo.collection.Collection.aggregate` ignoring
:attr:`~pymongo.collection.Collection.codec_options` and
:meth:`~pymongo.database.Database.command` raising a superfluous
`DeprecationWarning`.

Issues Resolved
...............

See the `PyMongo 2.9.2 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.9.2 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16303



### 2.9.1

adapts a test case for a behavior change in MongoDB 3.2.

Issues Resolved
...............

See the `PyMongo 2.9.1 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.9.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/16208



### 2.9

from PyMongo 3.0 have been backported in a backward compatible way, allowing
applications to be written against PyMongo >= 2.9, rather then PyMongo 2.x or
PyMongo 3.x. See the :doc:`/migrate-to-pymongo3` for detailed examples.

.. note:: There are a number of new deprecations in this release for features
 that were removed in PyMongo 3.0.

 :class:`~pymongo.mongo_client.MongoClient`:
   - :attr:`~pymongo.mongo_client.MongoClient.host`
   - :attr:`~pymongo.mongo_client.MongoClient.port`
   - :attr:`~pymongo.mongo_client.MongoClient.use_greenlets`
   - :attr:`~pymongo.mongo_client.MongoClient.document_class`
   - :attr:`~pymongo.mongo_client.MongoClient.tz_aware`
   - :attr:`~pymongo.mongo_client.MongoClient.secondary_acceptable_latency_ms`
   - :attr:`~pymongo.mongo_client.MongoClient.tag_sets`
   - :attr:`~pymongo.mongo_client.MongoClient.uuid_subtype`
   - :meth:`~pymongo.mongo_client.MongoClient.disconnect`
   - :meth:`~pymongo.mongo_client.MongoClient.alive`

 :class:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient`:
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.use_greenlets`
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.document_class`
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.tz_aware`
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.secondary_acceptable_latency_ms`
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.tag_sets`
   - :attr:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.uuid_subtype`
   - :meth:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient.alive`

 :class:`~pymongo.database.Database`:
   - :attr:`~pymongo.database.Database.secondary_acceptable_latency_ms`
   - :attr:`~pymongo.database.Database.tag_sets`
   - :attr:`~pymongo.database.Database.uuid_subtype`

 :class:`~pymongo.collection.Collection`:
   - :attr:`~pymongo.collection.Collection.secondary_acceptable_latency_ms`
   - :attr:`~pymongo.collection.Collection.tag_sets`
   - :attr:`~pymongo.collection.Collection.uuid_subtype`

.. warning::
 In previous versions of PyMongo, changing the value of
 :attr:`~pymongo.mongo_client.MongoClient.document_class` changed
 the behavior of all existing instances of
 :class:`~pymongo.collection.Collection`::

   >>> coll = client.test.test
   >>> coll.find_one()
   {u'_id': ObjectId('5579dc7cfba5220cc14d9a18')}
   >>> from bson.son import SON
   >>> client.document_class = SON
   >>> coll.find_one()
   SON([(u'_id', ObjectId('5579dc7cfba5220cc14d9a18'))])

 The document_class setting is now configurable at the client,
 database, collection, and per-operation level. This required breaking
 the existing behavior. To change the document class per operation in a
 forward compatible way use
 :meth:`~pymongo.collection.Collection.with_options`::

   >>> coll.find_one()
   {u'_id': ObjectId('5579dc7cfba5220cc14d9a18')}
   >>> from bson.codec_options import CodecOptions
   >>> coll.with_options(CodecOptions(SON)).find_one()
   SON([(u'_id', ObjectId('5579dc7cfba5220cc14d9a18'))])

Issues Resolved
...............

See the `PyMongo 2.9 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.9 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/14795



### 2.8.1

2.8. It is a recommended upgrade for all users of PyMongo 2.x.

Issues Resolved
...............

See the `PyMongo 2.8.1 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.8.1 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/15324



### 2.8

fixes a number of bugs.

Special thanks to Don Mitchell, Ximing, Can Zhang, Sergey Azovskov, and Heewa
Barfchin for their contributions to this release.

Highlights include:

- Support for the SCRAM-SHA-1 authentication mechanism (new in MongoDB 3.0).
- JSON decoder support for the new $numberLong and $undefined types.
- JSON decoder support for the $date type as an ISO-8601 string.
- Support passing an index name to :meth:`~pymongo.cursor.Cursor.hint`.
- The :meth:`~pymongo.cursor.Cursor.count` method will use a hint if one
 has been provided through :meth:`~pymongo.cursor.Cursor.hint`.
- A new socketKeepAlive option for the connection pool.
- New generator based BSON decode functions, :func:`~bson.decode_iter`
 and :func:`~bson.decode_file_iter`.
- Internal changes to support alternative storage engines like wiredtiger.

.. note:: There are a number of deprecations in this release for features that
 will be removed in PyMongo 3.0. These include:

 - :meth:`~pymongo.mongo_client.MongoClient.start_request`
 - :meth:`~pymongo.mongo_client.MongoClient.in_request`
 - :meth:`~pymongo.mongo_client.MongoClient.end_request`
 - :meth:`~pymongo.mongo_client.MongoClient.copy_database`
 - :meth:`~pymongo.database.Database.error`
 - :meth:`~pymongo.database.Database.last_status`
 - :meth:`~pymongo.database.Database.previous_error`
 - :meth:`~pymongo.database.Database.reset_error_history`
 - :class:`~pymongo.master_slave_connection.MasterSlaveConnection`

 The JSON format for :class:`~bson.timestamp.Timestamp` has changed from
 '{"t": <int>, "i": <int>}' to '{"$timestamp": {"t": <int>, "i": <int>}}'.
 This new format will be decoded to an instance of
 :class:`~bson.timestamp.Timestamp`. The old format will continue to be
 decoded to a python dict as before. Encoding to the old format is no
 longer supported as it was never correct and loses type information.

Issues Resolved
...............

See the `PyMongo 2.8 release notes in JIRA`_ for the list of resolved issues
in this release.

.. _PyMongo 2.8 release notes in JIRA: https://jira.mongodb.org/browse/PYTHON/fixforversion/14223






Flask-RESTful 0.3.2 -> 0.3.5

0.3.5


Released December 9, 2015

  • Add nullable option to request parser to allow/disallow null values for arguments (538)
  • Use Flask's exception log method in handle_error(e) method instead of directly logging the exception notice. (496)
  • Argument.help now allows more flexible message formatting using the {error_msg} string interpolation token. (518)
  • Prevent representation from being chosen at random when Accept: */* (524)
  • Headers from HTTPExceptions are now returned in the response instead of being discarded (523)
  • Marshalling now checks for a __marshallable__ method first before defaulting back to __getitem__ ()
  • Flask 1.0 compatability fixes (506)

0.3.4


Released July 20, 2015

  • Fixed issue where abort() and raise Exception were not equivalent (205)
  • Fixed RequestParser settings not being copied properly (483)
  • Add ability to configure json serializer settings from application config (458)
  • Project metadata, tests, and examples are now included in source distributions (475)
  • Various documentation improvements

0.3.3


Released May 22, 2015

  • Disable challenge on 401
    by default (THIS IS A BREAKING CHANGE, albeit a very small one with behavior that probably no one depended upon. You can easily change this back to the old way).
  • Doc fixes (404, 406, 436, misc. other commits)
  • Fix truncation of microseconds in iso8601 datetime output (368)
  • null arguments from JSON no longer cast to string (390)
  • Made list fields work with classes (409)
  • Fix url_for() when used with Blueprints (410)
  • Add CORS "Access-Control-Expose-Headers" support (412)
  • Fix class references in RequestParser (414)
  • Allow any callables to be used as lazy attributes (417)
  • Fix references to flask.ext.* (420)
  • Trim support with fixes (428)
  • Added ability to pass-in parameters into Resource constructors (444)
  • Fix custom type docs on "Intermediate usage" and docstring (434)
  • Fixed problem with RequestParser.copy (435)
  • Feature/error bundling (431)
  • Explicitly check the class type for propagate_exceptions (445)
  • Remove min. year limit 1900 in inputs.date (446)

Flask 0.10.1 -> 0.11.1

0.11.1


Bugfix release, released on June 7th 2016.

  • Fixed a bug that prevented FLASK_APP=foobar/__init__.py from working. See
    pull request 1872.

0.11


Released on May 29th 2016, codename Absinthe.

  • Added support to serializing top-level arrays to :func:flask.jsonify. This
    introduces a security risk in ancient browsers. See
    :ref:json-security for details.
  • Added before_render_template signal.
  • Added **kwargs to :meth:flask.Test.test_client to support passing
    additional keyword arguments to the constructor of
    :attr:flask.Flask.test_client_class.
  • Added SESSION_REFRESH_EACH_REQUEST config key that controls the
    set-cookie behavior. If set to True a permanent session will be
    refreshed each request and get their lifetime extended, if set to
    False it will only be modified if the session actually modifies.
    Non permanent sessions are not affected by this and will always
    expire if the browser window closes.
  • Made Flask support custom JSON mimetypes for incoming data.
  • Added support for returning tuples in the form (response, headers)
    from a view function.
  • Added :meth:flask.Config.from_json.
  • Added :attr:flask.Flask.config_class.
  • Added :meth:flask.Config.get_namespace.
  • Templates are no longer automatically reloaded outside of debug mode. This
    can be configured with the new TEMPLATES_AUTO_RELOAD config key.
  • Added a workaround for a limitation in Python 3.3's namespace loader.
  • Added support for explicit root paths when using Python 3.3's namespace
    packages.
  • Added :command:flask and the flask.cli module to start the local
    debug server through the click CLI system. This is recommended over the old
    flask.run() method as it works faster and more reliable due to a
    different design and also replaces Flask-Script.
  • Error handlers that match specific classes are now checked first,
    thereby allowing catching exceptions that are subclasses of HTTP
    exceptions (in werkzeug.exceptions). This makes it possible
    for an extension author to create exceptions that will by default
    result in the HTTP error of their choosing, but may be caught with
    a custom error handler if desired.
  • Added :meth:flask.Config.from_mapping.
  • Flask will now log by default even if debug is disabled. The log format is
    now hardcoded but the default log handling can be disabled through the
    LOGGER_HANDLER_POLICY configuration key.
  • Removed deprecated module functionality.
  • Added the EXPLAIN_TEMPLATE_LOADING config flag which when enabled will
    instruct Flask to explain how it locates templates. This should help
    users debug when the wrong templates are loaded.
  • Enforce blueprint handling in the order they were registered for template
    loading.
  • Ported test suite to py.test.
  • Deprecated request.json in favour of request.get_json().
  • Add "pretty" and "compressed" separators definitions in jsonify() method.
    Reduces JSON response size when JSONIFY_PRETTYPRINT_REGULAR=False by removing
    unnecessary white space included by default after separators.
  • JSON responses are now terminated with a newline character, because it is a
    convention that UNIX text files end with a newline and some clients don't
    deal well when this newline is missing. See
    Add JSONIFY_END_WITH_NEWLINE config variable pallets/flask#1262 -- this came up originally as a
    part of https://github.com/kennethreitz/httpbin/issues/168
  • The automatically provided OPTIONS method is now correctly disabled if
    the user registered an overriding rule with the lowercase-version
    options (issue 1288).
  • flask.json.jsonify now supports the datetime.date type (pull request
    1326).
  • Don't leak exception info of already catched exceptions to context teardown
    handlers (pull request 1393).
  • Allow custom Jinja environment subclasses (pull request 1422).
  • flask.g now has pop() and setdefault methods.
  • Turn on autoescape for flask.templating.render_template_string by default
    (pull request 1515).
  • flask.ext is now deprecated (pull request 1484).
  • send_from_directory now raises BadRequest if the filename is invalid on
    the server OS (pull request 1763).
  • Added the JSONIFY_MIMETYPE configuration variable (pull request 1728).
  • Exceptions during teardown handling will no longer leave bad application
    contexts lingering around.

0.10.2


(bugfix release, release date to be announced)

  • Fixed broken test_appcontext_signals() test case.
  • Raise an :exc:AttributeError in :func:flask.helpers.find_package with a
    useful message explaining why it is raised when a PEP 302 import hook is used
    without an is_package() method.
  • Fixed an issue causing exceptions raised before entering a request or app
    context to be passed to teardown handlers.
  • Fixed an issue with query parameters getting removed from requests in
    the test client when absolute URLs were requested.
  • Made before_first_request into a decorator as intended.
  • Fixed an etags bug when sending a file streams with a name.
  • Fixed send_from_directory not expanding to the application root path
    correctly.
  • Changed logic of before first request handlers to flip the flag after
    invoking. This will allow some uses that are potentially dangerous but
    should probably be permitted.
  • Fixed Python 3 bug when a handler from app.url_build_error_handlers
    reraises the BuildError.

coverage 3.7.1 -> 4.1

4.1


  • The internal attribute Reporter.file_reporters was removed in 4.1b3. It
    should have come has no surprise that there were third-party tools out there
    using that attribute. It has been restored, but with a deprecation warning.

4.1b3


  • When running your program, execution can jump from an except X: line to
    some other line when an exception other than X happens. This jump is no
    longer considered a branch when measuring branch coverage.
  • When measuring branch coverage, yield statements that were never resumed
    were incorrectly marked as missing, as reported in issue 440_. This is now
    fixed.
  • During branch coverage of single-line callables like lambdas and generator
    expressions, coverage.py can now distinguish between them never being called,
    or being called but not completed. Fixes issue 90, issue 460 and
    issue 475_.
  • The HTML report now has a map of the file along the rightmost edge of the
    page, giving an overview of where the missed lines are. Thanks, Dmitry
    Shishov.
  • The HTML report now uses different monospaced fonts, favoring Consolas over
    Courier. Along the way, issue 472_ about not properly handling one-space
    indents was fixed. The index page also has slightly different styling, to
    try to make the clickable detail pages more apparent.
  • Missing branches reported with coverage report -m will now say ->exit
    for missed branches to the exit of a function, rather than a negative number.
    Fixes issue 469_.
  • coverage --help and coverage --version now mention which tracer is
    installed, to help diagnose problems. The docs mention which features need
    the C extension. (issue 479_)
  • Officially support PyPy 5.1, which required no changes, just updates to the
    docs.
  • The Coverage.report function had two parameters with non-None defaults,
    which have been changed. show_missing used to default to True, but now
    defaults to None. If you had been calling Coverage.report without
    specifying show_missing, you'll need to explicitly set it to True to keep
    the same behavior. skip_covered used to default to False. It is now None,
    which doesn't change the behavior. This fixes issue 485_.
  • It's never been possible to pass a namespace module to one of the analysis
    functions, but now at least we raise a more specific error message, rather
    than getting confused. (issue 456_)
  • The coverage.process_startup function now returns the Coverage instance
    it creates, as suggested in issue 481_.
  • Make a small tweak to how we compare threads, to avoid buggy custom
    comparison code in thread classes. (issue 245_)

.. _issue 90: https://bitbucket.org/ned/coveragepy/issues/90/lambda-expression-confuses-branch
.. _issue 245: https://bitbucket.org/ned/coveragepy/issues/245/change-solution-for-issue-164
.. _issue 440: https://bitbucket.org/ned/coveragepy/issues/440/yielded-twisted-failure-marked-as-missed
.. _issue 456: https://bitbucket.org/ned/coveragepy/issues/456/coverage-breaks-with-implicit-namespaces
.. _issue 460: https://bitbucket.org/ned/coveragepy/issues/460/confusing-html-report-for-certain-partial
.. _issue 469: https://bitbucket.org/ned/coveragepy/issues/469/strange-1-line-number-in-branch-coverage
.. _issue 472: https://bitbucket.org/ned/coveragepy/issues/472/html-report-indents-incorrectly-for-one
.. _issue 475: https://bitbucket.org/ned/coveragepy/issues/475/generator-expression-is-marked-as-not
.. _issue 479: https://bitbucket.org/ned/coveragepy/issues/479/clarify-the-need-for-the-c-extension
.. _issue 481: https://bitbucket.org/ned/coveragepy/issues/481/asyncioprocesspoolexecutor-tracing-not
.. _issue 485: https://bitbucket.org/ned/coveragepy/issues/485/coveragereport-ignores-show_missing-and

4.1b2


  • Problems with the new branch measurement in 4.1 beta 1 were fixed:
    • Class docstrings were considered executable. Now they no longer are.
    • yield from and await were considered returns from functions, since
      they could tranfer control to the caller. This produced unhelpful "missing
      branch" reports in a number of circumstances. Now they no longer are
      considered returns.
    • In unusual situations, a missing branch to a negative number was reported.
      This has been fixed, closing issue 466_.
  • The XML report now produces correct package names for modules found in
    directories specified with source=. Fixes issue 465_.
  • coverage report won't produce trailing whitespace.

.. _issue 465: https://bitbucket.org/ned/coveragepy/issues/465/coveragexml-produces-package-names-with-an
.. _issue 466: https://bitbucket.org/ned/coveragepy/issues/466/impossible-missed-branch-to-a-negative

4.1b1


  • Branch analysis has been rewritten: it used to be based on bytecode, but now
    uses AST analysis. This has changed a number of things:
    • More code paths are now considered runnable, especially in
      try/except structures. This may mean that coverage.py will
      identify more code paths as uncovered. This could either raise or lower
      your overall coverage number.
    • Python 3.5's async and await keywords are properly supported,
      fixing issue 434_.
    • Some long-standing branch coverage bugs were fixed:
      • issue 129_: functions with only a docstring for a body would
        incorrectly report a missing branch on the def line.
    • issue 212_: code in an except block could be incorrectly marked as
      a missing branch.
    • issue 146_: context managers (with statements) in a loop or try
      block could confuse the branch measurement, reporting incorrect partial
      branches.
    • issue 422_: in Python 3.5, an actual partial branch could be marked as
      complete.
  • Pragmas to disable coverage measurement can now be used on decorator lines,
    and they will apply to the entire function or class being decorated. This
    implements the feature requested in issue 131_.
  • Multiprocessing support is now available on Windows. Thanks, Rodrigue
    Cloutier.
  • Files with two encoding declarations are properly supported, fixing
    issue 453_. Thanks, Max Linke.
  • Non-ascii characters in regexes in the configuration file worked in 3.7, but
    stopped working in 4.0. Now they work again, closing issue 455_.
  • Form-feed characters would prevent accurate determination of the beginning of
    statements in the rest of the file. This is now fixed, closing issue 461_.

.. _issue 129: https://bitbucket.org/ned/coveragepy/issues/129/misleading-branch-coverage-of-empty
.. _issue 131: https://bitbucket.org/ned/coveragepy/issues/131/pragma-on-a-decorator-line-should-affect
.. _issue 146: https://bitbucket.org/ned/coveragepy/issues/146/context-managers-confuse-branch-coverage
.. _issue 212: https://bitbucket.org/ned/coveragepy/issues/212/coverage-erroneously-reports-partial
.. _issue 422: https://bitbucket.org/ned/coveragepy/issues/422/python35-partial-branch-marked-as-fully
.. _issue 434: https://bitbucket.org/ned/coveragepy/issues/434/indexerror-in-python-35
.. _issue 453: https://bitbucket.org/ned/coveragepy/issues/453/source-code-encoding-can-only-be-specified
.. _issue 455: https://bitbucket.org/ned/coveragepy/issues/455/unusual-exclusions-stopped-working-in
.. _issue 461: https://bitbucket.org/ned/coveragepy/issues/461/multiline-asserts-need-too-many-pragma

4.0.3


  • Fixed a mysterious problem that manifested in different ways: sometimes
    hanging the process (issue 420), sometimes making database connections
    fail (issue 445
    ).
  • The XML report now has correct <source> elements when using a
    --source= option somewhere besides the current directory. This fixes
    issue 439_. Thanks, Arcady Ivanov.
  • Fixed an unusual edge case of detecting source encodings, described in
    issue 443_.
  • Help messages that mention the command to use now properly use the actual
    command name, which might be different than "coverage". Thanks to Ben
    Finney, this closes issue 438_.

.. _issue 420: https://bitbucket.org/ned/coveragepy/issues/420/coverage-40-hangs-indefinitely-on-python27
.. _issue 438: https://bitbucket.org/ned/coveragepy/issues/438/parameterise-coverage-command-name
.. _issue 439: https://bitbucket.org/ned/coveragepy/issues/439/incorrect-cobertura-file-sources-generated
.. _issue 443: https://bitbucket.org/ned/coveragepy/issues/443/coverage-gets-confused-when-encoding
.. _issue 445: https://bitbucket.org/ned/coveragepy/issues/445/django-app-cannot-connect-to-cassandra

4.0.2


  • More work on supporting unusually encoded source. Fixed issue 431_.
  • Files or directories with non-ASCII characters are now handled properly,
    fixing issue 432_.
  • Setting a trace function with sys.settrace was broken by a change in 4.0.1,
    as reported in issue 436_. This is now fixed.
  • Officially support PyPy 4.0, which required no changes, just updates to the
    docs.

.. _issue 431: https://bitbucket.org/ned/coveragepy/issues/431/couldnt-parse-python-file-with-cp1252
.. _issue 432: https://bitbucket.org/ned/coveragepy/issues/432/path-with-unicode-characters-various
.. _issue 436: https://bitbucket.org/ned/coveragepy/issues/436/disabled-coverage-ctracer-may-rise-from

4.0.1


  • When combining data files, unreadable files will now generate a warning
    instead of failing the command. This is more in line with the older
    coverage.py v3.7.1 behavior, which silently ignored unreadable files.
    Prompted by issue 418_.
  • The --skip-covered option would skip reporting on 100% covered files, but
    also skipped them when calculating total coverage. This was wrong, it should
    only remove lines from the report, not change the final answer. This is now
    fixed, closing issue 423_.
  • In 4.0, the data file recorded a summary of the system on which it was run.
    Combined data files would keep all of those summaries. This could lead to
    enormous data files consisting of mostly repetitive useless information. That
    summary is now gone, fixing issue 415_. If you want summary information,
    get in touch, and we'll figure out a better way to do it.
  • Test suites that mocked os.path.exists would experience strange failures, due
    to coverage.py using their mock inadvertently. This is now fixed, closing
    issue 416_.
  • Importing a __init__ module explicitly would lead to an error:
    AttributeError: 'module' object has no attribute '__path__', as reported
    in issue 410_. This is now fixed.
  • Code that uses sys.settrace(sys.gettrace()) used to incur a more than 2x
    speed penalty. Now there's no penalty at all. Fixes issue 397_.
  • Pyexpat C code will no longer be recorded as a source file, fixing
    issue 419_.
  • The source kit now contains all of the files needed to have a complete source
    tree, re-fixing issue 137_ and closing issue 281_.

.. _issue 281: https://bitbucket.org/ned/coveragepy/issues/281/supply-scripts-for-testing-in-the
.. _issue 397: https://bitbucket.org/ned/coveragepy/issues/397/stopping-and-resuming-coverage-with
.. _issue 410: https://bitbucket.org/ned/coveragepy/issues/410/attributeerror-module-object-has-no
.. _issue 415: https://bitbucket.org/ned/coveragepy/issues/415/repeated-coveragedataupdates-cause
.. _issue 416: https://bitbucket.org/ned/coveragepy/issues/416/mocking-ospathexists-causes-failures
.. _issue 418: https://bitbucket.org/ned/coveragepy/issues/418/json-parse-error
.. _issue 419: https://bitbucket.org/ned/coveragepy/issues/419/nosource-no-source-for-code-path-to-c
.. _issue 423: https://bitbucket.org/ned/coveragepy/issues/423/skip_covered-changes-reported-total

4.0


4.0b3


  • Reporting on an unmeasured file would fail with a traceback. This is now
    fixed, closing issue 403_.
  • The Jenkins ShiningPanda plugin looks for an obsolete file name to find the
    HTML reports to publish, so it was failing under coverage.py 4.0. Now we
    create that file if we are running under Jenkins, to keep things working
    smoothly. issue 404_.
  • Kits used to include tests and docs, but didn't install them anywhere, or
    provide all of the supporting tools to make them useful. Kits no longer
    include tests and docs. If you were using them from the older packages, get
    in touch and help me understand how.

.. _issue 403: https://bitbucket.org/ned/coveragepy/issues/403/hasherupdate-fails-with-typeerror-nonetype
.. _issue 404: https://bitbucket.org/ned/coveragepy/issues/404/shiningpanda-jenkins-plugin-cant-find-html

4.0b2


  • 4.0b1 broke --append creating new data files. This is now fixed, closing
    issue 392_.
  • py.test --cov can write empty data, then touch files due to --source,
    which made coverage.py mistakenly force the data file to record lines instead
    of arcs. This would lead to a "Can't combine line data with arc data" error
    message. This is now fixed, and changed some method names in the
    CoverageData interface. Fixes issue 399_.
  • CoverageData.read_fileobj and CoverageData.write_fileobj replace the
    .read and .write methods, and are now properly inverses of each other.
  • When using report --skip-covered, a message will now be included in the
    report output indicating how many files were skipped, and if all files are
    skipped, coverage.py won't accidentally scold you for having no data to
    report. Thanks, Krystian Kichewko.
  • A new conversion utility has been added: python -m coverage.pickle2json
    will convert v3.x pickle data files to v4.x JSON data files. Thanks,
    Alexander Todorov. Closes issue 395_.
  • A new version identifier is available, coverage.version_info, a plain tuple
    of values similar to sys.version_info_.

.. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file
.. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for
.. _issue 399: https://bitbucket.org/ned/coveragepy/issues/399/coverageexception-cant-combine-line-data
.. _sys.version_info: https://docs.python.org/3/library/sys.htmlsys.version_info

4.0b1


  • Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for
    details. Closes issue 313_.
  • The data storage has been completely revamped. The data file is now
    JSON-based instead of a pickle, closing issue 236_. The CoverageData
    class is now a public supported documented API to the data file.
  • A new configuration option, [run] note, lets you set a note that will be
    stored in the runs section of the data file. You can use this to annotate
    the data file with any information you like.
  • Unrecognized configuration options will now print an error message and stop
    coverage.py. This should help prevent configuration mistakes from passing
    silently. Finishes issue 386_.
  • In parallel mode, coverage erase will now delete all of the data files,
    fixing issue 262_.
  • Coverage.py now accepts a directory name for coverage run and will run a
    __main__.py found there, just like Python will. Fixes issue 252_.
    Thanks, Dmitry Trofimov.
  • The XML report now includes a missing-branches attribute. Thanks, Steve
    Peak. This is not a part of the Cobertura DTD, so the XML report no longer
    references the DTD.
  • Missing branches in the HTML report now have a bit more information in the
    right-hand annotations. Hopefully this will make their meaning clearer.
  • All the reporting functions now behave the same if no data had been
    collected, exiting with a status code of 1. Fixed fail_under to be
    applied even when the report is empty. Thanks, Ionel Cristian M�rie�.
  • Plugins are now initialized differently. Instead of looking for a class
    called Plugin, coverage.py looks for a function called coverage_init.
  • A file-tracing plugin can now ask to have built-in Python reporting by
    returning "python" from its file_reporter() method.
  • Code that was executed with exec would be mis-attributed to the file that
    called it. This is now fixed, closing issue 380_.
  • The ability to use item access on Coverage.config (introduced in 4.0a2) has
    been changed to a more explicit Coverage.get_option and
    Coverage.set_option API.
  • The Coverage.use_cache method is no longer supported.
  • The private method Coverage._harvest_data is now called
    Coverage.get_data, and returns the CoverageData containing the
    collected data.
  • The project is consistently referred to as "coverage.py" throughout the code
    and the documentation, closing issue 275_.
  • Combining data files with an explicit configuration file was broken in 4.0a6,
    but now works again, closing issue 385_.
  • coverage combine now accepts files as well as directories.
  • The speed is back to 3.7.1 levels, after having slowed down due to plugin
    support, finishing up issue 387_.

.. _issue 236: https://bitbucket.org/ned/coveragepy/issues/236/pickles-are-bad-and-you-should-feel-bad
.. _issue 252: https://bitbucket.org/ned/coveragepy/issues/252/coverage-wont-run-a-program-with
.. _issue 262: https://bitbucket.org/ned/coveragepy/issues/262/when-parallel-true-erase-should-erase-all
.. _issue 275: https://bitbucket.org/ned/coveragepy/issues/275/refer-consistently-to-project-as-coverage
.. _issue 313: https://bitbucket.org/ned/coveragepy/issues/313/add-license-file-containing-2-3-or-4
.. _issue 380: https://bitbucket.org/ned/coveragepy/issues/380/code-executed-by-exec-excluded-from
.. _issue 385: https://bitbucket.org/ned/coveragepy/issues/385/coverage-combine-doesnt-work-with-rcfile
.. _issue 386: https://bitbucket.org/ned/coveragepy/issues/386/error-on-unrecognised-configuration
.. _issue 387: https://bitbucket.org/ned/coveragepy/issues/387/performance-degradation-from-371-to-40

.. 40 issues closed in 4.0 below here

4.0a6


  • Python 3.5b2 and PyPy 2.6.0 are supported.
  • The original module-level function interface to coverage.py is no longer
    supported. You must now create a coverage.Coverage object, and use
    methods on it.
  • The coverage combine command now accepts any number of directories as
    arguments, and will combine all the data files from those directories. This
    means you don't have to copy the files to one directory before combining.
    Thanks, Christine Lytwynec. Finishes issue 354_.
  • Branch coverage couldn't properly handle certain extremely long files. This
    is now fixed (issue 359_).
  • Branch coverage didn't understand yield statements properly. Mickie Betz
    persisted in pursuing this despite Ned's pessimism. Fixes issue 308_ and
    issue 324_.
  • The COVERAGE_DEBUG environment variable can be used to set the [run] debug
    configuration option to control what internal operations are logged.
  • HTML reports were truncated at formfeed characters. This is now fixed
    (issue 360). It's always fun when the problem is due to a bug in the Python standard library <http://bugs.python.org/issue19035>.
  • Files with incorrect encoding declaration comments are no longer ignored by
    the reporting commands, fixing issue 351_.
  • HTML reports now include a timestamp in the footer, closing issue 299_.
    Thanks, Conrad Ho.
  • HTML reports now begrudgingly use double-quotes rather than single quotes,
    because there are "software engineers" out there writing tools that read HTML
    and somehow have no idea that single quotes exist. Capitulates to the absurd
    issue 361_. Thanks, Jon Chappell.
  • The coverage annotate command now handles non-ASCII characters properly,
    closing issue 363_. Thanks, Leonardo Pistone.
  • Drive letters on Windows were not normalized correctly, now they are. Thanks,
    Ionel Cristian M�rie�.
  • Plugin support had some bugs fixed, closing issue 374_ and issue 375_.
    Thanks, Stefan Behnel.

.. _issue 299: https://bitbucket.org/ned/coveragepy/issue/299/inserted-created-on-yyyy-mm-dd-hh-mm-in
.. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branch-coverage
.. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-confuses-branch-coverage
.. _issue 351: https://bitbucket.org/ned/coveragepy/issue/351/files-with-incorrect-encoding-are-ignored
.. _issue 354: https://bitbucket.org/ned/coveragepy/issue/354/coverage-combine-should-take-a-list-of
.. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-error
.. _issue 360: https://bitbucket.org/ned/coveragepy/issue/360/html-reports-get-confused-by-l-in-the-code
.. _issue 361: https://bitbucket.org/ned/coveragepy/issue/361/use-double-quotes-in-html-output-to
.. _issue 363: https://bitbucket.org/ned/coveragepy/issue/363/annotate-command-hits-unicode-happy-fun
.. _issue 374: https://bitbucket.org/ned/coveragepy/issue/374/c-tracer-lookups-fail-in
.. _issue 375: https://bitbucket.org/ned/coveragepy/issue/375/ctracer_handle_return-reads-byte-code

4.0a5


  • Plugin support is now implemented in the C tracer instead of the Python
    tracer. This greatly improves the speed of tracing projects using plugins.
  • Coverage.py now always adds the current directory to sys.path, so that
    plugins can import files in the current directory (issue 358_).
  • If the config_file argument to the Coverage constructor is specified as
    ".coveragerc", it is treated as if it were True. This means setup.cfg is
    also examined, and a missing file is not considered an error (issue 357_).
  • Wildly experimental: support for measuring processes started by the
    multiprocessing module. To use, set --concurrency=multiprocessing,
    either on the command line or in the .coveragerc file (issue 117_). Thanks,
    Eduardo Schettino. Currently, this does not work on Windows.
  • A new warning is possible, if a desired file isn't measured because it was
    imported before coverage.py was started (issue 353_).
  • The coverage.process_startup function now will start coverage measurement
    only once, no matter how many times it is called. This fixes problems due
    to unusual virtualenv configurations (issue 340_).
  • Added 3.5.0a1 to the list of supported CPython versions.

.. _issue 117: https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by
.. _issue 340: https://bitbucket.org/ned/coveragepy/issue/340/keyerror-subpy
.. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case
.. _issue 357: https://bitbucket.org/ned/coveragepy/issue/357/behavior-changed-when-coveragerc-is
.. _issue 358: https://bitbucket.org/ned/coveragepy/issue/358/all-coverage-commands-should-adjust

4.0a4


  • Plugins can now provide sys_info for debugging output.
  • Started plugins documentation.
  • Prepared to move the docs to readthedocs.org.

4.0a3


  • Reports now use file names with extensions. Previously, a report would
    describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows
    for better support of non-Python files, and also fixed issue 69_.
  • The XML report now reports each directory as a package again. This was a bad
    regression, I apologize. This was reported in issue 235_, which is now
    fixed.
  • A new configuration option for the XML report: [xml] package_depth
    controls which directories are identified as packages in the report.
    Directories deeper than this depth are not reported as packages.
    The default is that all directories are reported as packages.
    Thanks, Lex Berezhny.
  • When looking for the source for a frame, check if the file exists. On
    Windows, .pyw files are no longer recorded as .py files. Along the way, this
    fixed issue 290_.
  • Empty files are now reported as 100% covered in the XML report, not 0%
    covered (issue 345_).
  • Regexes in the configuration file are now compiled as soon as they are read,
    to provide error messages earlier (issue 349_).

.. _issue 69: https://bitbucket.org/ned/coveragepy/issue/69/coverage-html-overwrite-files-that-doesnt
.. _issue 235: https://bitbucket.org/ned/coveragepy/issue/235/package-name-is-missing-in-xml-report
.. _issue 290: https://bitbucket.org/ned/coveragepy/issue/290/running-programmatically-with-pyw-files
.. _issue 345: https://bitbucket.org/ned/coveragepy/issue/345/xml-reports-line-rate-0-for-empty-files
.. _issue 349: https://bitbucket.org/ned/coveragepy/issue/349/bad-regex-in-config-should-get-an-earlier

4.0a2


  • Officially support PyPy 2.4, and PyPy3 2.4. Drop support for
    CPython 3.2 and older versions of PyPy. The code won't work on CPython 3.2.
    It will probably still work on older versions of PyPy, but I'm not testing
    against them.
  • Plugins!
  • The original command line switches (-x to run a program, etc) are no
    longer supported.
  • A new option: coverage report --skip-covered will reduce the number of
    files reported by skipping files with 100% coverage. Thanks, Krystian
    Kichewko. This means that empty __init__.py files will be skipped, since
    they are 100% covered, closing issue 315_.
  • You can now specify the --fail-under option in the .coveragerc file
    as the [report] fail_under option. This closes issue 314_.
  • The COVERAGE_OPTIONS environment variable is no longer supported. It was
    a hack for --timid before configuration files were available.
  • The HTML report now has filtering. Type text into the Filter box on the
    index page, and only modules with that text in the name will be shown.
    Thanks, Danny Allen.
  • The textual report and the HTML report used to report partial branches
    differently for no good reason. Now the text report's "missing branches"
    column is a "partial branches" column so that both reports show the same
    numbers. This closes issue 342_.
  • If you specify a --rcfile that cannot be read, you will get an error
    message. Fixes issue 343_.
  • The --debug switch can now be used on any command.
  • You can now programmatically adjust the configuration of coverage.py by
    setting items on Coverage.config after construction.
  • A module run with -m can be used as the argument to --source, fixing
    issue 328_. Thanks, Buck Evan.
  • The regex for matching exclusion pragmas has been fixed to allow more kinds
    of whitespace, fixing issue 334_.
  • Made some PyPy-specific tweaks to improve speed under PyPy. Thanks, Alex
    Gaynor.
  • In some cases, with a source file missing a final newline, coverage.py would
    count statements incorrectly. This is now fixed, closing issue 293_.
  • The status.dat file that HTML reports use to avoid re-creating files that
    haven't changed is now a JSON file instead of a pickle file. This obviates
    issue 287_ and issue 237_.

.. _issue 237: https://bitbucket.org/ned/coveragepy/issue/237/htmlcov-with-corrupt-statusdat
.. _issue 287: https://bitbucket.org/ned/coveragepy/issue/287/htmlpy-doesnt-specify-pickle-protocol
.. _issue 293: https://bitbucket.org/ned/coveragepy/issue/293/number-of-statement-detection-wrong-if-no
.. _issue 314: https://bitbucket.org/ned/coveragepy/issue/314/fail_under-param-not-working-in-coveragerc
.. _issue 315: https://bitbucket.org/ned/coveragepy/issue/315/option-to-omit-empty-files-eg-__init__py
.. _issue 328: https://bitbucket.org/ned/coveragepy/issue/328/misbehavior-in-run-source
.. _issue 334: https://bitbucket.org/ned/coveragepy/issue/334/pragma-not-recognized-if-tab-character
.. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-coverage-reports-differ
.. _issue 343: https://bitbucket.org/ned/coveragepy/issue/343/an-explicitly-named-non-existent-config

4.0a1


  • Python versions supported are now CPython 2.6, 2.7, 3.2, 3.3, and 3.4, and
    PyPy 2.2.
  • Gevent, eventlet, and greenlet are now supported, closing issue 149_.
    The concurrency setting specifies the concurrency library in use. Huge
    thanks to Peter Portante for initial implementation, and to Joe Jevnik for
    the final insight that completed the work.
  • Options are now also read from a setup.cfg file, if any. Sections are
    prefixed with "coverage:", so the [run] options will be read from the
    [coverage:run] section of setup.cfg. Finishes issue 304_.
  • The report -m command can now show missing branches when reporting on
    branch coverage. Thanks, Steve Leonard. Closes issue 230_.
  • The XML report now contains a <source> element, fixing issue 94_. Thanks
    Stan Hu.
  • The class defined in the coverage module is now called Coverage instead
    of coverage, though the old name still works, for backward compatibility.
  • The fail-under value is now rounded the same as reported results,
    preventing paradoxical results, fixing issue 284_.
  • The XML report will now create the output directory if need be, fixing
    issue 285_. Thanks, Chris Rose.
  • HTML reports no longer raise UnicodeDecodeError if a Python file has
    undecodable characters, fixing issue 303_ and issue 331_.
  • The annotate command will now annotate all files, not just ones relative to
    the current directory, fixing issue 57_.
  • The coverage module no longer causes deprecation warnings on Python 3.4 by
    importing the imp module, fixing issue 305_.
  • Encoding declarations in source files are only considered if they are truly
    comments. Thanks, Anthony Sottile.

.. _issue 57: https://bitbucket.org/ned/coveragepy/issue/57/annotate-command-fails-to-annotate-many
.. _issue 94: https://bitbucket.org/ned/coveragepy/issue/94/coverage-xml-doesnt-produce-sources
.. _issue 149: https://bitbucket.org/ned/coveragepy/issue/149/coverage-gevent-looks-broken
.. _issue 230: https://bitbucket.org/ned/coveragepy/issue/230/show-line-no-for-missing-branches-in
.. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-show-more-precision
.. _issue 285: https://bitbucket.org/ned/coveragepy/issue/285/xml-report-fails-if-output-file-directory
.. _issue 303: https://bitbucket.org/ned/coveragepy/issue/303/unicodedecodeerror
.. _issue 304: https://bitbucket.org/ned/coveragepy/issue/304/attempt-to-get-configuration-from-setupcfg
.. _issue 305: https://bitbucket.org/ned/coveragepy/issue/305/pendingdeprecationwarning-the-imp-module
.. _issue 331: https://bitbucket.org/ned/coveragepy/issue/331/failure-of-encoding-detection-on-python2

Flask-JWT 0.2.0 -> 0.3.2

0.3.2


Released November 3rd 2015

  • Fixed an Authorization header conditional bug

0.3.1


Released October 26th 2015

  • Fix a bug with auth_request_handler
  • Deprecate auth_request_handler

0.3.0


Released October 15th 2015

.. note:: This release includes many breaking changes

  • Fix major implementation issue with encoding/decoding tokens
  • Changed new configuration options to align with PyJWT
  • Changed current_user to current_identity

pytest-cov 1.8.1 -> 2.3.0

2.3.0


  • Add support for specifying output location for html, xml, and annotate report.
    Contributed by Patrick Lannigan in PR113 &lt;https://github.com/pytest-dev/pytest-cov/pull/113&gt;_.
  • Fix bug hiding test failure when cov-fail-under failed.
  • For coverage >= 4.0, match the default behaviour of coverage report and
    error if coverage fails to find the source instead of just printing a warning.
    Contributed by David Szotten in PR116 &lt;https://github.com/pytest-dev/pytest-cov/pull/116&gt;_.
  • Fixed bug occurred when bare --cov parameter was used with xdist.
    Contributed by Michael Elovskikh in PR120 &lt;https://github.com/pytest-dev/pytest-cov/pull/120&gt;_.
  • Add support for skip_covered and added --cov-report=term-skip-covered command
    line options. Contributed by Saurabh Kumar in PR115 &lt;https://github.com/pytest-dev/pytest-cov/pull/115&gt;_.

2.2.1


  • Fixed incorrect merging of coverage data when xdist was used and coverage was &gt;= 4.0.

2.2.0


  • Added support for changing working directory in tests. Previously changing working
    directory would disable coverage measurements in suprocesses.
  • Fixed broken handling for --cov-report=annotate.

2.1.0


  • Added support for coverage 4.0b2.
  • Added the --cov-append command line options. Contributed by Christian Ledermann
    in PR80 &lt;https://github.com/pytest-dev/pytest-cov/pull/80&gt;_.

2.0.0


  • Added --cov-fail-under, akin to the new fail_under option in coverage-4.0
    (automatically activated if there's a [report] fail_under = ... in .coveragerc).
  • Changed --cov-report=term to automatically upgrade to --cov-report=term-missing
    if there's [run] show_missing = True in .coveragerc.
  • Changed --cov so it can be used with no path argument (in wich case the source
    settings from .coveragerc will be used instead).
  • Fixed .pth installation to work in all cases (install, easy_install, wheels, develop etc).
  • Fixed .pth uninstallation to work for wheel installs.
  • Support for coverage 4.0.
  • Data file suffixing changed to use coverage's data_suffix=True option (instead of the
    custom suffixing).
  • Avoid warning about missing coverage data (just like coverage.control.process_startup).
  • Fixed a race condition when running with xdist (all the workers tried to combine the files).
    It's possible that this issue is not present in pytest-cov 1.8.X.

1.8.2


  • N/A

Once you have closed this pull request, I'll create seperate pull requests for every update as soon as I find them.

That's it for now!

Happy merging! 🤖

@alexandre alexandre merged commit 90ca344 into master Aug 22, 2016
@alexandre alexandre deleted the pyup-initial-update branch August 22, 2016 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants