@@ -216,8 +216,8 @@ def check_device_properties(
216
216
217
217
if properties .get ('ident' , expected .ident ) != expected .ident :
218
218
raise UnexpectedDeviceProperty (
219
- f"Got device with id : { properties ['ident' ]} "
220
- f"when expected id : { expected .ident } ." )
219
+ f"Got device from port : { properties ['ident' ]} "
220
+ f"when expected port : { expected .ident } ." )
221
221
properties ['ident' ] = expected .ident
222
222
223
223
if properties .get ('devclass' , expected .devclass ) != expected .devclass :
@@ -966,12 +966,14 @@ def deserialize(
966
966
cls ,
967
967
serialization : bytes ,
968
968
expected_port : Port ,
969
+ expected_identity : Optional [str ],
969
970
) -> 'DeviceAssignment' :
970
971
"""
971
972
Recovers a serialized object, see: :py:meth:`serialize`.
972
973
"""
973
974
try :
974
- result = cls ._deserialize (serialization , expected_port )
975
+ result = cls ._deserialize (
976
+ serialization , expected_port , expected_identity )
975
977
except Exception as exc :
976
978
raise ProtocolError () from exc
977
979
return result
@@ -981,6 +983,7 @@ def _deserialize(
981
983
cls ,
982
984
untrusted_serialization : bytes ,
983
985
expected_port : Port ,
986
+ expected_identity : Optional [str ],
984
987
) -> 'DeviceAssignment' :
985
988
"""
986
989
Actually deserializes the object.
@@ -993,4 +996,9 @@ def _deserialize(
993
996
del properties ['ident' ]
994
997
del properties ['devclass' ]
995
998
996
- return cls (expected_port , ** properties )
999
+ assignment = cls (expected_port , ** properties )
1000
+ if assignment .device .self_identity != expected_identity :
1001
+ raise UnexpectedDeviceProperty (
1002
+ f"Got device with identity { assignment .device .self_identity } "
1003
+ f"when expected devices with identity { expected_identity } ." )
1004
+ return assignment
0 commit comments