Submit
Path:
~
/
/
proc
/
thread-self
/
root
/
opt
/
alt
/
python35
/
lib64
/
python3.5
/
site-packages
/
google
/
protobuf
/
__pycache__
/
File Content:
descriptor_database.cpython-35.pyc
���f, � @ s^ d Z d Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z d d � Z d S)z*Provides a container for DescriptorProtos.z"matthewtoia@google.com (Matt Toia)c @ s e Z d Z d S)�ErrorN)�__name__� __module__�__qualname__� r r �/descriptor_database.pyr $ s r c @ s e Z d Z d Z d S)�,DescriptorDatabaseConflictingDefinitionErrorzGRaised when a proto is added with the same name & different descriptor.N)r r r �__doc__r r r r r ( s r c @ sF e Z d Z d Z d d � Z d d � Z d d � Z d d � Z d S)�DescriptorDatabasezEA container accepting FileDescriptorProtos and maps DescriptorProtos.c C s i | _ i | _ d S)N)�_file_desc_protos_by_file�_file_desc_protos_by_symbol)�selfr r r �__init__/ s zDescriptorDatabase.__init__c s1 � j } | | j k r( � | j | <n# | j | � k rK t d | � � � j } x= � j D]2 } | j j � f d d � t | | � D� � q^ Wx0 � j D]% } � | j d j | | j f � <q� Wx0 � j D]% } � | j d j | | j f � <q� Wx0 � j D]% } � | j d j | | j f � <qWd S)aM Adds the FileDescriptorProto and its types to this database. Args: file_desc_proto: The FileDescriptorProto to add. Raises: DescriptorDatabaseConflictingDefinitionError: if an attempt is made to add a proto with the same name but different definition than an exisiting proto in the database. z0%s already added, but with different descriptor.c 3 s | ] } | � f Vq d S)Nr )�.0�name)�file_desc_protor r � <genexpr>H s z)DescriptorDatabase.Add.<locals>.<genexpr>�.N)r r r �packageZmessage_typer �update�_ExtractSymbols� enum_type�join� extension�service)r r Z proto_namer �message�enumr r r )r r �Add3 s '##zDescriptorDatabase.Addc C s | j | S)a� Finds the file descriptor proto by file name. Typically the file name is a relative path ending to a .proto file. The proto with the given name will have to have been added to this database using the Add method or else an error will be raised. Args: name: The file name to find. Returns: The file descriptor proto matching the name. Raises: KeyError if no file by the given name was added. )r )r r r r r �FindFileByNameS s z!DescriptorDatabase.FindFileByNamec C sK y | j | SWn5 t k rF | j d � \ } } } | j | SYn Xd S)a� Finds the file descriptor proto containing the specified symbol. The symbol should be a fully qualified name including the file descriptor's package and any containing messages. Some examples: 'some.package.name.Message' 'some.package.name.Message.NestedEnum' 'some.package.name.Message.some_field' The file descriptor proto containing the specified symbol must be added to this database using the Add method or else an error will be raised. Args: symbol: The fully qualified symbol name. Returns: The file descriptor proto containing the symbol. Raises: KeyError if no file contains the specified symbol. r N)r �KeyError� rpartition)r �symbolZ top_level�_r r r �FindFileContainingSymbolf s z+DescriptorDatabase.FindFileContainingSymbolN)r r r r r r r r"