Как создать файлы-заглушки Python и куда поместить?

#python-3.x #pylint #python-extensions #pyi

#python-3.x #pylint #python-расширения #pyi

Вопрос:

У меня есть скомпилированное расширение Python. Полученный двоичный mylib.so файл может быть импортирован в скрипт Python и работает нормально.

Теперь мне интересно, как написать файл-заглушку интерфейса mylib.pyi таким образом, чтобы pylint и сервер языка Python, используемый в VS Code, могли его использовать?

На данный момент собственная библиотека находится только в корне моих скриптов. При размещении mylib.pyi рядом с ним pylint игнорирует его.

Ответ №1:

Я знаю, что этому вопросу год, но ответ может помочь следующему человеку. Мне удалось сделать это, написав следующий установочный файл:

 from distutils.core import setup, Extension
extension = Extension(
    name = 'dummy',
    sources = ...,
    ...
)
    
setup(
    name = 'dummy',
    ext_modules = [extension],
    packages = ['dummy'],
    package_dir = {'dummy' : './stub'},
    package_data = {
        'dummy': ['__init__.pyi', 'py.typed']
    }
)
 

Насколько я понимаю, stub каталог обрабатывается как отдельный пакет и устанавливается вместе с расширением. Я тестировал его только с помощью vscode, но я считаю, что все IDE должны иметь возможность его анализировать. Полный код можно найти здесь.