Commit 7e2f5daf authored by Jerome Berthier's avatar Jerome Berthier Committed by ntome

[tools.backend] fix iter_caps not returning only Capabilities

When working with multiple AbstractModule inheritance you may
have Class1 and Class2 instanciated:

Class1(Module, CapBank)

Class2(AbstractModule, CapBank) (Abstract of Class1)

Instanciating a class Class2 object, its MRO contains both
Class1 and CapBank.

So when looking for Class2 capabilities, the patched method
as returning Class1 because actually Class1 is a subclass of
Capability as it inherit from Class1.
parent e4555a5e
......@@ -398,7 +398,7 @@ class Module(object):
:rtype: iter[:class:`weboob.capabilities.base.Capability`]
"""
for base in klass.mro():
if issubclass(base, Capability) and base != Capability and base != klass:
if issubclass(base, Capability) and base != Capability and base != klass and not issubclass(base, Module):
yield base
def has_caps(self, *caps):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment