Skip to content

Заглушки .NET библиотек для IronPython

Notifications You must be signed in to change notification settings

BIMOpenGroup/RevitAPIStubs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Код репозитория основан на ironpython-stubs. Выражаю gtalarico бесконечную благодарность за вклад в развитие сообщества разработчиков, скриптов и плагинов для инженерных программ. Я не стал делать форк его репозитория, потому что хочу внести координальные изменения, к тому же, автор уже давно им не занимается, а преемник так и не был найден.

Так же как и в базовом репозитории, "заглушки" могут быть использованы в различных текстовых редакторах, но все примеры будут рассматриваться в visual studio code.

На самом деле сгенерированный код нельзя называть "заглушками", но данное название уже прижилось в сообществе. Если хотите узнать про настоящие заглушки для python кода, то почитайте тут.

Для пользователей

Сгенерированные заглушки ищите в релизах. Как вы можете заметить, они разделены на common и revit.
В common хранятся заглушки системных библиотек Windows, пакеты IronPython, Dynamo и RPS.
В revit хранятся заглушки для нескольких версий библиотек Revit API.
Чтобы не было конфликтов у анализатора кода, подключать заглушки надо с помощью двух путей.

// %APPDATA%\Code\User\settings.json
"python.analysis.extraPaths": [
    "ВАШ_ПУТЬ\\stubs\\common",
    "ВАШ_ПУТЬ\\stubs\\revit\\2019"
],

При изменении версии Revit для конкретного проекта, придётся повторить оба пути.

// .vscode/settings.json
"python.analysis.extraPaths": [
    "ВАШ_ПУТЬ\\stubs\\common",
    "ВАШ_ПУТЬ\\stubs\\revit\\2021"
],

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

Чтобы заглушки были максимально эффективными, их надо допиливать руками, но об этом подробнее в примерах.
Надеюсь, в будущем это будет исправлено. Если выйдет новая версия Revit API, но при этом код генерации не изменится, то будет обновлён архив последнего релиза.

Для котрибьюторов

Любая помощь приветствуется!
Пишите вопросы, предложения, замечания. Даже если я не смогу что-то поправить вовремя, то возможно кто-то из сообщества поможет.

Общая информация

Генерация заглушек возможна через консоль, и это выглядит предпочтительным и гибким вариантом, но для простоты я выбрал RevitPythonShell. Например, не надо заботиться о дополнительных зависимостях для RevitAPIUI или требовать пути для генерации, просто открываем нужный нам Revit и запускаем скрипт. К тому же, данный репозиторий создан для генерации заглушек только для Revit.

Из-за того что Pylance достаточно производительный в отличие от Jedi заглушки больше не нужно "минимизировать". Поэтому раньше требовалось запускать скрипт для обработки сгенерированных заглушек и формирования stubs.min.

Решил разместить заглушки в релизах, потому что нет смысла хранить их в репозитории. Единственная причина хранения их в репозитории - если кто-то будет их обновлять/исправлять руками. Но это очень большой и ненужный труд. Лучше попробовать улучшить генератор.

Как генерировать заглушки

В оболочке RPS запускаем src/main.py, изменив при этом путь к src_dir.
Если запускать через кастомную кнопку на панели RPS, то в коде ничего менять не надо.
Заглушки сгенерируются в корне репозитория.

Правила

Как и практически в любом опенсорсе тут принята система Forking Workflow.
Тезисно:

  • Делаем форк репозитория;
  • Создаём ветку от master;
  • Делаем pull request в upstream/master.

Правила именования веток:

  • Стиль kebab-case;
  • Первым словом идёт задача fix/feature/refactor и т.д. Последующими - краткое описание, либо номер issue.
    fix-iss57 / feature-iss14 / refactor-generator.

Просьба добавить папки различных IDE в свой глобальный gitignore.

Текущие задачи

На данный момент приоритетной задачей является улучшение кода генератора.