UPSTREAM: Fix deprecation warning in Python 3.7 (#231) $SITE_PYTHON/lib/python3.7/site-packages/elftools/construct/lib/container.py:5 Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working This change is compatible with Python 3.3 and up, when the ABCs were moved to collections.abc. Backward compatibility is retained through the try/except block. BUG=None TEST=chromite unittests don't trigger deprecation warnings anymore Change-Id: Idd0a996f36430f2631b15f00b1549b0aacf75c26 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/pyelftools/+/3027642 Commit-Queue: Mike Frysinger <vapier@chromium.org> Commit-Queue: Sergey Frolov <sfrolov@google.com> Tested-by: Mike Frysinger <vapier@chromium.org> Auto-Submit: Mike Frysinger <vapier@chromium.org> Reviewed-by: Sergey Frolov <sfrolov@google.com>
diff --git a/elftools/construct/lib/container.py b/elftools/construct/lib/container.py index 2f89b2d..5a580fa 100644 --- a/elftools/construct/lib/container.py +++ b/elftools/construct/lib/container.py
@@ -2,8 +2,8 @@ Various containers. """ -from collections import MutableMapping from pprint import pformat +from .py3compat import MutableMapping def recursion_lock(retval, lock_name = "__recursion_lock__"): def decorator(func):
diff --git a/elftools/construct/lib/py3compat.py b/elftools/construct/lib/py3compat.py index 4a52c29..1cbae81 100644 --- a/elftools/construct/lib/py3compat.py +++ b/elftools/construct/lib/py3compat.py
@@ -6,6 +6,11 @@ import sys PY3 = sys.version_info[0] == 3 +try: + from collections.abc import MutableMapping # python >= 3.3 +except ImportError: + from collections import MutableMapping # python < 3.3 + if PY3: import io