Fungsi Modul Pesan

Paket protorpc.messages menyediakan fungsi utilitas posisi berikut:

find_definition(name, relative_to=None)

Temukan definisi berdasarkan nama di module-space.

Algoritma pencari menemukan definisi menurut nama, relatif terhadap definisi pesan, atau berdasarkan nama yang sepenuhnya memenuhi syarat. Jika tidak ditemukan definisi yang relatif terhadap parameter relative_to, algoritma akan menelusuri penampung relative_to. Jika relative_to adalah Pesan susun bertingkat, algoritma akan menelusuri message_definition(). Jika pesan tersebut tidak memiliki message_definition(), algoritma akan menelusuri modulnya. Jika relative_to adalah modul, algoritma pencari akan menelusuri modul penampung dan melakukan penelusuran relatif terhadap modul tersebut. Jika modul adalah modul tingkat atas, algoritma pencari akan menelusuri pesan menggunakan nama yang sepenuhnya memenuhi syarat. Jika algoritma tetap tidak menemukan pesan, penelusuran akan gagal dan metode ini akan memunculkan DefinitionNotFoundError.

Misalnya, saat mencari foo.bar.ADefinition definisi yang relatif terhadap abc.xyz.SomeMessage definisi pesan sebenarnya:

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

Argumen untuk metode ini mengikuti pola yang mirip dengan penelusuran nama yang sepenuhnya memenuhi syarat:

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

Saat me-resolve nama yang relatif terhadap definisi dan modul Pesan, algoritma akan menelusuri Pesan atau sub-modul apa pun yang ditemukan di jalurnya, dengan mengabaikan nilai non-Pesan.

Nama yang diawali dengan '.' dianggap sebagai nama yang sepenuhnya memenuhi syarat. Algoritma pencarian akan memulai penelusuran dari paket paling atas. Misalnya, asumsikan dua jenis pesan:

abc.xyz.SomeMessage
xyz.SomeMessage

Menelusuri .xyz.SomeMessage yang relatif terhadap abc akan me-resolve ke xyz.SomeMessage dan bukan abc.xyz.SomeMessage. Untuk nama jenis ini, parameter relative_to diabaikan secara efektif dan selalu disetel ke None.

Untuk informasi selengkapnya tentang resolusi nama paket, lihat penentu Paket Buffering Protokol.

Argumen
nama
Nama definisi yang akan ditemukan. Mungkin sepenuhnya memenuhi syarat atau relatif.
relative_to
Menelusuri definisi yang relatif terhadap definisi atau modul pesan. Jika None, ini akan menyebabkan penelusuran nama yang sepenuhnya memenuhi syarat.

Menampilkan definisi class Enum atau Pesan yang terkait dengan nama.

memunculkan DefinitionNotFoundError jika tidak ada definisi yang ditemukan di jalur penelusuran mana pun.