Подсказка типа и внешние функции ctypes

#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)

  

Или есть лучший подход?