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 derelative_to
. Sirelative_to
est un message imbriqué, il recherche message_definition(). En cas d'absence de message_definition(), il recherche son module. Sirelative_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éfinitionabc.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
donnexyz.SomeMessage
et nonabc.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.