From f209062479bd090df844c5432171233eb02474e9 Mon Sep 17 00:00:00 2001 From: Benjamin Root Date: Sat, 28 Jul 2018 10:11:52 -0400 Subject: [PATCH 1/2] Merge pull request #11786 from timhoffm/collections-abc Fix collections import warnings for Python 3.7 Put try...except blocks in to support py27 --- lib/matplotlib/__init__.py | 5 ++++- lib/matplotlib/colors.py | 5 ++++- lib/matplotlib/markers.py | 6 ++++-- lib/matplotlib/rcsetup.py | 6 ++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index c5accc3c301f..8f1ee76efcef 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -104,7 +104,10 @@ import six import atexit -from collections import MutableMapping +try: + from collections.abc import MutableMapping +except ImportError: + from collections import MutableMapping import contextlib import distutils.version import functools diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 49722ff71fbf..d6cd04fdbc12 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -50,7 +50,10 @@ import six from six.moves import zip -from collections import Sized +try: + from collections.abc import Sized +except ImportError: + from collections import Sized import itertools import re import warnings diff --git a/lib/matplotlib/markers.py b/lib/matplotlib/markers.py index ff27c4b253bf..3669922026f3 100644 --- a/lib/matplotlib/markers.py +++ b/lib/matplotlib/markers.py @@ -88,8 +88,10 @@ import six from six.moves import xrange - -from collections import Sized +try: + from collections.abc import Sized +except ImportError: + from collections import Sized import numpy as np diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index f8d5ad5036d5..902db1c43ff7 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -16,8 +16,10 @@ from __future__ import absolute_import, division, print_function import six - -from collections import Iterable, Mapping +try: + from collections.abc import Iterable, Mapping +except ImportError: + from collections import Iterable, Mapping from functools import reduce import operator import os From e435c6383ce8b35130d48dd1a05579b698a64e0e Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 24 Jul 2018 12:09:32 +0200 Subject: [PATCH 2/2] Merge pull request #11733 from andyfaff/collection MAINT: use collections.abc for 3.7 Conflicts: lib/matplotlib/cbook/__init__.py Added try-except block to handle py2 case --- lib/matplotlib/cbook/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index 188b56298c17..3af589131e76 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -11,6 +11,11 @@ import six from six.moves import xrange, zip import collections +try: + import collections.abc as cabc +except ImportError: + import collections as cabc + import contextlib import datetime import errno @@ -2293,7 +2298,8 @@ def pts_to_midstep(x, *args): The x location of the steps. May be empty. y1, ..., yp : array - y arrays to be turned into steps; all must be the same length as ``x``. + y arrays to be turned into steps; all must be the same length as + ``x``. Returns ------- @@ -2352,7 +2358,7 @@ def index_of(y): def safe_first_element(obj): - if isinstance(obj, collections.Iterator): + if isinstance(obj, cabc.Iterator): # needed to accept `array.flat` as input. # np.flatiter reports as an instance of collections.Iterator # but can still be indexed via []. @@ -2369,7 +2375,8 @@ def safe_first_element(obj): def sanitize_sequence(data): """Converts dictview object to list""" - return list(data) if isinstance(data, collections.MappingView) else data + return (list(data) if isinstance(data, cabc.MappingView) + else data) def normalize_kwargs(kw, alias_mapping=None, required=(), forbidden=(),