diff --git a/_pytest/assertion/util.py b/_pytest/assertion/util.py index 5a380ae09..06d60a6fc 100644 --- a/_pytest/assertion/util.py +++ b/_pytest/assertion/util.py @@ -5,7 +5,7 @@ import pprint import _pytest._code import py import six -from collections import Sequence +from ..compat import Sequence u = six.text_type diff --git a/_pytest/compat.py b/_pytest/compat.py index 92df65656..bcb31cb88 100644 --- a/_pytest/compat.py +++ b/_pytest/compat.py @@ -38,6 +38,14 @@ PY35 = sys.version_info[:2] >= (3, 5) PY36 = sys.version_info[:2] >= (3, 6) MODULE_NOT_FOUND_ERROR = 'ModuleNotFoundError' if PY36 else 'ImportError' +if _PY3: + from collections.abc import MutableMapping as MappingMixin # noqa + from collections.abc import Sequence # noqa +else: + # those raise DeprecationWarnings in Python >=3.7 + from collections import MutableMapping as MappingMixin # noqa + from collections import Sequence # noqa + def _format_args(func): return str(signature(func)) diff --git a/_pytest/mark/structures.py b/_pytest/mark/structures.py index c56972980..a0d4a5ce7 100644 --- a/_pytest/mark/structures.py +++ b/_pytest/mark/structures.py @@ -1,13 +1,13 @@ -from collections import namedtuple, MutableMapping as MappingMixin -import warnings -from operator import attrgetter import inspect +import warnings +from collections import namedtuple +from operator import attrgetter import attr -from ..deprecated import MARK_PARAMETERSET_UNPACKING -from ..compat import NOTSET, getfslineno from six.moves import map +from ..compat import NOTSET, getfslineno, MappingMixin +from ..deprecated import MARK_PARAMETERSET_UNPACKING EMPTY_PARAMETERSET_OPTION = "empty_parameter_set_mark" diff --git a/changelog/3339.trivial b/changelog/3339.trivial new file mode 100644 index 000000000..20196e144 --- /dev/null +++ b/changelog/3339.trivial @@ -0,0 +1 @@ +Import some modules from ``collections`` instead of ``collections.abc`` as the former modules trigger ``DeprecationWarning`` in Python 3.7.