Il pacchetto protorpc.messages
fornisce la seguente funzione di utilità di posizionamento:
- find_Definition(name, relative_to=None)
-
Trova la definizione per nome nello spazio dei moduli.
L'algoritmo di trova trova definizioni per nome rispetto a una definizione di messaggio o per nome completo. Se non viene trovata alcuna definizione rispetto al parametro
relative_to
, viene eseguita una ricerca nel contenitorerelative_to
. Serelative_to
è un messaggio nidificato, lo strumento cerca nel messaggio message_Definition(). Se questo messaggio non contiene il messaggio message_Definition(), viene eseguita la ricerca nel relativo modulo. Serelative_to
è un modulo, l'algoritmo di ricerca cerca il modulo che lo contiene e le ricerche correlate. Se il modulo è di primo livello, l'algoritmo di trova il messaggio utilizzando un nome completo. Se ancora non trova alcun messaggio, la ricerca non andrà a buon fine e il metodo genererà 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 un pattern 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 risolvi il nome in base alle definizioni e ai moduli del messaggio, l'algoritmo cerca in qualsiasi messaggio o modulo secondario trovato nel suo percorso, ignorando i valori diversi dai messaggi.
Un nome che inizia con
'.'
è considerato un nome completo. L'algoritmo di ricerca inizia la ricerca dal pacchetto più in alto. Ad esempio, supponiamo che due tipi di messaggi:abc.xyz.SomeMessage xyz.SomeMessage
La ricerca di
.xyz.SomeMessage
in relazione aabc
viene risolta inxyz.SomeMessage
e non inabc.xyz.SomeMessage
. Per questo tipo di nome, il parametro relativi_to viene ignorato in modo efficace e viene sempre impostato su None.Per ulteriori informazioni sulla risoluzione dei nomi dei pacchetti, consulta la sezione Specifica del pacchetto di buffer di protocollo.
Argomenti- nome
- Nome di una definizione da trovare. Può essere completo o relativo.
- relativo_a
- Cerca una definizione relativa alla definizione del messaggio o al modulo. Se il valore è Nessuno, determina una ricerca completa del nome.
Restituisce una definizione di classe Enum o Message associata al nome.
genera un valore DefinitionNotFoundError se non viene trovata alcuna definizione in alcun percorso di ricerca.