Skip to content

Commit

Permalink
Simplify iterator
Browse files Browse the repository at this point in the history
  • Loading branch information
mottosso committed Apr 7, 2016
1 parent 966b04b commit aecae8f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 21 deletions.
14 changes: 4 additions & 10 deletions pyblish/logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]

Expand Down Expand Up @@ -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


Expand Down
22 changes: 11 additions & 11 deletions pyblish/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand All @@ -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
Expand All @@ -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)
Expand Down

0 comments on commit aecae8f

Please sign in to comment.