class Component: """ Simple class with a measure """ # declare a measure attr = measure()
class Shadow(Derived): """ A component that redeclares ancestor traits """ bm = measure() bm.default = "a value" bm.tip = 'a shadowing value'
class Base(Component): """ A simple component """ bm = measure() bm.default = 1 bm.tip = 'a simple value'
class Derived(Base): """ A derived component """ # a simple measure dm = measure() dm.default = True dm.tip = 'another simple value'
class NotOK(Component): """ Incompatible """ missing = measure()
class OK(Component): """ Unrelated but compatible """ # because it defines the correct trait common = measure()
class Derived(Base): """ A derived component """ # with an extra trait extra = measure()
class Base(Component): """ A component """ # with a trait common = measure()