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 direlative_to
. Serelative_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. Serelative_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 effettivaabc.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 aabc
risolve inxyz.SomeMessage
e non inabc.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.