Skip to content

Commit a762ef7

Browse files
mikeprosserniMike Prosser
andauthored
Fix unpickling issues with Waveform and Signal (#237)
* add versioned unpickling tests for waveform and signal, and fix issues causing the new tests to fail * skip unpickle tests in oldest_deps test run --------- Co-authored-by: Mike Prosser <[email protected]>
1 parent 3991b93 commit a762ef7

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

src/nitypes/waveform/_digital/_signal.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,13 @@ def __init__(
3333
self,
3434
owner: DigitalWaveform[TDigitalState],
3535
signal_index: SupportsIndex,
36-
column_index: SupportsIndex,
36+
column_index: SupportsIndex | None = None,
3737
) -> None:
3838
"""Initialize a new digital waveform signal."""
39+
if column_index is None:
40+
# when unpickling an old version, column_index may not be provided
41+
column_index = signal_index
42+
3943
self._owner = owner
4044
self._signal_index = arg_to_uint("signal index", signal_index)
4145
self._column_index = arg_to_uint("column index", column_index)

src/nitypes/waveform/_digital/_waveform.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,9 @@ def __init__(
838838
):
839839
extended_properties = ExtendedPropertyDictionary(extended_properties)
840840
self._extended_properties = extended_properties
841+
if not hasattr(self._extended_properties, "_on_key_changed"):
842+
# when unpickling an old version, _on_key_changed may not exist
843+
self._extended_properties._on_key_changed = []
841844
self._extended_properties._on_key_changed.append(
842845
weakref.WeakMethod(self._on_extended_property_changed)
843846
)

tests/unit/waveform/test_digital_waveform.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,10 +1976,6 @@ def test___waveform___pickle___references_public_modules() -> None:
19761976
extended_properties={"NI_ChannelName": "Dev1/ai0", "NI_UnitDescription": "Volts"},
19771977
timing=Timing.create_with_regular_interval(dt.timedelta(milliseconds=1)),
19781978
),
1979-
marks=pytest.mark.xfail(
1980-
raises=AttributeError,
1981-
reason="https://github.com/ni/nitypes-python/issues/234 - ExtendedPropertyDictionary._on_key_changed breaks pickle compatibility",
1982-
),
19831979
),
19841980
# nitypes 1.0.1
19851981
(

tests/unit/waveform/test_digital_waveform_signal.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -378,10 +378,6 @@ def test___waveform___pickle___references_public_modules() -> None:
378378
DigitalWaveform(
379379
3, 2, extended_properties={"NI_LineNames": "port0/line1, port0/line0"}
380380
).signals[1],
381-
marks=pytest.mark.xfail(
382-
raises=AttributeError,
383-
reason="https://github.com/ni/nitypes-python/issues/234 - ExtendedPropertyDictionary._on_key_changed breaks pickle compatibility",
384-
),
385381
),
386382
# nitypes 1.0.1
387383
(

0 commit comments

Comments
 (0)