Funciones del módulo de mensajes

El paquete protorpc.messages proporciona la siguiente función de utilidad posicional:

find_definition(name, relative_to=None)

Buscar definición por nombre en módulo-espacio.

El algoritmo de búsqueda busca definiciones por nombre en relación con una definición de mensaje o por nombre completo. Si no se encuentra una definición relativa al parámetro relative_to, se busca en el contenedor de relative_to. Si relative_to es un mensaje anidado, busca su message_definition(). Si ese mensaje no tiene message_definition(), busca su módulo. Si relative_to es un módulo, el algoritmo de búsqueda busca el módulo que lo contiene y lo hace en relación con él. Si el módulo es un módulo de nivel superior, el algoritmo de búsqueda busca un mensaje con un nombre completo. Si sigue sin encontrar un mensaje, la búsqueda fallará y el método genera un DefinitionNotFoundError.

Por ejemplo, cuando buscas una definición foo.bar.ADefinition relacionada con una definición de mensaje real abc.xyz.SomeMessage:

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

Los argumentos de este método siguen un patrón similar a la búsqueda de nombres completos:

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

Cuando se resuelve el nombre relativo a las definiciones y los módulos de mensajes, el algoritmo busca cualquier mensaje o submódulo encontrado en su ruta, ignorando los valores que no son mensajes.

Un nombre que comienza con '.' se considera un nombre completo. El algoritmo de búsqueda comienza a buscar desde el paquete superior. Por ejemplo, supongamos dos tipos de mensaje:

abc.xyz.SomeMessage
xyz.SomeMessage

La búsqueda de .xyz.SomeMessage en relación con abc se resuelve en xyz.SomeMessage y no en abc.xyz.SomeMessage. Para este tipo de nombre, el parámetro relative_to se omitió eficazmente y se estableció siempre en None.

Para obtener más información sobre la resolución de nombres de paquetes, consulta el especificador de Paquetes de búferes de protocolo.

Argumentos
name
Nombre de una definición para buscar. Puede ser totalmente calificado o relativo.
relative_to
Busca una definición relacionada con la definición del mensaje o módulo. Si se establece en None, genera una búsqueda de nombre completa.

Muestra una definición de clase Enum o Message asociada con el nombre.

genera un DefinitionNotFoundError si no se encuentra ninguna definición en ninguna ruta de búsqueda.