Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Drop unittest2 support #5565

Merged
merged 1 commit into from Jul 12, 2019

Conversation

@nicoddemus
Copy link
Member

commented Jul 5, 2019

unittest2 is a backport for Python <=3.2, so we no longer need
to support it (last release was in 2015).

I suspect it has not been used at all by users after 5.0 has been released.

@codecov

This comment has been minimized.

Copy link

commented Jul 5, 2019

Codecov Report

Merging #5565 into features will increase coverage by 1.35%.
The diff coverage is 90.9%.

Impacted file tree graph

@@             Coverage Diff              @@
##           features    #5565      +/-   ##
============================================
+ Coverage      94.7%   96.05%   +1.35%     
============================================
  Files           117      117              
  Lines         25645    25638       -7     
  Branches       2502     2501       -1     
============================================
+ Hits          24286    24627     +341     
+ Misses         1039      704     -335     
+ Partials        320      307      -13
Impacted Files Coverage Δ
src/_pytest/nose.py 95% <ø> (-2.06%) ⬇️
src/_pytest/unittest.py 95.1% <100%> (+5.72%) ⬆️
testing/test_unittest.py 99.08% <100%> (ø) ⬆️
src/_pytest/runner.py 97.61% <80%> (-0.39%) ⬇️
testing/test_pytester.py 89.24% <0%> (+0.58%) ⬆️
src/_pytest/pytester.py 90.96% <0%> (+1.03%) ⬆️
src/_pytest/capture.py 94.75% <0%> (+1.31%) ⬆️
testing/test_terminal.py 99.84% <0%> (+1.4%) ⬆️
src/_pytest/terminal.py 93.02% <0%> (+2.27%) ⬆️
... and 2 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 666acc9...24a66db. Read the comment docs.

@Zac-HD
Zac-HD approved these changes Jul 6, 2019
Copy link
Member

left a comment

👍

I'd be inclined to detect and warn on use of unittest2, since as noted it's a pointless dependency on Python 3. Possibly a follow-up issue though, as on principle I dislike reviews that suggest doing more work in the PR.

@nicoddemus

This comment has been minimized.

Copy link
Member Author

commented Jul 8, 2019

I'd be inclined to detect and warn on use of unittest2, since as noted it's a pointless dependency on Python 3.

I believe you are correct, we should deprecate it first and remove it only on pytest 6.0. I will change this PR accordingly.

@Zac-HD

This comment has been minimized.

Copy link
Member

commented Jul 8, 2019

I meant rather that we should retain a warning even after removing supoort, to explicitly notify users that they no longer need that dependency (and that Pytest no longer supports it).

Happy to remove in 5.1 personally, but 6.0 would be fine too.

@nicoddemus

This comment has been minimized.

Copy link
Member Author

commented Jul 8, 2019

Will wait for #5529 to be merged first before getting back to this.

@nicoddemus nicoddemus changed the title Drop unittest2 support WIP Drop unittest2 support Jul 8, 2019

@nicoddemus nicoddemus force-pushed the nicoddemus:drop-unittest2 branch from 64965ba to af31a76 Jul 9, 2019

@nicoddemus

This comment has been minimized.

Copy link
Member Author

commented Jul 9, 2019

Strangely, even after removing "unittest2" from the only place where it is used under src:

def get_skip_exceptions():
skip_classes = set()
for module_name in ("unittest", "unittest2", "nose"):
mod = sys.modules.get(module_name)
if hasattr(mod, "SkipTest"):
skip_classes.add(mod.SkipTest)
return tuple(skip_classes)

My simple tests still work. Just pushing a commit removing unittest2 from the list of supported skip exceptions to see where we break.

@nicoddemus

This comment has been minimized.

Copy link
Member Author

commented Jul 9, 2019

Ahh I see, unittest2.TestCase subclasses unittest.TestCase, and it seems all pytest features (like skip) only really depend on attributes obtained from TestCase instances.

For example, skipping works by adding an __unittest_skip__ attribute to the test function:

def skip(reason):
    """
    Unconditionally skip a test.
    """
    def decorator(test_item):
        if not isinstance(test_item, type):
            @functools.wraps(test_item)
            def skip_wrapper(*args, **kwargs):
                raise SkipTest(reason)
            test_item = skip_wrapper

        test_item.__unittest_skip__ = True
        test_item.__unittest_skip_why__ = reason
        return test_item
    return decorator

(https://github.com/python/cpython/blob/6aeb2fe606408aae14c246470794f1303b3be812/Lib/unittest/case.py#L111-L125)

Both unittest.skip and unittest2.skip work in the same way, and that's what we check.

This means we don't actually need any explicit unittest2 support since Python 2.7 at all. 😅

@Zac-HD

This comment has been minimized.

Copy link
Member

commented Jul 10, 2019

Right then... I think we can just delete tbat line and we're done!

@nicoddemus

This comment has been minimized.

Copy link
Member Author

commented Jul 10, 2019

@asottile

This comment has been minimized.

Copy link
Member

commented Jul 10, 2019

Seems fine, especially that it still mysteriously works heh

@nicoddemus nicoddemus force-pushed the nicoddemus:drop-unittest2 branch 2 times, most recently from 209f315 to 7c347d8 Jul 11, 2019



def pytest_runtest_makereport(item, call):
if call.excinfo and call.excinfo.errisinstance(get_skip_exceptions()):

This comment has been minimized.

Copy link
@nicoddemus

nicoddemus Jul 11, 2019

Author Member

This code was moved to unittest.py as I think it makes more sense there.

@nicoddemus nicoddemus changed the title WIP Drop unittest2 support Drop unittest2 support Jul 11, 2019

@nicoddemus nicoddemus requested review from asottile and Zac-HD Jul 11, 2019

@nicoddemus nicoddemus force-pushed the nicoddemus:drop-unittest2 branch from 7c347d8 to 79a84ee Jul 11, 2019

Remove support code for unittest 2
Also moved a pytest_runtest_makereport hook implemented in
nose.py, but nowadays makes more sense to be implemented in
unittest.py

@nicoddemus nicoddemus force-pushed the nicoddemus:drop-unittest2 branch from 79a84ee to 24a66db Jul 11, 2019

@nicoddemus nicoddemus merged commit 4868d0d into pytest-dev:features Jul 12, 2019

4 of 5 checks passed

codecov/patch 90.9% of diff hit (target 94.7%)
Details
WIP Ready for review
Details
codecov/project 96.05% (+1.35%) compared to 666acc9
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
pytest-CI #20190711.11 succeeded
Details

@nicoddemus nicoddemus deleted the nicoddemus:drop-unittest2 branch Jul 12, 2019

bors bot added a commit to rehandalal/therapist that referenced this pull request Aug 19, 2019
Merge #90
90: Update pytest to 5.1.0 r=rehandalal a=pyup-bot


This PR updates [pytest](https://pypi.org/project/pytest) from **5.0.1** to **5.1.0**.



<details>
  <summary>Changelog</summary>
  
  
   ### 5.1.0
   ```
   =========================

Removals
--------

- `5180 &lt;https://github.com/pytest-dev/pytest/issues/5180&gt;`_: 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 &lt;https://docs.pytest.org/en/latest/deprecations.html&gt;`__ in the docs.


- `5565 &lt;https://github.com/pytest-dev/pytest/issues/5565&gt;`_: Removed unused support code for `unittest2 &lt;https://pypi.org/project/unittest2/&gt;`__.

  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&#39;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 &lt;https://github.com/pytest-dev/pytest/issues/new&gt;`__.


- `5615 &lt;https://github.com/pytest-dev/pytest/issues/5615&gt;`_: ``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 ``&quot;message&quot;``
  instead of ``u&quot;message&quot;``.

  Python 3 code is unlikely to pass ``bytes`` to these functions. If you do,
  please decode it to an ``str`` beforehand.



Features
--------

- `5564 &lt;https://github.com/pytest-dev/pytest/issues/5564&gt;`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``.


- `5576 &lt;https://github.com/pytest-dev/pytest/issues/5576&gt;`_: New `NUMBER &lt;https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options&gt;`__
  option for doctests to ignore irrelevant differences in floating-point numbers.
  Inspired by Sébastien Boisgérault&#39;s `numtest &lt;https://github.com/boisgera/numtest&gt;`__
  extension for doctest.



Improvements
------------

- `5471 &lt;https://github.com/pytest-dev/pytest/issues/5471&gt;`_: JUnit XML now includes a timestamp and hostname in the testsuite tag.


- `5707 &lt;https://github.com/pytest-dev/pytest/issues/5707&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4344&gt;`_: Fix RuntimeError/StopIteration when trying to collect package with &quot;__init__.py&quot; only.


- `5115 &lt;https://github.com/pytest-dev/pytest/issues/5115&gt;`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest.


- `5477 &lt;https://github.com/pytest-dev/pytest/issues/5477&gt;`_: The XML file produced by ``--junitxml`` now correctly contain a ``&lt;testsuites&gt;`` root element.


- `5523 &lt;https://github.com/pytest-dev/pytest/issues/5523&gt;`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+.


- `5524 &lt;https://github.com/pytest-dev/pytest/issues/5524&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/5537&gt;`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the
  standard library on Python 3.8+.


- `5578 &lt;https://github.com/pytest-dev/pytest/issues/5578&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/5606&gt;`_: Fixed internal error when test functions were patched with objects that cannot be compared
  for truth values against others, like ``numpy`` arrays.


- `5634 &lt;https://github.com/pytest-dev/pytest/issues/5634&gt;`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases.
  This makes ``unittest`` cases handle ``quit`` from pytest&#39;s pdb correctly.


- `5650 &lt;https://github.com/pytest-dev/pytest/issues/5650&gt;`_: Improved output when parsing an ini configuration file fails.


- `5701 &lt;https://github.com/pytest-dev/pytest/issues/5701&gt;`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``.


- `5734 &lt;https://github.com/pytest-dev/pytest/issues/5734&gt;`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions.



Improved Documentation
----------------------

- `5669 &lt;https://github.com/pytest-dev/pytest/issues/5669&gt;`_: Add docstring for ``Testdir.copy_example``.



Trivial/Internal Changes
------------------------

- `5095 &lt;https://github.com/pytest-dev/pytest/issues/5095&gt;`_: XML files of the ``xunit2`` family are now validated against the schema by pytest&#39;s own test suite
  to avoid future regressions.


- `5516 &lt;https://github.com/pytest-dev/pytest/issues/5516&gt;`_: Cache node splitting function which can improve collection performance in very large test suites.


- `5603 &lt;https://github.com/pytest-dev/pytest/issues/5603&gt;`_: Simplified internal ``SafeRepr`` class and removed some dead code.


- `5664 &lt;https://github.com/pytest-dev/pytest/issues/5664&gt;`_: When invoking pytest&#39;s own testsuite with ``PYTHONDONTWRITEBYTECODE=1``,
  the ``test_xfail_handling`` test no longer fails.


- `5684 &lt;https://github.com/pytest-dev/pytest/issues/5684&gt;`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.).
   ```
   
  
</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>
bors bot added a commit to mozilla/normandy that referenced this pull request Sep 3, 2019
Merge #1963
1963: Scheduled weekly dependency update for week 35 r=jaredkerim a=pyup-bot






### Update [botocore](https://pypi.org/project/botocore) from **1.12.200** to **1.12.220**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.12.220
   ```
   ========

* api-change:``mq``: Update mq client to latest version
* api-change:``apigatewaymanagementapi``: Update apigatewaymanagementapi client to latest version
* api-change:``ecs``: Update ecs client to latest version
   ```
   
  
  
   ### 1.12.219
   ```
   ========

* api-change:``codepipeline``: Update codepipeline client to latest version
* api-change:``application-autoscaling``: Update application-autoscaling client to latest version
* api-change:``elasticache``: Update elasticache client to latest version
* api-change:``lambda``: Update lambda client to latest version
* api-change:``ecs``: Update ecs client to latest version
   ```
   
  
  
   ### 1.12.218
   ```
   ========

* api-change:``sqs``: Update sqs client to latest version
* api-change:``globalaccelerator``: Update globalaccelerator client to latest version
* api-change:``mediaconvert``: Update mediaconvert client to latest version
   ```
   
  
  
   ### 1.12.217
   ```
   ========

* api-change:``organizations``: Update organizations client to latest version
   ```
   
  
  
   ### 1.12.216
   ```
   ========

* api-change:``ssm``: Update ssm client to latest version
* api-change:``securityhub``: Update securityhub client to latest version
   ```
   
  
  
   ### 1.12.215
   ```
   ========

* api-change:``ec2``: Update ec2 client to latest version
* api-change:``mediapackage-vod``: Update mediapackage-vod client to latest version
* api-change:``transcribe``: Update transcribe client to latest version
   ```
   
  
  
   ### 1.12.214
   ```
   ========

* api-change:``datasync``: Update datasync client to latest version
* api-change:``rds``: Update rds client to latest version
   ```
   
  
  
   ### 1.12.213
   ```
   ========

* api-change:``forecast``: Update forecast client to latest version
* api-change:``forecastquery``: Update forecastquery client to latest version
* api-change:``personalize-runtime``: Update personalize-runtime client to latest version
* api-change:``elasticache``: Update elasticache client to latest version
* api-change:``rekognition``: Update rekognition client to latest version
* api-change:``sagemaker``: Update sagemaker client to latest version
* api-change:``sqs``: Update sqs client to latest version
   ```
   
  
  
   ### 1.12.212
   ```
   ========

* api-change:``sagemaker``: Update sagemaker client to latest version
* api-change:``transfer``: Update transfer client to latest version
* api-change:``appstream``: Update appstream client to latest version
* api-change:``alexaforbusiness``: Update alexaforbusiness client to latest version
   ```
   
  
  
   ### 1.12.211
   ```
   ========

* api-change:``appmesh``: Update appmesh client to latest version
* api-change:``cur``: Update cur client to latest version
   ```
   
  
  
   ### 1.12.210
   ```
   ========

* api-change:``robomaker``: Update robomaker client to latest version
* api-change:``emr``: Update emr client to latest version
* api-change:``ecs``: Update ecs client to latest version
   ```
   
  
  
   ### 1.12.209
   ```
   ========

* api-change:``ec2``: Update ec2 client to latest version
* api-change:``appmesh``: Update appmesh client to latest version
* api-change:``athena``: Update athena client to latest version
* api-change:``codecommit``: Update codecommit client to latest version
* api-change:``glue``: Update glue client to latest version
* api-change:``storagegateway``: Update storagegateway client to latest version
   ```
   
  
  
   ### 1.12.208
   ```
   ========

* api-change:``ec2``: Update ec2 client to latest version
   ```
   
  
  
   ### 1.12.207
   ```
   ========

* api-change:``appsync``: Update appsync client to latest version
   ```
   
  
  
   ### 1.12.206
   ```
   ========

* api-change:``autoscaling``: Update autoscaling client to latest version
* api-change:``cloudwatch``: Update cloudwatch client to latest version
* api-change:``application-autoscaling``: Update application-autoscaling client to latest version
* api-change:``rekognition``: Update rekognition client to latest version
   ```
   
  
  
   ### 1.12.205
   ```
   ========

* api-change:``guardduty``: Update guardduty client to latest version
* api-change:``lex-runtime``: Update lex-runtime client to latest version
* api-change:``redshift``: Update redshift client to latest version
* api-change:``iot``: Update iot client to latest version
* api-change:``mediaconvert``: Update mediaconvert client to latest version
   ```
   
  
  
   ### 1.12.204
   ```
   ========

* api-change:``lakeformation``: Update lakeformation client to latest version
* api-change:``opsworkscm``: Update opsworkscm client to latest version
* api-change:``glue``: Update glue client to latest version
* api-change:``codebuild``: Update codebuild client to latest version
   ```
   
  
  
   ### 1.12.203
   ```
   ========

* api-change:``application-insights``: Update application-insights client to latest version
   ```
   
  
  
   ### 1.12.202
   ```
   ========

* api-change:``batch``: Update batch client to latest version
   ```
   
  
  
   ### 1.12.201
   ```
   ========

* api-change:``datasync``: Update datasync client to latest version
* api-change:``iot``: Update iot client to latest version
* api-change:``ec2``: Update ec2 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 [Faker](https://pypi.org/project/Faker) from **2.0.0** to **2.0.1**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.0.1
   ```
   ------------------------------------------------------------------------------------

* Add nationalities for locale ``pt_PT``. Thanks tng10.
* Add ``ios()`` and ``android()`` to ``user_agent`` provider. Thanks gsilvan.
* Update ``zh_CN`` provinces. Thanks casen27.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/faker
  - Changelog: https://pyup.io/changelogs/faker/
  - Repo: https://github.com/joke2k/faker
</details>





### Update [GitPython](https://pypi.org/project/GitPython) from **2.1.13** to **3.0.2**.


<details>
  <summary>Changelog</summary>
  
  
   ### 3.0.2
   ```
   =============================================

* fixes an issue with installation
   ```
   
  
  
   ### 3.0.1
   ```
   =============================================

* Fix a `performance regression &lt;https://github.com/gitpython-developers/GitPython/issues/906&gt;`_ which could make certain workloads 50% slower
* Add `currently_rebasing_on` method on `Repo`, see `the PR &lt;https://github.com/gitpython-developers/GitPython/pull/903/filesdiff-c276fc3c4df38382ec884e59657b869dR1065&gt;`_
* Fix incorrect `requirements.txt` which could lead to broken installations, see this `issue &lt;https://github.com/gitpython-developers/GitPython/issues/908&gt;`_ for details.

3.0.0 - Remove Python 2 support
===============================

Motivation for this is a patch which improves unicode handling when dealing with filesystem paths.
Python 2 compatibility was introduced to deal with differences, and I thought it would be a good idea
to &#39;just&#39; drop support right now, mere 5 months away from the official maintenance stop of python 2.7.

The underlying motivation clearly is my anger when thinking python and unicode, which was a hassle from the
start, at least in a codebase as old as GitPython, which totally doesn&#39;t handle encodings correctly in many cases.

Having migrated to using `Rust` exclusively for tooling, I still see that correct handling of encodings isn&#39;t entirely
trivial, but at least `Rust` makes clear what has to be done at compile time, allowing to write software that is pretty
much guaranteed to work once it compiles.

Again, my apologies if removing Python 2 support caused inconveniences, please see release 2.1.13 which returns it.

see the following for (most) details:
https://github.com/gitpython-developers/gitpython/milestone/27?closed=1

or run have a look at the difference between tags v2.1.12 and v3.0.0:
gitpython-developers/GitPython@2.1.12...3.0.0.

2.1.13 - Bring back Python 2.7 support
======================================

My apologies for any inconvenience this may have caused. Following semver, backward incompatible changes
will be introduced in a minor version.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/gitpython
  - Changelog: https://pyup.io/changelogs/gitpython/
  - Repo: https://github.com/gitpython-developers/GitPython
  - Docs: https://pythonhosted.org/GitPython/
</details>





### Update [google-resumable-media](https://pypi.org/project/google-resumable-media) from **0.3.2** to **0.3.3**.


<details>
  <summary>Changelog</summary>
  
  
   ### 0.3.3
   ```
   08-23-2019 14:15 PDT

 Implementation Changes
- Add a default timeout for the http_request method ([88](googleapis/google-resumable-media-python#88))
- DRY &#39;requests&#39; pin; don&#39;t shadow exception. ([83](googleapis/google-resumable-media-python#83))
- Drop a hardcoded value in an error message. ([48](googleapis/google-resumable-media-python#48))

 Documentation
- Reconstruct &#39;CHANGELOG.md&#39; from pre-releasetool era releases. ([66](googleapis/google-resumable-media-python#66))

 Internal / Testing Changes
- Use Kokoro for CI ([90](googleapis/google-resumable-media-python#90))
- Renovate: preserve semver ranges. ([82](googleapis/google-resumable-media-python#82))
- Add renovate.json ([79](googleapis/google-resumable-media-python#79))
- Fix systest bitrot. ([77](googleapis/google-resumable-media-python#77))
- Fix docs build redux. ([75](googleapis/google-resumable-media-python#75))
- Update to new nox ([57](googleapis/google-resumable-media-python#57))
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/google-resumable-media
  - Changelog: https://pyup.io/changelogs/google-resumable-media/
  - Repo: https://github.com/GoogleCloudPlatform/google-resumable-media-python
</details>





### Update [graphene](https://pypi.org/project/graphene) from **2.1.7** to **2.1.8**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.1.8
   ```
   Changelog

* Bump pinned aniso8601 version
* Allow mutations to apply the interfaces META argument to have the payload object type implement the desired interfaces
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/graphene
  - Changelog: https://pyup.io/changelogs/graphene/
  - Repo: https://github.com/graphql-python/graphene
</details>





### Update [importlib-metadata](https://pypi.org/project/importlib-metadata) from **0.19** to **0.20**.


*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/importlib-metadata
  - Docs: http://importlib-metadata.readthedocs.io/
</details>





### Update [jedi](https://pypi.org/project/jedi) from **0.14.1** to **0.15.1**.


<details>
  <summary>Changelog</summary>
  
  
   ### 0.15.1
   ```
   +++++++++++++++++++

- Small bugfix and removal of a print statement
   ```
   
  
  
   ### 0.15.0
   ```
   ====================

* Adds `only_complete_after_regex` setting
* Upgrade jedi to 0.13.3 and parso to 0.4.0
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/jedi
  - Changelog: https://pyup.io/changelogs/jedi/
  - Repo: https://github.com/davidhalter/jedi
</details>





### Update [lizard](https://pypi.org/project/lizard) from **1.16.3** to **1.16.6**.


*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/lizard
  - Changelog: https://pyup.io/changelogs/lizard/
  - Homepage: http://www.lizard.ws
</details>





### Update [protobuf](https://pypi.org/project/protobuf) from **3.9.0** to **3.9.1**.


*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/protobuf
  - Changelog: https://pyup.io/changelogs/protobuf/
  - Repo: https://github.com/protocolbuffers/protobuf/releases
  - Homepage: https://developers.google.com/protocol-buffers/
</details>





### Update [ruamel.yaml](https://pypi.org/project/ruamel.yaml) from **0.16.0** to **0.16.5**.


*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/ruamel.yaml
  - Repo: https://bitbucket.org/ruamel/yaml
</details>





### Update [setuptools](https://pypi.org/project/setuptools) from **41.0.1** to **41.2.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 41.2.0
   ```
   -------

* 479: Remove some usage of the deprecated ``imp`` module.
* 1565: Changed html_sidebars from string to list of string as per
  https://www.sphinx-doc.org/en/master/changes.htmlid58
   ```
   
  
  
   ### 41.1.0
   ```
   -------

* 1697: Moved most of the constants from setup.py to setup.cfg
* 1749: Fixed issue with the PEP 517 backend where building a source distribution would fail if any tarball existed in the destination directory.
* 1750: Fixed an issue with PEP 517 backend where wheel builds would fail if the destination directory did not already exist.
* 1756: Forse metadata-version &gt;= 1.2. when project urls are present.
* 1769: Improve ``package_data`` check: ensure the dictionary values are lists/tuples of strings.
* 1788: Changed compatibility fallback logic for ``html.unescape`` to avoid accessing ``HTMLParser.unescape`` when not necessary. ``HTMLParser.unescape`` is deprecated and will be removed in Python 3.9.
* 1790: Added the file path to the error message when a ``UnicodeDecodeError`` occurs while reading a metadata file.
* 1776: Use license classifiers rather than the license field.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/setuptools
  - Changelog: https://pyup.io/changelogs/setuptools/
  - Repo: https://github.com/pypa/setuptools
</details>





### Update [text-unidecode](https://pypi.org/project/text-unidecode) from **1.2** to **1.3**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.3
   ```
   * text-unidecode is now dual-licensed under Artistic License and GPL 1 / GPL 2+, to cause less problems for distributions. Choose license which fits better.
* Declare Python 3.7 support, don&#39;t declare Python 3.3 support
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/text-unidecode
  - Changelog: https://pyup.io/changelogs/text-unidecode/
  - Repo: https://github.com/kmike/text-unidecode/
</details>





### Update [typing](https://pypi.org/project/typing) from **3.7.4** to **3.7.4.1**.


*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/typing
  - Homepage: https://docs.python.org/3/library/typing.html
</details>





### Update [zipp](https://pypi.org/project/zipp) from **0.5.2** to **0.6.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 0.6.0
   ```
   ======

12: When adding implicit dirs, ensure that ancestral directories
are added and that duplicates are excluded.

The library now relies on
`more_itertools &lt;https://pypi.org/project/more_itertools&gt;`_.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/zipp
  - Changelog: https://pyup.io/changelogs/zipp/
  - Repo: https://github.com/jaraco/zipp
</details>





### Update [boto3](https://pypi.org/project/boto3) from **1.9.200** to **1.9.220**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.9.220
   ```
   =======

* api-change:``mq``: [``botocore``] Update mq client to latest version
* api-change:``apigatewaymanagementapi``: [``botocore``] Update apigatewaymanagementapi client to latest version
* api-change:``ecs``: [``botocore``] Update ecs client to latest version
   ```
   
  
  
   ### 1.9.219
   ```
   =======

* api-change:``codepipeline``: [``botocore``] Update codepipeline client to latest version
* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version
* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version
* api-change:``lambda``: [``botocore``] Update lambda client to latest version
* api-change:``ecs``: [``botocore``] Update ecs client to latest version
   ```
   
  
  
   ### 1.9.218
   ```
   =======

* api-change:``sqs``: [``botocore``] Update sqs client to latest version
* api-change:``globalaccelerator``: [``botocore``] Update globalaccelerator client to latest version
* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version
   ```
   
  
  
   ### 1.9.217
   ```
   =======

* api-change:``organizations``: [``botocore``] Update organizations client to latest version
   ```
   
  
  
   ### 1.9.216
   ```
   =======

* api-change:``ssm``: [``botocore``] Update ssm client to latest version
* api-change:``securityhub``: [``botocore``] Update securityhub client to latest version
   ```
   
  
  
   ### 1.9.215
   ```
   =======

* api-change:``ec2``: [``botocore``] Update ec2 client to latest version
* api-change:``mediapackage-vod``: [``botocore``] Update mediapackage-vod client to latest version
* api-change:``transcribe``: [``botocore``] Update transcribe client to latest version
   ```
   
  
  
   ### 1.9.214
   ```
   =======

* api-change:``datasync``: [``botocore``] Update datasync client to latest version
* api-change:``rds``: [``botocore``] Update rds client to latest version
   ```
   
  
  
   ### 1.9.213
   ```
   =======

* api-change:``forecast``: [``botocore``] Update forecast client to latest version
* api-change:``forecastquery``: [``botocore``] Update forecastquery client to latest version
* api-change:``personalize-runtime``: [``botocore``] Update personalize-runtime client to latest version
* api-change:``elasticache``: [``botocore``] Update elasticache client to latest version
* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version
* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version
* api-change:``sqs``: [``botocore``] Update sqs client to latest version
   ```
   
  
  
   ### 1.9.212
   ```
   =======

* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version
* api-change:``transfer``: [``botocore``] Update transfer client to latest version
* api-change:``appstream``: [``botocore``] Update appstream client to latest version
* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version
   ```
   
  
  
   ### 1.9.211
   ```
   =======

* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version
* api-change:``cur``: [``botocore``] Update cur client to latest version
   ```
   
  
  
   ### 1.9.210
   ```
   =======

* api-change:``robomaker``: [``botocore``] Update robomaker client to latest version
* api-change:``emr``: [``botocore``] Update emr client to latest version
* api-change:``ecs``: [``botocore``] Update ecs client to latest version
   ```
   
  
  
   ### 1.9.209
   ```
   =======

* api-change:``ec2``: [``botocore``] Update ec2 client to latest version
* api-change:``appmesh``: [``botocore``] Update appmesh client to latest version
* api-change:``athena``: [``botocore``] Update athena client to latest version
* api-change:``codecommit``: [``botocore``] Update codecommit client to latest version
* api-change:``glue``: [``botocore``] Update glue client to latest version
* api-change:``storagegateway``: [``botocore``] Update storagegateway client to latest version
   ```
   
  
  
   ### 1.9.208
   ```
   =======

* api-change:``ec2``: [``botocore``] Update ec2 client to latest version
   ```
   
  
  
   ### 1.9.207
   ```
   =======

* api-change:``appsync``: [``botocore``] Update appsync client to latest version
   ```
   
  
  
   ### 1.9.206
   ```
   =======

* api-change:``autoscaling``: [``botocore``] Update autoscaling client to latest version
* api-change:``cloudwatch``: [``botocore``] Update cloudwatch client to latest version
* api-change:``application-autoscaling``: [``botocore``] Update application-autoscaling client to latest version
* api-change:``rekognition``: [``botocore``] Update rekognition client to latest version
   ```
   
  
  
   ### 1.9.205
   ```
   =======

* api-change:``guardduty``: [``botocore``] Update guardduty client to latest version
* api-change:``lex-runtime``: [``botocore``] Update lex-runtime client to latest version
* api-change:``redshift``: [``botocore``] Update redshift client to latest version
* api-change:``iot``: [``botocore``] Update iot client to latest version
* api-change:``mediaconvert``: [``botocore``] Update mediaconvert client to latest version
   ```
   
  
  
   ### 1.9.204
   ```
   =======

* api-change:``lakeformation``: [``botocore``] Update lakeformation client to latest version
* api-change:``opsworkscm``: [``botocore``] Update opsworkscm client to latest version
* api-change:``glue``: [``botocore``] Update glue client to latest version
* api-change:``codebuild``: [``botocore``] Update codebuild client to latest version
   ```
   
  
  
   ### 1.9.203
   ```
   =======

* api-change:``application-insights``: [``botocore``] Update application-insights client to latest version
   ```
   
  
  
   ### 1.9.202
   ```
   =======

* api-change:``batch``: [``botocore``] Update batch client to latest version
   ```
   
  
  
   ### 1.9.201
   ```
   =======

* api-change:``datasync``: [``botocore``] Update datasync client to latest version
* api-change:``iot``: [``botocore``] Update iot client to latest version
* api-change:``ec2``: [``botocore``] Update ec2 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.2.4** to **2.2.5**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.2.5
   ```
   ==========================

*September 2, 2019*

Django 2.2.5 fixes several bugs in 2.2.4.

Bugfixes
========

* Relaxed the system check added in Django 2.2 for models to reallow use of the
  same ``db_table`` by multiple models when database routers are installed
  (🎫`30673`).

* Fixed crash of ``KeyTransform()`` for
  :class:`~django.contrib.postgres.fields.JSONField` and
  :class:`~django.contrib.postgres.fields.HStoreField` when using on
  expressions with params (🎫`30672`).

* Fixed a regression in Django 2.2 where
  :attr:`ModelAdmin.list_filter &lt;django.contrib.admin.ModelAdmin.list_filter&gt;`
  choices to foreign objects don&#39;t respect a model&#39;s ``Meta.ordering``
  (🎫`30449`).


==========================
   ```
   
  
</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-cors-headers](https://pypi.org/project/django-cors-headers) from **3.0.2** to **3.1.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 3.1.0
   ```
   ------------------

* Drop Python 2 support, only Python 3.5-3.7 is supported now.
* Fix all links for move from ``github.com/ottoyiu/django-cors-headers`` to
  ``github.com/adamchainz/django-cors-headers``.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/django-cors-headers
  - Changelog: https://pyup.io/changelogs/django-cors-headers/
  - Repo: https://github.com/adamchainz/django-cors-headers
</details>





### Update [django-countries](https://pypi.org/project/django-countries) from **5.3.3** to **5.4**.


<details>
  <summary>Changelog</summary>
  
  
   ### 5.4
   ```
   ====================

- Renamed Macedonia -&gt; North Macedonia.

- Fix an outlying ``makemigrations`` error.

- Pulled in new translations which were provided but missing from previous
  version.

- Fixed Simplified Chinese translation (needed to be ``locale/zh_Hans``).

- Introduce an optional complex format for ``COUNTRIES_ONLY`` and
  ``COUNTRIES_OVERRIDE`` to allow for multiple names for a country, a custom
  three character code, and a custom numeric country code.
   ```
   
  
</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 [google-cloud-storage](https://pypi.org/project/google-cloud-storage) from **1.17.0** to **1.19.0**.


*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/google-cloud-storage
  - Repo: https://github.com/GoogleCloudPlatform/google-cloud-python
</details>





### Update [graphene-django](https://pypi.org/project/graphene-django) from **2.4.0** to **2.5.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.5.0
   ```
   Changelog

Squeezing in another release before v3. Mostly bug fixes but also a change to the parts that are required in DjangoConnectionField and DjangoFilterConnectionField which might require a schema update.

 New features

* Set converted Django connections to required (610)

 Bugfixes

* Fix choices enum: if field can be blank then it isn&#39;t required (714)
* Check for filters defined on base filterset classes (730)
* Make DjangoDebugContext wait for nested fields (591)

Full changelog: graphql-python/graphene-django@v2.4.0...v2.5.0
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/graphene-django
  - Changelog: https://pyup.io/changelogs/graphene-django/
  - Repo: https://github.com/graphql-python/graphene-django
</details>





### Update [newrelic](https://pypi.org/project/newrelic) from **4.20.1.121** to **5.0.2.126**.


<details>
  <summary>Changelog</summary>
  
  
   ### 5.0.2.126
   ```
   This release of the Python agent includes bug fixes for feedparser and django-piston.

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.

Bug Fixes


Fixed a crash when using feedparser

When running with the feedparser library the agent would crash on attempting to parse an RSS feed. This issue has now been corrected.
Fixed a crash when using django-piston

When running with the django-piston library the agent would crash on attempting to service a request. This issue has now been corrected.
   ```
   
  
  
   ### 5.0.1.125
   ```
   This release of the Python agent includes a bug fix for the mako library instrumentation.

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.

Bug Fixes


Fixed a crash when using the Mako template library

When running with the Mako template library the agent would crash on attempting to render a template. This issue has now been corrected.
   ```
   
  
  
   ### 5.0.0.124
   ```
   This release of the Python agent introduces:


Event loop diagnostics feature
Tornado instrumentation for versions 6 or higher
Improved context manager API functionality and interfaces


This release also drops support for Python 3.4.

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.

Event loop diagnostics

Introducing event loop diagnostics for asyncio! The Python agent can now surface information about transactions that block the event loop. The agent will be able to generate information about transactions that have waited a significant amount of time to acquire control of the event loop.

Event loop diagnostic information will be available in both APM and via NRQL query.

Event loop metrics will appear in the transaction Breakdown table:



Time spent waiting on other transactions will be shown in the transaction Trace details page, as shown here:



eventLoopTime and eventLoopWait attributes will be available via NRQL query. An example query might be:
SELECT count(*) as &#39;count&#39;, average(eventLoopTime) as &#39;loopTime&#39;, average(eventLoopWait) as &#39;loopWait&#39; FROM Transaction facet name

In New Relic Insights, this might show a result like this:



Diagnostics will be available by default through our existing aiohttp, sanic, and Tornado instrumentation. Diagnostic information will also be available for coroutines that use our background_task and web_transaction decorator APIs.

Tornado 6 Instrumentation

Instrumentation for Tornado framework version 6.x is supported without any feature flags. Support for versions earlier than Tornado 6.x has been dropped.  The Tornado web server, framework, and http client are instrumented and information will show up in both APM and insights.

Important: Using the tornado.gen.coroutine with instrumentation is not supported. Any usage of tornado.gen.coroutine should be replaced with an asyncio coroutine.

Before

class MainHandler(tornado.web.RequestHandler):
    tornado.gen.coroutine
    def get(self):

        yield gen.sleep(0.2)


After

class MainHandler(tornado.web.RequestHandler):
    asyncio.coroutine
    def get(self):

        yield from gen.sleep(0.2)


Improved APIs for time trace context managers

Context managers (such as FunctionTrace, ExternalTrace, DatastoreTrace) may now be used from within asyncio coroutines! Additionally, the transaction argument is no longer used for any context manager API.  In order to transition to the new API, the transaction argument must be removed.

Before

transaction = newrelic.agent.current_transaction()
with newrelic.agent.FunctionTrace(transaction, &quot;my_trace&quot;):
  pass


After

with newrelic.agent.FunctionTrace(&quot;my_trace&quot;):
  pass


Updated WebTransaction context manager

The WebTransaction context manager is no longer WSGI dependent. The context manager takes generic HTTP arguments, which you can use to build web transactions that appear in the APM product. For more information, see our API documentation.
   ```
   
  
</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 [pyasn1](https://pypi.org/project/pyasn1) from **0.4.6** to **0.4.7**.


*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/pyasn1
  - Changelog: https://pyup.io/changelogs/pyasn1/
  - Repo: https://github.com/etingof/pyasn1
</details>





### Update [pytest](https://pypi.org/project/pytest) from **5.0.1** to **5.1.2**.


<details>
  <summary>Changelog</summary>
  
  
   ### 5.1.2
   ```
   =========================

Bug Fixes
---------

- `2270 &lt;https://github.com/pytest-dev/pytest/issues/2270&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/570&gt;`_: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during
  parametrization.


- `5782 &lt;https://github.com/pytest-dev/pytest/issues/5782&gt;`_: Fix decoding error when printing an error response from ``--pastebin``.


- `5786 &lt;https://github.com/pytest-dev/pytest/issues/5786&gt;`_: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like
  ``pytest-xdist`` to display them properly.


- `5792 &lt;https://github.com/pytest-dev/pytest/issues/5792&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/5751&gt;`_: Fixed ``TypeError`` when importing pytest on Python 3.5.0 and 3.5.1.
   ```
   
  
  
   ### 5.1.0
   ```
   =========================

Removals
--------

- `5180 &lt;https://github.com/pytest-dev/pytest/issues/5180&gt;`_: 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 &lt;https://docs.pytest.org/en/latest/deprecations.html&gt;`__ in the docs.


- `5565 &lt;https://github.com/pytest-dev/pytest/issues/5565&gt;`_: Removed unused support code for `unittest2 &lt;https://pypi.org/project/unittest2/&gt;`__.

  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&#39;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 &lt;https://github.com/pytest-dev/pytest/issues/new&gt;`__.


- `5615 &lt;https://github.com/pytest-dev/pytest/issues/5615&gt;`_: ``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 ``&quot;message&quot;``
  instead of ``u&quot;message&quot;``.

  Python 3 code is unlikely to pass ``bytes`` to these functions. If you do,
  please decode it to an ``str`` beforehand.



Features
--------

- `5564 &lt;https://github.com/pytest-dev/pytest/issues/5564&gt;`_: New ``Config.invocation_args`` attribute containing the unchanged arguments passed to ``pytest.main()``.


- `5576 &lt;https://github.com/pytest-dev/pytest/issues/5576&gt;`_: New `NUMBER &lt;https://docs.pytest.org/en/latest/doctest.htmlusing-doctest-options&gt;`__
  option for doctests to ignore irrelevant differences in floating-point numbers.
  Inspired by Sébastien Boisgérault&#39;s `numtest &lt;https://github.com/boisgera/numtest&gt;`__
  extension for doctest.



Improvements
------------

- `5471 &lt;https://github.com/pytest-dev/pytest/issues/5471&gt;`_: JUnit XML now includes a timestamp and hostname in the testsuite tag.


- `5707 &lt;https://github.com/pytest-dev/pytest/issues/5707&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4344&gt;`_: Fix RuntimeError/StopIteration when trying to collect package with &quot;__init__.py&quot; only.


- `5115 &lt;https://github.com/pytest-dev/pytest/issues/5115&gt;`_: Warnings issued during ``pytest_configure`` are explicitly not treated as errors, even if configured as such, because it otherwise completely breaks pytest.


- `5477 &lt;https://github.com/pytest-dev/pytest/issues/5477&gt;`_: The XML file produced by ``--junitxml`` now correctly contain a ``&lt;testsuites&gt;`` root element.


- `5523 &lt;https://github.com/pytest-dev/pytest/issues/5523&gt;`_: Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+.


- `5524 &lt;https://github.com/pytest-dev/pytest/issues/5524&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/5537&gt;`_: Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the
  standard library on Python 3.8+.


- `5578 &lt;https://github.com/pytest-dev/pytest/issues/5578&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/5606&gt;`_: Fixed internal error when test functions were patched with objects that cannot be compared
  for truth values against others, like ``numpy`` arrays.


- `5634 &lt;https://github.com/pytest-dev/pytest/issues/5634&gt;`_: ``pytest.exit`` is now correctly handled in ``unittest`` cases.
  This makes ``unittest`` cases handle ``quit`` from pytest&#39;s pdb correctly.


- `5650 &lt;https://github.com/pytest-dev/pytest/issues/5650&gt;`_: Improved output when parsing an ini configuration file fails.


- `5701 &lt;https://github.com/pytest-dev/pytest/issues/5701&gt;`_: Fix collection of ``staticmethod`` objects defined with ``functools.partial``.


- `5734 &lt;https://github.com/pytest-dev/pytest/issues/5734&gt;`_: Skip async generator test functions, and update the warning message to refer to ``async def`` functions.



Improved Documentation
----------------------

- `5669 &lt;https://github.com/pytest-dev/pytest/issues/5669&gt;`_: Add docstring for ``Testdir.copy_example``.



Trivial/Internal Changes
------------------------

- `5095 &lt;https://github.com/pytest-dev/pytest/issues/5095&gt;`_: XML files of the ``xunit2`` family are now validated against the schema by pytest&#39;s own test suite
  to avoid future regressions.


- `5516 &lt;https://github.com/pytest-dev/pytest/issues/5516&gt;`_: Cache node splitting function which can improve collection performance in very large test suites.


- `5603 &lt;https://github.com/pytest-dev/pytest/issues/5603&gt;`_: Simplified internal ``SafeRepr`` class and removed some dead code.


- `5664 &lt;https://github.com/pytest-dev/pytest/issues/5664&gt;`_: When invoking pytest&#39;s own testsuite with ``PYTHONDONTWRITEBYTECODE=1``,
  the ``test_xfail_handling`` test no longer fails.


- `5684 &lt;https://github.com/pytest-dev/pytest/issues/5684&gt;`_: Replace manual handling of ``OSError.errno`` in the codebase by new ``OSError`` subclasses (``PermissionError``, ``FileNotFoundError``, etc.).
   ```
   
  
</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 [requests-mock](https://pypi.org/project/requests-mock) from **1.6.0** to **1.7.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.7.0
   ```
   Releasing a few pull-requests that people will find useful. 

Includes fixes for 93 and 106. These should be inconsequential for most people.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/requests-mock
  - Changelog: https://pyup.io/changelogs/requests-mock/
  - Docs: https://requests-mock.readthedocs.io/
</details>





### Update [ipython](https://pypi.org/project/ipython) from **7.7.0** to **7.8.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 7.8.0
   ```
   None
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/ipython
  - Changelog: https://pyup.io/changelogs/ipython/
  - Homepage: https://ipython.org
</details>





### Update [Sphinx](https://pypi.org/project/Sphinx) from **2.1.2** to **2.2.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.2.0
   ```
   =====================================

Incompatible changes
--------------------

* apidoc: template files are renamed to ``.rst_t``
* html: Field lists will be styled by grid layout

Deprecated
----------

* ``sphinx.domains.math.MathDomain.add_equation()``
* ``sphinx.domains.math.MathDomain.get_next_equation_number()``
* The ``info`` and ``warn`` arguments of
  ``sphinx.ext.autosummary.generate.generate_autosummary_docs()``
* ``sphinx.ext.autosummary.generate._simple_info()``
* ``sphinx.ext.autosummary.generate._simple_warn()``
* ``sphinx.ext.todo.merge_info()``
* ``sphinx.ext.todo.process_todo_nodes()``
* ``sphinx.ext.todo.process_todos()``
* ``sphinx.ext.todo.purge_todos()``

Features added
--------------

* 5124: graphviz: ``:graphviz_dot:`` option is renamed to ``:layout:``
* 1464: html: emit a warning if :confval:`html_static_path` and
  :confval:`html_extra_path` directories are inside output directory
* 6514: html: Add a label to search input for accessability purposes
* 5602: apidoc: Add ``--templatedir`` option
* 6475: Add ``override`` argument to ``app.add_autodocumenter()``
* 6310: imgmath: let :confval:`imgmath_use_preview` work also with the SVG
  format for images rendering inline math
* 6533: LaTeX: refactor visit_enumerated_list() to use ``\sphinxsetlistlabels``
* 6628: quickstart: Use ``https://docs.python.org/3/`` for default setting of
  :confval:`intersphinx_mapping`
* 6419: sphinx-build: give reasons why rebuilded

Bugs fixed
----------

* py domain: duplicated warning does not point the location of source code
* 6499: html: Sphinx never updates a copy of :confval:`html_logo` even if
  original file has changed
* 1125: html theme: scrollbar is hard to see on classic theme and macOS
* 5502: linkcheck: Consider HTTP 503 response as not an error
* 6439: Make generated download links reproducible
* 6486: UnboundLocalError is raised if broken extension installed
* 6567: autodoc: :confval:`autodoc_inherit_docstrings` does not effect to
  ``__init__()`` and ``__new__()``
* 6574: autodoc: :confval:`autodoc_member_order` does not refer order of
  imports when ``&#39;bysource&#39;`` order
* 6574: autodoc: missing type annotation for variadic and keyword parameters
* 6589: autodoc: Formatting issues with autodoc_typehints=&#39;none&#39;
* 6605: autodoc: crashed when target code contains custom method-like objects
* 6498: autosummary: crashed with wrong autosummary_generate setting
* 6507: autosummary: crashes without no autosummary_generate setting
* 6511: LaTeX: autonumbered list can not be customized in LaTeX
  since Sphinx 1.8.0 (refs: 6533)
* 6531: Failed to load last environment object when extension added
* 736: Invalid sort in pair index
* 6527: :confval:`last_updated` wrongly assumes timezone as UTC
* 5592: std domain: :rst:dir:`option` directive registers an index entry for
  each comma separated option
* 6549: sphinx-build: Escaped characters in error messages
* 6545: doctest comments not getting trimmed since Sphinx 1.8.0
* 6561: glossary: Wrong hyperlinks are generated for non alphanumeric terms
* 6620: i18n: classifiers of definition list are not translated with
  docutils-0.15
* 6474: ``DocFieldTransformer`` raises AttributeError when given directive is
  not a subclass of ObjectDescription
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/sphinx
  - Changelog: https://pyup.io/changelogs/sphinx/
  - Homepage: http://sphinx-doc.org/
</details>







Co-authored-by: pyup-bot <github-bot@pyup.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.