diff --git a/pyblish/logic.py b/pyblish/logic.py index 6376246b..afd4eb92 100644 --- a/pyblish/logic.py +++ b/pyblish/logic.py @@ -182,11 +182,6 @@ def instances_by_plugin(instances, plugin): compatible = list() - if not plugin.__instanceEnabled__: - # A plug-in not capable of handling instances should - # not be given the opportunity to handle them. - return compatible - for instance in instances: family = instance.data["family"] @@ -240,12 +235,11 @@ def Iterator(plugins, context): for plugin in plugins: instances = instances_by_plugin(context, plugin) - # Run once for every instance.. - for instance in instances: - yield plugin, instance + if plugin.__instanceEnabled__: + for instance in instances: + yield plugin, instance - # Plus once for the context - if not plugin.__instanceEnabled__: + else: yield plugin, None diff --git a/pyblish/util.py b/pyblish/util.py index 357bb008..0834ccb6 100644 --- a/pyblish/util.py +++ b/pyblish/util.py @@ -58,18 +58,18 @@ def publish(context=None, plugins=None, **kwargs): ) # First pass, collection - for plug, instance in logic.Iterator(collectors, context): - plugin.process(plug, context, instance) + for Plugin, instance in logic.Iterator(collectors, context): + plugin.process(Plugin, context, instance) # Exclude collectors for second pass - plugins.remove(plug) + plugins.remove(Plugin) if Plugin in plugins else None # Exclude plug-ins that do not have at # least one compatible instance. - for plug in list(plugins): - if plug.__instanceEnabled__: - if not logic.instances_by_plugin(context, plug): - plugins.remove(plug) + for Plugin in list(plugins): + if Plugin.__instanceEnabled__: + if not logic.instances_by_plugin(context, Plugin): + plugins.remove(Plugin) # Keep track of state, so we can cancel on failed validation state = { @@ -80,15 +80,15 @@ def publish(context=None, plugins=None, **kwargs): test = api.registered_test() # Second pass, the remainder - for plug, instance in logic.Iterator(plugins, context): - state["nextOrder"] = plug.order + for Plugin, instance in logic.Iterator(plugins, context): + state["nextOrder"] = Plugin.order if test(**state): log.error("Stopped due to: %s" % test(**state)) break try: - result = plugin.process(plug, context, instance) + result = plugin.process(Plugin, context, instance) except: # This exception is unexpected @@ -99,7 +99,7 @@ def publish(context=None, plugins=None, **kwargs): # Make note of the order at which the # potential error error occured. if result["error"]: - state["ordersWithError"].add(plug.order) + state["ordersWithError"].add(Plugin.order) if isinstance(result, Exception): log.error("An unexpected error happened: %s" % result)