Commit 8fe9ae95 authored by Yuta Okamoto's avatar Yuta Okamoto Committed by oroulet

add raise_on_partial_error parameter on write_values()

parent 1f8e88f7
......@@ -879,15 +879,17 @@ class Client:
res = await self.read_attributes(nodes, attr=ua.AttributeIds.Value)
return [r.Value.Value for r in res]
async def write_values(self, nodes, values):
async def write_values(self, nodes, values, raise_on_partial_error=True):
"""
Write values to multiple nodes in one ua call
"""
nodeids = [node.nodeid for node in nodes]
dvs = [value_to_datavalue(val) for val in values]
results = await self.uaclient.write_attributes(nodeids, dvs, ua.AttributeIds.Value)
for result in results:
result.check()
if raise_on_partial_error:
for result in results:
result.check()
return results
get_values = read_values # legacy compatibility
set_values = write_values # legacy compatibility
......
......@@ -261,7 +261,7 @@ class Client:
pass
@syncmethod
def write_values(self, nodes, values):
def write_values(self, nodes, values, raise_on_partial_error=True):
pass
def __enter__(self):
......
......@@ -103,11 +103,14 @@ async def test_multiple_read_and_write_value(server, client):
vals = await client.read_values([v1, v2, v3])
assert vals == [1, 2, 3]
await client.write_values([v1, v2, v3], [4, 5, 6])
rets = await client.write_values([v1, v2, v3], [4, 5, 6])
assert rets == [ua.StatusCode(value=ua.StatusCodes.Good), ua.StatusCode(value=ua.StatusCodes.Good), ua.StatusCode(value=ua.StatusCodes.Good)]
vals = await client.read_values([v1, v2, v3])
assert vals == [4, 5, 6]
with pytest.raises(ua.uaerrors.BadUserAccessDenied):
await client.write_values([v1, v2, v_ro], [4, 5, 6])
rets = await client.write_values([v1, v2, v_ro], [4, 5, 6], raise_on_partial_error=False)
assert rets == [ua.StatusCode(value=ua.StatusCodes.Good), ua.StatusCode(ua.StatusCodes.Good), ua.StatusCode(ua.StatusCodes.BadUserAccessDenied)]
async def test_read_and_write_status_check(server, client):
......
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