メッセージ モジュール関数

protorpc.messages パッケージは、次の位置ユーティリティ関数を提供します。

find_definition(name, relative_to=None)

モジュール空間内を定義の名前で検索します。

検索アルゴリズムは、メッセージ定義に関連した名前または完全修飾名で定義を検索します。relative_to パラメータに関連した定義が見つからない場合は、relative_to のコンテナに対して検索を実行します。relative_to がネストされた Message である場合は、その Message の message_definition() を検索します。そのメッセージに message_definition() がない場合は、そのメッセージのモジュールを検索します。relative_to がモジュールの場合、検索アルゴリズムは上位のモジュールを検索し、そのモジュールに対して相対的に検索します。モジュールが最上位モジュールである場合、検索アルゴリズムは完全修飾名を使用してメッセージを検索します。それでもメッセージが見つからない場合、検索は失敗し、メソッドは DefinitionNotFoundError を送出します。

たとえば、次のように、実際のメッセージ定義 abc.xyz.SomeMessage に対して相対的な定義 foo.bar.ADefinition を検索するとします。

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

このメソッドの引数は、完全修飾名の検索に類似したパターンに従います。

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

Message 定義とモジュールに相対的な名前を解決する場合、検索アルゴリズムはパス内で見つかった Message またはサブモジュールを検索し、Message 以外の値を無視します。

'.' で始まる名前は完全修飾名とみなされます。検索アルゴリズムは一番上のパッケージから検索を開始します。たとえば、次の 2 つのメッセージ タイプがあるとします。

abc.xyz.SomeMessage
xyz.SomeMessage

.xyz.SomeMessageabc に対して相対的に検索すると、xyz.SomeMessage に解決され、abc.xyz.SomeMessage にはなりません。このような種類の名前の場合、relative_to パラメータは実質的に無視され、常に None に設定されます。

パッケージ名の解決の詳細については、プロトコル バッファ パッケージ指定子をご覧ください。

引数
name
検索する定義の名前。完全修飾名または相対名を指定できます。
relative_to
メッセージ定義またはモジュールに対して相対的に定義を検索します。None にすると、完全修飾名の検索になります。

名前に関連付けられた Enum または Message クラス定義を返します。

どの検索パスにも定義が見つからない場合は、DefinitionNotFoundError を送出します。