def test_single_down(self): class A(object): pass attributes.register_class(A) mgr_factory = lambda cls: attributes.ClassManager(cls) class B(A): __sa_instrumentation_manager__ = staticmethod(mgr_factory) assert_raises(TypeError, attributes.register_class, B)
def test_diamond_b2(self): mgr_factory = lambda cls: attributes.ClassManager(cls) class A(object): pass class B1(A): pass class B2(A): __sa_instrumentation_manager__ = mgr_factory class C(object): pass assert_raises(TypeError, attributes.register_class, B2)
def test_single_up(self): class A(object): pass # delay registration mgr_factory = lambda cls: attributes.ClassManager(cls) class B(A): __sa_instrumentation_manager__ = staticmethod(mgr_factory) attributes.register_class(B) assert_raises_message(TypeError, "multiple instrumentation implementations", attributes.register_class, A)
def test_none(self): class A(object): pass attributes.register_class(A) mgr_factory = lambda cls: attributes.ClassManager(cls) class B(object): __sa_instrumentation_manager__ = staticmethod(mgr_factory) attributes.register_class(B) class C(object): __sa_instrumentation_manager__ = attributes.ClassManager attributes.register_class(C)
def test_diamond_b1(self): mgr_factory = lambda cls: attributes.ClassManager(cls) class A(object): pass class B1(A): pass class B2(A): __sa_instrumentation_manager__ = staticmethod(mgr_factory) class C(object): pass assert_raises_message(TypeError, "multiple instrumentation implementations", attributes.register_class, B1)