1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Merge pull request #14976 from xiaket/devel

use __mro__ for plugin loading when we search for its base class.
This commit is contained in:
Toshio Kuratomi 2016-03-21 07:32:07 -07:00
commit 407f8f934e

View file

@ -329,8 +329,13 @@ class PluginLoader:
obj = getattr(self._module_cache[path], self.class_name)
else:
obj = getattr(self._module_cache[path], self.class_name)(*args, **kwargs)
if self.base_class and self.base_class not in [base.__name__ for base in obj.__class__.__bases__]:
return None
if self.base_class:
# The import path is hardcoded and should be the right place,
# so we are not expecting an ImportError.
module = __import__(self.package, fromlist=[self.base_class])
# Check whether this obj has the required base class.
if not issubclass(obj.__class__, getattr(module, self.base_class, None)):
return None
return obj