GitPedia
canopen-python

canopen-python/canopen

CANopen for Python

22 Releases
Latest: 10mo ago
v2.4.1: PyPI compatibility hot-fixv2.4.1Latest
acolombacolomb·10mo ago·August 5, 2025
GitHub

📦 Compatibility Notes

  • This will be the last release compatible with Python 3.8, which has already reached end-of-life state since 2024.

📦 Enhancements

  • Add all public API parts to __all__ by @friederschueler in https://github.com/canopen-python/canopen/pull/462
  • Export PdoMap and PdoVariable classes in pdo module by @acolomb in https://github.com/canopen-python/canopen/pull/464
  • Raise ValueError for unknown formats in the import/export OD APIs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/476
  • Expose and improve the docstrings of `export_od` and `import_id` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/473
  • Bail early if an unsupported doctype is passed to export_od() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/486
  • Improve the RemoteNode.load_configuration() docs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/477
  • Add support for loading DCF configuration to remote node by @meifonglow in https://github.com/canopen-python/canopen/pull/427
  • CI: Build docs in CI by @erlend-aasland in https://github.com/canopen-python/canopen/pull/498
  • + 7 more

🐛 Bug Fixes

  • build: Explicitly specify packages to install (fixes #467) by @sveinse in https://github.com/canopen-python/canopen/pull/468
  • Ensure proper close after open in export_od by @sveinse in https://github.com/canopen-python/canopen/pull/469
  • Adapt to renamed "bustype" parameter on can.Bus by @acolomb in https://github.com/canopen-python/canopen/pull/489
  • Save the passed node ID to the resulting OD in `import_od()` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/484
  • Gracefully handle missing Baudrate setting in DCF by @acolomb in https://github.com/canopen-python/canopen/pull/492
  • Add back PdoBase.export() dependency (canmatrix) by @erlend-aasland in https://github.com/canopen-python/canopen/pull/493
  • Ensure NmtBase.state always returns a string by @erlend-aasland in https://github.com/canopen-python/canopen/pull/506
  • Fix some type checker errors in network module by @acolomb in https://github.com/canopen-python/canopen/pull/534
  • + 11 more

📦 Code Cleaning and Modernization

  • doc: Clean up and modernize sphinx configuration (fixes #463) by @acolomb in https://github.com/canopen-python/canopen/pull/465
  • Increase export_eds() test coverage by @erlend-aasland in https://github.com/canopen-python/canopen/pull/474
  • Remove temporary files created in EDS tests by @erlend-aasland in https://github.com/canopen-python/canopen/pull/482
  • Add tests for bitrate parsing in import_eds() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/495
  • README: Add formatting and amend doc build instructions by @erlend-aasland in https://github.com/canopen-python/canopen/pull/494
  • Git: correctly ignore docs build directory by @erlend-aasland in https://github.com/canopen-python/canopen/pull/499
  • Tests: establish test/util.py and test/test_nmt.py by @erlend-aasland in https://github.com/canopen-python/canopen/pull/503
  • Add tests for NMT base and NMT master by @erlend-aasland in https://github.com/canopen-python/canopen/pull/504
  • + 17 more

New Contributors

  • @erlend-aasland made their first contribution in https://github.com/canopen-python/canopen/pull/476
  • @willson556 made their first contribution in https://github.com/canopen-python/canopen/pull/551
  • @tonybaltovski made their first contribution in https://github.com/canopen-python/canopen/pull/557
  • Full Changelog: https://github.com/canopen-python/canopen/compare/v2.3.0...v2.4.1
v2.4.0
acolombacolomb·10mo ago·August 5, 2025
GitHub

📦 Compatibility Notes

  • This will be the last release compatible with Python 3.8, which has already reached end-of-life state since 2024.

📦 Enhancements

  • Add all public API parts to __all__ by @friederschueler in https://github.com/canopen-python/canopen/pull/462
  • Export PdoMap and PdoVariable classes in pdo module by @acolomb in https://github.com/canopen-python/canopen/pull/464
  • Raise ValueError for unknown formats in the import/export OD APIs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/476
  • Expose and improve the docstrings of `export_od` and `import_id` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/473
  • Bail early if an unsupported doctype is passed to export_od() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/486
  • Improve the RemoteNode.load_configuration() docs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/477
  • Add support for loading DCF configuration to remote node by @meifonglow in https://github.com/canopen-python/canopen/pull/427
  • CI: Build docs in CI by @erlend-aasland in https://github.com/canopen-python/canopen/pull/498
  • + 7 more

🐛 Bug Fixes

  • build: Explicitly specify packages to install (fixes #467) by @sveinse in https://github.com/canopen-python/canopen/pull/468
  • Ensure proper close after open in export_od by @sveinse in https://github.com/canopen-python/canopen/pull/469
  • Adapt to renamed "bustype" parameter on can.Bus by @acolomb in https://github.com/canopen-python/canopen/pull/489
  • Save the passed node ID to the resulting OD in `import_od()` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/484
  • Gracefully handle missing Baudrate setting in DCF by @acolomb in https://github.com/canopen-python/canopen/pull/492
  • Add back PdoBase.export() dependency (canmatrix) by @erlend-aasland in https://github.com/canopen-python/canopen/pull/493
  • Ensure NmtBase.state always returns a string by @erlend-aasland in https://github.com/canopen-python/canopen/pull/506
  • Fix some type checker errors in network module by @acolomb in https://github.com/canopen-python/canopen/pull/534
  • + 10 more

📦 Code Cleaning and Modernization

  • doc: Clean up and modernize sphinx configuration (fixes #463) by @acolomb in https://github.com/canopen-python/canopen/pull/465
  • Increase export_eds() test coverage by @erlend-aasland in https://github.com/canopen-python/canopen/pull/474
  • Remove temporary files created in EDS tests by @erlend-aasland in https://github.com/canopen-python/canopen/pull/482
  • Add tests for bitrate parsing in import_eds() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/495
  • README: Add formatting and amend doc build instructions by @erlend-aasland in https://github.com/canopen-python/canopen/pull/494
  • Git: correctly ignore docs build directory by @erlend-aasland in https://github.com/canopen-python/canopen/pull/499
  • Tests: establish test/util.py and test/test_nmt.py by @erlend-aasland in https://github.com/canopen-python/canopen/pull/503
  • Add tests for NMT base and NMT master by @erlend-aasland in https://github.com/canopen-python/canopen/pull/504
  • + 17 more

New Contributors

  • @erlend-aasland made their first contribution in https://github.com/canopen-python/canopen/pull/476
  • @willson556 made their first contribution in https://github.com/canopen-python/canopen/pull/551
  • @tonybaltovski made their first contribution in https://github.com/canopen-python/canopen/pull/557
  • Full Changelog: https://github.com/canopen-python/canopen/compare/v2.3.0...v2.4.0
v2.3.0
acolombacolomb·2y ago·June 13, 2024
GitHub

📦 Compatibility Notes

  • The lower-level python-can library dependency (version 4.4.0) introduced an incompatible change, which is worked around in this release:
  • Implement abstract method can.Listener.stop() in MessageListener by @acolomb in https://github.com/christiansandberg/canopen/pull/422

📦 Enhancements

  • Support of custom can.Bus implementations to the Network class by @vongostev in https://github.com/christiansandberg/canopen/pull/404
  • 24 bit support by @raffi-g in https://github.com/christiansandberg/canopen/pull/406
  • Implement the remaining canopen datatypes by @sveinse in https://github.com/christiansandberg/canopen/pull/440
  • Mirror some OD access API to the SdoBase / SdoVariable classes by @acolomb in https://github.com/christiansandberg/canopen/pull/423
  • Implement equality operator for SdoAbortedError by @acolomb in https://github.com/christiansandberg/canopen/pull/424
  • Make pause after sending SDO request configurable by @sveinse in https://github.com/christiansandberg/canopen/pull/429
  • Fixup RETRY_DELAY on SDO send by @sveinse in https://github.com/christiansandberg/canopen/pull/435
  • Add support for using dot (.) to get subobjects from the OD by @sveinse in https://github.com/christiansandberg/canopen/pull/426
  • + 2 more

🐛 Bug Fixes

  • objectdictionary: Fix incorrect ParameterValue when export_dcf by @meifonglow in https://github.com/christiansandberg/canopen/pull/417
  • SDO client fixes by @samsamfire in https://github.com/christiansandberg/canopen/pull/408
  • Ignore the most significant bit in PDO mapping lengths by @acolomb in https://github.com/christiansandberg/canopen/pull/421
  • Revert "change missing Baudrate to BaudRate" by @hepr-skylotec in https://github.com/christiansandberg/canopen/pull/452
  • pdo: Skip saving if no COB-ID was set (fixes #445) by @friederschueler in https://github.com/christiansandberg/canopen/pull/446

📦 Code Cleaning and Modernization

  • Clean up imports of old modules by @sveinse in https://github.com/christiansandberg/canopen/pull/433
  • Rename Maps to PdoMaps and Map to PdoMap by @sveinse in https://github.com/christiansandberg/canopen/pull/431
  • Add meaningful "representation" formatter to object classes by @sveinse in https://github.com/christiansandberg/canopen/pull/432
  • Minor linting nitpicks and Python 2 removal by @sveinse in https://github.com/christiansandberg/canopen/pull/441
  • Fix "hearbeat" typos (fixes #389) by @acolomb in https://github.com/christiansandberg/canopen/pull/453
  • Cleanup f-strings, logging and formats by @sveinse in https://github.com/christiansandberg/canopen/pull/443
  • Modernize type annotations and fix some discrepancies by @acolomb in https://github.com/christiansandberg/canopen/pull/451
  • build: Modernize, use setuptools 69 by @acolomb in https://github.com/christiansandberg/canopen/pull/428

New Contributors

  • @vongostev made their first contribution in https://github.com/christiansandberg/canopen/pull/404
  • @raffi-g made their first contribution in https://github.com/christiansandberg/canopen/pull/406
  • @meifonglow made their first contribution in https://github.com/christiansandberg/canopen/pull/417
  • @hepr-skylotec made their first contribution in https://github.com/christiansandberg/canopen/pull/452
  • @thesummer made their first contribution in https://github.com/christiansandberg/canopen/pull/350
  • A big Thank You goes out to @sveinse and @friederschueler for their very active participation in getting this release into shape.
  • Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.2.0...v2.3.0
v2.2.0
christiansandbergchristiansandberg·2y ago·October 9, 2023
GitHub

📋 What's Changed

  • Fixed HighLimit and LowLimit for SIGNED values in EDS by @friederschueler in https://github.com/christiansandberg/canopen/pull/345
  • Update profiles.rst by @Alflanker94 in https://github.com/christiansandberg/canopen/pull/348
  • Change type() into isinstance() by @sveinse in https://github.com/christiansandberg/canopen/pull/357
  • Remove use of object by @sveinse in https://github.com/christiansandberg/canopen/pull/361
  • Use with contexts for open by @sveinse in https://github.com/christiansandberg/canopen/pull/356
  • Remove old callbacks if re-adding a node with the same id by @samsamfire in https://github.com/christiansandberg/canopen/pull/342
  • Import cleanups by @sveinse in https://github.com/christiansandberg/canopen/pull/362
  • Fix pytest on windows (#364) by @sveinse in https://github.com/christiansandberg/canopen/pull/365
  • + 6 more

New Contributors

  • @friederschueler made their first contribution in https://github.com/christiansandberg/canopen/pull/345
  • @Alflanker94 made their first contribution in https://github.com/christiansandberg/canopen/pull/348
  • @sveinse made their first contribution in https://github.com/christiansandberg/canopen/pull/357
  • @XorJoep made their first contribution in https://github.com/christiansandberg/canopen/pull/380
  • @marcovannoord made their first contribution in https://github.com/christiansandberg/canopen/pull/378
  • @ljungholm made their first contribution in https://github.com/christiansandberg/canopen/pull/395
  • Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.1.0...v2.2.0
v2.1.0
christiansandbergchristiansandberg·3y ago·January 3, 2023
GitHub

📋 What's Changed

  • Adding retransmit functionality to SDO block download by @samsamfire in https://github.com/christiansandberg/canopen/pull/324
  • Check data length SDO server by @samsamfire in https://github.com/christiansandberg/canopen/pull/338
  • Corrected casing of BaudRate_xx keywords in DeviceInfo section of EDS… by @Sudlav in https://github.com/christiansandberg/canopen/pull/303
  • Making sure the FileInfo section is preserved in EDS export by @Sudlav in https://github.com/christiansandberg/canopen/pull/304
  • network: fix broken link to python-can readthedocs in docstring by @clarkgwillison in https://github.com/christiansandberg/canopen/pull/319
  • Fix Typo by @mtru32 in https://github.com/christiansandberg/canopen/pull/332
  • Fix typo by @amaargiru in https://github.com/christiansandberg/canopen/pull/334

New Contributors

  • @Sudlav made their first contribution in https://github.com/christiansandberg/canopen/pull/303
  • @clarkgwillison made their first contribution in https://github.com/christiansandberg/canopen/pull/319
  • @samsamfire made their first contribution in https://github.com/christiansandberg/canopen/pull/324
  • @mtru32 made their first contribution in https://github.com/christiansandberg/canopen/pull/332
  • @amaargiru made their first contribution in https://github.com/christiansandberg/canopen/pull/334
  • Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.0.0...v2.1.0
v2.0.0
christiansandbergchristiansandberg·4y ago·February 12, 2022
GitHub

📋 What's Changed

  • Respect rtr_allowed in Pdo.Map.Save() by @skalkoto in https://github.com/christiansandberg/canopen/pull/228
  • Shutdown an already running periodic PDO before starting a new one by @ventussolus in https://github.com/christiansandberg/canopen/pull/230
  • added SDO Abort if a timeout occurs when sending a SDO request by @jnu144 in https://github.com/christiansandberg/canopen/pull/239
  • added argument for block transfer to enable/disable CRC Support by @jnu144 in https://github.com/christiansandberg/canopen/pull/240
  • Check writeability for SDO download on LocalNode by @semiversus in https://github.com/christiansandberg/canopen/pull/241
  • PDO: Allow subscription without calling read() or save() by @acolomb in https://github.com/christiansandberg/canopen/pull/253
  • Do not raise an exception in "_check_statusword_configured" just log … by @Lauszus in https://github.com/christiansandberg/canopen/pull/268
  • Export Eds or Dcf by @unsanded in https://github.com/christiansandberg/canopen/pull/254
  • + 4 more

📦 CiA 402

  • Thanks @acolomb and @af-silva.
  • Support for the CiA 402 device profile for "drives and motion control" was
  • overhauled in this release, bringing some backwards-incompatible changes.
  • The goal is to make the library more flexible and easier to use from an
  • application requiring DS402 functions, especially when controlling several
  • synchronized motors.
  • CAUTION: The following changes will likely require adaptation if you are
  • using the respective functions in your application code!
  • + 46 more

New Contributors

  • @skalkoto made their first contribution in https://github.com/christiansandberg/canopen/pull/228
  • @ventussolus made their first contribution in https://github.com/christiansandberg/canopen/pull/230
  • @jnu144 made their first contribution in https://github.com/christiansandberg/canopen/pull/239
  • @semiversus made their first contribution in https://github.com/christiansandberg/canopen/pull/241
  • @Lauszus made their first contribution in https://github.com/christiansandberg/canopen/pull/268
  • @walmis made their first contribution in https://github.com/christiansandberg/canopen/pull/287
  • Full Changelog: https://github.com/christiansandberg/canopen/compare/v1.2.1...v2.0.0
v1.2.1
christiansandbergchristiansandberg·5y ago·February 20, 2021
GitHub

📋 Changes

  • Fix when calling `stop_node_guarding()` twice (#224)
  • Fix support for hexadecimal node ID in DCF (#221)
  • Fix DefaultValue in EDS for OCTET_STRING and DOMAIN (#217)
  • Fix examples and documentation (#207)
v1.2.0
christiansandbergchristiansandberg·5y ago·November 9, 2020
GitHub

📋 Changes

  • Drop Python 2.7 support (although it may still work)
  • Avoid to raise an error if 'bus' or 'notifier' is None (#191)
  • Add Support for StorageLocation of EDS (#206)
  • Fix `import_from_node()` (#192)
  • Fix parsing of $NODEID to handle case differences and spaces (#180)
  • Add "NO MODE" as a valid mode for the 402 profile (#184)
  • Fix disabled RPDO usage in P402 (#200)
  • Use setuptools-scm for version
v1.1.0
christiansandbergchristiansandberg·6y ago·March 5, 2020
GitHub

📋 Changes

  • Added fallback in statusword property (#170)
  • DS402 refactoring (#172)
  • Allow for timestamps of other types than float (#173)
  • Do not fail when network.notifier has not been set
  • Add loading of DummyUsage definitions (#176)
v1.0.0
christiansandbergchristiansandberg·6y ago·October 3, 2019
GitHub

📋 Changes

  • Add callback for NMT slaves (#158)
  • More info in debug output when adding PDOs (#162)
  • Add unofficial support for using a custom CRC for block transfers (#157)
  • Fix SDO communication error printout (#160)
v0.9.0
christiansandbergchristiansandberg·7y ago·May 4, 2019
GitHub

📋 Changes

  • Basic support for 29-bit IDs (#148).
  • Support multiple SDO channels for a single node (#148).
  • Support toggle bit in received heartbeat messages (#150).
  • Fix bug with some manufacturer specific data types (#146).
  • Fix BOOLEAN support with bit mapped PDOs (#104).
  • Fix deprecation of collections module.
  • Bump python-can requirement to 3.0.
v0.8.1
christiansandbergchristiansandberg·7y ago·March 6, 2019
GitHub

📋 Changes

  • SDO data size truncated to length of the default value in the EDS (#135)
  • Prevent crash in `SyncProducer.stop()` if `Network.sync.start()` was not called (#128)
  • following the newly API of CIA402,do some change (#132)
v0.8.0
christiansandbergchristiansandberg·7y ago·November 21, 2018
GitHub

New features

  • Partial slave node support!
  • New way of accessing PDOs
  • Improved DS-402 profile support
  • LSS fast scan support
  • Node guarding support
Bug fix for PDO save()v0.7.1
christiansandbergchristiansandberg·7y ago·September 3, 2018
GitHub

📋 Changes

  • Fixes bug where `node.pdo.save()` will not work after mapping PDOs using OD names.
Compatibility releasev0.7.0
christiansandbergchristiansandberg·7y ago·August 5, 2018
GitHub

Improves compatibility with more "exotic" CANopen implementations (most notably Curtis drives).

Low level period transmits and morev0.6.0
christiansandbergchristiansandberg·8y ago·March 12, 2018
GitHub

📋 API changes:

  • EMCY resets are not handled differently than regular EMCY codes in callbacks and log anymore. Previously `None` was used to represent a reset in the callbacks and it was not added to the log. Now resets are represented as a EmcyError with code 0.

📦 Improvements:

  • Low level periodic transmission is used if the CAN interface and python-can supports it (currently supported with SocketCAN and IXXAT).
  • Bit mapping support for PDOs
  • EDS files with default value expressions containing $NODEID is supported
  • LSS improvements
  • If the CAN receive thread crashes, the exception will be raised next time a message is transmitted.
Bugfix EMCY resetv0.5.1
christiansandbergchristiansandberg·8y ago·October 19, 2017
GitHub

📋 Changes

  • Fix EMCY reset (discovered by @racerep, see #43)
First beta releasev0.5.0
christiansandbergchristiansandberg·8y ago·September 27, 2017
GitHub

📋 Changes

  • Experimental SDO block transfer (#28)
  • Open SDO variables as writable files
  • Time Stamp Object (TIME) support (#12)
  • CiA 402 device profile with Power State Engine (#16, #23)
  • LSS master support (#29)
  • Callbacks for EMCY
  • Change default to only attempt SDO operations once (#25)
  • Fix IXXAT issue (#24)
  • + 1 more
v0.4.0
christiansandbergchristiansandberg·9y ago·January 13, 2017
GitHub

📋 Changes

  • Improved documentation
  • Ability to open SDO variables as readable files
  • Callbacks for PDOs
  • Node scanner
First real releasev0.3.0
christiansandbergchristiansandberg·9y ago·November 13, 2016
GitHub

After a series of development uploads to PyPI this is a more proper release of 0.3.0.dev10.

Documentation improvementsv0.3.0.dev5Pre-release
christiansandbergchristiansandberg·9y ago·September 26, 2016
GitHub

📋 Changes

  • Some more documentation added (still far from complete)
  • Some EMCY handling improvements
First PyPI uploadv0.3.0.dev4Pre-release
christiansandbergchristiansandberg·9y ago·September 26, 2016
GitHub

First development release that is uploaded to PyPI.