Skip to content

Commit 803a712

Browse files
authored
Merge pull request #1216 from hardbyte/add-changelog-for-4.0.0
Add changelog for 4.0.0
2 parents b4d7801 + a415497 commit 803a712

File tree

2 files changed

+182
-2
lines changed

2 files changed

+182
-2
lines changed

CHANGELOG.txt renamed to CHANGELOG.md

+181-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,188 @@
11
Version 4.0.0
22
====
33

4-
(In development)
4+
TL;DR: This release includes a ton of improvements from 2.5 years of development! 🎉 Test thoroughly after switching.
55

6+
For more than two years, there was no major release of *python-can*.
7+
However, development was very much active over most of this time, and many parts were switched out and improved.
8+
Over this time, over 530 issues and PRs have been resolved or merged, and discussions took place in even more.
9+
Statistics of the final diff: About 200 files changed due to ~22k additions and ~7k deletions from more than thirty contributors.
10+
11+
This changelog diligently lists the major changes but does not promise to be the complete list of changes.
12+
Therefore, users are strongly advised to thoroughly test their programs against this new version.
13+
Re-reading the documentation for your interfaces might be helpful too as limitations and capabilities might have changed or are more explicit.
14+
While we did try to avoid breaking changes, in some cases it was not feasible and in particular, many implementation details have changed.
15+
16+
Major features
17+
--------------
18+
19+
* Type hints for the core library and some interfaces (#652 and many others)
20+
* Support for Python 3.7-3.10+ only (dropped support for Python 2.* and 3.5-3.6) (#528 and many others)
21+
* [Granular and unified exceptions](https://python-can.readthedocs.io/en/develop/api.html#errors) (#356, #562, #1025; overview in #1046)
22+
* [Support for automatic configuration detection](https://python-can.readthedocs.io/en/develop/api.html#can.detect_available_configs) in most interfaces (#303, #640, #641, #811, #1077, #1085)
23+
* Better alignment of interfaces and IO to common conventions and semantics
24+
25+
New interfaces
26+
--------------
27+
28+
* udp_multicast (#644)
29+
* robotell (#731)
30+
* cantact (#853)
31+
* gs_usb (#905)
32+
* nixnet (#968, #1154)
33+
* neousys (#980, #1076)
34+
* socketcand (#1140)
35+
* etas (#1144)
36+
37+
Improved interfaces
38+
-------------------
39+
40+
* socketcan
41+
* Support for multiple Cyclic Messages in Tasks (#610)
42+
* Socketcan crash when attempting to stop CyclicSendTask with same arbitration ID (#605, #638, #720)
43+
* Relax restriction of arbitration ID uniqueness for CyclicSendTask (#721, #785, #930)
44+
* Add nanosecond resolution time stamping to socketcan (#938, #1015)
45+
* Add support for changing the loopback flag (#960)
46+
* Socketcan timestamps are missing sub-second precision (#1021, #1029)
47+
* Add parameter to ignore CAN error frames (#1128)
48+
* socketcan_ctypes
49+
* Removed and replaced by socketcan after deprecation period
50+
* socketcan_native
51+
* Removed and replaced by socketcan after deprecation period
52+
* vector
53+
* Add chip state API (#635)
54+
* Add methods to handle non message events (#708)
55+
* Implement XLbusParams (#718)
56+
* Add support for VN8900 xlGetChannelTime function (#732, #733)
57+
* Add vector hardware config popup (#774)
58+
* Fix Vector CANlib treatment of empty app name (#796, #814)
59+
* Make VectorError pickleable (#848)
60+
* Add methods get_application_config(), set_application_config() and set_timer_rate() to VectorBus (#849)
61+
* Interface arguments are now lowercase (#858)
62+
* Fix errors using multiple Vector devices (#898, #971, #977)
63+
* Add more interface information to channel config (#917)
64+
* Improve timestamp accuracy on Windows (#934, #936)
65+
* Fix error with VN8900 (#1184)
66+
* PCAN
67+
* Do not incorrectly reset CANMsg.MSGTYPE on remote frame (#659, #681)
68+
* Add support for error frames (#711)
69+
* Added keycheck for windows platform for better error message (#724)
70+
* Added status_string method to return simple status strings (#725)
71+
* Fix timestamp timezone offset (#777, #778)
72+
* Add [Cygwin](https://www.cygwin.com/) support (#840)
73+
* Update PCAN basic Python file to February 7, 2020 (#929)
74+
* Fix compatibility with the latest macOS SDK (#947, #948, #957, #976)
75+
* Allow numerical channel specifier (#981, #982)
76+
* macOS: Try to find libPCBUSB.dylib before loading it (#983, #984)
77+
* Disable command PCAN_ALLOW_ERROR_FRAMES on macOS (#985)
78+
* Force english error messages (#986, #993, #994)
79+
* Add set/get device number (#987)
80+
* Timestamps are silently incorrect on Windows without uptime installed (#1053, #1093)
81+
* Implement check for minimum version of pcan library (#1065, #1188)
82+
* Handle case where uptime is imported successfully but returns None (#1102, #1103)
83+
* slcan
84+
* Fix bitrate setting (#691)
85+
* Fix fileno crash on Windows (#924)
86+
* ics_neovi
87+
* Filter out Tx error messages (#854)
88+
* Adding support for send timeout (#855)
89+
* Raising more precise API error when set bitrate fails (#865)
90+
* Avoid flooding the logger with many errors when they are the same (#1125)
91+
* Omit the transmit exception cause for brevity (#1086)
92+
* Raise ValueError if message data is over max frame length (#1177, #1181)
93+
* Setting is_error_frame message property (#1189)
94+
* ixxat
95+
* Raise exception on busoff in recv() (#856)
96+
* Add support for 666 kbit/s bitrate (#911)
97+
* Add function to list hwids of available devices (#926)
98+
* Add CAN FD support (#1119)
99+
* seeed
100+
* Fix fileno crash on Windows (#902)
101+
* kvaser
102+
* Improve timestamp accuracy on Windows (#934, #936)
103+
* usb2can
104+
* Fix "Error 8" on Windows and provide better error messages (#989)
105+
* serial
106+
* Fix "TypeError: cannot unpack non-iterable NoneType" and more robust error handling (#1000, #1010)
107+
* canalystii
108+
* Fix is_extended_id (#1006)
109+
* Fix transmitting onto a busy bus (#1114)
110+
* Replace binary library with python driver (#726, #1127)
111+
112+
Other API changes and improvements
113+
----------------------------------
114+
115+
* CAN FD frame support is pretty complete (#963)
116+
* ASCWriter (#604) and ASCReader (#741)
117+
* Canutils reader and writer (#1042)
118+
* Logger, viewer and player tools can handle CAN FD (#632)
119+
* Many bugfixes and more testing coverage
120+
* IO
121+
* Log rotation (#648, #874, #881, #1147)
122+
* Add [plugin support to can.io Reader/Writer](https://python-can.readthedocs.io/en/develop/listeners.html#listener) (#783)
123+
* ASCReader/Writer enhancements (#820)
124+
* Adding absolute timestamps to ASC reader (#761)
125+
* Support other base number (radix) at ASCReader (#764)
126+
* Add [logconvert script](https://python-can.readthedocs.io/en/develop/scripts.html#can-logconvert) (#1072, #1194)
127+
* Adding support for gzipped ASC logging file (.asc.gz) (#1138)
128+
* Improve [IO class hierarchy](https://python-can.readthedocs.io/en/develop/internal-api.html#module-can.io.generic) (#1147)
129+
* An [overview over various "virtual" interfaces](https://python-can.readthedocs.io/en/develop/interfaces/virtual.html#other-virtual-interfaces) (#644)
130+
* Make ThreadBasedCyclicSendTask event based & improve timing accuracy (#656)
131+
* Ignore error frames in can.player by default, add --error-frames option (#690)
132+
* Add an error callback to ThreadBasedCyclicSendTask (#743, #781)
133+
* Add direction to CAN messages (#773, #779, #780, #852, #966)
134+
* Notifier no longer raises handled exceptions in rx_thread (#775, #789) but does so if no listener handles them (#1039, #1040)
135+
* Changes to serial device number decoding (#869)
136+
* Add a default fileno function to the BusABC (#877)
137+
* Disallow Messages to simultaneously be "FD" and "remote" (#1049)
138+
* Speed up interface plugin imports by removing pkg_resources (#1110)
139+
* Allowing for extra config arguments in can.logger (#1142, #1170)
140+
* Add changed byte highlighting to viewer.py (#1159)
141+
142+
Other Bugfixes
143+
--------------
144+
145+
* BLF PDU padding (#459)
146+
* stop_all_periodic_tasks skipping every other task (#634, #637, #645)
147+
* Preserve capitalization when reading config files (#702, #1062)
148+
* ASCReader: Skip J1939Tp messages (#701)
149+
* Fix crash in Canutils Log Reader when parsing RTR frames (#713)
150+
* Various problems with the installation of the library
151+
* ASCWriter: Fix date format to show correct day of month (#754)
152+
* Fixes that some BLF files can't be read ( #763, #765)
153+
* Seek for start of object instead of calculating it (#786, #803, #806)
154+
* Only import winreg when on Windows (#800, #802)
155+
* Find the correct Reader/Writer independently of the file extension case (#895)
156+
* RecursionError when unpickling message object (#804, #885, #904)
157+
* Move "filelock" to neovi dependencies (#943)
158+
* Bus() with "fd" parameter as type bool always resolved to fd-enabled configuration (#954, #956)
159+
* Asyncio code hits error due to deprecated loop parameter (#1005, #1013)
160+
* Catch time before 1970 in ASCReader (#1034)
161+
* Fix a bug where error handlers were not called correctly (#1116)
162+
* Improved user interface of viewer script (#1118)
163+
* Correct app_name argument in logger (#1151)
164+
* Calling stop_all_periodic_tasks() in BusABC.shutdown() and all interfaces call it on shutdown (#1174)
165+
* Timing configurations do not allow int (#1175)
166+
* Some smaller bugfixes are not listed here since the problems were never part of a proper release
167+
168+
Behind the scenes & Quality assurance
169+
-------------------------------------
170+
171+
* We publish both source distributions (`sdist`) and binary wheels (`bdist_wheel`) (#1059, #1071)
172+
* Many interfaces were partly rewritten to modernize the code or to better handle errors
173+
* Performance improvements
174+
* Dependencies have changed
175+
* Derive type information in Sphinx docs directly from type hints (#654)
176+
* Better documentation in many, many places; This includes the examples, README and python-can developer resources
177+
* Add issue templates (#1008, #1017, #1018, #1178)
178+
* Many continuous integration (CI) discussions & improvements (for example: #951, #940, #1032)
179+
* Use the [mypy](https://github.com/python/mypy) static type checker (#598, #651)
180+
* Use [tox](https://tox.wiki/en/latest/) for testing (#582, #833, #870)
181+
* Use [Mergify](https://mergify.com/) (#821, #835, #937)
182+
* Switch between various CI providers, abandoned [AppVeyor](https://www.appveyor.com/) (#1009) and partly [Travis CI](https://travis-ci.org/), ended up with [GitHub Actions](https://docs.github.com/en/actions) only (#827)
183+
* Use the [black](https://black.readthedocs.io/en/stable/) auto-formatter (#950)
184+
* [Good test coverage](https://app.codecov.io/gh/hardbyte/python-can/branch/develop) for all but the interfaces
185+
* 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)
6186

7187
Version 3.3.4
8188
====

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
author="python-can contributors",
7676
license="LGPL v3",
7777
package_data={
78-
"": ["README.rst", "CONTRIBUTORS.txt", "LICENSE.txt", "CHANGELOG.txt"],
78+
"": ["README.rst", "CONTRIBUTORS.txt", "LICENSE.txt", "CHANGELOG.md"],
7979
"doc": ["*.*"],
8080
"examples": ["*.py"],
8181
},

0 commit comments

Comments
 (0)