Static analysis tools and IDE usually struggle to understand python binary extensions.
pybind11-stubgen
generates stubs for python extensions to make them less opaque.
While the CLI tool includes tweaks to target modules compiled specifically with pybind11 but it should work well with modules built with other libraries.
# Install
pip install pybind11-stubgen
# Generate stubs for numpy
pybind11-stubgen numpy
pybind11-stubgen [-h]
[-o OUTPUT_DIR]
[--root-suffix ROOT_SUFFIX]
[--ignore-invalid-expressions REGEX]
[--ignore-invalid-identifiers REGEX]
[--ignore-unresolved-names REGEX]
[--ignore-all-errors]
[--enum-class-locations REGEX:LOC]
[--numpy-array-wrap-with-annotated|
--numpy-array-use-type-var|
--numpy-array-remove-parameters]
[--print-invalid-expressions-as-is]
[--print-safe-value-reprs REGEX]
[--exit-code]
[--stub-extension EXT]
MODULE_NAME