[solved] selectWorkingDirectory error

Getting the attached error when one of my artists try to publish.

Would it be possible to elaborate?

  • Does it happen elsewhere?
  • What data are you storing in the Context and Instance?
  • What happens right before the log message setting ftrackAssetName?

It’s got a problem getting a string value from Plugin.__name__, which is what’s going into type, and it looks like it’s running SelectFtrackAssetName before any of the built-in plug-ins, in this case SelectCurrentWorkingDirectory. Should be allright, but it’s raises a red flag. What order have you given it?

Also, it looks like the GUI is struggling to draw the icon for SelectFtrackAssetName. What’s special about SelectFtrackAssetName?

Have you tried a restart? Looks like an inconsistent state in Nuke.

here another similar error:

Yeah, it’s the same kind of error, you can tell by the second line “Failed validating u’type’”

Are the icons of plug-ins always missing like that?

Are the icons of plug-ins always missing like that?

For some people it is. Haven’t investigated further as its not stopping the show.

Odd, haven’t seen that before.

Try reproducing it in a minimal example and post it and I’ll have a look. Here are some things that might be equally off. Run this in the Nuke script editor.

import pyblish.api
plugins = pyblish.api.discover()  # Check, are plug-ins are out of order?

for plugin in plugins:
  assert plugin.__name__ is not None, "It's a bug"  # This is what QML is complaining about
  print "All is well"

This is SelectFtrackAssetName;

import os

import pyblish.api
import ftrack


@pyblish.api.log
class SelectFtrackAssetName(pyblish.api.Selector):
    """ """

    hosts = ['*']
    version = (0, 1, 0)

    def process_context(self, context):

        task = ftrack.Task(id=os.environ['FTRACK_TASKID'])

        # skipping the call up project
        project = task.getParents()[-1]
        if not project.getName() == 'the_call_up':
            self.log.info('setting ftrackAssetName')
            context.set_data('ftrackAssetName', value=task.getName())

Run this in the Nuke script editor.

import pyblish.api
plugins = pyblish.api.discover()  # Check, are plug-ins are out of order?

for plugin in plugins:
  assert plugin.__name__ is not None, "It's a bug"  # This is what QML is complaining about
  print "All is well"
# Result: All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
All is well
DEBUG - Paths from environment: ['K:\\tools\\Pyblish\\pyblish-bumpybox-dev\\pyblish_bumpybox\\plugins', 'K:\\tools\\Pyblish\\pyblish-deadline-dev\\pyblish_deadline\\plugins', 'K:\\tools\\Pyblish\\pyblish-ftrack-dev\\pyblish_ftrack\\plugins']
DEBUG:pyblish.plugin:Paths from environment: ['K:\\tools\\Pyblish\\pyblish-bumpybox-dev\\pyblish_bumpybox\\plugins', 'K:\\tools\\Pyblish\\pyblish-deadline-dev\\pyblish_deadline\\plugins', 'K:\\tools\\Pyblish\\pyblish-ftrack-dev\\pyblish_ftrack\\plugins']
DEBUG - Duplicate plugin found: <class 'select_host_version.SelectHostVersion'>
DEBUG:pyblish.plugin:Duplicate plugin found: <class 'select_host_version.SelectHostVersion'>
WARNING - Skipped: "extract_deadline_maya" (No module named pymel)
WARNING:pyblish.plugin:Skipped: "extract_deadline_maya" (No module named pymel)
WARNING - Skipped: "extract_deadline_draft_maya" (No module named pymel)
WARNING:pyblish.plugin:Skipped: "extract_deadline_draft_maya" (No module named pymel)
WARNING - Skipped: "select_deadline_render_layers" (No module named pymel.core)
WARNING:pyblish.plugin:Skipped: "select_deadline_render_layers" (No module named pymel.core)
ERROR - <class 'extract_ftrack.ExtractFtrack'>: Plug-in not valid, missing hosts and families.
ERROR:pyblish.plugin:<class 'extract_ftrack.ExtractFtrack'>: Plug-in not valid, missing hosts and families.

Try publishing using pyblish.util.publish() until you can reproduce and send it over.

think its might be a user/machine issue since I haven’t encountered it, and I’ve published the same shot.

So I got this machine on the latest version of pyblish-win, and got this error message in the Nuke terminal;

Does that make any sense to you?

None at all. Looks like a Nuke bug.

This is related to the same problem (I think:S)


We had this issue before on another user, and we had to remove the users profile on the machine and rebuild it. Is this something do to with writing data somewhere that the user doesn’t have access to?

All the screenshots seem to involve the same computer, but you say it also happens on other computers?

And about the missing icon for plug-ins, that raises an alarm bell for me… Does that happen across other computers also?

I seems to, but I haven’t had any consistent results yet.

Seen this on a few computers, where pyblish was working fine as well. Might be something with with Windows 8?

Hm, no I’m developing primarily on Windows 8 here. That is peculiar…

See if you can confirm that it happens on any other machine, otherwise we could have a closer look at debugging the odd one out.

Hey @tokejepsen, considering our solution for running multiple hosts, I think this problem might be related.

If so, that’s amazingly interesting. It would mean that Pyblish managed to occupy a port already occupied by another process, and only sometimes produce this little quirk. It would mean the quirk would have been caused by the underlying socket becoming confused and corrupting the data as it got transferred across from the host to QML.

As it’s an OS responsibility to forbid these things, it would mean the OS somehow allowed this. It would be very peculiar.

Could confirm this with the newly updated Pyblish for Windows?

This error was very infrequent, but it could solve the issue.

How about we call it “solved” until I encounter it?

2 Likes