Talk about serendipity: repoze.tm. I was just thinking about data transactions for Refinery, and now there's a data manager interface I can implement. It's hard to keep up with the rush of fresh ideas coming out of Repoze.
WSGI aside, I think this would be a smooth transactional API:
>>> w = refinery.workspace('/tmp/data') >>> collection = w['places'] >>> transaction = collection.begin() >>> collection.features.append(feature) >>> transaction.commit() # write to disk
Use an OGR in-memory feature store or new Python structure for uncommitted features? That I don't yet know.