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 penampungrelative_to
. Jikarelative_to
adalah Pesan susun bertingkat, algoritma akan menelusuri message_definition(). Jika pesan tersebut tidak memiliki message_definition(), algoritma akan menelusuri modulnya. Jikarelative_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 terhadapabc.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 terhadapabc
akan me-resolve kexyz.SomeMessage
dan bukanabc.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.