pyelftools/fix-collections-import-MutableMapping.patch
2022-01-29 10:59:34 +08:00

47 lines
1.6 KiB
Diff

From 923c498fd2c3c9805c613f8ac33e5572b9a784e2 Mon Sep 17 00:00:00 2001
From: Scott Johnson <scottjohnsoninsf@gmail.com>
Date: Sat, 22 Jun 2019 05:16:23 -0700
Subject: [PATCH] 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.
---
elftools/construct/lib/container.py | 2 +-
elftools/construct/lib/py3compat.py | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/elftools/construct/lib/container.py b/elftools/construct/lib/container.py
index 2f89b2dc..5a580fac 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 4a52c293..1cbae81d 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