Я чувствую, что понял это раньше, но он снова не работает, я разрабатываю код на основе protobuf и grpc, и в документации все типы выглядят очень беспорядочно:
create_session(name: str, path: str, file_type: <google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper object at 0x10984e7d0> = 0, sample_rate: <google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper object at 0x109837710> = 2, bit_depth: <google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper object at 0x10982c6d0> = 2, io_setting: <google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper object at 0x109819d10> = 1, is_interleaved: bool = True)
Это из следующей функции в моем источнике
import ptsl.PTSL_pb2 as pt # my grpc-tools generated type header
# yada yada yada
def create_session(self,
name: str,
path: str,
file_type: 'SessionAudioFormat' = pt.SAF_WAVE,
sample_rate: 'SampleRate' = pt.SR_48000,
bit_depth: 'BitDepth' = pt.Bit24,
io_setting: 'IOSettings' = pt.IO_Last,
is_interleaved: bool = True) -> None:
# etc...
Аннотации моих типов в исходном коде преобразуются в экземпляры этого типа, а не просто в ссылки, которые будут связаны с остальной документацией. Есть ли способ заставить документацию разрешать имена реальных типов и ссылаться на мою документацию тех типов, где я это сделал (как и любой другой тип)?
Это было не так, я работаю на Python3.12. Я забыл импортировать типы вверху.
Моя ошибка, я забыл импортировать типы вверху. Sphinx не может связать типы в аннотациях с их определением, если только они не были импортированы в файл, даже если аннотация является прямой ссылкой или строкой.
Возможно, это поможет: stackoverflow.com/a/67483317/407651