Releases: hardbyte/python-can
Releases · hardbyte/python-can
3.0.0
Major features
- Adds support for developing
asyncio
applications withpython-can
more 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. #388 - New can viewer terminal application. #390
- More formally adds task management responsibility to the
Bus
. By default tasks created with
bus.send_periodic
will 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=False
to thesend_periodic
method. Stop all tasks
by calling the bus's newstop_all_periodic_tasks
method. #412
Breaking changes
- Interfaces should no longer override
send_periodic
and instead implement
_send_periodic_internal
#426 - writing to closed writers is not supported any more (it was supported only for some)
- the method
Listener.on_message_received()
is now abstract (using@abc.abstractmethod
) - the file in the reader/writer is now always stored in the attribute uniformly called
file
, and not in
something likefp
,log_file
oroutput_file
. Changed the name of the first parameter of the
read/writer constructors fromfilename
tofile
.
Backend Specific Changes
3rd party interfaces
- Deprecated
python_can.interface
entry point instead usecan.interface
. #389
neovi
- Added support for CAN-FD #408
- Fix issues checking if bus is open. #381
- Adding multiple channels support. #415
nican
- implements reset instead of custom
flush_tx_buffer
. #364
pcan
- now supported on OSX. #365
serial
- Removed TextIOWrapper from serial. #383
- switch to
serial_for_url
enabling using remote ports vialoop://
, ``socket://and
rfc2217://` URLs. #393 - hardware handshake using
rtscts
kwarg #402
socketcan
- socketcan tasks now reuse a bcm socket
- socketcan bugfix to receive error frames #384
vector
- Vector interface now implements
_detect_available_configs
. #362 - Added support to select device by serial number. #387
Other notable changes
- can.Message class updated #413
- Addition of a Message.equals method.
- Deprecate id_type 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
BaseIOHandler
- all file handles can now be closed with the
stop()
method - the table name in
SqliteReader
/SqliteWriter
can be adjusted - append mode added in
CSVWriter
andCanutilsLogWriter
- file-like and
path-like objects can now be passed to
the readers and writers (except to the Sqlite handlers) - add a
__ne__()
method to theMessage
class (this was required by the tests) - added a
stop()
method forBufferedReader
SqliteWriter
: 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_line
attribute fromCSVReader
has been removed - privatized some attributes that are only to be used internally in the classes
- Start testing against Python 3.7 #380
- All scripts have been moved into
can/scripts
. #370, #406 - Added support for additional sections to the config #338
- Code coverage reports added. #346, #374
- Bug fix to thread safe bus. #397
General fixes, cleanup and docs changes: (#347, #348, #367, #368, #370, #371, #373, #420, #417, #419)
Documentation: https://python-can.readthedocs.io/en/3.0.0/
Installation
pip install python-can==3.0.0
2.2.1
Bug fixes
- Fix errors and warnings when importing library on Windows
- Fix Vector backend raising ValueError when hardware is not connected
Installation
Get it from PyPi:
pip install -U python-can==2.2.1
2.2.0
Major Features
- Fallback message filtering implemented in Python for interfaces that don't offer better accelerated mechanism. #157, #277, #104
- SocketCAN interfaces have been merged (
socketcan_native
andsocketcan_ctypes
), this is now completely transparent for the library user. #326 - automatic detection of available configs/channels in supported interfaces (see #303)
- Added synchronized (thread-safe) Bus variant. #315
- context manager support for the Bus class. #283
- added CSVReader. Improved testing of CSVReader/CSVWriter #270
- Notifier supports multiple buses #332
Removals
- Dropped support for Python 3.3 (officially reached end-of-life in Sept. 2017)
- Deprecated the old
CAN
module, please use the newercan
entry point (will be removed in version 2.4). #267
Interface Specific Changes
There were many changes and a lot of cleanup effort in the individual interfaces. Some of the highlights:
SocketCAN
Use socketcan
in the future instead of socketcan_native
or socketcan_ctypes
VectorCAN
- CAN FD support #311
- Fix bug where messages were sent to only one virtual channel #302
- Various fixes in #258:
- Avoid polling by using Win32 events when possible
- Support for receive_own_messages argument
PCAN
Use configured bitrate. #254
USB2CAN
Show stopping bug #219 has been fixed.
Minor Changes
- Minor api change to the
can.Notifier
addingadd_listener
andremove_listener
methods #266 SqlReader
andSqlWriter
have been renamed toSqliteReader
andSqliteWriter
. #263- readers/writers now support error frames correctly. #217, #247, #256
- bug fixes
- a lot of (CI) testing effort. #342
- improved documentation
- code cleanup. #309
Installation
Get it from PyPi:
pip install -U python-can==2.2.0
2.1
- 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
Available in all good cheese shops:
pip install python-can==2.1.0
Documentation available on readthedocs.
2.0
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.logger
- New
can.player
script to replay log files - BLF, ASC log file support added in new
can.io
module
You can install from PyPi with pip:
pip install python-can==2.0.0
The documentation for v2.0.0 is available at http://python-can.readthedocs.io/en/2.0.0/