1# Demo of derived view dynamics 2# 3# Output: 4# [1, 2, 3, 4, 5, 6] 5# [2, 3, 4, 5] 6# [2, 4, 5] 7# [2, 5] 8# [1, 2, 5, 6] 9 10import metakit 11db = metakit.storage() 12vw = db.getas('data[value:I]') 13 14def fill(l): 15 vw[:] = [] 16 for i in l: 17 vw.append(value=i) 18 19def show(v): 20 print map((lambda x: x.value), v) 21 22fill([1,2,3,4,5,6]) 23show(vw) 24 25 # select values in range [2..5] 26v2 = vw.select({'value':2},{'value':5}) 27show(v2) 28 29 # a deletion in original "vw" affects derived "v2" 30vw.delete(2) 31show(v2) 32 33 # deletion in derived "v2" affects both (new in 2.3) 34v2.delete(1) 35show(v2) 36show(vw) 37