fix: Fix issues with `collections.abc` in Python 3.10+ (#1188)

This issue is observed on Python 3.10+ and above.
This workaround addresses a major backwards compatibility break with a
major Python release version where collections.abc isn't available.

Fixes #1192
This commit is contained in:
Dennis E. Mungai 2023-05-01 19:07:08 +03:00 committed by GitHub
parent 161947f53e
commit 80e024013d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 2 deletions

View File

@ -42,8 +42,15 @@ are:
__author__ = 'petar@google.com (Petar Petrov)'
import collections
try:
packagerCor = collections.abc
except AttributeError:
packagerCor = collections
import sys
if sys.version_info[0] < 3:
# We would use collections.MutableMapping all the time, but in Python 2 it
# doesn't define __slots__. This causes two significant problems:
@ -179,7 +186,7 @@ if sys.version_info[0] < 3:
else:
# In Python 3 we can just use MutableMapping directly, because it defines
# __slots__.
MutableMapping = collections.MutableMapping
MutableMapping = packagerCor.MutableMapping
class BaseContainer(object):
@ -337,7 +344,7 @@ class RepeatedScalarFieldContainer(BaseContainer):
# We are presumably comparing against some other sequence type.
return other == self._values
collections.MutableSequence.register(BaseContainer)
packagerCor.MutableSequence.register(BaseContainer)
class RepeatedCompositeFieldContainer(BaseContainer):