def test_uninstrument(self): class A(object):pass manager = attributes.register_class(A) assert attributes.manager_of_class(A) is manager attributes.unregister_class(A) assert attributes.manager_of_class(A) is None
def test_rebuild_state(self): """not much of a 'test', but illustrate how to remove instance-level state before pickling. """ mapper(User, users) u1 = User() attributes.manager_of_class(User).teardown_instance(u1) assert not u1.__dict__ u2 = pickle.loads(pickle.dumps(u1)) attributes.manager_of_class(User).setup_instance(u2) assert attributes.instance_state(u2)
def test_nativeext_submanager(self): class Mine(attributes.ClassManager): pass class A(object): __sa_instrumentation_manager__ = Mine attributes.register_class(A) eq_(type(attributes.manager_of_class(A)), Mine)
def test_standard(self): class A(object): pass attributes.register_class(A) eq_(type(attributes.manager_of_class(A)), attributes.ClassManager)
def register(self, cls, canary): original_init = cls.__init__ attributes.register_class(cls) ne_(cls.__init__, original_init) manager = attributes.manager_of_class(cls) def on_init(state, instance, args, kwargs): canary.append((cls, 'on_init', type(instance))) manager.events.add_listener('on_init', on_init)
def test_customfinder_pass(self): class A(object): pass def find(cls): return None attributes.instrumentation_finders.insert(0, find) attributes.register_class(A) eq_(type(attributes.manager_of_class(A)), attributes.ClassManager)
def test_subclassed(self): class MyEvents(attributes.Events): pass class MyClassManager(attributes.ClassManager): event_registry_factory = MyEvents attributes.instrumentation_finders.insert(0, lambda cls: MyClassManager) class A(object): pass attributes.register_class(A) manager = attributes.manager_of_class(A) assert isinstance(manager.events, MyEvents)
def test_register_reserved_attribute(self): class T(object): pass attributes.register_class(T) manager = attributes.manager_of_class(T) sa = attributes.ClassManager.STATE_ATTR ma = attributes.ClassManager.MANAGER_ATTR fails = lambda method, attr: self.assertRaises(KeyError, getattr(manager, method), attr, property()) fails("install_member", sa) fails("install_member", ma) fails("install_descriptor", sa) fails("install_descriptor", ma)
def test_register_reserved_attribute(self): class T(object): pass attributes.register_class(T) manager = attributes.manager_of_class(T) sa = attributes.ClassManager.STATE_ATTR ma = attributes.ClassManager.MANAGER_ATTR fails = lambda method, attr: self.assertRaises( KeyError, getattr(manager, method), attr, property()) fails('install_member', sa) fails('install_member', ma) fails('install_descriptor', sa) fails('install_descriptor', ma)
def test_basic(self): import pickle global A class A(object): pass def canary(instance): assert False try: attributes.register_class(A) manager = attributes.manager_of_class(A) manager.events.add_listener('on_load', canary) a = A() p_a = pickle.dumps(a) re_a = pickle.loads(p_a) finally: del A
def test_nativeext_interfaceexact(self): class A(object): __sa_instrumentation_manager__ = sa.orm.interfaces.InstrumentationManager attributes.register_class(A) ne_(type(attributes.manager_of_class(A)), attributes.ClassManager)