ell-pancho / afanasy

Afanasy examples
1 stars 0 forks source link

Сабмит из Maya #1

Open MikhailPasechnik opened 3 years ago

MikhailPasechnik commented 3 years ago

https://github.com/ell-pancho/afanasy/blob/main/afanasy_maya_submit.py

Добавить в диалог CGRU:

image

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


def submit(
    start_frame=None,
    end_frame=None,
    ...
):

class UI(object):
    ....
    def launch(self, *args, **kwargs):
         submit(
             start_frame = pm.intField('cgru_afanasy__start_frame', q=1, v=1)
             end_frame = pm.intField('cgru_afanasy__end_frame', q=1, v=1)
             frames_per_task = \
             pm.intField('cgru_afanasy__frames_per_task', q=1, v=1),
             ...
        )

Для того, чтобы помимо сабмита с помощью диалогового окна, можно было сделать это программно


import afanasy_maya_submit
# Сабмит через диалоговое окно
afanasy_maya_submit.UI().show(
    file_name_prefix="R:/ep/sq/sh/..../...####",
    ....
)

# Сабмит в обход диалога
job_id = afanasy_maya_submit.submit(
    file_name_prefix="R:/ep/sq/sh/..../...####",
    ...
)
kalemas commented 3 years ago

не любишь ты классы так, как люблю их я) но тут в принципе достаточно ясно всё и гибкий контроль поведения через параметры должен быть, так что норм.

kalemas commented 3 years ago

Вмешаюсь немного, если комментарий не в тему, игнорируйте пожалуйста

не совсем понимаю, что это за класс, похоже на абстрактный интерфейс. Абстрактные методы обязательно должны перегружаться, их вызов должен быть невозможен. Можно воспользоваться модулем abc.

В любом случае мы ожидаем что метод Subimt.start произведет некую работу, но он это не реализует, https://github.com/ell-pancho/afanasy/blob/7d6a17c79149b1c06434fc27548641bc46011110/afanasy_maya_submit.py#L66 и будет корректней предупредить клиента выкинув NotImplementedError.

kalemas commented 3 years ago

думаю в нашем случае такой способ формирования команды приемлемый, https://github.com/ell-pancho/afanasy/blob/7d6a17c79149b1c06434fc27548641bc46011110/afanasy_maya_submit.py#L96 но учтите, если в каком то параметре по какой то причине окажется пробел, результат будет не корректным. Если необходимо предусмотреть пробелы в параметрах - воспользуйтесь модулем shlex.

ell-pancho commented 3 years ago

Submit - класс подразумевался как базовый для всех класс, с определенным набором методов, на случай если будут ещё писаться сабмитеры для нюка, гудини и всего такого. Добавлю в него эксепшены)

kalemas commented 3 years ago

Ой, еще, мы предпочитаем использовать пакет Qt.py для совместимости. https://github.com/ell-pancho/afanasy/blob/7d6a17c79149b1c06434fc27548641bc46011110/afanasy_maya_submit.py#L31

Ещё завезенные импорты это плохая практика. Если ещё не пользуешься линтером, рекомендую flake8, можем скинуть наш конфиг.

Мои замечания не влияют на приёмку кода нами, только если Миша подтвердит или хочешь сам улучшить.

ell-pancho commented 3 years ago

PySide2 вроде с майкой едет, но если нужно от этого отвязаться - то без проблем) только нужно знать где лежит Qt.py Линтер у меня какой-то встроенный в VS Code, но было бы неплохо иметь одинаковый стиль написания, если скинете - будет здорово)

kalemas commented 3 years ago

Я просто сагрился на странное переключение на PySide1) такое часто не работает. Qt.py это пакет, pip install Qt.py Но ещё раз, если Миша не подтвердит, лучше не меняй ничего, могут новые проблемы всплывать. Тут вообще может имееть смысл выделение gui в отдельный модуль, чтобы без тяжёлой зависимости в виде PySide запускать.

конфиг vscode так примерно выглядит

{
    "files.trimTrailingWhitespace": true,
    "python.linting.enabled": true,
    "editor.rulers": [
        {"column": 80},
    ],
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--config",
        "${workspaceFolder}/python/setup.cfg",
    ],
    "python.linting.mypyEnabled": true,
    "python.formatting.yapfArgs": [
        "--style",
        "${workspaceFolder}/python/setup.cfg"
    ],
    "python.formatting.provider": "yapf",
}

setup.cfg, примерно так

[flake8]
import-order-style: google

[yapf]
based_on_style: google
column_limit: 79

модули: flake8-import-order, flake8, mypy, pep8-naming, types-PyYAML, types-requests, types-six, yapf

ell-pancho commented 3 years ago

Про PySide - так советуют писать для совместимости со старыми майками https://help.autodesk.com/view/MAYAUL/2017/ENU/?guid=__files_GUID_3F96AF53_A47E_4351_A86A_396E7BFD6665_htm За конфиги спасибо, поставлю у себя)

kalemas commented 3 years ago

https://github.com/mottosso/Qt.py лучше читается и дает лучшую совместимость

MikhailPasechnik commented 3 years ago

@ell-pancho в логике обработке status, data = job.send() явно что-то не так, if not status: pm.display...(status)