setitem for a slave only modify current value
This commit is contained in:
@ -38,9 +38,6 @@ class Values(Cache):
|
||||
"""
|
||||
values = []
|
||||
vidx = None
|
||||
if index is None:
|
||||
# raise Exception('arf')
|
||||
pass
|
||||
|
||||
def _setvalue_info(nb, idx, value, vidx):
|
||||
lst = list(self._values[nb])
|
||||
@ -48,7 +45,7 @@ class Values(Cache):
|
||||
if index is None or nb == 0:
|
||||
lst.append(value)
|
||||
else:
|
||||
lst.append([value])
|
||||
lst.append((value,))
|
||||
else:
|
||||
if index is None or nb == 0:
|
||||
lst[idx] = value
|
||||
@ -59,9 +56,14 @@ class Values(Cache):
|
||||
else:
|
||||
vidx = None
|
||||
if vidx is None:
|
||||
lst[idx].append(value)
|
||||
tval = list(lst[idx])
|
||||
tval.append(value)
|
||||
lst[idx] = tuple(tval)
|
||||
elif nb != 1:
|
||||
lst[idx][vidx] = value
|
||||
tval = list(lst[idx])
|
||||
tval[vidx] = value
|
||||
lst[idx] = tuple(tval)
|
||||
lst[idx] = tuple(lst[idx])
|
||||
values.append(tuple(lst))
|
||||
return vidx
|
||||
if path in self._values[0]:
|
||||
@ -70,6 +72,8 @@ class Values(Cache):
|
||||
idx = None
|
||||
vidx = _setvalue_info(0, idx, path, vidx)
|
||||
vidx = _setvalue_info(1, idx, index, vidx)
|
||||
if isinstance(value, list):
|
||||
value = tuple(value)
|
||||
vidx = _setvalue_info(2, idx, value, vidx)
|
||||
_setvalue_info(3, idx, owner, vidx)
|
||||
self._values = tuple(values)
|
||||
@ -116,7 +120,7 @@ class Values(Cache):
|
||||
"""change owner for a path
|
||||
"""
|
||||
idx = self._values[0].index(path)
|
||||
if isinstance(self._values[3][idx], list):
|
||||
if isinstance(self._values[3][idx], tuple):
|
||||
if index is None:
|
||||
raise ValueError('Slave need index to set owner')
|
||||
towner = list(self._values[3][idx])
|
||||
@ -164,7 +168,7 @@ class Values(Cache):
|
||||
"""
|
||||
if path in self._values[0]:
|
||||
idx = self._values[0].index(path)
|
||||
if isinstance(self._values[1][idx], list):
|
||||
if isinstance(self._values[1][idx], tuple):
|
||||
if index is None:
|
||||
raise ValueError('index is mandatory')
|
||||
elif index is not None:
|
||||
@ -191,6 +195,8 @@ class Values(Cache):
|
||||
value.append(undefined)
|
||||
else:
|
||||
value = None
|
||||
if isinstance(value, tuple):
|
||||
value = list(value)
|
||||
return value
|
||||
|
||||
def set_information(self, key, value):
|
||||
|
Reference in New Issue
Block a user