fix(gateway): adapt DataValue construction to asyncua 2.x

main's requirements.txt unpins asyncua (PR #30), so CI installs 2.0.1,
where DataValue's field was renamed StatusCode_ -> StatusCode. The old
kwarg made every OPC write raise TypeError at runtime - masked locally
by a stale asyncua 1.0.6 in the dev conda env. Also uses ua.DateTime
(a datetime subclass) and ua.UInt32 to satisfy the new stricter types,
with no behavior change (verified via binary encode/decode round-trip).
This commit is contained in:
PedroHMCosme
2026-09-22 12:02:29 -03:00
parent 4f4037b4ae
commit 673b13cc6e
4 changed files with 11 additions and 12 deletions

View File

@@ -108,8 +108,8 @@ async def test_write_defaults_carry_statuscode_and_timestamp():
await eng.write(base_cmd())
dv = node.write_value.await_args.args[0]
assert dv.StatusCode_ is not None
assert dv.StatusCode_.is_good()
assert dv.StatusCode is not None
assert dv.StatusCode.is_good()
assert dv.SourceTimestamp == datetime.fromisoformat('2026-07-13T12:00:00Z')
@@ -122,7 +122,7 @@ async def test_write_engine_flags_off_omit_statuscode_and_timestamp():
await eng.write(base_cmd())
dv = node.write_value.await_args.args[0]
assert dv.StatusCode_ is None
assert dv.StatusCode is None
assert dv.SourceTimestamp is None
@@ -137,7 +137,7 @@ async def test_per_message_flag_override_disables_timestamp():
dv = node.write_value.await_args.args[0]
assert dv.SourceTimestamp is None
assert dv.StatusCode_ is not None # write_quality untouched, stays on
assert dv.StatusCode is not None # write_quality untouched, stays on
@pytest.mark.asyncio