Funções do módulo de mensagens

O pacote protorpc.messages oferece a seguinte função de utilidade posicional:

find_definition(name, relative_to=None)

Encontre a definição pelo nome no espaço do módulo.

O algoritmo de localização encontra definições por nome relativamente a uma definição de mensagem ou por nome totalmente qualificado. Se não for encontrada nenhuma definição relativa ao parâmetro relative_to, a pesquisa é feita no contentor de relative_to. Se relative_to for uma mensagem aninhada, pesquisa a respetiva message_definition(). Se essa mensagem não tiver uma message_definition(), pesquisa o respetivo módulo. Se relative_to for um módulo, o algoritmo de localização procura o módulo que o contém e pesquisa relativamente a ele. Se o módulo for um módulo de nível superior, o algoritmo de localização procura uma mensagem através de um nome totalmente qualificado. Se ainda não encontrar nenhuma mensagem, a pesquisa falha e o método gera um DefinitionNotFoundError.

Por exemplo, quando procura qualquer definição foo.bar.ADefinition relativa a uma definição de mensagem real abc.xyz.SomeMessage:

find_definition('foo.bar.ADefinition', SomeMessage)

Os argumentos para este método seguem um padrão semelhante a uma pesquisa de nomes totalmente qualificados:

abc.xyz.SomeMessage. foo.bar.ADefinition
abc.xyz. foo.bar.ADefinition
abc. foo.bar.ADefinition
foo.bar.ADefinition

Ao resolver o nome relativamente às definições e aos módulos de mensagens, o algoritmo pesquisa quaisquer mensagens ou submódulos encontrados no respetivo caminho, ignorando os valores que não sejam mensagens.

Um nome que começa com '.' é considerado um nome totalmente qualificado. O algoritmo de localização começa a pesquisar a partir do pacote mais acima. Por exemplo, suponha que existem dois tipos de mensagens:

abc.xyz.SomeMessage
xyz.SomeMessage

A pesquisa de .xyz.SomeMessage em relação a abc é resolvida como xyz.SomeMessage e não como abc.xyz.SomeMessage. Para este tipo de nome, o parâmetro relative_to é efetivamente ignorado e está sempre definido como Nenhum.

Para mais informações sobre a resolução do nome do pacote, consulte o especificador do pacote de buffers de protocolo.

Argumentos
name
Nome de uma definição a encontrar. Pode ser totalmente qualificado ou relativo.
relative_to
Pesquisa uma definição relativa à definição ou ao módulo da mensagem. Se for Nenhum, provoca uma pesquisa de nome totalmente qualificado.

Devolve uma definição de classe Enum ou Message associada ao nome.

gera um DefinitionNotFoundError se não for encontrada nenhuma definição em nenhum caminho de pesquisa.