|
|
|
@ -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 |
|
|
|
|
|
|
|
|
|