메시지 모듈 함수

protorpc.messages 패키지는 다음과 같은 위치 유틸리티 함수를 제공합니다.

find_definition(name, relative_to=None)

모듈 공간에서 이름으로 정의를 찾습니다.

찾기 알고리즘은 메시지 정의와 관련된 이름 또는 정규화된 이름으로 정의를 찾습니다. relative_to 매개변수와 관련된 정의가 발견되지 않으면 relative_to의 컨테이너를 검색합니다. relative_to가 중첩된 메시지인 경우 해당 메시지의 message_definition()를 검색합니다. 해당 메시지에 message_definition()가 없으면 해당 모듈을 검색합니다. relative_to가 모듈이면 찾기 알고리즘은 포함된 모듈을 검색하고 이와 관련해서 검색을 수행합니다. 모듈이 최상위 모듈인 경우, 찾기 알고리즘은 정규화된 이름을 사용하여 메시지를 검색합니다. 메시지를 찾지 못하면 검색은 실패하고 메서드에 DefinitionNotFoundError가 발생합니다.

예를 들어 foo.bar.ADefinition 정의를 실제 메시지 정의 abc.xyz.SomeMessage와 관련하여 찾는 경우에는 다음 명령어를 사용합니다.

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 외 값을 무시합니다.

'.'로 시작하는 이름은 정규화된 이름으로 간주됩니다. 찾기 알고리즘은 최상위 패키지에서 검색을 시작합니다. 예를 들어, 다음 두 가지 메시지 유형이 있다고 가정해 보겠습니다.

abc.xyz.SomeMessage
xyz.SomeMessage

abc와 관련된 .xyz.SomeMessage의 검색은 abc.xyz.SomeMessage가 아닌 xyz.SomeMessage으로 확인됩니다. 이러한 종류의 이름에서는 relative_to 매개변수가 무시되고 항상 None으로 설정됩니다.

패키지 이름 확인에 대한 자세한 내용은 프로토콜 버퍼 패키지 지정자를 참조하세요.

인수
name
찾으려는 정의 이름입니다. 정규화된 이름 또는 상대적 이름일 수 있습니다.
relative_to
메시지 정의 또는 모듈과 관련된 정의를 검색합니다. None이면 정규화된 이름 검색이 수행됩니다.

이름과 연결된 Enum 또는 Message 클래스 정의를 반환합니다.

정의가 검색 경로에 없으면 DefinitionNotFoundError가 발생합니다.