3.0.0
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. #388 - New can viewer terminal application. #390
- More formally adds task management responsibility to the
Bus. By default tasks created with
bus.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_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_fileoroutput_file. Changed the name of the first parameter of the
read/writer constructors fromfilenametofile.
Backend Specific Changes
3rd party interfaces
- Deprecated
python_can.interfaceentry 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_urlenabling using remote ports vialoop://, ``socket://andrfc2217://` URLs. #393 - hardware handshake using
rtsctskwarg #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/SqliteWritercan be adjusted - append mode added in
CSVWriterandCanutilsLogWriter - 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 theMessageclass (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_lineattribute fromCSVReaderhas 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