Releases: pyblish/pyblish-qml
1.4.0
Targets Workflow
This PR is to facilitate the targets workflow that was introduced in https://github.com/pyblish/pyblish-base/releases/tag/1.5.0.
The implementation for pyblish-qml is done so you can exclusively target plugins. For a demonstration you can execute:
$ python -m pyblish_qml --demo --targets studio
This will only load two plugins that are targeted directly for studio
.
To get all plugins you can target both default
and studio
:
$ python -m pyblish_qml --demo --targets default studio
You can also specify the targets when showing pyblish-qml from a host:
import pyblish_qml
pyblish_qml.show(targets=["studio"])
1.3.1
1.3.0
1.2.0
Warnings are now visualised in the GUI.
from pyblish import api
class ValidateAge(api.ContextPlugin):
order = api.ValidatorOrder
def process(self, context):
if context.data["age"] > 100:
raise Exception("Too old")
elif context.data["age"] > 80:
self.log.warning("Old, but still a few good years to go!")
Functionally, nothing has changed. Warnings doesn't prevent publishing from continuing, it's still just a log message.
1.1.0
Support for comments!
- Original issue: #9
Format
Comments made via the editor is stored in the comment
data member of the context
, as a single block of text.
context.data["comment"] = "Summary goes here\nDescription goes here, on a new line"
This is similar to comments on Git commits, the first line being dedicated to a short "summary" of your overall commit, with an (optional) longer description.
You can just add a summary, just add a description, or both. The first line always results in the first line of your comment.
Features
- Automatically show comment on presence of
context.data["comment"]
- Remember comment across resets
- Dedicated signal
commented
for optional data persistence - Maximisable, type out your excellent comment in fullscreen
- Comment template, provide users with a starting point of guidelines for their comment.
A signal is emitted when entering a comment, so as to support data persistence, e.g. in Maya or on disk.
from pyblish import api
def persist(comment):
# write to disk here
api.register_callback("commented", persist)
The comment can then be read via e.g. a Collector into the Context which would then become visible in the GUI.
from pyblish import api
class CollectComment(api.ContextPlugin):
order = api.CollectorOrder
def process(self, context):
context.data["comment"] = # read from disk here
1.0.4
1.0.3
1.0.2
Minor performance improvement.
Not setting PYBLISH_QML_PYQT5
implies an automatic search for PyQt5 on the provided Python's PYTHONPATH
. But, the search is moot considering Python would already be searching for it when attempting to run the app. This meant that during startup, Python was instantiated twice; once to find PyQt5, and once to actually use it.
Assuming Python implies reading 50 mb off disk, this reduces the amount read from 100 mb to 50 mb, which in addition to PyQt5 libraries at another 50 mb means a (max) 33% reduction in startup time. In reality it will be less due to filesystem caching.
1.0.1
1.0.0
New Interprocess Communication Foundation
This is a major release and introduces several improvements over the previous version.
- Support OS returning from sleep (multiple times)
- Support long-running publishes (hours, days)
- Support simultaneous use of multiple logged on users
- Support multiple concurrent publishes from many hosts
- Good bye, dreaded "connection refused"
See here for implementation details.
Usage
Register dependencies and show.
1. Register at run-time
from pyblish_qml import api
api.register_python_executable("C:/Python27/python.exe")
api.register_pyqt5("C:/modules/python-qt5")
2. Register via environment
$ set PYBLISH_QML_PYTHON_EXECUTABLE=c:\python36\python.exe
$ set PYBLISH_QML_PYQT5=c:\modules\python-qt5
Show the GUI either at run-time or from a terminal.
1. At run-time
import pyblish_qml
pyblish_qml.show()
2. From terminal
$ python -m pyblish_qml
QML will launch on-demand, with a splash screen if relevant.
Returning from Sleep
Due to the way communication between GUI and host was implemented, returning from sleep carried an opportunity for glitches in messages being sent. The communication used to occur over a dedicated port, one for every host interested in speaking with QML along with a fixed port for the GUI itself.
Now communication instead happens via standard in/out, meaning one less man in the middle to worry about.
Long-running publishes
Because communication happened via sockets, both the host and GUI acted as a web-server that sent and awaited messages from and to each other. Sometimes, due to the nature of messages passing through a middle man, the host and GUI must continually query each other for their existence - a process known as "heartbeat".
- "Are you still there?"
- "Yes"
- "Are you still there?"
- "Yes"
- "Are you still there?"
- ...
On not responding, the GUI will assume the host is no longer there and quit. The trouble with this is that sometimes the host is there, but is simply too busy to respond. Such as when performing a long-running geometry cache.
This is also resolved by direct communication and no middle-man, meaning no more heartbeats and accidental exit.
Multiple Users
All currently logged on users share sockets. Which means QML cannot know whether a host is asking it to appear from one user or another. This inhibited the ability to use QML from more than one user at a time.
With this release, this is no longer an issue.
Concurrent Publishing
Users may now launch multiple GUIs from many hosts and publish in parallel. This was not possible before due to every host sharing a single running instance of pyblis-qml.
As a side-effect of this however, it does mean each GUI now occupies its own memory (~50 mb) and launches individually which isn't as instant as before (1-7 seconds depending on disk access performance).
Connection Refused
No more network connection means no more asking the OS nicely for permission to communicate via sockets, and no more denials.
Splash Screen
Here's a little sneak peak of what the new splash screen looks like as well.
Enjoy!