From 80e024013df87a4bfeb265c8ea83cfa2a0c5db0f Mon Sep 17 00:00:00 2001 From: "Dennis E. Mungai" <2356871+Brainiarc7@users.noreply.github.com> Date: Mon, 1 May 2023 19:07:08 +0300 Subject: [PATCH] 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 --- .../python/google/protobuf/internal/containers.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packager/third_party/protobuf/python/google/protobuf/internal/containers.py b/packager/third_party/protobuf/python/google/protobuf/internal/containers.py index 68be9e54a8..8727194267 100755 --- a/packager/third_party/protobuf/python/google/protobuf/internal/containers.py +++ b/packager/third_party/protobuf/python/google/protobuf/internal/containers.py @@ -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):