Changelog¶
Version [UNRELEASED DRAFT] - 2026-03-11¶
Removed¶
Added¶
Added support for replaying CAN log files multiple times or infinitely in the player script via the new
--loop/-largument. (#1815)Added python-can-coe interface plugin to the documentation. (#1987)
Added hardware filter support for SeeedBus during initialization, with a software fallback. (#1995)
Added
timestamps_formatparameter toASCWriterto support configurable timestamp format:"absolute"(default, timestamps are offsets from the start of measurement) or"relative"(each timestamp is the delta from the preceding event), matching the semantics described in the ASC format specification. (#2022)Add new timezone parameter
tztocan.io.asc.ASCReaderandcan.io.asc.ASCWriter. (#2035)Include unreleased changes in documentation. (#2039)
Changed¶
Improved datetime parsing and added support for double-defined datetime strings (such as, e.g.,
"30 15:06:13.191 pm 2017") forASCReaderclass. (#2009)Improved IXXAT VCI exception handling. (#2023)
cantact: callingCantactBus.recv(timeout=None)now blocks ‘forever’. (#2026)Improved performance in
slcaninterface. (#2028)gs_usb: usepyusbpackage to allow WinUSB instead of requiring libusbK on Windows; callingGsUsbBus.recv(timeout=None)now blocks ‘forever’. (#2031)Move changelog from CHANGELOG.md to documentation. (#2039)
Fixed¶
Keep a reference to asyncio tasks in
can.Notifieras recommended by python documentation. (#1938)
Version v4.6.1 - 2025-08-12¶
Fixed¶
Fix initialisation of an slcan bus, when setting a bitrate. When using CAN 2.0 (not FD), the default setting for
data_bitratewas invalid, causing an exception. (#1978)
Version v4.6.0 - 2025-08-09¶
Removed¶
Added¶
Support 11-bit identifiers in the
serialinterface. (#1758)Keep track of active Notifiers and make Notifier usable as a context manager. Add function
Notifier.find_instances(bus)to find the active Notifier for a given bus instance. (#1890)Add Windows support to
udp_multicastinterface. (#1914)Add FD support to
slcanaccording to CANable 2.0 implementation. (#1920)Add support for error messages to the
socketcandinterface. (#1941)Add support for remote and error frames in the
serialinterface. (#1948)Add public functions
can.cli.add_bus_argumentsandcan.cli.create_bus_from_namespacefor creating bus command line options. Currently downstream packages need to implement their own logic to configure python-can buses. Now python-can can create and parse bus options for third party packages. (#1949)Add support for remote frames to
TRCReader. (#1953)Mention the
python-can-candlepackage in the plugin interface section of the documentation. (#1954)Add new CLI tool
python -m can.bridge(or justcan_bridge) to create a software bridge between two physical buses. (#1961)
Changed¶
Allow sending Classic CAN frames with a DLC value larger than 8 using the
socketcaninterface. (#1851)The
gs_usbextra dependency was renamed togs-usb. Thelintextra dependency was removed and replaced with new PEP 735 dependency groupslint,docsandtest. (#1945)Update dependency name from
zlgcan-driver-pytozlgcan. (#1946)Use ThreadPoolExecutor in
detect_available_configs()to reduce runtime and addtimeoutparameter. (#1947)Update contribution guide. (#1960)
Fixed¶
Fix a bug in
slcanBus.get_version()andslcanBus.get_serial_number(): If any other data was received during the function call, thenNonewas returned. (#1904)Fix incorrect padding of CAN FD payload in
BlfReader. (#1906)Set correct message direction for messages received with
kvaserinterface andreceive_own_messages=True. (#1908)Fix timestamp rounding error in
BlfWriter. (#1921)Fix timestamp rounding error in
BlfReader. (#1927)Handle timer overflow message and build timestamp according to the epoch in the
ixxatinterface. (#1934)Avoid unsupported
ioctlfunction call to allow usage of theudp_multicastinterface on MacOS. (#1940)Fix configuration file parsing for the
statebus parameter. (#1957)Mf4Reader: support non-standard
CAN_DataFrame.Dirvalues in mf4 files created by ihedvall/mdflib. (#1967)PcanBus: Set
Message.channelattribute inPcanBus.recv(). (#1969)
Version v4.5.0 - 2024-11-28¶
Features¶
gs_usb command-line support (and documentation updates and stability fixes) (#1790)
Faster and more general MF4 support (#1892)
ASCWriter speed improvement (#1856)
Faster Message string representation (#1858)
Added Netronic’s CANdo and CANdoISO adapters interface (#1887)
Add autostart option to BusABC.send_periodic() to fix issue #1848 (#1853)
Improve TestBusConfig (#1804)
Improve speed of TRCReader (#1893)
Bug Fixes¶
Fix Kvaser timestamp (#1878)
Set end_time in ThreadBasedCyclicSendTask.start() (#1871)
Fix regex in _parse_additional_config() (#1868)
Fix for #1849 (PCAN fails when PCAN_ERROR_ILLDATA is read via ReadFD) (#1850)
Period must be >= 1ms for BCM using Win32 API (#1847)
Fix ASCReader Crash on “Start of Measurement” Line (#1811)
Resolve AttributeError within NicanError (#1806)
Miscellaneous¶
Fix CI (#1889)
Update msgpack dependency (#1875)
Add tox environment for doctest (#1870)
Use typing_extensions.TypedDict on python < 3.12 for pydantic support (#1845)
Replace PyPy3.8 with PyPy3.10 (#1838)
Fix slcan tests (#1834)
Test on Python 3.13 (#1833)
Stop notifier in examples (#1814)
Use setuptools_scm (#1810)
Added extra info for Kvaser dongles (#1797)
Socketcand: show actual response as well as expected in error (#1807)
Refactor CLI filter parsing, add tests (#1805)
Add zlgcan to docs (#1839)
Version v4.4.2 - 2024-06-23¶
Bug Fixes¶
Remove
abstractmethoddecorator fromListener.stop()(#1770, #1795)gs_usb: Use
BitTimingclass internally to configure bitrate (#1747, #1748)pcan: Fix unpack error in
PcanBus._detect_available_configs()(#1767)socketcan: Improve error handling in
SocketcanBus.__init__()(#1771)socketcan: Do not log exception on non-linux platforms (#1800)
vector, kvaser: Activate channels after CAN filters were applied (#1413, #1708, #1796)
Features¶
Version v4.4.0 - 2024-06-08¶
Features¶
TRC 1.3 Support: Added support for .trc log files as generated by PCAN Explorer v5 and other tools, expanding compatibility with common log file formats (#1753).
ASCReader refactor: improved the ASCReader code (#1717).
SYSTEC Interface Enhancements: Added the ability to pass an explicit DLC value to the send() method when using the SYSTEC interface, enhancing flexibility for message definitions (#1756).
Socketcand Beacon Detection: Introduced a feature for detecting socketcand beacons, facilitating easier connection and configuration with socketcand servers (#1687).
PCAN Driver Echo Frames: Enabled echo frames in the PCAN driver when receive_own_messages is set, improving feedback for message transmissions (#1723).
CAN FD Bus Connection for VectorBus: Enabled connecting to CAN FD buses without specifying bus timings, simplifying the connection process for users (#1716).
Neousys Configs Detection: Updated the detection mechanism for available Neousys configurations, ensuring more accurate and comprehensive configuration discovery (#1744).
Bug Fixes¶
Send Periodic Messages: Fixed an issue where fixed-duration periodic messages were sent one extra time beyond their intended count (#1713).
Vector Interface on Windows 11: Addressed compatibility issues with the Vector interface on Windows 11, ensuring stable operation across the latest OS version (#1731).
ASCWriter Millisecond Handling: Corrected the handling of milliseconds in ASCWriter, ensuring accurate time representation in log files (#1734).
Various minor bug fixes: Addressed several minor bugs to improve overall stability and performance.
Miscellaneous¶
Invert default value logic for BusABC._is_shutdown. (#1774)
Implemented various logging enhancements to provide more detailed and useful operational insights (#1703).
Updated CI to use OIDC for connecting GitHub Actions to PyPi, improving security and access control for CI workflows.
Fix CI to work for MacOS (#1772).
The release also includes various other minor enhancements and bug fixes aimed at improving the reliability and performance of the software.
Version v4.3.1 - 2023-12-12¶
Bug Fixes¶
Documentation¶
Version v4.3.0 - 2023-11-17¶
Breaking Changes¶
Bug Fixes¶
Vector: channel detection fails, if there is an active flexray channel (#1634)
ixxat: Fix exception in ‘state’ property on bus coupling errors (#1647)
NeoVi: Fixed serial number range (#1650)
PCAN: Fix timestamp offset due to timezone (#1651)
Catch
pywintypes.errorin broadcast manager (#1659)Fix BLFReader error for incomplete or truncated stream (#1662)
PCAN: remove Windows registry check to fix 32bit compatibility (#1672)
Vector: Skip the
can_op_mode checkif the device reportscan_op_mode=0(#1678)Vector: using the config from
detect_available_configsmight raise XL_ERR_INVALID_CHANNEL_MASK error (#1681)
Features¶
API¶
Add
modifier_callbackparameter toBusABC.send_periodicfor auto-modifying cyclic tasks (#703)Add
protocolproperty to BusABC to determine active CAN Protocol (#1532)Change Bus constructor implementation and typing (#1557)
Add optional
strictparameter to relax BitTiming & BitTimingFd Validation (#1618)Add
BitTiming.iterate_from_sample_pointstatic methods (#1671)
IO¶
Can Player compatibility with interfaces that use additional configuration (#1610)
Interface Improvements¶
Kvaser: Add BitTiming/BitTimingFd support to KvaserBus (#1510)
Ixxat: Implement
detect_available_configsfor the Ixxat bus. (#1607)NeoVi: Enable send and receive on network ID above 255 (#1627)
Vector: Send HighPriority Message to flush Tx buffer (#1636)
PCAN: Optimize send performance (#1640)
PCAN: Support version string of older PCAN basic API (#1644)
Kvaser: add parameter exclusive and
override_exclusive(#1660)socketcand: Add parameter
tcp_tuneto reduce latency (#1683)
Miscellaneous¶
Distinguish Text/Binary-IO for Reader/Writer classes. (#1585)
Convert setup.py to pyproject.toml (#1592)
activate ruff pycodestyle checks (#1602)
Update linter instructions in development.rst (#1603)
remove unnecessary script files (#1604)
BigEndian test fixes (#1625)
align
ID:in can.Message string (#1635)Use same configuration file as Linux on macOS (#1657)
We do not need to account for drift when we
USE_WINDOWS_EVENTS(#1666, #1679)Update linters, activate more ruff rules (#1669)
Add Python 3.12 Support / Test Python 3.12 (#1673)
Version v4.2.2 - 2023-06-18¶
Bug Fixes¶
Version v4.2.1 - 2023-05-15¶
Bug Fixes¶
Version v4.2.0 - 2023-04-26¶
Breaking Changes¶
The
can.BitTimingclass was replaced with the newcan.BitTimingandcan.BitTimingFdclasses (#1468, #1515). Early adopters ofcan.BitTimingwill need to update their code. Check the documentation for more information. Currently, the following interfaces support the new classes:There are open pull requests for kvaser (#1510), slcan (#1512) and usb2can (#1511). Testing and reviewing of these open PRs would be most appreciated.
Features¶
IO¶
Type Annotations¶
Interface Improvements¶
Add
__del__method tocan.BusABCto automatically release resources (#1489, #1564).pcan: Update PCAN Basic to 4.6.2.753 (#1481).
pcan: Use select instead of polling on Linux (#1410).
socketcan: Use ip link JSON output in
find_available_interfaces(#1478).socketcan: Enable SocketCAN interface tests in GitHub CI (#1484).
slcan: improve receiving performance (#1490).
usb2can: Stop using root logger (#1483).
usb2can: Faster channel detection on Windows (#1480).
vector: Only check sample point instead of tseg & sjw (#1486).
vector: add VN5611 hwtype (#1501).
Documentation¶
Add new section about related tools to documentation. Add a list of plugin interface packages (#1457).
Bug Fixes¶
Deprecations¶
The
bustypeparameter ofcan.Busis deprecated and will be removed in version 5.0, useinterfaceinstead. (#1462).The
contextparameter ofcan.Busis deprecated and will be removed in version 5.0, useconfig_contextinstead. (#1474).The
bit_timingparameter ofCantactBusis deprecated and will be removed in version 5.0, usetiminginstead. (#1468).The
bit_timingparameter ofCANalystIIBusis deprecated and will be removed in version 5.0, usetiminginstead. (#1468).The
brsandlog_errorsparameters ofNiXNETcanBusare deprecated and will be removed in version 5.0. (#1520).
Miscellaneous¶
Use high resolution timer on Windows to improve timing precision for BroadcastManager (#1449).
Improve ThreadBasedCyclicSendTask timing (#1539).
Make code examples executable on Linux (#1452).
Fix CanFilter type annotation (#1456).
Fix
The entry_points().getdeprecation warning and improve type annotation ofcan.interfaces.BACKENDS(#1465).Add
ignore_configparameter tocan.Bus(#1474).Add deprecation period to utility function
deprecated_args_alias(#1477).Add
ruffto the CI system (#1551)
Version v4.1.0 - 2022-11-24¶
Breaking Changes¶
Features¶
IO¶
The canutils logger preserves message direction (#1244) and uses common interface names (e.g. can0) instead of just channel numbers (#1271).
The
can.loggerscript accepts the-a, --appendoption to add new data to an existing log file (#1326, #1327, #1361). Currently only the blf-, canutils- and csv-formats are supported.All CLI
extra_argsare passed to the bus, logger and player initialisation (#1366).Initial support for TRC files (#1217)
Type Annotations¶
python-can now includes the
py.typedmarker to support type checking according to PEP 561 (#1344).
Interface Improvements¶
The gs_usb interface can be selected by device index instead of USB bus/address. Loopback frames are now correctly marked with the
is_rxflag (#1270).The PCAN interface can be selected by its device ID instead of just the channel name (#1346).
The PCAN Bus implementation supports auto bus-off reset (#1345).
SocketCAN: Make
find_available_interfaces()find slcanX interfaces (#1369).Vector: Add xlGetReceiveQueueLevel, xlGenerateSyncPulse and xlFlushReceiveQueue to xldriver (#1387).
Vector: Raise a CanInitializationError, if the CAN settings can not be applied according to the arguments of
VectorBus.__init__(#1426).Ixxat bus now implements BusState api and detects errors (#1141)
Bug Fixes¶
Improve robustness of USB2CAN serial number detection (#1129).
Fix timestamp handling in udp_multicast on macOS (#1275, #1278).
Fix failure to initiate the Neousys DLL (#1281).
Add missing vector devices (#1296).
Set default mode for FileIOMessageWriter to wt instead of rt (#1303).
Fix conversion for port number from config file (#1309).
Remove redundant
writer.stop()call that throws error (#1316, #1317).Fix ASC/CANoe incompatibility due to timestamp format (#1315, #1362).
Fix file name for compressed files in SizedRotatingLogger (#1382, #1683).
Fix memory leak in neoVI bus where message_receipts grows with no limit (#1427).
Raise ValueError if gzip is used with incompatible log formats (#1429).
Allow restarting of transmission tasks for socketcan (#1440)
Miscellaneous¶
Allow ICSApiError to be pickled and un-pickled (#1341)
Sort interface names in CLI API to make documentation reproducible (#1342)
Exclude repository-configuration from git-archive (#1343)
Improve documentation (#1397, #1401, #1405, #1420, #1421, #1434)
Officially support Python 3.11 (#1423)
Migrate code coverage reporting from Codecov to Coveralls (#1430)
Migrate building docs and publishing releases to PyPi from Travis-CI to GitHub Actions (#1433)
Version v4.0.0 - 2022-02-19¶
TL;DR: This release includes a ton of improvements from 2.5 years of development! 🎉 Test thoroughly after switching.
For more than two years, there was no major release of python-can. However, development was very much active over most of this time, and many parts were switched out and improved. Over this time, over 530 issues and PRs have been resolved or merged, and discussions took place in even more. Statistics of the final diff: About 200 files changed due to ~22k additions and ~7k deletions from more than thirty contributors.
This changelog diligently lists the major changes but does not promise to be the complete list of changes. Therefore, users are strongly advised to thoroughly test their programs against this new version. Re-reading the documentation for your interfaces might be helpful too as limitations and capabilities might have changed or are more explicit. While we did try to avoid breaking changes, in some cases it was not feasible and in particular, many implementation details have changed.
Major features¶
Type hints for the core library and some interfaces (#652 and many others)
Support for Python 3.7-3.10+ only (dropped support for Python 2.* and 3.5-3.6) (#528 and many others)
Granular and unified exceptions (#356, #562, #1025; overview in #1046)
Support for automatic configuration detection in most interfaces (#303, #640, #641, #811, #1077, #1085)
Better alignment of interfaces and IO to common conventions and semantics
New interfaces¶
Improved interfaces¶
socketcan
Support for multiple Cyclic Messages in Tasks (#610)
Socketcan crash when attempting to stop CyclicSendTask with same arbitration ID (#605, #638, #720)
Relax restriction of arbitration ID uniqueness for CyclicSendTask (#721, #785, #930)
Add nanosecond resolution time stamping to socketcan (#938, #1015)
Add support for changing the loopback flag (#960)
Socketcan timestamps are missing sub-second precision (#1021, #1029)
Add parameter to ignore CAN error frames (#1128)
socketcan_ctypes
Removed and replaced by socketcan after deprecation period
socketcan_native
Removed and replaced by socketcan after deprecation period
vector
Add chip state API (#635)
Add methods to handle non message events (#708)
Implement XLbusParams (#718)
Add support for VN8900 xlGetChannelTime function (#732, #733)
Add vector hardware config popup (#774)
Make VectorError pickleable (#848)
Add methods get_application_config(), set_application_config() and set_timer_rate() to VectorBus (#849)
Interface arguments are now lowercase (#858)
Add more interface information to channel config (#917)
Fix error with VN8900 (#1184)
Add static typing (#1229)
PCAN
Do not incorrectly reset CANMsg.MSGTYPE on remote frame (#659, #681)
Add support for error frames (#711)
Added keycheck for windows platform for better error message (#724)
Added status_string method to return simple status strings (#725)
Update PCAN basic Python file to February 7, 2020 (#929)
Fix compatibility with the latest macOS SDK (#947, #948, #957, #976)
macOS: Try to find libPCBUSB.dylib before loading it (#983, #984)
Disable command PCAN_ALLOW_ERROR_FRAMES on macOS (#985)
Add set/get device number (#987)
Timestamps are silently incorrect on Windows without uptime installed (#1053, #1093)
Implement check for minimum version of pcan library (#1065, #1188)
Handle case where uptime is imported successfully but returns None (#1102, #1103)
slcan
ics_neovi
Filter out Tx error messages (#854)
Adding support for send timeout (#855)
Raising more precise API error when set bitrate fails (#865)
Avoid flooding the logger with many errors when they are the same (#1125)
Omit the transmit exception cause for brevity (#1086)
Raise ValueError if message data is over max frame length (#1177, #1181)
Setting is_error_frame message property (#1189)
ixxat
seeed
Fix fileno crash on Windows (#902)
kvaser
usb2can
serial
canalystii
Other API changes and improvements¶
CAN FD frame support is pretty complete (#963)
IO
Log rotation (#648, #874, #881, #1147)
Transparent (de)compression of gzip files for all formats (#1221)
ASCReader/Writer enhancements like increased robustness (#820, #1223, #1256, #1257)
Adding absolute timestamps to ASC reader (#761)
Support other base number (radix) at ASCReader (#764)
Add logconvert script (#1072, #1194)
Adding support for gzipped ASC logging file (.asc.gz) (#1138)
Improve IO class hierarchy (#1147)
Make ThreadBasedCyclicSendTask event based & improve timing accuracy (#656)
Ignore error frames in can.player by default, add –error-frames option (#690)
Add an error callback to ThreadBasedCyclicSendTask (#743, #781)
Add direction to CAN messages (#773, #779, #780, #852, #966)
Notifier no longer raises handled exceptions in rx_thread (#775, #789) but does so if no listener handles them (#1039, #1040)
Changes to serial device number decoding (#869)
Add a default fileno function to the BusABC (#877)
Disallow Messages to simultaneously be “FD” and “remote” (#1049)
Speed up interface plugin imports by avoiding pkg_resources (#1110)
Allowing for extra config arguments in can.logger (#1142, #1170)
Add changed byte highlighting to viewer.py (#1159)
Change DLC to DL in
Message.__str__()(#1212)
Other Bugfixes¶
BLF PDU padding (#459)
stop_all_periodic_tasks skipping every other task (#634, #637, #645)
Preserve capitalization when reading config files (#702, #1062)
ASCReader: Skip J1939Tp messages (#701)
Fix crash in Canutils Log Reader when parsing RTR frames (#713)
Various problems with the installation of the library
ASCWriter: Fix date format to show correct day of month (#754)
Seek for start of object instead of calculating it (#786, #803, #806)
Find the correct Reader/Writer independently of the file extension case (#895)
RecursionError when unpickling message object (#804, #885, #904)
Move “filelock” to neovi dependencies (#943)
Bus() with “fd” parameter as type bool always resolved to fd-enabled configuration (#954, #956)
Asyncio code hits error due to deprecated loop parameter (#1005, #1013)
Catch time before 1970 in ASCReader (#1034)
Fix a bug where error handlers were not called correctly (#1116)
Improved user interface of viewer script (#1118)
Correct app_name argument in logger (#1151)
Calling stop_all_periodic_tasks() in BusABC.shutdown() and all interfaces call it on shutdown (#1174)
Timing configurations do not allow int (#1175)
Some smaller bugfixes are not listed here since the problems were never part of a proper release
ASCReader & ASCWriter using DLC as data length (#1245, #1246)
Behind the scenes & Quality assurance¶
We publish both source distributions (
sdist) and binary wheels (bdist_wheel) (#1059, #1071)Many interfaces were partly rewritten to modernize the code or to better handle errors
Performance improvements
Dependencies have changed
Derive type information in Sphinx docs directly from type hints (#654)
Better documentation in many, many places; This includes the examples, README and python-can developer resources
Many continuous integration (CI) discussions & improvements (for example: #951, #940, #1032)
Switch between various CI providers, abandoned AppVeyor (#1009) and partly Travis CI, ended up with mostly GitHub Actions (#827, #1224)
Good test coverage for all but the interfaces
Testing: Many of the new features directly added tests, and coverage of existing code was improved too (for example: #1031, #581, #585, #586, #942, #1196, #1198)
Version v3.3.4 - 2020-10-04¶
Last call for Python2 support.
#850 Fix socket.error is a deprecated alias of OSError used on Python versions lower than 3.3.
Version v3.3.3 - 2020-05-18¶
#798 Backport caching msg.data value in neovi interface.
#796 Fix Vector CANlib treatment of empty app name.
#771 Handle empty CSV file.
#741 ASCII reader can now handle FD frames.
#740 Exclude test packages from distribution.
#713 RTR crash fix in canutils log reader parsing RTR frames.
#701 Skip J1939 messages in ASC Reader.
#690 Exposes a configuration option to allow the CAN message player to send error frames (and sets the default to not send error frames).
#638 Fixes the semantics provided by periodic tasks in SocketCAN interface.
#628 Avoid padding CAN_FD_MESSAGE_64 objects to 4 bytes.
#617 Fixes the broken CANalyst-II interface.
#605 Socketcan BCM status fix.
Version v3.3.2 - 2019-08-16¶
Minor bug fix release addressing issue in PCAN RTR.
Version v3.3.1 - 2019-07-23¶
Minor fix to setup.py to only require pytest-runner when necessary.
Version v3.3.0 - 2019-06-27¶
Adding CAN FD 64 frame support to blf reader
Updates to installation instructions
Clean up bits generator in PCAN interface #588
Minor fix to use latest tools when building wheels on travis.
Version v3.2.1 - 2019-06-25¶
CAN FD 64 frame support to blf reader
Minor fix to use latest tools when building wheels on travis.
Updates links in documentation.
Version v3.2.0 - 2019-05-16¶
Major features¶
Other notable changes¶
#533 BusState is now an enum.
#535 This release should automatically be published to PyPi by travis.
#577 Travis-ci now uses stages.
#548 A guide has been added for new io formats.
#550 Finish moving from nose to pytest.
#558 Fix installation on Windows.
#561 Tests for MessageSync added.
General fixes, cleanup and docs changes can be found on the GitHub milestone https://github.com/hardbyte/python-can/milestone/7?closed=1
Pulls: #522, #526, #527, #536, #540, #546, #547, #548, #533, #559, #569, #571, #572, #575
Backend Specific Changes¶
pcan¶
FD
slcan¶
ability to set custom can speed instead of using predefined speed values. #553
socketcan¶
Bug fix to properly support 32bit systems. #573
usb2can¶
slightly better error handling
multiple serial devices can be found
support for the
_detect_available_configs()API
vector¶
handle
app_name. #525
Version v3.1.1 - 2019-02-24¶
Major features¶
Two new interfaces this release:
Other notable changes¶
#477 The kvaser interface now supports bus statistics via a custom bus method.
#434 neovi now supports receiving own messages
#490 Adding option to override the neovi library name
#488 Allow simultaneous access to IXXAT cards
#447 Improvements to serial interface:
to allow receiving partial messages
to fix issue with DLC of remote frames
addition of unit tests
#497 Small API changes to
Messageand added unit tests#471 Fix CAN FD issue in kvaser interface
#462 Fix
Notifierissue with asyncio#481 Fix PCAN support on OSX
#455 Fix to
MessageinitializerSmall bugfixes and improvements
Version v3.1.0 - 2023-03-01¶
Version 3.1.0 was built with old wheel and/or setuptools packages and was replaced with v3.1.1 after an installation but was discovered.
Version v3.0.0 - 2019-02-23¶
Major features¶
Adds support for developing
asyncioapplications withpython-canmore easily. This can be useful when implementing protocols that handles simultaneous connections to many nodes since you can write synchronous looking code without handling multiple threads and locking mechanisms. #388New can viewer terminal application. (
python -m can.viewer) #390More formally adds task management responsibility to the
Bus. By default tasks created withbus.send_periodicwill have a reference held by the bus - this means in many cases the user doesn’t need to keep the task in scope for their periodic messages to continue being sent. If this behavior isn’t desired passstore_task=Falseto thesend_periodicmethod. Stop all tasks by calling the bus’s newstop_all_periodic_tasksmethod. #412
Breaking changes¶
Interfaces should no longer override
send_periodicand instead implement_send_periodic_internalto allow the Bus base class to manage tasks. #426writing to closed writers is not supported any more (it was supported only for some)
the file in the reader/writer is now always stored in the attribute uniformly called
file, and not in something likefp,log_fileoroutput_file. Changed the name of the first parameter of the read/writer constructors fromfilenametofile.
Other notable changes¶
can.Message class updated #413
Addition of a
Message.equalsmethod.Deprecate id_type in favor of is_extended_id
Initializer parameter extended_id deprecated in favor of is_extended_id
documentation, testing and example updates
Addition of support for various builtins: __repr__, __slots__, __copy__
IO module updates to bring consistency to the different CAN message writers and readers. #348
context manager support for all readers and writers
they share a common super class called
BaseIOHandlerall file handles can now be closed with the
stop()methodthe table name in
SqliteReader/SqliteWritercan be adjustedappend mode added in
CSVWriterandCanutilsLogWriterfile-like and path-like objects can now be passed to the readers and writers (except to the Sqlite handlers)
add a
__ne__()method to theMessageclass (this was required by the tests)added a
stop()method forBufferedReaderSqliteWriter: this now guarantees that all messages are being written, exposes some previously internal metrics and only buffers messages up to a certain limit before writing/committing to the database.the unused
header_lineattribute fromCSVReaderhas been removedprivatized some attributes that are only to be used internally in the classes
the method
Listener.on_message_received()is now abstract (using@abc.abstractmethod)
Start testing against Python 3.7 #380
Added support for additional sections to the config #338
Bug fix to thread safe bus. #397
General fixes, cleanup and docs changes: (#347, #348, #367, #368, #370, #371, #373, #420, #417, #419, #432)
Backend Specific Changes¶
3rd party interfaces¶
Deprecated
python_can.interfaceentry point instead usecan.interface. #389
neovi¶
nican¶
implements reset instead of custom
flush_tx_buffer. #364
pcan¶
now supported on OSX. #365
serial¶
socketcan¶
vector¶
Version v2.2.1 - 2018-07-12¶
Fix errors and warnings when importing library on Windows
Fix Vector backend raising ValueError when hardware is not connected
Version v2.2.0 - 2018-07-03¶
Fallback message filtering implemented in Python for interfaces that don’t offer better accelerated mechanism.
SocketCAN interfaces have been merged (Now use
socketcaninstead of eithersocketcan_nativeandsocketcan_ctypes), this is now completely transparent for the library user.automatic detection of available configs/channels in supported interfaces.
Added synchronized (thread-safe) Bus variant.
context manager support for the Bus class.
Dropped support for Python 3.3 (officially reached end-of-life in Sept. 2017)
Deprecated the old
CANmodule, please use the newercanentry point (will be removed in an upcoming major version)
Version v2.1.0 - 2018-02-18¶
Support for out of tree can interfaces with pluggy.
Initial support for CAN-FD for socketcan_native and kvaser interfaces.
Neovi interface now uses Intrepid Control Systems’s own interface library.
Improvements and new documentation for SQL reader/writer.
Fix bug in neovi serial number decoding.
Add testing on OSX to TravisCI
Fix non english decoding error on pcan
Other misc improvements and bug fixes
Version v2.0.0 - 2018-01-05¶
After an extended baking period we have finally tagged version 2.0.0!
Quite a few major changes from v1.x:
New interfaces:
Vector
NI-CAN
isCAN
neoVI
Simplified periodic send API with initial support for SocketCAN
Protocols module including J1939 support removed
Logger script moved to module
can.loggerNew
can.playerscript to replay log filesBLF, ASC log file support added in new
can.iomodule
You can install from PyPi with pip:
`
pip install python-can==2.0.0
`