Funzioni del modulo Messaggi

Il pacchetto protorpc.messages fornisce la seguente funzione di utilità posizionale:

find_definition(name, relative_to=None)

Trova la definizione per nome nello spazio del modulo.

L'algoritmo di ricerca trova le definizioni per nome rispetto a una definizione di messaggio o per nome completo. Se non viene trovata alcuna definizione relativa al parametro relative_to, viene eseguita una ricerca nel contenitore di relative_to. Se relative_to è un messaggio nidificato, viene cercata la relativa definizione del messaggio (message_definition()). Se il messaggio non ha una definizione del messaggio, viene cercato il relativo modulo. Se relative_to è un modulo, l'algoritmo di ricerca cerca il modulo contenente e le relative ricerche. Se il modulo è un modulo di primo livello, l'algoritmo di ricerca cerca un messaggio utilizzando un nome completo. Se non viene trovato alcun messaggio, la ricerca non va a buon fine e il metodo genera un DefinitionNotFoundError.

Ad esempio, quando cerchi una definizione foo.bar.ADefinition relativa a una definizione di messaggio effettiva abc.xyz.SomeMessage:

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

Gli argomenti di questo metodo seguono uno schema simile a una ricerca di nomi completi:

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

Quando risolve il nome rispetto alle definizioni e ai moduli dei messaggi, l'algoritmo cerca eventuali messaggi o sottomoduli trovati nel percorso, ignorando i valori non di tipo Message.

Un nome che inizia con '.' è considerato un nome completo. L'algoritmo di ricerca inizia a cercare dal pacchetto più alto. Ad esempio, supponiamo due tipi di messaggi:

abc.xyz.SomeMessage
xyz.SomeMessage

La ricerca di .xyz.SomeMessage in relazione a abc risolve in xyz.SomeMessage e non in abc.xyz.SomeMessage. Per questo tipo di nome, il parametro relative_to viene ignorato e impostato sempre su None.

Per ulteriori informazioni sulla risoluzione dei nomi dei pacchetti, consulta lo Specificatore del pacchetto Protocol Buffers.

Argomenti
name
Nome di una definizione da trovare. Può essere completo o relativo.
relative_to
Cerca una definizione relativa alla definizione del messaggio o al modulo. Se è Nessuno, viene eseguita una ricerca del nome completo.

Restituisce una definizione di classe Enum o Message associata al nome.

genera un DefinitionNotFoundError se non viene trovata alcuna definizione in nessun percorso di ricerca.