Skip to content

Commit

Permalink
Merge pull request #163 from mottosso/master
Browse files Browse the repository at this point in the history
Fixes #152
  • Loading branch information
mottosso committed Mar 1, 2015
2 parents 1668304 + c27d014 commit c403257
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 23 deletions.
10 changes: 0 additions & 10 deletions pyblish/__main__.py

This file was deleted.

24 changes: 13 additions & 11 deletions pyblish/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -987,10 +987,11 @@ def plugins_by_family(plugins, family):
compatible = list()

for plugin in plugins:
if hasattr(plugin, 'families') and family not in plugin.families:
if not hasattr(plugin, "families"):
continue

compatible.append(plugin)
if any(x in plugin.families for x in (family, "*")):
compatible.append(plugin)

return compatible

Expand All @@ -1010,12 +1011,12 @@ def plugins_by_host(plugins, host):
compatible = list()

for plugin in plugins:
# Basic accept wildcards
# Todo: Expand to take partial wildcards e.g. '*Mesh'
if '*' not in plugin.hosts and host not in plugin.hosts:
if not hasattr(plugin, "hosts"):
continue

compatible.append(plugin)
# TODO(marcus): Expand to take partial wildcards e.g. '*Mesh'
if any(x in plugin.hosts for x in (host, '*')):
compatible.append(plugin)

return compatible

Expand All @@ -1038,10 +1039,11 @@ def instances_by_plugin(instances, plugin):
compatible = list()

for instance in instances:
if hasattr(plugin, 'families'):
if instance.data('family') in plugin.families:
compatible.append(instance)
elif '*' in plugin.families:
compatible.append(instance)
if not hasattr(plugin, 'families'):
continue

family = instance.data("family")
if any(x in plugin.families for x in (family, "*")):
compatible.append(instance)

return compatible
17 changes: 15 additions & 2 deletions pyblish/tests/test_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
import pyblish.plugin

from pyblish.vendor import mock
from pyblish.vendor import yaml

from pyblish.tests.lib import (
setup, teardown, setup_failing, HOST, FAMILY,
setup_duplicate, setup_invalid, setup_wildcard)
from pyblish.vendor.nose.tools import raises, with_setup, assert_raises
from pyblish.vendor.nose.tools import (
raises, with_setup, assert_raises)


config = pyblish.plugin.Config()
Expand Down Expand Up @@ -441,3 +441,16 @@ def test():

compatible.reverse()
assert_raises(AssertionError, test)


def test_plugins_by_family_wildcard():
"""Plug-ins with wildcard family is included in every query"""
Plugin1 = type("Plugin1",
(pyblish.api.Validator,),
{"families": ["myFamily"]})
Plugin2 = type("Plugin2",
(pyblish.api.Validator,),
{"families": ["*"]})

assert Plugin2 in pyblish.api.plugins_by_family(
[Plugin1, Plugin2], "myFamily")

0 comments on commit c403257

Please sign in to comment.