File: //lib/python2.7/site-packages/google/protobuf/symbol_database.pyc
ó
÷hc @ sa d Z d d l m Z d d l m Z d e j f d YZ e d e j Z d Z d S( sR 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')()
i˙˙˙˙( t descriptor_pool( t message_factoryt SymbolDatabasec B sM e Z d Z d Z d Z d Z d Z d Z d Z d Z RS( s' A database of Python generated symbols.c C s' | j } | | j | <| j | | S( s÷ Registers the given message type in the local database.
Calls to GetSymbol() and GetMessages() will return messages registered here.
Args:
message: a message.Message, to be registered.
Returns:
The provided message.
( t
DESCRIPTORt _classest RegisterMessageDescriptor( t selft messaget desc( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt RegisterMessageD s
c C s | j j | d S( s Registers the given message descriptor in the local database.
Args:
message_descriptor: a descriptor.MessageDescriptor.
N( t poolt
AddDescriptor( R t message_descriptor( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyR U s c C s | j j | | S( sŤ Registers the given enum descriptor in the local database.
Args:
enum_descriptor: a descriptor.EnumDescriptor.
Returns:
The provided descriptor.
( R
t AddEnumDescriptor( R t enum_descriptor( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt RegisterEnumDescriptor] s c C s | j j | d S( s´ Registers the given service descriptor in the local database.
Args:
service_descriptor: a descriptor.ServiceDescriptor.
Returns:
The provided descriptor.
N( R
t AddServiceDescriptor( R t service_descriptor( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt RegisterServiceDescriptori s c C s | j j | d S( sŤ Registers the given file descriptor in the local database.
Args:
file_descriptor: a descriptor.FileDescriptor.
Returns:
The provided descriptor.
N( R
t AddFileDescriptor( R t file_descriptor( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt RegisterFileDescriptort s c C s | j | j j | S( sx 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.
Args:
symbol: A str, a protocol buffer symbol.
Returns:
A Python class corresponding to the symbol.
Raises:
KeyError: if the symbol could not be found.
( R R
t FindMessageTypeByName( R t symbol( ( sC /usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt GetSymbol s c s f d i } x} | D]u } | j j | } xZ | j j D]I } x@ | D]2 } y | j | | | j <WqW t k
r qW XqW WqD Wq W| S( s 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.
Args:
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.
c 3 s9 | Vx- | j D]"