Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Wed 30 Dec, 2015 17:52

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Mon 28 Aug, 2017 09:07

Latest post of the previous page:

Вроде бы всё работает:
both.png
both.png (79.49 KiB) Viewed 3080 times

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Mon 28 Aug, 2017 12:17

у меня не заводится,
попробовал на 7-ке и 10-ке без питона - тоже самое:
pygin c helloworld работает, Lunatic c py-hash.lua нет
Image 001.png
Image 001.png (24.37 KiB) Viewed 2275 times

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Tue 29 Aug, 2017 15:00

не удаётся установить причину, устойчиво проявляется: плагины и макросы не добавляю, добавляю Lunatic Python модуль Lua,

при наличии pygin adapter (тестовый плагин не важен), при вводе в командной строке

Code: Select all

lua:require"python";python.import"lua";print(python.eval("lua.__dir__()"))
получаю в консоль строку «ModuleNotFoundError: No module named 'lua'» и сообшение от LuaMacro

без pygin получаю в консоль вывод питона «['__name__', '__doc__', '__package__', '__loader__', '__spec__', 'execute', 'eval', 'globals', 'require']», как и ожидалось.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Pygin — Python adapter

Post by Shmuel » Tue 29 Aug, 2017 15:51

Сейчас впервые попробовал сабж - и вот первый багрепорт :)
Выбираю из меню "Do console stuff" и получаю:
╔════════ Pygin: Python exception ═════════╗ ║ ValueError: 113 is not a valid SortModes ║ ╟──────────────────────────────────────────╢ ║ Traceback (most recent call last): ║ ║ File "enum.py", line 291, in __call__ ║ ║ File "enum.py", line 533, in __new__ ║ ║ File "enum.py", line 546, in _missing_ ║ ╟──────────────────────────────────────────╢ ║ { OK } ║ ╚══════════════════════════════════════════╝
После чего Фар можно только прибить.
113 - это custom sort mode.
Last edited by Shmuel on Tue 29 Aug, 2017 15:52, edited 1 time in total.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Pygin — Python adapter

Post by Shmuel » Tue 29 Aug, 2017 17:16

DrKnS, ещё один репорт:
1. Переношу папку helloworld из Plugins в %FARHOME%
2. Выхожу из Far и запускаю его снова.
3. Плагин как ни странно не только появляется в меню плагинов, но и работает.

tstr, модуль "lua" отсутствует в полном соответствии с кодом библиотеки, если интерпретатор Питона уже инициализирован.
То есть, если Pygin загружается до LuaMacro, то py-hash работать не будет. Это плохо, да, но что-то придумаем (срочность не обещаю, поскольку в сентябре будет напряжёнка на работе).

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Tue 29 Aug, 2017 18:13

Shmuel, да, адаптер должен по замыслу грузиться до всех возможных плагинов, это ожидаемо.
Shmuel wrote:
Tue 29 Aug, 2017 17:16
что-то придумаем (срочность не обещаю, поскольку в сентябре будет напряжёнка на работе)
ясно, будем пока независимо смотреть, не взбалтывая )

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Tue 29 Aug, 2017 20:48

Shmuel wrote:
Tue 29 Aug, 2017 15:51
ValueError: 113 is not a valid SortModes
Спасибо, поправил.
Теперь в случае custom sort mode PanelInfo.SortMode будет int, а не SortModes. Возможно, не самый лучший вариант, но другого я не знаю.
Shmuel wrote:
Tue 29 Aug, 2017 17:16
Переношу папку helloworld из Plugins в %FARHOME%
Не могу повторить. Решение о том, откуда грузить плагины, как бы принимает Far, а не адаптер, так что у меня даже идей никаких нет.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Pygin — Python adapter

Post by Shmuel » Tue 29 Aug, 2017 21:04

DrKnS wrote:
Tue 29 Aug, 2017 20:48
Не могу повторить
Это был ложный багрепорт. То есть описанное поведение действительно наблюдалось, но причиной была установленная у меня в ярлыке папка Фара под ключом /p.

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Tue 29 Aug, 2017 21:27

Shmuel wrote:
Tue 29 Aug, 2017 15:51
После чего Фар можно только прибить
Тоже поправил.

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Tue 29 Aug, 2017 21:51

Shmuel wrote:
Tue 29 Aug, 2017 17:16
модуль "lua" отсутствует в полном соответствии с кодом библиотеки, если интерпретатор Питона уже инициализирован.
То есть, если Pygin загружается до LuaMacro, то py-hash работать не будет.
Не ставя под сомнение код библиотеки, хочу отметить, что у меня почему-то в описанной ситуации работает и py-hash, и пример с "lua:require" выше.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Pygin — Python adapter

Post by Shmuel » Tue 29 Aug, 2017 22:03

DrKnS wrote:
Tue 29 Aug, 2017 21:51
Не ставя под сомнение код библиотеки
Ясно, что у вас что-то идёт по-другому, чем на моей системе. Я продебаггировал - в библиотеке примерно такой код (несущественное опущено):

Code: Select all

    /* Initialize Python interpreter */
    if (!Py_IsInitialized()) {
        ..............................
        /* Import 'lua' automatically. */
        luam = PyImport_ImportModule("lua");
        ..............................
    }
Туда у меня не заходит, из-за того, что условие не соблюдается.

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Tue 29 Aug, 2017 23:17

Shmuel wrote:
Tue 29 Aug, 2017 22:03
что-то идёт по-другому, чем на моей системе
Да, действительно.
Вы, скорее всего, работаете с релизной версией, взятой с appveyor, которая использует python36.dll (как и lunatic), а я просто запускал из IDE debug, использущий python36_d.dll.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Pygin — Python adapter

Post by techie » Thu 07 Sep, 2017 06:41

Как сложно для Python плагинов ввести автоматические GUID вида plugname/type/name? Например hello-world/menu/main-menu?

В рамках плагина тогда у каждого меню будет просто имя - легко читается и находится.

User avatar
HaRT
Moderator
Posts: 8074
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Pygin — Python adapter

Post by HaRT » Thu 07 Sep, 2017 12:47

techie wrote:
Thu 07 Sep, 2017 06:41
ввести автоматические GUID вида plugname/type/name
Это будут уже не GUID.

P.S.
Даже мне уже надоели ваши регулярные высказывания по этому давно человечеством решённому вопросу.
Расскажите, наконец, доходчиво, что у вас за проблема с гуидами. Может её и решать надо совсем другими средствами, чем те, которые вы всё время предлагаете.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Pygin — Python adapter

Post by cmd.exe » Thu 07 Sep, 2017 19:05

HaRT wrote:
Thu 07 Sep, 2017 12:47
Это будут уже не GUID.
Почему не будет? Если из ИмениПагина, ИмениБиблиотекиПлагина, РасширенияБиблиотекиПлагина генерировать GUID для временных данных. Данный метод использует Винда в сессиях пользователей. Пусть "Юзер" голову ломает, какой гуид от какого плагина.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
HaRT
Moderator
Posts: 8074
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Pygin — Python adapter

Post by HaRT » Thu 07 Sep, 2017 19:17

cmd.exe wrote:
Thu 07 Sep, 2017 19:05
Почему не будет?
По определению.
cmd.exe wrote:
Thu 07 Sep, 2017 19:05
Пусть "Юзер" голову ломает, какой гуид от какого плагина.
GUID — это техническая информация, она не для обычных юзеров.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 4609
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 121 times
Contact:

Pygin — Python adapter

Post by DrKnS » Thu 07 Sep, 2017 23:25

techie wrote:
Thu 07 Sep, 2017 06:41
Как сложно для Python плагинов ввести автоматические GUID вида plugname/type/name?
Вы же по ссылке в вашей подписи уже всё изобрели, пользуйтесь.
Делать это по умолчанию для всех искаропки - я как-то не вижу смысла.

Post Reply

Return to “Разработка плагинов”