Releases: hardbyte/python-can
v4.3.2 Pre-release 4
v4.3.2-rc.4 Update CI.yml workflow
v4.3.2-rc.3
Allow release without tests
4.3.1
4.3.0
In this release, we've raised the minimum Python version to 3.8, added several new features to the API and as always plenty of bug fixes and interface improvements.
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.error
in 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 check
if the device reportscan_op_mode=0
(#1678) - Vector: using the config from
detect_available_configs
might raise XL_ERR_INVALID_CHANNEL_MASK error (#1681)
Features
API
- Add
modifier_callback
parameter toBusABC.send_periodic
for auto-modifying cyclic tasks (#703) - Add
protocol
property to BusABC to determine active CAN Protocol (#1532) - Change Bus constructor implementation and typing (#1557)
- Add optional
strict
parameter to relax BitTiming & BitTimingFd Validation (#1618) - Add
BitTiming.iterate_from_sample_point
static 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_configs
for 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_tune
to 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)
4.3.0rc0
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.error
in 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 check
if the device reportscan_op_mode=0
(#1678)
Features
API
- Add
modifier_callback
parameter toBusABC.send_periodic
for auto-modifying cyclic tasks (#703) - Add
protocol
property to BusABC to determine active CAN Protocol (#1532) - Change Bus constructor implementation and typing (#1557)
- Add optional
strict
parameter to relax BitTiming & BitTimingFd Validation (#1618) - Add
BitTiming.iterate_from_sample_point
static 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_configs
for 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)
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)
4.2.2
4.2.1
4.2.0
Breaking Changes
-
The
can.BitTiming
class was replaced with the newcan.BitTiming
andcan.BitTimingFd
classes (#1468, #1515).
Early adopters ofcan.BitTiming
will 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
- Add support for MF4 files (#1289).
- Add support for version 2 TRC files and other TRC file enhancements (#1530).
Type Annotations
Interface Improvements
- Add
__del__
method tocan.BusABC
to 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
- Automatic type conversion for config values (#1498, #1499).
- pcan: Fix
Bus.__new__
for CAN-FD interfaces (#1458, #1460). - pcan: Fix Detection of Library on Windows on ARM (#1463).
- socketcand: extended ID bug fixes (#1504, #1508).
- vector: improve robustness against unknown HardwareType values (#1500, #1502).
Deprecations
- The
bustype
parameter ofcan.Bus
is deprecated and will be
removed in version 5.0, useinterface
instead. (#1462). - The
context
parameter ofcan.Bus
is deprecated and will be
removed in version 5.0, useconfig_context
instead. (#1474). - The
bit_timing
parameter ofCantactBus
is deprecated and will be
removed in version 5.0, usetiming
instead. (#1468). - The
bit_timing
parameter ofCANalystIIBus
is deprecated and will be
removed in version 5.0, usetiming
instead. (#1468). - The
brs
andlog_errors
parameters ofNiXNETcanBus
are 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().get
deprecation warning and improve
type annotation ofcan.interfaces.BACKENDS
(#1465). - Add
ignore_config
parameter tocan.Bus
(#1474). - Add deprecation period to utility function
deprecated_args_alias
(#1477). - Add
ruff
to the CI system (#1551)
4.2.0rc0
This is a pre-release of version 4.2.0, which will be the last version to support Python 3.7.
Installation
pip install python-can==4.2.0rc0
Breaking Changes
-
The
can.BitTiming
class was replaced with the new
can.BitTiming
andcan.BitTimingFd
classes (#1468, #1515).
Early adopters ofcan.BitTiming
will 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
- Add support for MF4 files (#1289).
- Add support for version 2 TRC files and other TRC file enhancements (#1530).
Type Annotations
Interface Improvements
- Add
__del__
method tocan.BusABC
to automatically release resources (#1489). - 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
- Automatic type conversion for config values (#1498, #1499).
- pcan: Fix
Bus.__new__
for CAN-FD interfaces (#1458, #1460). - pcan: Fix Detection of Library on Windows on ARM (#1463).
- socketcand: extended ID bug fixes (#1504, #1508).
- vector: improve robustness against unknown HardwareType values (#1500, #1502).
Deprecations
- The
bustype
parameter ofcan.Bus
is deprecated and will be
removed in version 5.0, useinterface
instead. (#1462). - The
context
parameter ofcan.Bus
is deprecated and will be
removed in version 5.0, useconfig_context
instead. (#1474). - The
bit_timing
parameter ofCantactBus
is deprecated and will be
removed in version 5.0, usetiming
instead. (#1468). - The
bit_timing
parameter ofCANalystIIBus
is deprecated and will be
removed in version 5.0, usetiming
instead. (#1468). - The
brs
andlog_errors
parameters ofNiXNETcanBus
are 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().get
deprecation warning and improve
type annotation ofcan.interfaces.BACKENDS
(#1465). - Add
ignore_config
parameter tocan.Bus
(#1474). - Add deprecation period to utility function
deprecated_args_alias
(#1477). - Add
ruff
to the CI system (#1551)
4.1.0
Installation
Available on PyPi https://pypi.org/project/python-can/4.1.0/
pip install python-can==4.1.0
Changes
Breaking Changes
windows-curses
was moved to optional dependencies (#1395).
Usepip install python-can[viewer]
if you are using thecan.viewer
script on Windows.- The attributes of
can.interfaces.vector.VectorChannelConfig
were renamed
from camelCase to snake_case (#1422).
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.logger
script accepts the-a, --append
option
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_args
are passed to the bus, logger
and player initialisation (#1366). - Initial support for TRC files (#1217)
Type Annotations
- python-can now includes the
py.typed
marker 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 theis_rx
flag (#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 ofVectorBus.__init__
(#1426). - Ixxat bus now implements BusState api and detects errors (#1141)
Bug Fixes
- Improve robustness of USB2CAN serial number detection (#1129).
- Fix channel2int conversion (#1268, #1269).
- Fix BLF timestamp conversion (#1266, #1273).
- Fix timestamp handling in udp_multicast on macOS (#1275, #1278).
- Fix failure to initiate the Neousys DLL (#1281).
- Fix AttributeError in IscanError (#1292, #1293).
- Add missing vector devices (#1296).
- Fix error for DLC > 8 in ASCReader (#1299, #1301).
- Set default mode for FileIOMessageWriter to wt instead of rt (#1303).
- Fix conversion for port number from config file (#1309).
- Fix fileno error on Windows (#1312, #1313, #1333).
- Remove redundant
writer.stop()
call that throws error (#1316, #1317). - Detect and cast types of CLI
extra_args
(#1280, #1328). - Fix ASC/CANoe incompatibility due to timestamp format (#1315, #1362).
- Fix MessageSync timings (#1372, #1374).
- 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)