from roleplay.role import Role class Base(Role): def base(self): return "Base.base" class Foo(Role): def foo(self): return "foo.foo" has_role(Foo, Base) assert does(Foo, Base) class Bar(Role): def bar(self): return "Bar.bar" has_role(Bar, Foo) assert does(Bar, Foo) assert does(Bar, Base) class Fubar(Role): def fubar(self): return "Fubar.fubar"
from roleplay import does, has_role from roleplay.role import Role class Base(Role): def base(self): return "Base.base" class Foo(Role): def foo(self): return "foo.foo" has_role(Foo, Base); assert does(Foo, Base); class Bar(Role): def bar(self): return "Bar.bar" has_role(Bar, Foo) assert does(Bar, Foo) assert does(Bar, Base) class Fubar(Role): def fubar(self): return "Fubar.fubar" import inspect print inspect.getframeinfo(inspect.currentframe())[0].ljust(40) + ": OK! All tests passed."
# Combine them into a third role class rFooBar(Role): pass has_role(rFooBar, rFoo, rBar) import inspect assert Role in inspect.getmro(rFoo) assert Role in inspect.getmro(rBar) assert Role in inspect.getmro(rFooBar) assert rFoo not in inspect.getmro(rFooBar) assert rBar not in inspect.getmro(rFooBar) assert does(rFoo, rFoo) assert does(rBar, rBar) assert does(rFooBar, rFoo) assert does(rFooBar, rBar) assert does(rFooBar, rFooBar) # create another role class rBaz(Role): pass has_role(rBaz, rFoo) assert Role in inspect.getmro(rBaz) assert does(rBaz, rFoo)