Funções do módulo de mensagens

O pacote protorpc.messages fornece a seguinte função de utilitário de posição:

find_definition(name, relative_to=None)

Encontra a definição por nome em espaço de módulo.

O algoritmo de localização encontra definições por nome relativo a uma definição de mensagem ou por um nome totalmente qualificado. Caso nenhuma definição seja encontrada em relação ao parâmetro relative_to, ela procurará no contêiner de relative_to. Caso relative_to seja uma Message aninhada, ela pesquisará a message_definition() dela. Caso essa mensagem não tenha message_definition(), pesquise o módulo dela. Caso relative_to seja um módulo, o algoritmo de busca procurará o módulo de contenção e pesquisas em relação a ele. Caso o módulo seja de nível superior, o algoritmo de localização pesquisará a mensagem usando um nome totalmente qualificado. Caso ainda não encontre mensagem, a pesquisa falhará e o método gerará um DefinitionNotFoundError.

Por exemplo, ao procurar por uma definição foo.bar.ADefinition relativa a uma definição de mensagem abc.xyz.SomeMessage real:

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

Os argumentos desse método seguem um padrão semelhante a uma pesquisa para 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 relativo a definições e módulos de Message, o algoritmo pesquisa mensagens ou submódulos encontrados no caminho dele, ignorando valores que não sejam Message.

Um nome que começa com '.' é considerado um nome de domínio totalmente qualificado. O algoritmo de localização começa a procurar o pacote superior. Por exemplo, suponhamos dois tipos de mensagem:

abc.xyz.SomeMessage
xyz.SomeMessage

Pesquisar por .xyz.SomeMessage relativa a abc resolve para xyz.SomeMessage e não abc.xyz.SomeMessage. Para esse tipo de nome, o parâmetro relative_to é efetivamente ignorado e sempre definido como None.

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 ser encontrada. Pode ser totalmente qualificado ou relativo.
relative_to
Pesquisa uma definição relativa à definição da mensagem ou ao módulo. Caso None, causa uma pesquisa de nome totalmente qualificado.

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

Gera um DefinitionNotFoundError se nenhuma definição for encontrada em qualquer caminho de pesquisa.