CANConfigPython 0.1.0a1__tar.gz → 0.1.0a2__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.
Files changed (429) hide show
  1. canconfigpython-0.1.0a2/DEVELOPING.md +239 -0
  2. canconfigpython-0.1.0a2/PKG-INFO +419 -0
  3. canconfigpython-0.1.0a2/README.md +132 -0
  4. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/THIRD_PARTY_NOTICES.md +83 -69
  5. canconfigpython-0.1.0a2/VALIDATION.md +172 -0
  6. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-LICENSE.txt +866 -0
  7. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.LGPLv3.txt +175 -0
  8. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.QT-LICENSE-AGREEMENT.txt +1331 -0
  9. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__LICENSE.txt.txt +19 -0
  10. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__qt_attribution.json.txt +16 -0
  11. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__android__LICENSE.txt +11 -0
  12. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__android__qt_attribution.json.txt +11 -0
  13. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__KHRONOS_LICENSE.txt +20 -0
  14. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__SYSTEMINFO_LICENSE.txt +22 -0
  15. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__TRACEEVENT_LICENSE.txt +27 -0
  16. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__qt_attribution.json.txt +77 -0
  17. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__common__third_party__smhasher__LICENSE.txt +23 -0
  18. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__compiler__translator__emulated_builtin_function_data_hlsl.json.txt +1382 -0
  19. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_copy_conversion_formats.json.txt +44 -0
  20. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_format_type_combinations.json.txt +171 -0
  21. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__format_map_data.json.txt +142 -0
  22. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__packed_gl_enums.json.txt +35 -0
  23. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_data.json.txt +24 -0
  24. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_map.json.txt +132 -0
  25. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_format_data.json.txt +118 -0
  26. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt +1279 -0
  27. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt +523 -0
  28. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_map.json.txt +78 -0
  29. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__load_functions_data.json.txt +602 -0
  30. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__libGLESv2__proc_table_data.json.txt +662 -0
  31. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__libXNVCtrl__LICENSE.txt +22 -0
  32. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__double-conversion__qt_attribution.json.txt +14 -0
  33. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__LICENSE.txt +25 -0
  34. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__qt_attribution.json.txt +14 -0
  35. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__LICENSE.txt +20 -0
  36. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.c.txt +888 -0
  37. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.h.txt +75 -0
  38. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_atomic.h.txt +39 -0
  39. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_c11.h.txt +64 -0
  40. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_freebsd.c.txt +109 -0
  41. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_linux.c.txt +193 -0
  42. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__qt_attribution.json.txt +14 -0
  43. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt +158 -0
  44. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__LICENSE.txt +31 -0
  45. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__qt_attribution.json.txt +18 -0
  46. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoll.c.txt +134 -0
  47. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoull.c.txt +112 -0
  48. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__BDF-LICENSE.txt.txt +43 -0
  49. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__LICENSE.txt.txt +551 -0
  50. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__PCF-LICENSE.txt.txt +20 -0
  51. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__ZLIB-LICENSE.txt.txt +20 -0
  52. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt +39 -0
  53. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__qt_attribution.json.txt +58 -0
  54. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt +65 -0
  55. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt +138 -0
  56. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__gradle__LICENSE-GRADLEW.txt.txt +965 -0
  57. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__gradle__qt_attribution.json.txt +15 -0
  58. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__qt_attribution.json.txt +26 -0
  59. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__qt_attribution.json.txt +15 -0
  60. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__LICENSE.txt +38 -0
  61. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__qt_attribution.json.txt +18 -0
  62. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__icc__LICENSE.txt.txt +10 -0
  63. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__icc__qt_attribution.json.txt +17 -0
  64. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__libjpeg__LICENSE.txt +132 -0
  65. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__libjpeg__qt_attribution.json.txt +24 -0
  66. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__libpng__LICENSE.txt +134 -0
  67. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__libpng__qt_attribution.json.txt +34 -0
  68. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__qt_attribution.json.txt +11 -0
  69. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md4c__LICENSE.md.txt +22 -0
  70. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md4c__qt_attribution.json.txt +15 -0
  71. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__qt_attribution.json.txt +12 -0
  72. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE-SLJIT.txt +22 -0
  73. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE.txt +94 -0
  74. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__pcre2__qt_attribution.json.txt +35 -0
  75. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__pixman__LICENSE.txt +20 -0
  76. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__pixman__qt_attribution.json.txt +14 -0
  77. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__LICENSE.txt +34 -0
  78. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__qt_attribution.json.txt +13 -0
  79. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha1__qt_attribution.json.txt +12 -0
  80. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__BRG_ENDIAN_LICENSE.txt +14 -0
  81. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__CC0_LICENSE.txt +99 -0
  82. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt +50 -0
  83. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.patch.txt +34 -0
  84. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.txt +139 -0
  85. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__qt_attribution.json.txt +35 -0
  86. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sqlite__qt_attribution.json.txt +13 -0
  87. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__tinycbor__LICENSE.txt +21 -0
  88. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__tinycbor__qt_attribution.json.txt +15 -0
  89. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__DEJAVU-LICENSE.txt +187 -0
  90. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__VERA-LICENSE.txt +15 -0
  91. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__wasm__qt_attribution.json.txt +35 -0
  92. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__wintab__LICENSE.txt.txt +2 -0
  93. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__wintab__qt_attribution.json.txt +13 -0
  94. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__xcb__LICENSE.txt +23 -0
  95. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__xcb__qt_attribution.json.txt +14 -0
  96. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__zlib__LICENSE.txt +28 -0
  97. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__zlib__qt_attribution.json.txt +15 -0
  98. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QBIG5CODEC_LICENSE.txt.txt +25 -0
  99. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QBKCODEC_LICENSE.txt.txt +24 -0
  100. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QEUCJPCODEC_LICENSE.txt.txt +22 -0
  101. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QEUCKRCODEC_LICENSE.txt.txt +22 -0
  102. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QJISCODEC_LICENSE.txt.txt +22 -0
  103. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QSJISCODEC_LICENSE.txt.txt +22 -0
  104. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__QTSCIICODEC_LICENSE.txt.txt +22 -0
  105. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__codecs__qt_attribution.json.txt +110 -0
  106. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__io__PSL-LICENSE.txt.txt +373 -0
  107. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__io__qt_attribution.json.txt +29 -0
  108. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__kernel__QEVENTDISPATCHER_CF_LICENSE.txt.txt +29 -0
  109. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__kernel__qt_attribution.json.txt +14 -0
  110. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__text__UNICODE_LICENSE.txt.txt +46 -0
  111. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__corelib__text__qt_attribution.json.txt +40 -0
  112. canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtserialport-LICENSE.FDL.txt +450 -0
  113. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-LICENSE.FDL.txt +450 -0
  114. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-LICENSE.GPL2.txt +339 -0
  115. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3-EXCEPT.txt +704 -0
  116. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-LICENSE.LGPL3.txt +165 -0
  117. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__LICENSE.txt +32 -0
  118. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt +22 -0
  119. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__double-conversion__LICENSE.txt +26 -0
  120. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__easing__easing.cpp.txt +670 -0
  121. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt +63 -0
  122. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt +14 -0
  123. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt +36 -0
  124. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz__COPYING.txt +24 -0
  125. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.cpp.txt +265 -0
  126. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.h.txt +31 -0
  127. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.cpp.txt +247 -0
  128. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.h.txt +48 -0
  129. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt +86 -0
  130. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha-private.h.txt +28 -0
  131. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha.h.txt +357 -0
  132. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt +583 -0
  133. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt +1034 -0
  134. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha1__sha1.cpp.txt +261 -0
  135. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt +555 -0
  136. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt +26 -0
  137. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt +728 -0
  138. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt +6 -0
  139. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt +4 -0
  140. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt +524 -0
  141. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt +7 -0
  142. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt +512 -0
  143. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt +124 -0
  144. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt +82 -0
  145. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt +70 -0
  146. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt +266 -0
  147. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt +80 -0
  148. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL2.txt +339 -0
  149. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3-EXCEPT.txt +704 -0
  150. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3.txt +674 -0
  151. canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPL3.txt +165 -0
  152. canconfigpython-0.1.0a2/licenses/gcc-COPYING3.txt +674 -0
  153. canconfigpython-0.1.0a2/licenses/linux-packages.json +83 -0
  154. canconfigpython-0.1.0a2/licenses/mingw810_32-gcc-COPYING.RUNTIME.txt +73 -0
  155. canconfigpython-0.1.0a2/licenses/mingw810_32-gcc-COPYING3.LIB.txt +165 -0
  156. canconfigpython-0.1.0a2/licenses/mingw810_32-gcc-COPYING3.txt +674 -0
  157. canconfigpython-0.1.0a2/licenses/mingw810_32-mingw-w64-COPYING.MinGW-w64-runtime.txt.txt +240 -0
  158. canconfigpython-0.1.0a2/licenses/mingw810_32-mingw-w64-COPYING.MinGW-w64.txt.txt +135 -0
  159. canconfigpython-0.1.0a2/licenses/mingw810_32-mingw-w64-COPYING.txt +43 -0
  160. canconfigpython-0.1.0a2/licenses/mingw810_64-gcc-COPYING.RUNTIME.txt +73 -0
  161. canconfigpython-0.1.0a2/licenses/mingw810_64-gcc-COPYING3.LIB.txt +165 -0
  162. canconfigpython-0.1.0a2/licenses/mingw810_64-gcc-COPYING3.txt +674 -0
  163. canconfigpython-0.1.0a2/licenses/mingw810_64-mingw-w64-COPYING.MinGW-w64-runtime.txt.txt +240 -0
  164. canconfigpython-0.1.0a2/licenses/mingw810_64-mingw-w64-COPYING.MinGW-w64.txt.txt +135 -0
  165. canconfigpython-0.1.0a2/licenses/mingw810_64-mingw-w64-COPYING.txt +43 -0
  166. canconfigpython-0.1.0a2/licenses/mingw810_64-winpthreads-COPYING.txt +57 -0
  167. canconfigpython-0.1.0a2/licenses/qt-5.15.2-source-notices.json +586 -0
  168. canconfigpython-0.1.0a2/licenses/qt5152-linux-build.json +58 -0
  169. canconfigpython-0.1.0a2/licenses/winpthreads-COPYING.txt +57 -0
  170. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/PORTING.md +27 -24
  171. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qhdlcdatalink.cpp +1 -1
  172. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qhdlcdatalink.h +1 -1
  173. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qsocketcom.cpp +2 -2
  174. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qsocketcom.h +1 -1
  175. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qudpsocketsvr.cpp +1 -1
  176. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican.cpp +1 -1
  177. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican.h +2 -2
  178. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/pyproject.toml +44 -44
  179. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/setup.py +2 -0
  180. canconfigpython-0.1.0a2/src/CANConfigPython.egg-info/PKG-INFO +419 -0
  181. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/CANConfigPython.egg-info/SOURCES.txt +171 -0
  182. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/__init__.py +7 -7
  183. canconfigpython-0.1.0a2/src/canconfigpython/resources/docs/native-source.tar.gz +0 -0
  184. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/docs/user-guide.en.md +19 -10
  185. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/docs/user-guide.zh-CN.md +16 -8
  186. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/SKILL.md +71 -71
  187. canconfigpython-0.1.0a2/src/canconfigpython/runtime/Qt5Core.dll +0 -0
  188. canconfigpython-0.1.0a2/src/canconfigpython/runtime/Qt5Network.dll +0 -0
  189. canconfigpython-0.1.0a2/src/canconfigpython/runtime/Qt5SerialPort.dll +0 -0
  190. canconfigpython-0.1.0a2/src/canconfigpython/runtime/WIICAN.dll +0 -0
  191. canconfigpython-0.1.0a2/src/canconfigpython/runtime/canconfigconsole.exe +0 -0
  192. canconfigpython-0.1.0a2/src/canconfigpython/runtime/libgcc_s_dw2-1.dll +0 -0
  193. canconfigpython-0.1.0a2/src/canconfigpython/runtime/libstdc++-6.dll +0 -0
  194. canconfigpython-0.1.0a2/src/canconfigpython/runtime/libwinpthread-1.dll +0 -0
  195. canconfigpython-0.1.0a2/src/canconfigpython/runtime/manifest.json +20 -0
  196. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tests/conftest.py +45 -45
  197. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tests/test_cli.py +52 -52
  198. canconfigpython-0.1.0a2/tests/test_native_build.py +46 -0
  199. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tests/test_remote_build.py +55 -0
  200. canconfigpython-0.1.0a2/tests/test_remote_diagnostics.py +51 -0
  201. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/build_linux.sh +1 -1
  202. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/build_linux_remote.py +112 -39
  203. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/build_native.py +101 -24
  204. canconfigpython-0.1.0a2/tools/build_qt5152_linux.py +169 -0
  205. canconfigpython-0.1.0a2/tools/check_documentation.py +104 -0
  206. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/check_wheel.py +76 -49
  207. canconfigpython-0.1.0a2/tools/collect_linux_licenses.py +113 -0
  208. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/collect_windows_licenses.py +21 -11
  209. canconfigpython-0.1.0a2/tools/diagnose_linux_remote.py +152 -0
  210. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/publish_release.py +100 -93
  211. canconfigpython-0.1.0a2/tools/repackage_documentation.py +110 -0
  212. canconfigpython-0.1.0a2/tools/setup_linux_ssh.py +142 -0
  213. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/smoke_installed.py +3 -0
  214. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/verify_linux_remote.py +9 -12
  215. canconfigpython-0.1.0a1/DEVELOPING.md +0 -156
  216. canconfigpython-0.1.0a1/PKG-INFO +0 -197
  217. canconfigpython-0.1.0a1/README.md +0 -73
  218. canconfigpython-0.1.0a1/VALIDATION.md +0 -65
  219. canconfigpython-0.1.0a1/licenses/linux-packages.json +0 -102
  220. canconfigpython-0.1.0a1/src/CANConfigPython.egg-info/PKG-INFO +0 -197
  221. canconfigpython-0.1.0a1/src/canconfigpython/resources/docs/native-source.tar.gz +0 -0
  222. canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5Core.dll +0 -0
  223. canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5Network.dll +0 -0
  224. canconfigpython-0.1.0a1/src/canconfigpython/runtime/Qt5SerialPort.dll +0 -0
  225. canconfigpython-0.1.0a1/src/canconfigpython/runtime/WIICAN.dll +0 -0
  226. canconfigpython-0.1.0a1/src/canconfigpython/runtime/canconfigconsole.exe +0 -0
  227. canconfigpython-0.1.0a1/src/canconfigpython/runtime/libgcc_s_dw2-1.dll +0 -0
  228. canconfigpython-0.1.0a1/src/canconfigpython/runtime/libstdc++-6.dll +0 -0
  229. canconfigpython-0.1.0a1/src/canconfigpython/runtime/libwinpthread-1.dll +0 -0
  230. canconfigpython-0.1.0a1/src/canconfigpython/runtime/manifest.json +0 -19
  231. canconfigpython-0.1.0a1/tools/collect_linux_licenses.py +0 -43
  232. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/.github/workflows/linux-build.yml +0 -0
  233. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/AGENTS.md +0 -0
  234. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/LICENSE +0 -0
  235. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/MANIFEST.in +0 -0
  236. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/GPL-3.0.txt +0 -0
  237. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.FDL.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.FDL.txt +0 -0
  238. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL2.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.GPL2.txt +0 -0
  239. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3-EXCEPT.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.GPL3-EXCEPT.txt +0 -0
  240. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.GPL3.txt +0 -0
  241. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-LICENSE.LGPL3.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-LICENSE.LGPL3.txt +0 -0
  242. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__LICENSE.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__LICENSE.txt +0 -0
  243. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt +0 -0
  244. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__double-conversion__LICENSE.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__double-conversion__LICENSE.txt +0 -0
  245. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__easing__easing.cpp.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__easing__easing.cpp.txt +0 -0
  246. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt +0 -0
  247. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt +0 -0
  248. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt +0 -0
  249. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__harfbuzz__COPYING.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__COPYING.txt +0 -0
  250. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.cpp.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__md4.cpp.txt +0 -0
  251. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md4__md4.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md4__md4.h.txt +0 -0
  252. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.cpp.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__md5.cpp.txt +0 -0
  253. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__md5__md5.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__md5__md5.h.txt +0 -0
  254. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt +0 -0
  255. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha-private.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha-private.h.txt +0 -0
  256. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha.h.txt +0 -0
  257. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt +0 -0
  258. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt +0 -0
  259. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha1__sha1.cpp.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha1__sha1.cpp.txt +0 -0
  260. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt +0 -0
  261. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt +0 -0
  262. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt +0 -0
  263. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt +0 -0
  264. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt +0 -0
  265. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt +0 -0
  266. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt +0 -0
  267. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt +0 -0
  268. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt +0 -0
  269. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt +0 -0
  270. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt +0 -0
  271. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt +0 -0
  272. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt +0 -0
  273. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL2.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtserialport-LICENSE.GPL2.txt +0 -0
  274. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3-EXCEPT.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtserialport-LICENSE.GPL3-EXCEPT.txt +0 -0
  275. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.GPL3.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtserialport-LICENSE.GPL3.txt +0 -0
  276. /canconfigpython-0.1.0a1/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPL3.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.15.2-qtserialport-LICENSE.LGPL3.txt +0 -0
  277. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-LICENSE.txt +0 -0
  278. /canconfigpython-0.1.0a1/licenses/gcc-COPYING3.txt → /canconfigpython-0.1.0a2/licenses/Qt-5.7.1-qtbase-LICENSE.GPL3.txt +0 -0
  279. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-LICENSE.GPLv3.txt +0 -0
  280. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-LICENSE.LGPLv21.txt +0 -0
  281. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-LICENSE.LGPLv3.txt +0 -0
  282. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-LICENSE.PREVIEW.COMMERCIAL.txt +0 -0
  283. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt +0 -0
  284. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__load_functions_data.json.txt +0 -0
  285. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__swizzle_format_data.json.txt +0 -0
  286. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt +0 -0
  287. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__murmurhash__LICENSE.txt +0 -0
  288. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__easing__legal.qdoc.txt +0 -0
  289. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.c.txt +0 -0
  290. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.h.txt +0 -0
  291. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt +0 -0
  292. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoll.c.txt +0 -0
  293. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoull.c.txt +0 -0
  294. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt +0 -0
  295. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt +0 -0
  296. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt +0 -0
  297. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__libpng__LICENSE.txt +0 -0
  298. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__pcre__COPYING.txt +0 -0
  299. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__pcre__LICENCE.txt +0 -0
  300. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt +0 -0
  301. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__sha3__brg_endian.h.txt +0 -0
  302. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtbase-src__3rdparty__xkbcommon__COPYING.txt +0 -0
  303. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtserialport-LICENSE.FDL.txt +0 -0
  304. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtserialport-LICENSE.GPLv2.txt +0 -0
  305. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtserialport-LICENSE.GPLv3.txt +0 -0
  306. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPLv21.txt +0 -0
  307. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/Qt-5.7.1-qtserialport-LICENSE.LGPLv3.txt +0 -0
  308. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/gcc-COPYING.RUNTIME.txt +0 -0
  309. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/gcc-COPYING3.LIB.txt +0 -0
  310. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libc6-copyright.txt +0 -0
  311. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libcap2-copyright.txt +0 -0
  312. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libcom-err2-copyright.txt +0 -0
  313. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libdouble-conversion3-copyright.txt +0 -0
  314. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libgcc-s1-copyright.txt +0 -0
  315. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libglib2.0-0t64-copyright.txt +0 -0
  316. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libgssapi-krb5-2-copyright.txt +0 -0
  317. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libicu74-copyright.txt +0 -0
  318. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libk5crypto3-copyright.txt +0 -0
  319. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libkeyutils1-copyright.txt +0 -0
  320. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libkrb5-3-copyright.txt +0 -0
  321. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libkrb5support0-copyright.txt +0 -0
  322. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libpcre2-16-0-copyright.txt +0 -0
  323. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libpcre2-8-0-copyright.txt +0 -0
  324. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libqt5core5t64-copyright.txt +0 -0
  325. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libqt5network5t64-copyright.txt +0 -0
  326. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libqt5serialport5-copyright.txt +0 -0
  327. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libstdc++6-copyright.txt +0 -0
  328. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libudev1-copyright.txt +0 -0
  329. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-libzstd1-copyright.txt +0 -0
  330. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/linux-zlib1g-copyright.txt +0 -0
  331. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/mingw-w64-COPYING.MinGW-w64-runtime.txt.txt +0 -0
  332. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/mingw-w64-COPYING.MinGW-w64.txt.txt +0 -0
  333. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/mingw-w64-COPYING.txt +0 -0
  334. /canconfigpython-0.1.0a1/licenses/winpthreads-COPYING.txt → /canconfigpython-0.1.0a2/licenses/mingw810_32-winpthreads-COPYING.txt +0 -0
  335. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/licenses/qt-source-notices.json +0 -0
  336. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qringbuffer.h +0 -0
  337. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qrs232com.cpp +0 -0
  338. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qrs232com.h +0 -0
  339. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qserialdevicebase.cpp +0 -0
  340. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qserialdevicebase.h +0 -0
  341. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qtcpsocketsvr.cpp +0 -0
  342. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qtcpsocketsvr.h +0 -0
  343. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qudpsocketsvr.h +0 -0
  344. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qudpsocketwii.cpp +0 -0
  345. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/common/qudpsocketwii.h +0 -0
  346. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/CANConfigConsole.pro +0 -0
  347. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_config.cpp +0 -0
  348. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_config.h +0 -0
  349. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_config_test.cpp +0 -0
  350. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_config_test.pro +0 -0
  351. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_fake_device.h +0 -0
  352. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_fake_driver.cpp +0 -0
  353. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_fake_driver.pro +0 -0
  354. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_firmware.cpp +0 -0
  355. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_firmware.h +0 -0
  356. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_firmware_test.cpp +0 -0
  357. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/console_firmware_test.pro +0 -0
  358. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/main.cpp +0 -0
  359. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/console/test_console_cli.py +0 -0
  360. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/WIICAN.pro +0 -0
  361. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/configuration_response_p.h +0 -0
  362. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican_driver.cpp +0 -0
  363. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican_driver2.h +0 -0
  364. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican_global.h +0 -0
  365. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican_server.cpp +0 -0
  366. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/driver/wiican_server.h +0 -0
  367. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/shared/Ymodem.cpp +0 -0
  368. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/shared/Ymodem.h +0 -0
  369. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/shared/configuration_backup_p.h +0 -0
  370. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/shared/fw_update_port_tracker.cpp +0 -0
  371. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/shared/fw_update_port_tracker.h +0 -0
  372. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/native/upstream.json +0 -0
  373. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/setup.cfg +0 -0
  374. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/CANConfigPython.egg-info/dependency_links.txt +0 -0
  375. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/CANConfigPython.egg-info/entry_points.txt +0 -0
  376. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/CANConfigPython.egg-info/requires.txt +0 -0
  377. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/CANConfigPython.egg-info/top_level.txt +0 -0
  378. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/__main__.py +0 -0
  379. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/cli.py +0 -0
  380. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/client.py +0 -0
  381. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/commands.py +0 -0
  382. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/errors.py +0 -0
  383. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/agents/openai.yaml +0 -0
  384. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/changes.schema.json +0 -0
  385. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/bridge_dual_rates.json +0 -0
  386. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/bridge_mapping.json +0 -0
  387. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_115200_8n1.json +0 -0
  388. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_format_crc.json +0 -0
  389. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_gap.json +0 -0
  390. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/cancom_transparent_id.json +0 -0
  391. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_1m.json +0 -0
  392. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_500k.json +0 -0
  393. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_adaptive_single.json +0 -0
  394. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_return_manual.json +0 -0
  395. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/fb_silent_adaptive_option.json +0 -0
  396. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_blacklist.json +0 -0
  397. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_mask.json +0 -0
  398. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/filter_range.json +0 -0
  399. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_h_external.json +0 -0
  400. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_input_filter.json +0 -0
  401. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_l_external.json +0 -0
  402. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_mapping.json +0 -0
  403. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/hub_routing.json +0 -0
  404. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.en.md +0 -0
  405. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.json +0 -0
  406. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/index.zh-CN.md +0 -0
  407. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/adaptive_mixed.json +0 -0
  408. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/hub_missing_ps.json +0 -0
  409. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/restricted_inheritance.json +0 -0
  410. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/short_user_data.json +0 -0
  411. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/string_numeric_id.json +0 -0
  412. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/unknown_field.json +0 -0
  413. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/unsupported_adaptive.json +0 -0
  414. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/negative/wrong_uid.json +0 -0
  415. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/rpt_adaptive_all.json +0 -0
  416. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/rpt_silent.json +0 -0
  417. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/assets/examples/user_data.json +0 -0
  418. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources/skill/canconfig-python/references/operations.md +0 -0
  419. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/resources.py +0 -0
  420. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/src/canconfigpython/runtime.py +0 -0
  421. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tests/test_client.py +0 -0
  422. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tests/test_qt_free_root.py +0 -0
  423. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/bundle_source.py +0 -0
  424. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/import_sources.py +0 -0
  425. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/port_snapshot.py +0 -0
  426. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/prepare_qt_free_root.py +0 -0
  427. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/refresh_wheel_resources.py +0 -0
  428. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/rehash_runtime.py +0 -0
  429. {canconfigpython-0.1.0a1 → canconfigpython-0.1.0a2}/tools/repair_linux_wheel.py +0 -0
@@ -0,0 +1,239 @@
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 release candidate selects Qt 5.15.2 and MinGW 8.1, with separate native
10
+ builds for win32 and win_amd64. Do not retag a 32-bit runtime as win_amd64.
11
+
12
+ ~~~powershell
13
+ python -m pip install build setuptools wheel pytest twine PyYAML "readme_renderer[md]>=37,<46"
14
+ python tools/collect_windows_licenses.py --qt-version 5.15.2 --qt-install-root E:/Qt64 --compiler-root E:/Qt64/Tools/mingw810_32 --compiler-root E:/Qt64/Tools/mingw810_64
15
+ python tools/build_native.py --qmake E:/Qt64/5.15.2/mingw81_64/bin/qmake.exe --compiler-bin E:/Qt64/Tools/mingw810_64/bin --expected-qt-version 5.15.2 --architecture x86_64 --build-dir build/native-qt5152-win64
16
+ $env:CANCONFIG_NATIVE_BUILD_DIR = (Resolve-Path build/native-qt5152-win64).Path
17
+ python -m pytest -q
18
+ python tools/bundle_source.py
19
+ python -m build --wheel --no-isolation --outdir dist/windows-qt5152
20
+ ~~~
21
+
22
+ For win32 repeat with mingw81_32, mingw810_32, --architecture x86 and a separate
23
+ build directory. Build each wheel immediately after staging its matching runtime.
24
+ The qmake probe compiles Core/Network/SerialPort/Test (QT += testlib), checks
25
+ header/runtime Qt versions, and verifies the executable architecture. Every shipped
26
+ DLL is checked for the same PE architecture. Tests use the isolated fake driver.
27
+ With that toolchain's bin directories on PATH, also run:
28
+
29
+ ~~~console
30
+ python native/console/test_console_cli.py build/native-qt5152-win64/console/CANConfigConsole.exe build/native-qt5152-win64/fake/WIICAN.dll
31
+ ~~~
32
+
33
+ Never ship the fake driver. Keep corresponding sources, licenses and build records.
34
+ Source distributions require a supported toolchain when the staged runtime does
35
+ not match the target platform/architecture; rebuild before packaging a wheel.
36
+
37
+ ## Linux x86_64
38
+
39
+ On Debian/Ubuntu, provision build dependencies in the dedicated build environment:
40
+ ~~~bash
41
+ sudo apt-get update
42
+ sudo apt-get install -y build-essential qtbase5-dev libqt5serialport5-dev patchelf python3-venv
43
+ python3 -m venv .venv
44
+ . .venv/bin/activate
45
+ python -m pip install build setuptools wheel pytest twine auditwheel PyYAML
46
+ bash tools/build_linux.sh --qmake /home/USER/canconfigpython-qt5152/sdk/bin/qmake --expected-qt-version 5.15.2 --architecture x86_64
47
+ ~~~
48
+
49
+ The build preserves qmake launcher symlinks (including Ubuntu/Debian qtchooser),
50
+ selects Qt 5 and checks its version before compilation. Pass --qmake and
51
+ --expected-qt-version to pin an installed SDK; module availability is checked by
52
+ a compiled probe, including the QtTest module named testlib. Distro Qt in CI is
53
+ a separate compatibility build, not evidence of the Qt 5.15.2 release toolchain.
54
+ The script compiles and tests native code, resolves the non-glibc dependency closure,
55
+ records actual dependency paths/hashes and collects matching SDK/distro notices, tests Python and native subprocess behavior,
56
+ builds a Linux wheel, audits/repairs it and refreshes runtime hashes/RECORD.
57
+ Auditwheel limitations around dlopen are handled by explicitly including WIICAN
58
+ and traversing its dependency closure before repair. It does not justify unsupported
59
+ glibc tags; an incompatible baseline fails the build.
60
+
61
+ The GitHub Actions workflow provides a Linux build plus an installed-wheel check
62
+ inside a fresh Python Debian container without Qt installed. It only builds/uploads
63
+ CI artifacts, not PyPI. Configure it in the chosen repository and inspect the actual
64
+ run before marking Linux verified. ARM64/musl are not first-release targets.
65
+
66
+ ### Linux Qt 5.15.2 with current GCC
67
+
68
+ The existing unpatched Qt 5.15.2 SDK reproduced a QSettings save abort with
69
+ Ubuntu's GCC 13 / _FORTIFY_SOURCE=3. For the release, build a separate SDK:
70
+
71
+ ~~~bash
72
+ python3 tools/build_qt5152_linux.py --work-dir /home/USER/canconfigpython-qt5152 --jobs 4
73
+ bash tools/build_linux.sh --qmake /home/USER/canconfigpython-qt5152/sdk/bin/qmake --expected-qt-version 5.15.2 --architecture x86_64
74
+ ~~~
75
+
76
+ The SDK builder requires Linux x86_64, Python 3.12+, make, GCC, Perl and the
77
+ existing native development dependencies. It checks official QtBase and
78
+ QtSerialPort archive SHA-256 values, adds the missing GCC <limits> includes,
79
+ and backports Qt commit 2778f020218a503235638be558d86a05c38302ef (QTBUG-103782).
80
+ It preserves compiler fortify checks and builds a separate CLI SDK without
81
+ GUI, OpenSSL, ICU, GLib or zstd; only Core/Network/SerialPort are shipped.
82
+ The original installed Qt is not modified. An HTTPS --mirror-base may speed
83
+ downloads; it never changes the required official archive hashes.
84
+
85
+ The SDK includes share/canconfigpython/qt5152-linux-build.json and the full
86
+ patched source archive. The license collector checks Qt library hashes against
87
+ that record and copies the corresponding source into the Linux wheel as
88
+ resources/docs/qt5152-linux-source.tar.xz. `canconfig docs export` exports it
89
+ together with the project source. Qt build options, patch and source hashes
90
+ are retained in that archive. The native builder tests a real QSettings
91
+ write/read round trip before compiling the project.
92
+
93
+ ## Build on an existing Linux SSH host
94
+
95
+ The optional helper uses one SSH connection for upload, build, checks and download.
96
+ Install its development-only dependency and provide an existing verified host-key file:
97
+
98
+ ~~~powershell
99
+ python -m pip install "paramiko>=3.4"
100
+ python tools/build_linux_remote.py --host HOST --user USER --known-hosts PATH_TO_KNOWN_HOSTS --identity PATH_TO_EXISTING_KEY --check-only
101
+ python tools/build_linux_remote.py --host HOST --user USER --known-hosts PATH_TO_KNOWN_HOSTS --identity PATH_TO_EXISTING_KEY
102
+ ~~~
103
+
104
+ For the installed Linux SDK, add --backend host --qmake
105
+ /home/USER/canconfigpython-qt5152/sdk/bin/qmake --expected-qt-version 5.15.2 and select a
106
+ fresh --output-dir. Existing output wheels are never overwritten. Source notices
107
+ for the selected SDK must have been collected before creating the source bundle.
108
+
109
+ For password authentication, run in your own terminal and replace the identity
110
+ option with --password-prompt. Input is hidden; passwords are never arguments,
111
+ logs or files. The helper rejects unknown/changed host keys and does not modify
112
+ authorized_keys. Verify a host key separately before adding it to known_hosts.
113
+
114
+ Auto mode uses Docker when the SSH user already has access: compilation runs in
115
+ Ubuntu 22.04 and installation is checked in a fresh Python Debian container without
116
+ system Qt. Otherwise it uses existing host build dependencies and an isolated venv;
117
+ the default only reports missing packages. Add --install-build-deps to install the
118
+ listed build packages on Ubuntu/Debian via apt and sudo. This option cannot be
119
+ combined with --check-only. If sudo requires a password, a second hidden prompt
120
+ appears in your local terminal; the password travels only through SSH stdin and
121
+ is never saved. No Docker daemon or SSH key is installed. Use --backend to select
122
+ docker or host explicitly. Host mode requires Python 3.10+ and the dependencies above.
123
+ Its isolated-venv check does not replace the Qt-free installation acceptance criterion.
124
+ When Docker is unavailable, tools/verify_linux_remote.py checks an existing wheel
125
+ in a separate filesystem prepared by tools/prepare_qt_free_root.py. It copies the
126
+ system Python runtime and its dependencies, installs only the exact wheel, adds
127
+ only the native runtime's OS-provided glibc dependencies (including libresolv), and
128
+ asserts that all Qt/WIICAN libraries are inside that installed wheel. It enters
129
+ the filesystem via sudo/chroot, drops to the build user's numeric UID/GID before
130
+ executing tests, mounts no host directories and exposes no device nodes. No host
131
+ Qt package is changed. This verifies bundled dependencies on the host's glibc;
132
+ it does not verify older distributions or constitute a security sandbox.
133
+ The seven installed checks and the verified wheel SHA-256 are downloaded to
134
+ validation/linux/clean-install.json, qt-free-smoke.json and qt-free-root.json.
135
+ Before the CLI checks, the isolated ELF loader resolves every native file with
136
+ --list. Its results are retained in qt-free-elf-check.json even on failure;
137
+ the root inventory is downloaded before running tests. Non-glibc dependencies
138
+ resolved outside the bundled runtime fail preparation instead of being silently
139
+ copied from the host.
140
+
141
+ Each run creates a separate canconfigpython-build-* directory in the remote home.
142
+ Linux wheels are downloaded to dist/linux with transfer hashes checked. Logs and
143
+ status are in build/linux-remote.log and build/linux-remote-state.json; native test
144
+ logs/source notices are in validation/linux. No hardware commands or PyPI uploads
145
+ are executed. On interruption, inspect the retained remote build/container before
146
+ restarting. On host-build failure, available native qmake/make/test logs are downloaded to
147
+ validation/linux/failures/<remote-build-name> before SSH closes; the original
148
+ error remains the build result. If the connection itself fails, the retained
149
+ remote path stays in the state. tools/diagnose_linux_remote.py can reconnect
150
+ with --identity PATH_TO_EXISTING_KEY (or an explicit --password-prompt in a local terminal) to collect these logs, an independent
151
+ QtTest/settings round-trip probe and a native backtrace from the offline configuration test.
152
+ On x86_64 it also records readlink length/object-size arguments at the failing bounds check.
153
+ It does not install packages or access hardware. Diagnostic completion is
154
+ not a passing build result.
155
+
156
+ ### Shared SSH identity
157
+
158
+ The build, diagnostic and Qt-free verification tools use SSH agent/default keys
159
+ unless --identity selects a specific key or --password-prompt requests a hidden
160
+ local prompt. An explicit identity cannot fall back to unrelated agent keys.
161
+ An authentication rejection never triggers an automatic password retry. Key
162
+ login does not grant sudo: verification reports that a local terminal is needed
163
+ if the host requires a sudo password.
164
+
165
+ For a reusable local identity, tools/setup_linux_ssh.py accepts --host, --user,
166
+ --identity, --known-hosts and --profile. It first verifies key-only login. In a
167
+ local terminal, --install-public-key additionally permits a hidden SSH password
168
+ prompt and appends only the matching public key to that user's authorized_keys.
169
+ It retains existing entries, rejects symlinks/unsafe ownership, and disables
170
+ forwarding/PTY for the new key. A fresh key-only connection must succeed before
171
+ the connection profile is marked PASS. Private keys stay outside this project,
172
+ source bundles and wheels. Connection profiles contain paths, not private keys.
173
+
174
+ Local PowerShell helpers accept -Identity PATH, -PasswordPrompt and -NoPause.
175
+ After build/Enable-Linux-Key.ps1 succeeds, they reuse build/linux-ssh.json, which
176
+ points at the shared identity under the user's Documents directory. Other tasks
177
+ can read the shared connection.json instead of duplicating private key files.
178
+
179
+ ## Validate a release
180
+
181
+ ~~~console
182
+ python tools/check_wheel.py dist/WHEEL_FILENAME.whl
183
+ python -m twine check dist/*
184
+ python tools/check_documentation.py dist/WHEEL_FILENAME.whl
185
+ ~~~
186
+
187
+ Install each platform wheel in a clean environment outside the source directory.
188
+ Run version, doctor, schema, docs/skill export and offline firmware preflight.
189
+ The installed interpreter can run `python tools/smoke_installed.py --report REPORT.json`
190
+ to check those seven offline paths from a temporary working directory.
191
+ Verify upgrade/uninstall behavior and rerun relevant fake-driver tests for changes.
192
+ Physical configuration/password/firmware operations require explicit device scope
193
+ and separate hardware records. Update VALIDATION.md with actual evidence.
194
+
195
+ Do not bundle compiler tools, compiled fake drivers, real credentials, build logs, caches,
196
+ test firmware, local SSH host-key state or downloaded source archives inside wheels.
197
+ Native source/build scripts are in the sdist and the compact corresponding-source
198
+ archive in every wheel. Run tools/bundle_source.py after source changes and before
199
+ building: Console includes GPL-3.0-or-later Ymodem, while Python code remains MIT.
200
+
201
+ ## Publish
202
+
203
+ PyPI account credentials are not stored in this repository.
204
+ Once both required platforms and release criteria are verified, upload the exact
205
+ checked artifacts using your existing account:
206
+
207
+ ~~~console
208
+ python tools/publish_release.py --check-only
209
+ python tools/publish_release.py
210
+ ~~~
211
+
212
+ A Linux wheel may be in dist/linux; include its explicit path when uploading.
213
+ The local release helper tools/publish_release.py checks build/release-manifest.json,
214
+ all artifact hashes and metadata, and the exact Linux wheel's Qt-free acceptance
215
+ record before calling Twine. --check-only verifies files/metadata without uploading.
216
+ After uploading, it compares PyPI's reported filenames and SHA-256 values with the
217
+ manifest and writes validation/pypi-release.json. It refuses a preexisting filename
218
+ with a different digest; an interrupted partial upload can resume only matching files.
219
+ Enter the token via Twine's hidden prompt or a locally configured credential store.
220
+ Never paste tokens in chat or commit .pypirc. A configured PyPI Trusted Publisher
221
+ is another option; it must match the chosen repository/workflow. Version uploads
222
+ are immutable, so do not upload a partially validated replacement under the same
223
+ version. No upload is performed by build_linux.sh or the CI build workflow.
224
+
225
+ ## Documentation-only releases
226
+
227
+ PyPI renders the README from package metadata; it does not serve repository-relative
228
+ files. Keep public descriptions self-contained and use installed docs/skill export
229
+ instructions until a public documentation host is available. Validate rendered
230
+ README links and all bundled guide/Skill links with tools/check_documentation.py.
231
+ Twine's metadata check alone does not establish that linked files exist.
232
+
233
+ Published artifacts are immutable. Build a new version into its own dist/VERSION
234
+ directory and retain the published release and its validation records. A Linux
235
+ wheel may be repackaged by tools/repackage_documentation.py only when every native
236
+ source and Python module is unchanged except for the package version assignment.
237
+ It uses a freshly built wheel's metadata, preserves every native byte/permission,
238
+ and regenerates RECORD. The exact new Linux wheel still requires its own Qt-free
239
+ installed check; an old release's report cannot authorize the upload.
@@ -0,0 +1,419 @@
1
+ Metadata-Version: 2.1
2
+ Name: CANConfigPython
3
+ Version: 0.1.0a2
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.15.2-LICENSE.txt
20
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.FDL.txt
21
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.GPL2.txt
22
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.GPL3-EXCEPT.txt
23
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.GPL3.txt
24
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.LGPL3.txt
25
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.LGPLv3.txt
26
+ License-File: licenses\Qt-5.15.2-qtbase-LICENSE.QT-LICENSE-AGREEMENT.txt
27
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__LICENSE.txt.txt
28
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__VulkanMemoryAllocator__qt_attribution.json.txt
29
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__android__LICENSE.txt
30
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__android__qt_attribution.json.txt
31
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__KHRONOS_LICENSE.txt
32
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__LICENSE.txt
33
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__SYSTEMINFO_LICENSE.txt
34
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__TRACEEVENT_LICENSE.txt
35
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__qt_attribution.json.txt
36
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__common__third_party__smhasher__LICENSE.txt
37
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__compiler__translator__emulated_builtin_function_data_hlsl.json.txt
38
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_copy_conversion_formats.json.txt
39
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__es3_format_type_combinations.json.txt
40
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__format_map_data.json.txt
41
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__packed_gl_enums.json.txt
42
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_data.json.txt
43
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__angle_format_map.json.txt
44
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_format_data.json.txt
45
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt
46
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt
47
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_map.json.txt
48
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libANGLE__renderer__load_functions_data.json.txt
49
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__libGLESv2__proc_table_data.json.txt
50
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt
51
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__angle__src__third_party__libXNVCtrl__LICENSE.txt
52
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__double-conversion__LICENSE.txt
53
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__double-conversion__qt_attribution.json.txt
54
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__easing__LICENSE.txt
55
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__easing__easing.cpp.txt
56
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__easing__qt_attribution.json.txt
57
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__LICENSE.txt
58
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.c.txt
59
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd.h.txt
60
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_atomic.h.txt
61
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_c11.h.txt
62
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_freebsd.c.txt
63
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt
64
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__forkfd_linux.c.txt
65
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__forkfd__qt_attribution.json.txt
66
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt
67
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freebsd__LICENSE.txt
68
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freebsd__qt_attribution.json.txt
69
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoll.c.txt
70
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freebsd__strtoull.c.txt
71
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__BDF-LICENSE.txt.txt
72
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__LICENSE.txt.txt
73
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__PCF-LICENSE.txt.txt
74
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__ZLIB-LICENSE.txt.txt
75
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt
76
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__qt_attribution.json.txt
77
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt
78
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt
79
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt
80
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__gradle__LICENSE-GRADLEW.txt.txt
81
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__gradle__qt_attribution.json.txt
82
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt
83
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__harfbuzz-ng__qt_attribution.json.txt
84
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__COPYING.txt
85
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__harfbuzz__qt_attribution.json.txt
86
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__LICENSE.txt
87
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__iaccessible2__qt_attribution.json.txt
88
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__icc__LICENSE.txt.txt
89
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__icc__qt_attribution.json.txt
90
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__libjpeg__LICENSE.txt
91
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__libjpeg__qt_attribution.json.txt
92
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__libpng__LICENSE.txt
93
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__libpng__qt_attribution.json.txt
94
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md4__md4.cpp.txt
95
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md4__md4.h.txt
96
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md4__qt_attribution.json.txt
97
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md4c__LICENSE.md.txt
98
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md4c__qt_attribution.json.txt
99
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md5__md5.cpp.txt
100
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md5__md5.h.txt
101
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__md5__qt_attribution.json.txt
102
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE-SLJIT.txt
103
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__pcre2__LICENCE.txt
104
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__pcre2__qt_attribution.json.txt
105
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__pixman__LICENSE.txt
106
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__pixman__qt_attribution.json.txt
107
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__LICENSE.txt
108
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt
109
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__qt_attribution.json.txt
110
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha-private.h.txt
111
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha.h.txt
112
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt
113
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt
114
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha1__qt_attribution.json.txt
115
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha1__sha1.cpp.txt
116
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__BRG_ENDIAN_LICENSE.txt
117
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__CC0_LICENSE.txt
118
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt
119
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt
120
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt
121
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt
122
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt
123
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt
124
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt
125
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt
126
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt
127
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt
128
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt
129
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt
130
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt
131
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt
132
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.patch.txt
133
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__brg_endian.h.txt
134
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sha3__qt_attribution.json.txt
135
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__sqlite__qt_attribution.json.txt
136
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__tinycbor__LICENSE.txt
137
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__tinycbor__qt_attribution.json.txt
138
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__wasm__DEJAVU-LICENSE.txt
139
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__wasm__VERA-LICENSE.txt
140
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__wasm__qt_attribution.json.txt
141
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__wintab__LICENSE.txt.txt
142
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__wintab__qt_attribution.json.txt
143
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__xcb__LICENSE.txt
144
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__xcb__qt_attribution.json.txt
145
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__zlib__LICENSE.txt
146
+ License-File: licenses\Qt-5.15.2-qtbase-src__3rdparty__zlib__qt_attribution.json.txt
147
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QBIG5CODEC_LICENSE.txt.txt
148
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QBKCODEC_LICENSE.txt.txt
149
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QEUCJPCODEC_LICENSE.txt.txt
150
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QEUCKRCODEC_LICENSE.txt.txt
151
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QJISCODEC_LICENSE.txt.txt
152
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QSJISCODEC_LICENSE.txt.txt
153
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__QTSCIICODEC_LICENSE.txt.txt
154
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__codecs__qt_attribution.json.txt
155
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__io__PSL-LICENSE.txt.txt
156
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__io__qt_attribution.json.txt
157
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__kernel__QEVENTDISPATCHER_CF_LICENSE.txt.txt
158
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__kernel__qt_attribution.json.txt
159
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__text__UNICODE_LICENSE.txt.txt
160
+ License-File: licenses\Qt-5.15.2-qtbase-src__corelib__text__qt_attribution.json.txt
161
+ License-File: licenses\Qt-5.15.2-qtserialport-LICENSE.FDL.txt
162
+ License-File: licenses\Qt-5.15.2-qtserialport-LICENSE.GPL2.txt
163
+ License-File: licenses\Qt-5.15.2-qtserialport-LICENSE.GPL3-EXCEPT.txt
164
+ License-File: licenses\Qt-5.15.2-qtserialport-LICENSE.GPL3.txt
165
+ License-File: licenses\Qt-5.15.2-qtserialport-LICENSE.LGPL3.txt
166
+ License-File: licenses\Qt-5.7.1-LICENSE.txt
167
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.FDL.txt
168
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL2.txt
169
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL3-EXCEPT.txt
170
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPL3.txt
171
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.GPLv3.txt
172
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPL3.txt
173
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPLv21.txt
174
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.LGPLv3.txt
175
+ License-File: licenses\Qt-5.7.1-qtbase-LICENSE.PREVIEW.COMMERCIAL.txt
176
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__LICENSE.txt
177
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__dxgi_support_data.json.txt
178
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__load_functions_data.json.txt
179
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__swizzle_format_data.json.txt
180
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__libANGLE__renderer__d3d__d3d11__texture_format_data.json.txt
181
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__compiler__LICENSE.txt
182
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__angle__src__third_party__murmurhash__LICENSE.txt
183
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__double-conversion__LICENSE.txt
184
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__easing__easing.cpp.txt
185
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__easing__legal.qdoc.txt
186
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.c.txt
187
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd.h.txt
188
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__forkfd__forkfd_gcc.h.txt
189
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__0001-Patch-the-FreeBSD-strto-u-ll-functions-to-work-insid.patch.txt
190
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoll.c.txt
191
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freebsd__strtoull.c.txt
192
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__docs__LICENSE.TXT.txt
193
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__no-copyright.txt
194
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright-year.txt
195
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__freetype__src__tools__update-copyright.txt
196
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__harfbuzz-ng__COPYING.txt
197
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__harfbuzz__COPYING.txt
198
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__libpng__LICENSE.txt
199
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md4__md4.cpp.txt
200
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md4__md4.h.txt
201
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md5__md5.cpp.txt
202
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__md5__md5.h.txt
203
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__pcre__COPYING.txt
204
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__pcre__LICENCE.txt
205
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__patches__0001-Fix-compilation-MSVC-warning-in-3rdparty-rfc6234.patch.txt
206
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha-private.h.txt
207
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha.h.txt
208
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha224-256.c.txt
209
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__rfc6234__sha384-512.c.txt
210
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha1__sha1.cpp.txt
211
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32-rvk.macros.txt
212
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-32.macros.txt
213
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-64.macros.txt
214
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-int-set.h.txt
215
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-interface.h.txt
216
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32-settings.h.txt
217
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt32.c.txt
218
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64-settings.h.txt
219
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-opt64.c.txt
220
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakF-1600-unrolling.macros.txt
221
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.c.txt
222
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakNISTInterface.h.txt
223
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.c.txt
224
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__KeccakSponge.h.txt
225
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__sha3__brg_endian.h.txt
226
+ License-File: licenses\Qt-5.7.1-qtbase-src__3rdparty__xkbcommon__COPYING.txt
227
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.FDL.txt
228
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL2.txt
229
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL3-EXCEPT.txt
230
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPL3.txt
231
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPLv2.txt
232
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.GPLv3.txt
233
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPL3.txt
234
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPLv21.txt
235
+ License-File: licenses\Qt-5.7.1-qtserialport-LICENSE.LGPLv3.txt
236
+ License-File: licenses\gcc-COPYING.RUNTIME.txt
237
+ License-File: licenses\gcc-COPYING3.LIB.txt
238
+ License-File: licenses\gcc-COPYING3.txt
239
+ License-File: licenses\linux-libc6-copyright.txt
240
+ License-File: licenses\linux-libcap2-copyright.txt
241
+ License-File: licenses\linux-libcom-err2-copyright.txt
242
+ License-File: licenses\linux-libdouble-conversion3-copyright.txt
243
+ License-File: licenses\linux-libgcc-s1-copyright.txt
244
+ License-File: licenses\linux-libglib2.0-0t64-copyright.txt
245
+ License-File: licenses\linux-libgssapi-krb5-2-copyright.txt
246
+ License-File: licenses\linux-libicu74-copyright.txt
247
+ License-File: licenses\linux-libk5crypto3-copyright.txt
248
+ License-File: licenses\linux-libkeyutils1-copyright.txt
249
+ License-File: licenses\linux-libkrb5-3-copyright.txt
250
+ License-File: licenses\linux-libkrb5support0-copyright.txt
251
+ License-File: licenses\linux-libpcre2-16-0-copyright.txt
252
+ License-File: licenses\linux-libpcre2-8-0-copyright.txt
253
+ License-File: licenses\linux-libqt5core5t64-copyright.txt
254
+ License-File: licenses\linux-libqt5network5t64-copyright.txt
255
+ License-File: licenses\linux-libqt5serialport5-copyright.txt
256
+ License-File: licenses\linux-libstdc++6-copyright.txt
257
+ License-File: licenses\linux-libudev1-copyright.txt
258
+ License-File: licenses\linux-libzstd1-copyright.txt
259
+ License-File: licenses\linux-packages.json
260
+ License-File: licenses\linux-zlib1g-copyright.txt
261
+ License-File: licenses\mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
262
+ License-File: licenses\mingw-w64-COPYING.MinGW-w64.txt.txt
263
+ License-File: licenses\mingw-w64-COPYING.txt
264
+ License-File: licenses\mingw810_32-gcc-COPYING.RUNTIME.txt
265
+ License-File: licenses\mingw810_32-gcc-COPYING3.LIB.txt
266
+ License-File: licenses\mingw810_32-gcc-COPYING3.txt
267
+ License-File: licenses\mingw810_32-mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
268
+ License-File: licenses\mingw810_32-mingw-w64-COPYING.MinGW-w64.txt.txt
269
+ License-File: licenses\mingw810_32-mingw-w64-COPYING.txt
270
+ License-File: licenses\mingw810_32-winpthreads-COPYING.txt
271
+ License-File: licenses\mingw810_64-gcc-COPYING.RUNTIME.txt
272
+ License-File: licenses\mingw810_64-gcc-COPYING3.LIB.txt
273
+ License-File: licenses\mingw810_64-gcc-COPYING3.txt
274
+ License-File: licenses\mingw810_64-mingw-w64-COPYING.MinGW-w64-runtime.txt.txt
275
+ License-File: licenses\mingw810_64-mingw-w64-COPYING.MinGW-w64.txt.txt
276
+ License-File: licenses\mingw810_64-mingw-w64-COPYING.txt
277
+ License-File: licenses\mingw810_64-winpthreads-COPYING.txt
278
+ License-File: licenses\qt-5.15.2-source-notices.json
279
+ License-File: licenses\qt-source-notices.json
280
+ License-File: licenses\qt5152-linux-build.json
281
+ License-File: licenses\winpthreads-COPYING.txt
282
+ Provides-Extra: dev
283
+ Requires-Dist: pytest>=7; extra == "dev"
284
+ Requires-Dist: build>=1; extra == "dev"
285
+ Requires-Dist: twine>=5; extra == "dev"
286
+ Requires-Dist: PyYAML>=6; extra == "dev"
287
+
288
+ # CANConfigPython
289
+
290
+ Python CLI and API for CANHub, CANFB, CANBridge, CANRPT and CANCOM configuration.
291
+ The package runs a bundled Qt console subprocess, which uses WIICAN. It does not
292
+ require a GUI installation or a separately installed Qt runtime.
293
+
294
+ **0.1.0a2 is a prerelease.** It corrects the documentation entry points
295
+ and rebuilds Console/WIICAN with Qt 5.15.2. Windows supports Python 3.8+ on
296
+ x86/x64: win32 bundles 32-bit native files, win_amd64 bundles 64-bit native files.
297
+ Linux targets x86_64 with glibc 2.38 or newer (the audited manylinux baseline).
298
+ Its bundled Qt 5.15.2 includes upstream compatibility fixes for current GCC.
299
+ ARM64, macOS and musl are not supported.
300
+
301
+ ~~~text
302
+ canconfig / Python Client
303
+ -> CANConfigConsole.exe + WIICAN.dll (Windows)
304
+ -> CANConfigConsole + libWIICAN.so.1 (Linux)
305
+ ~~~
306
+
307
+ ## 安装与首次检查 / Install and check
308
+
309
+ 在 Python 虚拟环境中执行以下命令。Linux 可使用 `python3`;无需另装 Qt 或 WIICAN。
310
+ Run these commands in a Python virtual environment. Use `python3` on Linux if needed.
311
+
312
+ ~~~console
313
+ python -m pip install CANConfigPython==0.1.0a2
314
+ canconfig --version --json
315
+ canconfig doctor --json
316
+ ~~~
317
+
318
+ `doctor` 成功时返回 `ok=true`、`exit_code=0`、`data.device_opened=false`。
319
+ 它检查随包运行库,不连接设备。`schema`、`validate` 和固件 `--dry-run` 也不打开硬件。
320
+ 配置命令 `info` 和配置 `--dry-run` 会连接设备,并可能改变设备运行模式。
321
+
322
+ Doctor verifies the bundled runtime without opening a device. Check `ok`, `exit_code`
323
+ and `data.device_opened`. Configuration `info` and configuration `--dry-run` connect
324
+ to hardware and may change its run mode; use them only for an authorized target.
325
+
326
+ Upgrade to the latest prerelease with `python -m pip install --upgrade --pre CANConfigPython`.
327
+ Uninstall with `python -m pip uninstall CANConfigPython`.
328
+
329
+ ## 中文使用说明与英文手册 / User guides
330
+
331
+ 完整的中英文手册已包含在安装包内。PyPI 简介不会提供源码目录中的文件网页;
332
+ 请先导出文档,再在本机打开文件。以下操作无需连接设备或输入设备密码。
333
+
334
+ The complete Chinese and English manuals are included in the installed package.
335
+ Export them to a new directory and open the files locally; no device is required.
336
+
337
+ ~~~console
338
+ canconfig docs export --output ./canconfig-docs
339
+ ~~~
340
+
341
+ | 内容 / Content | 导出后的文件 / Exported file |
342
+ |---|---|
343
+ | 中文操作手册 | `canconfig-docs/user-guide.zh-CN.md` |
344
+ | English user guide | `canconfig-docs/user-guide.en.md` |
345
+ | 配套源码、构建说明、验证记录、许可证 / Source and supporting documents | `canconfig-docs/native-source.tar.gz` |
346
+ | Linux 随包 Qt 的完整修改源码 / Full modified Qt source, Linux wheel | `canconfig-docs/qt5152-linux-source.tar.xz` |
347
+
348
+ 使用支持 Markdown 的编辑器阅读 `.md` 文件;Windows 也可执行
349
+ `notepad .\canconfig-docs\user-guide.zh-CN.md` 阅读文本。
350
+ The manuals cover installation, device selection, password handling, backup/export,
351
+ validation/restore, JSON changes, firmware updates, failures and exit codes.
352
+
353
+ 导出目录必须不存在;如果提示 `output_exists`,请换一个新目录名,例如
354
+ `./canconfig-docs-a2`。导出不会覆盖已有文档,卸载也不会删除已导出的文件。
355
+ Export requires a new directory and never overwrites existing files.
356
+
357
+ ## Agent Skill 与用例 / Agent Skill and examples
358
+
359
+ ~~~console
360
+ canconfig skill export --output ./canconfig-skill
361
+ ~~~
362
+
363
+ | 内容 / Content | 导出后的文件 / Exported file |
364
+ |---|---|
365
+ | Skill 入口 / Entry point | `canconfig-skill/SKILL.md` |
366
+ | 操作参考 / Operation reference | `canconfig-skill/references/operations.md` |
367
+ | 中文用例目录 | `canconfig-skill/assets/examples/index.zh-CN.md` |
368
+ | English example catalog | `canconfig-skill/assets/examples/index.en.md` |
369
+ | JSON Schema | `canconfig-skill/assets/changes.schema.json` |
370
+
371
+ 将整个导出目录交给所用 Agent,或按该 Agent 的要求安装。保留 `references` 和
372
+ `assets` 子目录,才能使用 Skill 内部的文档和用例链接。安装 Python 包不会自动修改 Agent 设置。
373
+ Keep the complete exported directory together. Package installation does not change
374
+ Agent settings. Examples contain placeholder device identifiers and must be adapted
375
+ to the confirmed device and authorized operation before use.
376
+
377
+ ## Python API
378
+
379
+ ~~~python
380
+ from canconfigpython import Client, ConfigError
381
+
382
+ client = Client()
383
+ try:
384
+ result = client.execute("info", port="COM3") # Linux: confirmed /dev/serial/by-id/... path
385
+ except ConfigError as error:
386
+ print(error.code, error.message)
387
+ else:
388
+ print(result["exit_code"], result["effects"], result["verification"])
389
+ ~~~
390
+
391
+ `execute(command, password=..., new_password=..., **options)` uses snake_case options
392
+ such as `expect_uid`, `dry_run`, and `timeout_ms`; command names match the CLI.
393
+ Provide passwords from a secret store or prompt, not source code. Backend failures
394
+ return the full result; check `ok` and `exit_code`. Local validation/runtime errors
395
+ raise `ConfigError`. The wrapper does not automatically retry or roll back operations.
396
+ The Python runtime layer uses only the standard library.
397
+
398
+ ## 构建、验证记录与许可证 / Build, validation and licenses
399
+
400
+ 导出文档后,在一个新的工作目录解压 `canconfig-docs/native-source.tar.gz`。
401
+ 其顶层文件夹为 `canconfigpython-source`,其中包含:
402
+
403
+ | 文件 / File | 用途 / Purpose |
404
+ |---|---|
405
+ | `DEVELOPING.md` | Windows/Linux 构建、验证与发布说明 / Build and release instructions |
406
+ | `VALIDATION.md` | 实际测试范围和未完成条件 / Test evidence and limitations |
407
+ | `THIRD_PARTY_NOTICES.md` | 第三方组件和源码位置 / Third-party notices and source locations |
408
+ | `LICENSE`、`licenses/` | 许可证文本 / License texts |
409
+ | `native/`、`tools/`、`src/` | 对应源码及构建工具 / Corresponding source and build tools |
410
+
411
+ Extract the exported source archive to read these documents. The PyPI source
412
+ distribution also includes them. Simulated tests and installed-package checks do
413
+ not establish real-device configuration, firmware or power-cycle acceptance.
414
+
415
+ Python 包装层和项目自有新增代码采用 MIT。Console 包含 XinLi 的 GPL-3.0-or-later
416
+ Ymodem 实现,因此随包 Console 按 GPL-3.0-or-later 分发;Qt 和编译器运行库保留各自许可证。
417
+ The Python wrapper is MIT; the bundled Console is GPL-3.0-or-later. Every wheel
418
+ contains its corresponding project source. Preserve all applicable third-party notices.
419
+ Runtime hashes check bundle consistency; they are not publisher signatures.