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 derelative_to. Casorelative_toseja uma Message aninhada, ela pesquisará a message_definition() dela. Caso essa mensagem não tenha message_definition(), pesquise o módulo dela. Casorelative_toseja 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.ADefinitionrelativa a uma definição de mensagemabc.xyz.SomeMessagereal: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.SomeMessagerelativa aabcresolve paraxyz.SomeMessagee nãoabc.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.