ETA on Pyblish Lite GUI Update?

I would like to know if there is an ETA on the Pyblish Lite GUI update from PypeClub ?

Also, I would like to know where to direct issues regarding the GUI update.
I have some working Collection/Validation plugins for Pyblish Maya and Pyblish Lite.
However when I tried the updated PypeClub GUI my plugins did not show up at all.
Not sure about the reason.

Thanks.

Hi @virtualengineer, are you able to try and reproduce the problem with minimal plug-ins you can share? Sounds like we should better fix those before merging.

Hi @marcus ,

Sorry for the delayed reply.
I currently don’t have anything I can pass on (prod env).

In regards to PypeClub’s version of pyblish-lite,
I connected PyCharm to Maya 2018 via the MayaCharm plugin and ran the debugger to see whats up.

When I setup pyblish, an None Type exception is being triggered on pyblish-lite/control.py .

Here is my pyblish lite gui setup code. The exception triggers right on “import pyblish_lite”.
PYBLISH_GUI_LITE = r"pyblish_lite"

    # setup pyblish gui pyside2
    def setup_pyblish_lite():
        import pyblish.api
        pyblish.api.register_gui(PYBLISH_GUI_LITE)

        import pyblish_lite, pyblish_lite.settings
        
        # Customize the title of the window Pyblish-lite produces.
        # Default: "Pyblish"
        pyblish_lite.settings.WindowTitle = "Scene Validation"

        # Customize which tab to show initially from the existing tabs available;
        # "artist", "overview" and "terminal".
        # Default: "artist"
        pyblish_lite.settings.InitialTab = "overview"

        # Customize whether to use labels for plugins and instances.
        # Default: True
        pyblish_lite.settings.UseLabel = False

        # Custommize the width and height of the window
        pyblish_lite.settings.WindowSize = (500, 500)

I have attached a screen shot from the PyCharm debugger for reference.

I do not know if this problem is local only to my machine because of the environment or not.

Thanks @virtualengineer. At first glance, it looks like an issue with your Qt.py or Qt-binding install. It’s complaining about not being able to call QtCore.Signal(), which is native to Qt itself and unrelated to Pyblish or Lite.

I’m unfamiliar with PyCharm or it’s debugging mechanism, but it wouldn’t be the first time it’s the cause of error. Could you try this outside of PyCharm, or from within Maya? Also can you confirm this does not happen in the latest release, any only in this particular PR? (That would be odd!)

@marcus,

I have updated Qt.py to the latest version but I am still getting an error.
It very well may be a local pc environment issue.
I am going to do further testing to try to determine the cause.
Will get back to you later.

@marcus,

When I use default Pyblish packages, everything is fine.
When I switch to the branch update-from-pype and install that via pip, I get the error above.
I am thinking it may be a package issue.
I am not sure if I am installing this thing correctly.

Are there any dependencies ?
Is installing the pyblish lite pype update sufficient?
Or do I have to install other updated modules from pype’s git repos ?

To establish a baseline, what happens when you run this?

pip install git+https://github.com/pypeclub/pyblish-lite.git@update-from-pype
python -m pyblish_lite --debug

Due to the customized environment, the packages are in a non-standard location (other folder path).
I am having trouble getting the command to work. Sorry about that.

I can give you a pyblish setup script (which is triggering the error above with the update).
Perhaps you can try testing with it to see if there is an issue.
Environment: Windows 10, Maya 2018, Pyblish Lite “Pype Udpate”, Default Pyblish Maya.

# -*- coding: utf-8 -*-

# python exe paths, pyqt5 paths (exclusively for pyblish-qml dependency settings).

MY_PYTHON_3_EXE = r"my\path\to\python37\python.exe"
MY_PYTHON_3_PYQT5 = r"my\path\to\python37\site-packages\PyQt5"


# pyblish gui options
PYBLISH_GUI_QML = r"pyblish_qml"    # pyqt5
PYBLISH_GUI_LITE = r"pyblish_lite"  # pyside2

# pyblish-qml dependencies
PYBLISH_QML_PYTHON_EXE_PATH = MY_PYTHON_3_EXE
PYBLISH_QML_PYQT5_PATH = MY_PYTHON_3_PYQT5


def setup_mayacharm_debug():
    import maya.cmds as cmds
    if not cmds.commandPort(':4434', q=True):
        cmds.commandPort(n=':4434')


def register_pyblish_plugins():
    import pyblish, pyblish.api

    from plugins.collect_dummy import CollectDummy

    from plugins.validate_dummy import ValidateDummy
    
    # register Maya as a host, or plugin registry will fail.
    pyblish.api.register_host("maya")  # this is probably redundant.

    # register pyblish plugins (collection, validation, extraction, integration)
    
    # collection plugins
    pyblish.api.register_plugin(CollectDummy)

    # validation plugins
    pyblish.api.register_plugin(ValidateDummy)

    # extraction plugins

    # integration plugins


# setup pyblish gui pyqt5 / qml
def setup_pyblish_qml():
    import pyblish.api
    pyblish.api.register_gui(PYBLISH_GUI_QML)

    # set QML dependencies
    #from pyblish_qml import api, show, settings
    import pyblish_qml, pyblish_qml.settings, pyblish_qml.api, pyblish_qml

    # register python exe path
    pyblish_qml.api.register_python_executable(PYBLISH_QML_PYTHON_EXE_PATH)

    # register pyqt5
    # !! dont specify this. its causing gui display problems.!!
    # pyblish_qml.api.register_pyqt5(PYBLISH_QML_PYQT5_PATH)

    # Customize the title of the window Pyblish-lite produces.
    # Default: "Pyblish"
    pyblish_qml.settings.WindowTitle = "Scene Validation"

    # Customize which tab to show initially from the existing tabs available;
    # "artist", "overview" and "terminal".
    # Default: "artist"
    pyblish_qml.settings.InitialTab = "overview"

    # Customize whether to use labels for plugins and instances.
    # Default: True
    pyblish_qml.settings.UseLabel = False

    # Custommize the width and height of the window
    pyblish_qml.settings.WindowSize = (500, 500)

    # Show Window
    # pyblish_qml.show()

    # version check
    print("Pyblish QML: Version {}".format(pyblish_qml.version))


# setup pyblish gui pyside2
def setup_pyblish_lite():
    import pyblish.api
    pyblish.api.register_gui(PYBLISH_GUI_LITE)

    import pyblish_lite, pyblish_lite.settings

    # Customize the title of the window Pyblish-lite produces.
    # Default: "Pyblish"
    pyblish_lite.settings.WindowTitle = "Scene Validation"

    # Customize which tab to show initially from the existing tabs available;
    # "artist", "overview" and "terminal".
    # Default: "artist"
    pyblish_lite.settings.InitialTab = "overview"

    # Customize whether to use labels for plugins and instances.
    # Default: True
    pyblish_lite.settings.UseLabel = False

    # Custommize the width and height of the window
    pyblish_lite.settings.WindowSize = (500, 500)

    # Show Window
    # pyblish_lite.show()


# setup pyblish for maya
def setup_pyblish_maya(ismenu=True):
    import pyblish.api
    pyblish.api.register_host("maya") # this is probably redundant.

    # Install Pyblish for Autodesk Maya
    import pyblish_maya
    pyblish_maya.setup(menu=ismenu)

    # Show Window
    #pyblish_maya.show()


def teardown_pyblish_maya():
    import pyblish_maya
    pyblish_maya.teardown()


def show_pyblish_window():
    import pyblish_maya
    pyblish_maya.show()


# main program
def setup_pyblish():
    # developer mode
    is_debug = False

    # pyblish gui toggle (True==pyblish-lite, False==pyblish-qml)
    is_pyblish_lite = True

    # setup for debug
    if is_debug:
        setup_mayacharm_debug()

    # setup pyblish gui
    if is_pyblish_lite:
        # the pyblish-lite gui is PySide2
        setup_pyblish_lite()
    else:
        # the pyblish-qml gui is PyQT5
        setup_pyblish_qml()

    # register pyblish plugins
    register_pyblish_plugins()

    # setup pyblish for maya
    ismenu = False
    setup_pyblish_maya(ismenu)


if __name__ == "__main__":
    setup_pyblish()
    show_pyblish_window()

@marcus,
By the way, there is a free open-source Community version of PyCharm from JetBrains.
PyCharm is one of the best Python IDE’s in my opinion.
Definitely worth including in your development pipeline.

pype.club fork of Pyblish-lite is dependent on this PR to pyblish-base https://github.com/pyblish/pyblish-base/pull/347

try pulling that for the test and see if it fixes it. In the PR we explain why that needed to be done even though pyblish itself supporting returning tracebacks. We couldn’t get them to work correctly in Maya (and I believe pyblish-qml has the same problem)

@mkolar
Thanks for the input.
I think I will wait until this feature is more mature before trying it out.
The new pyblish lite gui does look really promising. I will keep an eye on its development.
Keep up the good work!

@marcus, @mkolar
Hi,

It has been about a month since my last post on this topic.
I was wondering what your progress is like ?
Do you think this feature (pyblish gui upgrade) will get merged into the main project this year ?

Hi @virtualengineer, feel free to use the version in the PR directly, and report back with results. If all is well for you, then we’ve got one more reason to merge quickly. Because it’s a big change, I expect backwards compatibility to be affected, and it’s difficult to tell without having done enough testing, you can help with that.

pip install git+https://github.com/pypeclub/pyblish-lite.git@update-from-pype

I decided to revisit the PypeClub update for pyblish-lite.

I downloaded the pyblish-base and pyblish-lite projects from their repo and pip installed it into
my python packages folder.

I was able to get pyblish to launch from Maya, however none of my plugins showed up.
Not sure why. Didn’t see any error messages in the Maya script console window.
Ended up going back to default pyblish-lite for now.

If anyone can figure out the reason let me know.

Ping @mkolar.

I’m also awaiting more testing of that PR, I’m not in a position to use it myself at the moment and need to rely on the community being happy with it being merged.

We could probably speed up the process @virtualengineer if you would happen to find the time to look into it on your end and round off that PR.

The problem might be that we have some extra customisations in there, whereas the branch that we created for the PR was cleaned up from all this extra code. We’ll have a look and let you know which branch to use. It shouldn’t really be a problem.