Skip to content

Commit 4245010

Browse files
committed
Allow ICSApiError to be pickled and un-pickled
1 parent d330522 commit 4245010

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

can/interfaces/ics_neovi/neovi_bus.py

+9
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ def __init__(
9595
self.severity = severity
9696
self.restart_needed = restart_needed == 1
9797

98+
def __reduce__(self):
99+
return type(self), (
100+
self.error_code,
101+
self.description_short,
102+
self.description_long,
103+
self.severity,
104+
self.restart_needed,
105+
)
106+
98107
@property
99108
def error_number(self) -> int:
100109
"""Deprecated. Renamed to :attr:`can.CanError.error_code`."""

test/test_neovi.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python
2+
3+
"""
4+
"""
5+
import pickle
6+
import unittest
7+
from can.interfaces.ics_neovi import ICSApiError
8+
9+
10+
class ICSApiErrorTest(unittest.TestCase):
11+
def test_error_pickling(self):
12+
iae = ICSApiError(
13+
0xF00,
14+
"description_short",
15+
"description_long",
16+
severity=ICSApiError.ICS_SPY_ERR_CRITICAL,
17+
restart_needed=1,
18+
)
19+
pickled_iae = pickle.dumps(iae)
20+
un_pickled_iae = pickle.loads(pickled_iae)
21+
assert iae.__dict__ == un_pickled_iae.__dict__
22+
23+
24+
if __name__ == "__main__":
25+
unittest.main()

0 commit comments

Comments
 (0)