Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
opcua-asyncio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikola Balog
opcua-asyncio
Commits
8fe9ae95
Commit
8fe9ae95
authored
Jul 19, 2023
by
Yuta Okamoto
Committed by
oroulet
Jul 24, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add raise_on_partial_error parameter on write_values()
parent
1f8e88f7
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
10 additions
and
5 deletions
+10
-5
asyncua/client/client.py
asyncua/client/client.py
+5
-3
asyncua/sync.py
asyncua/sync.py
+1
-1
tests/test_client.py
tests/test_client.py
+4
-1
No files found.
asyncua/client/client.py
View file @
8fe9ae95
...
...
@@ -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
...
...
asyncua/sync.py
View file @
8fe9ae95
...
...
@@ -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
):
...
...
tests/test_client.py
View file @
8fe9ae95
...
...
@@ -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
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment