Metadata-Version: 2.4
Name: CANConfigPython
Version: 0.1.0a3
Summary: CAN device configuration CLI using a bundled Qt/WIICAN console backend
Author: CANConfigPython contributors
License: Python wrapper and new contributions: MIT; bundled native components have separate terms; see THIRD_PARTY_NOTICES.md
Keywords: can,canconfig,canhub,serial
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
License-File: licenses/GPL-3.0.txt
License-File: licenses/Qt-5.15.2-LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.FDL.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.GPL2.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.GPL3-EXCEPT.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.GPL3.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.LGPL3.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.LGPLv3.txt
License-File: licenses/Qt-5.15.2-qtbase-LICENSE.QT-LICENSE-AGREEMENT.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__android__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__android__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__KHRONOS_LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__SYSTEMINFO_LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__TRACEEVENT_LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__common__third_party__smhasher__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__compiler__translator__emulated_builtin_function_data_hlsl.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_copy_conversion_formats.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_format_type_combinations.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__format_map_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__packed_gl_enums.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_map.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_format_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_map.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__load_functions_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libGLESv2__proc_table_data.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__libXNVCtrl__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__double-conversion__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__double-conversion__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__easing.cpp.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_atomic.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_c11.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_freebsd.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_linux.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoll.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoull.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__BDF-LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__PCF-LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__ZLIB-LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__gradle__LICENSE-GRADLEW.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__gradle__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__COPYING.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__icc__LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__icc__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__libjpeg__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__libjpeg__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__libpng__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__libpng__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__md4.cpp.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__md4.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md4c__LICENSE.md.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md4c__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__md5.cpp.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__md5.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE-SLJIT.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__pixman__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__pixman__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha-private.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha1__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha1__sha1.cpp.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__BRG_ENDIAN_LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__CC0_LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.patch.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__sqlite__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__tinycbor__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__tinycbor__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__DEJAVU-LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__VERA-LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__wintab__LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__wintab__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__xcb__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__xcb__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__zlib__LICENSE.txt
License-File: licenses/Qt-5.15.2-qtbase-src__3rdparty__zlib__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QBIG5CODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QBKCODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QEUCJPCODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QEUCKRCODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QJISCODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QSJISCODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QTSCIICODEC_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__codecs__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__io__PSL-LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__io__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__kernel__QEVENTDISPATCHER_CF_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__kernel__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__text__UNICODE_LICENSE.txt.txt
License-File: licenses/Qt-5.15.2-qtbase-src__corelib__text__qt_attribution.json.txt
License-File: licenses/Qt-5.15.2-qtserialport-LICENSE.FDL.txt
License-File: licenses/Qt-5.15.2-qtserialport-LICENSE.GPL2.txt
License-File: licenses/Qt-5.15.2-qtserialport-LICENSE.GPL3-EXCEPT.txt
License-File: licenses/Qt-5.15.2-qtserialport-LICENSE.GPL3.txt
License-File: licenses/Qt-5.15.2-qtserialport-LICENSE.LGPL3.txt
License-File: licenses/gcc-COPYING.RUNTIME.txt
License-File: licenses/gcc-COPYING3.LIB.txt
License-File: licenses/gcc-COPYING3.txt
License-File: licenses/mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
License-File: licenses/mingw-w64-COPYING.MinGW-w64.txt.txt
License-File: licenses/mingw-w64-COPYING.txt
License-File: licenses/mingw810_32-gcc-COPYING.RUNTIME.txt
License-File: licenses/mingw810_32-gcc-COPYING3.LIB.txt
License-File: licenses/mingw810_32-gcc-COPYING3.txt
License-File: licenses/mingw810_32-mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
License-File: licenses/mingw810_32-mingw-w64-COPYING.MinGW-w64.txt.txt
License-File: licenses/mingw810_32-mingw-w64-COPYING.txt
License-File: licenses/mingw810_32-winpthreads-COPYING.txt
License-File: licenses/qt-5.15.2-source-notices.json
License-File: licenses/winpthreads-COPYING.txt
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: build>=1; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Requires-Dist: PyYAML>=6; extra == "dev"
Dynamic: license-file

# CANConfigPython

Python CLI and API for CANHub, CANFB, CANBridge, CANRPT and CANCOM configuration.
The package runs a bundled Qt console subprocess, which uses WIICAN. It does not
require a GUI installation or a separately installed Qt runtime.

**0.1.0a3 is a prerelease.** See the bundled guides for supported platforms and validation limits.

~~~text
canconfig / Python Client
    -> CANConfigConsole.exe + WIICAN.dll           (Windows)
    -> CANConfigConsole + libWIICAN.so.1           (Linux)
~~~

## 安装与首次检查 / Install and check

在 Python 虚拟环境中执行以下命令。Linux 可使用 `python3`；无需另装 Qt 或 WIICAN。
Run these commands in a Python virtual environment. Use `python3` on Linux if needed.

~~~console
python -m pip install CANConfigPython==0.1.0a3
canconfig --version --json
canconfig doctor --json
~~~

`doctor` 成功时返回 `ok=true`、`exit_code=0`、`data.device_opened=false`。
它检查随包运行库，不连接设备。`schema`、`validate` 和固件 `--dry-run` 也不打开硬件。
配置命令 `info` 和配置 `--dry-run` 会连接设备，并可能改变设备运行模式。

Doctor verifies the bundled runtime without opening a device. Check `ok`, `exit_code`
and `data.device_opened`. Configuration `info` and configuration `--dry-run` connect
to hardware and may change its run mode; use them only for an authorized target.

Upgrade to the latest prerelease with `python -m pip install --upgrade --pre CANConfigPython`.
Uninstall with `python -m pip uninstall CANConfigPython`.

## 中文使用说明与英文手册 / User guides

完整的中英文手册已包含在安装包内。PyPI 简介不会提供源码目录中的文件网页；
请先导出文档，再在本机打开文件。以下操作无需连接设备或输入设备密码。

The complete Chinese and English manuals are included in the installed package.
Export them to a new directory and open the files locally; no device is required.

~~~console
canconfig docs export --output ./canconfig-docs
~~~

| 内容 / Content | 导出后的文件 / Exported file |
|---|---|
| 中文操作手册 | `canconfig-docs/user-guide.zh-CN.md` |
| English user guide | `canconfig-docs/user-guide.en.md` |
| Linux 随包 Qt 的完整修改源码 / Full modified Qt source, Linux wheel | `canconfig-docs/qt5152-linux-source.tar.xz` |

使用支持 Markdown 的编辑器阅读 `.md` 文件；Windows 也可执行
`notepad .\canconfig-docs\user-guide.zh-CN.md` 阅读文本。
The manuals cover installation, device selection, password handling, backup/export,
validation/restore, JSON changes, firmware updates, failures and exit codes.

导出目录必须不存在；如果提示 `output_exists`，请换一个新目录名，例如
`./canconfig-docs-a2`。导出不会覆盖已有文档，卸载也不会删除已导出的文件。
Export requires a new directory and never overwrites existing files.

## Agent Skill 与用例 / Agent Skill and examples

~~~console
canconfig skill export --output ./canconfig-skill
~~~

| 内容 / Content | 导出后的文件 / Exported file |
|---|---|
| Skill 入口 / Entry point | `canconfig-skill/SKILL.md` |
| 操作参考 / Operation reference | `canconfig-skill/references/operations.md` |
| 中文用例目录 | `canconfig-skill/assets/examples/index.zh-CN.md` |
| English example catalog | `canconfig-skill/assets/examples/index.en.md` |
| JSON Schema | `canconfig-skill/assets/changes.schema.json` |

将整个导出目录交给所用 Agent，或按该 Agent 的要求安装。保留 `references` 和
`assets` 子目录，才能使用 Skill 内部的文档和用例链接。安装 Python 包不会自动修改 Agent 设置。
Keep the complete exported directory together. Package installation does not change
Agent settings. Examples contain placeholder device identifiers and must be adapted
to the confirmed device and authorized operation before use.

## Python API

~~~python
from canconfigpython import Client, ConfigError

client = Client()
try:
    result = client.execute("info", port="COM3")  # Linux: confirmed /dev/serial/by-id/... path
except ConfigError as error:
    print(error.code, error.message)
else:
    print(result["exit_code"], result["effects"], result["verification"])
~~~

`execute(command, password=..., new_password=..., **options)` uses snake_case options
such as `expect_uid`, `dry_run`, and `timeout_ms`; command names match the CLI.
Provide passwords from a secret store or prompt, not source code. Backend failures
return the full result; check `ok` and `exit_code`. Local validation/runtime errors
raise `ConfigError`. The wrapper does not automatically retry or roll back operations.
The Python runtime layer uses only the standard library.

## 构建、验证记录与许可证 / Build, validation and licenses

WIICAN implementation source is private and is not included in public wheels or sdists.
The candidate contains the Python wrapper, native runtime, exported guides/Skill and required third-party materials.
The prior GPL Ymodem component is no longer compiled into the Console; the new single-file sender and upstream rights require distribution review before publication.
Linux retains the modified Qt source archive and matching notices. See THIRD_PARTY_NOTICES.md in the installed distribution metadata.
