r350467 - [python] Make the collections import future-proof
Serge Guelton via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 5 04:07:36 PST 2019
Author: serge_sans_paille
Date: Sat Jan 5 04:07:36 2019
New Revision: 350467
URL: http://llvm.org/viewvc/llvm-project?rev=350467&view=rev
Log:
[python] Make the collections import future-proof
On Python 3.7 the old code raises a warning:
DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
class ArgumentsIterator(collections.Sequence):
On Python 3.8 it wouldn't work anymore.
Commited on behalf of Jakub Stasiak.
Differential Revision: https://reviews.llvm.org/D56341
Modified:
cfe/trunk/bindings/python/clang/cindex.py
Modified: cfe/trunk/bindings/python/clang/cindex.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/clang/cindex.py?rev=350467&r1=350466&r2=350467&view=diff
==============================================================================
--- cfe/trunk/bindings/python/clang/cindex.py (original)
+++ cfe/trunk/bindings/python/clang/cindex.py Sat Jan 5 04:07:36 2019
@@ -64,7 +64,6 @@ from __future__ import absolute_import,
# o implement additional SourceLocation, SourceRange, and File methods.
from ctypes import *
-import collections
import clang.enumerations
@@ -123,6 +122,14 @@ elif sys.version_info[0] == 2:
def b(x):
return x
+# Importing ABC-s directly from collections is deprecated since Python 3.7,
+# will stop working in Python 3.8.
+# See: https://docs.python.org/dev/whatsnew/3.7.html#id3
+if sys.version_info[:2] >= (3, 7):
+ from collections import abc as collections_abc
+else:
+ import collections as collections_abc
+
# We only support PathLike objects on Python version with os.fspath present
# to be consistent with the Python standard library. On older Python versions
# we only support strings and we have dummy fspath to just pass them through.
@@ -2181,7 +2188,7 @@ class Type(Structure):
The returned object is iterable and indexable. Each item in the
container is a Type instance.
"""
- class ArgumentsIterator(collections.Sequence):
+ class ArgumentsIterator(collections_abc.Sequence):
def __init__(self, parent):
self.parent = parent
self.length = None
More information about the cfe-commits
mailing list