CANConfigPython 0.1.0a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- canconfigpython-0.1.0a1/.github/workflows/linux-build.yml +32 -0
- canconfigpython-0.1.0a1/AGENTS.md +17 -0
- canconfigpython-0.1.0a1/DEVELOPING.md +156 -0
- canconfigpython-0.1.0a1/LICENSE +21 -0
- canconfigpython-0.1.0a1/MANIFEST.in +10 -0
- canconfigpython-0.1.0a1/PKG-INFO +197 -0
- canconfigpython-0.1.0a1/README.md +73 -0
- canconfigpython-0.1.0a1/THIRD_PARTY_NOTICES.md +69 -0
- canconfigpython-0.1.0a1/VALIDATION.md +65 -0
- canconfigpython-0.1.0a1/licenses/GPL-3.0.txt +674 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-LICENSE.txt +866 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.FDL.txt +450 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL2.txt +339 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3-EXCEPT.txt +704 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3.txt +674 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPLv3.txt +686 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.LGPL3.txt +165 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.LGPLv21.txt +514 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.LGPLv3.txt +175 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.PREVIEW.COMMERCIAL.txt +626 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__LICENSE.txt +32 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt +1164 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__load_functions_data.json.txt +1116 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__swizzle_format_data.json.txt +77 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt +692 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt +22 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__murmurhash__LICENSE.txt +2 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__double-conversion__LICENSE.txt +26 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__easing__easing.cpp.txt +670 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__easing__legal.qdoc.txt +35 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.c.txt +875 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.h.txt +66 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt +63 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt +151 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoll.c.txt +134 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoull.c.txt +112 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt +37 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt +61 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt +135 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt +14 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt +36 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz__COPYING.txt +24 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__libpng__LICENSE.txt +112 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.cpp.txt +265 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.h.txt +31 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.cpp.txt +247 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.h.txt +48 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__pcre__COPYING.txt +5 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__pcre__LICENCE.txt +93 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt +86 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha-private.h.txt +28 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha.h.txt +357 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt +583 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt +1034 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha1__sha1.cpp.txt +261 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt +555 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt +26 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt +728 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt +6 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt +46 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt +4 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt +524 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt +7 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt +512 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt +124 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt +82 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt +70 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt +266 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt +80 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__brg_endian.h.txt +142 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__xkbcommon__COPYING.txt +188 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.FDL.txt +450 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL2.txt +339 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3-EXCEPT.txt +704 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3.txt +674 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPLv2.txt +292 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPLv3.txt +686 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPL3.txt +165 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPLv21.txt +514 -0
- canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPLv3.txt +175 -0
- canconfigpython-0.1.0a1/licenses/gcc-COPYING.RUNTIME.txt +73 -0
- canconfigpython-0.1.0a1/licenses/gcc-COPYING3.LIB.txt +165 -0
- canconfigpython-0.1.0a1/licenses/gcc-COPYING3.txt +674 -0
- canconfigpython-0.1.0a1/licenses/linux-libc6-copyright.txt +529 -0
- canconfigpython-0.1.0a1/licenses/linux-libcap2-copyright.txt +112 -0
- canconfigpython-0.1.0a1/licenses/linux-libcom-err2-copyright.txt +403 -0
- canconfigpython-0.1.0a1/licenses/linux-libdouble-conversion3-copyright.txt +41 -0
- canconfigpython-0.1.0a1/licenses/linux-libgcc-s1-copyright.txt +1532 -0
- canconfigpython-0.1.0a1/licenses/linux-libglib2.0-0t64-copyright.txt +1250 -0
- canconfigpython-0.1.0a1/licenses/linux-libgssapi-krb5-2-copyright.txt +1374 -0
- canconfigpython-0.1.0a1/licenses/linux-libicu74-copyright.txt +49 -0
- canconfigpython-0.1.0a1/licenses/linux-libk5crypto3-copyright.txt +1374 -0
- canconfigpython-0.1.0a1/licenses/linux-libkeyutils1-copyright.txt +52 -0
- canconfigpython-0.1.0a1/licenses/linux-libkrb5-3-copyright.txt +1374 -0
- canconfigpython-0.1.0a1/licenses/linux-libkrb5support0-copyright.txt +1374 -0
- canconfigpython-0.1.0a1/licenses/linux-libpcre2-16-0-copyright.txt +122 -0
- canconfigpython-0.1.0a1/licenses/linux-libpcre2-8-0-copyright.txt +122 -0
- canconfigpython-0.1.0a1/licenses/linux-libqt5core5t64-copyright.txt +2932 -0
- canconfigpython-0.1.0a1/licenses/linux-libqt5network5t64-copyright.txt +2932 -0
- canconfigpython-0.1.0a1/licenses/linux-libqt5serialport5-copyright.txt +134 -0
- canconfigpython-0.1.0a1/licenses/linux-libstdc++6-copyright.txt +1532 -0
- canconfigpython-0.1.0a1/licenses/linux-libudev1-copyright.txt +287 -0
- canconfigpython-0.1.0a1/licenses/linux-libzstd1-copyright.txt +123 -0
- canconfigpython-0.1.0a1/licenses/linux-packages.json +102 -0
- canconfigpython-0.1.0a1/licenses/linux-zlib1g-copyright.txt +84 -0
- canconfigpython-0.1.0a1/licenses/mingw-w64-COPYING.MinGW-w64-runtime.txt.txt +240 -0
- canconfigpython-0.1.0a1/licenses/mingw-w64-COPYING.MinGW-w64.txt.txt +135 -0
- canconfigpython-0.1.0a1/licenses/mingw-w64-COPYING.txt +43 -0
- canconfigpython-0.1.0a1/licenses/qt-source-notices.json +278 -0
- canconfigpython-0.1.0a1/licenses/winpthreads-COPYING.txt +57 -0
- canconfigpython-0.1.0a1/native/PORTING.md +24 -0
- canconfigpython-0.1.0a1/native/common/qhdlcdatalink.cpp +1077 -0
- canconfigpython-0.1.0a1/native/common/qhdlcdatalink.h +207 -0
- canconfigpython-0.1.0a1/native/common/qringbuffer.h +134 -0
- canconfigpython-0.1.0a1/native/common/qrs232com.cpp +179 -0
- canconfigpython-0.1.0a1/native/common/qrs232com.h +24 -0
- canconfigpython-0.1.0a1/native/common/qserialdevicebase.cpp +47 -0
- canconfigpython-0.1.0a1/native/common/qserialdevicebase.h +50 -0
- canconfigpython-0.1.0a1/native/common/qsocketcom.cpp +279 -0
- canconfigpython-0.1.0a1/native/common/qsocketcom.h +32 -0
- canconfigpython-0.1.0a1/native/common/qtcpsocketsvr.cpp +27 -0
- canconfigpython-0.1.0a1/native/common/qtcpsocketsvr.h +21 -0
- canconfigpython-0.1.0a1/native/common/qudpsocketsvr.cpp +204 -0
- canconfigpython-0.1.0a1/native/common/qudpsocketsvr.h +52 -0
- canconfigpython-0.1.0a1/native/common/qudpsocketwii.cpp +58 -0
- canconfigpython-0.1.0a1/native/common/qudpsocketwii.h +38 -0
- canconfigpython-0.1.0a1/native/console/CANConfigConsole.pro +13 -0
- canconfigpython-0.1.0a1/native/console/console_config.cpp +531 -0
- canconfigpython-0.1.0a1/native/console/console_config.h +73 -0
- canconfigpython-0.1.0a1/native/console/console_config_test.cpp +309 -0
- canconfigpython-0.1.0a1/native/console/console_config_test.pro +7 -0
- canconfigpython-0.1.0a1/native/console/console_fake_device.h +207 -0
- canconfigpython-0.1.0a1/native/console/console_fake_driver.cpp +47 -0
- canconfigpython-0.1.0a1/native/console/console_fake_driver.pro +10 -0
- canconfigpython-0.1.0a1/native/console/console_firmware.cpp +249 -0
- canconfigpython-0.1.0a1/native/console/console_firmware.h +32 -0
- canconfigpython-0.1.0a1/native/console/console_firmware_test.cpp +145 -0
- canconfigpython-0.1.0a1/native/console/console_firmware_test.pro +6 -0
- canconfigpython-0.1.0a1/native/console/main.cpp +345 -0
- canconfigpython-0.1.0a1/native/console/test_console_cli.py +543 -0
- canconfigpython-0.1.0a1/native/driver/WIICAN.pro +18 -0
- canconfigpython-0.1.0a1/native/driver/configuration_response_p.h +38 -0
- canconfigpython-0.1.0a1/native/driver/wiican.cpp +3318 -0
- canconfigpython-0.1.0a1/native/driver/wiican.h +247 -0
- canconfigpython-0.1.0a1/native/driver/wiican_driver.cpp +296 -0
- canconfigpython-0.1.0a1/native/driver/wiican_driver2.h +619 -0
- canconfigpython-0.1.0a1/native/driver/wiican_global.h +12 -0
- canconfigpython-0.1.0a1/native/driver/wiican_server.cpp +123 -0
- canconfigpython-0.1.0a1/native/driver/wiican_server.h +40 -0
- canconfigpython-0.1.0a1/native/shared/Ymodem.cpp +1791 -0
- canconfigpython-0.1.0a1/native/shared/Ymodem.h +143 -0
- canconfigpython-0.1.0a1/native/shared/configuration_backup_p.h +412 -0
- canconfigpython-0.1.0a1/native/shared/fw_update_port_tracker.cpp +661 -0
- canconfigpython-0.1.0a1/native/shared/fw_update_port_tracker.h +148 -0
- canconfigpython-0.1.0a1/native/upstream.json +154 -0
- canconfigpython-0.1.0a1/pyproject.toml +44 -0
- canconfigpython-0.1.0a1/setup.cfg +4 -0
- canconfigpython-0.1.0a1/setup.py +36 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/PKG-INFO +197 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/SOURCES.txt +240 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/dependency_links.txt +1 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/entry_points.txt +3 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/requires.txt +6 -0
- canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/top_level.txt +1 -0
- canconfigpython-0.1.0a1/src/canconfigpython/__init__.py +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/__main__.py +3 -0
- canconfigpython-0.1.0a1/src/canconfigpython/cli.py +111 -0
- canconfigpython-0.1.0a1/src/canconfigpython/client.py +243 -0
- canconfigpython-0.1.0a1/src/canconfigpython/commands.py +57 -0
- canconfigpython-0.1.0a1/src/canconfigpython/errors.py +19 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/docs/native-source.tar.gz +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/docs/user-guide.en.md +274 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/docs/user-guide.zh-CN.md +265 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/SKILL.md +71 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/agents/openai.yaml +4 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/changes.schema.json +832 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/bridge_dual_rates.json +18 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/bridge_mapping.json +13 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_115200_8n1.json +10 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_format_crc.json +8 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_gap.json +8 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_transparent_id.json +10 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_1m.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_500k.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_adaptive_single.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_return_manual.json +22 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_silent_adaptive_option.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_blacklist.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_mask.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_range.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_h_external.json +13 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_input_filter.json +13 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_l_external.json +13 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_mapping.json +46 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_routing.json +8 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.en.md +55 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.json +661 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.zh-CN.md +55 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/adaptive_mixed.json +8 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/hub_missing_ps.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/restricted_inheritance.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/short_user_data.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/string_numeric_id.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/unknown_field.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/unsupported_adaptive.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/wrong_uid.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/rpt_adaptive_all.json +12 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/rpt_silent.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/assets/examples/user_data.json +7 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources/skill/canconfig-python/references/operations.md +68 -0
- canconfigpython-0.1.0a1/src/canconfigpython/resources.py +17 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5Core.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5Network.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5SerialPort.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/WIICAN.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/canconfigconsole.exe +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/libgcc_s_dw2-1.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/libstdc++-6.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/libwinpthread-1.dll +0 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime/manifest.json +19 -0
- canconfigpython-0.1.0a1/src/canconfigpython/runtime.py +61 -0
- canconfigpython-0.1.0a1/tests/conftest.py +45 -0
- canconfigpython-0.1.0a1/tests/test_cli.py +52 -0
- canconfigpython-0.1.0a1/tests/test_client.py +169 -0
- canconfigpython-0.1.0a1/tests/test_qt_free_root.py +126 -0
- canconfigpython-0.1.0a1/tests/test_remote_build.py +129 -0
- canconfigpython-0.1.0a1/tools/build_linux.sh +17 -0
- canconfigpython-0.1.0a1/tools/build_linux_remote.py +314 -0
- canconfigpython-0.1.0a1/tools/build_native.py +156 -0
- canconfigpython-0.1.0a1/tools/bundle_source.py +52 -0
- canconfigpython-0.1.0a1/tools/check_wheel.py +49 -0
- canconfigpython-0.1.0a1/tools/collect_linux_licenses.py +43 -0
- canconfigpython-0.1.0a1/tools/collect_windows_licenses.py +86 -0
- canconfigpython-0.1.0a1/tools/import_sources.py +41 -0
- canconfigpython-0.1.0a1/tools/port_snapshot.py +163 -0
- canconfigpython-0.1.0a1/tools/prepare_qt_free_root.py +166 -0
- canconfigpython-0.1.0a1/tools/publish_release.py +93 -0
- canconfigpython-0.1.0a1/tools/refresh_wheel_resources.py +74 -0
- canconfigpython-0.1.0a1/tools/rehash_runtime.py +19 -0
- canconfigpython-0.1.0a1/tools/repair_linux_wheel.py +47 -0
- canconfigpython-0.1.0a1/tools/smoke_installed.py +92 -0
- canconfigpython-0.1.0a1/tools/verify_linux_remote.py +124 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Linux build and package checks
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
jobs:
|
|
9
|
+
linux:
|
|
10
|
+
runs-on: ubuntu-22.04
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: actions/setup-python@v5
|
|
14
|
+
with:
|
|
15
|
+
python-version: '3.12'
|
|
16
|
+
- name: Install Qt build dependencies
|
|
17
|
+
run: sudo apt-get update && sudo apt-get install -y qtbase5-dev libqt5serialport5-dev patchelf
|
|
18
|
+
- name: Install Python build tools
|
|
19
|
+
run: python -m pip install build setuptools wheel pytest twine auditwheel PyYAML
|
|
20
|
+
- name: Build and test Linux runtime
|
|
21
|
+
run: bash tools/build_linux.sh
|
|
22
|
+
- name: Install without system Qt
|
|
23
|
+
run: |
|
|
24
|
+
docker run --rm -v "$PWD:/io:ro" python:3.12-slim-bookworm sh -c \
|
|
25
|
+
'python -m pip install /io/dist/linux/*.whl && cd /tmp && python /io/tools/smoke_installed.py'
|
|
26
|
+
- uses: actions/upload-artifact@v4
|
|
27
|
+
with:
|
|
28
|
+
name: linux-wheel-and-validation
|
|
29
|
+
path: |
|
|
30
|
+
dist/linux/*.whl
|
|
31
|
+
build/native/*/test.log
|
|
32
|
+
licenses/linux-*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# CANConfigPython development
|
|
2
|
+
|
|
3
|
+
- This repository is a Python subprocess wrapper and a pinned native source snapshot.
|
|
4
|
+
Do not introduce a second Python serial protocol implementation.
|
|
5
|
+
- Do not modify sibling GUI/Console/driver repositories as a side effect of work here.
|
|
6
|
+
- Read native/upstream.json for provenance and native/PORTING.md for the local delta.
|
|
7
|
+
- Never test on physical hardware unless the user authorized the device and operation.
|
|
8
|
+
Use the isolated fake driver in build/native/fake for process integration tests.
|
|
9
|
+
- Preserve result envelope schema_version=1 and backend exit codes 0–12.
|
|
10
|
+
Missing final results after hardware execution are unknown; never auto-retry/rollback.
|
|
11
|
+
- Never log passwords or place them in arguments. Keep JSON stdout UTF-8.
|
|
12
|
+
- Build dependencies with tools/build_native.py; do not ship fake drivers.
|
|
13
|
+
A platform wheel must contain its runtime and notices, never be tagged "any".
|
|
14
|
+
- Run native unit tests, Python tests and installed-wheel smoke checks after changes.
|
|
15
|
+
Record simulated, platform and physical-device verification separately in VALIDATION.md.
|
|
16
|
+
- Keep bundled guides and Skill synchronized with observable CLI behavior.
|
|
17
|
+
User authorization persists; do not add repetitive confirmation gates.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Build and release
|
|
2
|
+
|
|
3
|
+
Runtime protocol: Console 2.3, bridge API 1, JSON schema_version=1.
|
|
4
|
+
Python dependencies at runtime: standard library only. Native build: Qt 5 Core,
|
|
5
|
+
Network, SerialPort, Test, qmake, make and a C++11 compiler.
|
|
6
|
+
|
|
7
|
+
## Windows
|
|
8
|
+
|
|
9
|
+
The tested toolchain is Qt 5.7.1 MinGW 5.3 32-bit. It builds an x86 subprocess,
|
|
10
|
+
usable by x86 and x64 Python. From a project-local Python development environment:
|
|
11
|
+
|
|
12
|
+
~~~powershell
|
|
13
|
+
python -m pip install build setuptools wheel pytest twine PyYAML
|
|
14
|
+
python tools/build_native.py --qmake D:\Qt\Qt5.7.1\5.7\mingw53_32\bin\qmake.exe --compiler-bin D:\Qt\Qt5.7.1\Tools\mingw530_32\bin
|
|
15
|
+
python tools/collect_windows_licenses.py
|
|
16
|
+
python -m pytest -q
|
|
17
|
+
python tools/bundle_source.py
|
|
18
|
+
python -m build --wheel --sdist --no-isolation
|
|
19
|
+
$env:CANCONFIG_WHEEL_PLATFORM = 'win_amd64'
|
|
20
|
+
try { python -m build --wheel --no-isolation }
|
|
21
|
+
finally { Remove-Item Env:CANCONFIG_WHEEL_PLATFORM -ErrorAction SilentlyContinue }
|
|
22
|
+
~~~
|
|
23
|
+
|
|
24
|
+
The default wheel is win32. Never merely rename a wheel; its internal tags must
|
|
25
|
+
match. The source archive includes this platform's staged runtime for matching
|
|
26
|
+
source installs; rebuild/stage the runtime on the other platform before building.
|
|
27
|
+
Source distributions require a supported native toolchain to create a runtime
|
|
28
|
+
when not already staged. Do not upload a generic "any" wheel.
|
|
29
|
+
|
|
30
|
+
To run full native process acceptance, put Qt/compiler bin directories on PATH for
|
|
31
|
+
that terminal, then:
|
|
32
|
+
~~~console
|
|
33
|
+
python native/console/test_console_cli.py src/canconfigpython/runtime/canconfigconsole.exe build/native/fake/WIICAN.dll
|
|
34
|
+
~~~
|
|
35
|
+
The test copies the executable and fake driver into an isolated directory. No
|
|
36
|
+
physical device is selected. Never ship the fake driver.
|
|
37
|
+
|
|
38
|
+
## Linux x86_64
|
|
39
|
+
|
|
40
|
+
On Debian/Ubuntu, provision build dependencies in the dedicated build environment:
|
|
41
|
+
~~~bash
|
|
42
|
+
sudo apt-get update
|
|
43
|
+
sudo apt-get install -y build-essential qtbase5-dev libqt5serialport5-dev patchelf python3-venv
|
|
44
|
+
python3 -m venv .venv
|
|
45
|
+
. .venv/bin/activate
|
|
46
|
+
python -m pip install build setuptools wheel pytest twine auditwheel PyYAML
|
|
47
|
+
bash tools/build_linux.sh
|
|
48
|
+
~~~
|
|
49
|
+
|
|
50
|
+
The build preserves qmake launcher symlinks (including Ubuntu/Debian qtchooser),
|
|
51
|
+
selects Qt 5 and checks its version before compilation.
|
|
52
|
+
The script compiles and tests native code, resolves the non-glibc dependency closure,
|
|
53
|
+
collects distro license/source records, tests Python and native subprocess behavior,
|
|
54
|
+
builds a Linux wheel, audits/repairs it and refreshes runtime hashes/RECORD.
|
|
55
|
+
Auditwheel limitations around dlopen are handled by explicitly including WIICAN
|
|
56
|
+
and traversing its dependency closure before repair. It does not justify unsupported
|
|
57
|
+
glibc tags; an incompatible baseline fails the build.
|
|
58
|
+
|
|
59
|
+
The GitHub Actions workflow provides a Linux build plus an installed-wheel check
|
|
60
|
+
inside a fresh Python Debian container without Qt installed. It only builds/uploads
|
|
61
|
+
CI artifacts, not PyPI. Configure it in the chosen repository and inspect the actual
|
|
62
|
+
run before marking Linux verified. ARM64/musl are not first-release targets.
|
|
63
|
+
|
|
64
|
+
## Build on an existing Linux SSH host
|
|
65
|
+
|
|
66
|
+
The optional helper uses one SSH connection for upload, build, checks and download.
|
|
67
|
+
Install its development-only dependency and provide an existing verified host-key file:
|
|
68
|
+
|
|
69
|
+
~~~powershell
|
|
70
|
+
python -m pip install "paramiko>=3.4"
|
|
71
|
+
python tools/build_linux_remote.py --host HOST --user USER --known-hosts PATH_TO_KNOWN_HOSTS --identity PATH_TO_EXISTING_KEY --check-only
|
|
72
|
+
python tools/build_linux_remote.py --host HOST --user USER --known-hosts PATH_TO_KNOWN_HOSTS --identity PATH_TO_EXISTING_KEY
|
|
73
|
+
~~~
|
|
74
|
+
|
|
75
|
+
For password authentication, run in your own terminal and replace the identity
|
|
76
|
+
option with --password-prompt. Input is hidden; passwords are never arguments,
|
|
77
|
+
logs or files. The helper rejects unknown/changed host keys and does not modify
|
|
78
|
+
authorized_keys. Verify a host key separately before adding it to known_hosts.
|
|
79
|
+
|
|
80
|
+
Auto mode uses Docker when the SSH user already has access: compilation runs in
|
|
81
|
+
Ubuntu 22.04 and installation is checked in a fresh Python Debian container without
|
|
82
|
+
system Qt. Otherwise it uses existing host build dependencies and an isolated venv;
|
|
83
|
+
the default only reports missing packages. Add --install-build-deps to install the
|
|
84
|
+
listed build packages on Ubuntu/Debian via apt and sudo. This option cannot be
|
|
85
|
+
combined with --check-only. If sudo requires a password, a second hidden prompt
|
|
86
|
+
appears in your local terminal; the password travels only through SSH stdin and
|
|
87
|
+
is never saved. No Docker daemon or SSH key is installed. Use --backend to select
|
|
88
|
+
docker or host explicitly. Host mode requires Python 3.10+ and the dependencies above.
|
|
89
|
+
Its isolated-venv check does not replace the Qt-free installation acceptance criterion.
|
|
90
|
+
When Docker is unavailable, tools/verify_linux_remote.py checks an existing wheel
|
|
91
|
+
in a separate filesystem prepared by tools/prepare_qt_free_root.py. It copies the
|
|
92
|
+
system Python runtime and its dependencies, installs only the exact wheel, adds
|
|
93
|
+
only the native runtime's OS-provided glibc dependencies (including libresolv), and
|
|
94
|
+
asserts that all Qt/WIICAN libraries are inside that installed wheel. It enters
|
|
95
|
+
the filesystem via sudo/chroot, drops to the build user's numeric UID/GID before
|
|
96
|
+
executing tests, mounts no host directories and exposes no device nodes. No host
|
|
97
|
+
Qt package is changed. This verifies bundled dependencies on the host's glibc;
|
|
98
|
+
it does not verify older distributions or constitute a security sandbox.
|
|
99
|
+
The seven installed checks and the verified wheel SHA-256 are downloaded to
|
|
100
|
+
validation/linux/clean-install.json, qt-free-smoke.json and qt-free-root.json.
|
|
101
|
+
Before the CLI checks, the isolated ELF loader resolves every native file with
|
|
102
|
+
--list. Its results are retained in qt-free-elf-check.json even on failure;
|
|
103
|
+
the root inventory is downloaded before running tests. Non-glibc dependencies
|
|
104
|
+
resolved outside the bundled runtime fail preparation instead of being silently
|
|
105
|
+
copied from the host.
|
|
106
|
+
|
|
107
|
+
Each run creates a separate canconfigpython-build-* directory in the remote home.
|
|
108
|
+
Linux wheels are downloaded to dist/linux with transfer hashes checked. Logs and
|
|
109
|
+
status are in build/linux-remote.log and build/linux-remote-state.json; native test
|
|
110
|
+
logs/source notices are in validation/linux. No hardware commands or PyPI uploads
|
|
111
|
+
are executed. On interruption, inspect the retained remote build/container before
|
|
112
|
+
restarting. A failed build may leave only remote logs; its path remains in the state.
|
|
113
|
+
|
|
114
|
+
## Validate a release
|
|
115
|
+
|
|
116
|
+
~~~console
|
|
117
|
+
python tools/check_wheel.py dist/WHEEL_FILENAME.whl
|
|
118
|
+
python -m twine check dist/*
|
|
119
|
+
~~~
|
|
120
|
+
|
|
121
|
+
Install each platform wheel in a clean environment outside the source directory.
|
|
122
|
+
Run version, doctor, schema, docs/skill export and offline firmware preflight.
|
|
123
|
+
The installed interpreter can run `python tools/smoke_installed.py --report REPORT.json`
|
|
124
|
+
to check those seven offline paths from a temporary working directory.
|
|
125
|
+
Verify upgrade/uninstall behavior and rerun relevant fake-driver tests for changes.
|
|
126
|
+
Physical configuration/password/firmware operations require explicit device scope
|
|
127
|
+
and separate hardware records. Update VALIDATION.md with actual evidence.
|
|
128
|
+
|
|
129
|
+
Do not bundle compiler tools, compiled fake drivers, real credentials, build logs, caches,
|
|
130
|
+
test firmware, local SSH host-key state or downloaded source archives inside wheels.
|
|
131
|
+
Native source/build scripts are in the sdist and the compact corresponding-source
|
|
132
|
+
archive in every wheel. Run tools/bundle_source.py after source changes and before
|
|
133
|
+
building: Console includes GPL-3.0-or-later Ymodem, while Python code remains MIT.
|
|
134
|
+
|
|
135
|
+
## Publish
|
|
136
|
+
|
|
137
|
+
PyPI account credentials are not stored in this repository.
|
|
138
|
+
Once both required platforms and release criteria are verified, upload the exact
|
|
139
|
+
checked artifacts using your existing account:
|
|
140
|
+
|
|
141
|
+
~~~console
|
|
142
|
+
python -m twine upload dist/canconfigpython-0.1.0a1-*.whl dist/canconfigpython-0.1.0a1.tar.gz
|
|
143
|
+
~~~
|
|
144
|
+
|
|
145
|
+
A Linux wheel may be in dist/linux; include its explicit path when uploading.
|
|
146
|
+
The local release helper tools/publish_release.py checks build/release-manifest.json,
|
|
147
|
+
all artifact hashes and metadata, and the exact Linux wheel's Qt-free acceptance
|
|
148
|
+
record before calling Twine. --check-only verifies files/metadata without uploading.
|
|
149
|
+
After uploading, it compares PyPI's reported filenames and SHA-256 values with the
|
|
150
|
+
manifest and writes validation/pypi-release.json. It refuses a preexisting filename
|
|
151
|
+
with a different digest; an interrupted partial upload can resume only matching files.
|
|
152
|
+
Enter the token via Twine's hidden prompt or a locally configured credential store.
|
|
153
|
+
Never paste tokens in chat or commit .pypirc. A configured PyPI Trusted Publisher
|
|
154
|
+
is another option; it must match the chosen repository/workflow. Version uploads
|
|
155
|
+
are immutable, so do not upload a partially validated replacement under the same
|
|
156
|
+
version. No upload is performed by build_linux.sh or the CI build workflow.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CANConfigPython contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
include LICENSE THIRD_PARTY_NOTICES.md README.md
|
|
2
|
+
include AGENTS.md DEVELOPING.md VALIDATION.md
|
|
3
|
+
recursive-include licenses *
|
|
4
|
+
recursive-include native *.cpp *.h *.pro *.pri *.json *.md *.py
|
|
5
|
+
recursive-include tools *.py *.sh
|
|
6
|
+
recursive-include tests *.py
|
|
7
|
+
recursive-include src/canconfigpython/resources *
|
|
8
|
+
recursive-include src/canconfigpython/runtime *
|
|
9
|
+
recursive-include .github *.yml
|
|
10
|
+
global-exclude __pycache__ *.pyc
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: CANConfigPython
|
|
3
|
+
Version: 0.1.0a1
|
|
4
|
+
Summary: CAN device configuration CLI using a bundled Qt/WIICAN console backend
|
|
5
|
+
Author: CANConfigPython contributors
|
|
6
|
+
License: Python wrapper: MIT; bundled Console: GPL-3.0-or-later; other components: see THIRD_PARTY_NOTICES.md
|
|
7
|
+
Keywords: can,canconfig,canhub,serial
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Topic :: System :: Hardware
|
|
14
|
+
Requires-Python: >=3.8
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
License-File: THIRD_PARTY_NOTICES.md
|
|
18
|
+
License-File: licenses\GPL-3.0.txt
|
|
19
|
+
License-File: licenses\Qt-5.7.1-LICENSE.txt
|
|
20
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.FDL.txt
|
|
21
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL2.txt
|
|
22
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL3-EXCEPT.txt
|
|
23
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL3.txt
|
|
24
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPLv3.txt
|
|
25
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPL3.txt
|
|
26
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPLv21.txt
|
|
27
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPLv3.txt
|
|
28
|
+
License-File: licenses\Qt-5.7.1-qtbase-LICENSE.PREVIEW.COMMERCIAL.txt
|
|
29
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__LICENSE.txt
|
|
30
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt
|
|
31
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__load_functions_data.json.txt
|
|
32
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__swizzle_format_data.json.txt
|
|
33
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt
|
|
34
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt
|
|
35
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__murmurhash__LICENSE.txt
|
|
36
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__double-conversion__LICENSE.txt
|
|
37
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__easing__easing.cpp.txt
|
|
38
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__easing__legal.qdoc.txt
|
|
39
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.c.txt
|
|
40
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.h.txt
|
|
41
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt
|
|
42
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt
|
|
43
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoll.c.txt
|
|
44
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoull.c.txt
|
|
45
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt
|
|
46
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt
|
|
47
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt
|
|
48
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt
|
|
49
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt
|
|
50
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__harfbuzz__COPYING.txt
|
|
51
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__libpng__LICENSE.txt
|
|
52
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md4__md4.cpp.txt
|
|
53
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md4__md4.h.txt
|
|
54
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md5__md5.cpp.txt
|
|
55
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md5__md5.h.txt
|
|
56
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__pcre__COPYING.txt
|
|
57
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__pcre__LICENCE.txt
|
|
58
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt
|
|
59
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha-private.h.txt
|
|
60
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha.h.txt
|
|
61
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt
|
|
62
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt
|
|
63
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha1__sha1.cpp.txt
|
|
64
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt
|
|
65
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt
|
|
66
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt
|
|
67
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt
|
|
68
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt
|
|
69
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt
|
|
70
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt
|
|
71
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt
|
|
72
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt
|
|
73
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt
|
|
74
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt
|
|
75
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt
|
|
76
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt
|
|
77
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt
|
|
78
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__brg_endian.h.txt
|
|
79
|
+
License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__xkbcommon__COPYING.txt
|
|
80
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.FDL.txt
|
|
81
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL2.txt
|
|
82
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL3-EXCEPT.txt
|
|
83
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL3.txt
|
|
84
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPLv2.txt
|
|
85
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPLv3.txt
|
|
86
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPL3.txt
|
|
87
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPLv21.txt
|
|
88
|
+
License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPLv3.txt
|
|
89
|
+
License-File: licenses\gcc-COPYING.RUNTIME.txt
|
|
90
|
+
License-File: licenses\gcc-COPYING3.LIB.txt
|
|
91
|
+
License-File: licenses\gcc-COPYING3.txt
|
|
92
|
+
License-File: licenses\linux-libc6-copyright.txt
|
|
93
|
+
License-File: licenses\linux-libcap2-copyright.txt
|
|
94
|
+
License-File: licenses\linux-libcom-err2-copyright.txt
|
|
95
|
+
License-File: licenses\linux-libdouble-conversion3-copyright.txt
|
|
96
|
+
License-File: licenses\linux-libgcc-s1-copyright.txt
|
|
97
|
+
License-File: licenses\linux-libglib2.0-0t64-copyright.txt
|
|
98
|
+
License-File: licenses\linux-libgssapi-krb5-2-copyright.txt
|
|
99
|
+
License-File: licenses\linux-libicu74-copyright.txt
|
|
100
|
+
License-File: licenses\linux-libk5crypto3-copyright.txt
|
|
101
|
+
License-File: licenses\linux-libkeyutils1-copyright.txt
|
|
102
|
+
License-File: licenses\linux-libkrb5-3-copyright.txt
|
|
103
|
+
License-File: licenses\linux-libkrb5support0-copyright.txt
|
|
104
|
+
License-File: licenses\linux-libpcre2-16-0-copyright.txt
|
|
105
|
+
License-File: licenses\linux-libpcre2-8-0-copyright.txt
|
|
106
|
+
License-File: licenses\linux-libqt5core5t64-copyright.txt
|
|
107
|
+
License-File: licenses\linux-libqt5network5t64-copyright.txt
|
|
108
|
+
License-File: licenses\linux-libqt5serialport5-copyright.txt
|
|
109
|
+
License-File: licenses\linux-libstdc++6-copyright.txt
|
|
110
|
+
License-File: licenses\linux-libudev1-copyright.txt
|
|
111
|
+
License-File: licenses\linux-libzstd1-copyright.txt
|
|
112
|
+
License-File: licenses\linux-packages.json
|
|
113
|
+
License-File: licenses\linux-zlib1g-copyright.txt
|
|
114
|
+
License-File: licenses\mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
|
|
115
|
+
License-File: licenses\mingw-w64-COPYING.MinGW-w64.txt.txt
|
|
116
|
+
License-File: licenses\mingw-w64-COPYING.txt
|
|
117
|
+
License-File: licenses\qt-source-notices.json
|
|
118
|
+
License-File: licenses\winpthreads-COPYING.txt
|
|
119
|
+
Provides-Extra: dev
|
|
120
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
121
|
+
Requires-Dist: build>=1; extra == "dev"
|
|
122
|
+
Requires-Dist: twine>=5; extra == "dev"
|
|
123
|
+
Requires-Dist: PyYAML>=6; extra == "dev"
|
|
124
|
+
|
|
125
|
+
# CANConfigPython
|
|
126
|
+
|
|
127
|
+
Python CLI and API for CANHub, CANFB, CANBridge, CANRPT and CANCOM configuration.
|
|
128
|
+
The package runs a bundled Qt console subprocess, which uses WIICAN. It does not
|
|
129
|
+
require a GUI installation or a separately installed Qt runtime.
|
|
130
|
+
|
|
131
|
+
**0.1.0a1 is a prerelease.** Windows wheels are tested with Python 3.8 x86 and
|
|
132
|
+
Python 3.12 x64; both run the bundled x86 runtime as a separate process.
|
|
133
|
+
The Linux x86_64 wheel requires glibc 2.38 or later and was built/tested on
|
|
134
|
+
Ubuntu 24.04 with Python 3.12 and Qt 5.15.13. The bundled runtime contains Console,
|
|
135
|
+
WIICAN and the required Qt/shared libraries. Consult VALIDATION.md and the release
|
|
136
|
+
evidence for installation checks. ARM64, macOS and musl are not supported.
|
|
137
|
+
|
|
138
|
+
~~~text
|
|
139
|
+
canconfig / Python Client
|
|
140
|
+
-> CANConfigConsole.exe + WIICAN.dll (Windows)
|
|
141
|
+
-> CANConfigConsole + libWIICAN.so.1 (Linux)
|
|
142
|
+
~~~
|
|
143
|
+
|
|
144
|
+
## First use
|
|
145
|
+
|
|
146
|
+
Until the project is uploaded, install the supplied local wheel:
|
|
147
|
+
~~~console
|
|
148
|
+
python -m pip install path/to/canconfigpython-0.1.0a1-py3-none-win_amd64.whl
|
|
149
|
+
canconfig --version --json
|
|
150
|
+
canconfig doctor --json
|
|
151
|
+
canconfig docs export --output ./canconfig-docs
|
|
152
|
+
canconfig skill export --output ./canconfig-skill
|
|
153
|
+
~~~
|
|
154
|
+
|
|
155
|
+
After publication, use `python -m pip install --pre CANConfigPython`.
|
|
156
|
+
`doctor`, `schema`, `validate` and firmware `--dry-run` do not open hardware.
|
|
157
|
+
Configuration `info` and `--dry-run` do connect and may change the device run mode.
|
|
158
|
+
|
|
159
|
+
- [中文使用说明](src/canconfigpython/resources/docs/user-guide.zh-CN.md)
|
|
160
|
+
- [English user guide](src/canconfigpython/resources/docs/user-guide.en.md)
|
|
161
|
+
- [Agent Skill](src/canconfigpython/resources/skill/canconfig-python/SKILL.md)
|
|
162
|
+
- [Build and release](DEVELOPING.md)
|
|
163
|
+
- [Validation record](VALIDATION.md)
|
|
164
|
+
- [Third-party notices](THIRD_PARTY_NOTICES.md)
|
|
165
|
+
|
|
166
|
+
## Python API
|
|
167
|
+
|
|
168
|
+
~~~python
|
|
169
|
+
from canconfigpython import Client, ConfigError
|
|
170
|
+
|
|
171
|
+
client = Client()
|
|
172
|
+
try:
|
|
173
|
+
result = client.execute("info", port="COM3") # Linux: /dev/serial/by-id/...
|
|
174
|
+
except ConfigError as error:
|
|
175
|
+
print(error.code, error.message)
|
|
176
|
+
else:
|
|
177
|
+
print(result["exit_code"], result["effects"], result["verification"])
|
|
178
|
+
~~~
|
|
179
|
+
|
|
180
|
+
`execute(command, password=..., new_password=..., **options)` uses snake_case options
|
|
181
|
+
such as `expect_uid`, `dry_run`, and `timeout_ms`; its command names match the CLI.
|
|
182
|
+
Provide passwords from a secret store or prompt, not source code. Backend failures
|
|
183
|
+
return the full result; callers must check `ok` and `exit_code`.
|
|
184
|
+
Local validation/runtime errors raise `ConfigError`. The wrapper does not retry.
|
|
185
|
+
|
|
186
|
+
The Python layer uses only the standard library. Python 3.8+ is supported by syntax;
|
|
187
|
+
see the validation record for interpreter versions actually tested.
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
The Python wrapper and project additions are MIT. The bundled Console incorporates
|
|
192
|
+
XinLi's GPL-3.0-or-later Ymodem implementation and is distributed under that license.
|
|
193
|
+
Its corresponding project source is included in every wheel as
|
|
194
|
+
`canconfigpython/resources/docs/native-source.tar.gz` (also exported by `canconfig docs export`).
|
|
195
|
+
Qt and compiler runtime components retain their own licenses. Materials and rebuild instructions are in
|
|
196
|
+
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). A runtime manifest checks bundle
|
|
197
|
+
consistency; it is not a publisher signature.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# CANConfigPython
|
|
2
|
+
|
|
3
|
+
Python CLI and API for CANHub, CANFB, CANBridge, CANRPT and CANCOM configuration.
|
|
4
|
+
The package runs a bundled Qt console subprocess, which uses WIICAN. It does not
|
|
5
|
+
require a GUI installation or a separately installed Qt runtime.
|
|
6
|
+
|
|
7
|
+
**0.1.0a1 is a prerelease.** Windows wheels are tested with Python 3.8 x86 and
|
|
8
|
+
Python 3.12 x64; both run the bundled x86 runtime as a separate process.
|
|
9
|
+
The Linux x86_64 wheel requires glibc 2.38 or later and was built/tested on
|
|
10
|
+
Ubuntu 24.04 with Python 3.12 and Qt 5.15.13. The bundled runtime contains Console,
|
|
11
|
+
WIICAN and the required Qt/shared libraries. Consult VALIDATION.md and the release
|
|
12
|
+
evidence for installation checks. ARM64, macOS and musl are not supported.
|
|
13
|
+
|
|
14
|
+
~~~text
|
|
15
|
+
canconfig / Python Client
|
|
16
|
+
-> CANConfigConsole.exe + WIICAN.dll (Windows)
|
|
17
|
+
-> CANConfigConsole + libWIICAN.so.1 (Linux)
|
|
18
|
+
~~~
|
|
19
|
+
|
|
20
|
+
## First use
|
|
21
|
+
|
|
22
|
+
Until the project is uploaded, install the supplied local wheel:
|
|
23
|
+
~~~console
|
|
24
|
+
python -m pip install path/to/canconfigpython-0.1.0a1-py3-none-win_amd64.whl
|
|
25
|
+
canconfig --version --json
|
|
26
|
+
canconfig doctor --json
|
|
27
|
+
canconfig docs export --output ./canconfig-docs
|
|
28
|
+
canconfig skill export --output ./canconfig-skill
|
|
29
|
+
~~~
|
|
30
|
+
|
|
31
|
+
After publication, use `python -m pip install --pre CANConfigPython`.
|
|
32
|
+
`doctor`, `schema`, `validate` and firmware `--dry-run` do not open hardware.
|
|
33
|
+
Configuration `info` and `--dry-run` do connect and may change the device run mode.
|
|
34
|
+
|
|
35
|
+
- [中文使用说明](src/canconfigpython/resources/docs/user-guide.zh-CN.md)
|
|
36
|
+
- [English user guide](src/canconfigpython/resources/docs/user-guide.en.md)
|
|
37
|
+
- [Agent Skill](src/canconfigpython/resources/skill/canconfig-python/SKILL.md)
|
|
38
|
+
- [Build and release](DEVELOPING.md)
|
|
39
|
+
- [Validation record](VALIDATION.md)
|
|
40
|
+
- [Third-party notices](THIRD_PARTY_NOTICES.md)
|
|
41
|
+
|
|
42
|
+
## Python API
|
|
43
|
+
|
|
44
|
+
~~~python
|
|
45
|
+
from canconfigpython import Client, ConfigError
|
|
46
|
+
|
|
47
|
+
client = Client()
|
|
48
|
+
try:
|
|
49
|
+
result = client.execute("info", port="COM3") # Linux: /dev/serial/by-id/...
|
|
50
|
+
except ConfigError as error:
|
|
51
|
+
print(error.code, error.message)
|
|
52
|
+
else:
|
|
53
|
+
print(result["exit_code"], result["effects"], result["verification"])
|
|
54
|
+
~~~
|
|
55
|
+
|
|
56
|
+
`execute(command, password=..., new_password=..., **options)` uses snake_case options
|
|
57
|
+
such as `expect_uid`, `dry_run`, and `timeout_ms`; its command names match the CLI.
|
|
58
|
+
Provide passwords from a secret store or prompt, not source code. Backend failures
|
|
59
|
+
return the full result; callers must check `ok` and `exit_code`.
|
|
60
|
+
Local validation/runtime errors raise `ConfigError`. The wrapper does not retry.
|
|
61
|
+
|
|
62
|
+
The Python layer uses only the standard library. Python 3.8+ is supported by syntax;
|
|
63
|
+
see the validation record for interpreter versions actually tested.
|
|
64
|
+
|
|
65
|
+
## License
|
|
66
|
+
|
|
67
|
+
The Python wrapper and project additions are MIT. The bundled Console incorporates
|
|
68
|
+
XinLi's GPL-3.0-or-later Ymodem implementation and is distributed under that license.
|
|
69
|
+
Its corresponding project source is included in every wheel as
|
|
70
|
+
`canconfigpython/resources/docs/native-source.tar.gz` (also exported by `canconfig docs export`).
|
|
71
|
+
Qt and compiler runtime components retain their own licenses. Materials and rebuild instructions are in
|
|
72
|
+
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). A runtime manifest checks bundle
|
|
73
|
+
consistency; it is not a publisher signature.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
The Python wrapper and original project additions are MIT. This does **not**
|
|
4
|
+
relicense upstream code or libraries shipped with it.
|
|
5
|
+
|
|
6
|
+
## Console and Ymodem
|
|
7
|
+
|
|
8
|
+
native/shared/Ymodem.cpp and Ymodem.h are Copyright (c) 2018 XinLi and licensed
|
|
9
|
+
under GPL-3.0-or-later, as their original headers state. The Console links that
|
|
10
|
+
implementation and is distributed under GPL-3.0-or-later; it is not an MIT-only
|
|
11
|
+
executable. The license text is in licenses/GPL-3.0.txt. MIT notices remain on
|
|
12
|
+
project-owned contributions; upstream copyright and license headers are retained.
|
|
13
|
+
|
|
14
|
+
Every wheel includes the corresponding project source and build scripts at
|
|
15
|
+
canconfigpython/resources/docs/native-source.tar.gz. Export it with `canconfig docs export`,
|
|
16
|
+
extract it and follow DEVELOPING.md to rebuild. The PyPI source distribution
|
|
17
|
+
also contains these sources. Qt/compiler dependency source locations are recorded
|
|
18
|
+
below and in the collected license/source records. Keep these materials together
|
|
19
|
+
when distributing binaries. The Python wrapper communicates with the separate
|
|
20
|
+
Console process using its CLI and retains its MIT license.
|
|
21
|
+
|
|
22
|
+
## Windows runtime
|
|
23
|
+
|
|
24
|
+
| Files | Component | License materials |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Qt5Core.dll, Qt5Network.dll, Qt5SerialPort.dll | Qt 5.7.1, The Qt Company and contributors | Qt LGPLv3/GPLv3 texts and source-component notices in licenses |
|
|
27
|
+
| libgcc_s_dw2-1.dll, libstdc++-6.dll | GCC 5.3 runtime | GPLv3 with GCC Runtime Library Exception; gcc-* texts |
|
|
28
|
+
| libwinpthread-1.dll | MinGW-w64 winpthreads | winpthreads-COPYING.txt and mingw-w64-* texts |
|
|
29
|
+
| WIICAN.dll | Project driver source snapshot | LICENSE and native/upstream.json |
|
|
30
|
+
| Console executable | Project source plus XinLi Ymodem | GPL-3.0-or-later; licenses/GPL-3.0.txt and bundled source |
|
|
31
|
+
|
|
32
|
+
The Qt source license collection can include notices for source components not
|
|
33
|
+
linked into these libraries. It is preserved to retain third-party attributions.
|
|
34
|
+
Only the runtime dependency closure is bundled.
|
|
35
|
+
|
|
36
|
+
Exact Qt source packages:
|
|
37
|
+
- [QtBase 5.7.1](https://download.qt.io/archive/qt/5.7/5.7.1/submodules/qtbase-opensource-src-5.7.1.tar.xz)
|
|
38
|
+
- [QtSerialPort 5.7.1](https://download.qt.io/archive/qt/5.7/5.7.1/submodules/qtserialport-opensource-src-5.7.1.tar.xz)
|
|
39
|
+
- [GCC 5.3 source](https://ftp.gnu.org/gnu/gcc/gcc-5.3.0/)
|
|
40
|
+
- [MinGW-w64 source project](https://www.mingw-w64.org/)
|
|
41
|
+
|
|
42
|
+
Windows uses dynamically linked Qt 5.7.1 from the MinGW 5.3 32-bit distribution.
|
|
43
|
+
No modifications to those Qt binaries are made. Preserve matching source
|
|
44
|
+
access and notices when redistributing.
|
|
45
|
+
|
|
46
|
+
## Linux runtime
|
|
47
|
+
|
|
48
|
+
Linux uses separately compiled Console/WIICAN and Qt 5 shared objects.
|
|
49
|
+
Exact packages/versions are recorded by tools/collect_linux_licenses.py in
|
|
50
|
+
licenses/linux-packages.json when a Linux build is performed. Adjacent copyright
|
|
51
|
+
files identify licenses and sources. On Debian/Ubuntu obtain matching sources
|
|
52
|
+
with apt-get source and the recorded source package/version (enable source
|
|
53
|
+
repositories first). Preserve equivalent source access for other toolchains.
|
|
54
|
+
|
|
55
|
+
The Linux wheel contains its non-glibc runtime closure. glibc and the ELF loader
|
|
56
|
+
are system dependencies governed by the audited manylinux baseline.
|
|
57
|
+
|
|
58
|
+
## Replacing or rebuilding libraries
|
|
59
|
+
|
|
60
|
+
Users may modify/replace LGPL-covered libraries and debug those modifications.
|
|
61
|
+
There is no publisher signature or DRM lock. Runtime SHA-256 checks bundle
|
|
62
|
+
consistency only. Build with compatible Qt, then run tools/build_native.py to
|
|
63
|
+
restage and regenerate the manifest. Build/install your resulting wheel.
|
|
64
|
+
For intentionally modified prebuilt libraries, tools/rehash_runtime.py accepts
|
|
65
|
+
local replacements without claiming publisher authenticity. Maintain architecture/
|
|
66
|
+
ABI and rerun tests.
|
|
67
|
+
|
|
68
|
+
The source distribution contains native source/build instructions so the executable
|
|
69
|
+
can be rebuilt/relinked. Retain license texts and source access for modified builds.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Validation record — 2026-10-16
|
|
2
|
+
|
|
3
|
+
Version: CANConfigPython 0.1.0a1 / Console 2.3 / bridge API 1.
|
|
4
|
+
Stage: local prerelease candidate; not published to PyPI.
|
|
5
|
+
|
|
6
|
+
| Check | Evidence/status |
|
|
7
|
+
|---|---|
|
|
8
|
+
| Windows native configuration core | PASS: 167 Qt tests |
|
|
9
|
+
| Windows firmware transport simulation | PASS: 29 Qt tests |
|
|
10
|
+
| Windows Console subprocess + fake driver | PASS: 83 tests including documented examples |
|
|
11
|
+
| Python wrapper | PASS: 55 tests on Windows Python 3.8 x86; original 42 on Linux Python 3.12; 13 Qt-free checker/loader regressions |
|
|
12
|
+
| Agent Skill structure | PASS: skill-creator quick_validate.py in UTF-8 mode |
|
|
13
|
+
| Windows wheel structure/install | PASS: win32 and win_amd64; Python 3.8.0 x86 and 3.12.10 x64; seven offline smoke checks per interpreter |
|
|
14
|
+
| Windows installation lifecycle | PASS: force-reinstall on both; uninstall/removal/reinstall on x86; pip check on both |
|
|
15
|
+
| Package metadata/integrity | PASS: twine check, wheel RECORD, runtime hashes; GPL Console source bundled and checked |
|
|
16
|
+
| Qt toolchain selection | PASS: Windows Qt 5.7.1 and Linux Qt 5.15.13; preserves qtchooser launcher symlinks |
|
|
17
|
+
| Remote Linux build helper | PASS: SSH authentication, dependency provisioning, build, tests, artifact transfer and SHA-256 |
|
|
18
|
+
| Linux native configuration/firmware | PASS: 167 + 29 Qt tests on Ubuntu 24.04.5 x86_64 |
|
|
19
|
+
| Linux Console subprocess + fake driver | PASS: 82; SKIP: one Windows console-event test (83 cases total) |
|
|
20
|
+
| Linux packaging | PASS: auditwheel, RECORD/runtime hashes, licenses and source; manylinux_2_38_x86_64 / manylinux_2_39_x86_64 |
|
|
21
|
+
| Linux installed wheel on build host | PASS: seven offline checks with Python 3.12.3 |
|
|
22
|
+
| Linux without system Qt | PENDING: license-text classification fixed; native glibc closure added after isolated WIICAN load failure; exact-wheel check required before upload |
|
|
23
|
+
| Physical hardware config/password/firmware | NOT_CHECKED; no device operations performed |
|
|
24
|
+
| PyPI publication | NOT_UPLOADED; credentials not configured in this session |
|
|
25
|
+
|
|
26
|
+
The Linux build completed on Ubuntu 24.04.5, Python 3.12.3, Qt 5.15.13 and
|
|
27
|
+
glibc 2.39. Auditwheel established a minimum glibc of 2.38 for the produced wheel.
|
|
28
|
+
The source/runtime packages are recorded in licenses/linux-packages.json. Build
|
|
29
|
+
and test evidence is in validation/linux. The host-venv installation passed;
|
|
30
|
+
the final Qt-free filesystem check remains separate and is required by the
|
|
31
|
+
upload helper. An initial Qt-free preparation attempt incorrectly classified
|
|
32
|
+
Qt license text as an external library. The checker now inspects ELF file headers,
|
|
33
|
+
validates both installed paths and symlink targets, and reports offending paths.
|
|
34
|
+
Regression cases cover notices, external libraries, pre-install contamination and
|
|
35
|
+
disguised ELF files; the real Linux wheel is checked locally as well.
|
|
36
|
+
The subsequent isolated run started Python successfully but failed WIICAN loading.
|
|
37
|
+
ELF inspection identifies four external system libraries: the loader, libc, libm
|
|
38
|
+
and libresolv. Preparation previously copied only Python's dependencies; it now
|
|
39
|
+
also copies the native runtime's strictly allowed glibc dependencies and rejects
|
|
40
|
+
any missing non-glibc runtime library. A loader check precedes CLI execution and
|
|
41
|
+
keeps concrete missing-library diagnostics. Full isolated execution remains
|
|
42
|
+
pending until the corrected helper runs on the Linux host.
|
|
43
|
+
Passwords are local terminal input, never files or chat.
|
|
44
|
+
|
|
45
|
+
Python code is MIT. Console incorporates existing GPL-3.0-or-later Ymodem source;
|
|
46
|
+
its license and corresponding project source are preserved in each wheel.
|
|
47
|
+
|
|
48
|
+
## Documentation coverage versus validation
|
|
49
|
+
|
|
50
|
+
| Function | Chinese/English coverage | Validation |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| Install, version, doctor, help, schema | COMPLETE | PASS_CLI / PASS_INSTALLED_WHEEL_WINDOWS_AND_LINUX_HOST |
|
|
53
|
+
| Export docs and Skill | COMPLETE | PASS_CLI |
|
|
54
|
+
| Device identity/capabilities | COMPLETE | PASS_FAKE_DRIVER |
|
|
55
|
+
| INI export/validate/restore and sections | COMPLETE | PASS_FAKE_DRIVER |
|
|
56
|
+
| JSON syntax/snapshot/parameter apply | COMPLETE | PASS_FAKE_DRIVER |
|
|
57
|
+
| Adaptive mode boundaries | COMPLETE | PASS_NATIVE_SIMULATION |
|
|
58
|
+
| Password change and result handling | COMPLETE | PASS_FAKE_DRIVER |
|
|
59
|
+
| Firmware preflight and Ymodem outcomes | COMPLETE | PASS_NATIVE_SIMULATION |
|
|
60
|
+
| Timeout, interruption and unknown effects | COMPLETE | PASS_CLI / PASS_NATIVE_SIMULATION |
|
|
61
|
+
| Linux permissions/device aliases | COMPLETE | PASS_LINUX_BUILD / PENDING_HARDWARE |
|
|
62
|
+
| Actual device/flash/power-cycle behavior | COMPLETE limitations | PENDING_HARDWARE |
|
|
63
|
+
|
|
64
|
+
COMPLETE describes written coverage, not hardware acceptance. Fake-driver success
|
|
65
|
+
does not prove actual electrical communication, device timing or persistence.
|