Импорт функций
Узнайте, как импортировать функции из других плагинов, написанных на разных языках, и использовать их в своем собственном.
В Plugify языковой модуль Python позволяет импортировать и использовать функции из плагинов, написанных на других языках. Это достигается за счет генерируемых во время выполнения синтетических модулей, которые обеспечивают бесшовное межплагиновое взаимодействие. Кроме того, могут быть сгенерированы stub-файлы (.pyi
), чтобы предоставить подсказки типов и сигнатуры функций для лучшего опыта разработки в IDE, таких как PyCharm или VSCode.
Это руководство объясняет, как импортировать функции в Python и как использовать stub-файлы для разработки.
Обзор
При импорте функций из другого плагина в Python:
- Генерируемые во время выполнения модули: Plugify динамически генерирует синтетические модули во время выполнения, позволяя вам напрямую импортировать и вызывать функции из других плагинов.
- Stub-файлы для разработки: Stub-файлы (
.pyi
) могут быть сгенерированы для предоставления подсказок типов и сигнатур функций. Эти файлы не требуются для выполнения во время выполнения, но полезны для разработки. - Прямые вызовы функций: Функции вызываются напрямую с использованием импортированных синтетических модулей.
Импорт функций в Python
Импортируйте синтетические модули
Чтобы импортировать функции из другого плагина, используйте систему импорта Plugify для загрузки синтетического модуля для целевого плагина.
plugin_from_another_language
: Замените это на имя плагина, из которого вы хотите импортировать функции.other_plugin
: Это псевдоним для импортированного модуля плагина.
Вызовите импортированные функции
После импорта синтетического модуля вы можете вызывать его функции напрямую.
Пример 1: Вызов простой функции
ParamCallback
: Это пример функции, экспортируемой целевым плагином. Замените его на фактическое имя функции.- Параметры: Передайте необходимые параметры в соответствии с сигнатурой функции.
Пример 2: Вызов функции с параметром обратного вызова
Если импортируемая функция требует обратный вызов (callback) в качестве параметра, вы можете определить обратный вызов в Python и передать его в функцию. Вот пример:
CallFuncCallback
: Это пример функции, которая принимает обратный вызов в качестве параметра.mock_func
: Это функция обратного вызова, определенная в Python. Она изменяет параметры, переданные по ссылке, и возвращает их в виде кортежа.- Возвращаемые значения: Функция обратного вызова возвращает
None
(для типа возвращаемого значения void) и измененные параметры.
Использование stub-файлов для разработки
Stub-файлы (.pyi
) не требуются для выполнения во время выполнения, но настоятельно рекомендуются для разработки. Они предоставляют подсказки типов и сигнатуры функций, что облегчает понимание доступных функций и их параметров.
Генерация stub-файлов
Plugify предоставляет скрипт generator.py
для автоматической генерации stub-файлов для импортируемых плагинов.
Найдите скрипт-генератор:
- Скрипт
generator.py
находится в папкеgenerator
языкового модуля Python.
Запустите скрипт-генератор:
- Откройте терминал или командную строку и перейдите в папку, содержащую
generator.py
. - Запустите скрипт со следующей командой:
path_to_plugin.pplugin
: Путь к файлу манифеста плагина (.pplugin
), из которого вы хотите импортировать функции.output_folder
: Каталог, в который будет сохранен сгенерированный stub-файл.
Пример:
Сгенерированный stub-файл:
- Скрипт сгенерирует stub-файл (например,
MyPlugin.pyi
) в указанной папке вывода. - Пример содержимого stub-файла:
Использование stub-файлов в вашей IDE:
- Поместите сгенерированный stub-файл (
.pyi
) в каталог вашего проекта (но не в папку с плагинами). - IDE, такие как PyCharm и VSCode, будут использовать stub-файл для предоставления подсказок типов и автодополнения.
Поддержка stub-файлов в PyCharm:
- PyCharm поддерживает stub-файлы с расширением
.pyi
. Для получения дополнительной информации обратитесь к документации PyCharm по stub-файлам.
Поддержка stub-файлов в VSCode:
- VSCode поддерживает stub-файлы путем настройки параметра
python.analysis.stubPath
в ваших рабочих или пользовательских настройках. Добавьте путь к папке, содержащей ваши stub-файлы (например,./stubs/
), чтобы включить подсказки типов и автодополнение. - Пример конфигурации
settings.json
:
Примечания
- Stub-файлы необязательны: Stub-файлы предназначены только для разработки и не должны включаться в папку выполнения вашего плагина.
- Эффективность во время выполнения: Поскольку Python является динамически типизированным языком, вызовы функций разрешаются во время выполнения без необходимости в предварительно скомпилированных заголовочных файлах или stub-файлах.
Следуя этому руководству, вы можете легко импортировать и использовать функции из других плагинов в вашем плагине на Python, используя при этом stub-файлы для лучшего опыта разработки.