diff --git a/src/nitypes/waveform/_digital/_signal.py b/src/nitypes/waveform/_digital/_signal.py index 8414c5c..79b7ee2 100644 --- a/src/nitypes/waveform/_digital/_signal.py +++ b/src/nitypes/waveform/_digital/_signal.py @@ -33,9 +33,13 @@ def __init__( self, owner: DigitalWaveform[TDigitalState], signal_index: SupportsIndex, - column_index: SupportsIndex, + column_index: SupportsIndex | None = None, ) -> None: """Initialize a new digital waveform signal.""" + if column_index is None: + # when unpickling an old version, column_index may not be provided + column_index = signal_index + self._owner = owner self._signal_index = arg_to_uint("signal index", signal_index) self._column_index = arg_to_uint("column index", column_index) diff --git a/src/nitypes/waveform/_digital/_waveform.py b/src/nitypes/waveform/_digital/_waveform.py index a7f8d75..7d54214 100644 --- a/src/nitypes/waveform/_digital/_waveform.py +++ b/src/nitypes/waveform/_digital/_waveform.py @@ -838,6 +838,9 @@ def __init__( ): extended_properties = ExtendedPropertyDictionary(extended_properties) self._extended_properties = extended_properties + if not hasattr(self._extended_properties, "_on_key_changed"): + # when unpickling an old version, _on_key_changed may not exist + self._extended_properties._on_key_changed = [] self._extended_properties._on_key_changed.append( weakref.WeakMethod(self._on_extended_property_changed) ) diff --git a/tests/unit/waveform/test_digital_waveform.py b/tests/unit/waveform/test_digital_waveform.py index d2fe884..94e2b79 100644 --- a/tests/unit/waveform/test_digital_waveform.py +++ b/tests/unit/waveform/test_digital_waveform.py @@ -1976,10 +1976,6 @@ def test___waveform___pickle___references_public_modules() -> None: extended_properties={"NI_ChannelName": "Dev1/ai0", "NI_UnitDescription": "Volts"}, timing=Timing.create_with_regular_interval(dt.timedelta(milliseconds=1)), ), - marks=pytest.mark.xfail( - raises=AttributeError, - reason="https://github.com/ni/nitypes-python/issues/234 - ExtendedPropertyDictionary._on_key_changed breaks pickle compatibility", - ), ), # nitypes 1.0.1 ( diff --git a/tests/unit/waveform/test_digital_waveform_signal.py b/tests/unit/waveform/test_digital_waveform_signal.py index e617438..5fa7f4b 100644 --- a/tests/unit/waveform/test_digital_waveform_signal.py +++ b/tests/unit/waveform/test_digital_waveform_signal.py @@ -378,10 +378,6 @@ def test___waveform___pickle___references_public_modules() -> None: DigitalWaveform( 3, 2, extended_properties={"NI_LineNames": "port0/line1, port0/line0"} ).signals[1], - marks=pytest.mark.xfail( - raises=AttributeError, - reason="https://github.com/ni/nitypes-python/issues/234 - ExtendedPropertyDictionary._on_key_changed breaks pickle compatibility", - ), ), # nitypes 1.0.1 (