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

UsageError in package that contains pytest_plugins module #3899

Closed
kohr-h opened this Issue Aug 28, 2018 · 15 comments

Comments

Projects
None yet
4 participants
@kohr-h
Copy link
Contributor

kohr-h commented Aug 28, 2018

When running pytest --doctest-modules on a package that contains a pytest plugin, pytest errors out and produces a pretty long stacktrace. The code that triggers the error is the _get_plugin_specs_as_list function that receives a module object instead of a list or a string.

The behavior is OS-independent as far as I can tell, but affects only pytest 3.7+ ; pytest 3.6.4 works fine. Also note that the error is only triggered when doc-testing the specific subpackage that contains the plugin.

For proper context, we have the following directory structure:

odl
 |
 |- util --
 |        |- pytest_plugins.py
 |        |- ...
 | - ...

The error is triggered by pytest --doctest-modules odl/util.

The full backtrace is here.
Link to the subpackage: https://github.com/odlgroup/odl/tree/master/odl/util

Edit: Updated pytest versions affected

@kohr-h

This comment has been minimized.

Copy link
Contributor Author

kohr-h commented Sep 15, 2018

Update: all 3.7 versions and 3.8.0 show this behavior.

@blueyed

This comment has been minimized.

Copy link
Contributor

blueyed commented Jan 17, 2019

From the traceback (please consider putting those in the issues themselves for searchability etc):

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.config.PytestPluginManager object at 0x0000000002B84240>
mod = <module 'odl.util' from '[...]\\odl\\util\\__init__.py'>

    def consider_module(self, mod):
>       self._import_plugin_specs(getattr(mod, "pytest_plugins", []))

[...]\_pytest\config\__init__.py:462:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.config.PytestPluginManager object at 0x0000000002B84240>
spec = <module 'odl.util.pytest_plugins' from '[...]\\odl\\util\\pytest_plugins.py'>

    def _import_plugin_specs(self, spec):
>       plugins = _get_plugin_specs_as_list(spec)

[...]\_pytest\config\__init__.py:465:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

specs = <module 'odl.util.pytest_plugins' from '[...]\\odl\\util\\pytest_plugins.py'>

    def _get_plugin_specs_as_list(specs):
        """
        Parses a list of "plugin specs" and returns a list of plugin names.

        Plugin specs can be given as a list of strings separated by "," or already as a list/tuple in
        which case it is returned as a list. Specs can also be `None` in which case an
        empty list is returned.
        """
        if specs is not None:
            if isinstance(specs, str):
                specs = specs.split(",") if specs else []
            if not isinstance(specs, (list, tuple)):
                raise UsageError(
                    "Plugin specs must be a ','-separated string or a "
>                   "list/tuple of strings for plugin names. Given: %r" % specs
                )
E               _pytest.config.exceptions.UsageError: Plugin specs must be a ','-separated string or a list/tuple of strings for plugin names. Given: <module 'odl.util.pytest_plugins' from '[...]\\odl\\util\\pytest_plugins.py'>

[...]\_pytest\config\__init__.py:518: UsageError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[...]\_pytest\_code\source.py:341: KeyboardInterrupt
(to show a full traceback on KeyboardInterrupt use --fulltrace)
========================== 12 error in 5.32 seconds ===========================

It looks like odl.util.pytest_plugins is expected to be a list, but is a
module:


self = <_pytest.config.PytestPluginManager object at 0x0000000002B84240>
mod = <module 'odl.util' from '[...]\\odl\\util\\__init__.py'>

    def consider_module(self, mod):
>       self._import_plugin_specs(getattr(mod, "pytest_plugins", []))

[...]\_pytest\config\__init__.py:462:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.config.PytestPluginManager object at 0x0000000002B84240>
spec = <module 'odl.util.pytest_plugins' from '[...]\\odl\\util\\pytest_plugins.py'>

    def _import_plugin_specs(self, spec):
>       plugins = _get_plugin_specs_as_list(spec)

I don't know the internals really, but it looks like pytest should skip / not consider this?!

@blueyed blueyed changed the title UsageError in package that contains a pytest plugin UsageError in package that contains pytest_plugins module Jan 17, 2019

@blueyed

This comment has been minimized.

Copy link
Contributor

blueyed commented Jan 17, 2019

While it seems to be clear what the issue is, it might still be useful to git-bisect it.

only pytest 3.7+ ; pytest 3.6.4 works fine

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 17, 2019

We should probably issue a warning instead, instead of ignoring it.

@kohr-h

This comment has been minimized.

Copy link
Contributor Author

kohr-h commented Jan 29, 2019

I'm not sure if ignoring and/or warning is desirable here since the pytest_plugins module contains some package-global fixtures that should be used, in particular the one to amend the doctest namespace.

What do you think is the root cause of the error? Are we using plugins in an unintended or unsupported way?

@blueyed

This comment has been minimized.

Copy link
Contributor

blueyed commented Jan 29, 2019

@kohr-h
You could git-bisect it to see where/why it was changed.

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 29, 2019

What do you think is the root cause of the error? Are we using plugins in an unintended or unsupported way?

The cause seems to be that you have a module named pytest_plugins in odl/util. Since pytest 3.8 we now collect __init__.py files.

This part of the traceback:

self = <_pytest.config.PytestPluginManager object at 0x0000000002B84240>
mod = <module 'odl.util' from '[...]\\odl\\util\\__init__.py'>

    def consider_module(self, mod):
>       self._import_plugin_specs(getattr(mod, "pytest_plugins", []))

Indicates that odl.util is importing the pytest_plugins.py module into its namespace, which is triggering the error, because pytest_plugins is a special variable.

I don't see pytest_plugins.py being imported into odl.util though...

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member

RonnyPfannschmidt commented Jan 30, 2019

@nicoddemus the testutils sibling module imports it, so the python import system adds the name to the module

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 30, 2019

You mean this import?

https://github.com/odlgroup/odl/blob/ef8193ed5a51c410ed6d4eff6280d362fbf22421/odl/util/testutils.py#L658

Weird, didn't know just by importing a module it would become an attribute of the parent package object, even though the parent package never imports the sibling module in its __init__.py... 🤔

@RonnyPfannschmidt

This comment has been minimized.

Copy link
Member

RonnyPfannschmidt commented Jan 30, 2019

@nicoddemus its what makes import foo.bar.baz work as well as how namespace packages are filled with objects

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Jan 30, 2019

Indeed, cool, didn't know about that fact. Thanks!

kohr-h added a commit to kohr-h/odl that referenced this issue Feb 4, 2019

TST: rename pytest_plugins -> pytest_config
The name `pytest_plugins` is an internally used reserved name that
our package messes up, see pytest-dev/pytest#3899

kohr-h added a commit to kohr-h/odl that referenced this issue Feb 4, 2019

TST: rename pytest_plugins -> pytest_config
The name `pytest_plugins` is an internally used reserved name that
our package messes up, see pytest-dev/pytest#3899
@kohr-h

This comment has been minimized.

Copy link
Contributor Author

kohr-h commented Feb 4, 2019

@nicoddemus @RonnyPfannschmidt @blueyed Thanks for looking into this. I think the issue sits deep and one has to be somewhat unlucky to hit it. So we'll just change the name of the module. I can confirm that giving it some other name solves the problem.

The documentation on plugins doesn't mention the case discussed here. If you think it's worth giving it a brief mention, I can add a sentence to the docs.

kohr-h added a commit to kohr-h/odl that referenced this issue Feb 4, 2019

TST: rename pytest_plugins -> pytest_config
The name `pytest_plugins` is an internally used reserved name that
our package messes up, see pytest-dev/pytest#3899
@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Feb 5, 2019

The documentation on plugins doesn't mention the case discussed here. If you think it's worth giving it a brief mention, I can add a sentence to the docs.

We would appreciate that, thanks! 👍

@nicoddemus nicoddemus removed the type: bug label Feb 6, 2019

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Feb 6, 2019

Meanwhile I'm closing this issue. 👍

@nicoddemus nicoddemus closed this Feb 6, 2019

@nicoddemus nicoddemus reopened this Feb 6, 2019

@nicoddemus

This comment has been minimized.

Copy link
Member

nicoddemus commented Feb 6, 2019

Actually we should not raise that error if pytest_plugins is a module...

nicoddemus added a commit to nicoddemus/pytest that referenced this issue Feb 6, 2019

nicoddemus added a commit to nicoddemus/pytest that referenced this issue Feb 6, 2019

nicoddemus added a commit to nicoddemus/pytest that referenced this issue Feb 6, 2019

nicoddemus added a commit to nicoddemus/pytest that referenced this issue Feb 6, 2019

peterbe added a commit to mozilla-services/tecken that referenced this issue Feb 13, 2019

Update pytest to 4.2.1
This PR updates [pytest](https://pypi.org/project/pytest) from **4.2.0** to **4.2.1**.



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

Bug Fixes
---------

- `2895 &lt;https://github.com/pytest-dev/pytest/issues/2895&gt;`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``.


- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module.


- `4347 &lt;https://github.com/pytest-dev/pytest/issues/4347&gt;`_: Fix output capturing when using pdb++ with recursive debugging.


- `4592 &lt;https://github.com/pytest-dev/pytest/issues/4592&gt;`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``.


- `4700 &lt;https://github.com/pytest-dev/pytest/issues/4700&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4739&gt;`_: Fix ``parametrize(... ids=&lt;function&gt;)`` when the function returns non-strings.


- `4745 &lt;https://github.com/pytest-dev/pytest/issues/4745&gt;`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file.


- `4770 &lt;https://github.com/pytest-dev/pytest/issues/4770&gt;`_: ``more_itertools`` is now constrained to &lt;6.0.0 when required for Python 2.7 compatibility.


- `526 &lt;https://github.com/pytest-dev/pytest/issues/526&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; exceptions when running in build directories that symlink to actual source.



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

- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins.


- `4324 &lt;https://github.com/pytest-dev/pytest/issues/4324&gt;`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises.


- `4709 &lt;https://github.com/pytest-dev/pytest/issues/4709&gt;`_: Document how to customize test failure messages when using
  ``pytest.warns``.



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

- `4741 &lt;https://github.com/pytest-dev/pytest/issues/4741&gt;`_: 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>

bors bot added a commit to rehandalal/therapist that referenced this issue Feb 19, 2019

Merge #61
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 &lt;https://github.com/pytest-dev/pytest/issues/4724&gt;`_: ``pytest.warns()`` now emits a warning when it receives unknown keyword arguments.

  This will be changed into an error in the future.



Features
--------

- `2753 &lt;https://github.com/pytest-dev/pytest/issues/2753&gt;`_: Usage errors from argparse are mapped to pytest&#39;s ``UsageError``.


- `3711 &lt;https://github.com/pytest-dev/pytest/issues/3711&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4698&gt;`_: 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&#39;t have problems as ``pip`` will not
  install pytest 5.0 on those interpreters.


- `4707 &lt;https://github.com/pytest-dev/pytest/issues/4707&gt;`_: With the help of new ``set_log_path()`` method there is a way to set ``log_file`` paths from hooks.



Bug Fixes
---------

- `4651 &lt;https://github.com/pytest-dev/pytest/issues/4651&gt;`_: ``--help`` and ``--version`` are handled with ``UsageError``.


- `4782 &lt;https://github.com/pytest-dev/pytest/issues/4782&gt;`_: Fix ``AssertionError`` with collection of broken symlinks with packages.
   ```
   
  
  
   ### 4.2.1
   ```
   =========================

Bug Fixes
---------

- `2895 &lt;https://github.com/pytest-dev/pytest/issues/2895&gt;`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``.


- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module.


- `4347 &lt;https://github.com/pytest-dev/pytest/issues/4347&gt;`_: Fix output capturing when using pdb++ with recursive debugging.


- `4592 &lt;https://github.com/pytest-dev/pytest/issues/4592&gt;`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``.


- `4700 &lt;https://github.com/pytest-dev/pytest/issues/4700&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4739&gt;`_: Fix ``parametrize(... ids=&lt;function&gt;)`` when the function returns non-strings.


- `4745 &lt;https://github.com/pytest-dev/pytest/issues/4745&gt;`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file.


- `4770 &lt;https://github.com/pytest-dev/pytest/issues/4770&gt;`_: ``more_itertools`` is now constrained to &lt;6.0.0 when required for Python 2.7 compatibility.


- `526 &lt;https://github.com/pytest-dev/pytest/issues/526&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; exceptions when running in build directories that symlink to actual source.



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

- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins.


- `4324 &lt;https://github.com/pytest-dev/pytest/issues/4324&gt;`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises.


- `4709 &lt;https://github.com/pytest-dev/pytest/issues/4709&gt;`_: Document how to customize test failure messages when using
  ``pytest.warns``.



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

- `4741 &lt;https://github.com/pytest-dev/pytest/issues/4741&gt;`_: 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>

bors bot added a commit to mozilla/normandy that referenced this issue Feb 20, 2019

Merge #1743 #1744
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&#39;t work in CPython &lt;= 3.4, and for
  technical reason we can&#39;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
  &lt;= 3.4: pass ``define_macros=[(&quot;Py_LIMITED_API&quot;, 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(&quot;int[4]&quot;, 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&#39;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 (🎫`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=&#39;my_coroutine&#39;)
 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 &lt;https://github.com/pytest-dev/pytest/issues/2895&gt;`_: The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``.


- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Do not raise ``UsageError`` when an imported package has a ``pytest_plugins.py`` child module.


- `4347 &lt;https://github.com/pytest-dev/pytest/issues/4347&gt;`_: Fix output capturing when using pdb++ with recursive debugging.


- `4592 &lt;https://github.com/pytest-dev/pytest/issues/4592&gt;`_: Fix handling of ``collect_ignore`` via parent ``conftest.py``.


- `4700 &lt;https://github.com/pytest-dev/pytest/issues/4700&gt;`_: 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 &lt;https://github.com/pytest-dev/pytest/issues/4739&gt;`_: Fix ``parametrize(... ids=&lt;function&gt;)`` when the function returns non-strings.


- `4745 &lt;https://github.com/pytest-dev/pytest/issues/4745&gt;`_: Fix/improve collection of args when passing in ``__init__.py`` and a test file.


- `4770 &lt;https://github.com/pytest-dev/pytest/issues/4770&gt;`_: ``more_itertools`` is now constrained to &lt;6.0.0 when required for Python 2.7 compatibility.


- `526 &lt;https://github.com/pytest-dev/pytest/issues/526&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; exceptions when running in build directories that symlink to actual source.



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

- `3899 &lt;https://github.com/pytest-dev/pytest/issues/3899&gt;`_: Add note to ``plugins.rst`` that ``pytest_plugins`` should not be used as a name for a user module containing plugins.


- `4324 &lt;https://github.com/pytest-dev/pytest/issues/4324&gt;`_: Document how to use ``raises`` and ``does_not_raise`` to write parametrized tests with conditional raises.


- `4709 &lt;https://github.com/pytest-dev/pytest/issues/4709&gt;`_: Document how to customize test failure messages when using
  ``pytest.warns``.



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

- `4741 &lt;https://github.com/pytest-dev/pytest/issues/4741&gt;`_: 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.