google.protobuf.symbol_database¶
A database of Python protocol buffer generated symbols.
SymbolDatabase is the MessageFactory for messages generated at compile time, and makes it easy to create new instances of a registered type, given only the type’s protocol buffer symbol name.
Example usage:
db = symbol_database.SymbolDatabase()
# Register symbols of interest, from one or multiple files. db.RegisterFileDescriptor(my_proto_pb2.DESCRIPTOR) db.RegisterMessage(my_proto_pb2.MyMessage) db.RegisterEnumDescriptor(my_proto_pb2.MyEnum.DESCRIPTOR)
# The database can be used as a MessageFactory, to generate types based on # their name: types = db.GetMessages([‘my_proto.proto’]) my_message_instance = types[‘MyMessage’]()
# The database’s underlying descriptor pool can be queried, so it’s not # necessary to know a type’s filename to be able to generate it: filename = db.pool.FindFileContainingSymbol(‘MyMessage’) my_message_instance = db.GetMessages([filename])[‘MyMessage’]()
# This functionality is also provided directly via a convenience method: my_message_instance = db.GetSymbol(‘MyMessage’)()
-
google.protobuf.symbol_database.
Default
()¶ Returns the default SymbolDatabase.
-
class
google.protobuf.symbol_database.
SymbolDatabase
(pool=None)¶ A database of Python generated symbols.
-
GetMessages
(files)¶ Gets all registered messages from a specified file.
Only messages already created and registered will be returned; (this is the case for imported _pb2 modules) But unlike MessageFactory, this version also returns already defined nested messages, but does not register any message extensions.
- Parameters
files – The file names to extract messages from.
- Returns
A dictionary mapping proto names to the message classes.
- Raises
KeyError – if a file could not be found.
-
GetPrototype
(descriptor)¶ Builds a proto2 message class based on the passed in descriptor.
Passing a descriptor with a fully qualified name matching a previous invocation will cause the same class to be returned.
- Parameters
descriptor – The descriptor to build from.
- Returns
A class describing the passed in descriptor.
-
GetSymbol
(symbol)¶ Tries to find a symbol in the local database.
Currently, this method only returns message.Message instances, however, if may be extended in future to support other symbol types.
- Parameters
symbol – A str, a protocol buffer symbol.
- Returns
A Python class corresponding to the symbol.
- Raises
KeyError – if the symbol could not be found.
-
RegisterEnumDescriptor
(enum_descriptor)¶ Registers the given enum descriptor in the local database.
- Parameters
enum_descriptor – a descriptor.EnumDescriptor.
- Returns
The provided descriptor.
-
RegisterFileDescriptor
(file_descriptor)¶ Registers the given file descriptor in the local database.
- Parameters
file_descriptor – a descriptor.FileDescriptor.
- Returns
The provided descriptor.
-
RegisterMessage
(message)¶ Registers the given message type in the local database.
Calls to GetSymbol() and GetMessages() will return messages registered here.
- Parameters
message – a message.Message, to be registered.
- Returns
The provided message.
-
RegisterMessageDescriptor
(message_descriptor)¶ Registers the given message descriptor in the local database.
- Parameters
message_descriptor – a descriptor.MessageDescriptor.
-
RegisterServiceDescriptor
(service_descriptor)¶ Registers the given service descriptor in the local database.
- Parameters
service_descriptor – a descriptor.ServiceDescriptor.
- Returns
The provided descriptor.
-