Как правильно указывать в коде тип, возвращаемый функцией execute оператора Blender

При использовании типизации в коде, обращающемся к Blender Python API, обычно мы не сталкиваемся с какими-то проблемами. Однако указание типа возвращаемого значения для функции execute() оператора Blender, не совсем очевидно.

Мы знаем, что функция execute(), основная исполняемая функция любого оператора Blender, всегда возвращает сет, состоящий из одного строкового элемента.

Это может быть:

В общем случае, мы можем указать для функции execute() в качестве типа возвращаемого параметра set[‘str’]

Это будет работать. Однако мы можем немного улучшить восприятие кода, используя указание на rna_enums.OperatorReturnItems, если для автокомплита мы используем fake-bpy-module.

Описание типа возвращаемого функцией execute() оператора описано в fake-bpy-module в модуле bpy\_typing\rna_enums

Дальнейшая информация предоставлена Andrej (Andrej730)

По сути bpy._typing еще более фейковый, чем весь модуль fake-bpy-module, и вообще не существует в реальном Blender API.

Поэтому нужно убедиться, что он никогда не используется во время выполнения.

Импортируйте его только внутри блока TYPE_CHECKING.

Ссылайтесь на него только с помощью кавычек, чтобы он не был оценен.

Причина, по которой нужны эти махинации, — это компромисс между реалиями Blender и системой типизации Python.

fake-bpy-module предоставляет точные возможные значения перечисления для таких вещей, как возможные возвращаемые значения, но для этого требуются те статические вещи, которые доступны только во время выполнения.

Пример кода с оформлением возвращаемого значения функции execute() оператора:

Обновление (04.06.2025) Andrej (Andrej730)

В последней версии fake-bpy-module модуль bpy._typing заменен на bpy.stub_internal.

Для правильной работы автокомплита теперь вместо bpy._typing нужно указывать bpy.stub_internal. В примере выше это будет выглядеть следующим образом:

Вместо:

Нужно писать:

Весь остальной код остается без изменений.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии