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가 발생합니다.