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