#python-3.x #ctypes #type-hinting #mypy
#python-3.x #ctypes #подсказка типа #mypy
Вопрос:
Как я должен вводить подсказку внешней функции, определенной с помощью Python ctypes
?
Нужно ли мне повторять информацию, указанную в атрибутах restype
and argtypes
? Или есть способ, позволяющий mypy каким-то образом понимать атрибуты?
Например, учитывая это определение функции:
# Original function definition:
libopus.opus_encode.restype = opus_int32
libopus.opus_encode.argtypes = [oe_p, opus_int16_p, c_int, c_uchar_p, opus_int32]
def opus_encode(st, pcm, frame_size, data, max_data_bytes):
return libopus.opus_encode(st, pcm, frame_size, data, max_data_bytes)
Является ли наилучшим подходом для ручного дублирования информации о типе?
# Duplicated type specification:
libopus.opus_encode.restype = opus_int32
libopus.opus_encode.argtypes = [oe_p, opus_int16_p, c_int, c_uchar_p, opus_int32]
def opus_encode(st: oe_p,
pcm: opus_int16_p,
frame_size: c_int,
data: c_uchar_p,
max_data_bytes: opus_int32) -> opus_int32:
return libopus.opus_encode(st, pcm, frame_size, data, max_data_bytes)
Или есть лучший подход?