[PATCH] D56341: [python] Make the collections import future-proof

Jakub Stasiak via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 4 16:38:05 PST 2019


jstasiak created this revision.
jstasiak added reviewers: mgorny, michaelplatings, serge-sans-paille.
Herald added subscribers: cfe-commits, arphaman.

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.


Repository:
  rC Clang

https://reviews.llvm.org/D56341

Files:
  bindings/python/clang/cindex.py


Index: bindings/python/clang/cindex.py
===================================================================
--- bindings/python/clang/cindex.py
+++ bindings/python/clang/cindex.py
@@ -64,7 +64,6 @@
 # o implement additional SourceLocation, SourceRange, and File methods.
 
 from ctypes import *
-import collections
 
 import clang.enumerations
 
@@ -123,6 +122,14 @@
     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 @@
         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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56341.180339.patch
Type: text/x-patch
Size: 1325 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190105/c397b385/attachment.bin>


More information about the cfe-commits mailing list