sqlalchemy-cext_py3k / attributes_rollback_test.py

from sqlalchemy.orm import attributes
class Foo(object):pass
attributes.register_class(Foo)
attributes.register_attribute(Foo, 'x', uselist=False, useobject=False, mutable_scalars=True, copy_function=lambda x:x.copy())

f = Foo()
f._foostate.set_savepoint()
print f._foostate.get_history('x')

f.x = {'1':15}


print f._foostate.get_history('x')
f._foostate.commit_all()

print f._foostate.get_history('x')

f.x['2'] = 40
print f._foostate.get_history('x')

f._foostate.rollback()

print f._foostate.get_history('x')

#import pdb
#pdb.Pdb().break_here()

print f.x
f.x['2'] = 40
print f._foostate.get_history('x')
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.