From f147d9bf1a0a5a50538f12074dcadf16dd5ef5f4 Mon Sep 17 00:00:00 2001 From: davidlatwe Date: Sun, 7 Jan 2018 07:44:43 +0800 Subject: [PATCH 1/5] make Instance able to return all families, for convenience --- pyblish/logic.py | 11 ++--------- pyblish/plugin.py | 9 +++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pyblish/logic.py b/pyblish/logic.py index c00f6c94..06f2cb7a 100644 --- a/pyblish/logic.py +++ b/pyblish/logic.py @@ -209,11 +209,8 @@ def plugins_by_instance(plugins, instance): """ - family = instance.data.get("family") - families = instance.data.get("families", []) - return plugins_by_families( - plugins, ([family] if family else []) + families) + plugins, instance.families) def plugins_by_host(plugins, host): @@ -299,11 +296,7 @@ def instances_by_plugin(instances, plugin): assert algorithm, ("Plug-in did not provide " "valid matching algorithm: %s" % plugin.match) - family = instance.data.get("family") - families = [family] if family else [] - families += instance.data.get("families", []) - - if algorithm(plugin.families, families): + if algorithm(plugin.families, instance.families): compatible.append(instance) return compatible diff --git a/pyblish/plugin.py b/pyblish/plugin.py index c539b226..2ba34639 100644 --- a/pyblish/plugin.py +++ b/pyblish/plugin.py @@ -809,6 +809,15 @@ def __repr__(self): def __str__(self): return self._name + @property + def families(self): + """Return list of family and families""" + family = self._data.get("family") + families = [family] if family else [] + families += self._data.get("families", []) + + return families + @property def context(self): """Return top-level parent; the context""" From 8afb2bed49999e2200d1fbb8d65f59e348527875 Mon Sep 17 00:00:00 2001 From: davidlatwe Date: Sun, 7 Jan 2018 16:32:58 +0800 Subject: [PATCH 2/5] one line shorter --- pyblish/logic.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyblish/logic.py b/pyblish/logic.py index 06f2cb7a..0f8614e0 100644 --- a/pyblish/logic.py +++ b/pyblish/logic.py @@ -209,8 +209,7 @@ def plugins_by_instance(plugins, instance): """ - return plugins_by_families( - plugins, instance.families) + return plugins_by_families(plugins, instance.families) def plugins_by_host(plugins, host): From 60f817b2649987c40bbf67c7d08e7a583f6bae53 Mon Sep 17 00:00:00 2001 From: davidlatwe Date: Sun, 7 Jan 2018 16:35:47 +0800 Subject: [PATCH 3/5] for PEP8: no bare except --- pyblish/logic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyblish/logic.py b/pyblish/logic.py index 0f8614e0..bc00508a 100644 --- a/pyblish/logic.py +++ b/pyblish/logic.py @@ -319,7 +319,7 @@ def _extract_traceback(exception): exc_type, exc_value, exc_traceback = sys.exc_info() exception.traceback = traceback.extract_tb(exc_traceback)[-1] - except: + except Exception: pass finally: From 3fb67ab7fb2a6263519d81feb7b889da90a47697 Mon Sep 17 00:00:00 2001 From: davidlatwe Date: Tue, 9 Jan 2018 02:39:40 +0800 Subject: [PATCH 4/5] add instance.families test --- tests/test_plugin.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 5754a325..31b6152e 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -57,6 +57,20 @@ def test_context_from_instance(): assert_equals(context, instance.context) +def test_families_from_instance(): + """Instances provide access to their families""" + + context = pyblish.plugin.Context() + instance = context.create_instance("MyInstance") + instance.data["family"] = "A" + families = list(instance.data["family"]) + assert_equals(families, instance.families) + + instance.data["families"] = ["B", "C"] + families.extend(instance.data["families"]) + assert_equals(families, instance.families) + + def test_legacy(): """Legacy is determined by existing process_* methods""" class LegacyPlugin(pyblish.plugin.Collector): From ebddae703e729257e70cd354a035429b56cb6dc0 Mon Sep 17 00:00:00 2001 From: davidpower Date: Tue, 9 Jan 2018 15:01:44 +0800 Subject: [PATCH 5/5] improve instance.families test --- tests/test_plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 31b6152e..e42cf9ab 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -63,11 +63,11 @@ def test_families_from_instance(): context = pyblish.plugin.Context() instance = context.create_instance("MyInstance") instance.data["family"] = "A" - families = list(instance.data["family"]) + families = [instance.data["family"]] assert_equals(families, instance.families) instance.data["families"] = ["B", "C"] - families.extend(instance.data["families"]) + families += instance.data["families"] assert_equals(families, instance.families)