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