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_to
seja uma Message aninhada, ela pesquisará a message_definition() dela. Caso essa mensagem não tenha message_definition(), pesquise o módulo dela. Casorelative_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 mensagemabc.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 aabc
resolve paraxyz.SomeMessage
e 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.