-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
more-itertools 6.0.0 release breaks pytest 4.2 #4770
Comments
I am using |
this is a release bug with more.itertools |
i take it back, it has all the righ metadata |
local testing indicates its supposed to work correctly, please provide more system information |
facing same issue with pytest 3.10.1. Error is: more-itertools requires Python '>=3.4' but the running Python is 2.7.5 |
Please update your More generally, this isn't actually a pytest issue, and our only "fix" would be to prevent the upgrade for Python 3 users. Remember, Python 2 is end-of-life at the end of 2019, and Pytest will drop support at that time. I'm leaving this open for now so others find the issue, but the only solution is |
I get the same error as @tayalakansh: pip detects the python version mismatch and then fails, instead of installing the last compatible version. So it's a cleaner error than OP, but the result (you can't use pytest with python2 currently) is the same:
|
what are the versions of pip and setuptools there? (i tested on python 2.7 and it installed correctly on pip as old as pip 9.x |
pip 19.0.2 and setuptools 40.8.0 per this:
|
I locked |
i believe we will have to bring this up with setuptools/pip, personally i cant replicate the issue |
If you are running your own devpi-server you need to upgrade to 4.7 or newer to support 'requires_python' |
@ThreePinkApples thanks for that detail, this may be key i wonder if any of the other users that see this particular issue use |
Same issue here on Mac OS X 10.8.5, with the error message seen by the OP. Pip 18.0 and setuptools 40.4.3. |
this happens for
|
@msnook can you confirm if you are using the latest |
I can make a PR from the mentioning branch if you like. I'm not sure if |
Oh for @sambrightman, just to confirm, if you install |
If I just make a virtualenv for Python 2.7 and |
Oh OK, so indeed there are two problems IIUC:
If people can confirm that 1) solves their problem it would be great. About 2), there's already an issue open about it: pypa/setuptools#1633. |
As fallenwood already mentioned, pinning the version of more-itertools to 5.0.0 in your project requirements can serve as a temporary fix. |
Newly build Centos CI docker image will fail due to this issue: pytest-dev/pytest#4770 Upgrade the version to 4.2.1 to fix this problem. Signed-off-by: Gris Ge <fge@redhat.com>
Newly build Centos CI docker image will fail due to this issue: pytest-dev/pytest#4770 Upgrade the version to 4.2.1 to fix this problem. Signed-off-by: Gris Ge <fge@redhat.com>
…sitive dep (#7238) ### Problem A floating transitive dependency of pytest, `more-itertools`, dropped support for python 2 in its 6.0.0 release -- see pytest-dev/pytest#4770. This is currently breaking our and our users' CI: see https://travis-ci.org/pantsbuild/pants/jobs/492004734. We could pin that dep, but as mentioned in pytest-dev/pytest#4770 (comment), pinning transitive deps of pytest would impose requirement constraints on users of pytest in pants. ### Solution - Pin `pytest==3.0.7` for now. ### Result python tests should no longer be broken.
…tertools issue Issue: pytest-dev/pytest#4770 Resolution: pytest-dev/pytest#4774
61: Update pytest to 4.3.0 r=rehandalal a=pyup-bot This PR updates [pytest](https://pypi.org/project/pytest) from **4.2.0** to **4.3.0**. <details> <summary>Changelog</summary> ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/pytest - Changelog: https://pyup.io/changelogs/pytest/ - Homepage: https://docs.pytest.org/en/latest/ </details> Co-authored-by: pyup-bot <github-bot@pyup.io>
1743: Update dependency webpack to v4.29.5 r=mythmon a=renovate[bot] This PR contains the following updates: | Package | Type | Update | Change | References | |---|---|---|---|---| | webpack | devDependencies | patch | `4.29.3` -> `4.29.5` | [source](https://togithub.com/webpack/webpack) | 1744: Scheduled weekly dependency update for week 07 r=mythmon a=pyup-bot ### Update [botocore](https://pypi.org/project/botocore) from **1.12.91** to **1.12.96**. <details> <summary>Changelog</summary> ### 1.12.96 ``` ======= * api-change:``chime``: Update chime client to latest version * api-change:``application-autoscaling``: Update application-autoscaling client to latest version * api-change:``iot``: Update iot client to latest version ``` ### 1.12.95 ``` ======= * api-change:``kinesisvideo``: Update kinesisvideo client to latest version * api-change:``ec2``: Update ec2 client to latest version ``` ### 1.12.94 ``` ======= * api-change:``rekognition``: Update rekognition client to latest version * api-change:``mediatailor``: Update mediatailor client to latest version * api-change:``efs``: Update efs client to latest version ``` ### 1.12.93 ``` ======= * api-change:``lambda``: Update lambda client to latest version ``` ### 1.12.92 ``` ======= * api-change:``appstream``: Update appstream client to latest version * api-change:``codebuild``: Update codebuild client to latest version * api-change:``mediapackage``: Update mediapackage client to latest version ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/botocore - Changelog: https://pyup.io/changelogs/botocore/ - Repo: https://github.com/boto/botocore </details> ### Update [cffi](https://pypi.org/project/cffi) from **1.11.5** to **1.12.1**. <details> <summary>Changelog</summary> ### 1.12.1 ``` ======= * CPython 3 on Windows: we again no longer compile with ``Py_LIMITED_API`` by default because such modules *still* cannot be used with virtualenv. The problem is that it doesn't work in CPython <= 3.4, and for technical reason we can't enable this flag automatically based on the version of Python. Like before, `Issue 350`_ mentions a workaround if you still want the ``Py_LIMITED_API`` flag and *either* you are not concerned about virtualenv *or* you are sure your module will not be used on CPython <= 3.4: pass ``define_macros=[("Py_LIMITED_API", None)]`` to the ``ffibuilder.set_source()`` call. ``` ### 1.12 ``` ===== * `Direct support for pkg-config`__. * ``ffi.from_buffer()`` takes a new optional *first* argument that gives the array type of the result. It also takes an optional keyword argument ``require_writable`` to refuse read-only Python buffers. * ``ffi.new()``, ``ffi.gc()`` or ``ffi.from_buffer()`` cdata objects can now be released at known times, either by using the ``with`` keyword or by calling the new ``ffi.release()``. * Windows, CPython 3.x: cffi modules are linked with ``python3.dll`` again. This makes them independant on the exact CPython version, like they are on other platforms. **It requires virtualenv 16.0.0.** * Accept an expression like ``ffi.new("int[4]", p)`` if ``p`` is itself another cdata ``int[4]``. * CPython 2.x: ``ffi.dlopen()`` failed with non-ascii file names on Posix * CPython: if a thread is started from C and then runs Python code (with callbacks or with the embedding solution), then previous versions of cffi would contain possible crashes and/or memory leaks. Hopefully, this has been fixed (see `issue 362`_). * Support for ``ffi.cdef(..., pack=N)`` where N is a power of two. Means to emulate ``pragma pack(N)`` on MSVC. Also, the default on Windows is now ``pack=8``, like on MSVC. This might make a difference in corner cases, although I can't think of one in the context of CFFI. The old way ``ffi.cdef(..., packed=True)`` remains and is equivalent to ``pack=1`` (saying e.g. that fields like ``int`` should be aligned to 1 byte instead of 4). .. __: cdef.htmlpkgconfig .. _`issue 362`: https://bitbucket.org/cffi/cffi/issues/362/ Older Versions ============== ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/cffi - Changelog: https://pyup.io/changelogs/cffi/ - Docs: http://cffi.readthedocs.org </details> ### Update [more-itertools](https://pypi.org/project/more-itertools) from **5.0.0** to **6.0.0**. <details> <summary>Changelog</summary> ### 6.0.0 ``` This is the first Python 3-only release. Python 2 users may use [version 5.0.0](https://github.com/erikrose/more-itertools/releases/tag/5.0.0). See [the release notes](https://github.com/erikrose/more-itertools/blob/e36eeebc9d01d2dbbe232880741e88585a95bf7d/docs/versions.rst600) for the full list of changes. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/more-itertools - Changelog: https://pyup.io/changelogs/more-itertools/ - Repo: https://github.com/erikrose/more-itertools - Docs: https://pythonhosted.org/more-itertools/ </details> ### Update [googleapis-common-protos](https://pypi.org/project/googleapis-common-protos) from **1.5.6** to **1.5.8**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/googleapis-common-protos - Repo: https://github.com/googleapis/googleapis </details> ### Update [boto3](https://pypi.org/project/boto3) from **1.9.91** to **1.9.96**. <details> <summary>Changelog</summary> ### 1.9.96 ``` ====== * api-change:``chime``: [``botocore``] Update chime client to latest version * api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version * api-change:``iot``: [``botocore``] Update iot client to latest version ``` ### 1.9.95 ``` ====== * api-change:``kinesisvideo``: [``botocore``] Update kinesisvideo client to latest version * api-change:``ec2``: [``botocore``] Update ec2 client to latest version ``` ### 1.9.94 ``` ====== * api-change:``rekognition``: [``botocore``] Update rekognition client to latest version * api-change:``mediatailor``: [``botocore``] Update mediatailor client to latest version * api-change:``efs``: [``botocore``] Update efs client to latest version ``` ### 1.9.93 ``` ====== * api-change:``lambda``: [``botocore``] Update lambda client to latest version ``` ### 1.9.92 ``` ====== * api-change:``appstream``: [``botocore``] Update appstream client to latest version * api-change:``codebuild``: [``botocore``] Update codebuild client to latest version * api-change:``mediapackage``: [``botocore``] Update mediapackage client to latest version ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/boto3 - Changelog: https://pyup.io/changelogs/boto3/ - Repo: https://github.com/boto/boto3 </details> ### Update [Django](https://pypi.org/project/Django) from **2.0.12** to **2.0.13**. <details> <summary>Changelog</summary> ### 2.0.13 ``` =========================== *February 12, 2019* Django 2.0.13 fixes a regression in 2.0.12/2.0.11. Bugfixes ======== * Fixed crash in ``django.utils.numberformat.format_number()`` when the number has over 200 digits (:ticket:`30177`). =========================== ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/django - Changelog: https://pyup.io/changelogs/django/ - Homepage: https://www.djangoproject.com/ </details> ### Update [django-countries](https://pypi.org/project/django-countries) from **5.3.2** to **5.3.3**. <details> <summary>Changelog</summary> ### 5.3.3 ``` ======================== - Add test coverage for Django Rest Framework 3.9. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/django-countries - Changelog: https://pyup.io/changelogs/django-countries/ - Repo: https://github.com/SmileyChris/django-countries/ </details> ### Update [newrelic](https://pypi.org/project/newrelic) from **4.12.0.113** to **4.14.0.115**. <details> <summary>Changelog</summary> ### 4.14.0.115 ``` This release of the Python agent adds support for native coroutines and generators with the background task API and adds support for Kubernetes detection. The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site. Features background_task can now be used with coroutines The background_task decorator API can now be used with native coroutines and generators. background_task(name='my_coroutine') async def my_coroutine(): await asyncio.sleep(0.1) Add support for collection of Kubernetes metadata The agent will now collect environment variables prefixed by NEW_RELIC_METADATA_ as additional metadata. Some of this metadata may be added to Transaction events to provide context between your Kubernetes cluster and your services. For details on the benefits (currently in beta) see this blog post. The agent now also collects the KUBERNETES_SERVICE_HOST environment variable to detect when the application is running on Kubernetes. The data is used to link the application to the host machine when using the New Relic infrastructure product. Bug Fixes Using time trace decorators allowed coroutines to become Iterables and generators to become awaitables When using time trace decorators native coroutines were converted to iterables. Additionally generators were converted to awaitables. The behavior of generators, native coroutines, and awaitable generators is now unchanged when using time trace decorators. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/newrelic - Changelog: https://pyup.io/changelogs/newrelic/ - Homepage: http://newrelic.com/docs/python/new-relic-for-python </details> ### Update [pytest](https://pypi.org/project/pytest) from **4.2.0** to **4.2.1**. <details> <summary>Changelog</summary> ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/pytest - Changelog: https://pyup.io/changelogs/pytest/ - Homepage: https://docs.pytest.org/en/latest/ </details> ### Update [sphinx_rtd_theme](https://pypi.org/project/sphinx_rtd_theme) from **0.4.2** to **0.4.3**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/sphinx-rtd-theme - Repo: https://github.com/rtfd/sphinx_rtd_theme/ </details> Co-authored-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: pyup-bot <github-bot@pyup.io>
… latest version of pytest has fixed this pytest-dev/pytest#4774
… latest version of pytest has fixed this pytest-dev/pytest#4774
commit efaae09 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 23:41:55 2019 -0700 Add debugging to release.sh for linux ucs2 It looks like the bootstrap part now works completely as intended! It's consistently using UCS2. But the release script is failing for some reason. Turn on debugging to wake up to hopefully some insight tomorrow morning.. commit 4cb6cae Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 18:27:22 2019 -0700 Squashed commit of the following: commit 9c754dc Merge: 3f30d39 7819724 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 17:17:34 2019 -0700 Merge branch 'master' of github.com:pantsbuild/pants into pex-interpreter-constraints commit 3f30d39 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 17:12:01 2019 -0700 Fix issue with compatibility_or_constraints() returning a tuple add_interpreter_constraints() expects a str, so we must unpack the tuple when calling it. commit ff17f73 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 22:46:16 2019 -0700 Revert "Constrain ci.sh to the exact Python interpreter version" This reverts commit 887a8ef. This change is necessary to fix the original motivation for this PR, but it does not really belong in this PR anymore. Instead, it should be in the Py2 ABI PR (7235). This PR should be kept more generic, and there is no logical connection to the changes being made with ci.sh, beyond that original motivating problem. commit 6b07abd Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:49:52 2019 -0700 Remove bad import My bad for not catching this before pushing. commit 2c6fdb0 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:37:41 2019 -0700 Generify solution by using compatibility_or_constraints() Instead of applying a bandaid for only `./pants binary`, John proposed fixing the issue with our PexBuilderWrapper itself. So, we use `compatibility_or_constrains()`, which will first try to return the target's compatibility, else will return the Python Setup subystem's value. The wrapper still is not ideal and John proposes killing add_interpreter_constraint() and add_interpreter_constraints_from() to instead automatically be setting the interpreter constraints from the targets graph. This PR does not make that change for the scope, but this should be noted. commit b71f164 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:03:46 2019 -0700 Fix typo commit 3bca020 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 20:31:14 2019 -0700 Add global interpreter constraints to Python binary creation commit 887a8ef Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 21:05:50 2019 -0700 Constrain ci.sh to the exact Python interpreter version Earlier we allowed the patch version to float. We discovered in pantsbuild#7235 with the CI run https://travis-ci.org/pantsbuild/pants/jobs/497208431#L891 that PEX was building with 2.7.10 but running with 2.7.13. The fix will require having Pants pass interpreter constraints to Pex. Even with that change though, the CI shard would still have the issue because the constraint would be floating. Now, we have the constraint be exact. commit 0d25bcc Merge: 373ffee 7819724 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 17:41:10 2019 -0700 Merge branch 'master' of github.com:pantsbuild/pants into py2-wheels-abi-specified commit 373ffee Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 17:39:25 2019 -0700 Configure PEX_PYTHON on linux UCS2 It looks like ./pants binary now completely builds the PEX with 2.7.15 / UCS2! But then when trying to run `./pants.pex -V`, it resolves the runtime interpreter to 2.7.13 :/ I'm not sure how the runtime interpreter selection is supposed to work, but there is an env var PEX_PYTHON that allows passing a path to the value you always want to use. So, we use this for now. commit 7819724 Author: Alex Schmitt <codealchemy@users.noreply.github.com> Date: Tue Feb 26 13:42:36 2019 -0800 Allow tasks to opt-in to target filtering (pantsbuild#7283) Followup to pantsbuild#7275 following [discussion](pantsbuild#7275 (comment)) that the target filter was being applied to tasks that do not support it (e.g. tasks that don't access targets via `get_targets()`) This adds a class property to `Task` that allows subclasses to effectively opt-in to the new behavior - and sets that flag to `True` for `fmt` and `lint` tasks. commit 3bf2d28 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 12:11:17 2019 -0700 Add Pyenv back to Travis path Even though we directly pass $PY, later processes expect the 2.7.15 interpreter to be discoverable so Pyenv must be on the path. commit 2166efe Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 09:52:10 2019 -0700 Set $PY to disambiguate which Py2.7 version to use Interpreter constraints don't work, as previously noted. commit 8dd215d Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 09:43:42 2019 -0700 Allow user to set $PY in ci.sh If not set, will resolve to the Python version being used. We should allow the user to set it though in cases like this PR, where we may have to set $PY to a very specific interpreter path. commit 49fe576 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 09:41:35 2019 -0700 Stop hardcoding interpreter constraints Let ci.sh determine them based on the $PY value. While working on the Linux UCS2 shard, it became clear that what really matters is which interpreter $PY (i.e. `python2`) resolves to. Setting the interpreter constraints will not impact what this resolves to nor how we bootstrap Pants. So, we should focus on setting $PY and let the interpreter constraints be resolved accordingly. commit c3dd843 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 08:49:44 2019 -0700 Improve wording. commit f810849 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 08:43:42 2019 -0700 Move interpreter constraints to Docker env entry Docker does not pull in external env vars. Instead, we must specify this in the Dockerfile. This change has added benefit that it moves all of the Py2 logic into the Dockerfile out of .travis.yml, and leaves .travis.yml solely to call the Dockerfile. commit b9efbf0 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 01:03:21 2019 -0700 Also set PANTS_PYTHON_SETUP_INTERPRETER_CONSTRAINTS for OSX Even though it was resolving correctly already, explicit is better than implicit. commit 8402c1f Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 01:01:03 2019 -0700 Ensure Linux UCS2 always uses Py2.7.15 (UCS2) It was not enough to install 2.7.15 and use Pyenv global. The 2.7.13 (UCS2) interpreter was still being recognized. commit 225f153 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 26 00:53:56 2019 -0700 Remove bad merge lines commit 1be9e90 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 22:41:04 2019 -0700 Squashed commit of the following: commit 6b07abd Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:49:52 2019 -0700 Remove bad import My bad for not catching this before pushing. commit 2c6fdb0 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:37:41 2019 -0700 Generify solution by using compatibility_or_constraints() Instead of applying a bandaid for only `./pants binary`, John proposed fixing the issue with our PexBuilderWrapper itself. So, we use `compatibility_or_constrains()`, which will first try to return the target's compatibility, else will return the Python Setup subystem's value. The wrapper still is not ideal and John proposes killing add_interpreter_constraint() and add_interpreter_constraints_from() to instead automatically be setting the interpreter constraints from the targets graph. This PR does not make that change for the scope, but this should be noted. commit b71f164 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:03:46 2019 -0700 Fix typo commit 3bca020 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 20:31:14 2019 -0700 Add global interpreter constraints to Python binary creation commit 887a8ef Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 21:05:50 2019 -0700 Constrain ci.sh to the exact Python interpreter version Earlier we allowed the patch version to float. We discovered in pantsbuild#7235 with the CI run https://travis-ci.org/pantsbuild/pants/jobs/497208431#L891 that PEX was building with 2.7.10 but running with 2.7.13. The fix will require having Pants pass interpreter constraints to Pex. Even with that change though, the CI shard would still have the issue because the constraint would be floating. Now, we have the constraint be exact. commit f530843 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 22:39:29 2019 -0700 Move unit tests above wheel building shards Now that we have 4 wheel building shards (soon 6)—and 2 of them require bootstrapping Pants—we move unit tests above to get more immediate feedback on if the PR is good or not. We still keep them high up relative to others because several major workflows require wheel building output. commit 223541e Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 22:35:02 2019 -0700 Fix Linux UCS2 using 2.7.13 with UCS4 instead of UCS2 sometimes There were two versions of 2.7.13 installed on the system, so Pants would sometimes choose an unintended version and would be inconsistent. commit 8428376 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 21:03:22 2019 -0700 Fix typo from squashed pex-constraints commit 48ef4dd Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 20:44:37 2019 -0700 Squashed commit of the following: commit 3bca020 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 20:31:14 2019 -0700 Add global interpreter constraints to Python binary creation commit 887a8ef Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 21:05:50 2019 -0700 Constrain ci.sh to the exact Python interpreter version Earlier we allowed the patch version to float. We discovered in pantsbuild#7235 with the CI run https://travis-ci.org/pantsbuild/pants/jobs/497208431#L891 that PEX was building with 2.7.10 but running with 2.7.13. The fix will require having Pants pass interpreter constraints to Pex. Even with that change though, the CI shard would still have the issue because the constraint would be floating. Now, we have the constraint be exact. commit 78a1aa9 Merge: 04c4ee0 26b0179 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 25 20:44:15 2019 -0700 Merge branch 'master' of github.com:pantsbuild/pants into py2-wheels-abi-specified commit 26b0179 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Mon Feb 25 16:23:46 2019 -0800 try defining algebraic Executables in the native backend to compose more readable toolchains (pantsbuild#6855) ### Problem As can be seen in `native_toolchain.py` in e.g. pantsbuild#6800, it is often difficult to follow changes to the native backend, especially changes which modify the order of resources such as library and include directories for our linkers and compilers. This is because we have been patching together collections of these resources "by hand", without applying any higher-level structure (explicitly constructing each `path_entries` and `library_dirs` field for every executable, every time, for example). This was done to avoid creating abstractions that might break down due to the rapidly evolving code. We can now take the step of more clearly defining the relationships between the toolchains we construct hierarchically. ### Solution - Add an `ExtensibleAlgebraic` mixin which allows declaring list fields which can be immutably modified one at a time with `prepend_field` and `append_field`, or all at once with `sequence`. - Add a `for_compiler` method to `BaseLinker` to wrap the specific process required to prep our linker for a specific compiler. - Apply all of the above in `native_toolchain.py`. ### Result The compilers and linkers provided by `@rule`s in `native_toolchain.py` are composed with consistent verbs from `ExtensibleAlgebraic`, leading to increased readability. commit cd4c773 Author: Nora Howard <nh@baroquebobcat.com> Date: Mon Feb 25 17:22:08 2019 -0700 [zinc-compile] fully adopt enum based switches for hermetic/not; test coverage (pantsbuild#7268) @cosmicexplorer wrote this as part of pantsbuild#7227. This patch is pulling out just the Zinc changes, with a few differences. I also added a new test for hermetic failures and some additional assertions to ensure that the right message is being communicated on failures, while doing that I discovered that hermetic/non-hermetic appear to produce error messages on different streams. commit c095f3b Author: Alex Schmitt <codealchemy@users.noreply.github.com> Date: Mon Feb 25 10:49:57 2019 -0800 Update TargetFiltering args for applying criteria (pantsbuild#7280) Update the class to take the criteria in the constructor, and helper methods take the targets against which to apply said criteria. From suggestion https://github.com/pantsbuild/pants/pull/7275\#discussion_r259554586 commit a87a01b Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Fri Feb 22 18:53:52 2019 -0800 don't do a pants run on osx (pantsbuild#7278) ### Problem Fixes pantsbuild#7247, catching a case that was otherwise missed. ### Solution - Don't do a `./pants run` on osx using the gnu toolchain in testing, as it doesn't work yet. ### Result As noted in pantsbuild#7249, it's strange that that PR passes but the nightly job fails -- it may be nondeterministic. commit a86639e Author: Alex Schmitt <codealchemy@users.noreply.github.com> Date: Fri Feb 22 16:52:32 2019 -0800 Add filtering subsystem to permit skipping targets by tags (pantsbuild#7275) This subsystem is responsible for handling options meant to exclude targets from specific tasks The application of the logic itself is contained in the TargetFiltering class - which currently only handles excluding targets with provided tags and can be expanded upon for additional filtering options. commit b34d66f Author: John Sirois <john.sirois@gmail.com> Date: Fri Feb 22 16:46:32 2019 -0800 Prepare the 1.15.0.dev1 release. (pantsbuild#7277) commit 8069653 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Fri Feb 22 11:41:58 2019 -0800 cache python tools in ~/.cache/pants (pantsbuild#7236) ### Problem This runs for (on my laptop) about 16 seconds every time I do a `clean-all`: ``` 22:27:23 00:02 [native-compile] 22:27:23 00:02 [conan-prep] 22:27:23 00:02 [create-conan-pex] 22:27:39 00:18 [conan-fetch] ``` It doesn't seem like we need to be putting this tool in the task workdir as the python requirements list is pretty static. Conan in particular will be instantiated by invoking almost every goal, and it is a nontrivial piece of software to resolve each time. Also, we aren't mixing in interpreter identity to the generated pex filename, which is a bug that has so far gone undetected: see pantsbuild#7236 (comment). ### Solution - Take the `stable_json_sha1()` of the requirements of each python tool generated by `PythonToolPrepBase` to generate a fingerprinted pex filename. - Stick it in the pants cachedir so it doesn't get blown away by a clean-all. - Add an `--interpreter-constraints` option to pex tools (where previously the repo's `--python-setup-interpreter-constraints` were implicitly used). - Ensure the selected interpreter identity is mixed into the fingerprinted filename. - Add a test for the pex filename fingerprinting and that the pex can be successfully executed for python 2 and 3 constraints. ### Result A significant amount of time spent waiting after clean builds is removed, and pex tools can have their own interpreter constraints as necessary. commit 04c4ee0 Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 12:36:56 2019 -0700 Move debugging to proper location It's failing before the release.sh script is even called. The bootstrap command is what's failing. commit e502f58 Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 12:24:33 2019 -0700 Fix linux ucs4 stage being overriden to cron instead of test commit 2cd72e4 Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 09:47:16 2019 -0700 Add back logging to debug osx ucs4 commit c9e1650 Merge: 7da092b 4097052 Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 22 09:40:38 2019 -0700 Merge branch 'master' of github.com:pantsbuild/pants into py2-wheels-abi-specified commit 4097052 Author: Stu Hood <stuhood@twitter.com> Date: Thu Feb 21 13:49:16 2019 -0800 Prepare 1.14.0rc3 (pantsbuild#7274) commit ea33c36 Author: Nora Howard <nh@baroquebobcat.com> Date: Wed Feb 20 12:43:32 2019 -0700 [jvm-compile] fix typo: s/direcotry/directory/ (pantsbuild#7265) Fix a typo in `jvm_compile.py` commit 761849e Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Wed Feb 20 11:38:39 2019 -0800 Fix nightly cron ctypes enum failure (pantsbuild#7249) ### Problem Resolves pantsbuild#7247. `ToolchainVariant('gnu')` does not in fact `== 'gnu'`. ### Solution - Use `.resolve_for_enum_variant()` instead of comparing with equality in that one failing test (I missed this in pantsbuild#7226, I fixed the instance earlier in the file though). - Raise an error when trying to use `==` on an enum to avoid this from happening again. - Note that in Python 3 it appears that `__hash__` must be explicitly implemented whenever `__eq__` is overridden, and this appears undocumented. ### Result The nightly cron job should be fixed, and enums are now a little more difficult to screw up. # Open Questions It's a little unclear why this didn't fail in CI -- either the test was cached, or some but not all travis osx images are provisioned with the correct dylib, causing a nondeterministic error, or something else? commit 0e6a144 Author: Daniel Wagner-Hall <dawagner@gmail.com> Date: Wed Feb 20 04:14:23 2019 +0000 Node is Display (pantsbuild#7264) Use standard traits, rather than our own methods which happen to do the same thing. commit 904e3f3 Author: Ekaterina Tyurina <tyurina.katty@yandex.ru> Date: Wed Feb 20 01:03:42 2019 +0000 Allow passing floating point numbers from rust to python (pantsbuild#7259) PR allows passing float points from Rust to Python. ``` externs::store_f64(v: f64) ``` commit 7da092b Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 17:03:59 2019 -0700 Fix platform default shards bootstrapping - OSX UCS2 shard no longer was setting RUN_PANTS_FROM_PEX anywhere - Linux UCS4 had its before_script entry being override by travis_image. commit 38e1cf7 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 15:35:15 2019 -0700 Remove unncessary RUN_PANTS_FROM_PEX=0 Now that we don't it in the base_build_wheels_env, we don't need to set this. This was actually causing a failure. ./pants only checks if the env var is set, and not what its value is. commit 621137e Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 15:16:04 2019 -0700 Fix improper call to {osx,linux}_config_env They don't exist apparently. commit 0da5f91 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 15:13:11 2019 -0700 Stop pulling down PEX Use the {osx,linux}_config images rather than {osx,linux}_test_config images. commit 513cd50 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 14:35:19 2019 -0700 release.sh still needs to run from PEX Change how we handle env var to not use PEX when first bootstrapping, then use it in the followup release.sh command. commit dc36d94 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 14:29:19 2019 -0700 Also deduplicate Pyenv env vars for OSX Realized this is a better design while working on pantsbuild#7261. commit ad45b2d Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 14:25:28 2019 -0700 Revert "Turn on PEX_VERBOSE for OSX ucs4 shard" This reverts commit 28b9e8b. commit fb9ef9b Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 14:24:21 2019 -0700 Revert "Run PEX with -v*9" This reverts commit edf81ef. commit ab534e2 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 14:23:28 2019 -0700 Bootstrap Pants when using new Python install We can't use the PEX from AWS because the Python versions do not match up. commit 0b59e46 Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 12:36:08 2019 -0700 Fix gcc no input file issues by passing dummy file For Linux UCS2, the build was failing due to gcc complaining it could not find any files. This reproduced locally when running `./pants3 setup-py --run="bdist_wheel --py-limited-api cp36" src/python/pants:pants-packaged` on OSX. John suggested and gave the code snippet to pass a dummy file so this no longer happens. Thanks John! commit edf81ef Author: Eric Arellano <ericarellano@me.com> Date: Tue Feb 19 09:33:12 2019 -0700 Run PEX with -v*9 PEX_VERBOSE only impacts runtime output. -vvv... impacts build time output. commit 7c17c0a Merge: 6ecb550 222bc11 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 18 17:47:13 2019 -0700 Merge branch 'master' of github.com:pantsbuild/pants into py2-wheels-abi-specified commit 222bc11 Author: Daniel Wagner-Hall <dawagner@gmail.com> Date: Mon Feb 18 21:12:30 2019 +0000 Revert remote execution from tower to grpcio (pantsbuild#7256) We're seeing weird broken connection errors with tower. We'll probably just chuck some retries in and be happy, but for now, let's get back to a more stable time. * Revert "Remove unused operation wrapper (pantsbuild#7194)" This reverts commit 9400024. * Revert "Switch operation getting to tower (pantsbuild#7108)" This reverts commit 0375b30. * Revert "Remote execution uses tower-grpc to start executions (pantsbuild#7049)" This reverts commit 28683c7. commit 3da2165 Author: Ekaterina Tyurina <tyurina.katty@yandex.ru> Date: Mon Feb 18 17:16:48 2019 +0000 Scheduler returns metrics as a dictionary instead of a tuple of tuples (pantsbuild#7255) ### Problem Scheduler returns metrics as a tuple of tuples (key, value). And later this tuple is transformed into a dictionary. It is considered to use metrics to return to python part zipkin span info and dict type will be more convenient. ### Solution Scheduler_metrics returns a store_dict instead of store_tuple. commit 6ecb550 Author: Eric Arellano <ericarellano@me.com> Date: Sat Feb 16 19:57:25 2019 -0800 Fix Dockerfile copyright year and add comment commit 8d69dc2 Author: Eric Arellano <ericarellano@me.com> Date: Sat Feb 16 19:18:45 2019 -0800 Improve naming of Build Wheels shards Make it more explicit how shard is configured / which wheel building config it has. Whereas for most shards we specify if they run with Py36 vs Py27 in parantheses, it is actually very important we make explicit the wheel building config, as it impacts which wheels we end up producing. commit 170e9c8 Author: Eric Arellano <ericarellano@me.com> Date: Sat Feb 16 19:10:24 2019 -0800 Install OpenSSL on OSX UCS4 shard The shard was failing when trying to build cryptography from an sdist because it could not find openssl. So, we now explicitly install it with Brew and modify the env vars to expose it. This is identical to how we install Py3 on OSX. commit e87f567 Author: Eric Arellano <ericarellano@me.com> Date: Sat Feb 16 18:14:57 2019 -0800 Fix typo in Dockerfile path The folder path is py27, not py2! commit cb50136 Author: Stu Hood <stuhood@twitter.com> Date: Fri Feb 15 20:04:46 2019 -0800 Prepare 1.14.0.rc2 instead. (pantsbuild#7251) commit 28b9e8b Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 15 13:38:21 2019 -0800 Turn on PEX_VERBOSE for OSX ucs4 shard I can't reproduce the same failure locally. John was suspicious why for the problematic dependencies the sdist isn't being used to build the wheel when the bdist is not released for cp27mu. Hopefully this provides some insight. commit f7472aa Merge: 1e83f37 1ece461 Author: Eric Arellano <ericarellano@me.com> Date: Fri Feb 15 13:15:26 2019 -0800 Merge branch 'master' of github.com:pantsbuild/pants into py2-wheels-abi-specified commit 1ece461 Author: Stu Hood <stuhood@twitter.com> Date: Fri Feb 15 10:07:23 2019 -0800 Prepare 1.14.0 (pantsbuild#7246) commit fedc91c Author: Stu Hood <stuhood@twitter.com> Date: Fri Feb 15 10:01:40 2019 -0800 Avoid capturing Snapshots for previously digested codegen outputs (pantsbuild#7241) ### Problem As described in pantsbuild#7229, re-capturing `Snapshots` on noop runs in `SimpleCodegenTask` caused a performance regression for larger codegen usecases. ### Solution Remove features from the python-exposed `Snapshot` API that would prevent them from being roundtrippable via a `Digest` (including preservation of canonical paths, and preservation of literal ordering... ie. pantsbuild#5802), add support for optimistically loading a `Snapshot` from a `Digest`, and then reuse code to dump/load a `Digest` for the codegen directories to skip `Snapshot` capturing in cases where the `Digest` had already been stored. ### Result Very large codegen noop usecase runtimes reduced from `~15.2` seconds to `~3.05` seconds. Fixes pantsbuild#7229, and fixes pantsbuild#5802. commit 594f91f Author: Ekaterina Tyurina <tyurina.katty@yandex.ru> Date: Fri Feb 15 01:54:51 2019 +0000 Add checks if values of flags zipkin-trace-id and zipkin-parent-id are valid (pantsbuild#7242) ### Problem When pants are called with flags zipkin-trace-id and zipkin-parent-id an assertion error is raised if the values of the flag are of the wrong format. The error is not informative. ### Solution Checks of values of flags zipkin-trace-id and zipkin-parent-id are added with a better error explanation. Users of the pants are asked to use 16-character or 32-character hex string. Also, tests are added for these checks. commit bc0536c Author: Stu Hood <stuhood@twitter.com> Date: Thu Feb 14 13:59:26 2019 -0800 Remove deprecated test classes (pantsbuild#7243) ### Problem `BaseTest` and the v1-aware `TaskTestBase` are long deprecated. Additionally, the `GraphTest` classes used v2 APIs that existed before `TestBase` came around. ### Solution Delete deprecated classes, and port `GraphTest` to `TestBase`. commit e4456fd Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Tue Feb 12 18:09:35 2019 -0800 fix expected pytest output for pytest integration after pinning to 3.0.7 (pantsbuild#7240) ### Problem pantsbuild#7238 attempted to fix an upstream pytest issue (and therefore unbreak our CI) by pinning the default pytest version in our pytest subsystem to `pytest==3.0.7`. This worked, but broke a few of our other tests which relied on specific pytest output, and master is broken now (sorry!). I also hastily merged pantsbuild#7226, which introduced another test failure, which I have fixed. These are the only failing tests, and these all now pass locally on my laptop. ### Solution - Fix expected pytest output in pytest runner testing. ### Result I think it's still a good idea to string match pytest output unless we suddenly have to change pytest versions drastically like this again. commit e382541 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Tue Feb 12 12:54:49 2019 -0800 Canonicalize enum pattern matching for execution strategy, platform, and elsewhere (pantsbuild#7226) ### Problem In pantsbuild#7092 we added [`NailgunTask#do_for_execution_strategy_variant()`](https://github.com/cosmicexplorer/pants/blob/70977ef064305b78406a627e07f4dae3a60e4ae4/src/python/pants/backend/jvm/tasks/nailgun_task.py#L31-L43), which allowed performing more declarative execution strategy-specific logic in nailgunnable tasks. Further work with rsc will do even more funky things with our nailgunnable task logic, and while we will eventually have a unified story again for nailgun and subprocess invocations with the v2 engine (see pantsbuild#7079), for now having this check that we have performed the logic we expect all execution strategy variants is very useful. This PR puts that pattern matching logic into `enum()`: https://github.com/pantsbuild/pants/blob/84cf9a75dbf68cf7126fe8372ab9b2f48720464d/src/python/pants/util/objects.py#L173-L174, among other things. **Note:** `TypeCheckError` and other exceptions are moved up from further down in `objects.py`. ### Solution - add `resolve_for_enum_variant()` method to `enum` which does the job of the previous `do_for_execution_strategy_variant()` - make the native backend's `Platform` into an enum. - stop silently converting a `None` argument to the enum's `create()` classmethod into its`default_value`. - add `register_enum_option()` helper method to register options based on enum types. ### Result We have a low-overhead way to convert potentially-tricky conditional logic into a checked pattern matching-style interface with `enum()`, and it is easier to register enum options. commit d0432df Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Tue Feb 12 12:50:59 2019 -0800 Pin pytest version to avoid induced breakage from more-itertools transitive dep (pantsbuild#7238) ### Problem A floating transitive dependency of pytest, `more-itertools`, dropped support for python 2 in its 6.0.0 release -- see pytest-dev/pytest#4770. This is currently breaking our and our users' CI: see https://travis-ci.org/pantsbuild/pants/jobs/492004734. We could pin that dep, but as mentioned in pytest-dev/pytest#4770 (comment), pinning transitive deps of pytest would impose requirement constraints on users of pytest in pants. ### Solution - Pin `pytest==3.0.7` for now. ### Result python tests should no longer be broken. commit 3d7a295 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Mon Feb 11 22:02:21 2019 -0800 add a TypedCollection type constraint to reduce boilerplate for datatype tuple fields (pantsbuild#7115) ### Problem *Resolves pantsbuild#6936.* There's been a [TODO in `pants.util.objects.Collection`](https://github.com/pantsbuild/pants/blob/c342fd3432aa0d73e402d2db7e013ecfcc76e9c8/src/python/pants/util/objects.py#L413) for a while to typecheck datatype tuple fields. pantsbuild#6936 has some thoughts on how to do this, but after realizing I could split out `TypeConstraint` into a base class and then introduce `BasicTypeConstraint` for type constraints which only act on the type, I think that ticket is invalidated as this solution is much cleaner. ### Solution - Split out logic for basic type checking (without looking at the object itself) into a `BasicTypeConstraint` class, which `Exactly` and friends inherit from. - Create the `TypedCollection` type constraint, which checks that its argument is iterable and then validates each element of the collection with a `BasicTypeConstraint` constructor argument. - Note that `TypedCollection` is a `TypeConstraint`, but not a `BasicTypeConstraint`, as it has to inspect the actual object object to determine whether each element matches the provided `BasicTypeConstraint`. - Move `pants.util.objects.Collection` into `src/python/pants/engine/objects.py`, as it is specifically for engine objects. - Use `TypedCollection` for the `dependencies` field of the datatype returned by `Collection.of()`. ### Result - `datatype` consumers and creators no longer have to have lots of boilerplate when using collections arguments, and those arguments can now be typechecked and made hashable for free! ### TODO in followup: `wrapper_type` See pantsbuild#7172. commit 1e83f37 Author: Eric Arellano <ericarellano@me.com> Date: Mon Feb 11 17:37:31 2019 -0700 Setup UCS2 vs UCS4 travis shards We must now build pantsbuild.pants with both unicode versions for Py2. So, we introduce Py2 to do this. We use Pyenv to install interpreter with the relevant encoding where necessary. See https://stackoverflow.com/questions/38928942/build-python-as-ucs-4-via-pyenv. commit a02dde1 Author: Eric Arellano <ericarellano@me.com> Date: Thu Feb 7 11:33:53 2019 -0700 Add ext_modules to BUILD entry This is going to be necessary to release Py3 with abi3. The line however results in the issue that this PR is going to aim to fix: now Python 2 will be built with abi `cp27m` or `cp27mu`, whereas earlier it was `none`. To test, try running `./pants setup-py --run="bdist_wheel --python-tag cp27 --plat-name=linux_x86_64" src/python/pants:pants-packaged` followed by `ls -l dist/pantsbuild.pants-1.14.0rc0/dist/`. Note also that ext_modules is deprecated in favor of distutils.Extension. We use this now as a temporary workaround until we add support for Extension. commit 874ce34 Author: Chris Livingston <clivingston45@gmail.com> Date: Mon Feb 11 13:27:50 2019 -0500 Validate and maybe prune interpreter cache run over run (pantsbuild#7225) * Purge stale interpreters from Interpreter Cache commit 5d28cf8 Author: Daniel Wagner-Hall <dawagner@gmail.com> Date: Fri Feb 8 14:58:23 2019 +0000 Prep for 1.15.0.dev0 (pantsbuild#7230) commit 84cf9a7 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Wed Feb 6 13:56:35 2019 -0800 deprecate implicit usage of binary_mode=True and mode='wb' in dirutil methods (pantsbuild#7120) ### Problem *Resolves pantsbuild#6543. See also [the python 3 migration project](https://github.com/pantsbuild/pants/projects/10).* There has been [a TODO](https://github.com/pantsbuild/pants/blob/6fcd7f7d0f8787910cfac01ec2895cdbd5cee66f/src/python/pants/util/dirutil.py#L109) pointing to pantsbuild#6543 to deprecate the `binary_mode` argument to `pants.util.dirutil.safe_file_dump()`, which wasn't canonicalized with a `deprecated_conditional`. This is because `binary_mode` doesn't quite make sense the way it does with file read methods `read_file()` and `maybe_read_file()`, because a file can be appended to as well as truncated (as opposed to reads). Separately, defaulting `binary_mode=True` for file read methods means more explicit conversions to unicode in a python 3 world, ### Solution - Deprecate the `binary_mode` argument to `safe_file_dump()`, as well as not explicitly specifying the `mode` argument. - `safe_file_dump()` now also defaults `payload=''`. - Also deprecate not specifying the `mode='wb'` argument in `safe_file_dump()`. - Deprecate not explicitly specifying the `binary_mode` argument in `{maybe_,}read_file()` and `temporary_file()` so that it can be given a default of unicode when pants finishes [migrating to python 3](https://github.com/pantsbuild/pants/projects/10) -- see pantsbuild#7121. - Update usages of `safe_file_dump()` across the repo. ### Result Pants plugins will see a deprecation warning if they fail to explicitly specify the `binary_mode` for file read methods in preparation for switching the default to unicode for [the python 3 switchover](https://github.com/pantsbuild/pants/projects/10). Several ambiguities in the `safe_file_dump()` method are alleviated. pantsbuild#7121 covers the eventual switchover to a default of `binary_mode=False` after the python 3 migration completes. commit 224c2a0 Author: Borja Lorente <blorente@users.noreply.github.com> Date: Wed Feb 6 19:21:10 2019 +0000 Make Resettable lazy again (pantsbuild#7222) ### Problem In the context of pantsbuild#6817, there is a logging issue that manifests when the daemon forks. In particular, in `fork_context`, both the daemon and the client reset some services that implement `Resettable`. Some of those services log at startup, when the client hasn't had time to reconfigure its logging to stderr, and therefore all these startup logs are intermingled in the `pantsd.log` file. ### Solution If we make `Resettable` lazy again, since we are ensured to only enter `fork_context` under a lock, the logging can only happen when the client has had time to configure its loggers. ### Result `Resettable` is now lazy. `Resettable::get()` is now implemented in terms of `Resettable::with`. commit f281642 Author: Danny McClanahan <1305167+cosmicexplorer@users.noreply.github.com> Date: Wed Feb 6 10:26:07 2019 -0800 fix _raise_deferred_exc() (pantsbuild#7008) ### Problem The `_raise_deferred_exc(self)` method in `daemon_pants_runner.py` hasn't ever been tested. As a result, it causes an easily fixable error: the issue can be easily reproduced if you register an option twice in the same task and then run with pantsd enabled (you get the wrong exception, because `exc_type` isn't needed to construct the exception again, that's what `exc_value` is for). ### Solution - Appropriately destructure `sys.exc_info()` (if that was what was used to populate `self._deferred_exception`) and re-raise the exception with its original traceback. ### Result This error is fixed, but not yet tested -- see pantsbuild#7220. commit f0a1a9f Author: Stu Hood <stuhood@twitter.com> Date: Wed Feb 6 07:17:10 2019 -0800 Prepare 1.14.0rc1 (pantsbuild#7221) commit b6f045d Author: Daniel Wagner-Hall <dawagner@gmail.com> Date: Wed Feb 6 10:47:30 2019 +0000 Resolve all platforms from all python targets (pantsbuild#7156) Don't just use the default configured targets. This means that _all_ transitive 3rdparty python will need to be resolvable in _all_ platforms in any target in the graph. This is not ideal (we really want to be doing per-root resolves), but because we currently do one global resolve, this is a decent fit. commit b08c1fd Author: Ekaterina Tyurina <tyurina.katty@yandex.ru> Date: Wed Feb 6 10:40:35 2019 +0000 Add flag reporting-zipkin-sample-rate (pantsbuild#7211) ### Problem In the current implementation, every time the pants command is run with zipkin tracing turned on all the zipkin traces will be collected. It is not very convenient when the number of runs is very big. ### Solution Possibility to set the sample rate will allow us to have the number of traces that fits the constraints of Zipkin server. ### Result A flag `reporting-zipkin-sample-rate` was added that sets the sample rate at which to sample Zipkin traces. If flags `reporting-zipkin-trace-id` and `reporting-zipkin-parent-id` are set the sample rate will always be 100.0 (no matter what is set in `reporting-zipkin-sample-rate` flag). commit 95638d3 Author: Stu Hood <stuhood@twitter.com> Date: Tue Feb 5 16:19:17 2019 -0800 Only lint the direct sources of a linted target. (pantsbuild#7219) ### Problem The thrift linter currently redundantly lints the transitive dependencies of each target, leading to repetitive errors, and larger tool invokes than necessary. ### Solution Lint only the directly owned sources of a target, and expand unit tests. commit 121f98c Author: Stu Hood <stuhood@twitter.com> Date: Tue Feb 5 16:05:11 2019 -0800 Do not render the coursier workunit unless it will run. (pantsbuild#7218) ### Problem Currently the `bootstrap-coursier` workunit is rendered repeatedly, although it only actually runs once. ### Solution Only render the workunit if it will run. commit b2f5a49 Author: Marcin Podolski <marcinex7@gmail.com> Date: Wed Feb 6 00:17:09 2019 +0100 documentation for grpcio (pantsbuild#7155) ### Problem Documentation for grpcio generation tool commit f73f112 Author: Daniel Wagner-Hall <dawagner@gmail.com> Date: Tue Feb 5 15:33:43 2019 +0000 Skip flaky test (pantsbuild#7209) Relates to pantsbuild#7199 commit f0bb0da Author: Stu Hood <stuhood@twitter.com> Date: Mon Feb 4 20:51:34 2019 -0800 Only run master-dependent commithooks on master (pantsbuild#7214) ### Problem See pantsbuild#7213: some commit hooks are only valid in a context where master is present (and should otherwise be skipped). ### Solution Move more hooks that reference `master` under the check for the presence of `master`. ### Result Fixes pantsbuild#7213, and unblocks further iteration on the `1.14.x` stable branch.
The itest failure is due to a chain of dependencies that end up trying to install more_itertools without specifying a version. `more_itertools` dropped support for py27 with version 6.0.0, which causes failures when trying to import it in a py27 environment with the same error as here: pytest-dev/pytest#4770 Why did it start failing this week? It looks like our internal pypi: https://pypi.yelpcorp.com/simple/more-itertools/ has only had up to version 4.2.0 recently, and @drmorr uploaded a wheel for v7.2.0 yesterday, which the py27 acceptance test is trying to install. It looks like the old version of pip we’re using, as described in that github issue, is trying to install the latest version of more-itertools, despite itest being marked as only for py3, and failing in the itest.
The itest failure is due to a chain of dependencies that end up trying to install more_itertools without specifying a version. `more_itertools` dropped support for py27 with version 6.0.0, which causes failures when trying to import it in a py27 environment with the same error as here: pytest-dev/pytest#4770 Why did it start failing this week? It looks like our internal pypi has only had up to version 4.2.0 recently, and @drmorr uploaded a wheel for v7.2.0 yesterday, which the py27 acceptance test is trying to install. It looks like the old version of pip we’re using, as described in that github issue, is trying to install the latest version of more-itertools, despite itest being marked as only for py3, and failing in the itest.
The itest failure is due to a chain of dependencies that end up trying to install more_itertools without specifying a version. `more_itertools` dropped support for py27 with version 6.0.0, which causes failures when trying to import it in a py27 environment with the same error as here: pytest-dev/pytest#4770 Why did it start failing this week? It looks like our internal pypi has only had up to version 4.2.0 recently, and @drmorr uploaded a wheel for v7.2.0 yesterday, which the py27 acceptance test is trying to install. It looks like the old version of pip we’re using, as described in that github issue, is trying to install the latest version of more-itertools, despite itest being marked as only for py3, and failing in the itest.
32: Pin pytest to latest version 5.1.3 r=duckinator a=pyup-bot This PR pins [pytest](https://pypi.org/project/pytest) to the latest release **5.1.3**. <details> <summary>Changelog</summary> ### 5.1.3 ``` ========================= Bug Fixes --------- - `5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. - `5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. - `5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase characters (introduced by 5792). ``` ### 5.1.2 ``` ========================= Bug Fixes --------- - `2270 <https://github.com/pytest-dev/pytest/issues/2270>`_: Fixed ``self`` reference in function-scoped fixtures defined plugin classes: previously ``self`` would be a reference to a *test* class, not the *plugin* class. - `570 <https://github.com/pytest-dev/pytest/issues/570>`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization. - `5782 <https://github.com/pytest-dev/pytest/issues/5782>`_: Fix decoding error when printing an error response from ``--pastebin``. - `5786 <https://github.com/pytest-dev/pytest/issues/5786>`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like ``pytest-xdist`` to display them properly. - `5792 <https://github.com/pytest-dev/pytest/issues/5792>`_: Windows: Fix error that occurs in certain circumstances when loading ``conftest.py`` from a working directory that has casing other than the one stored in the filesystem (e.g., ``c:\test`` instead of ``C:\test``). ``` ### 5.1.1 ``` ========================= Bug Fixes --------- - `5751 <https://github.com/pytest-dev/pytest/issues/5751>`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1. ``` ### 5.1.0 ``` ========================= Removals -------- - `5180 <https://github.com/pytest-dev/pytest/issues/5180>`_: As per our policy, the following features have been deprecated in the 4.X series and are now removed: * ``Request.getfuncargvalue``: use ``Request.getfixturevalue`` instead. * ``pytest.raises`` and ``pytest.warns`` no longer support strings as the second argument. * ``message`` parameter of ``pytest.raises``. * ``pytest.raises``, ``pytest.warns`` and ``ParameterSet.param`` now use native keyword-only syntax. This might change the exception message from previous versions, but they still raise ``TypeError`` on unknown keyword arguments as before. * ``pytest.config`` global variable. * ``tmpdir_factory.ensuretemp`` method. * ``pytest_logwarning`` hook. * ``RemovedInPytest4Warning`` warning type. * ``request`` is now a reserved name for fixtures. For more information consult `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ in the docs. - `5565 <https://github.com/pytest-dev/pytest/issues/5565>`_: Removed unused support code for `unittest2 <https://pypi.org/project/unittest2/>`__. The ``unittest2`` backport module is no longer necessary since Python 3.3+, and the small amount of code in pytest to support it also doesn't seem to be used: after removed, all tests still pass unchanged. Although our policy is to introduce a deprecation period before removing any features or support for third party libraries, because this code is apparently not used at all (even if ``unittest2`` is used by a test suite executed by pytest), it was decided to remove it in this release. If you experience a regression because of this, please `file an issue <https://github.com/pytest-dev/pytest/issues/new>`__. - `5615 <https://github.com/pytest-dev/pytest/issues/5615>`_: ``pytest.fail``, ``pytest.xfail`` and ``pytest.skip`` no longer support bytes for the message argument. This was supported for Python 2 where it was tempting to use ``"message"`` instead of ``u"message"``. Python 3 code is unlikely to pass ``bytes`` to these functions. If you do, please decode it to an ``str`` beforehand. Features -------- - `5564 <https://github.com/pytest-dev/pytest/issues/5564>`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``. - `5576 <https://github.com/pytest-dev/pytest/issues/5576>`_: New `NUMBER <https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options>`__ option for doctests to ignore irrelevant differences in floating-point numbers. Inspired by Sébastien Boisgérault's `numtest <https://github.com/boisgera/numtest>`__ extension for doctest. Improvements ------------ - `5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now includes a timestamp and hostname in the testsuite tag. - `5707 <https://github.com/pytest-dev/pytest/issues/5707>`_: Time taken to run the test suite now includes a human-readable representation when it takes over 60 seconds, for example:: ===== 2 failed in 102.70s (0:01:42) ===== Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5115 <https://github.com/pytest-dev/pytest/issues/5115>`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest. - `5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root element. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5537 <https://github.com/pytest-dev/pytest/issues/5537>`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the standard library on Python 3.8+. - `5578 <https://github.com/pytest-dev/pytest/issues/5578>`_: Improve type checking for some exception-raising functions (``pytest.xfail``, ``pytest.skip``, etc) so they provide better error messages when users meant to use marks (for example ``pytest.xfail`` instead of ``pytest.mark.xfail``). - `5606 <https://github.com/pytest-dev/pytest/issues/5606>`_: Fixed internal error when test functions were patched with objects that cannot be compared for truth values against others, like ``numpy`` arrays. - `5634 <https://github.com/pytest-dev/pytest/issues/5634>`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases. This makes ``unittest`` cases handle ``quit`` from pytest's pdb correctly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. - `5701 <https://github.com/pytest-dev/pytest/issues/5701>`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``. - `5734 <https://github.com/pytest-dev/pytest/issues/5734>`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions. Improved Documentation ---------------------- - `5669 <https://github.com/pytest-dev/pytest/issues/5669>`_: Add docstring for ``Testdir.copy_example``. Trivial/Internal Changes ------------------------ - `5095 <https://github.com/pytest-dev/pytest/issues/5095>`_: XML files of the ``xunit2`` family are now validated against the schema by pytest's own test suite to avoid future regressions. - `5516 <https://github.com/pytest-dev/pytest/issues/5516>`_: Cache node splitting function which can improve collection performance in very large test suites. - `5603 <https://github.com/pytest-dev/pytest/issues/5603>`_: Simplified internal ``SafeRepr`` class and removed some dead code. - `5664 <https://github.com/pytest-dev/pytest/issues/5664>`_: When invoking pytest's own testsuite with ``PYTHONDONTWRITEBYTECODE=1``, the ``test_xfail_handling`` test no longer fails. - `5684 <https://github.com/pytest-dev/pytest/issues/5684>`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.). ``` ### 5.0.1 ``` ========================= Bug Fixes --------- - `5479 <https://github.com/pytest-dev/pytest/issues/5479>`_: Improve quoting in ``raises`` match failure message. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. Improved Documentation ---------------------- - `5517 <https://github.com/pytest-dev/pytest/issues/5517>`_: Improve "Declaring new hooks" section in chapter "Writing Plugins" ``` ### 5.0.0 ``` ========================= Important --------- This release is a Python3.5+ only release. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Removals -------- - `1149 <https://github.com/pytest-dev/pytest/issues/1149>`_: Pytest no longer accepts prefixes of command-line arguments, for example typing ``pytest --doctest-mod`` inplace of ``--doctest-modules``. This was previously allowed where the ``ArgumentParser`` thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues `1149 <https://github.com/pytest-dev/pytest/issues/1149>`__, `3413 <https://github.com/pytest-dev/pytest/issues/3413>`__, and `4009 <https://github.com/pytest-dev/pytest/issues/4009>`__. - `5402 <https://github.com/pytest-dev/pytest/issues/5402>`_: **PytestDeprecationWarning are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestDeprecationWarning`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 5.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``5.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning But this will stop working when pytest ``5.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `5402 <https://github.com/pytest-dev/pytest/issues/5402>`__. - `5412 <https://github.com/pytest-dev/pytest/issues/5412>`_: ``ExceptionInfo`` objects (returned by ``pytest.raises``) now have the same ``str`` representation as ``repr``, which avoids some confusion when users use ``print(e)`` to inspect the object. This means code like: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e) Needs to be changed to: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value) Deprecations ------------ - `4488 <https://github.com/pytest-dev/pytest/issues/4488>`_: The removal of the ``--result-log`` option and module has been postponed to (tentatively) pytest 6.0 as the team has not yet got around to implement a good alternative for it. - `466 <https://github.com/pytest-dev/pytest/issues/466>`_: The ``funcargnames`` attribute has been an alias for ``fixturenames`` since pytest 2.3, and is now deprecated in code too. Features -------- - `3457 <https://github.com/pytest-dev/pytest/issues/3457>`_: New `pytest_assertion_pass <https://docs.pytest.org/en/latest/reference.html_pytest.hookspec.pytest_assertion_pass>`__ hook, called with context information when an assertion *passes*. This hook is still **experimental** so use it with caution. - `5440 <https://github.com/pytest-dev/pytest/issues/5440>`_: The `faulthandler <https://docs.python.org/3/library/faulthandler.html>`__ standard library module is now enabled by default to help users diagnose crashes in C modules. This functionality was provided by integrating the external `pytest-faulthandler <https://github.com/pytest-dev/pytest-faulthandler>`__ plugin into the core, so users should remove that plugin from their requirements if used. For more information see the docs: https://docs.pytest.org/en/latest/usage.htmlfault-handler - `5452 <https://github.com/pytest-dev/pytest/issues/5452>`_: When warnings are configured as errors, pytest warnings now appear as originating from ``pytest.`` instead of the internal ``_pytest.warning_types.`` module. - `5125 <https://github.com/pytest-dev/pytest/issues/5125>`_: ``Session.exitcode`` values are now coded in ``pytest.ExitCode``, an ``IntEnum``. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution. The team doesn't expect this change to break test suites or plugins in general, except in esoteric/specific scenarios. **pytest-xdist** users should upgrade to ``1.29.0`` or later, as ``pytest-xdist`` required a compatibility fix because of this change. Bug Fixes --------- - `1403 <https://github.com/pytest-dev/pytest/issues/1403>`_: Switch from ``imp`` to ``importlib``. - `1671 <https://github.com/pytest-dev/pytest/issues/1671>`_: The name of the ``.pyc`` files cached by the assertion writer now includes the pytest version to avoid stale caches. - `2761 <https://github.com/pytest-dev/pytest/issues/2761>`_: Honor PEP 235 on case-insensitive file systems. - `5078 <https://github.com/pytest-dev/pytest/issues/5078>`_: Test module is no longer double-imported when using ``--pyargs``. - `5260 <https://github.com/pytest-dev/pytest/issues/5260>`_: Improved comparison of byte strings. When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff It now shows the actual ascii representation instead, which is often more useful:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff - `5335 <https://github.com/pytest-dev/pytest/issues/5335>`_: Colorize level names when the level in the logging format is formatted using '%(levelname).Xs' (truncated fixed width alignment), where X is an integer. - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5432 <https://github.com/pytest-dev/pytest/issues/5432>`_: Prevent "already imported" warnings from assertion rewriter when invoking pytest in-process multiple times. - `5433 <https://github.com/pytest-dev/pytest/issues/5433>`_: Fix assertion rewriting in packages (``__init__.py``). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. Improved Documentation ---------------------- - `5315 <https://github.com/pytest-dev/pytest/issues/5315>`_: Expand docs on mocking classes and dictionaries with ``monkeypatch``. - `5416 <https://github.com/pytest-dev/pytest/issues/5416>`_: Fix PytestUnknownMarkWarning in run/skip example. ``` ### 4.6.5 ``` ========================= Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5478 <https://github.com/pytest-dev/pytest/issues/5478>`_: Fix encode error when using unicode strings in exceptions with ``pytest.raises``. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. ``` ### 4.6.4 ``` ========================= Bug Fixes --------- - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. ``` ### 4.6.3 ``` ========================= Bug Fixes --------- - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. ``` ### 4.6.2 ``` ========================= Bug Fixes --------- - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. ``` ### 4.6.1 ``` ========================= Bug Fixes --------- - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5358 <https://github.com/pytest-dev/pytest/issues/5358>`_: Fix assertion rewriting of ``all()`` calls to deal with non-generators. ``` ### 4.6.0 ``` ========================= Important --------- The ``4.6.X`` series will be the last series to support **Python 2 and Python 3.4**. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Features -------- - `4559 <https://github.com/pytest-dev/pytest/issues/4559>`_: Added the ``junit_log_passing_tests`` ini value which can be used to enable or disable logging of passing test output in the Junit XML file. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: pytester's ``testdir.spawn`` uses ``tmpdir`` as HOME/USERPROFILE directory. - `5062 <https://github.com/pytest-dev/pytest/issues/5062>`_: Unroll calls to ``all`` to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions. - `5063 <https://github.com/pytest-dev/pytest/issues/5063>`_: Switch from ``pkg_resources`` to ``importlib-metadata`` for entrypoint detection for improved performance and import time. - `5091 <https://github.com/pytest-dev/pytest/issues/5091>`_: The output for ini options in ``--help`` has been improved. - `5269 <https://github.com/pytest-dev/pytest/issues/5269>`_: ``pytest.importorskip`` includes the ``ImportError`` now in the default ``reason``. - `5311 <https://github.com/pytest-dev/pytest/issues/5311>`_: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter. - `5312 <https://github.com/pytest-dev/pytest/issues/5312>`_: Improved formatting of multiline log messages in Python 3. Bug Fixes --------- - `2064 <https://github.com/pytest-dev/pytest/issues/2064>`_: The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now. - `4908 <https://github.com/pytest-dev/pytest/issues/4908>`_: The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``). - `5036 <https://github.com/pytest-dev/pytest/issues/5036>`_: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized. - `5256 <https://github.com/pytest-dev/pytest/issues/5256>`_: Handle internal error due to a lone surrogate unicode character not being representable in Jython. - `5257 <https://github.com/pytest-dev/pytest/issues/5257>`_: Ensure that ``sys.stdout.mode`` does not include ``'b'`` as it is a text stream. - `5278 <https://github.com/pytest-dev/pytest/issues/5278>`_: Pytest's internal python plugin can be disabled using ``-p no:python`` again. - `5286 <https://github.com/pytest-dev/pytest/issues/5286>`_: Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option not working when using a list of test IDs in parametrized tests. - `5330 <https://github.com/pytest-dev/pytest/issues/5330>`_: Show the test module being collected when emitting ``PytestCollectionWarning`` messages for test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem. - `5333 <https://github.com/pytest-dev/pytest/issues/5333>`_: Fix regression in 4.5.0 with ``--lf`` not re-running all tests with known failures from non-selected tests. Improved Documentation ---------------------- - `5250 <https://github.com/pytest-dev/pytest/issues/5250>`_: Expand docs on use of ``setenv`` and ``delenv`` with ``monkeypatch``. ``` ### 4.5.0 ``` ========================= Features -------- - `4826 <https://github.com/pytest-dev/pytest/issues/4826>`_: A warning is now emitted when unknown marks are used as a decorator. This is often due to a typo, which can lead to silently broken tests. - `4907 <https://github.com/pytest-dev/pytest/issues/4907>`_: Show XFail reason as part of JUnitXML message field. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: Messages from crash reports are displayed within test summaries now, truncated to the terminal width. - `5023 <https://github.com/pytest-dev/pytest/issues/5023>`_: New flag ``--strict-markers`` that triggers an error when unknown markers (e.g. those not registered using the `markers option`_ in the configuration file) are used in the test suite. The existing ``--strict`` option has the same behavior currently, but can be augmented in the future for additional checks. .. _`markers option`: https://docs.pytest.org/en/latest/reference.htmlconfval-markers - `5026 <https://github.com/pytest-dev/pytest/issues/5026>`_: Assertion failure messages for sequences and dicts contain the number of different items now. - `5034 <https://github.com/pytest-dev/pytest/issues/5034>`_: Improve reporting with ``--lf`` and ``--ff`` (run-last-failure). - `5035 <https://github.com/pytest-dev/pytest/issues/5035>`_: The ``--cache-show`` option/action accepts an optional glob to show only matching cache entries. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: Standard input (stdin) can be given to pytester's ``Testdir.run()`` and ``Testdir.popen()``. - `5068 <https://github.com/pytest-dev/pytest/issues/5068>`_: The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. - `5108 <https://github.com/pytest-dev/pytest/issues/5108>`_: The short test summary is displayed after passes with output (``-rP``). - `5172 <https://github.com/pytest-dev/pytest/issues/5172>`_: The ``--last-failed`` (``--lf``) option got smarter and will now skip entire files if all tests of that test file have passed in previous runs, greatly speeding up collection. - `5177 <https://github.com/pytest-dev/pytest/issues/5177>`_: Introduce new specific warning ``PytestWarning`` subclasses to make it easier to filter warnings based on the class, rather than on the message. The new subclasses are: * ``PytestAssertRewriteWarning`` * ``PytestCacheWarning`` * ``PytestCollectionWarning`` * ``PytestConfigWarning`` * ``PytestUnhandledCoroutineWarning`` * ``PytestUnknownMarkWarning`` - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: New ``record_testsuite_property`` session-scoped fixture allows users to log ``<property>`` tags at the ``testsuite`` level with the ``junitxml`` plugin. The generated XML is compatible with the latest xunit standard, contrary to the properties recorded by ``record_property`` and ``record_xml_attribute``. - `5214 <https://github.com/pytest-dev/pytest/issues/5214>`_: The default logging format has been changed to improve readability. Here is an example of a previous logging message:: test_log_cli_enabled_disabled.py 3 CRITICAL critical message logged by test This has now become:: CRITICAL root:test_log_cli_enabled_disabled.py:3 critical message logged by test The formatting can be changed through the `log_format <https://docs.pytest.org/en/latest/reference.htmlconfval-log_format>`__ configuration option. - `5220 <https://github.com/pytest-dev/pytest/issues/5220>`_: ``--fixtures`` now also shows fixture scope for scopes other than ``"function"``. Bug Fixes --------- - `5113 <https://github.com/pytest-dev/pytest/issues/5113>`_: Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. - `5144 <https://github.com/pytest-dev/pytest/issues/5144>`_: With usage errors ``exitstatus`` is set to ``EXIT_USAGEERROR`` in the ``pytest_sessionfinish`` hook now as expected. - `5235 <https://github.com/pytest-dev/pytest/issues/5235>`_: ``outcome.exit`` is not used with ``EOF`` in the pdb wrapper anymore, but only with ``quit``. Improved Documentation ---------------------- - `4935 <https://github.com/pytest-dev/pytest/issues/4935>`_: Expand docs on registering marks and the effect of ``--strict``. Trivial/Internal Changes ------------------------ - `4942 <https://github.com/pytest-dev/pytest/issues/4942>`_: ``logging.raiseExceptions`` is not set to ``False`` anymore. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: pytest now depends on `wcwidth <https://pypi.org/project/wcwidth>`__ to properly track unicode character sizes for more precise terminal output. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: pytester's ``Testdir.popen()`` uses ``stdout`` and ``stderr`` via keyword arguments with defaults now (``subprocess.PIPE``). - `5069 <https://github.com/pytest-dev/pytest/issues/5069>`_: The code for the short test summary in the terminal was moved to the terminal plugin. - `5082 <https://github.com/pytest-dev/pytest/issues/5082>`_: Improved validation of kwargs for various methods in the pytester plugin. - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: ``record_property`` now emits a ``PytestWarning`` when used with ``junit_family=xunit2``: the fixture generates ``property`` tags as children of ``testcase``, which is not permitted according to the most `recent schema <https://github.com/jenkinsci/xunit-plugin/blob/master/ src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd>`__. - `5239 <https://github.com/pytest-dev/pytest/issues/5239>`_: Pin ``pluggy`` to ``< 1.0`` so we don't update to ``1.0`` automatically when it gets released: there are planned breaking changes, and we want to ensure pytest properly supports ``pluggy 1.0``. ``` ### 4.4.2 ``` ========================= Bug Fixes --------- - `5089 <https://github.com/pytest-dev/pytest/issues/5089>`_: Fix crash caused by error in ``__repr__`` function with both ``showlocals`` and verbose output enabled. - `5139 <https://github.com/pytest-dev/pytest/issues/5139>`_: Eliminate core dependency on 'terminal' plugin. - `5229 <https://github.com/pytest-dev/pytest/issues/5229>`_: Require ``pluggy>=0.11.0`` which reverts a dependency to ``importlib-metadata`` added in ``0.10.0``. The ``importlib-metadata`` package cannot be imported when installed as an egg and causes issues when relying on ``setup.py`` to install test dependencies. Improved Documentation ---------------------- - `5171 <https://github.com/pytest-dev/pytest/issues/5171>`_: Doc: ``pytest_ignore_collect``, ``pytest_collect_directory``, ``pytest_collect_file`` and ``pytest_pycollect_makemodule`` hooks's 'path' parameter documented type is now ``py.path.local`` - `5188 <https://github.com/pytest-dev/pytest/issues/5188>`_: Improve help for ``--runxfail`` flag. Trivial/Internal Changes ------------------------ - `5182 <https://github.com/pytest-dev/pytest/issues/5182>`_: Removed internal and unused ``_pytest.deprecated.MARK_INFO_ATTRIBUTE``. ``` ### 4.4.1 ``` ========================= Bug Fixes --------- - `5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture. - `5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0. - `5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``. - `5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used. ``` ### 4.4.0 ``` ========================= Features -------- - `2224 <https://github.com/pytest-dev/pytest/issues/2224>`_: ``async`` test functions are skipped and a warning is emitted when a suitable async plugin is not installed (such as ``pytest-asyncio`` or ``pytest-trio``). Previously ``async`` functions would not execute at all but still be marked as "passed". - `2482 <https://github.com/pytest-dev/pytest/issues/2482>`_: Include new ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option to disable ascii-escaping in parametrized values. This may cause a series of problems and as the name makes clear, use at your own risk. - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: The ``-p`` option can now be used to early-load plugins also by entry-point name, instead of just by module name. This makes it possible to early load external plugins like ``pytest-cov`` in the command-line:: pytest -p pytest_cov - `4855 <https://github.com/pytest-dev/pytest/issues/4855>`_: The ``--pdbcls`` option handles classes via module attributes now (e.g. ``pdb:pdb.Pdb`` with `pdb++`_), and its validation was improved. .. _pdb++: https://pypi.org/project/pdbpp/ - `4875 <https://github.com/pytest-dev/pytest/issues/4875>`_: The `testpaths <https://docs.pytest.org/en/latest/reference.htmlconfval-testpaths>`__ configuration option is now displayed next to the ``rootdir`` and ``inifile`` lines in the pytest header if the option is in effect, i.e., directories or file names were not explicitly passed in the command line. Also, ``inifile`` is only displayed if there's a configuration file, instead of an empty ``inifile:`` string. - `4911 <https://github.com/pytest-dev/pytest/issues/4911>`_: Doctests can be skipped now dynamically using ``pytest.skip()``. - `4920 <https://github.com/pytest-dev/pytest/issues/4920>`_: Internal refactorings have been made in order to make the implementation of the `pytest-subtests <https://github.com/pytest-dev/pytest-subtests>`__ plugin possible, which adds unittest sub-test support and a new ``subtests`` fixture as discussed in `1367 <https://github.com/pytest-dev/pytest/issues/1367>`__. For details on the internal refactorings, please see the details on the related PR. - `4931 <https://github.com/pytest-dev/pytest/issues/4931>`_: pytester's ``LineMatcher`` asserts that the passed lines are a sequence. - `4936 <https://github.com/pytest-dev/pytest/issues/4936>`_: Handle ``-p plug`` after ``-p no:plug``. This can be used to override a blocked plugin (e.g. in "addopts") from the command line etc. - `4951 <https://github.com/pytest-dev/pytest/issues/4951>`_: Output capturing is handled correctly when only capturing via fixtures (capsys, capfs) with ``pdb.set_trace()``. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: ``pytester`` sets ``$HOME`` and ``$USERPROFILE`` to the temporary directory during test runs. This ensures to not load configuration files from the real user's home directory. - `4980 <https://github.com/pytest-dev/pytest/issues/4980>`_: Namespace packages are handled better with ``monkeypatch.syspath_prepend`` and ``testdir.syspathinsert`` (via ``pkg_resources.fixup_namespace_packages``). - `4993 <https://github.com/pytest-dev/pytest/issues/4993>`_: The stepwise plugin reports status information now. - `5008 <https://github.com/pytest-dev/pytest/issues/5008>`_: If a ``setup.cfg`` file contains ``[tool:pytest]`` and also the no longer supported ``[pytest]`` section, pytest will use ``[tool:pytest]`` ignoring ``[pytest]``. Previously it would unconditionally error out. This makes it simpler for plugins to support old pytest versions. Bug Fixes --------- - `1895 <https://github.com/pytest-dev/pytest/issues/1895>`_: Fix bug where fixtures requested dynamically via ``request.getfixturevalue()`` might be teardown before the requesting fixture. - `4851 <https://github.com/pytest-dev/pytest/issues/4851>`_: pytester unsets ``PYTEST_ADDOPTS`` now to not use outer options with ``testdir.runpytest()``. - `4903 <https://github.com/pytest-dev/pytest/issues/4903>`_: Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. - `4928 <https://github.com/pytest-dev/pytest/issues/4928>`_: Fix line offsets with ``ScopeMismatch`` errors. - `4957 <https://github.com/pytest-dev/pytest/issues/4957>`_: ``-p no:plugin`` is handled correctly for default (internal) plugins now, e.g. with ``-p no:capture``. Previously they were loaded (imported) always, making e.g. the ``capfd`` fixture available. - `4968 <https://github.com/pytest-dev/pytest/issues/4968>`_: The pdb ``quit`` command is handled properly when used after the ``debug`` command with `pdb++`_. .. _pdb++: https://pypi.org/project/pdbpp/ - `4975 <https://github.com/pytest-dev/pytest/issues/4975>`_: Fix the interpretation of ``-qq`` option where it was being considered as ``-v`` instead. - `4978 <https://github.com/pytest-dev/pytest/issues/4978>`_: ``outcomes.Exit`` is not swallowed in ``assertrepr_compare`` anymore. - `4988 <https://github.com/pytest-dev/pytest/issues/4988>`_: Close logging's file handler explicitly when the session finishes. - `5003 <https://github.com/pytest-dev/pytest/issues/5003>`_: Fix line offset with mark collection error (off by one). Improved Documentation ---------------------- - `4974 <https://github.com/pytest-dev/pytest/issues/4974>`_: Update docs for ``pytest_cmdline_parse`` hook to note availability liminations Trivial/Internal Changes ------------------------ - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: ``pluggy>=0.9`` is now required. - `4815 <https://github.com/pytest-dev/pytest/issues/4815>`_: ``funcsigs>=1.0`` is now required for Python 2.7. - `4829 <https://github.com/pytest-dev/pytest/issues/4829>`_: Some left-over internal code related to ``yield`` tests has been removed. - `4890 <https://github.com/pytest-dev/pytest/issues/4890>`_: Remove internally unused ``anypython`` fixture from the pytester plugin. - `4912 <https://github.com/pytest-dev/pytest/issues/4912>`_: Remove deprecated Sphinx directive, ``add_description_unit()``, pin sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0. - `4913 <https://github.com/pytest-dev/pytest/issues/4913>`_: Fix pytest tests invocation with custom ``PYTHONPATH``. - `4965 <https://github.com/pytest-dev/pytest/issues/4965>`_: New ``pytest_report_to_serializable`` and ``pytest_report_from_serializable`` **experimental** hooks. These hooks will be used by ``pytest-xdist``, ``pytest-subtests``, and the replacement for resultlog to serialize and customize reports. They are experimental, meaning that their details might change or even be removed completely in future patch releases without warning. Feedback is welcome from plugin authors and users alike. - `4987 <https://github.com/pytest-dev/pytest/issues/4987>`_: ``Collector.repr_failure`` respects the ``--tb`` option, but only defaults to ``short`` now (with ``auto``). ``` ### 4.3.1 ``` ========================= Bug Fixes --------- - `4810 <https://github.com/pytest-dev/pytest/issues/4810>`_: Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed. - `4861 <https://github.com/pytest-dev/pytest/issues/4861>`_: Improve validation of contents written to captured output so it behaves the same as when capture is disabled. - `4898 <https://github.com/pytest-dev/pytest/issues/4898>`_: Fix ``AttributeError: FixtureRequest has no 'confg' attribute`` bug in ``testdir.copy_example``. Trivial/Internal Changes ------------------------ - `4768 <https://github.com/pytest-dev/pytest/issues/4768>`_: Avoid pkg_resources import at the top-level. ``` ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` ### 4.2.0 ``` ========================= Features -------- - `3094 <https://github.com/pytest-dev/pytest/issues/3094>`_: `Classic xunit-style <https://docs.pytest.org/en/latest/xunit_setup.html>`__ functions and methods now obey the scope of *autouse* fixtures. This fixes a number of surprising issues like ``setup_method`` being called before session-scoped autouse fixtures (see `517 <https://github.com/pytest-dev/pytest/issues/517>`__ for an example). - `4627 <https://github.com/pytest-dev/pytest/issues/4627>`_: Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer support those Python versions. - `4660 <https://github.com/pytest-dev/pytest/issues/4660>`_: The number of *selected* tests now are also displayed when the ``-k`` or ``-m`` flags are used. - `4688 <https://github.com/pytest-dev/pytest/issues/4688>`_: ``pytest_report_teststatus`` hook now can also receive a ``config`` parameter. - `4691 <https://github.com/pytest-dev/pytest/issues/4691>`_: ``pytest_terminal_summary`` hook now can also receive a ``config`` parameter. Bug Fixes --------- - `3547 <https://github.com/pytest-dev/pytest/issues/3547>`_: ``--junitxml`` can emit XML compatible with Jenkins xUnit. ``junit_family`` INI option accepts ``legacy|xunit1``, which produces old style output, and ``xunit2`` that conforms more strictly to https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd - `4280 <https://github.com/pytest-dev/pytest/issues/4280>`_: Improve quitting from pdb, especially with ``--trace``. Using ``q[quit]`` after ``pdb.set_trace()`` will quit pytest also. - `4402 <https://github.com/pytest-dev/pytest/issues/4402>`_: Warning summary now groups warnings by message instead of by test id. This makes the output more compact and better conveys the general idea of how much code is actually generating warnings, instead of how many tests call that code. - `4536 <https://github.com/pytest-dev/pytest/issues/4536>`_: ``monkeypatch.delattr`` handles class descriptors like ``staticmethod``/``classmethod``. - `4649 <https://github.com/pytest-dev/pytest/issues/4649>`_: Restore marks being considered keywords for keyword expressions. - `4653 <https://github.com/pytest-dev/pytest/issues/4653>`_: ``tmp_path`` fixture and other related ones provides resolved path (a.k.a real path) - `4667 <https://github.com/pytest-dev/pytest/issues/4667>`_: ``pytest_terminal_summary`` uses result from ``pytest_report_teststatus`` hook, rather than hardcoded strings. - `4669 <https://github.com/pytest-dev/pytest/issues/4669>`_: Correctly handle ``unittest.SkipTest`` exception containing non-ascii characters on Python 2. - `4680 <https://github.com/pytest-dev/pytest/issues/4680>`_: Ensure the ``tmpdir`` and the ``tmp_path`` fixtures are the same folder. - `4681 <https://github.com/pytest-dev/pytest/issues/4681>`_: Ensure ``tmp_path`` is always a real path. Trivial/Internal Changes ------------------------ - `4643 <https://github.com/pytest-dev/pytest/issues/4643>`_: Use ``a.item()`` instead of the deprecated ``np.asscalar(a)`` in ``pytest.approx``. ``np.asscalar`` has been `deprecated <https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rstnew-deprecations>`__ in ``numpy 1.16.``. - `4657 <https://github.com/pytest-dev/pytest/issues/4657>`_: Copy saferepr from pylib - `4668 <https://github.com/pytest-dev/pytest/issues/4668>`_: The verbose word for expected failures in the teststatus report changes from ``xfail`` to ``XFAIL`` to be consistent with other test outcomes. ``` ### 4.1.1 ``` ========================= Bug Fixes --------- - `2256 <https://github.com/pytest-dev/pytest/issues/2256>`_: Show full repr with ``assert a==b`` and ``-vv``. - `3456 <https://github.com/pytest-dev/pytest/issues/3456>`_: Extend Doctest-modules to ignore mock objects. - `4617 <https://github.com/pytest-dev/pytest/issues/4617>`_: Fixed ``pytest.warns`` bug when context manager is reused (e.g. multiple parametrization). - `4631 <https://github.com/pytest-dev/pytest/issues/4631>`_: Don't rewrite assertion when ``__getattr__`` is broken Improved Documentation ---------------------- - `3375 <https://github.com/pytest-dev/pytest/issues/3375>`_: Document that using ``setup.cfg`` may crash other tools or cause hard to track down problems because it uses a different parser than ``pytest.ini`` or ``tox.ini`` files. Trivial/Internal Changes ------------------------ - `4602 <https://github.com/pytest-dev/pytest/issues/4602>`_: Uninstall ``hypothesis`` in regen tox env. ``` ### 4.1.0 ``` ========================= Removals -------- - `2169 <https://github.com/pytest-dev/pytest/issues/2169>`_: ``pytest.mark.parametrize``: in previous versions, errors raised by id functions were suppressed and changed into warnings. Now the exceptions are propagated, along with a pytest message informing the node, parameter value and index where the exception occurred. - `3078 <https://github.com/pytest-dev/pytest/issues/3078>`_: Remove legacy internal warnings system: ``config.warn``, ``Node.warn``. The ``pytest_logwarning`` now issues a warning when implemented. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlconfig-warn-and-node-warn>`__ on information on how to update your code. - `3079 <https://github.com/pytest-dev/pytest/issues/3079>`_: Removed support for yield tests - they are fundamentally broken because they don't support fixtures properly since collection and test execution were separated. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlyield-tests>`__ on information on how to update your code. - `3082 <https://github.com/pytest-dev/pytest/issues/3082>`_: Removed support for applying marks directly to values in ``pytest.mark.parametrize``. Use ``pytest.param`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmarks-in-pytest-mark-parametrize>`__ on information on how to update your code. - `3083 <https://github.com/pytest-dev/pytest/issues/3083>`_: Removed ``Metafunc.addcall``. This was the predecessor mechanism to ``pytest.mark.parametrize``. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmetafunc-addcall>`__ on information on how to update your code. - `3085 <https://github.com/pytest-dev/pytest/issues/3085>`_: Removed support for passing strings to ``pytest.main``. Now, always pass a list of strings instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpassing-command-line-string-to-pytest-main>`__ on information on how to update your code. - `3086 <https://github.com/pytest-dev/pytest/issues/3086>`_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. - `3616 <https://github.com/pytest-dev/pytest/issues/3616>`_: Removed the deprecated compat properties for ``node.Class/Function/Module`` - use ``pytest.Class/Function/Module`` now. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlinternal-classes-accessed-through-node>`__ on information on how to update your code. - `4421 <https://github.com/pytest-dev/pytest/issues/4421>`_: Removed the implementation of the ``pytest_namespace`` hook. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-namespace>`__ on information on how to update your code. - `4489 <https://github.com/pytest-dev/pytest/issues/4489>`_: Removed ``request.cached_setup``. This was the predecessor mechanism to modern fixtures. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcached-setup>`__ on information on how to update your code. - `4535 <https://github.com/pytest-dev/pytest/issues/4535>`_: Removed the deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago. - `4543 <https://github.com/pytest-dev/pytest/issues/4543>`_: Removed support to define fixtures using the ``pytest_funcarg__`` prefix. Use the ``pytest.fixture`` decorator instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-funcarg-prefix>`__ on information on how to update your code. - `4545 <https://github.com/pytest-dev/pytest/issues/4545>`_: Calling fixtures directly is now always an error instead of a warning. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcalling-fixtures-directly>`__ on information on how to update your code. - `4546 <https://github.com/pytest-dev/pytest/issues/4546>`_: Remove ``Node.get_marker(name)`` the return value was not usable for more than a existence check. Use ``Node.get_closest_marker(name)`` as a replacement. - `4547 <https://github.com/pytest-dev/pytest/issues/4547>`_: The deprecated ``record_xml_property`` fixture has been removed, use the more generic ``record_property`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlrecord-xml-property>`__ for more information. - `4548 <https://github.com/pytest-dev/pytest/issues/4548>`_: An error is now raised if the ``pytest_plugins`` variable is defined in a non-top-level ``conftest.py`` file (i.e., not residing in the ``rootdir``). See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-plugins-in-non-top-level-conftest-files>`__ for more information. - `891 <https://github.com/pytest-dev/pytest/issues/891>`_: Remove ``testfunction.markername`` attributes - use ``Node.iter_markers(name=None)`` to iterate them. Deprecations ------------ - `3050 <https://github.com/pytest-dev/pytest/issues/3050>`_: Deprecated the ``pytest.config`` global. See https://docs.pytest.org/en/latest/deprecations.htmlpytest-config-global for rationale. - `3974 <https://github.com/pytest-dev/pytest/issues/3974>`_: Passing the ``message`` parameter of ``pytest.raises`` now issues a ``DeprecationWarning``. It is a common mistake to think this parameter will match the exception message, while in fact it only serves to provide a custom message in case the ``pytest.raises`` check fails. To avoid this mistake and because it is believed to be little used, pytest is deprecating it without providing an alternative for the moment. If you have concerns about this, please comment on `issue 3974 <https://github.com/pytest-dev/pytest/issues/3974>`__. - `4435 <https://github.com/pytest-dev/pytest/issues/4435>`_: Deprecated ``raises(..., 'code(as_a_string)')`` and ``warns(..., 'code(as_a_string)')``. See https://docs.pytest.org/en/latest/deprecations.htmlraises-warns-exec for rationale and examples. Features -------- - `3191 <https://github.com/pytest-dev/pytest/issues/3191>`_: A warning is now issued when assertions are made for ``None``. This is a common source of confusion among new users, which write: .. code-block:: python assert mocked_object.assert_called_with(3, 4, 5, key="value") When they should write: .. code-block:: python mocked_object.assert_called_with(3, 4, 5, key="value") Because the ``assert_called_with`` method of mock objects already executes an assertion. This warning will not be issued when ``None`` is explicitly checked. An assertion like: .. code-block:: python assert variable is None will not issue the warning. - `3632 <https://github.com/pytest-dev/pytest/issues/3632>`_: Richer equality comparison introspection on ``AssertionError`` for objects created using `attrs <http://www.attrs.org/en/stable/>`__ or `dataclasses <https://docs.python.org/3/library/dataclasses.html>`_ (Python 3.7+, `backported to 3.6 <https://pypi.org/project/dataclasses>`__). - `4278 <https://github.com/pytest-dev/pytest/issues/4278>`_: ``CACHEDIR.TAG`` files are now created inside cache directories. Those files are part of the `Cache Directory Tagging Standard <http://www.bford.info/cachedir/spec.html>`__, and can be used by backup or synchronization programs to identify pytest's cache directory as such. - `4292 <https://github.com/pytest-dev/pytest/issues/4292>`_: ``pytest.outcomes.Exit`` is derived from ``SystemExit`` instead of ``KeyboardInterrupt``. This allows us to better handle ``pdb`` exiting. - `4371 <https://github.com/pytest-dev/pytest/issues/4371>`_: Updated the ``--collect-only`` option to display test descriptions when ran using ``--verbose``. - `4386 <https://github.com/pytest-dev/pytest/issues/4386>`_: Restructured ``ExceptionInfo`` object construction and ensure incomplete instances have a ``repr``/``str``. - `4416 <https://github.com/pytest-dev/pytest/issues/4416>`_: pdb: added support for keyword arguments with ``pdb.set_trace``. It handles ``header`` similar to Python 3.7 does it, and forwards any other keyword arguments to the ``Pdb`` constructor. This allows for ``__import__("pdb").set_trace(skip=["foo.*"])``. - `4483 <https://github.com/pytest-dev/pytest/issues/4483>`_: Added ini parameter ``junit_duration_report`` to optionally report test call durations, excluding setup and teardown times. The JUnit XML specification and the default pytest behavior is to include setup and teardown times in the test duration report. You can include just the call durations instead (excluding setup and teardown) by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] junit_duration_report = call - `4532 <https://github.com/pytest-dev/pytest/issues/4532>`_: ``-ra`` now will show errors and failures last, instead of as the first items in the summary. This makes it easier to obtain a list of errors and failures to run tests selectively. - `4599 <https://github.com/pytest-dev/pytest/issues/4599>`_: ``pytest.importorskip`` now supports a ``reason`` parameter, which will be shown when the requested module cannot be imported. Bug Fixes --------- - `3532 <https://github.com/pytest-dev/pytest/issues/3532>`_: ``-p`` now accepts its argument without a space between the value, for example ``-pmyplugin``. - `4327 <https://github.com/pytest-dev/pytest/issues/4327>`_: ``approx`` again works with more generic containers, more precisely instances of ``Iterable`` and ``Sized`` instead of more restrictive ``Sequence``. - `4397 <https://github.com/pytest-dev/pytest/issues/4397>`_: Ensure that node ids are printable. - `4435 <https://github.com/pytest-dev/pytest/issues/4435>`_: Fixed ``raises(..., 'code(string)')`` frame filename. - `4458 <https://github.com/pytest-dev/pytest/issues/4458>`_: Display actual test ids in ``--collect-only``. Improved Documentation ---------------------- - `4557 <https://github.com/pytest-dev/pytest/issues/4557>`_: Markers example documentation page updated to support latest pytest version. - `4558 <https://github.com/pytest-dev/pytest/issues/4558>`_: Update cache documentation example to correctly show cache hit and miss. - `4580 <https://github.com/pytest-dev/pytest/issues/4580>`_: Improved detailed summary report documentation. Trivial/Internal Changes ------------------------ - `4447 <https://github.com/pytest-dev/pytest/issues/4447>`_: Changed the deprecation type of ``--result-log`` to ``PytestDeprecationWarning``. It was decided to remove this feature at the next major revision. ``` ### 4.0.2 ``` ========================= Bug Fixes --------- - `4265 <https://github.com/pytest-dev/pytest/issues/4265>`_: Validate arguments from the ``PYTEST_ADDOPTS`` environment variable and the ``addopts`` ini option separately. - `4435 <https://github.com/pytest-dev/pytest/issues/4435>`_: Fix ``raises(..., 'code(string)')`` frame filename. - `4500 <https://github.com/pytest-dev/pytest/issues/4500>`_: When a fixture yields and a log call is made after the test runs, and, if the test is interrupted, capture attributes are ``None``. - `4538 <https://github.com/pytest-dev/pytest/issues/4538>`_: Raise ``TypeError`` for ``with raises(..., match=<non-None falsey value>)``. Improved Documentation ---------------------- - `1495 <https://github.com/pytest-dev/pytest/issues/1495>`_: Document common doctest fixture directory tree structure pitfalls ``` ### 4.0.1 ``` ========================= Bug Fixes --------- - `3952 <https://github.com/pytest-dev/pytest/issues/3952>`_: Display warnings before "short test summary info" again, but still later warnings in the end. - `4386 <https://github.com/pytest-dev/pytest/issues/4386>`_: Handle uninitialized exceptioninfo in repr/str. - `4393 <https://github.com/pytest-dev/pytest/issues/4393>`_: Do not create ``.gitignore``/``README.md`` files in existing cache directories. - `4400 <https://github.com/pytest-dev/pytest/issues/4400>`_: Rearrange warning handling for the yield test errors so the opt-out in 4.0.x correctly works. - `4405 <https://github.com/pytest-dev/pytest/issues/4405>`_: Fix collection of testpaths with ``--pyargs``. - `4412 <https://github.com/pytest-dev/pytest/issues/4412>`_: Fix assertion rewriting involving ``Starred`` + side-effects. - `4425 <https://github.com/pytest-dev/pytest/issues/4425>`_: Ensure we resolve the absolute path when the given ``--basetemp`` is a relative path. Trivial/Internal Changes ------------------------ - `4315 <https://github.com/pytest-dev/pytest/issues/4315>`_: Use ``pkg_resources.parse_version`` instead of ``LooseVersion`` in minversion check. - `4440 <https://github.com/pytest-dev/pytest/issues/4440>`_: Adjust the stack level of some internal pytest warnings. ``` ### 4.0.0 ``` ========================= Removals -------- - `3737 <https://github.com/pytest-dev/pytest/issues/3737>`_: **RemovedInPytest4Warnings are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``RemovedInPytest4Warnings`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 4.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``4.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.RemovedInPytest4Warning But this will stop working when pytest ``4.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `4348 <https://github.com/pytest-dev/pytest/issues/4348>`__. - `4358 <https://g…
…s on appveyor.
…s on appveyor.
1: Initial Update r=aragilar a=pyup-bot This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch. Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR. ### Update [mock](https://pypi.org/project/mock) from **3.0.5** to **3.0.5**. <details> <summary>Changelog</summary> ### 3.0.5 ``` ----- - Issue 31855: :func:`unittest.mock.mock_open` results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. ``` ### 3.0.4 ``` ----- - Include the license, readme and changelog in the source distribution. ``` ### 3.0.3 ``` ----- - Fixed patching of dictionaries, when specifying the target with a unicode on Python 2. ``` ### 3.0.2 ``` ----- - Add missing ``funcsigs`` dependency on Python 2. ``` ### 3.0.1 ``` ----- - Fix packaging issue where ``six`` was missed as a dependency. ``` ### 3.0.0 ``` ----- - Issue 35226: Recursively check arguments when testing for equality of :class:`unittest.mock.call` objects and add note that tracking of parameters used to create ancestors of mocks in ``mock_calls`` is not possible. - Issue 31177: Fix bug that prevented using :meth:`reset_mock <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes - Issue 26704: Added test demonstrating double-patching of an instance method. Patch by Anthony Sottile. - Issue 35500: Write expected and actual call parameters on separate lines in :meth:`unittest.mock.Mock.assert_called_with` assertion errors. Contributed by Susan Su. - Issue 35330: When a :class:`Mock` instance was used to wrap an object, if `side_effect` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. - Issue 30541: Add new function to seal a mock and prevent the automatically creation of child mocks. Patch by Mario Corchero. - Issue 35022: :class:`unittest.mock.MagicMock` now supports the ``__fspath__`` method (from :class:`os.PathLike`). - Issue 33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` magic method. - Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. - Issue 36366: Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` object will now return `None` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch byKarthikeyan Singaravelan. - Issue 35357: Internal attributes' names of unittest.mock._Call and unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with _mock_ in order to prevent clashes with widely used object attributes. Fixed minor typo in test function name. - Issue 20239: Allow repeated assignment deletion of :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. - Issue 35082: Don't return deleted attributes when calling dir on a :class:`unittest.mock.Mock`. - Issue 0: Improved an error message when mock assert_has_calls fails. - Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod` to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. - Issue 21478: Calls to a child function created with :func:`unittest.mock.create_autospec` should propagate to the parent. Patch by Karthikeyan Singaravelan. - Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over the file contents. Patch by Tony Flury. - Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects. Contributed by Kumar Akshay. - Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get signature. Patch by Karthikeyan Singaravelan. - Issue 35047: ``unittest.mock`` now includes mock calls in exception messages if ``assert_not_called``, ``assert_called_once``, or ``assert_called_once_with`` fails. Patch by Petter Strandmark. - Issue 28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once. - Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY. - Issue 20804: The unittest.mock.sentinel attributes now preserve their identity when they are copied or pickled. - Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter anymore. Patch written by Jiajun Huang. - Issue 26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. - Issue 21271: New keyword only parameters in reset_mock call. - Issue 26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. - Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer. ``` ### 2.0.0 ``` ----------------- - Issue 26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha. - Issue 22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully. - Issue 24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur. - Issue 23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill. - Issue 21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3. - Issue 18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst. - Issue 23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi - Issue 23310: Fix MagicMock's initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim. - Issue 23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl. - Issue 23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. - Issue 23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in issue 21408 they are redundant. *** NOT BACKPORTED *** - Issue 21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes. - Issue 21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests. - Issue 21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called. - Issue 21238: New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of an attribute startswith assert or assret. - Issue 21239: patch.stopall() didn't work deterministically when the same name was patched more than once. - Issue 21222: Passing name keyword argument to mock.create_autospec now works. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter. - Issue 20189: unittest.mock now no longer assumes that any object for which it could get an inspect.Signature is a callable written in Python. Fix courtesy of Michael Foord. - Issue 17467: add readline and readlines support to mock_open in unittest.mock. - Issue 17015: When it has a spec, a Mock object now inspects its signature when matching calls, so that arguments can be matched positionally or by name. - Issue 15323: improve failure message of Mock.assert_called_once_with - Issue 14857: fix regression in references to PEP 3135 implicit __class__ closure variable (Reopens issue 12370) - Issue 14295: Add unittest.mock ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/mock - Changelog: https://pyup.io/changelogs/mock/ - Docs: http://mock.readthedocs.org/en/latest/ </details> ### Update [sphinx_rtd_theme](https://pypi.org/project/sphinx_rtd_theme) from **0.4.3** to **0.4.3**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/sphinx-rtd-theme - Repo: https://github.com/rtfd/sphinx_rtd_theme/ </details> ### Update [pytest](https://pypi.org/project/pytest) from **5.2.1** to **5.2.1**. <details> <summary>Changelog</summary> ### 5.2.1 ``` ========================= Bug Fixes --------- - `5902 <https://github.com/pytest-dev/pytest/issues/5902>`_: Fix warnings about deprecated ``cmp`` attribute in ``attrs>=19.2``. ``` ### 5.2.0 ``` ========================= Deprecations ------------ - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: Passing arguments to pytest.fixture() as positional arguments is deprecated - pass them as a keyword argument instead. Features -------- - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: The ``scope`` parameter of ``pytest.fixture`` can now be a callable that receives the fixture name and the ``config`` object as keyword-only parameters. See `the docs <https://docs.pytest.org/en/latest/fixture.htmldynamic-scope>`__ for more information. - `5764 <https://github.com/pytest-dev/pytest/issues/5764>`_: New behavior of the ``--pastebin`` option: failures to connect to the pastebin server are reported, without failing the pytest run Bug Fixes --------- - `5806 <https://github.com/pytest-dev/pytest/issues/5806>`_: Fix "lexer" being used when uploading to bpaste.net from ``--pastebin`` to "text". - `5884 <https://github.com/pytest-dev/pytest/issues/5884>`_: Fix ``--setup-only`` and ``--setup-show`` for custom pytest items. Trivial/Internal Changes ------------------------ - `5056 <https://github.com/pytest-dev/pytest/issues/5056>`_: The HelpFormatter uses ``py.io.get_terminal_width`` for better width detection. ``` ### 5.1.3 ``` ========================= Bug Fixes --------- - `5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. - `5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. - `5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase characters (introduced by 5792). ``` ### 5.1.2 ``` ========================= Bug Fixes --------- - `2270 <https://github.com/pytest-dev/pytest/issues/2270>`_: Fixed ``self`` reference in function-scoped fixtures defined plugin classes: previously ``self`` would be a reference to a *test* class, not the *plugin* class. - `570 <https://github.com/pytest-dev/pytest/issues/570>`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization. - `5782 <https://github.com/pytest-dev/pytest/issues/5782>`_: Fix decoding error when printing an error response from ``--pastebin``. - `5786 <https://github.com/pytest-dev/pytest/issues/5786>`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like ``pytest-xdist`` to display them properly. - `5792 <https://github.com/pytest-dev/pytest/issues/5792>`_: Windows: Fix error that occurs in certain circumstances when loading ``conftest.py`` from a working directory that has casing other than the one stored in the filesystem (e.g., ``c:\test`` instead of ``C:\test``). ``` ### 5.1.1 ``` ========================= Bug Fixes --------- - `5751 <https://github.com/pytest-dev/pytest/issues/5751>`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1. ``` ### 5.1.0 ``` ========================= Removals -------- - `5180 <https://github.com/pytest-dev/pytest/issues/5180>`_: As per our policy, the following features have been deprecated in the 4.X series and are now removed: * ``Request.getfuncargvalue``: use ``Request.getfixturevalue`` instead. * ``pytest.raises`` and ``pytest.warns`` no longer support strings as the second argument. * ``message`` parameter of ``pytest.raises``. * ``pytest.raises``, ``pytest.warns`` and ``ParameterSet.param`` now use native keyword-only syntax. This might change the exception message from previous versions, but they still raise ``TypeError`` on unknown keyword arguments as before. * ``pytest.config`` global variable. * ``tmpdir_factory.ensuretemp`` method. * ``pytest_logwarning`` hook. * ``RemovedInPytest4Warning`` warning type. * ``request`` is now a reserved name for fixtures. For more information consult `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ in the docs. - `5565 <https://github.com/pytest-dev/pytest/issues/5565>`_: Removed unused support code for `unittest2 <https://pypi.org/project/unittest2/>`__. The ``unittest2`` backport module is no longer necessary since Python 3.3+, and the small amount of code in pytest to support it also doesn't seem to be used: after removed, all tests still pass unchanged. Although our policy is to introduce a deprecation period before removing any features or support for third party libraries, because this code is apparently not used at all (even if ``unittest2`` is used by a test suite executed by pytest), it was decided to remove it in this release. If you experience a regression because of this, please `file an issue <https://github.com/pytest-dev/pytest/issues/new>`__. - `5615 <https://github.com/pytest-dev/pytest/issues/5615>`_: ``pytest.fail``, ``pytest.xfail`` and ``pytest.skip`` no longer support bytes for the message argument. This was supported for Python 2 where it was tempting to use ``"message"`` instead of ``u"message"``. Python 3 code is unlikely to pass ``bytes`` to these functions. If you do, please decode it to an ``str`` beforehand. Features -------- - `5564 <https://github.com/pytest-dev/pytest/issues/5564>`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``. - `5576 <https://github.com/pytest-dev/pytest/issues/5576>`_: New `NUMBER <https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options>`__ option for doctests to ignore irrelevant differences in floating-point numbers. Inspired by Sébastien Boisgérault's `numtest <https://github.com/boisgera/numtest>`__ extension for doctest. Improvements ------------ - `5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now includes a timestamp and hostname in the testsuite tag. - `5707 <https://github.com/pytest-dev/pytest/issues/5707>`_: Time taken to run the test suite now includes a human-readable representation when it takes over 60 seconds, for example:: ===== 2 failed in 102.70s (0:01:42) ===== Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5115 <https://github.com/pytest-dev/pytest/issues/5115>`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest. - `5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root element. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5537 <https://github.com/pytest-dev/pytest/issues/5537>`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the standard library on Python 3.8+. - `5578 <https://github.com/pytest-dev/pytest/issues/5578>`_: Improve type checking for some exception-raising functions (``pytest.xfail``, ``pytest.skip``, etc) so they provide better error messages when users meant to use marks (for example ``pytest.xfail`` instead of ``pytest.mark.xfail``). - `5606 <https://github.com/pytest-dev/pytest/issues/5606>`_: Fixed internal error when test functions were patched with objects that cannot be compared for truth values against others, like ``numpy`` arrays. - `5634 <https://github.com/pytest-dev/pytest/issues/5634>`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases. This makes ``unittest`` cases handle ``quit`` from pytest's pdb correctly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. - `5701 <https://github.com/pytest-dev/pytest/issues/5701>`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``. - `5734 <https://github.com/pytest-dev/pytest/issues/5734>`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions. Improved Documentation ---------------------- - `5669 <https://github.com/pytest-dev/pytest/issues/5669>`_: Add docstring for ``Testdir.copy_example``. Trivial/Internal Changes ------------------------ - `5095 <https://github.com/pytest-dev/pytest/issues/5095>`_: XML files of the ``xunit2`` family are now validated against the schema by pytest's own test suite to avoid future regressions. - `5516 <https://github.com/pytest-dev/pytest/issues/5516>`_: Cache node splitting function which can improve collection performance in very large test suites. - `5603 <https://github.com/pytest-dev/pytest/issues/5603>`_: Simplified internal ``SafeRepr`` class and removed some dead code. - `5664 <https://github.com/pytest-dev/pytest/issues/5664>`_: When invoking pytest's own testsuite with ``PYTHONDONTWRITEBYTECODE=1``, the ``test_xfail_handling`` test no longer fails. - `5684 <https://github.com/pytest-dev/pytest/issues/5684>`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.). ``` ### 5.0.1 ``` ========================= Bug Fixes --------- - `5479 <https://github.com/pytest-dev/pytest/issues/5479>`_: Improve quoting in ``raises`` match failure message. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. Improved Documentation ---------------------- - `5517 <https://github.com/pytest-dev/pytest/issues/5517>`_: Improve "Declaring new hooks" section in chapter "Writing Plugins" ``` ### 5.0.0 ``` ========================= Important --------- This release is a Python3.5+ only release. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Removals -------- - `1149 <https://github.com/pytest-dev/pytest/issues/1149>`_: Pytest no longer accepts prefixes of command-line arguments, for example typing ``pytest --doctest-mod`` inplace of ``--doctest-modules``. This was previously allowed where the ``ArgumentParser`` thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues `1149 <https://github.com/pytest-dev/pytest/issues/1149>`__, `3413 <https://github.com/pytest-dev/pytest/issues/3413>`__, and `4009 <https://github.com/pytest-dev/pytest/issues/4009>`__. - `5402 <https://github.com/pytest-dev/pytest/issues/5402>`_: **PytestDeprecationWarning are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestDeprecationWarning`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 5.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``5.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning But this will stop working when pytest ``5.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `5402 <https://github.com/pytest-dev/pytest/issues/5402>`__. - `5412 <https://github.com/pytest-dev/pytest/issues/5412>`_: ``ExceptionInfo`` objects (returned by ``pytest.raises``) now have the same ``str`` representation as ``repr``, which avoids some confusion when users use ``print(e)`` to inspect the object. This means code like: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e) Needs to be changed to: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value) Deprecations ------------ - `4488 <https://github.com/pytest-dev/pytest/issues/4488>`_: The removal of the ``--result-log`` option and module has been postponed to (tentatively) pytest 6.0 as the team has not yet got around to implement a good alternative for it. - `466 <https://github.com/pytest-dev/pytest/issues/466>`_: The ``funcargnames`` attribute has been an alias for ``fixturenames`` since pytest 2.3, and is now deprecated in code too. Features -------- - `3457 <https://github.com/pytest-dev/pytest/issues/3457>`_: New `pytest_assertion_pass <https://docs.pytest.org/en/latest/reference.html_pytest.hookspec.pytest_assertion_pass>`__ hook, called with context information when an assertion *passes*. This hook is still **experimental** so use it with caution. - `5440 <https://github.com/pytest-dev/pytest/issues/5440>`_: The `faulthandler <https://docs.python.org/3/library/faulthandler.html>`__ standard library module is now enabled by default to help users diagnose crashes in C modules. This functionality was provided by integrating the external `pytest-faulthandler <https://github.com/pytest-dev/pytest-faulthandler>`__ plugin into the core, so users should remove that plugin from their requirements if used. For more information see the docs: https://docs.pytest.org/en/latest/usage.htmlfault-handler - `5452 <https://github.com/pytest-dev/pytest/issues/5452>`_: When warnings are configured as errors, pytest warnings now appear as originating from ``pytest.`` instead of the internal ``_pytest.warning_types.`` module. - `5125 <https://github.com/pytest-dev/pytest/issues/5125>`_: ``Session.exitcode`` values are now coded in ``pytest.ExitCode``, an ``IntEnum``. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution. The team doesn't expect this change to break test suites or plugins in general, except in esoteric/specific scenarios. **pytest-xdist** users should upgrade to ``1.29.0`` or later, as ``pytest-xdist`` required a compatibility fix because of this change. Bug Fixes --------- - `1403 <https://github.com/pytest-dev/pytest/issues/1403>`_: Switch from ``imp`` to ``importlib``. - `1671 <https://github.com/pytest-dev/pytest/issues/1671>`_: The name of the ``.pyc`` files cached by the assertion writer now includes the pytest version to avoid stale caches. - `2761 <https://github.com/pytest-dev/pytest/issues/2761>`_: Honor PEP 235 on case-insensitive file systems. - `5078 <https://github.com/pytest-dev/pytest/issues/5078>`_: Test module is no longer double-imported when using ``--pyargs``. - `5260 <https://github.com/pytest-dev/pytest/issues/5260>`_: Improved comparison of byte strings. When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff It now shows the actual ascii representation instead, which is often more useful:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff - `5335 <https://github.com/pytest-dev/pytest/issues/5335>`_: Colorize level names when the level in the logging format is formatted using '%(levelname).Xs' (truncated fixed width alignment), where X is an integer. - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5432 <https://github.com/pytest-dev/pytest/issues/5432>`_: Prevent "already imported" warnings from assertion rewriter when invoking pytest in-process multiple times. - `5433 <https://github.com/pytest-dev/pytest/issues/5433>`_: Fix assertion rewriting in packages (``__init__.py``). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. Improved Documentation ---------------------- - `5315 <https://github.com/pytest-dev/pytest/issues/5315>`_: Expand docs on mocking classes and dictionaries with ``monkeypatch``. - `5416 <https://github.com/pytest-dev/pytest/issues/5416>`_: Fix PytestUnknownMarkWarning in run/skip example. ``` ### 4.6.5 ``` ========================= Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5478 <https://github.com/pytest-dev/pytest/issues/5478>`_: Fix encode error when using unicode strings in exceptions with ``pytest.raises``. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. ``` ### 4.6.4 ``` ========================= Bug Fixes --------- - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. ``` ### 4.6.3 ``` ========================= Bug Fixes --------- - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. ``` ### 4.6.2 ``` ========================= Bug Fixes --------- - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. ``` ### 4.6.1 ``` ========================= Bug Fixes --------- - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5358 <https://github.com/pytest-dev/pytest/issues/5358>`_: Fix assertion rewriting of ``all()`` calls to deal with non-generators. ``` ### 4.6.0 ``` ========================= Important --------- The ``4.6.X`` series will be the last series to support **Python 2 and Python 3.4**. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Features -------- - `4559 <https://github.com/pytest-dev/pytest/issues/4559>`_: Added the ``junit_log_passing_tests`` ini value which can be used to enable or disable logging of passing test output in the Junit XML file. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: pytester's ``testdir.spawn`` uses ``tmpdir`` as HOME/USERPROFILE directory. - `5062 <https://github.com/pytest-dev/pytest/issues/5062>`_: Unroll calls to ``all`` to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions. - `5063 <https://github.com/pytest-dev/pytest/issues/5063>`_: Switch from ``pkg_resources`` to ``importlib-metadata`` for entrypoint detection for improved performance and import time. - `5091 <https://github.com/pytest-dev/pytest/issues/5091>`_: The output for ini options in ``--help`` has been improved. - `5269 <https://github.com/pytest-dev/pytest/issues/5269>`_: ``pytest.importorskip`` includes the ``ImportError`` now in the default ``reason``. - `5311 <https://github.com/pytest-dev/pytest/issues/5311>`_: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter. - `5312 <https://github.com/pytest-dev/pytest/issues/5312>`_: Improved formatting of multiline log messages in Python 3. Bug Fixes --------- - `2064 <https://github.com/pytest-dev/pytest/issues/2064>`_: The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now. - `4908 <https://github.com/pytest-dev/pytest/issues/4908>`_: The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``). - `5036 <https://github.com/pytest-dev/pytest/issues/5036>`_: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized. - `5256 <https://github.com/pytest-dev/pytest/issues/5256>`_: Handle internal error due to a lone surrogate unicode character not being representable in Jython. - `5257 <https://github.com/pytest-dev/pytest/issues/5257>`_: Ensure that ``sys.stdout.mode`` does not include ``'b'`` as it is a text stream. - `5278 <https://github.com/pytest-dev/pytest/issues/5278>`_: Pytest's internal python plugin can be disabled using ``-p no:python`` again. - `5286 <https://github.com/pytest-dev/pytest/issues/5286>`_: Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option not working when using a list of test IDs in parametrized tests. - `5330 <https://github.com/pytest-dev/pytest/issues/5330>`_: Show the test module being collected when emitting ``PytestCollectionWarning`` messages for test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem. - `5333 <https://github.com/pytest-dev/pytest/issues/5333>`_: Fix regression in 4.5.0 with ``--lf`` not re-running all tests with known failures from non-selected tests. Improved Documentation ---------------------- - `5250 <https://github.com/pytest-dev/pytest/issues/5250>`_: Expand docs on use of ``setenv`` and ``delenv`` with ``monkeypatch``. ``` ### 4.5.0 ``` ========================= Features -------- - `4826 <https://github.com/pytest-dev/pytest/issues/4826>`_: A warning is now emitted when unknown marks are used as a decorator. This is often due to a typo, which can lead to silently broken tests. - `4907 <https://github.com/pytest-dev/pytest/issues/4907>`_: Show XFail reason as part of JUnitXML message field. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: Messages from crash reports are displayed within test summaries now, truncated to the terminal width. - `5023 <https://github.com/pytest-dev/pytest/issues/5023>`_: New flag ``--strict-markers`` that triggers an error when unknown markers (e.g. those not registered using the `markers option`_ in the configuration file) are used in the test suite. The existing ``--strict`` option has the same behavior currently, but can be augmented in the future for additional checks. .. _`markers option`: https://docs.pytest.org/en/latest/reference.htmlconfval-markers - `5026 <https://github.com/pytest-dev/pytest/issues/5026>`_: Assertion failure messages for sequences and dicts contain the number of different items now. - `5034 <https://github.com/pytest-dev/pytest/issues/5034>`_: Improve reporting with ``--lf`` and ``--ff`` (run-last-failure). - `5035 <https://github.com/pytest-dev/pytest/issues/5035>`_: The ``--cache-show`` option/action accepts an optional glob to show only matching cache entries. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: Standard input (stdin) can be given to pytester's ``Testdir.run()`` and ``Testdir.popen()``. - `5068 <https://github.com/pytest-dev/pytest/issues/5068>`_: The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. - `5108 <https://github.com/pytest-dev/pytest/issues/5108>`_: The short test summary is displayed after passes with output (``-rP``). - `5172 <https://github.com/pytest-dev/pytest/issues/5172>`_: The ``--last-failed`` (``--lf``) option got smarter and will now skip entire files if all tests of that test file have passed in previous runs, greatly speeding up collection. - `5177 <https://github.com/pytest-dev/pytest/issues/5177>`_: Introduce new specific warning ``PytestWarning`` subclasses to make it easier to filter warnings based on the class, rather than on the message. The new subclasses are: * ``PytestAssertRewriteWarning`` * ``PytestCacheWarning`` * ``PytestCollectionWarning`` * ``PytestConfigWarning`` * ``PytestUnhandledCoroutineWarning`` * ``PytestUnknownMarkWarning`` - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: New ``record_testsuite_property`` session-scoped fixture allows users to log ``<property>`` tags at the ``testsuite`` level with the ``junitxml`` plugin. The generated XML is compatible with the latest xunit standard, contrary to the properties recorded by ``record_property`` and ``record_xml_attribute``. - `5214 <https://github.com/pytest-dev/pytest/issues/5214>`_: The default logging format has been changed to improve readability. Here is an example of a previous logging message:: test_log_cli_enabled_disabled.py 3 CRITICAL critical message logged by test This has now become:: CRITICAL root:test_log_cli_enabled_disabled.py:3 critical message logged by test The formatting can be changed through the `log_format <https://docs.pytest.org/en/latest/reference.htmlconfval-log_format>`__ configuration option. - `5220 <https://github.com/pytest-dev/pytest/issues/5220>`_: ``--fixtures`` now also shows fixture scope for scopes other than ``"function"``. Bug Fixes --------- - `5113 <https://github.com/pytest-dev/pytest/issues/5113>`_: Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. - `5144 <https://github.com/pytest-dev/pytest/issues/5144>`_: With usage errors ``exitstatus`` is set to ``EXIT_USAGEERROR`` in the ``pytest_sessionfinish`` hook now as expected. - `5235 <https://github.com/pytest-dev/pytest/issues/5235>`_: ``outcome.exit`` is not used with ``EOF`` in the pdb wrapper anymore, but only with ``quit``. Improved Documentation ---------------------- - `4935 <https://github.com/pytest-dev/pytest/issues/4935>`_: Expand docs on registering marks and the effect of ``--strict``. Trivial/Internal Changes ------------------------ - `4942 <https://github.com/pytest-dev/pytest/issues/4942>`_: ``logging.raiseExceptions`` is not set to ``False`` anymore. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: pytest now depends on `wcwidth <https://pypi.org/project/wcwidth>`__ to properly track unicode character sizes for more precise terminal output. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: pytester's ``Testdir.popen()`` uses ``stdout`` and ``stderr`` via keyword arguments with defaults now (``subprocess.PIPE``). - `5069 <https://github.com/pytest-dev/pytest/issues/5069>`_: The code for the short test summary in the terminal was moved to the terminal plugin. - `5082 <https://github.com/pytest-dev/pytest/issues/5082>`_: Improved validation of kwargs for various methods in the pytester plugin. - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: ``record_property`` now emits a ``PytestWarning`` when used with ``junit_family=xunit2``: the fixture generates ``property`` tags as children of ``testcase``, which is not permitted according to the most `recent schema <https://github.com/jenkinsci/xunit-plugin/blob/master/ src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd>`__. - `5239 <https://github.com/pytest-dev/pytest/issues/5239>`_: Pin ``pluggy`` to ``< 1.0`` so we don't update to ``1.0`` automatically when it gets released: there are planned breaking changes, and we want to ensure pytest properly supports ``pluggy 1.0``. ``` ### 4.4.2 ``` ========================= Bug Fixes --------- - `5089 <https://github.com/pytest-dev/pytest/issues/5089>`_: Fix crash caused by error in ``__repr__`` function with both ``showlocals`` and verbose output enabled. - `5139 <https://github.com/pytest-dev/pytest/issues/5139>`_: Eliminate core dependency on 'terminal' plugin. - `5229 <https://github.com/pytest-dev/pytest/issues/5229>`_: Require ``pluggy>=0.11.0`` which reverts a dependency to ``importlib-metadata`` added in ``0.10.0``. The ``importlib-metadata`` package cannot be imported when installed as an egg and causes issues when relying on ``setup.py`` to install test dependencies. Improved Documentation ---------------------- - `5171 <https://github.com/pytest-dev/pytest/issues/5171>`_: Doc: ``pytest_ignore_collect``, ``pytest_collect_directory``, ``pytest_collect_file`` and ``pytest_pycollect_makemodule`` hooks's 'path' parameter documented type is now ``py.path.local`` - `5188 <https://github.com/pytest-dev/pytest/issues/5188>`_: Improve help for ``--runxfail`` flag. Trivial/Internal Changes ------------------------ - `5182 <https://github.com/pytest-dev/pytest/issues/5182>`_: Removed internal and unused ``_pytest.deprecated.MARK_INFO_ATTRIBUTE``. ``` ### 4.4.1 ``` ========================= Bug Fixes --------- - `5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture. - `5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0. - `5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``. - `5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used. ``` ### 4.4.0 ``` ========================= Features -------- - `2224 <https://github.com/pytest-dev/pytest/issues/2224>`_: ``async`` test functions are skipped and a warning is emitted when a suitable async plugin is not installed (such as ``pytest-asyncio`` or ``pytest-trio``). Previously ``async`` functions would not execute at all but still be marked as "passed". - `2482 <https://github.com/pytest-dev/pytest/issues/2482>`_: Include new ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option to disable ascii-escaping in parametrized values. This may cause a series of problems and as the name makes clear, use at your own risk. - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: The ``-p`` option can now be used to early-load plugins also by entry-point name, instead of just by module name. This makes it possible to early load external plugins like ``pytest-cov`` in the command-line:: pytest -p pytest_cov - `4855 <https://github.com/pytest-dev/pytest/issues/4855>`_: The ``--pdbcls`` option handles classes via module attributes now (e.g. ``pdb:pdb.Pdb`` with `pdb++`_), and its validation was improved. .. _pdb++: https://pypi.org/project/pdbpp/ - `4875 <https://github.com/pytest-dev/pytest/issues/4875>`_: The `testpaths <https://docs.pytest.org/en/latest/reference.htmlconfval-testpaths>`__ configuration option is now displayed next to the ``rootdir`` and ``inifile`` lines in the pytest header if the option is in effect, i.e., directories or file names were not explicitly passed in the command line. Also, ``inifile`` is only displayed if there's a configuration file, instead of an empty ``inifile:`` string. - `4911 <https://github.com/pytest-dev/pytest/issues/4911>`_: Doctests can be skipped now dynamically using ``pytest.skip()``. - `4920 <https://github.com/pytest-dev/pytest/issues/4920>`_: Internal refactorings have been made in order to make the implementation of the `pytest-subtests <https://github.com/pytest-dev/pytest-subtests>`__ plugin possible, which adds unittest sub-test support and a new ``subtests`` fixture as discussed in `1367 <https://github.com/pytest-dev/pytest/issues/1367>`__. For details on the internal refactorings, please see the details on the related PR. - `4931 <https://github.com/pytest-dev/pytest/issues/4931>`_: pytester's ``LineMatcher`` asserts that the passed lines are a sequence. - `4936 <https://github.com/pytest-dev/pytest/issues/4936>`_: Handle ``-p plug`` after ``-p no:plug``. This can be used to override a blocked plugin (e.g. in "addopts") from the command line etc. - `4951 <https://github.com/pytest-dev/pytest/issues/4951>`_: Output capturing is handled correctly when only capturing via fixtures (capsys, capfs) with ``pdb.set_trace()``. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: ``pytester`` sets ``$HOME`` and ``$USERPROFILE`` to the temporary directory during test runs. This ensures to not load configuration files from the real user's home directory. - `4980 <https://github.com/pytest-dev/pytest/issues/4980>`_: Namespace packages are handled better with ``monkeypatch.syspath_prepend`` and ``testdir.syspathinsert`` (via ``pkg_resources.fixup_namespace_packages``). - `4993 <https://github.com/pytest-dev/pytest/issues/4993>`_: The stepwise plugin reports status information now. - `5008 <https://github.com/pytest-dev/pytest/issues/5008>`_: If a ``setup.cfg`` file contains ``[tool:pytest]`` and also the no longer supported ``[pytest]`` section, pytest will use ``[tool:pytest]`` ignoring ``[pytest]``. Previously it would unconditionally error out. This makes it simpler for plugins to support old pytest versions. Bug Fixes --------- - `1895 <https://github.com/pytest-dev/pytest/issues/1895>`_: Fix bug where fixtures requested dynamically via ``request.getfixturevalue()`` might be teardown before the requesting fixture. - `4851 <https://github.com/pytest-dev/pytest/issues/4851>`_: pytester unsets ``PYTEST_ADDOPTS`` now to not use outer options with ``testdir.runpytest()``. - `4903 <https://github.com/pytest-dev/pytest/issues/4903>`_: Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. - `4928 <https://github.com/pytest-dev/pytest/issues/4928>`_: Fix line offsets with ``ScopeMismatch`` errors. - `4957 <https://github.com/pytest-dev/pytest/issues/4957>`_: ``-p no:plugin`` is handled correctly for default (internal) plugins now, e.g. with ``-p no:capture``. Previously they were loaded (imported) always, making e.g. the ``capfd`` fixture available. - `4968 <https://github.com/pytest-dev/pytest/issues/4968>`_: The pdb ``quit`` command is handled properly when used after the ``debug`` command with `pdb++`_. .. _pdb++: https://pypi.org/project/pdbpp/ - `4975 <https://github.com/pytest-dev/pytest/issues/4975>`_: Fix the interpretation of ``-qq`` option where it was being considered as ``-v`` instead. - `4978 <https://github.com/pytest-dev/pytest/issues/4978>`_: ``outcomes.Exit`` is not swallowed in ``assertrepr_compare`` anymore. - `4988 <https://github.com/pytest-dev/pytest/issues/4988>`_: Close logging's file handler explicitly when the session finishes. - `5003 <https://github.com/pytest-dev/pytest/issues/5003>`_: Fix line offset with mark collection error (off by one). Improved Documentation ---------------------- - `4974 <https://github.com/pytest-dev/pytest/issues/4974>`_: Update docs for ``pytest_cmdline_parse`` hook to note availability liminations Trivial/Internal Changes ------------------------ - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: ``pluggy>=0.9`` is now required. - `4815 <https://github.com/pytest-dev/pytest/issues/4815>`_: ``funcsigs>=1.0`` is now required for Python 2.7. - `4829 <https://github.com/pytest-dev/pytest/issues/4829>`_: Some left-over internal code related to ``yield`` tests has been removed. - `4890 <https://github.com/pytest-dev/pytest/issues/4890>`_: Remove internally unused ``anypython`` fixture from the pytester plugin. - `4912 <https://github.com/pytest-dev/pytest/issues/4912>`_: Remove deprecated Sphinx directive, ``add_description_unit()``, pin sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0. - `4913 <https://github.com/pytest-dev/pytest/issues/4913>`_: Fix pytest tests invocation with custom ``PYTHONPATH``. - `4965 <https://github.com/pytest-dev/pytest/issues/4965>`_: New ``pytest_report_to_serializable`` and ``pytest_report_from_serializable`` **experimental** hooks. These hooks will be used by ``pytest-xdist``, ``pytest-subtests``, and the replacement for resultlog to serialize and customize reports. They are experimental, meaning that their details might change or even be removed completely in future patch releases without warning. Feedback is welcome from plugin authors and users alike. - `4987 <https://github.com/pytest-dev/pytest/issues/4987>`_: ``Collector.repr_failure`` respects the ``--tb`` option, but only defaults to ``short`` now (with ``auto``). ``` ### 4.3.1 ``` ========================= Bug Fixes --------- - `4810 <https://github.com/pytest-dev/pytest/issues/4810>`_: Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed. - `4861 <https://github.com/pytest-dev/pytest/issues/4861>`_: Improve validation of contents written to captured output so it behaves the same as when capture is disabled. - `4898 <https://github.com/pytest-dev/pytest/issues/4898>`_: Fix ``AttributeError: FixtureRequest has no 'confg' attribute`` bug in ``testdir.copy_example``. Trivial/Internal Changes ------------------------ - `4768 <https://github.com/pytest-dev/pytest/issues/4768>`_: Avoid pkg_resources import at the top-level. ``` ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` ### 4.2.0 ``` ========================= Features -------- - `3094 <https://github.com/pytest-dev/pytest/issues/3094>`_: `Classic xunit-style <https://docs.pytest.org/en/latest/xunit_setup.html>`__ functions and methods now obey the scope of *autouse* fixtures. This fixes a number of surprising issues like ``setup_method`` being called before session-scoped autouse fixtures (see `517 <https://github.com/pytest-dev/pytest/issues/517>`__ for an example). - `4627 <https://github.com/pytest-dev/pytest/issues/4627>`_: Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer support those Python versions. - `4660 <https://github.com/pytest-dev/pytest/issues/4660>`_: The number of *selected* tests now are also displayed when the ``-k`` or ``-m`` flags are used. - `4688 <https://github.com/pytest-dev/pytest/issues/4688>`_: ``pytest_report_teststatus`` hook now can also receive a ``config`` parameter. - `4691 <https://github.com/pytest-dev/pytest/issues/4691>`_: ``pytest_terminal_summary`` hook now can also receive a ``config`` parameter. Bug Fixes --------- - `3547 <https://github.com/pytest-dev/pytest/issues/3547>`_: ``--junitxml`` can emit XML compatible with Jenkins xUnit. ``junit_family`` INI option accepts ``legacy|xunit1``, which produces old style output, and ``xunit2`` that conforms more strictly to https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd - `4280 <https://github.com/pytest-dev/pytest/issues/4280>`_: Improve quitting from pdb, especially with ``--trace``. Using ``q[quit]`` after ``pdb.set_trace()`` will quit pytest also. - `4402 <https://github.com/pytest-dev/pytest/issues/4402>`_: Warning summary now groups warnings by message instead of by test id. This makes the output more compact and better conveys the general idea of how much code is actually generating warnings, instead of how many tests call that code. - `4536 <https://github.com/pytest-dev/pytest/issues/4536>`_: ``monkeypatch.delattr`` handles class descriptors like ``staticmethod``/``classmethod``. - `4649 <https://github.com/pytest-dev/pytest/issues/4649>`_: Restore marks being considered keywords for keyword expressions. - `4653 <https://github.com/pytest-dev/pytest/issues/4653>`_: ``tmp_path`` fixture and other related ones provides resolved path (a.k.a real path) - `4667 <https://github.com/pytest-dev/pytest/issues/4667>`_: ``pytest_terminal_summary`` uses result from ``pytest_report_teststatus`` hook, rather than hardcoded strings. - `4669 <https://github.com/pytest-dev/pytest/issues/4669>`_: Correctly handle ``unittest.SkipTest`` exception containing non-ascii characters on Python 2. - `4680 <https://github.com/pytest-dev/pytest/issues/4680>`_: Ensure the ``tmpdir`` and the ``tmp_path`` fixtures are the same folder. - `4681 <https://github.com/pytest-dev/pytest/issues/4681>`_: Ensure ``tmp_path`` is always a real path. Trivial/Internal Changes ------------------------ - `4643 <https://github.com/pytest-dev/pytest/issues/4643>`_: Use ``a.item()`` instead of the deprecated ``np.asscalar(a)`` in ``pytest.approx``. ``np.asscalar`` has been `deprecated <https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rstnew-deprecations>`__ in ``numpy 1.16.``. - `4657 <https://github.com/pytest-dev/pytest/issues/4657>`_: Copy saferepr from pylib - `4668 <https://github.com/pytest-dev/pytest/issues/4668>`_: The verbose word for expected failures in the teststatus report changes from ``xfail`` to ``XFAIL`` to be consistent with other test outcomes. ``` ### 4.1.1 ``` ========================= Bug Fixes --------- - `2256 <https://github.com/pytest-dev/pytest/issues/2256>`_: Show full repr with ``assert a==b`` and ``-vv``. - `3456 <https://github.com/pytest-dev/pytest/issues/3456>`_: Extend Doctest-modules to ignore mock objects. - `4617 <https://github.com/pytest-dev/pytest/issues/4617>`_: Fixed ``pytest.warns`` bug when context manager is reused (e.g. multiple parametrization). - `4631 <https://github.com/pytest-dev/pytest/issues/4631>`_: Don't rewrite assertion when ``__getattr__`` is broken Improved Documentation ---------------------- - `3375 <https://github.com/pytest-dev/pytest/issues/3375>`_: Document that using ``setup.cfg`` may crash other tools or cause hard to track down problems because it uses a different parser than ``pytest.ini`` or ``tox.ini`` files. Trivial/Internal Changes ------------------------ - `4602 <https://github.com/pytest-dev/pytest/issues/4602>`_: Uninstall ``hypothesis`` in regen tox env. ``` ### 4.1.0 ``` ========================= Removals -------- - `2169 <https://github.com/pytest-dev/pytest/issues/2169>`_: ``pytest.mark.parametrize``: in previous versions, errors raised by id functions were suppressed and changed into warnings. Now the exceptions are propagated, along with a pytest message informing the node, parameter value and index where the exception occurred. - `3078 <https://github.com/pytest-dev/pytest/issues/3078>`_: Remove legacy internal warnings system: ``config.warn``, ``Node.warn``. The ``pytest_logwarning`` now issues a warning when implemented. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlconfig-warn-and-node-warn>`__ on information on how to update your code. - `3079 <https://github.com/pytest-dev/pytest/issues/3079>`_: Removed support for yield tests - they are fundamentally broken because they don't support fixtures properly since collection and test execution were separated. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlyield-tests>`__ on information on how to update your code. - `3082 <https://github.com/pytest-dev/pytest/issues/3082>`_: Removed support for applying marks directly to values in ``pytest.mark.parametrize``. Use ``pytest.param`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmarks-in-pytest-mark-parametrize>`__ on information on how to update your code. - `3083 <https://github.com/pytest-dev/pytest/issues/3083>`_: Removed ``Metafunc.addcall``. This was the predecessor mechanism to ``pytest.mark.parametrize``. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmetafunc-addcall>`__ on information on how to update your code. - `3085 <https://github.com/pytest-dev/pytest/issues/3085>`_: Removed support for passing strings to ``pytest.main``. Now, always pass a list of strings instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpassing-command-line-string-to-pytest-main>`__ on information on how to update your code. - `3086 <https://github.com/pytest-dev/pytest/issues/3086>`_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. - `3616 <https://github.com/pytest-dev/pytest/issues/3616>`_: Removed the deprecated compat properties for ``node.Class/Function/Module`` - use ``pytest.Class/Function/Module`` now. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlinternal-classes-accessed-through-node>`__ on information on how to update your code. - `4421 <https://github.com/pytest-dev/pytest/issues/4421>`_: Removed the implementation of the ``pytest_namespace`` hook. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-namespace>`__ on information on how to update your code. - `4489 <https://github.com/pytest-dev/pytest/issues/4489>`_: Removed ``request.cached_setup``. This was the predecessor mechanism to modern fixtures. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcached-setup>`__ on information on how to update your code. - `4535 <https://github.com/pytest-dev/pytest/issues/4535>`_: Removed the deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago. - `4543 <https://github.com/pytest-dev/pytest/issues/4543>`_: Removed support to define fixtures using the ``pytest_funcarg__`` prefix. Use the ``pytest.fixture`` decorator instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-funcarg-prefix>`__ on information on how to update your code. - `4545 <https://github.com/pytest-dev/pytest/issues/4545>`_: Calling fixtures directly is now always an error instead of a warning. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcalling-fixtures-directly>`__ on information…
…ges (to try to fix more-itertools issue: pytest-dev/pytest#4770 )
1: Initial Update r=aragilar a=pyup-bot This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch. Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR. ### Update [mock](https://pypi.org/project/mock) from **3.0.5** to **3.0.5**. <details> <summary>Changelog</summary> ### 3.0.5 ``` ----- - Issue 31855: :func:`unittest.mock.mock_open` results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. ``` ### 3.0.4 ``` ----- - Include the license, readme and changelog in the source distribution. ``` ### 3.0.3 ``` ----- - Fixed patching of dictionaries, when specifying the target with a unicode on Python 2. ``` ### 3.0.2 ``` ----- - Add missing ``funcsigs`` dependency on Python 2. ``` ### 3.0.1 ``` ----- - Fix packaging issue where ``six`` was missed as a dependency. ``` ### 3.0.0 ``` ----- - Issue 35226: Recursively check arguments when testing for equality of :class:`unittest.mock.call` objects and add note that tracking of parameters used to create ancestors of mocks in ``mock_calls`` is not possible. - Issue 31177: Fix bug that prevented using :meth:`reset_mock <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes - Issue 26704: Added test demonstrating double-patching of an instance method. Patch by Anthony Sottile. - Issue 35500: Write expected and actual call parameters on separate lines in :meth:`unittest.mock.Mock.assert_called_with` assertion errors. Contributed by Susan Su. - Issue 35330: When a :class:`Mock` instance was used to wrap an object, if `side_effect` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. - Issue 30541: Add new function to seal a mock and prevent the automatically creation of child mocks. Patch by Mario Corchero. - Issue 35022: :class:`unittest.mock.MagicMock` now supports the ``__fspath__`` method (from :class:`os.PathLike`). - Issue 33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` magic method. - Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. - Issue 36366: Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` object will now return `None` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch byKarthikeyan Singaravelan. - Issue 35357: Internal attributes' names of unittest.mock._Call and unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with _mock_ in order to prevent clashes with widely used object attributes. Fixed minor typo in test function name. - Issue 20239: Allow repeated assignment deletion of :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. - Issue 35082: Don't return deleted attributes when calling dir on a :class:`unittest.mock.Mock`. - Issue 0: Improved an error message when mock assert_has_calls fails. - Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod` to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. - Issue 21478: Calls to a child function created with :func:`unittest.mock.create_autospec` should propagate to the parent. Patch by Karthikeyan Singaravelan. - Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over the file contents. Patch by Tony Flury. - Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects. Contributed by Kumar Akshay. - Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get signature. Patch by Karthikeyan Singaravelan. - Issue 35047: ``unittest.mock`` now includes mock calls in exception messages if ``assert_not_called``, ``assert_called_once``, or ``assert_called_once_with`` fails. Patch by Petter Strandmark. - Issue 28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once. - Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY. - Issue 20804: The unittest.mock.sentinel attributes now preserve their identity when they are copied or pickled. - Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter anymore. Patch written by Jiajun Huang. - Issue 26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. - Issue 21271: New keyword only parameters in reset_mock call. - Issue 26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. - Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer. ``` ### 2.0.0 ``` ----------------- - Issue 26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha. - Issue 22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully. - Issue 24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur. - Issue 23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill. - Issue 21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3. - Issue 18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst. - Issue 23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi - Issue 23310: Fix MagicMock's initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim. - Issue 23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl. - Issue 23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. - Issue 23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in issue 21408 they are redundant. *** NOT BACKPORTED *** - Issue 21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes. - Issue 21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests. - Issue 21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called. - Issue 21238: New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of an attribute startswith assert or assret. - Issue 21239: patch.stopall() didn't work deterministically when the same name was patched more than once. - Issue 21222: Passing name keyword argument to mock.create_autospec now works. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter. - Issue 20189: unittest.mock now no longer assumes that any object for which it could get an inspect.Signature is a callable written in Python. Fix courtesy of Michael Foord. - Issue 17467: add readline and readlines support to mock_open in unittest.mock. - Issue 17015: When it has a spec, a Mock object now inspects its signature when matching calls, so that arguments can be matched positionally or by name. - Issue 15323: improve failure message of Mock.assert_called_once_with - Issue 14857: fix regression in references to PEP 3135 implicit __class__ closure variable (Reopens issue 12370) - Issue 14295: Add unittest.mock ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/mock - Changelog: https://pyup.io/changelogs/mock/ - Docs: http://mock.readthedocs.org/en/latest/ </details> ### Update [sphinx_rtd_theme](https://pypi.org/project/sphinx_rtd_theme) from **0.4.3** to **0.4.3**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/sphinx-rtd-theme - Repo: https://github.com/rtfd/sphinx_rtd_theme/ </details> ### Update [pytest](https://pypi.org/project/pytest) from **5.2.1** to **5.2.1**. <details> <summary>Changelog</summary> ### 5.2.1 ``` ========================= Bug Fixes --------- - `5902 <https://github.com/pytest-dev/pytest/issues/5902>`_: Fix warnings about deprecated ``cmp`` attribute in ``attrs>=19.2``. ``` ### 5.2.0 ``` ========================= Deprecations ------------ - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: Passing arguments to pytest.fixture() as positional arguments is deprecated - pass them as a keyword argument instead. Features -------- - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: The ``scope`` parameter of ``pytest.fixture`` can now be a callable that receives the fixture name and the ``config`` object as keyword-only parameters. See `the docs <https://docs.pytest.org/en/latest/fixture.htmldynamic-scope>`__ for more information. - `5764 <https://github.com/pytest-dev/pytest/issues/5764>`_: New behavior of the ``--pastebin`` option: failures to connect to the pastebin server are reported, without failing the pytest run Bug Fixes --------- - `5806 <https://github.com/pytest-dev/pytest/issues/5806>`_: Fix "lexer" being used when uploading to bpaste.net from ``--pastebin`` to "text". - `5884 <https://github.com/pytest-dev/pytest/issues/5884>`_: Fix ``--setup-only`` and ``--setup-show`` for custom pytest items. Trivial/Internal Changes ------------------------ - `5056 <https://github.com/pytest-dev/pytest/issues/5056>`_: The HelpFormatter uses ``py.io.get_terminal_width`` for better width detection. ``` ### 5.1.3 ``` ========================= Bug Fixes --------- - `5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. - `5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. - `5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase characters (introduced by 5792). ``` ### 5.1.2 ``` ========================= Bug Fixes --------- - `2270 <https://github.com/pytest-dev/pytest/issues/2270>`_: Fixed ``self`` reference in function-scoped fixtures defined plugin classes: previously ``self`` would be a reference to a *test* class, not the *plugin* class. - `570 <https://github.com/pytest-dev/pytest/issues/570>`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization. - `5782 <https://github.com/pytest-dev/pytest/issues/5782>`_: Fix decoding error when printing an error response from ``--pastebin``. - `5786 <https://github.com/pytest-dev/pytest/issues/5786>`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like ``pytest-xdist`` to display them properly. - `5792 <https://github.com/pytest-dev/pytest/issues/5792>`_: Windows: Fix error that occurs in certain circumstances when loading ``conftest.py`` from a working directory that has casing other than the one stored in the filesystem (e.g., ``c:\test`` instead of ``C:\test``). ``` ### 5.1.1 ``` ========================= Bug Fixes --------- - `5751 <https://github.com/pytest-dev/pytest/issues/5751>`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1. ``` ### 5.1.0 ``` ========================= Removals -------- - `5180 <https://github.com/pytest-dev/pytest/issues/5180>`_: As per our policy, the following features have been deprecated in the 4.X series and are now removed: * ``Request.getfuncargvalue``: use ``Request.getfixturevalue`` instead. * ``pytest.raises`` and ``pytest.warns`` no longer support strings as the second argument. * ``message`` parameter of ``pytest.raises``. * ``pytest.raises``, ``pytest.warns`` and ``ParameterSet.param`` now use native keyword-only syntax. This might change the exception message from previous versions, but they still raise ``TypeError`` on unknown keyword arguments as before. * ``pytest.config`` global variable. * ``tmpdir_factory.ensuretemp`` method. * ``pytest_logwarning`` hook. * ``RemovedInPytest4Warning`` warning type. * ``request`` is now a reserved name for fixtures. For more information consult `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ in the docs. - `5565 <https://github.com/pytest-dev/pytest/issues/5565>`_: Removed unused support code for `unittest2 <https://pypi.org/project/unittest2/>`__. The ``unittest2`` backport module is no longer necessary since Python 3.3+, and the small amount of code in pytest to support it also doesn't seem to be used: after removed, all tests still pass unchanged. Although our policy is to introduce a deprecation period before removing any features or support for third party libraries, because this code is apparently not used at all (even if ``unittest2`` is used by a test suite executed by pytest), it was decided to remove it in this release. If you experience a regression because of this, please `file an issue <https://github.com/pytest-dev/pytest/issues/new>`__. - `5615 <https://github.com/pytest-dev/pytest/issues/5615>`_: ``pytest.fail``, ``pytest.xfail`` and ``pytest.skip`` no longer support bytes for the message argument. This was supported for Python 2 where it was tempting to use ``"message"`` instead of ``u"message"``. Python 3 code is unlikely to pass ``bytes`` to these functions. If you do, please decode it to an ``str`` beforehand. Features -------- - `5564 <https://github.com/pytest-dev/pytest/issues/5564>`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``. - `5576 <https://github.com/pytest-dev/pytest/issues/5576>`_: New `NUMBER <https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options>`__ option for doctests to ignore irrelevant differences in floating-point numbers. Inspired by Sébastien Boisgérault's `numtest <https://github.com/boisgera/numtest>`__ extension for doctest. Improvements ------------ - `5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now includes a timestamp and hostname in the testsuite tag. - `5707 <https://github.com/pytest-dev/pytest/issues/5707>`_: Time taken to run the test suite now includes a human-readable representation when it takes over 60 seconds, for example:: ===== 2 failed in 102.70s (0:01:42) ===== Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5115 <https://github.com/pytest-dev/pytest/issues/5115>`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest. - `5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root element. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5537 <https://github.com/pytest-dev/pytest/issues/5537>`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the standard library on Python 3.8+. - `5578 <https://github.com/pytest-dev/pytest/issues/5578>`_: Improve type checking for some exception-raising functions (``pytest.xfail``, ``pytest.skip``, etc) so they provide better error messages when users meant to use marks (for example ``pytest.xfail`` instead of ``pytest.mark.xfail``). - `5606 <https://github.com/pytest-dev/pytest/issues/5606>`_: Fixed internal error when test functions were patched with objects that cannot be compared for truth values against others, like ``numpy`` arrays. - `5634 <https://github.com/pytest-dev/pytest/issues/5634>`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases. This makes ``unittest`` cases handle ``quit`` from pytest's pdb correctly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. - `5701 <https://github.com/pytest-dev/pytest/issues/5701>`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``. - `5734 <https://github.com/pytest-dev/pytest/issues/5734>`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions. Improved Documentation ---------------------- - `5669 <https://github.com/pytest-dev/pytest/issues/5669>`_: Add docstring for ``Testdir.copy_example``. Trivial/Internal Changes ------------------------ - `5095 <https://github.com/pytest-dev/pytest/issues/5095>`_: XML files of the ``xunit2`` family are now validated against the schema by pytest's own test suite to avoid future regressions. - `5516 <https://github.com/pytest-dev/pytest/issues/5516>`_: Cache node splitting function which can improve collection performance in very large test suites. - `5603 <https://github.com/pytest-dev/pytest/issues/5603>`_: Simplified internal ``SafeRepr`` class and removed some dead code. - `5664 <https://github.com/pytest-dev/pytest/issues/5664>`_: When invoking pytest's own testsuite with ``PYTHONDONTWRITEBYTECODE=1``, the ``test_xfail_handling`` test no longer fails. - `5684 <https://github.com/pytest-dev/pytest/issues/5684>`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.). ``` ### 5.0.1 ``` ========================= Bug Fixes --------- - `5479 <https://github.com/pytest-dev/pytest/issues/5479>`_: Improve quoting in ``raises`` match failure message. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. Improved Documentation ---------------------- - `5517 <https://github.com/pytest-dev/pytest/issues/5517>`_: Improve "Declaring new hooks" section in chapter "Writing Plugins" ``` ### 5.0.0 ``` ========================= Important --------- This release is a Python3.5+ only release. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Removals -------- - `1149 <https://github.com/pytest-dev/pytest/issues/1149>`_: Pytest no longer accepts prefixes of command-line arguments, for example typing ``pytest --doctest-mod`` inplace of ``--doctest-modules``. This was previously allowed where the ``ArgumentParser`` thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues `1149 <https://github.com/pytest-dev/pytest/issues/1149>`__, `3413 <https://github.com/pytest-dev/pytest/issues/3413>`__, and `4009 <https://github.com/pytest-dev/pytest/issues/4009>`__. - `5402 <https://github.com/pytest-dev/pytest/issues/5402>`_: **PytestDeprecationWarning are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestDeprecationWarning`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 5.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``5.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning But this will stop working when pytest ``5.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `5402 <https://github.com/pytest-dev/pytest/issues/5402>`__. - `5412 <https://github.com/pytest-dev/pytest/issues/5412>`_: ``ExceptionInfo`` objects (returned by ``pytest.raises``) now have the same ``str`` representation as ``repr``, which avoids some confusion when users use ``print(e)`` to inspect the object. This means code like: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e) Needs to be changed to: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value) Deprecations ------------ - `4488 <https://github.com/pytest-dev/pytest/issues/4488>`_: The removal of the ``--result-log`` option and module has been postponed to (tentatively) pytest 6.0 as the team has not yet got around to implement a good alternative for it. - `466 <https://github.com/pytest-dev/pytest/issues/466>`_: The ``funcargnames`` attribute has been an alias for ``fixturenames`` since pytest 2.3, and is now deprecated in code too. Features -------- - `3457 <https://github.com/pytest-dev/pytest/issues/3457>`_: New `pytest_assertion_pass <https://docs.pytest.org/en/latest/reference.html_pytest.hookspec.pytest_assertion_pass>`__ hook, called with context information when an assertion *passes*. This hook is still **experimental** so use it with caution. - `5440 <https://github.com/pytest-dev/pytest/issues/5440>`_: The `faulthandler <https://docs.python.org/3/library/faulthandler.html>`__ standard library module is now enabled by default to help users diagnose crashes in C modules. This functionality was provided by integrating the external `pytest-faulthandler <https://github.com/pytest-dev/pytest-faulthandler>`__ plugin into the core, so users should remove that plugin from their requirements if used. For more information see the docs: https://docs.pytest.org/en/latest/usage.htmlfault-handler - `5452 <https://github.com/pytest-dev/pytest/issues/5452>`_: When warnings are configured as errors, pytest warnings now appear as originating from ``pytest.`` instead of the internal ``_pytest.warning_types.`` module. - `5125 <https://github.com/pytest-dev/pytest/issues/5125>`_: ``Session.exitcode`` values are now coded in ``pytest.ExitCode``, an ``IntEnum``. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution. The team doesn't expect this change to break test suites or plugins in general, except in esoteric/specific scenarios. **pytest-xdist** users should upgrade to ``1.29.0`` or later, as ``pytest-xdist`` required a compatibility fix because of this change. Bug Fixes --------- - `1403 <https://github.com/pytest-dev/pytest/issues/1403>`_: Switch from ``imp`` to ``importlib``. - `1671 <https://github.com/pytest-dev/pytest/issues/1671>`_: The name of the ``.pyc`` files cached by the assertion writer now includes the pytest version to avoid stale caches. - `2761 <https://github.com/pytest-dev/pytest/issues/2761>`_: Honor PEP 235 on case-insensitive file systems. - `5078 <https://github.com/pytest-dev/pytest/issues/5078>`_: Test module is no longer double-imported when using ``--pyargs``. - `5260 <https://github.com/pytest-dev/pytest/issues/5260>`_: Improved comparison of byte strings. When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff It now shows the actual ascii representation instead, which is often more useful:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff - `5335 <https://github.com/pytest-dev/pytest/issues/5335>`_: Colorize level names when the level in the logging format is formatted using '%(levelname).Xs' (truncated fixed width alignment), where X is an integer. - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5432 <https://github.com/pytest-dev/pytest/issues/5432>`_: Prevent "already imported" warnings from assertion rewriter when invoking pytest in-process multiple times. - `5433 <https://github.com/pytest-dev/pytest/issues/5433>`_: Fix assertion rewriting in packages (``__init__.py``). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. Improved Documentation ---------------------- - `5315 <https://github.com/pytest-dev/pytest/issues/5315>`_: Expand docs on mocking classes and dictionaries with ``monkeypatch``. - `5416 <https://github.com/pytest-dev/pytest/issues/5416>`_: Fix PytestUnknownMarkWarning in run/skip example. ``` ### 4.6.5 ``` ========================= Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5478 <https://github.com/pytest-dev/pytest/issues/5478>`_: Fix encode error when using unicode strings in exceptions with ``pytest.raises``. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. ``` ### 4.6.4 ``` ========================= Bug Fixes --------- - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. ``` ### 4.6.3 ``` ========================= Bug Fixes --------- - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. ``` ### 4.6.2 ``` ========================= Bug Fixes --------- - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. ``` ### 4.6.1 ``` ========================= Bug Fixes --------- - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5358 <https://github.com/pytest-dev/pytest/issues/5358>`_: Fix assertion rewriting of ``all()`` calls to deal with non-generators. ``` ### 4.6.0 ``` ========================= Important --------- The ``4.6.X`` series will be the last series to support **Python 2 and Python 3.4**. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Features -------- - `4559 <https://github.com/pytest-dev/pytest/issues/4559>`_: Added the ``junit_log_passing_tests`` ini value which can be used to enable or disable logging of passing test output in the Junit XML file. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: pytester's ``testdir.spawn`` uses ``tmpdir`` as HOME/USERPROFILE directory. - `5062 <https://github.com/pytest-dev/pytest/issues/5062>`_: Unroll calls to ``all`` to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions. - `5063 <https://github.com/pytest-dev/pytest/issues/5063>`_: Switch from ``pkg_resources`` to ``importlib-metadata`` for entrypoint detection for improved performance and import time. - `5091 <https://github.com/pytest-dev/pytest/issues/5091>`_: The output for ini options in ``--help`` has been improved. - `5269 <https://github.com/pytest-dev/pytest/issues/5269>`_: ``pytest.importorskip`` includes the ``ImportError`` now in the default ``reason``. - `5311 <https://github.com/pytest-dev/pytest/issues/5311>`_: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter. - `5312 <https://github.com/pytest-dev/pytest/issues/5312>`_: Improved formatting of multiline log messages in Python 3. Bug Fixes --------- - `2064 <https://github.com/pytest-dev/pytest/issues/2064>`_: The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now. - `4908 <https://github.com/pytest-dev/pytest/issues/4908>`_: The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``). - `5036 <https://github.com/pytest-dev/pytest/issues/5036>`_: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized. - `5256 <https://github.com/pytest-dev/pytest/issues/5256>`_: Handle internal error due to a lone surrogate unicode character not being representable in Jython. - `5257 <https://github.com/pytest-dev/pytest/issues/5257>`_: Ensure that ``sys.stdout.mode`` does not include ``'b'`` as it is a text stream. - `5278 <https://github.com/pytest-dev/pytest/issues/5278>`_: Pytest's internal python plugin can be disabled using ``-p no:python`` again. - `5286 <https://github.com/pytest-dev/pytest/issues/5286>`_: Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option not working when using a list of test IDs in parametrized tests. - `5330 <https://github.com/pytest-dev/pytest/issues/5330>`_: Show the test module being collected when emitting ``PytestCollectionWarning`` messages for test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem. - `5333 <https://github.com/pytest-dev/pytest/issues/5333>`_: Fix regression in 4.5.0 with ``--lf`` not re-running all tests with known failures from non-selected tests. Improved Documentation ---------------------- - `5250 <https://github.com/pytest-dev/pytest/issues/5250>`_: Expand docs on use of ``setenv`` and ``delenv`` with ``monkeypatch``. ``` ### 4.5.0 ``` ========================= Features -------- - `4826 <https://github.com/pytest-dev/pytest/issues/4826>`_: A warning is now emitted when unknown marks are used as a decorator. This is often due to a typo, which can lead to silently broken tests. - `4907 <https://github.com/pytest-dev/pytest/issues/4907>`_: Show XFail reason as part of JUnitXML message field. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: Messages from crash reports are displayed within test summaries now, truncated to the terminal width. - `5023 <https://github.com/pytest-dev/pytest/issues/5023>`_: New flag ``--strict-markers`` that triggers an error when unknown markers (e.g. those not registered using the `markers option`_ in the configuration file) are used in the test suite. The existing ``--strict`` option has the same behavior currently, but can be augmented in the future for additional checks. .. _`markers option`: https://docs.pytest.org/en/latest/reference.htmlconfval-markers - `5026 <https://github.com/pytest-dev/pytest/issues/5026>`_: Assertion failure messages for sequences and dicts contain the number of different items now. - `5034 <https://github.com/pytest-dev/pytest/issues/5034>`_: Improve reporting with ``--lf`` and ``--ff`` (run-last-failure). - `5035 <https://github.com/pytest-dev/pytest/issues/5035>`_: The ``--cache-show`` option/action accepts an optional glob to show only matching cache entries. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: Standard input (stdin) can be given to pytester's ``Testdir.run()`` and ``Testdir.popen()``. - `5068 <https://github.com/pytest-dev/pytest/issues/5068>`_: The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. - `5108 <https://github.com/pytest-dev/pytest/issues/5108>`_: The short test summary is displayed after passes with output (``-rP``). - `5172 <https://github.com/pytest-dev/pytest/issues/5172>`_: The ``--last-failed`` (``--lf``) option got smarter and will now skip entire files if all tests of that test file have passed in previous runs, greatly speeding up collection. - `5177 <https://github.com/pytest-dev/pytest/issues/5177>`_: Introduce new specific warning ``PytestWarning`` subclasses to make it easier to filter warnings based on the class, rather than on the message. The new subclasses are: * ``PytestAssertRewriteWarning`` * ``PytestCacheWarning`` * ``PytestCollectionWarning`` * ``PytestConfigWarning`` * ``PytestUnhandledCoroutineWarning`` * ``PytestUnknownMarkWarning`` - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: New ``record_testsuite_property`` session-scoped fixture allows users to log ``<property>`` tags at the ``testsuite`` level with the ``junitxml`` plugin. The generated XML is compatible with the latest xunit standard, contrary to the properties recorded by ``record_property`` and ``record_xml_attribute``. - `5214 <https://github.com/pytest-dev/pytest/issues/5214>`_: The default logging format has been changed to improve readability. Here is an example of a previous logging message:: test_log_cli_enabled_disabled.py 3 CRITICAL critical message logged by test This has now become:: CRITICAL root:test_log_cli_enabled_disabled.py:3 critical message logged by test The formatting can be changed through the `log_format <https://docs.pytest.org/en/latest/reference.htmlconfval-log_format>`__ configuration option. - `5220 <https://github.com/pytest-dev/pytest/issues/5220>`_: ``--fixtures`` now also shows fixture scope for scopes other than ``"function"``. Bug Fixes --------- - `5113 <https://github.com/pytest-dev/pytest/issues/5113>`_: Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. - `5144 <https://github.com/pytest-dev/pytest/issues/5144>`_: With usage errors ``exitstatus`` is set to ``EXIT_USAGEERROR`` in the ``pytest_sessionfinish`` hook now as expected. - `5235 <https://github.com/pytest-dev/pytest/issues/5235>`_: ``outcome.exit`` is not used with ``EOF`` in the pdb wrapper anymore, but only with ``quit``. Improved Documentation ---------------------- - `4935 <https://github.com/pytest-dev/pytest/issues/4935>`_: Expand docs on registering marks and the effect of ``--strict``. Trivial/Internal Changes ------------------------ - `4942 <https://github.com/pytest-dev/pytest/issues/4942>`_: ``logging.raiseExceptions`` is not set to ``False`` anymore. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: pytest now depends on `wcwidth <https://pypi.org/project/wcwidth>`__ to properly track unicode character sizes for more precise terminal output. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: pytester's ``Testdir.popen()`` uses ``stdout`` and ``stderr`` via keyword arguments with defaults now (``subprocess.PIPE``). - `5069 <https://github.com/pytest-dev/pytest/issues/5069>`_: The code for the short test summary in the terminal was moved to the terminal plugin. - `5082 <https://github.com/pytest-dev/pytest/issues/5082>`_: Improved validation of kwargs for various methods in the pytester plugin. - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: ``record_property`` now emits a ``PytestWarning`` when used with ``junit_family=xunit2``: the fixture generates ``property`` tags as children of ``testcase``, which is not permitted according to the most `recent schema <https://github.com/jenkinsci/xunit-plugin/blob/master/ src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd>`__. - `5239 <https://github.com/pytest-dev/pytest/issues/5239>`_: Pin ``pluggy`` to ``< 1.0`` so we don't update to ``1.0`` automatically when it gets released: there are planned breaking changes, and we want to ensure pytest properly supports ``pluggy 1.0``. ``` ### 4.4.2 ``` ========================= Bug Fixes --------- - `5089 <https://github.com/pytest-dev/pytest/issues/5089>`_: Fix crash caused by error in ``__repr__`` function with both ``showlocals`` and verbose output enabled. - `5139 <https://github.com/pytest-dev/pytest/issues/5139>`_: Eliminate core dependency on 'terminal' plugin. - `5229 <https://github.com/pytest-dev/pytest/issues/5229>`_: Require ``pluggy>=0.11.0`` which reverts a dependency to ``importlib-metadata`` added in ``0.10.0``. The ``importlib-metadata`` package cannot be imported when installed as an egg and causes issues when relying on ``setup.py`` to install test dependencies. Improved Documentation ---------------------- - `5171 <https://github.com/pytest-dev/pytest/issues/5171>`_: Doc: ``pytest_ignore_collect``, ``pytest_collect_directory``, ``pytest_collect_file`` and ``pytest_pycollect_makemodule`` hooks's 'path' parameter documented type is now ``py.path.local`` - `5188 <https://github.com/pytest-dev/pytest/issues/5188>`_: Improve help for ``--runxfail`` flag. Trivial/Internal Changes ------------------------ - `5182 <https://github.com/pytest-dev/pytest/issues/5182>`_: Removed internal and unused ``_pytest.deprecated.MARK_INFO_ATTRIBUTE``. ``` ### 4.4.1 ``` ========================= Bug Fixes --------- - `5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture. - `5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0. - `5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``. - `5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used. ``` ### 4.4.0 ``` ========================= Features -------- - `2224 <https://github.com/pytest-dev/pytest/issues/2224>`_: ``async`` test functions are skipped and a warning is emitted when a suitable async plugin is not installed (such as ``pytest-asyncio`` or ``pytest-trio``). Previously ``async`` functions would not execute at all but still be marked as "passed". - `2482 <https://github.com/pytest-dev/pytest/issues/2482>`_: Include new ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option to disable ascii-escaping in parametrized values. This may cause a series of problems and as the name makes clear, use at your own risk. - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: The ``-p`` option can now be used to early-load plugins also by entry-point name, instead of just by module name. This makes it possible to early load external plugins like ``pytest-cov`` in the command-line:: pytest -p pytest_cov - `4855 <https://github.com/pytest-dev/pytest/issues/4855>`_: The ``--pdbcls`` option handles classes via module attributes now (e.g. ``pdb:pdb.Pdb`` with `pdb++`_), and its validation was improved. .. _pdb++: https://pypi.org/project/pdbpp/ - `4875 <https://github.com/pytest-dev/pytest/issues/4875>`_: The `testpaths <https://docs.pytest.org/en/latest/reference.htmlconfval-testpaths>`__ configuration option is now displayed next to the ``rootdir`` and ``inifile`` lines in the pytest header if the option is in effect, i.e., directories or file names were not explicitly passed in the command line. Also, ``inifile`` is only displayed if there's a configuration file, instead of an empty ``inifile:`` string. - `4911 <https://github.com/pytest-dev/pytest/issues/4911>`_: Doctests can be skipped now dynamically using ``pytest.skip()``. - `4920 <https://github.com/pytest-dev/pytest/issues/4920>`_: Internal refactorings have been made in order to make the implementation of the `pytest-subtests <https://github.com/pytest-dev/pytest-subtests>`__ plugin possible, which adds unittest sub-test support and a new ``subtests`` fixture as discussed in `1367 <https://github.com/pytest-dev/pytest/issues/1367>`__. For details on the internal refactorings, please see the details on the related PR. - `4931 <https://github.com/pytest-dev/pytest/issues/4931>`_: pytester's ``LineMatcher`` asserts that the passed lines are a sequence. - `4936 <https://github.com/pytest-dev/pytest/issues/4936>`_: Handle ``-p plug`` after ``-p no:plug``. This can be used to override a blocked plugin (e.g. in "addopts") from the command line etc. - `4951 <https://github.com/pytest-dev/pytest/issues/4951>`_: Output capturing is handled correctly when only capturing via fixtures (capsys, capfs) with ``pdb.set_trace()``. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: ``pytester`` sets ``$HOME`` and ``$USERPROFILE`` to the temporary directory during test runs. This ensures to not load configuration files from the real user's home directory. - `4980 <https://github.com/pytest-dev/pytest/issues/4980>`_: Namespace packages are handled better with ``monkeypatch.syspath_prepend`` and ``testdir.syspathinsert`` (via ``pkg_resources.fixup_namespace_packages``). - `4993 <https://github.com/pytest-dev/pytest/issues/4993>`_: The stepwise plugin reports status information now. - `5008 <https://github.com/pytest-dev/pytest/issues/5008>`_: If a ``setup.cfg`` file contains ``[tool:pytest]`` and also the no longer supported ``[pytest]`` section, pytest will use ``[tool:pytest]`` ignoring ``[pytest]``. Previously it would unconditionally error out. This makes it simpler for plugins to support old pytest versions. Bug Fixes --------- - `1895 <https://github.com/pytest-dev/pytest/issues/1895>`_: Fix bug where fixtures requested dynamically via ``request.getfixturevalue()`` might be teardown before the requesting fixture. - `4851 <https://github.com/pytest-dev/pytest/issues/4851>`_: pytester unsets ``PYTEST_ADDOPTS`` now to not use outer options with ``testdir.runpytest()``. - `4903 <https://github.com/pytest-dev/pytest/issues/4903>`_: Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. - `4928 <https://github.com/pytest-dev/pytest/issues/4928>`_: Fix line offsets with ``ScopeMismatch`` errors. - `4957 <https://github.com/pytest-dev/pytest/issues/4957>`_: ``-p no:plugin`` is handled correctly for default (internal) plugins now, e.g. with ``-p no:capture``. Previously they were loaded (imported) always, making e.g. the ``capfd`` fixture available. - `4968 <https://github.com/pytest-dev/pytest/issues/4968>`_: The pdb ``quit`` command is handled properly when used after the ``debug`` command with `pdb++`_. .. _pdb++: https://pypi.org/project/pdbpp/ - `4975 <https://github.com/pytest-dev/pytest/issues/4975>`_: Fix the interpretation of ``-qq`` option where it was being considered as ``-v`` instead. - `4978 <https://github.com/pytest-dev/pytest/issues/4978>`_: ``outcomes.Exit`` is not swallowed in ``assertrepr_compare`` anymore. - `4988 <https://github.com/pytest-dev/pytest/issues/4988>`_: Close logging's file handler explicitly when the session finishes. - `5003 <https://github.com/pytest-dev/pytest/issues/5003>`_: Fix line offset with mark collection error (off by one). Improved Documentation ---------------------- - `4974 <https://github.com/pytest-dev/pytest/issues/4974>`_: Update docs for ``pytest_cmdline_parse`` hook to note availability liminations Trivial/Internal Changes ------------------------ - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: ``pluggy>=0.9`` is now required. - `4815 <https://github.com/pytest-dev/pytest/issues/4815>`_: ``funcsigs>=1.0`` is now required for Python 2.7. - `4829 <https://github.com/pytest-dev/pytest/issues/4829>`_: Some left-over internal code related to ``yield`` tests has been removed. - `4890 <https://github.com/pytest-dev/pytest/issues/4890>`_: Remove internally unused ``anypython`` fixture from the pytester plugin. - `4912 <https://github.com/pytest-dev/pytest/issues/4912>`_: Remove deprecated Sphinx directive, ``add_description_unit()``, pin sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0. - `4913 <https://github.com/pytest-dev/pytest/issues/4913>`_: Fix pytest tests invocation with custom ``PYTHONPATH``. - `4965 <https://github.com/pytest-dev/pytest/issues/4965>`_: New ``pytest_report_to_serializable`` and ``pytest_report_from_serializable`` **experimental** hooks. These hooks will be used by ``pytest-xdist``, ``pytest-subtests``, and the replacement for resultlog to serialize and customize reports. They are experimental, meaning that their details might change or even be removed completely in future patch releases without warning. Feedback is welcome from plugin authors and users alike. - `4987 <https://github.com/pytest-dev/pytest/issues/4987>`_: ``Collector.repr_failure`` respects the ``--tb`` option, but only defaults to ``short`` now (with ``auto``). ``` ### 4.3.1 ``` ========================= Bug Fixes --------- - `4810 <https://github.com/pytest-dev/pytest/issues/4810>`_: Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed. - `4861 <https://github.com/pytest-dev/pytest/issues/4861>`_: Improve validation of contents written to captured output so it behaves the same as when capture is disabled. - `4898 <https://github.com/pytest-dev/pytest/issues/4898>`_: Fix ``AttributeError: FixtureRequest has no 'confg' attribute`` bug in ``testdir.copy_example``. Trivial/Internal Changes ------------------------ - `4768 <https://github.com/pytest-dev/pytest/issues/4768>`_: Avoid pkg_resources import at the top-level. ``` ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` ### 4.2.0 ``` ========================= Features -------- - `3094 <https://github.com/pytest-dev/pytest/issues/3094>`_: `Classic xunit-style <https://docs.pytest.org/en/latest/xunit_setup.html>`__ functions and methods now obey the scope of *autouse* fixtures. This fixes a number of surprising issues like ``setup_method`` being called before session-scoped autouse fixtures (see `517 <https://github.com/pytest-dev/pytest/issues/517>`__ for an example). - `4627 <https://github.com/pytest-dev/pytest/issues/4627>`_: Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer support those Python versions. - `4660 <https://github.com/pytest-dev/pytest/issues/4660>`_: The number of *selected* tests now are also displayed when the ``-k`` or ``-m`` flags are used. - `4688 <https://github.com/pytest-dev/pytest/issues/4688>`_: ``pytest_report_teststatus`` hook now can also receive a ``config`` parameter. - `4691 <https://github.com/pytest-dev/pytest/issues/4691>`_: ``pytest_terminal_summary`` hook now can also receive a ``config`` parameter. Bug Fixes --------- - `3547 <https://github.com/pytest-dev/pytest/issues/3547>`_: ``--junitxml`` can emit XML compatible with Jenkins xUnit. ``junit_family`` INI option accepts ``legacy|xunit1``, which produces old style output, and ``xunit2`` that conforms more strictly to https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd - `4280 <https://github.com/pytest-dev/pytest/issues/4280>`_: Improve quitting from pdb, especially with ``--trace``. Using ``q[quit]`` after ``pdb.set_trace()`` will quit pytest also. - `4402 <https://github.com/pytest-dev/pytest/issues/4402>`_: Warning summary now groups warnings by message instead of by test id. This makes the output more compact and better conveys the general idea of how much code is actually generating warnings, instead of how many tests call that code. - `4536 <https://github.com/pytest-dev/pytest/issues/4536>`_: ``monkeypatch.delattr`` handles class descriptors like ``staticmethod``/``classmethod``. - `4649 <https://github.com/pytest-dev/pytest/issues/4649>`_: Restore marks being considered keywords for keyword expressions. - `4653 <https://github.com/pytest-dev/pytest/issues/4653>`_: ``tmp_path`` fixture and other related ones provides resolved path (a.k.a real path) - `4667 <https://github.com/pytest-dev/pytest/issues/4667>`_: ``pytest_terminal_summary`` uses result from ``pytest_report_teststatus`` hook, rather than hardcoded strings. - `4669 <https://github.com/pytest-dev/pytest/issues/4669>`_: Correctly handle ``unittest.SkipTest`` exception containing non-ascii characters on Python 2. - `4680 <https://github.com/pytest-dev/pytest/issues/4680>`_: Ensure the ``tmpdir`` and the ``tmp_path`` fixtures are the same folder. - `4681 <https://github.com/pytest-dev/pytest/issues/4681>`_: Ensure ``tmp_path`` is always a real path. Trivial/Internal Changes ------------------------ - `4643 <https://github.com/pytest-dev/pytest/issues/4643>`_: Use ``a.item()`` instead of the deprecated ``np.asscalar(a)`` in ``pytest.approx``. ``np.asscalar`` has been `deprecated <https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rstnew-deprecations>`__ in ``numpy 1.16.``. - `4657 <https://github.com/pytest-dev/pytest/issues/4657>`_: Copy saferepr from pylib - `4668 <https://github.com/pytest-dev/pytest/issues/4668>`_: The verbose word for expected failures in the teststatus report changes from ``xfail`` to ``XFAIL`` to be consistent with other test outcomes. ``` ### 4.1.1 ``` ========================= Bug Fixes --------- - `2256 <https://github.com/pytest-dev/pytest/issues/2256>`_: Show full repr with ``assert a==b`` and ``-vv``. - `3456 <https://github.com/pytest-dev/pytest/issues/3456>`_: Extend Doctest-modules to ignore mock objects. - `4617 <https://github.com/pytest-dev/pytest/issues/4617>`_: Fixed ``pytest.warns`` bug when context manager is reused (e.g. multiple parametrization). - `4631 <https://github.com/pytest-dev/pytest/issues/4631>`_: Don't rewrite assertion when ``__getattr__`` is broken Improved Documentation ---------------------- - `3375 <https://github.com/pytest-dev/pytest/issues/3375>`_: Document that using ``setup.cfg`` may crash other tools or cause hard to track down problems because it uses a different parser than ``pytest.ini`` or ``tox.ini`` files. Trivial/Internal Changes ------------------------ - `4602 <https://github.com/pytest-dev/pytest/issues/4602>`_: Uninstall ``hypothesis`` in regen tox env. ``` ### 4.1.0 ``` ========================= Removals -------- - `2169 <https://github.com/pytest-dev/pytest/issues/2169>`_: ``pytest.mark.parametrize``: in previous versions, errors raised by id functions were suppressed and changed into warnings. Now the exceptions are propagated, along with a pytest message informing the node, parameter value and index where the exception occurred. - `3078 <https://github.com/pytest-dev/pytest/issues/3078>`_: Remove legacy internal warnings system: ``config.warn``, ``Node.warn``. The ``pytest_logwarning`` now issues a warning when implemented. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlconfig-warn-and-node-warn>`__ on information on how to update your code. - `3079 <https://github.com/pytest-dev/pytest/issues/3079>`_: Removed support for yield tests - they are fundamentally broken because they don't support fixtures properly since collection and test execution were separated. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlyield-tests>`__ on information on how to update your code. - `3082 <https://github.com/pytest-dev/pytest/issues/3082>`_: Removed support for applying marks directly to values in ``pytest.mark.parametrize``. Use ``pytest.param`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmarks-in-pytest-mark-parametrize>`__ on information on how to update your code. - `3083 <https://github.com/pytest-dev/pytest/issues/3083>`_: Removed ``Metafunc.addcall``. This was the predecessor mechanism to ``pytest.mark.parametrize``. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmetafunc-addcall>`__ on information on how to update your code. - `3085 <https://github.com/pytest-dev/pytest/issues/3085>`_: Removed support for passing strings to ``pytest.main``. Now, always pass a list of strings instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpassing-command-line-string-to-pytest-main>`__ on information on how to update your code. - `3086 <https://github.com/pytest-dev/pytest/issues/3086>`_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. - `3616 <https://github.com/pytest-dev/pytest/issues/3616>`_: Removed the deprecated compat properties for ``node.Class/Function/Module`` - use ``pytest.Class/Function/Module`` now. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlinternal-classes-accessed-through-node>`__ on information on how to update your code. - `4421 <https://github.com/pytest-dev/pytest/issues/4421>`_: Removed the implementation of the ``pytest_namespace`` hook. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-namespace>`__ on information on how to update your code. - `4489 <https://github.com/pytest-dev/pytest/issues/4489>`_: Removed ``request.cached_setup``. This was the predecessor mechanism to modern fixtures. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcached-setup>`__ on information on how to update your code. - `4535 <https://github.com/pytest-dev/pytest/issues/4535>`_: Removed the deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago. - `4543 <https://github.com/pytest-dev/pytest/issues/4543>`_: Removed support to define fixtures using the ``pytest_funcarg__`` prefix. Use the ``pytest.fixture`` decorator instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-funcarg-prefix>`__ on information on how to update your code. - `4545 <https://github.com/pytest-dev/pytest/issues/4545>`_: Calling fixtures directly is now always an error instead of a warning. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcalling-fixtures-directly>`__ on information…
1: Initial Update r=aragilar a=pyup-bot This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch. Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR. ### Update [mock](https://pypi.org/project/mock) from **3.0.5** to **3.0.5**. <details> <summary>Changelog</summary> ### 3.0.5 ``` ----- - Issue 31855: :func:`unittest.mock.mock_open` results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. ``` ### 3.0.4 ``` ----- - Include the license, readme and changelog in the source distribution. ``` ### 3.0.3 ``` ----- - Fixed patching of dictionaries, when specifying the target with a unicode on Python 2. ``` ### 3.0.2 ``` ----- - Add missing ``funcsigs`` dependency on Python 2. ``` ### 3.0.1 ``` ----- - Fix packaging issue where ``six`` was missed as a dependency. ``` ### 3.0.0 ``` ----- - Issue 35226: Recursively check arguments when testing for equality of :class:`unittest.mock.call` objects and add note that tracking of parameters used to create ancestors of mocks in ``mock_calls`` is not possible. - Issue 31177: Fix bug that prevented using :meth:`reset_mock <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes - Issue 26704: Added test demonstrating double-patching of an instance method. Patch by Anthony Sottile. - Issue 35500: Write expected and actual call parameters on separate lines in :meth:`unittest.mock.Mock.assert_called_with` assertion errors. Contributed by Susan Su. - Issue 35330: When a :class:`Mock` instance was used to wrap an object, if `side_effect` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. - Issue 30541: Add new function to seal a mock and prevent the automatically creation of child mocks. Patch by Mario Corchero. - Issue 35022: :class:`unittest.mock.MagicMock` now supports the ``__fspath__`` method (from :class:`os.PathLike`). - Issue 33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` magic method. - Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. - Issue 36366: Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` object will now return `None` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch byKarthikeyan Singaravelan. - Issue 35357: Internal attributes' names of unittest.mock._Call and unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with _mock_ in order to prevent clashes with widely used object attributes. Fixed minor typo in test function name. - Issue 20239: Allow repeated assignment deletion of :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. - Issue 35082: Don't return deleted attributes when calling dir on a :class:`unittest.mock.Mock`. - Issue 0: Improved an error message when mock assert_has_calls fails. - Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod` to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. - Issue 21478: Calls to a child function created with :func:`unittest.mock.create_autospec` should propagate to the parent. Patch by Karthikeyan Singaravelan. - Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over the file contents. Patch by Tony Flury. - Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects. Contributed by Kumar Akshay. - Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get signature. Patch by Karthikeyan Singaravelan. - Issue 35047: ``unittest.mock`` now includes mock calls in exception messages if ``assert_not_called``, ``assert_called_once``, or ``assert_called_once_with`` fails. Patch by Petter Strandmark. - Issue 28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once. - Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY. - Issue 20804: The unittest.mock.sentinel attributes now preserve their identity when they are copied or pickled. - Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter anymore. Patch written by Jiajun Huang. - Issue 26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. - Issue 21271: New keyword only parameters in reset_mock call. - Issue 26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. - Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer. ``` ### 2.0.0 ``` ----------------- - Issue 26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha. - Issue 22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully. - Issue 24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur. - Issue 23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill. - Issue 21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3. - Issue 18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst. - Issue 23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi - Issue 23310: Fix MagicMock's initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim. - Issue 23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl. - Issue 23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. - Issue 23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in issue 21408 they are redundant. *** NOT BACKPORTED *** - Issue 21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes. - Issue 21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests. - Issue 21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called. - Issue 21238: New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of an attribute startswith assert or assret. - Issue 21239: patch.stopall() didn't work deterministically when the same name was patched more than once. - Issue 21222: Passing name keyword argument to mock.create_autospec now works. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter. - Issue 20189: unittest.mock now no longer assumes that any object for which it could get an inspect.Signature is a callable written in Python. Fix courtesy of Michael Foord. - Issue 17467: add readline and readlines support to mock_open in unittest.mock. - Issue 17015: When it has a spec, a Mock object now inspects its signature when matching calls, so that arguments can be matched positionally or by name. - Issue 15323: improve failure message of Mock.assert_called_once_with - Issue 14857: fix regression in references to PEP 3135 implicit __class__ closure variable (Reopens issue 12370) - Issue 14295: Add unittest.mock ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/mock - Changelog: https://pyup.io/changelogs/mock/ - Docs: http://mock.readthedocs.org/en/latest/ </details> ### Update [sphinx_rtd_theme](https://pypi.org/project/sphinx_rtd_theme) from **0.4.3** to **0.4.3**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/sphinx-rtd-theme - Repo: https://github.com/rtfd/sphinx_rtd_theme/ </details> ### Update [pytest](https://pypi.org/project/pytest) from **5.2.1** to **5.2.1**. <details> <summary>Changelog</summary> ### 5.2.1 ``` ========================= Bug Fixes --------- - `5902 <https://github.com/pytest-dev/pytest/issues/5902>`_: Fix warnings about deprecated ``cmp`` attribute in ``attrs>=19.2``. ``` ### 5.2.0 ``` ========================= Deprecations ------------ - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: Passing arguments to pytest.fixture() as positional arguments is deprecated - pass them as a keyword argument instead. Features -------- - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: The ``scope`` parameter of ``pytest.fixture`` can now be a callable that receives the fixture name and the ``config`` object as keyword-only parameters. See `the docs <https://docs.pytest.org/en/latest/fixture.htmldynamic-scope>`__ for more information. - `5764 <https://github.com/pytest-dev/pytest/issues/5764>`_: New behavior of the ``--pastebin`` option: failures to connect to the pastebin server are reported, without failing the pytest run Bug Fixes --------- - `5806 <https://github.com/pytest-dev/pytest/issues/5806>`_: Fix "lexer" being used when uploading to bpaste.net from ``--pastebin`` to "text". - `5884 <https://github.com/pytest-dev/pytest/issues/5884>`_: Fix ``--setup-only`` and ``--setup-show`` for custom pytest items. Trivial/Internal Changes ------------------------ - `5056 <https://github.com/pytest-dev/pytest/issues/5056>`_: The HelpFormatter uses ``py.io.get_terminal_width`` for better width detection. ``` ### 5.1.3 ``` ========================= Bug Fixes --------- - `5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. - `5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. - `5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase characters (introduced by 5792). ``` ### 5.1.2 ``` ========================= Bug Fixes --------- - `2270 <https://github.com/pytest-dev/pytest/issues/2270>`_: Fixed ``self`` reference in function-scoped fixtures defined plugin classes: previously ``self`` would be a reference to a *test* class, not the *plugin* class. - `570 <https://github.com/pytest-dev/pytest/issues/570>`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization. - `5782 <https://github.com/pytest-dev/pytest/issues/5782>`_: Fix decoding error when printing an error response from ``--pastebin``. - `5786 <https://github.com/pytest-dev/pytest/issues/5786>`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like ``pytest-xdist`` to display them properly. - `5792 <https://github.com/pytest-dev/pytest/issues/5792>`_: Windows: Fix error that occurs in certain circumstances when loading ``conftest.py`` from a working directory that has casing other than the one stored in the filesystem (e.g., ``c:\test`` instead of ``C:\test``). ``` ### 5.1.1 ``` ========================= Bug Fixes --------- - `5751 <https://github.com/pytest-dev/pytest/issues/5751>`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1. ``` ### 5.1.0 ``` ========================= Removals -------- - `5180 <https://github.com/pytest-dev/pytest/issues/5180>`_: As per our policy, the following features have been deprecated in the 4.X series and are now removed: * ``Request.getfuncargvalue``: use ``Request.getfixturevalue`` instead. * ``pytest.raises`` and ``pytest.warns`` no longer support strings as the second argument. * ``message`` parameter of ``pytest.raises``. * ``pytest.raises``, ``pytest.warns`` and ``ParameterSet.param`` now use native keyword-only syntax. This might change the exception message from previous versions, but they still raise ``TypeError`` on unknown keyword arguments as before. * ``pytest.config`` global variable. * ``tmpdir_factory.ensuretemp`` method. * ``pytest_logwarning`` hook. * ``RemovedInPytest4Warning`` warning type. * ``request`` is now a reserved name for fixtures. For more information consult `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ in the docs. - `5565 <https://github.com/pytest-dev/pytest/issues/5565>`_: Removed unused support code for `unittest2 <https://pypi.org/project/unittest2/>`__. The ``unittest2`` backport module is no longer necessary since Python 3.3+, and the small amount of code in pytest to support it also doesn't seem to be used: after removed, all tests still pass unchanged. Although our policy is to introduce a deprecation period before removing any features or support for third party libraries, because this code is apparently not used at all (even if ``unittest2`` is used by a test suite executed by pytest), it was decided to remove it in this release. If you experience a regression because of this, please `file an issue <https://github.com/pytest-dev/pytest/issues/new>`__. - `5615 <https://github.com/pytest-dev/pytest/issues/5615>`_: ``pytest.fail``, ``pytest.xfail`` and ``pytest.skip`` no longer support bytes for the message argument. This was supported for Python 2 where it was tempting to use ``"message"`` instead of ``u"message"``. Python 3 code is unlikely to pass ``bytes`` to these functions. If you do, please decode it to an ``str`` beforehand. Features -------- - `5564 <https://github.com/pytest-dev/pytest/issues/5564>`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``. - `5576 <https://github.com/pytest-dev/pytest/issues/5576>`_: New `NUMBER <https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options>`__ option for doctests to ignore irrelevant differences in floating-point numbers. Inspired by Sébastien Boisgérault's `numtest <https://github.com/boisgera/numtest>`__ extension for doctest. Improvements ------------ - `5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now includes a timestamp and hostname in the testsuite tag. - `5707 <https://github.com/pytest-dev/pytest/issues/5707>`_: Time taken to run the test suite now includes a human-readable representation when it takes over 60 seconds, for example:: ===== 2 failed in 102.70s (0:01:42) ===== Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5115 <https://github.com/pytest-dev/pytest/issues/5115>`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest. - `5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root element. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5537 <https://github.com/pytest-dev/pytest/issues/5537>`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the standard library on Python 3.8+. - `5578 <https://github.com/pytest-dev/pytest/issues/5578>`_: Improve type checking for some exception-raising functions (``pytest.xfail``, ``pytest.skip``, etc) so they provide better error messages when users meant to use marks (for example ``pytest.xfail`` instead of ``pytest.mark.xfail``). - `5606 <https://github.com/pytest-dev/pytest/issues/5606>`_: Fixed internal error when test functions were patched with objects that cannot be compared for truth values against others, like ``numpy`` arrays. - `5634 <https://github.com/pytest-dev/pytest/issues/5634>`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases. This makes ``unittest`` cases handle ``quit`` from pytest's pdb correctly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. - `5701 <https://github.com/pytest-dev/pytest/issues/5701>`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``. - `5734 <https://github.com/pytest-dev/pytest/issues/5734>`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions. Improved Documentation ---------------------- - `5669 <https://github.com/pytest-dev/pytest/issues/5669>`_: Add docstring for ``Testdir.copy_example``. Trivial/Internal Changes ------------------------ - `5095 <https://github.com/pytest-dev/pytest/issues/5095>`_: XML files of the ``xunit2`` family are now validated against the schema by pytest's own test suite to avoid future regressions. - `5516 <https://github.com/pytest-dev/pytest/issues/5516>`_: Cache node splitting function which can improve collection performance in very large test suites. - `5603 <https://github.com/pytest-dev/pytest/issues/5603>`_: Simplified internal ``SafeRepr`` class and removed some dead code. - `5664 <https://github.com/pytest-dev/pytest/issues/5664>`_: When invoking pytest's own testsuite with ``PYTHONDONTWRITEBYTECODE=1``, the ``test_xfail_handling`` test no longer fails. - `5684 <https://github.com/pytest-dev/pytest/issues/5684>`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.). ``` ### 5.0.1 ``` ========================= Bug Fixes --------- - `5479 <https://github.com/pytest-dev/pytest/issues/5479>`_: Improve quoting in ``raises`` match failure message. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. Improved Documentation ---------------------- - `5517 <https://github.com/pytest-dev/pytest/issues/5517>`_: Improve "Declaring new hooks" section in chapter "Writing Plugins" ``` ### 5.0.0 ``` ========================= Important --------- This release is a Python3.5+ only release. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Removals -------- - `1149 <https://github.com/pytest-dev/pytest/issues/1149>`_: Pytest no longer accepts prefixes of command-line arguments, for example typing ``pytest --doctest-mod`` inplace of ``--doctest-modules``. This was previously allowed where the ``ArgumentParser`` thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues `1149 <https://github.com/pytest-dev/pytest/issues/1149>`__, `3413 <https://github.com/pytest-dev/pytest/issues/3413>`__, and `4009 <https://github.com/pytest-dev/pytest/issues/4009>`__. - `5402 <https://github.com/pytest-dev/pytest/issues/5402>`_: **PytestDeprecationWarning are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestDeprecationWarning`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 5.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``5.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning But this will stop working when pytest ``5.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `5402 <https://github.com/pytest-dev/pytest/issues/5402>`__. - `5412 <https://github.com/pytest-dev/pytest/issues/5412>`_: ``ExceptionInfo`` objects (returned by ``pytest.raises``) now have the same ``str`` representation as ``repr``, which avoids some confusion when users use ``print(e)`` to inspect the object. This means code like: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e) Needs to be changed to: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value) Deprecations ------------ - `4488 <https://github.com/pytest-dev/pytest/issues/4488>`_: The removal of the ``--result-log`` option and module has been postponed to (tentatively) pytest 6.0 as the team has not yet got around to implement a good alternative for it. - `466 <https://github.com/pytest-dev/pytest/issues/466>`_: The ``funcargnames`` attribute has been an alias for ``fixturenames`` since pytest 2.3, and is now deprecated in code too. Features -------- - `3457 <https://github.com/pytest-dev/pytest/issues/3457>`_: New `pytest_assertion_pass <https://docs.pytest.org/en/latest/reference.html_pytest.hookspec.pytest_assertion_pass>`__ hook, called with context information when an assertion *passes*. This hook is still **experimental** so use it with caution. - `5440 <https://github.com/pytest-dev/pytest/issues/5440>`_: The `faulthandler <https://docs.python.org/3/library/faulthandler.html>`__ standard library module is now enabled by default to help users diagnose crashes in C modules. This functionality was provided by integrating the external `pytest-faulthandler <https://github.com/pytest-dev/pytest-faulthandler>`__ plugin into the core, so users should remove that plugin from their requirements if used. For more information see the docs: https://docs.pytest.org/en/latest/usage.htmlfault-handler - `5452 <https://github.com/pytest-dev/pytest/issues/5452>`_: When warnings are configured as errors, pytest warnings now appear as originating from ``pytest.`` instead of the internal ``_pytest.warning_types.`` module. - `5125 <https://github.com/pytest-dev/pytest/issues/5125>`_: ``Session.exitcode`` values are now coded in ``pytest.ExitCode``, an ``IntEnum``. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution. The team doesn't expect this change to break test suites or plugins in general, except in esoteric/specific scenarios. **pytest-xdist** users should upgrade to ``1.29.0`` or later, as ``pytest-xdist`` required a compatibility fix because of this change. Bug Fixes --------- - `1403 <https://github.com/pytest-dev/pytest/issues/1403>`_: Switch from ``imp`` to ``importlib``. - `1671 <https://github.com/pytest-dev/pytest/issues/1671>`_: The name of the ``.pyc`` files cached by the assertion writer now includes the pytest version to avoid stale caches. - `2761 <https://github.com/pytest-dev/pytest/issues/2761>`_: Honor PEP 235 on case-insensitive file systems. - `5078 <https://github.com/pytest-dev/pytest/issues/5078>`_: Test module is no longer double-imported when using ``--pyargs``. - `5260 <https://github.com/pytest-dev/pytest/issues/5260>`_: Improved comparison of byte strings. When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff It now shows the actual ascii representation instead, which is often more useful:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff - `5335 <https://github.com/pytest-dev/pytest/issues/5335>`_: Colorize level names when the level in the logging format is formatted using '%(levelname).Xs' (truncated fixed width alignment), where X is an integer. - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5432 <https://github.com/pytest-dev/pytest/issues/5432>`_: Prevent "already imported" warnings from assertion rewriter when invoking pytest in-process multiple times. - `5433 <https://github.com/pytest-dev/pytest/issues/5433>`_: Fix assertion rewriting in packages (``__init__.py``). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. Improved Documentation ---------------------- - `5315 <https://github.com/pytest-dev/pytest/issues/5315>`_: Expand docs on mocking classes and dictionaries with ``monkeypatch``. - `5416 <https://github.com/pytest-dev/pytest/issues/5416>`_: Fix PytestUnknownMarkWarning in run/skip example. ``` ### 4.6.5 ``` ========================= Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5478 <https://github.com/pytest-dev/pytest/issues/5478>`_: Fix encode error when using unicode strings in exceptions with ``pytest.raises``. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. ``` ### 4.6.4 ``` ========================= Bug Fixes --------- - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. ``` ### 4.6.3 ``` ========================= Bug Fixes --------- - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. ``` ### 4.6.2 ``` ========================= Bug Fixes --------- - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. ``` ### 4.6.1 ``` ========================= Bug Fixes --------- - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5358 <https://github.com/pytest-dev/pytest/issues/5358>`_: Fix assertion rewriting of ``all()`` calls to deal with non-generators. ``` ### 4.6.0 ``` ========================= Important --------- The ``4.6.X`` series will be the last series to support **Python 2 and Python 3.4**. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Features -------- - `4559 <https://github.com/pytest-dev/pytest/issues/4559>`_: Added the ``junit_log_passing_tests`` ini value which can be used to enable or disable logging of passing test output in the Junit XML file. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: pytester's ``testdir.spawn`` uses ``tmpdir`` as HOME/USERPROFILE directory. - `5062 <https://github.com/pytest-dev/pytest/issues/5062>`_: Unroll calls to ``all`` to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions. - `5063 <https://github.com/pytest-dev/pytest/issues/5063>`_: Switch from ``pkg_resources`` to ``importlib-metadata`` for entrypoint detection for improved performance and import time. - `5091 <https://github.com/pytest-dev/pytest/issues/5091>`_: The output for ini options in ``--help`` has been improved. - `5269 <https://github.com/pytest-dev/pytest/issues/5269>`_: ``pytest.importorskip`` includes the ``ImportError`` now in the default ``reason``. - `5311 <https://github.com/pytest-dev/pytest/issues/5311>`_: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter. - `5312 <https://github.com/pytest-dev/pytest/issues/5312>`_: Improved formatting of multiline log messages in Python 3. Bug Fixes --------- - `2064 <https://github.com/pytest-dev/pytest/issues/2064>`_: The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now. - `4908 <https://github.com/pytest-dev/pytest/issues/4908>`_: The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``). - `5036 <https://github.com/pytest-dev/pytest/issues/5036>`_: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized. - `5256 <https://github.com/pytest-dev/pytest/issues/5256>`_: Handle internal error due to a lone surrogate unicode character not being representable in Jython. - `5257 <https://github.com/pytest-dev/pytest/issues/5257>`_: Ensure that ``sys.stdout.mode`` does not include ``'b'`` as it is a text stream. - `5278 <https://github.com/pytest-dev/pytest/issues/5278>`_: Pytest's internal python plugin can be disabled using ``-p no:python`` again. - `5286 <https://github.com/pytest-dev/pytest/issues/5286>`_: Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option not working when using a list of test IDs in parametrized tests. - `5330 <https://github.com/pytest-dev/pytest/issues/5330>`_: Show the test module being collected when emitting ``PytestCollectionWarning`` messages for test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem. - `5333 <https://github.com/pytest-dev/pytest/issues/5333>`_: Fix regression in 4.5.0 with ``--lf`` not re-running all tests with known failures from non-selected tests. Improved Documentation ---------------------- - `5250 <https://github.com/pytest-dev/pytest/issues/5250>`_: Expand docs on use of ``setenv`` and ``delenv`` with ``monkeypatch``. ``` ### 4.5.0 ``` ========================= Features -------- - `4826 <https://github.com/pytest-dev/pytest/issues/4826>`_: A warning is now emitted when unknown marks are used as a decorator. This is often due to a typo, which can lead to silently broken tests. - `4907 <https://github.com/pytest-dev/pytest/issues/4907>`_: Show XFail reason as part of JUnitXML message field. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: Messages from crash reports are displayed within test summaries now, truncated to the terminal width. - `5023 <https://github.com/pytest-dev/pytest/issues/5023>`_: New flag ``--strict-markers`` that triggers an error when unknown markers (e.g. those not registered using the `markers option`_ in the configuration file) are used in the test suite. The existing ``--strict`` option has the same behavior currently, but can be augmented in the future for additional checks. .. _`markers option`: https://docs.pytest.org/en/latest/reference.htmlconfval-markers - `5026 <https://github.com/pytest-dev/pytest/issues/5026>`_: Assertion failure messages for sequences and dicts contain the number of different items now. - `5034 <https://github.com/pytest-dev/pytest/issues/5034>`_: Improve reporting with ``--lf`` and ``--ff`` (run-last-failure). - `5035 <https://github.com/pytest-dev/pytest/issues/5035>`_: The ``--cache-show`` option/action accepts an optional glob to show only matching cache entries. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: Standard input (stdin) can be given to pytester's ``Testdir.run()`` and ``Testdir.popen()``. - `5068 <https://github.com/pytest-dev/pytest/issues/5068>`_: The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. - `5108 <https://github.com/pytest-dev/pytest/issues/5108>`_: The short test summary is displayed after passes with output (``-rP``). - `5172 <https://github.com/pytest-dev/pytest/issues/5172>`_: The ``--last-failed`` (``--lf``) option got smarter and will now skip entire files if all tests of that test file have passed in previous runs, greatly speeding up collection. - `5177 <https://github.com/pytest-dev/pytest/issues/5177>`_: Introduce new specific warning ``PytestWarning`` subclasses to make it easier to filter warnings based on the class, rather than on the message. The new subclasses are: * ``PytestAssertRewriteWarning`` * ``PytestCacheWarning`` * ``PytestCollectionWarning`` * ``PytestConfigWarning`` * ``PytestUnhandledCoroutineWarning`` * ``PytestUnknownMarkWarning`` - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: New ``record_testsuite_property`` session-scoped fixture allows users to log ``<property>`` tags at the ``testsuite`` level with the ``junitxml`` plugin. The generated XML is compatible with the latest xunit standard, contrary to the properties recorded by ``record_property`` and ``record_xml_attribute``. - `5214 <https://github.com/pytest-dev/pytest/issues/5214>`_: The default logging format has been changed to improve readability. Here is an example of a previous logging message:: test_log_cli_enabled_disabled.py 3 CRITICAL critical message logged by test This has now become:: CRITICAL root:test_log_cli_enabled_disabled.py:3 critical message logged by test The formatting can be changed through the `log_format <https://docs.pytest.org/en/latest/reference.htmlconfval-log_format>`__ configuration option. - `5220 <https://github.com/pytest-dev/pytest/issues/5220>`_: ``--fixtures`` now also shows fixture scope for scopes other than ``"function"``. Bug Fixes --------- - `5113 <https://github.com/pytest-dev/pytest/issues/5113>`_: Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. - `5144 <https://github.com/pytest-dev/pytest/issues/5144>`_: With usage errors ``exitstatus`` is set to ``EXIT_USAGEERROR`` in the ``pytest_sessionfinish`` hook now as expected. - `5235 <https://github.com/pytest-dev/pytest/issues/5235>`_: ``outcome.exit`` is not used with ``EOF`` in the pdb wrapper anymore, but only with ``quit``. Improved Documentation ---------------------- - `4935 <https://github.com/pytest-dev/pytest/issues/4935>`_: Expand docs on registering marks and the effect of ``--strict``. Trivial/Internal Changes ------------------------ - `4942 <https://github.com/pytest-dev/pytest/issues/4942>`_: ``logging.raiseExceptions`` is not set to ``False`` anymore. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: pytest now depends on `wcwidth <https://pypi.org/project/wcwidth>`__ to properly track unicode character sizes for more precise terminal output. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: pytester's ``Testdir.popen()`` uses ``stdout`` and ``stderr`` via keyword arguments with defaults now (``subprocess.PIPE``). - `5069 <https://github.com/pytest-dev/pytest/issues/5069>`_: The code for the short test summary in the terminal was moved to the terminal plugin. - `5082 <https://github.com/pytest-dev/pytest/issues/5082>`_: Improved validation of kwargs for various methods in the pytester plugin. - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: ``record_property`` now emits a ``PytestWarning`` when used with ``junit_family=xunit2``: the fixture generates ``property`` tags as children of ``testcase``, which is not permitted according to the most `recent schema <https://github.com/jenkinsci/xunit-plugin/blob/master/ src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd>`__. - `5239 <https://github.com/pytest-dev/pytest/issues/5239>`_: Pin ``pluggy`` to ``< 1.0`` so we don't update to ``1.0`` automatically when it gets released: there are planned breaking changes, and we want to ensure pytest properly supports ``pluggy 1.0``. ``` ### 4.4.2 ``` ========================= Bug Fixes --------- - `5089 <https://github.com/pytest-dev/pytest/issues/5089>`_: Fix crash caused by error in ``__repr__`` function with both ``showlocals`` and verbose output enabled. - `5139 <https://github.com/pytest-dev/pytest/issues/5139>`_: Eliminate core dependency on 'terminal' plugin. - `5229 <https://github.com/pytest-dev/pytest/issues/5229>`_: Require ``pluggy>=0.11.0`` which reverts a dependency to ``importlib-metadata`` added in ``0.10.0``. The ``importlib-metadata`` package cannot be imported when installed as an egg and causes issues when relying on ``setup.py`` to install test dependencies. Improved Documentation ---------------------- - `5171 <https://github.com/pytest-dev/pytest/issues/5171>`_: Doc: ``pytest_ignore_collect``, ``pytest_collect_directory``, ``pytest_collect_file`` and ``pytest_pycollect_makemodule`` hooks's 'path' parameter documented type is now ``py.path.local`` - `5188 <https://github.com/pytest-dev/pytest/issues/5188>`_: Improve help for ``--runxfail`` flag. Trivial/Internal Changes ------------------------ - `5182 <https://github.com/pytest-dev/pytest/issues/5182>`_: Removed internal and unused ``_pytest.deprecated.MARK_INFO_ATTRIBUTE``. ``` ### 4.4.1 ``` ========================= Bug Fixes --------- - `5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture. - `5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0. - `5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``. - `5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used. ``` ### 4.4.0 ``` ========================= Features -------- - `2224 <https://github.com/pytest-dev/pytest/issues/2224>`_: ``async`` test functions are skipped and a warning is emitted when a suitable async plugin is not installed (such as ``pytest-asyncio`` or ``pytest-trio``). Previously ``async`` functions would not execute at all but still be marked as "passed". - `2482 <https://github.com/pytest-dev/pytest/issues/2482>`_: Include new ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option to disable ascii-escaping in parametrized values. This may cause a series of problems and as the name makes clear, use at your own risk. - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: The ``-p`` option can now be used to early-load plugins also by entry-point name, instead of just by module name. This makes it possible to early load external plugins like ``pytest-cov`` in the command-line:: pytest -p pytest_cov - `4855 <https://github.com/pytest-dev/pytest/issues/4855>`_: The ``--pdbcls`` option handles classes via module attributes now (e.g. ``pdb:pdb.Pdb`` with `pdb++`_), and its validation was improved. .. _pdb++: https://pypi.org/project/pdbpp/ - `4875 <https://github.com/pytest-dev/pytest/issues/4875>`_: The `testpaths <https://docs.pytest.org/en/latest/reference.htmlconfval-testpaths>`__ configuration option is now displayed next to the ``rootdir`` and ``inifile`` lines in the pytest header if the option is in effect, i.e., directories or file names were not explicitly passed in the command line. Also, ``inifile`` is only displayed if there's a configuration file, instead of an empty ``inifile:`` string. - `4911 <https://github.com/pytest-dev/pytest/issues/4911>`_: Doctests can be skipped now dynamically using ``pytest.skip()``. - `4920 <https://github.com/pytest-dev/pytest/issues/4920>`_: Internal refactorings have been made in order to make the implementation of the `pytest-subtests <https://github.com/pytest-dev/pytest-subtests>`__ plugin possible, which adds unittest sub-test support and a new ``subtests`` fixture as discussed in `1367 <https://github.com/pytest-dev/pytest/issues/1367>`__. For details on the internal refactorings, please see the details on the related PR. - `4931 <https://github.com/pytest-dev/pytest/issues/4931>`_: pytester's ``LineMatcher`` asserts that the passed lines are a sequence. - `4936 <https://github.com/pytest-dev/pytest/issues/4936>`_: Handle ``-p plug`` after ``-p no:plug``. This can be used to override a blocked plugin (e.g. in "addopts") from the command line etc. - `4951 <https://github.com/pytest-dev/pytest/issues/4951>`_: Output capturing is handled correctly when only capturing via fixtures (capsys, capfs) with ``pdb.set_trace()``. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: ``pytester`` sets ``$HOME`` and ``$USERPROFILE`` to the temporary directory during test runs. This ensures to not load configuration files from the real user's home directory. - `4980 <https://github.com/pytest-dev/pytest/issues/4980>`_: Namespace packages are handled better with ``monkeypatch.syspath_prepend`` and ``testdir.syspathinsert`` (via ``pkg_resources.fixup_namespace_packages``). - `4993 <https://github.com/pytest-dev/pytest/issues/4993>`_: The stepwise plugin reports status information now. - `5008 <https://github.com/pytest-dev/pytest/issues/5008>`_: If a ``setup.cfg`` file contains ``[tool:pytest]`` and also the no longer supported ``[pytest]`` section, pytest will use ``[tool:pytest]`` ignoring ``[pytest]``. Previously it would unconditionally error out. This makes it simpler for plugins to support old pytest versions. Bug Fixes --------- - `1895 <https://github.com/pytest-dev/pytest/issues/1895>`_: Fix bug where fixtures requested dynamically via ``request.getfixturevalue()`` might be teardown before the requesting fixture. - `4851 <https://github.com/pytest-dev/pytest/issues/4851>`_: pytester unsets ``PYTEST_ADDOPTS`` now to not use outer options with ``testdir.runpytest()``. - `4903 <https://github.com/pytest-dev/pytest/issues/4903>`_: Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. - `4928 <https://github.com/pytest-dev/pytest/issues/4928>`_: Fix line offsets with ``ScopeMismatch`` errors. - `4957 <https://github.com/pytest-dev/pytest/issues/4957>`_: ``-p no:plugin`` is handled correctly for default (internal) plugins now, e.g. with ``-p no:capture``. Previously they were loaded (imported) always, making e.g. the ``capfd`` fixture available. - `4968 <https://github.com/pytest-dev/pytest/issues/4968>`_: The pdb ``quit`` command is handled properly when used after the ``debug`` command with `pdb++`_. .. _pdb++: https://pypi.org/project/pdbpp/ - `4975 <https://github.com/pytest-dev/pytest/issues/4975>`_: Fix the interpretation of ``-qq`` option where it was being considered as ``-v`` instead. - `4978 <https://github.com/pytest-dev/pytest/issues/4978>`_: ``outcomes.Exit`` is not swallowed in ``assertrepr_compare`` anymore. - `4988 <https://github.com/pytest-dev/pytest/issues/4988>`_: Close logging's file handler explicitly when the session finishes. - `5003 <https://github.com/pytest-dev/pytest/issues/5003>`_: Fix line offset with mark collection error (off by one). Improved Documentation ---------------------- - `4974 <https://github.com/pytest-dev/pytest/issues/4974>`_: Update docs for ``pytest_cmdline_parse`` hook to note availability liminations Trivial/Internal Changes ------------------------ - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: ``pluggy>=0.9`` is now required. - `4815 <https://github.com/pytest-dev/pytest/issues/4815>`_: ``funcsigs>=1.0`` is now required for Python 2.7. - `4829 <https://github.com/pytest-dev/pytest/issues/4829>`_: Some left-over internal code related to ``yield`` tests has been removed. - `4890 <https://github.com/pytest-dev/pytest/issues/4890>`_: Remove internally unused ``anypython`` fixture from the pytester plugin. - `4912 <https://github.com/pytest-dev/pytest/issues/4912>`_: Remove deprecated Sphinx directive, ``add_description_unit()``, pin sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0. - `4913 <https://github.com/pytest-dev/pytest/issues/4913>`_: Fix pytest tests invocation with custom ``PYTHONPATH``. - `4965 <https://github.com/pytest-dev/pytest/issues/4965>`_: New ``pytest_report_to_serializable`` and ``pytest_report_from_serializable`` **experimental** hooks. These hooks will be used by ``pytest-xdist``, ``pytest-subtests``, and the replacement for resultlog to serialize and customize reports. They are experimental, meaning that their details might change or even be removed completely in future patch releases without warning. Feedback is welcome from plugin authors and users alike. - `4987 <https://github.com/pytest-dev/pytest/issues/4987>`_: ``Collector.repr_failure`` respects the ``--tb`` option, but only defaults to ``short`` now (with ``auto``). ``` ### 4.3.1 ``` ========================= Bug Fixes --------- - `4810 <https://github.com/pytest-dev/pytest/issues/4810>`_: Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed. - `4861 <https://github.com/pytest-dev/pytest/issues/4861>`_: Improve validation of contents written to captured output so it behaves the same as when capture is disabled. - `4898 <https://github.com/pytest-dev/pytest/issues/4898>`_: Fix ``AttributeError: FixtureRequest has no 'confg' attribute`` bug in ``testdir.copy_example``. Trivial/Internal Changes ------------------------ - `4768 <https://github.com/pytest-dev/pytest/issues/4768>`_: Avoid pkg_resources import at the top-level. ``` ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` ### 4.2.0 ``` ========================= Features -------- - `3094 <https://github.com/pytest-dev/pytest/issues/3094>`_: `Classic xunit-style <https://docs.pytest.org/en/latest/xunit_setup.html>`__ functions and methods now obey the scope of *autouse* fixtures. This fixes a number of surprising issues like ``setup_method`` being called before session-scoped autouse fixtures (see `517 <https://github.com/pytest-dev/pytest/issues/517>`__ for an example). - `4627 <https://github.com/pytest-dev/pytest/issues/4627>`_: Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer support those Python versions. - `4660 <https://github.com/pytest-dev/pytest/issues/4660>`_: The number of *selected* tests now are also displayed when the ``-k`` or ``-m`` flags are used. - `4688 <https://github.com/pytest-dev/pytest/issues/4688>`_: ``pytest_report_teststatus`` hook now can also receive a ``config`` parameter. - `4691 <https://github.com/pytest-dev/pytest/issues/4691>`_: ``pytest_terminal_summary`` hook now can also receive a ``config`` parameter. Bug Fixes --------- - `3547 <https://github.com/pytest-dev/pytest/issues/3547>`_: ``--junitxml`` can emit XML compatible with Jenkins xUnit. ``junit_family`` INI option accepts ``legacy|xunit1``, which produces old style output, and ``xunit2`` that conforms more strictly to https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd - `4280 <https://github.com/pytest-dev/pytest/issues/4280>`_: Improve quitting from pdb, especially with ``--trace``. Using ``q[quit]`` after ``pdb.set_trace()`` will quit pytest also. - `4402 <https://github.com/pytest-dev/pytest/issues/4402>`_: Warning summary now groups warnings by message instead of by test id. This makes the output more compact and better conveys the general idea of how much code is actually generating warnings, instead of how many tests call that code. - `4536 <https://github.com/pytest-dev/pytest/issues/4536>`_: ``monkeypatch.delattr`` handles class descriptors like ``staticmethod``/``classmethod``. - `4649 <https://github.com/pytest-dev/pytest/issues/4649>`_: Restore marks being considered keywords for keyword expressions. - `4653 <https://github.com/pytest-dev/pytest/issues/4653>`_: ``tmp_path`` fixture and other related ones provides resolved path (a.k.a real path) - `4667 <https://github.com/pytest-dev/pytest/issues/4667>`_: ``pytest_terminal_summary`` uses result from ``pytest_report_teststatus`` hook, rather than hardcoded strings. - `4669 <https://github.com/pytest-dev/pytest/issues/4669>`_: Correctly handle ``unittest.SkipTest`` exception containing non-ascii characters on Python 2. - `4680 <https://github.com/pytest-dev/pytest/issues/4680>`_: Ensure the ``tmpdir`` and the ``tmp_path`` fixtures are the same folder. - `4681 <https://github.com/pytest-dev/pytest/issues/4681>`_: Ensure ``tmp_path`` is always a real path. Trivial/Internal Changes ------------------------ - `4643 <https://github.com/pytest-dev/pytest/issues/4643>`_: Use ``a.item()`` instead of the deprecated ``np.asscalar(a)`` in ``pytest.approx``. ``np.asscalar`` has been `deprecated <https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rstnew-deprecations>`__ in ``numpy 1.16.``. - `4657 <https://github.com/pytest-dev/pytest/issues/4657>`_: Copy saferepr from pylib - `4668 <https://github.com/pytest-dev/pytest/issues/4668>`_: The verbose word for expected failures in the teststatus report changes from ``xfail`` to ``XFAIL`` to be consistent with other test outcomes. ``` ### 4.1.1 ``` ========================= Bug Fixes --------- - `2256 <https://github.com/pytest-dev/pytest/issues/2256>`_: Show full repr with ``assert a==b`` and ``-vv``. - `3456 <https://github.com/pytest-dev/pytest/issues/3456>`_: Extend Doctest-modules to ignore mock objects. - `4617 <https://github.com/pytest-dev/pytest/issues/4617>`_: Fixed ``pytest.warns`` bug when context manager is reused (e.g. multiple parametrization). - `4631 <https://github.com/pytest-dev/pytest/issues/4631>`_: Don't rewrite assertion when ``__getattr__`` is broken Improved Documentation ---------------------- - `3375 <https://github.com/pytest-dev/pytest/issues/3375>`_: Document that using ``setup.cfg`` may crash other tools or cause hard to track down problems because it uses a different parser than ``pytest.ini`` or ``tox.ini`` files. Trivial/Internal Changes ------------------------ - `4602 <https://github.com/pytest-dev/pytest/issues/4602>`_: Uninstall ``hypothesis`` in regen tox env. ``` ### 4.1.0 ``` ========================= Removals -------- - `2169 <https://github.com/pytest-dev/pytest/issues/2169>`_: ``pytest.mark.parametrize``: in previous versions, errors raised by id functions were suppressed and changed into warnings. Now the exceptions are propagated, along with a pytest message informing the node, parameter value and index where the exception occurred. - `3078 <https://github.com/pytest-dev/pytest/issues/3078>`_: Remove legacy internal warnings system: ``config.warn``, ``Node.warn``. The ``pytest_logwarning`` now issues a warning when implemented. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlconfig-warn-and-node-warn>`__ on information on how to update your code. - `3079 <https://github.com/pytest-dev/pytest/issues/3079>`_: Removed support for yield tests - they are fundamentally broken because they don't support fixtures properly since collection and test execution were separated. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlyield-tests>`__ on information on how to update your code. - `3082 <https://github.com/pytest-dev/pytest/issues/3082>`_: Removed support for applying marks directly to values in ``pytest.mark.parametrize``. Use ``pytest.param`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmarks-in-pytest-mark-parametrize>`__ on information on how to update your code. - `3083 <https://github.com/pytest-dev/pytest/issues/3083>`_: Removed ``Metafunc.addcall``. This was the predecessor mechanism to ``pytest.mark.parametrize``. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmetafunc-addcall>`__ on information on how to update your code. - `3085 <https://github.com/pytest-dev/pytest/issues/3085>`_: Removed support for passing strings to ``pytest.main``. Now, always pass a list of strings instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpassing-command-line-string-to-pytest-main>`__ on information on how to update your code. - `3086 <https://github.com/pytest-dev/pytest/issues/3086>`_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. - `3616 <https://github.com/pytest-dev/pytest/issues/3616>`_: Removed the deprecated compat properties for ``node.Class/Function/Module`` - use ``pytest.Class/Function/Module`` now. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlinternal-classes-accessed-through-node>`__ on information on how to update your code. - `4421 <https://github.com/pytest-dev/pytest/issues/4421>`_: Removed the implementation of the ``pytest_namespace`` hook. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-namespace>`__ on information on how to update your code. - `4489 <https://github.com/pytest-dev/pytest/issues/4489>`_: Removed ``request.cached_setup``. This was the predecessor mechanism to modern fixtures. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcached-setup>`__ on information on how to update your code. - `4535 <https://github.com/pytest-dev/pytest/issues/4535>`_: Removed the deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago. - `4543 <https://github.com/pytest-dev/pytest/issues/4543>`_: Removed support to define fixtures using the ``pytest_funcarg__`` prefix. Use the ``pytest.fixture`` decorator instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-funcarg-prefix>`__ on information on how to update your code. - `4545 <https://github.com/pytest-dev/pytest/issues/4545>`_: Calling fixtures directly is now always an error instead of a warning. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcalling-fixtures-directly>`__ on information…
5: Initial Update r=aragilar a=pyup-bot This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch. Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR. ### Update [mock](https://pypi.org/project/mock) from **3.0.5** to **3.0.5**. <details> <summary>Changelog</summary> ### 3.0.5 ``` ----- - Issue 31855: :func:`unittest.mock.mock_open` results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. ``` ### 3.0.4 ``` ----- - Include the license, readme and changelog in the source distribution. ``` ### 3.0.3 ``` ----- - Fixed patching of dictionaries, when specifying the target with a unicode on Python 2. ``` ### 3.0.2 ``` ----- - Add missing ``funcsigs`` dependency on Python 2. ``` ### 3.0.1 ``` ----- - Fix packaging issue where ``six`` was missed as a dependency. ``` ### 3.0.0 ``` ----- - Issue 35226: Recursively check arguments when testing for equality of :class:`unittest.mock.call` objects and add note that tracking of parameters used to create ancestors of mocks in ``mock_calls`` is not possible. - Issue 31177: Fix bug that prevented using :meth:`reset_mock <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes - Issue 26704: Added test demonstrating double-patching of an instance method. Patch by Anthony Sottile. - Issue 35500: Write expected and actual call parameters on separate lines in :meth:`unittest.mock.Mock.assert_called_with` assertion errors. Contributed by Susan Su. - Issue 35330: When a :class:`Mock` instance was used to wrap an object, if `side_effect` is used in one of the mocks of it methods, don't call the original implementation and return the result of using the side effect the same way that it is done with return_value. - Issue 30541: Add new function to seal a mock and prevent the automatically creation of child mocks. Patch by Mario Corchero. - Issue 35022: :class:`unittest.mock.MagicMock` now supports the ``__fspath__`` method (from :class:`os.PathLike`). - Issue 33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` magic method. - Issue 35512: :func:`unittest.mock.patch.dict` used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. - Issue 36366: Calling ``stop()`` on an unstarted or stopped :func:`unittest.mock.patch` object will now return `None` instead of raising :exc:`RuntimeError`, making the method idempotent. Patch byKarthikeyan Singaravelan. - Issue 35357: Internal attributes' names of unittest.mock._Call and unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with _mock_ in order to prevent clashes with widely used object attributes. Fixed minor typo in test function name. - Issue 20239: Allow repeated assignment deletion of :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. - Issue 35082: Don't return deleted attributes when calling dir on a :class:`unittest.mock.Mock`. - Issue 0: Improved an error message when mock assert_has_calls fails. - Issue 23078: Add support for :func:`classmethod` and :func:`staticmethod` to :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. - Issue 21478: Calls to a child function created with :func:`unittest.mock.create_autospec` should propagate to the parent. Patch by Karthikeyan Singaravelan. - Issue 36598: Fix ``isinstance`` check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - Issue 32933: :func:`unittest.mock.mock_open` now supports iteration over the file contents. Patch by Tony Flury. - Issue 21269: Add ``args`` and ``kwargs`` properties to mock call objects. Contributed by Kumar Akshay. - Issue 17185: Set ``__signature__`` on mock for :mod:`inspect` to get signature. Patch by Karthikeyan Singaravelan. - Issue 35047: ``unittest.mock`` now includes mock calls in exception messages if ``assert_not_called``, ``assert_called_once``, or ``assert_called_once_with`` fails. Patch by Petter Strandmark. - Issue 28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once. - Issue 28735: Fixed the comparison of mock.MagickMock with mock.ANY. - Issue 20804: The unittest.mock.sentinel attributes now preserve their identity when they are copied or pickled. - Issue 28961: Fix unittest.mock._Call helper: don't ignore the name parameter anymore. Patch written by Jiajun Huang. - Issue 26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. - Issue 21271: New keyword only parameters in reset_mock call. - Issue 26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. - Issue 25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer. ``` ### 2.0.0 ``` ----------------- - Issue 26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha. - Issue 22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully. - Issue 24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur. - Issue 23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill. - Issue 21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3. - Issue 18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst. - Issue 23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi - Issue 23310: Fix MagicMock's initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim. - Issue 23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl. - Issue 23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. - Issue 23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in issue 21408 they are redundant. *** NOT BACKPORTED *** - Issue 21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes. - Issue 21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests. - Issue 21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called. - Issue 21238: New keyword argument `unsafe` to Mock. It raises `AttributeError` incase of an attribute startswith assert or assret. - Issue 21239: patch.stopall() didn't work deterministically when the same name was patched more than once. - Issue 21222: Passing name keyword argument to mock.create_autospec now works. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das. - Issue 20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter. - Issue 20189: unittest.mock now no longer assumes that any object for which it could get an inspect.Signature is a callable written in Python. Fix courtesy of Michael Foord. - Issue 17467: add readline and readlines support to mock_open in unittest.mock. - Issue 17015: When it has a spec, a Mock object now inspects its signature when matching calls, so that arguments can be matched positionally or by name. - Issue 15323: improve failure message of Mock.assert_called_once_with - Issue 14857: fix regression in references to PEP 3135 implicit __class__ closure variable (Reopens issue 12370) - Issue 14295: Add unittest.mock ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/mock - Changelog: https://pyup.io/changelogs/mock/ - Docs: http://mock.readthedocs.org/en/latest/ </details> ### Update [sphinx_rtd_theme](https://pypi.org/project/sphinx_rtd_theme) from **0.4.3** to **0.4.3**. *The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)* <details> <summary>Links</summary> - PyPI: https://pypi.org/project/sphinx-rtd-theme - Repo: https://github.com/rtfd/sphinx_rtd_theme/ </details> ### Update [pytest](https://pypi.org/project/pytest) from **5.2.1** to **5.2.1**. <details> <summary>Changelog</summary> ### 5.2.1 ``` ========================= Bug Fixes --------- - `5902 <https://github.com/pytest-dev/pytest/issues/5902>`_: Fix warnings about deprecated ``cmp`` attribute in ``attrs>=19.2``. ``` ### 5.2.0 ``` ========================= Deprecations ------------ - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: Passing arguments to pytest.fixture() as positional arguments is deprecated - pass them as a keyword argument instead. Features -------- - `1682 <https://github.com/pytest-dev/pytest/issues/1682>`_: The ``scope`` parameter of ``pytest.fixture`` can now be a callable that receives the fixture name and the ``config`` object as keyword-only parameters. See `the docs <https://docs.pytest.org/en/latest/fixture.htmldynamic-scope>`__ for more information. - `5764 <https://github.com/pytest-dev/pytest/issues/5764>`_: New behavior of the ``--pastebin`` option: failures to connect to the pastebin server are reported, without failing the pytest run Bug Fixes --------- - `5806 <https://github.com/pytest-dev/pytest/issues/5806>`_: Fix "lexer" being used when uploading to bpaste.net from ``--pastebin`` to "text". - `5884 <https://github.com/pytest-dev/pytest/issues/5884>`_: Fix ``--setup-only`` and ``--setup-show`` for custom pytest items. Trivial/Internal Changes ------------------------ - `5056 <https://github.com/pytest-dev/pytest/issues/5056>`_: The HelpFormatter uses ``py.io.get_terminal_width`` for better width detection. ``` ### 5.1.3 ``` ========================= Bug Fixes --------- - `5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. - `5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. - `5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase characters (introduced by 5792). ``` ### 5.1.2 ``` ========================= Bug Fixes --------- - `2270 <https://github.com/pytest-dev/pytest/issues/2270>`_: Fixed ``self`` reference in function-scoped fixtures defined plugin classes: previously ``self`` would be a reference to a *test* class, not the *plugin* class. - `570 <https://github.com/pytest-dev/pytest/issues/570>`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization. - `5782 <https://github.com/pytest-dev/pytest/issues/5782>`_: Fix decoding error when printing an error response from ``--pastebin``. - `5786 <https://github.com/pytest-dev/pytest/issues/5786>`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like ``pytest-xdist`` to display them properly. - `5792 <https://github.com/pytest-dev/pytest/issues/5792>`_: Windows: Fix error that occurs in certain circumstances when loading ``conftest.py`` from a working directory that has casing other than the one stored in the filesystem (e.g., ``c:\test`` instead of ``C:\test``). ``` ### 5.1.1 ``` ========================= Bug Fixes --------- - `5751 <https://github.com/pytest-dev/pytest/issues/5751>`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1. ``` ### 5.1.0 ``` ========================= Removals -------- - `5180 <https://github.com/pytest-dev/pytest/issues/5180>`_: As per our policy, the following features have been deprecated in the 4.X series and are now removed: * ``Request.getfuncargvalue``: use ``Request.getfixturevalue`` instead. * ``pytest.raises`` and ``pytest.warns`` no longer support strings as the second argument. * ``message`` parameter of ``pytest.raises``. * ``pytest.raises``, ``pytest.warns`` and ``ParameterSet.param`` now use native keyword-only syntax. This might change the exception message from previous versions, but they still raise ``TypeError`` on unknown keyword arguments as before. * ``pytest.config`` global variable. * ``tmpdir_factory.ensuretemp`` method. * ``pytest_logwarning`` hook. * ``RemovedInPytest4Warning`` warning type. * ``request`` is now a reserved name for fixtures. For more information consult `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ in the docs. - `5565 <https://github.com/pytest-dev/pytest/issues/5565>`_: Removed unused support code for `unittest2 <https://pypi.org/project/unittest2/>`__. The ``unittest2`` backport module is no longer necessary since Python 3.3+, and the small amount of code in pytest to support it also doesn't seem to be used: after removed, all tests still pass unchanged. Although our policy is to introduce a deprecation period before removing any features or support for third party libraries, because this code is apparently not used at all (even if ``unittest2`` is used by a test suite executed by pytest), it was decided to remove it in this release. If you experience a regression because of this, please `file an issue <https://github.com/pytest-dev/pytest/issues/new>`__. - `5615 <https://github.com/pytest-dev/pytest/issues/5615>`_: ``pytest.fail``, ``pytest.xfail`` and ``pytest.skip`` no longer support bytes for the message argument. This was supported for Python 2 where it was tempting to use ``"message"`` instead of ``u"message"``. Python 3 code is unlikely to pass ``bytes`` to these functions. If you do, please decode it to an ``str`` beforehand. Features -------- - `5564 <https://github.com/pytest-dev/pytest/issues/5564>`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``. - `5576 <https://github.com/pytest-dev/pytest/issues/5576>`_: New `NUMBER <https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options>`__ option for doctests to ignore irrelevant differences in floating-point numbers. Inspired by Sébastien Boisgérault's `numtest <https://github.com/boisgera/numtest>`__ extension for doctest. Improvements ------------ - `5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now includes a timestamp and hostname in the testsuite tag. - `5707 <https://github.com/pytest-dev/pytest/issues/5707>`_: Time taken to run the test suite now includes a human-readable representation when it takes over 60 seconds, for example:: ===== 2 failed in 102.70s (0:01:42) ===== Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5115 <https://github.com/pytest-dev/pytest/issues/5115>`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest. - `5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root element. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5537 <https://github.com/pytest-dev/pytest/issues/5537>`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the standard library on Python 3.8+. - `5578 <https://github.com/pytest-dev/pytest/issues/5578>`_: Improve type checking for some exception-raising functions (``pytest.xfail``, ``pytest.skip``, etc) so they provide better error messages when users meant to use marks (for example ``pytest.xfail`` instead of ``pytest.mark.xfail``). - `5606 <https://github.com/pytest-dev/pytest/issues/5606>`_: Fixed internal error when test functions were patched with objects that cannot be compared for truth values against others, like ``numpy`` arrays. - `5634 <https://github.com/pytest-dev/pytest/issues/5634>`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases. This makes ``unittest`` cases handle ``quit`` from pytest's pdb correctly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. - `5701 <https://github.com/pytest-dev/pytest/issues/5701>`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``. - `5734 <https://github.com/pytest-dev/pytest/issues/5734>`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions. Improved Documentation ---------------------- - `5669 <https://github.com/pytest-dev/pytest/issues/5669>`_: Add docstring for ``Testdir.copy_example``. Trivial/Internal Changes ------------------------ - `5095 <https://github.com/pytest-dev/pytest/issues/5095>`_: XML files of the ``xunit2`` family are now validated against the schema by pytest's own test suite to avoid future regressions. - `5516 <https://github.com/pytest-dev/pytest/issues/5516>`_: Cache node splitting function which can improve collection performance in very large test suites. - `5603 <https://github.com/pytest-dev/pytest/issues/5603>`_: Simplified internal ``SafeRepr`` class and removed some dead code. - `5664 <https://github.com/pytest-dev/pytest/issues/5664>`_: When invoking pytest's own testsuite with ``PYTHONDONTWRITEBYTECODE=1``, the ``test_xfail_handling`` test no longer fails. - `5684 <https://github.com/pytest-dev/pytest/issues/5684>`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.). ``` ### 5.0.1 ``` ========================= Bug Fixes --------- - `5479 <https://github.com/pytest-dev/pytest/issues/5479>`_: Improve quoting in ``raises`` match failure message. - `5523 <https://github.com/pytest-dev/pytest/issues/5523>`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. Improved Documentation ---------------------- - `5517 <https://github.com/pytest-dev/pytest/issues/5517>`_: Improve "Declaring new hooks" section in chapter "Writing Plugins" ``` ### 5.0.0 ``` ========================= Important --------- This release is a Python3.5+ only release. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Removals -------- - `1149 <https://github.com/pytest-dev/pytest/issues/1149>`_: Pytest no longer accepts prefixes of command-line arguments, for example typing ``pytest --doctest-mod`` inplace of ``--doctest-modules``. This was previously allowed where the ``ArgumentParser`` thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues `1149 <https://github.com/pytest-dev/pytest/issues/1149>`__, `3413 <https://github.com/pytest-dev/pytest/issues/3413>`__, and `4009 <https://github.com/pytest-dev/pytest/issues/4009>`__. - `5402 <https://github.com/pytest-dev/pytest/issues/5402>`_: **PytestDeprecationWarning are now errors by default.** Following our plan to remove deprecated features with as little disruption as possible, all warnings of type ``PytestDeprecationWarning`` now generate errors instead of warning messages. **The affected features will be effectively removed in pytest 5.1**, so please consult the `Deprecations and Removals <https://docs.pytest.org/en/latest/deprecations.html>`__ section in the docs for directions on how to update existing code. In the pytest ``5.0.X`` series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your ``pytest.ini`` file: .. code-block:: ini [pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning But this will stop working when pytest ``5.1`` is released. **If you have concerns** about the removal of a specific feature, please add a comment to `5402 <https://github.com/pytest-dev/pytest/issues/5402>`__. - `5412 <https://github.com/pytest-dev/pytest/issues/5412>`_: ``ExceptionInfo`` objects (returned by ``pytest.raises``) now have the same ``str`` representation as ``repr``, which avoids some confusion when users use ``print(e)`` to inspect the object. This means code like: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e) Needs to be changed to: .. code-block:: python with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value) Deprecations ------------ - `4488 <https://github.com/pytest-dev/pytest/issues/4488>`_: The removal of the ``--result-log`` option and module has been postponed to (tentatively) pytest 6.0 as the team has not yet got around to implement a good alternative for it. - `466 <https://github.com/pytest-dev/pytest/issues/466>`_: The ``funcargnames`` attribute has been an alias for ``fixturenames`` since pytest 2.3, and is now deprecated in code too. Features -------- - `3457 <https://github.com/pytest-dev/pytest/issues/3457>`_: New `pytest_assertion_pass <https://docs.pytest.org/en/latest/reference.html_pytest.hookspec.pytest_assertion_pass>`__ hook, called with context information when an assertion *passes*. This hook is still **experimental** so use it with caution. - `5440 <https://github.com/pytest-dev/pytest/issues/5440>`_: The `faulthandler <https://docs.python.org/3/library/faulthandler.html>`__ standard library module is now enabled by default to help users diagnose crashes in C modules. This functionality was provided by integrating the external `pytest-faulthandler <https://github.com/pytest-dev/pytest-faulthandler>`__ plugin into the core, so users should remove that plugin from their requirements if used. For more information see the docs: https://docs.pytest.org/en/latest/usage.htmlfault-handler - `5452 <https://github.com/pytest-dev/pytest/issues/5452>`_: When warnings are configured as errors, pytest warnings now appear as originating from ``pytest.`` instead of the internal ``_pytest.warning_types.`` module. - `5125 <https://github.com/pytest-dev/pytest/issues/5125>`_: ``Session.exitcode`` values are now coded in ``pytest.ExitCode``, an ``IntEnum``. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution. The team doesn't expect this change to break test suites or plugins in general, except in esoteric/specific scenarios. **pytest-xdist** users should upgrade to ``1.29.0`` or later, as ``pytest-xdist`` required a compatibility fix because of this change. Bug Fixes --------- - `1403 <https://github.com/pytest-dev/pytest/issues/1403>`_: Switch from ``imp`` to ``importlib``. - `1671 <https://github.com/pytest-dev/pytest/issues/1671>`_: The name of the ``.pyc`` files cached by the assertion writer now includes the pytest version to avoid stale caches. - `2761 <https://github.com/pytest-dev/pytest/issues/2761>`_: Honor PEP 235 on case-insensitive file systems. - `5078 <https://github.com/pytest-dev/pytest/issues/5078>`_: Test module is no longer double-imported when using ``--pyargs``. - `5260 <https://github.com/pytest-dev/pytest/issues/5260>`_: Improved comparison of byte strings. When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff It now shows the actual ascii representation instead, which is often more useful:: def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff - `5335 <https://github.com/pytest-dev/pytest/issues/5335>`_: Colorize level names when the level in the logging format is formatted using '%(levelname).Xs' (truncated fixed width alignment), where X is an integer. - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5432 <https://github.com/pytest-dev/pytest/issues/5432>`_: Prevent "already imported" warnings from assertion rewriter when invoking pytest in-process multiple times. - `5433 <https://github.com/pytest-dev/pytest/issues/5433>`_: Fix assertion rewriting in packages (``__init__.py``). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. Improved Documentation ---------------------- - `5315 <https://github.com/pytest-dev/pytest/issues/5315>`_: Expand docs on mocking classes and dictionaries with ``monkeypatch``. - `5416 <https://github.com/pytest-dev/pytest/issues/5416>`_: Fix PytestUnknownMarkWarning in run/skip example. ``` ### 4.6.5 ``` ========================= Bug Fixes --------- - `4344 <https://github.com/pytest-dev/pytest/issues/4344>`_: Fix RuntimeError/StopIteration when trying to collect package with "__init__.py" only. - `5478 <https://github.com/pytest-dev/pytest/issues/5478>`_: Fix encode error when using unicode strings in exceptions with ``pytest.raises``. - `5524 <https://github.com/pytest-dev/pytest/issues/5524>`_: Fix issue where ``tmp_path`` and ``tmpdir`` would not remove directories containing files marked as read-only, which could lead to pytest crashing when executed a second time with the ``--basetemp`` option. - `5547 <https://github.com/pytest-dev/pytest/issues/5547>`_: ``--step-wise`` now handles ``xfail(strict=True)`` markers properly. - `5650 <https://github.com/pytest-dev/pytest/issues/5650>`_: Improved output when parsing an ini configuration file fails. ``` ### 4.6.4 ``` ========================= Bug Fixes --------- - `5404 <https://github.com/pytest-dev/pytest/issues/5404>`_: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (`5080 <https://github.com/pytest-dev/pytest/issues/5080>`__). - `5444 <https://github.com/pytest-dev/pytest/issues/5444>`_: Fix ``--stepwise`` mode when the first file passed on the command-line fails to collect. - `5482 <https://github.com/pytest-dev/pytest/issues/5482>`_: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to ``pytest.mark.parametrize``. - `5505 <https://github.com/pytest-dev/pytest/issues/5505>`_: Fix crash when discovery fails while using ``-p no:terminal``. ``` ### 4.6.3 ``` ========================= Bug Fixes --------- - `5383 <https://github.com/pytest-dev/pytest/issues/5383>`_: ``-q`` has again an impact on the style of the collected items (``--collect-only``) when ``--log-cli-level`` is used. - `5389 <https://github.com/pytest-dev/pytest/issues/5389>`_: Fix regressions of `5063 <https://github.com/pytest-dev/pytest/pull/5063>`__ for ``importlib_metadata.PathDistribution`` which have their ``files`` attribute being ``None``. - `5390 <https://github.com/pytest-dev/pytest/issues/5390>`_: Fix regression where the ``obj`` attribute of ``TestCase`` items was no longer bound to methods. ``` ### 4.6.2 ``` ========================= Bug Fixes --------- - `5370 <https://github.com/pytest-dev/pytest/issues/5370>`_: Revert unrolling of ``all()`` to fix ``NameError`` on nested comprehensions. - `5371 <https://github.com/pytest-dev/pytest/issues/5371>`_: Revert unrolling of ``all()`` to fix incorrect handling of generators with ``if``. - `5372 <https://github.com/pytest-dev/pytest/issues/5372>`_: Revert unrolling of ``all()`` to fix incorrect assertion when using ``all()`` in an expression. ``` ### 4.6.1 ``` ========================= Bug Fixes --------- - `5354 <https://github.com/pytest-dev/pytest/issues/5354>`_: Fix ``pytest.mark.parametrize`` when the argvalues is an iterator. - `5358 <https://github.com/pytest-dev/pytest/issues/5358>`_: Fix assertion rewriting of ``all()`` calls to deal with non-generators. ``` ### 4.6.0 ``` ========================= Important --------- The ``4.6.X`` series will be the last series to support **Python 2 and Python 3.4**. For more details, see our `Python 2.7 and 3.4 support plan <https://docs.pytest.org/en/latest/py27-py34-deprecation.html>`__. Features -------- - `4559 <https://github.com/pytest-dev/pytest/issues/4559>`_: Added the ``junit_log_passing_tests`` ini value which can be used to enable or disable logging of passing test output in the Junit XML file. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: pytester's ``testdir.spawn`` uses ``tmpdir`` as HOME/USERPROFILE directory. - `5062 <https://github.com/pytest-dev/pytest/issues/5062>`_: Unroll calls to ``all`` to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions. - `5063 <https://github.com/pytest-dev/pytest/issues/5063>`_: Switch from ``pkg_resources`` to ``importlib-metadata`` for entrypoint detection for improved performance and import time. - `5091 <https://github.com/pytest-dev/pytest/issues/5091>`_: The output for ini options in ``--help`` has been improved. - `5269 <https://github.com/pytest-dev/pytest/issues/5269>`_: ``pytest.importorskip`` includes the ``ImportError`` now in the default ``reason``. - `5311 <https://github.com/pytest-dev/pytest/issues/5311>`_: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter. - `5312 <https://github.com/pytest-dev/pytest/issues/5312>`_: Improved formatting of multiline log messages in Python 3. Bug Fixes --------- - `2064 <https://github.com/pytest-dev/pytest/issues/2064>`_: The debugging plugin imports the wrapped ``Pdb`` class (``--pdbcls``) on-demand now. - `4908 <https://github.com/pytest-dev/pytest/issues/4908>`_: The ``pytest_enter_pdb`` hook gets called with post-mortem (``--pdb``). - `5036 <https://github.com/pytest-dev/pytest/issues/5036>`_: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized. - `5256 <https://github.com/pytest-dev/pytest/issues/5256>`_: Handle internal error due to a lone surrogate unicode character not being representable in Jython. - `5257 <https://github.com/pytest-dev/pytest/issues/5257>`_: Ensure that ``sys.stdout.mode`` does not include ``'b'`` as it is a text stream. - `5278 <https://github.com/pytest-dev/pytest/issues/5278>`_: Pytest's internal python plugin can be disabled using ``-p no:python`` again. - `5286 <https://github.com/pytest-dev/pytest/issues/5286>`_: Fix issue with ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option not working when using a list of test IDs in parametrized tests. - `5330 <https://github.com/pytest-dev/pytest/issues/5330>`_: Show the test module being collected when emitting ``PytestCollectionWarning`` messages for test classes with ``__init__`` and ``__new__`` methods to make it easier to pin down the problem. - `5333 <https://github.com/pytest-dev/pytest/issues/5333>`_: Fix regression in 4.5.0 with ``--lf`` not re-running all tests with known failures from non-selected tests. Improved Documentation ---------------------- - `5250 <https://github.com/pytest-dev/pytest/issues/5250>`_: Expand docs on use of ``setenv`` and ``delenv`` with ``monkeypatch``. ``` ### 4.5.0 ``` ========================= Features -------- - `4826 <https://github.com/pytest-dev/pytest/issues/4826>`_: A warning is now emitted when unknown marks are used as a decorator. This is often due to a typo, which can lead to silently broken tests. - `4907 <https://github.com/pytest-dev/pytest/issues/4907>`_: Show XFail reason as part of JUnitXML message field. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: Messages from crash reports are displayed within test summaries now, truncated to the terminal width. - `5023 <https://github.com/pytest-dev/pytest/issues/5023>`_: New flag ``--strict-markers`` that triggers an error when unknown markers (e.g. those not registered using the `markers option`_ in the configuration file) are used in the test suite. The existing ``--strict`` option has the same behavior currently, but can be augmented in the future for additional checks. .. _`markers option`: https://docs.pytest.org/en/latest/reference.htmlconfval-markers - `5026 <https://github.com/pytest-dev/pytest/issues/5026>`_: Assertion failure messages for sequences and dicts contain the number of different items now. - `5034 <https://github.com/pytest-dev/pytest/issues/5034>`_: Improve reporting with ``--lf`` and ``--ff`` (run-last-failure). - `5035 <https://github.com/pytest-dev/pytest/issues/5035>`_: The ``--cache-show`` option/action accepts an optional glob to show only matching cache entries. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: Standard input (stdin) can be given to pytester's ``Testdir.run()`` and ``Testdir.popen()``. - `5068 <https://github.com/pytest-dev/pytest/issues/5068>`_: The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. - `5108 <https://github.com/pytest-dev/pytest/issues/5108>`_: The short test summary is displayed after passes with output (``-rP``). - `5172 <https://github.com/pytest-dev/pytest/issues/5172>`_: The ``--last-failed`` (``--lf``) option got smarter and will now skip entire files if all tests of that test file have passed in previous runs, greatly speeding up collection. - `5177 <https://github.com/pytest-dev/pytest/issues/5177>`_: Introduce new specific warning ``PytestWarning`` subclasses to make it easier to filter warnings based on the class, rather than on the message. The new subclasses are: * ``PytestAssertRewriteWarning`` * ``PytestCacheWarning`` * ``PytestCollectionWarning`` * ``PytestConfigWarning`` * ``PytestUnhandledCoroutineWarning`` * ``PytestUnknownMarkWarning`` - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: New ``record_testsuite_property`` session-scoped fixture allows users to log ``<property>`` tags at the ``testsuite`` level with the ``junitxml`` plugin. The generated XML is compatible with the latest xunit standard, contrary to the properties recorded by ``record_property`` and ``record_xml_attribute``. - `5214 <https://github.com/pytest-dev/pytest/issues/5214>`_: The default logging format has been changed to improve readability. Here is an example of a previous logging message:: test_log_cli_enabled_disabled.py 3 CRITICAL critical message logged by test This has now become:: CRITICAL root:test_log_cli_enabled_disabled.py:3 critical message logged by test The formatting can be changed through the `log_format <https://docs.pytest.org/en/latest/reference.htmlconfval-log_format>`__ configuration option. - `5220 <https://github.com/pytest-dev/pytest/issues/5220>`_: ``--fixtures`` now also shows fixture scope for scopes other than ``"function"``. Bug Fixes --------- - `5113 <https://github.com/pytest-dev/pytest/issues/5113>`_: Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. - `5144 <https://github.com/pytest-dev/pytest/issues/5144>`_: With usage errors ``exitstatus`` is set to ``EXIT_USAGEERROR`` in the ``pytest_sessionfinish`` hook now as expected. - `5235 <https://github.com/pytest-dev/pytest/issues/5235>`_: ``outcome.exit`` is not used with ``EOF`` in the pdb wrapper anymore, but only with ``quit``. Improved Documentation ---------------------- - `4935 <https://github.com/pytest-dev/pytest/issues/4935>`_: Expand docs on registering marks and the effect of ``--strict``. Trivial/Internal Changes ------------------------ - `4942 <https://github.com/pytest-dev/pytest/issues/4942>`_: ``logging.raiseExceptions`` is not set to ``False`` anymore. - `5013 <https://github.com/pytest-dev/pytest/issues/5013>`_: pytest now depends on `wcwidth <https://pypi.org/project/wcwidth>`__ to properly track unicode character sizes for more precise terminal output. - `5059 <https://github.com/pytest-dev/pytest/issues/5059>`_: pytester's ``Testdir.popen()`` uses ``stdout`` and ``stderr`` via keyword arguments with defaults now (``subprocess.PIPE``). - `5069 <https://github.com/pytest-dev/pytest/issues/5069>`_: The code for the short test summary in the terminal was moved to the terminal plugin. - `5082 <https://github.com/pytest-dev/pytest/issues/5082>`_: Improved validation of kwargs for various methods in the pytester plugin. - `5202 <https://github.com/pytest-dev/pytest/issues/5202>`_: ``record_property`` now emits a ``PytestWarning`` when used with ``junit_family=xunit2``: the fixture generates ``property`` tags as children of ``testcase``, which is not permitted according to the most `recent schema <https://github.com/jenkinsci/xunit-plugin/blob/master/ src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd>`__. - `5239 <https://github.com/pytest-dev/pytest/issues/5239>`_: Pin ``pluggy`` to ``< 1.0`` so we don't update to ``1.0`` automatically when it gets released: there are planned breaking changes, and we want to ensure pytest properly supports ``pluggy 1.0``. ``` ### 4.4.2 ``` ========================= Bug Fixes --------- - `5089 <https://github.com/pytest-dev/pytest/issues/5089>`_: Fix crash caused by error in ``__repr__`` function with both ``showlocals`` and verbose output enabled. - `5139 <https://github.com/pytest-dev/pytest/issues/5139>`_: Eliminate core dependency on 'terminal' plugin. - `5229 <https://github.com/pytest-dev/pytest/issues/5229>`_: Require ``pluggy>=0.11.0`` which reverts a dependency to ``importlib-metadata`` added in ``0.10.0``. The ``importlib-metadata`` package cannot be imported when installed as an egg and causes issues when relying on ``setup.py`` to install test dependencies. Improved Documentation ---------------------- - `5171 <https://github.com/pytest-dev/pytest/issues/5171>`_: Doc: ``pytest_ignore_collect``, ``pytest_collect_directory``, ``pytest_collect_file`` and ``pytest_pycollect_makemodule`` hooks's 'path' parameter documented type is now ``py.path.local`` - `5188 <https://github.com/pytest-dev/pytest/issues/5188>`_: Improve help for ``--runxfail`` flag. Trivial/Internal Changes ------------------------ - `5182 <https://github.com/pytest-dev/pytest/issues/5182>`_: Removed internal and unused ``_pytest.deprecated.MARK_INFO_ATTRIBUTE``. ``` ### 4.4.1 ``` ========================= Bug Fixes --------- - `5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture. - `5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0. - `5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``. - `5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used. ``` ### 4.4.0 ``` ========================= Features -------- - `2224 <https://github.com/pytest-dev/pytest/issues/2224>`_: ``async`` test functions are skipped and a warning is emitted when a suitable async plugin is not installed (such as ``pytest-asyncio`` or ``pytest-trio``). Previously ``async`` functions would not execute at all but still be marked as "passed". - `2482 <https://github.com/pytest-dev/pytest/issues/2482>`_: Include new ``disable_test_id_escaping_and_forfeit_all_rights_to_community_support`` option to disable ascii-escaping in parametrized values. This may cause a series of problems and as the name makes clear, use at your own risk. - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: The ``-p`` option can now be used to early-load plugins also by entry-point name, instead of just by module name. This makes it possible to early load external plugins like ``pytest-cov`` in the command-line:: pytest -p pytest_cov - `4855 <https://github.com/pytest-dev/pytest/issues/4855>`_: The ``--pdbcls`` option handles classes via module attributes now (e.g. ``pdb:pdb.Pdb`` with `pdb++`_), and its validation was improved. .. _pdb++: https://pypi.org/project/pdbpp/ - `4875 <https://github.com/pytest-dev/pytest/issues/4875>`_: The `testpaths <https://docs.pytest.org/en/latest/reference.htmlconfval-testpaths>`__ configuration option is now displayed next to the ``rootdir`` and ``inifile`` lines in the pytest header if the option is in effect, i.e., directories or file names were not explicitly passed in the command line. Also, ``inifile`` is only displayed if there's a configuration file, instead of an empty ``inifile:`` string. - `4911 <https://github.com/pytest-dev/pytest/issues/4911>`_: Doctests can be skipped now dynamically using ``pytest.skip()``. - `4920 <https://github.com/pytest-dev/pytest/issues/4920>`_: Internal refactorings have been made in order to make the implementation of the `pytest-subtests <https://github.com/pytest-dev/pytest-subtests>`__ plugin possible, which adds unittest sub-test support and a new ``subtests`` fixture as discussed in `1367 <https://github.com/pytest-dev/pytest/issues/1367>`__. For details on the internal refactorings, please see the details on the related PR. - `4931 <https://github.com/pytest-dev/pytest/issues/4931>`_: pytester's ``LineMatcher`` asserts that the passed lines are a sequence. - `4936 <https://github.com/pytest-dev/pytest/issues/4936>`_: Handle ``-p plug`` after ``-p no:plug``. This can be used to override a blocked plugin (e.g. in "addopts") from the command line etc. - `4951 <https://github.com/pytest-dev/pytest/issues/4951>`_: Output capturing is handled correctly when only capturing via fixtures (capsys, capfs) with ``pdb.set_trace()``. - `4956 <https://github.com/pytest-dev/pytest/issues/4956>`_: ``pytester`` sets ``$HOME`` and ``$USERPROFILE`` to the temporary directory during test runs. This ensures to not load configuration files from the real user's home directory. - `4980 <https://github.com/pytest-dev/pytest/issues/4980>`_: Namespace packages are handled better with ``monkeypatch.syspath_prepend`` and ``testdir.syspathinsert`` (via ``pkg_resources.fixup_namespace_packages``). - `4993 <https://github.com/pytest-dev/pytest/issues/4993>`_: The stepwise plugin reports status information now. - `5008 <https://github.com/pytest-dev/pytest/issues/5008>`_: If a ``setup.cfg`` file contains ``[tool:pytest]`` and also the no longer supported ``[pytest]`` section, pytest will use ``[tool:pytest]`` ignoring ``[pytest]``. Previously it would unconditionally error out. This makes it simpler for plugins to support old pytest versions. Bug Fixes --------- - `1895 <https://github.com/pytest-dev/pytest/issues/1895>`_: Fix bug where fixtures requested dynamically via ``request.getfixturevalue()`` might be teardown before the requesting fixture. - `4851 <https://github.com/pytest-dev/pytest/issues/4851>`_: pytester unsets ``PYTEST_ADDOPTS`` now to not use outer options with ``testdir.runpytest()``. - `4903 <https://github.com/pytest-dev/pytest/issues/4903>`_: Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. - `4928 <https://github.com/pytest-dev/pytest/issues/4928>`_: Fix line offsets with ``ScopeMismatch`` errors. - `4957 <https://github.com/pytest-dev/pytest/issues/4957>`_: ``-p no:plugin`` is handled correctly for default (internal) plugins now, e.g. with ``-p no:capture``. Previously they were loaded (imported) always, making e.g. the ``capfd`` fixture available. - `4968 <https://github.com/pytest-dev/pytest/issues/4968>`_: The pdb ``quit`` command is handled properly when used after the ``debug`` command with `pdb++`_. .. _pdb++: https://pypi.org/project/pdbpp/ - `4975 <https://github.com/pytest-dev/pytest/issues/4975>`_: Fix the interpretation of ``-qq`` option where it was being considered as ``-v`` instead. - `4978 <https://github.com/pytest-dev/pytest/issues/4978>`_: ``outcomes.Exit`` is not swallowed in ``assertrepr_compare`` anymore. - `4988 <https://github.com/pytest-dev/pytest/issues/4988>`_: Close logging's file handler explicitly when the session finishes. - `5003 <https://github.com/pytest-dev/pytest/issues/5003>`_: Fix line offset with mark collection error (off by one). Improved Documentation ---------------------- - `4974 <https://github.com/pytest-dev/pytest/issues/4974>`_: Update docs for ``pytest_cmdline_parse`` hook to note availability liminations Trivial/Internal Changes ------------------------ - `4718 <https://github.com/pytest-dev/pytest/issues/4718>`_: ``pluggy>=0.9`` is now required. - `4815 <https://github.com/pytest-dev/pytest/issues/4815>`_: ``funcsigs>=1.0`` is now required for Python 2.7. - `4829 <https://github.com/pytest-dev/pytest/issues/4829>`_: Some left-over internal code related to ``yield`` tests has been removed. - `4890 <https://github.com/pytest-dev/pytest/issues/4890>`_: Remove internally unused ``anypython`` fixture from the pytester plugin. - `4912 <https://github.com/pytest-dev/pytest/issues/4912>`_: Remove deprecated Sphinx directive, ``add_description_unit()``, pin sphinx-removed-in to >= 0.2.0 to support Sphinx 2.0. - `4913 <https://github.com/pytest-dev/pytest/issues/4913>`_: Fix pytest tests invocation with custom ``PYTHONPATH``. - `4965 <https://github.com/pytest-dev/pytest/issues/4965>`_: New ``pytest_report_to_serializable`` and ``pytest_report_from_serializable`` **experimental** hooks. These hooks will be used by ``pytest-xdist``, ``pytest-subtests``, and the replacement for resultlog to serialize and customize reports. They are experimental, meaning that their details might change or even be removed completely in future patch releases without warning. Feedback is welcome from plugin authors and users alike. - `4987 <https://github.com/pytest-dev/pytest/issues/4987>`_: ``Collector.repr_failure`` respects the ``--tb`` option, but only defaults to ``short`` now (with ``auto``). ``` ### 4.3.1 ``` ========================= Bug Fixes --------- - `4810 <https://github.com/pytest-dev/pytest/issues/4810>`_: Logging messages inside ``pytest_runtest_logreport()`` are now properly captured and displayed. - `4861 <https://github.com/pytest-dev/pytest/issues/4861>`_: Improve validation of contents written to captured output so it behaves the same as when capture is disabled. - `4898 <https://github.com/pytest-dev/pytest/issues/4898>`_: Fix ``AttributeError: FixtureRequest has no 'confg' attribute`` bug in ``testdir.copy_example``. Trivial/Internal Changes ------------------------ - `4768 <https://github.com/pytest-dev/pytest/issues/4768>`_: Avoid pkg_resources import at the top-level. ``` ### 4.3.0 ``` ========================= Deprecations ------------ - `4724 <https://github.com/pytest-dev/pytest/issues/4724>`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments. This will be changed into an error in the future. Features -------- - `2753 <https://github.com/pytest-dev/pytest/issues/2753>`_: Usage errors from argparse are mapped to pytest's ``UsageError``. - `3711 <https://github.com/pytest-dev/pytest/issues/3711>`_: Add the ``--ignore-glob`` parameter to exclude test-modules with Unix shell-style wildcards. Add the ``collect_ignore_glob`` for ``conftest.py`` to exclude test-modules with Unix shell-style wildcards. - `4698 <https://github.com/pytest-dev/pytest/issues/4698>`_: The warning about Python 2.7 and 3.4 not being supported in pytest 5.0 has been removed. In the end it was considered to be more of a nuisance than actual utility and users of those Python versions shouldn't have problems as ``pip`` will not install pytest 5.0 on those interpreters. - `4707 <https://github.com/pytest-dev/pytest/issues/4707>`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks. Bug Fixes --------- - `4651 <https://github.com/pytest-dev/pytest/issues/4651>`_: ``--help`` and ``--version`` are handled with ``UsageError``. - `4782 <https://github.com/pytest-dev/pytest/issues/4782>`_: Fix ``AssertionError`` with collection of broken symlinks with packages. ``` ### 4.2.1 ``` ========================= Bug Fixes --------- - `2895 <https://github.com/pytest-dev/pytest/issues/2895>`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``. - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module. - `4347 <https://github.com/pytest-dev/pytest/issues/4347>`_: Fix output capturing when using pdb++ with recursive debugging. - `4592 <https://github.com/pytest-dev/pytest/issues/4592>`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``. - `4700 <https://github.com/pytest-dev/pytest/issues/4700>`_: Fix regression where ``setUpClass`` would always be called in subclasses even if all tests were skipped by a ``unittest.skip()`` decorator applied in the subclass. - `4739 <https://github.com/pytest-dev/pytest/issues/4739>`_: Fix ``parametrize(... ids=<function>)`` when the function returns non-strings. - `4745 <https://github.com/pytest-dev/pytest/issues/4745>`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file. - `4770 <https://github.com/pytest-dev/pytest/issues/4770>`_: ``more_itertools`` is now constrained to <6.0.0 when required for Python 2.7 compatibility. - `526 <https://github.com/pytest-dev/pytest/issues/526>`_: Fix "ValueError: Plugin already registered" exceptions when running in build directories that symlink to actual source. Improved Documentation ---------------------- - `3899 <https://github.com/pytest-dev/pytest/issues/3899>`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins. - `4324 <https://github.com/pytest-dev/pytest/issues/4324>`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises. - `4709 <https://github.com/pytest-dev/pytest/issues/4709>`_: Document how to customize test failure messages when using ``pytest.warns``. Trivial/Internal Changes ------------------------ - `4741 <https://github.com/pytest-dev/pytest/issues/4741>`_: Some verbosity related attributes of the TerminalReporter plugin are now read only properties. ``` ### 4.2.0 ``` ========================= Features -------- - `3094 <https://github.com/pytest-dev/pytest/issues/3094>`_: `Classic xunit-style <https://docs.pytest.org/en/latest/xunit_setup.html>`__ functions and methods now obey the scope of *autouse* fixtures. This fixes a number of surprising issues like ``setup_method`` being called before session-scoped autouse fixtures (see `517 <https://github.com/pytest-dev/pytest/issues/517>`__ for an example). - `4627 <https://github.com/pytest-dev/pytest/issues/4627>`_: Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer support those Python versions. - `4660 <https://github.com/pytest-dev/pytest/issues/4660>`_: The number of *selected* tests now are also displayed when the ``-k`` or ``-m`` flags are used. - `4688 <https://github.com/pytest-dev/pytest/issues/4688>`_: ``pytest_report_teststatus`` hook now can also receive a ``config`` parameter. - `4691 <https://github.com/pytest-dev/pytest/issues/4691>`_: ``pytest_terminal_summary`` hook now can also receive a ``config`` parameter. Bug Fixes --------- - `3547 <https://github.com/pytest-dev/pytest/issues/3547>`_: ``--junitxml`` can emit XML compatible with Jenkins xUnit. ``junit_family`` INI option accepts ``legacy|xunit1``, which produces old style output, and ``xunit2`` that conforms more strictly to https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd - `4280 <https://github.com/pytest-dev/pytest/issues/4280>`_: Improve quitting from pdb, especially with ``--trace``. Using ``q[quit]`` after ``pdb.set_trace()`` will quit pytest also. - `4402 <https://github.com/pytest-dev/pytest/issues/4402>`_: Warning summary now groups warnings by message instead of by test id. This makes the output more compact and better conveys the general idea of how much code is actually generating warnings, instead of how many tests call that code. - `4536 <https://github.com/pytest-dev/pytest/issues/4536>`_: ``monkeypatch.delattr`` handles class descriptors like ``staticmethod``/``classmethod``. - `4649 <https://github.com/pytest-dev/pytest/issues/4649>`_: Restore marks being considered keywords for keyword expressions. - `4653 <https://github.com/pytest-dev/pytest/issues/4653>`_: ``tmp_path`` fixture and other related ones provides resolved path (a.k.a real path) - `4667 <https://github.com/pytest-dev/pytest/issues/4667>`_: ``pytest_terminal_summary`` uses result from ``pytest_report_teststatus`` hook, rather than hardcoded strings. - `4669 <https://github.com/pytest-dev/pytest/issues/4669>`_: Correctly handle ``unittest.SkipTest`` exception containing non-ascii characters on Python 2. - `4680 <https://github.com/pytest-dev/pytest/issues/4680>`_: Ensure the ``tmpdir`` and the ``tmp_path`` fixtures are the same folder. - `4681 <https://github.com/pytest-dev/pytest/issues/4681>`_: Ensure ``tmp_path`` is always a real path. Trivial/Internal Changes ------------------------ - `4643 <https://github.com/pytest-dev/pytest/issues/4643>`_: Use ``a.item()`` instead of the deprecated ``np.asscalar(a)`` in ``pytest.approx``. ``np.asscalar`` has been `deprecated <https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rstnew-deprecations>`__ in ``numpy 1.16.``. - `4657 <https://github.com/pytest-dev/pytest/issues/4657>`_: Copy saferepr from pylib - `4668 <https://github.com/pytest-dev/pytest/issues/4668>`_: The verbose word for expected failures in the teststatus report changes from ``xfail`` to ``XFAIL`` to be consistent with other test outcomes. ``` ### 4.1.1 ``` ========================= Bug Fixes --------- - `2256 <https://github.com/pytest-dev/pytest/issues/2256>`_: Show full repr with ``assert a==b`` and ``-vv``. - `3456 <https://github.com/pytest-dev/pytest/issues/3456>`_: Extend Doctest-modules to ignore mock objects. - `4617 <https://github.com/pytest-dev/pytest/issues/4617>`_: Fixed ``pytest.warns`` bug when context manager is reused (e.g. multiple parametrization). - `4631 <https://github.com/pytest-dev/pytest/issues/4631>`_: Don't rewrite assertion when ``__getattr__`` is broken Improved Documentation ---------------------- - `3375 <https://github.com/pytest-dev/pytest/issues/3375>`_: Document that using ``setup.cfg`` may crash other tools or cause hard to track down problems because it uses a different parser than ``pytest.ini`` or ``tox.ini`` files. Trivial/Internal Changes ------------------------ - `4602 <https://github.com/pytest-dev/pytest/issues/4602>`_: Uninstall ``hypothesis`` in regen tox env. ``` ### 4.1.0 ``` ========================= Removals -------- - `2169 <https://github.com/pytest-dev/pytest/issues/2169>`_: ``pytest.mark.parametrize``: in previous versions, errors raised by id functions were suppressed and changed into warnings. Now the exceptions are propagated, along with a pytest message informing the node, parameter value and index where the exception occurred. - `3078 <https://github.com/pytest-dev/pytest/issues/3078>`_: Remove legacy internal warnings system: ``config.warn``, ``Node.warn``. The ``pytest_logwarning`` now issues a warning when implemented. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlconfig-warn-and-node-warn>`__ on information on how to update your code. - `3079 <https://github.com/pytest-dev/pytest/issues/3079>`_: Removed support for yield tests - they are fundamentally broken because they don't support fixtures properly since collection and test execution were separated. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlyield-tests>`__ on information on how to update your code. - `3082 <https://github.com/pytest-dev/pytest/issues/3082>`_: Removed support for applying marks directly to values in ``pytest.mark.parametrize``. Use ``pytest.param`` instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmarks-in-pytest-mark-parametrize>`__ on information on how to update your code. - `3083 <https://github.com/pytest-dev/pytest/issues/3083>`_: Removed ``Metafunc.addcall``. This was the predecessor mechanism to ``pytest.mark.parametrize``. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlmetafunc-addcall>`__ on information on how to update your code. - `3085 <https://github.com/pytest-dev/pytest/issues/3085>`_: Removed support for passing strings to ``pytest.main``. Now, always pass a list of strings instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpassing-command-line-string-to-pytest-main>`__ on information on how to update your code. - `3086 <https://github.com/pytest-dev/pytest/issues/3086>`_: ``[pytest]`` section in **setup.cfg** files is no longer supported, use ``[tool:pytest]`` instead. ``setup.cfg`` files are meant for use with ``distutils``, and a section named ``pytest`` has notoriously been a source of conflicts and bugs. Note that for **pytest.ini** and **tox.ini** files the section remains ``[pytest]``. - `3616 <https://github.com/pytest-dev/pytest/issues/3616>`_: Removed the deprecated compat properties for ``node.Class/Function/Module`` - use ``pytest.Class/Function/Module`` now. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlinternal-classes-accessed-through-node>`__ on information on how to update your code. - `4421 <https://github.com/pytest-dev/pytest/issues/4421>`_: Removed the implementation of the ``pytest_namespace`` hook. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-namespace>`__ on information on how to update your code. - `4489 <https://github.com/pytest-dev/pytest/issues/4489>`_: Removed ``request.cached_setup``. This was the predecessor mechanism to modern fixtures. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcached-setup>`__ on information on how to update your code. - `4535 <https://github.com/pytest-dev/pytest/issues/4535>`_: Removed the deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago. - `4543 <https://github.com/pytest-dev/pytest/issues/4543>`_: Removed support to define fixtures using the ``pytest_funcarg__`` prefix. Use the ``pytest.fixture`` decorator instead. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlpytest-funcarg-prefix>`__ on information on how to update your code. - `4545 <https://github.com/pytest-dev/pytest/issues/4545>`_: Calling fixtures directly is now always an error instead of a warning. See our `docs <https://docs.pytest.org/en/latest/deprecations.htmlcalling-fixtures-directly>`__ on information…
rel.0.8.18 (2021-01-09) Other * Merge branch 'onedrive-token' into 'master' [Kenneth Loafman] * Onedrive: Support using an external client id / refresh token. [Michael Terry] * Update .gitlab-ci.yml to need code test to pass. [Kenneth Loafman] * Merge branch 'master' of git@gitlab.com:duplicity/duplicity.git. [Kenneth Loafman] * Fix issue 26 Backend b2 backblaze fails with nameprefix restrictions. [Kenneth Loafman] * Fix issue 29 Backend b2 backblaze fails with nameprefix restrictions. [Kenneth Loafman] * Fix unadorned strings. [Kenneth Loafman] * Merge branch 'Rufflewind-master-patch-11811' into 'master' [Kenneth Loafman] * Report errors if B2 backend does exist but otherwise fails to import. [Phil Ruffwind] * Add report.xml. [Kenneth Loafman] * Remove basepython in code and coverage tests. [Kenneth Loafman] * Fix pep8 warning. [Kenneth Loafman] * Added option --log-timestamp to prepend timestamp to log entry. [Kenneth Loafman] * Merge branch 'master' of gitlab.com:duplicity/duplicity. [Kenneth Loafman] * Merge branch 'master' into 'master' [Kenneth Loafman] * Improve. [Gwyn Ciesla] * Change version for LP. [Kenneth Loafman] * Change version for LP. [Kenneth Loafman] * Improve patch for Python 3.10. [Gwyn Ciesla] * Conditionalize for Python version. [Gwyn Ciesla] * Patch for Python 3.10. [Gwyn Ciesla] rel.0.8.17 (2020-11-11) Other * Fixup ignore\_regexps for optional text. [Kenneth Loafman] * Fix issue 26 (again) - duplicity does not clean up par2 files. [Kenneth Loafman] * Fix issue 26 - duplicity does not clean up par2 files. [Kenneth Loafman] * Fix issue 25 - Multibackend not deleting files. [Kenneth Loafman] * Adjust setup.py for changelog changes. [Kenneth Loafman] * Delete previous manual changelogs. [Kenneth Loafman] * Tools to make a CHANGELOG.md from git commits. [Kenneth Loafman] * Merge branch 'exc-if-present-robust' into 'master' [Kenneth Loafman] * Make exclude-if-present more robust. [Michael Terry] * Merge branch 'no-umask' into 'master' [Kenneth Loafman] * Drop default umask of 0077. [Michael Terry] * Comment out RsyncBackendTest, again. [Kenneth Loafman] * Fix some unadorned strings. [Kenneth Loafman] * Fixed RsyncBackendTeest with proper URL. [Kenneth Loafman] * Merge branch 'Yump-issue-23' into 'master' [Kenneth Loafman] * Fix issue 23. [Yump] * Rclonebackend now logs at the same logging level as duplicity. [Kenneth Loafman] * Allow sign-build to fail on walk away. Need passwordless option. [Kenneth Loafman] * Merge branch 'fix-rename' into 'master' [Kenneth Loafman] * Fix --rename typo. [Michael Terry] * Move back to VM build, not remote. Too many issues with remote. [Kenneth Loafman] * Merge branch 'escape-quote' into 'master' [Kenneth Loafman] * Escape single quotes in machine-readable log messages. [Michael Terry] * Uncomment review-tools for snap. [Kenneth Loafman] * Whoops, missing wildcard '*'. [Kenneth Loafman] * Changes to allow remote build of snap on LP. [Kenneth Loafman] * Changes to allow remote build of snap on LP. [Kenneth Loafman] * Add a pylint disable-import-error flag. [Kenneth Loafman] * Change urllib2 to urllib.request in parse\_digest\_challenge(). [Kenneth Loafman] * Fix Python 3.9 test in .gitlab-ci.yaml. [Kenneth Loafman] * Fix Python 3.9 test in .gitlab-ci.yaml. [Kenneth Loafman] * Add Python 3.9 to .gitlab-ci.yaml. [Kenneth Loafman] * Add Python 3.9 to the test suite. It tests sucessfuly. [Kenneth Loafman] * Fix bug 1893481 again for Python2. Missed include. [Kenneth Loafman] * Fix bug 1893481 Error when logging improperly encoded filenames. [Kenneth Loafman] * Change version for LP. [Kenneth Loafman] rel.0.8.16 (2020-09-29) Other * Merged in s3-unfreeze-all. [Kenneth Loafman] * Merge branch 's3-unfreeze-all' into 'master' [Kenneth Loafman] * Wait for Glacier batch unfreeze to finish. [Marco Herrn] * Adorn string as unicode. [Marco Herrn] * Utilize ThreadPoolExecutor for S3 glacier unfreeze. [Marco Herrn] * Refine codestyle according to PEP-8. [Marco Herrn] * Adorn strings as unicode. [Marco Herrn] * S3 unfreeze all files at once. [Marco Herrn] * Add boto3 to list of requirements. [Kenneth Loafman] * Remove ancient CVS Id macro. [Kenneth Loafman] * Merged in OutlawPlz:paramiko-progress. [Kenneth Loafman] * Merge branch 'paramiko-progress' into 'master' [Kenneth Loafman] * Fixes paramiko backend progress bar. [Matteo Palazzo] * Merged in lazy init for Boto3 network connections. [Kenneth Loafman] * Merge branch 'feature/lazy\_init\_boto3' into 'master' [Kenneth Loafman] * Initial crack at lazy init for Boto3. [Carl Alexander Adams] * Merge branch 'hostname' into 'master' [Kenneth Loafman] * Record the hostname, not the fqdn, in manifest files. [Michael Terry] * Merge branch 'listdir-contains' into 'master' [Kenneth Loafman] * Avoid calling stat when checking for exclude-if-present files. [Michael Terry] * Fix build control files after markdown conversion. [Kenneth Loafman] * Recover some changes lost after using web-ide. [Kenneth Loafman] * Paperwork. [Kenneth Loafman] * Merge branch 's3-boto3-region-and-endpoint' into 'master' [Kenneth Loafman] * Set default values for s3\_region\_name and s3\_endpoint\_url. [Marco Herrn] * Allow setting s3 region and endpoint. [Marco Herrn] * Update README-REPO.md. [Kenneth Loafman] * Make code view consistent. [Kenneth Loafman] * Update setup.py. [Kenneth Loafman] * Update README.md. [Kenneth Loafman] * Paperwork. [Kenneth Loafman] * Revert "Merge branch 's3-boto3-region-and-endpoint' into 'master'" [Kenneth Loafman] * Bump version for LP dev build. [Kenneth Loafman] rel.0.8.15 (2020-07-27) Other * Always paperwork. [Kenneth Loafman] * Merge branch 's3-boto3-region-and-endpoint' into 'master' [Kenneth Loafman] * Allow setting s3 region and endpoint. [Marco Herrn] * Merge branch 'pydrive-notfound' into 'master' [Kenneth Loafman] * Fix missing FileNotUploadedError in pydrive backend. [Martin Sucha] * Merge branch 'pydriveshared' into 'master' [Kenneth Loafman] * Fixed indentation. [Joshua Chan] * Added shared drive support to existing `pydrive` backend instead of a new backend. [Joshua Chan] * PydriveShared backend is identical to Pydrive backend, except that it works on shared drives rather than personal drives. [Joshua Chan] * Include the query when parsing the backend URL string, so users can use it to pass supplementary info to the backend. [Joshua Chan] * Fix caps on X-Python-Version. [Kenneth Loafman] * Fix issue 10 - ppa:duplicity-*-git fails to install on Focal Fossa. [Kenneth Loafman] * Merge branch 'patch-2' into 'master' [Kenneth Loafman] * Remove python-cloudfiles from suggestions. [Jairo Llopis] * Merge branch 'patch-1' into 'master' [Kenneth Loafman] * Update azure requirement. [Jairo Llopis] * Fix bug 1211481 with merge from Raffaele Di Campli. [Kenneth Loafman] * Merge branch 'master' into 'master' [Kenneth Loafman] * Added `--do-not-restore-ownership` option. [Jacotsu] * Fix bug 1887689 with patch from Matthew Barry. [Kenneth Loafman] * Bump version for LP build. [Kenneth Loafman] * Merge branch 'fix-glacier-check' into 'master' [Kenneth Loafman] * Fix check for s3 glacier/deep. [Michael Terry] * Change from push to upload. [Kenneth Loafman] * Add specific version for six. [Kenneth Loafman] rel.0.8.14 (2020-07-04) Other * Set deprecation version to 0.9.0 for short filenames. [Kenneth Loafman] * Fixes for issue 7, par2backend produces badly encoded filenames. [Kenneth Loafman] * Added a couple of fsdecode calls for issue 7. [Kenneth Loafman] * Generalize exception for failed get\_version() on LaunchPad. [Kenneth Loafman] * Ignore *.so files. [Kenneth Loafman] * Update docs. [Kenneth Loafman] * Catch up on paperwork. [Kenneth Loafman] * Merge branch 'mikix/rename-fix' into 'master' [Kenneth Loafman] * Fix --rename encoding. [Michael Terry] * Merge remote-tracking branch 'team/fix-py27-testing' [Kenneth Loafman] * Skip tests failing on py27 under 18.04 (timing error). [Kenneth Loafman] * Fix code style issue. [Kenneth Loafman] * Add PATHS\_FROM\_ECLIPSE\_TO\_PYTHON to environ whan starting pydevd. [Kenneth Loafman] * Add *.pyc to .gitignore. [Kenneth Loafman] * Replace compilec.py with 'setup.py build\_ext', del compilec.py. [Kenneth Loafman] * Fix unadorned string. [Kenneth Loafman] * Fix usage of TOXPYTHON and overrides/bin shebangs. [Kenneth Loafman] * Use default 'before\_script' for py27. [Kenneth Loafman] * Don't collect coverage unless needed. [Kenneth Loafman] * Merge branch 'master' into 'master' [Kenneth Loafman] * Support PyDrive2 library in the pydrive backend. [Jindrich Makovicka] * Merge branch 'Tidy\_up\_gitlab\_CI\_doc' into 'master' [Kenneth Loafman] * Tidy .gitlab-ci.yml, fix py3.5 test, add py2.7 test (allowed to fail) [Aaron Whitehouse] * Merge branch 'fix-py27-CI' [Kenneth Loafman] * Test code instead of py27 since py27 is tested elsewhere. [Kenneth Loafman] * Fix RdiffdirTest to use TOXPYTHON as well. [Kenneth Loafman] * Set TOXPYTHON before tests. [Kenneth Loafman] * Put TOXPYTHON in passed environment. [Kenneth Loafman] * More fixes for bug 1877885 - Catch quota overflow on Mega upload. [Kenneth Loafman] * More fixes for bug 1877885 - Catch quota overflow on Mega upload. [Kenneth Loafman] * Undo: Try forcing python version to match tox testing version. [Kenneth Loafman] * Always upgrade pip. [Kenneth Loafman] * Try forcing python version to match tox testing version. [Kenneth Loafman] * Uncomment all tests. [Kenneth Loafman] * Test just py27 for now. [Kenneth Loafman] * Replace bzr with git. [Kenneth Loafman] * Don't load repo version of future, let pip do it. [Kenneth Loafman] * Hmmm, Gitlab yaml does not like continuation lines. Fix it. [Kenneth Loafman] * Fix typo. [Kenneth Loafman] * Update to use pip as module and add py35 test. [Kenneth Loafman] * Add py35 to CI tests. [Kenneth Loafman] * More changes to support Xenial. [Kenneth Loafman] * Fix typo. [Kenneth Loafman] * Fix duplicity to run under Python 3.5. [Kenneth Loafman] * Fix duplicity to run under Python 3.5. [Kenneth Loafman] * Merge branch 'add\_gitlab\_testing' into 'master' [Kenneth Loafman] * Update .gitlab-ci.yml to update pip before installing other pip packages (to try to fix more-itertools issue: pytest-dev/pytest#4770 ) [Aaron Whitehouse] * Don't include .git dir when building docker images. [Kenneth Loafman] * Merge branch 'update\_pip\_before\_install' into 'master' [Kenneth Loafman] * Upgrade pip before installing requirements with it. Fixes more-itertools error as newer versions of pip identify that the latest more-itertools are incompatible with python 2. [Aaron Whitehouse] * Patched in a megav2backend.py to update to MEGAcmd tools. [Kenneth Loafman] * Change log.Warning to log.Warn. Whoops! [Kenneth Loafman] * Fixed bug 1875937 - validate\_encryption\_settings() fails w/S3 glacier. [Kenneth Loafman] * Restore commented our backend requirements. [Kenneth Loafman] * Fixes for rclonebackend from Francesco Magno (original author) [Kenneth Loafman] * Version man pages during setup.py install. [Kenneth Loafman] * More fixes for Launchpad build limitations. [Kenneth Loafman] * More fixes for Launchpad build limitations. [Kenneth Loafman] * Move setuptools\_scm to setup\_requires. [Kenneth Loafman] * Back off requirements for fallback\_version in setup.py. [Kenneth Loafman] * Add some requirements for LP build. [Kenneth Loafman] * Make sure we get six from pip to support dropbox. [Kenneth Loafman] * Provide fallback\_version for Launchpad builder. [Kenneth Loafman] * Remove python3-setuptools-scm from setup.py. [Kenneth Loafman] * Add python3-setuptools-scm to debian/control. [Kenneth Loafman] * Try variation with hyphen seperator. [Kenneth Loafman] * Try python3\_setuptools\_scm (apt repo name). Probably too old. [Kenneth Loafman] * Add setuptools\_scm to install\_requires. [Kenneth Loafman] rel.0.8.13 (2020-05-05) Other * Fixed release date. [Kenneth Loafman] * Fixed bug 1876446 - WebDAV backend creates only tiny or 0 Byte files. [Kenneth Loafman] * Fix to run with --dist-dir command. [Kenneth Loafman] * Fixed bug 1876778 - byte/str issues in megabackend.py. [Kenneth Loafman] * Fix to use 'setup.py develop' instead of sdist. [Kenneth Loafman] * Fix to run with --dist-dir command. [Kenneth Loafman] * Fixed bug 1875529 - Support hiding instead of deletin on B2. [Kenneth Loafman] * Uncomment upload and sign. [Kenneth Loafman] * Reworked versioning to be git tag based. [Kenneth Loafman] * Migrate bzr to git. [Kenneth Loafman] * Fixed bug 1872332 - NameError in ssh\_paramiko\_backend.py. [ken] * Fix spelling error. [ken] * Fixed bug 1869921 - B2 backup resume fails for TypeError. [ken] * Merged in lp:\~kenneth-loafman/duplicity/duplicity-pylint - Enable additional pylint warnings. Make 1st pass at correction. unused-argument, unused-wildcard-import, redefined-builtin, bad-indentation, mixed-indentation, unreachable - Renamed globals to config to fix conflict with \_\_builtin\_\_.glogals() - Resolved conflict between duplicity.config and testing.manual.config - Normalized emacs mode line to have encoding:utf8 on all *.py files. [ken] * More changes for pylint. * Resolved conflict between duplicity.config and testing.manual.config * Normalized emacs mode line to have encoding:utf8 on all *.py files. [Kenneth Loafman] * More changes for pylint. * Remove copy.com refs. [Kenneth Loafman] * More changes for pylint. [Kenneth Loafman] * More changes for pylint. [Kenneth Loafman] * Enable additional pylint warnings. Make 1st pass at correction. - unused-argument, unused-wildcard-import, redefined-builtin, bad-indentation, mixed-indentation. [Kenneth Loafman] * Fixed bug 1868414 - timeout parameter not passed to BlobService for Azure backend. [Kenneth Loafman] rel.0.8.12 (2020-03-19) Other * Merged in translation updates * Prep for 0.8.12. [Kenneth Loafman] * Fixed bug 1867742 - TypeError: fsdecode() takes 1 positional argument but 2 were given with PCA backend. [Kenneth Loafman] * Fixed bug 1867529 - UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128) with PCA. [Kenneth Loafman] * Fixed bug 1867468 - UnboundLocalError (local variable 'ch\_err' referenced before assignment) in ssh\_paramiko\_backend.py. [Kenneth Loafman] * Fixed bug 1867444 - UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128) using PCA backend. [Kenneth Loafman] * Fixed bug 1867435 - TypeError: must be str, not bytes using PCA backend. [Kenneth Loafman] * Move pylint config from test\_code to pylintrc. [Kenneth Loafman] * Cleaned up some setup issues where the man pages and snapcraft.yaml were not getting versioned. [Kenneth Loafman] * Fixed bug 1769267 - [enhancement] please consider using rclone as backend. [Kenneth Loafman] * Fixed bug 1755955 - best order is unclear, of exclude-if-present and exclude-device-files - Removed warning and will now allow these two to be in any order. If encountered outside of the first two slots, duplicity will silently move them to be in the first two slots. Within those two slots the order does not matter. [ken] * Fixed a couple of file history bugs: - 1044715 Provide a file history feature + removed neutering done between series - 1526557 --file-changed does not work + fixed str/bytes issue finding filename. [ken] * Fixed bug 1865648 - module 'multiprocessing.dummy' has no attribute 'cpu\_count'. - replaced with module psutil for cpu\_count() only - appears Arch Linux does not support multiprocessing. [ken] * Mod to get focal build on LP working. [ken] * Mod to get focal build on LP working. [ken] * Mod to get focal build on LP working. [ken] rel.0.8.11 (2020-02-24) Other * Merged in translation updates. [ken] * Fixed to work around par2 0.8.1 core dump on short name - Parchive/par2cmdline#145. [ken] * Fixed bug 1857818 - startswith first arg must be bytes - use util.fsdecode on filename. [ken] * Fixed bug 1863018 - mediafire backend fails on py3 - Fixed handling of bytes filename in url. [ken] * Add rclone requirement to snapcraft.yaml. [ken] * Fixed bug 1236248 - --extra-clean clobbers old backups - Removed --extra-clean, code, and docs. [ken] * Fixed bug 1862672 - test\_log does not respect TMPDIR - Patch supplied by Jan Tojnar. [ken] * Fixed bug 1860405 - Auth mechanism not supported - Added python3-boto3 requirement to snapcraft.yaml. [ken] * More readthedocs munges. [ken] * Don't format the po files for readthedocs. [ken] * Add readthedocs.yaml config file, try 3. [ken] * Add readthedocs.yaml config file, try 2. [ken] * Add readthedocs.yaml config file. [ken] * Remove intltool for readthedocs builder. [ken] * Add python-gettext for readthedocs builder. [ken] * Add gettext/intltool for readthedocs builder. [ken] * Add gettext for readthedocs builder. [ken] * Add intltool for readthedocs builder. [ken] * Add intltools for readthedocs builder. [ken] * Add intltools for readthedocs builder. [ken] * Point readthedocs.io to this repo. [ken] * Renamed botobackend.py to s3\_boto\_backend.py. [ken] * Renamed botobackend.py to s3\_boto\_backend.py. [ken] * Merged from parent to bring in changes. [Byron Hammond] * Renamed MulitGzipFile to GzipFile to avoid future problems with upstream author of mgzip fixing the Mulit -> Multi typo. [Byron Hammond] * Adding missed mgzip import and adjusting untouched unit tests. [Byron Hammond] * Adding multi-core support by using mgzip instead of gzip. [Byron Hammond] * Missing comma. [ken] * Some code cleanup and play with docs. [ken] * Uncomment snapcraft sign-build. Seems it's fixed now. [ken] * Fix argument order on review-tools. [ken] * Reworked setup.py to build a pip-compatible distribution tarball of duplicity. * Added dist/makepip for convenience. [ken] * Adjust Dockerfiles to new requirements. [ken] * Fix - Removing old backup chains fails using pexpect+sftp. [ken] * Adjust Dockerfiles to new requirements. [ken] * Enhance setup.py/cfg to allow install by pip. [ken] * Enhance setup.py/cfg to allow install by pip. [ken] * Enhance setup.py/cfg to allow install by pip. [ken] * Bump version. [Kenneth Loafman] * Gave up fighting the fascist version control munging on snapcraft.io. Duplicity now has the form 0.8.10.1558, where the last number is the bzr revno. Can't do something nice like having a dev/fin indicator like 0.8.10dev1558 for dev versions and a fin for release or final. [Kenneth Loafman]
We are seeing issues with new installations of pytest-4.2, as it pulls in more-itertools-6.0.0 (which was released about 2 hours ago at the time of writing this issue).
Is there any way we can lock in pytest-4.2 to use more-itertools-5.0.0 to maintain the python 2.7 compatability?
Here are the errors we are seeing with pytest-4.2 and more-itertools-6.0.0:
And here is a link to more-itertools release history, indicating that python 2.7 is not supported with more-itertools-6.0.0:
https://pypi.org/project/more-itertools/6.0.0/
The text was updated successfully, but these errors were encountered: