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 derelative_to
. Serelative_to
for uma mensagem aninhada, pesquisa a respetiva message_definition(). Se essa mensagem não tiver uma message_definition(), pesquisa o respetivo módulo. Serelative_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 realabc.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 aabc
é resolvida comoxyz.SomeMessage
e não comoabc.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.