|
@@ -127,6 +127,9 @@ class DescriptorPool(object):
|
|
|
self._service_descriptors = {}
|
|
|
self._file_descriptors = {}
|
|
|
self._toplevel_extensions = {}
|
|
|
+ # TODO(jieluo): Remove _file_desc_by_toplevel_extension after
|
|
|
+ # maybe year 2020 for compatibility issue (with 3.4.1 only).
|
|
|
+ self._file_desc_by_toplevel_extension = {}
|
|
|
# We store extensions in two two-level mappings: The first key is the
|
|
|
# descriptor of the message being extended, the second key is the extension
|
|
|
# full name or its tag number.
|
|
@@ -252,6 +255,12 @@ class DescriptorPool(object):
|
|
|
"""
|
|
|
|
|
|
self._AddFileDescriptor(file_desc)
|
|
|
+ # TODO(jieluo): This is a temporary solution for FieldDescriptor.file.
|
|
|
+ # FieldDescriptor.file is added in code gen. Remove this solution after
|
|
|
+ # maybe 2020 for compatibility reason (with 3.4.1 only).
|
|
|
+ for extension in file_desc.extensions_by_name.values():
|
|
|
+ self._file_desc_by_toplevel_extension[
|
|
|
+ extension.full_name] = file_desc
|
|
|
|
|
|
def _AddFileDescriptor(self, file_desc):
|
|
|
"""Adds a FileDescriptor to the pool, non-recursively.
|
|
@@ -331,7 +340,7 @@ class DescriptorPool(object):
|
|
|
pass
|
|
|
|
|
|
try:
|
|
|
- return self._toplevel_extensions[symbol].file
|
|
|
+ return self._file_desc_by_toplevel_extension[symbol]
|
|
|
except KeyError:
|
|
|
pass
|
|
|
|