Fonctions du module de messages

Le package protorpc.messages propose la fonction d'utilitaire de position suivante :

find_definition(name, relative_to=None)

Recherche une définition par nom dans l'espace module.

L'algorithme recherche des définitions par nom en fonction de la définition d'un message ou par nom complet. S'il ne trouve aucune définition en fonction du paramètre relative_to, il effectue la recherche par rapport au conteneur de relative_to. Si relative_to est un message imbriqué, il recherche message_definition(). En cas d'absence de message_definition(), il recherche son module. Si relative_to est un module, l'algorithme recherche le module conteneur et effectue la recherche par rapport à lui. Si le module est un module de premier niveau, l'algorithme recherche le message par nom complet. S'il ne trouve toujours aucun message, la recherche échoue, et la méthode génère une erreur DefinitionNotFoundError.

Par exemple, lorsque vous recherchez une définition foo.bar.ADefinition par rapport à une définition abc.xyz.SomeMessage de message réelle :

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

Les arguments de cette méthode suivent un modèle semblable à celui de la recherche de noms complets :

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

Lors de la résolution du nom par rapport aux modules et définitions de messages, l'algorithme recherche des messages ou sous-modules trouvés dans ce chemin, en ignorant les valeurs autres que celles liées aux messages.

Un nom commençant par '.' est considéré comme étant un nom complet. L'algorithme de recherche commence la recherche à partir du package de niveau supérieur. Par exemple, prenons deux types de messages :

abc.xyz.SomeMessage
xyz.SomeMessage

Rechercher .xyz.SomeMessage par rapport à abc donne xyz.SomeMessage et non abc.xyz.SomeMessage. Pour ce type de nom, le paramètre "relative_to" est effectivement ignoré et toujours défini sur "None".

Pour plus d'informations sur la résolution du nom du package, consultez le spécificateur de package Protocol Buffers.

Arguments
name
Nom de la définition à rechercher. Peut être complet ou relatif.
relative_to
Recherche une définition par rapport au module ou à la définition de message. Si défini sur "None", lance une recherche de noms complets.

Renvoie une définition de classe Enum ou Message associée au nom.

Génère une erreur DefinitionNotFoundError si aucune définition n'est trouvée dans un chemin de recherche.