As I've mentioned I added friendlier mutation API to Amara. Deletion didn't come up in the original discussion, but I just got around to addressing that as well. Now checked in are enhancements that support the following use cases:
Use case 10:
Source doc: spameggs
Code: del doc.a.b
Result: doc mutated to eggs
Use case 11:
Source doc: spameggs
Code: del doc.a.b[0]
Result: doc mutated to eggs
Use case 12:
Source doc: spameggs
Code: del doc.a.b[1]
Result: doc mutated to spam
Use case 13:
Source doc: spameggs
Code: del doc.a.b[2]
Result: IndexError
Use case 14:
Source doc: spam
Code: del doc.a.b
Result: doc mutated to spam
Of course there are oddities to go with the new convenience. Check out the following:
>>> from amara import binderytools
>>> doc = binderytools.bind_string("spamspam")
>>> unicode(doc.a.b)
u'spam'
>>> doc.a.b
<amara.bindery.b object at 0x685b2c>
>>> del doc.a.b
>>> unicode(doc.a.b)
u'spam'
>>> #Eh? Still there, are ye?
...
>>> doc.a.b
<amara.bindery.b object at 0x685b8c>Perfectly consistent with what the users seem to be saying, I think, but I'll be amazed if this doesn't trip up the odd fellow.




