Funciones del módulo Messages

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

find_definition(name, relative_to=None)

Encuentra una definición por el nombre en el espacio del modulo.

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

Por ejemplo, al buscar cualquier definición foo.bar.ADefinition en relación 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 una búsqueda de nombres completamente cualificados:

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

Al resolver el nombre relativo a las definiciones y a los módulos de mensaje, el algoritmo busca en cualquier mensaje o submódulo que encuentre en su ruta ignorando los valores que no sean de mensajes.

Un nombre que empieza por '.' se considera un nombre completo. El algoritmo de búsqueda empieza buscando en el paquete superior de la jerarquía. Por ejemplo, supongamos que tenemos dos tipos de mensaje:

abc.xyz.SomeMessage
xyz.SomeMessage

Si buscas .xyz.SomeMessage en relación con abc, se resolverá como xyz.SomeMessage y no como abc.xyz.SomeMessage. En este tipo de nombre, el parámetro relative_to se ignora y siempre se establece en None.

Para obtener más información sobre la resolución de nombres de paquete, consulta la especificación de paquete de Protocol Buffers.

Argumentos
name
Nombre de la definición que se va a buscar. Puede ser completamente cualificado o relativo.
relative_to
Busca una definición relativa a la definición del mensaje o del módulo. Si se especifica None, realiza una búsqueda de nombre completamente cualificado.

Devuelve una definición de clase Enum o Message asociada al nombre.

Genera una excepción DefinitionNotFoundError si no se encuentra ninguna definición en ninguna ruta de búsqueda.