Commit 578232ad authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 8a8cb32d
...@@ -231,7 +231,7 @@ func xGetBlkDataTab(db *zodb.DB, at zodb.Tid) map[zodb.Oid]string { ...@@ -231,7 +231,7 @@ func xGetBlkDataTab(db *zodb.DB, at zodb.Tid) map[zodb.Oid]string {
for k, xzblk := range zblkdir.Data { for k, xzblk := range zblkdir.Data {
zblk, ok := xzblk.(zodb.IPersistent) zblk, ok := xzblk.(zodb.IPersistent)
if !ok { if !ok {
exc.Raisef("root['treegen/values'][%q]: expected %s, got %s", k, xzodb.TypeOf(zblk), xzodb.TypeOf(xzblk)) exc.Raisef("root['treegen/values'][%q]: expected IPersistent, got %s", k, xzodb.TypeOf(xzblk))
} }
oid := zblk.POid() oid := zblk.POid()
......
...@@ -220,7 +220,7 @@ def TreesSrv(zstor, r): ...@@ -220,7 +220,7 @@ def TreesSrv(zstor, r):
t, D = treetxt.split() t, D = treetxt.split()
assert D.startswith('D') assert D.startswith('D')
kv = kvDecode(t[1:], zctx.vdecode) kv = kvDecode(t[1:], zctx.vdecode)
zv = kvDecode(D[1:], lambda vtxt: vtxt) zv = _kvDecode(D[1:], kdecode=lambda ktxt: ktxt, vdecode=lambda vtxt: vtxt)
zdataTab = zctx.root['treegen/values'] zdataTab = zctx.root['treegen/values']
patch(ztree, diff(ztree, kv), kv) patch(ztree, diff(ztree, kv), kv)
patch(zdataTab, diff(zdataTab, zv), zv) # XXX v->ZBlk(v) patch(zdataTab, diff(zdataTab, zv), zv) # XXX v->ZBlk(v)
...@@ -363,12 +363,15 @@ def kvEncode(kvDict, vencode): # -> kvText ...@@ -363,12 +363,15 @@ def kvEncode(kvDict, vencode): # -> kvText
# kvDecode decodes key->value mapping from text. # kvDecode decodes key->value mapping from text.
# e.g. '1:a,2:b' -> {1:'a', 2:'b'} # e.g. '1:a,2:b' -> {1:'a', 2:'b'}
def kvDecode(kvText, vdecode): # -> kvDict def kvDecode(kvText, vdecode): # -> kvDict
return _kvDecode(kvText, int, vdecode)
def _kvDecode(kvText, kdecode, vdecode): # -> kvDict
if kvText == "": if kvText == "":
return {} return {}
kv = {} kv = {}
for item in kvText.split(','): for item in kvText.split(','):
ktxt, vtxt = item.split(':') ktxt, vtxt = item.split(':')
k = int(ktxt) k = kdecode(ktxt)
v = vdecode(vtxt) v = vdecode(vtxt)
if k in kv: if k in kv:
raise ValueError("key %s present multiple times" % k) raise ValueError("key %s present multiple times" % k)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment