Funzioni del modulo Messaggi

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 contenitore relative_to. Se relative_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. Se relative_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 effettiva abc.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 a abc viene risolta in xyz.SomeMessage e non in abc.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.