benchlab-pytools 3.0.0__tar.gz → 3.0.1__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 (207) hide show
  1. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/CHANGELOG.md +15 -0
  2. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/CONTRIBUTING.md +1 -1
  3. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/PKG-INFO +20 -3
  4. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/README.md +18 -2
  5. benchlab_pytools-3.0.1/benchlab/__init__.py +5 -0
  6. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1/benchlab}/bootstrap.py +0 -1
  7. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/menu.py +1 -1
  8. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/menu_classic.py +1 -1
  9. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1/benchlab}/requirements.txt +4 -1
  10. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tools.py +1 -1
  11. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab.py +5 -2
  12. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/pyproject.toml +1 -0
  13. benchlab_pytools-3.0.0/benchlab/__init__.py +0 -14
  14. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/.flake8 +0 -0
  15. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/.gitignore +0 -0
  16. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/LICENSE +0 -0
  17. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/__main__.py +0 -0
  18. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/README.md +0 -0
  19. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/__init__.py +0 -0
  20. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/config_client.py +0 -0
  21. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/config_manager.py +0 -0
  22. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/config_tool.py +0 -0
  23. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/diff.py +0 -0
  24. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/examples/complete_config.json +0 -0
  25. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/examples/rgb_lighting.json +0 -0
  26. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/examples/simple_fan.json +0 -0
  27. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/schema.py +0 -0
  28. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/test_config_client.py +0 -0
  29. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/test_config_manager.py +0 -0
  30. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/config/test_diff.py +0 -0
  31. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/README.md +0 -0
  32. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/__init__.py +0 -0
  33. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/config.py +0 -0
  34. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/datasource.py +0 -0
  35. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/datasource_manager.py +0 -0
  36. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/device_registry.py +0 -0
  37. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/discovery.py +0 -0
  38. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/infrastructure.py +0 -0
  39. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/process_manager.py +0 -0
  40. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/retry.py +0 -0
  41. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/shared_serial.py +0 -0
  42. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/core/statistics.py +0 -0
  43. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/README.md +0 -0
  44. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/__init__.py +0 -0
  45. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/csv_logger_enhanced.py +0 -0
  46. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/message_batcher.py +0 -0
  47. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/requirements.txt +0 -0
  48. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/csv_log/smart_retry.py +0 -0
  49. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/README.md +0 -0
  50. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/__init__.py +0 -0
  51. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/app.py +0 -0
  52. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/requirements.txt +0 -0
  53. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/runner.py +0 -0
  54. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/test_graph.py +0 -0
  55. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/graph/ui.py +0 -0
  56. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/hwinfo/README.md +0 -0
  57. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/hwinfo/__init__.py +0 -0
  58. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/hwinfo/hwinfo_export.py +0 -0
  59. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/hwinfo/requirements.txt +0 -0
  60. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/hwinfo/test_hwinfo_export.py +0 -0
  61. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/launcher.py +0 -0
  62. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/link/.env.EXAMPLE +0 -0
  63. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/link/README.md +0 -0
  64. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/link/__init__.py +0 -0
  65. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/link/link_main.py +0 -0
  66. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/link/test_link_main.py +0 -0
  67. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/main.py +0 -0
  68. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/README.md +0 -0
  69. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/__init__.py +0 -0
  70. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/mqtt.config_template +0 -0
  71. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/mqtt_publisher.py +0 -0
  72. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/requirements.txt +0 -0
  73. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/mqtt/test_mqtt_publisher.py +0 -0
  74. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/prefs.py +0 -0
  75. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/.env.example +0 -0
  76. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/__init__.py +0 -0
  77. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/favicon.ico +0 -0
  78. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/readme.md +0 -0
  79. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/requirements.txt +0 -0
  80. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/telemetry_api.py +0 -0
  81. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/restapi/test_server.py +0 -0
  82. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/sources.py +0 -0
  83. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/README.md +0 -0
  84. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/__init__.py +0 -0
  85. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/config.py +0 -0
  86. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/requirements.txt +0 -0
  87. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/test_tui_core.py +0 -0
  88. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/test_tui_main.py +0 -0
  89. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/tui_core.py +0 -0
  90. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/tui/tui_main.py +0 -0
  91. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/README.md +0 -0
  92. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/NOTICE.md +0 -0
  93. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/README.md +0 -0
  94. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/Running_from_source_on_linux.md +0 -0
  95. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/__init__.py +0 -0
  96. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/assets/vu1_hello_world.png +0 -0
  97. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/community_applications.md +0 -0
  98. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/config.yaml +0 -0
  99. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/database.py +0 -0
  100. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/dial_driver.py +0 -0
  101. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py +0 -0
  102. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/dials/Comms_Hub_Server.py +0 -0
  103. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/dials/__init__.py +0 -0
  104. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/dials/base_logger.py +0 -0
  105. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/installer/inc/icon.ico +0 -0
  106. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/installer/install.nsi +0 -0
  107. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/make_version.py +0 -0
  108. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/pylintrc +0 -0
  109. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/requirements.txt +0 -0
  110. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/serial_driver.py +0 -0
  111. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/server.py +0 -0
  112. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/server_config.py +0 -0
  113. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/server_dial_handler.py +0 -0
  114. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/vu_notifications.py +0 -0
  115. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/android-chrome-192x192.png +0 -0
  116. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/android-chrome-512x512.png +0 -0
  117. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/apple-touch-icon.png +0 -0
  118. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/demo.css +0 -0
  119. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/demo.min.css +0 -0
  120. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.css +0 -0
  121. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.min.css +0 -0
  122. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.css +0 -0
  123. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.min.css +0 -0
  124. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.css +0 -0
  125. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.min.css +0 -0
  126. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.css +0 -0
  127. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.min.css +0 -0
  128. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.css +0 -0
  129. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.min.css +0 -0
  130. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-social.css +0 -0
  131. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-social.min.css +0 -0
  132. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.css +0 -0
  133. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.min.css +0 -0
  134. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.css +0 -0
  135. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.min.css +0 -0
  136. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.css +0 -0
  137. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.min.css +0 -0
  138. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler.css +0 -0
  139. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler.min.css +0 -0
  140. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.css +0 -0
  141. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.min.css +0 -0
  142. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/css/theme.min.css +0 -0
  143. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/img/header.png +0 -0
  144. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/img/logo.png +0 -0
  145. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/dark-theme.js +0 -0
  146. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/dark-theme.min.js +0 -0
  147. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/demo.js +0 -0
  148. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/demo.min.js +0 -0
  149. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/jquery.min.js +0 -0
  150. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.js +0 -0
  151. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.min.js +0 -0
  152. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/tabler.js +0 -0
  153. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/tabler.min.js +0 -0
  154. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_api.js +0 -0
  155. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_key_settings.js +0 -0
  156. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_keys.js +0 -0
  157. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_dial.js +0 -0
  158. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_home.js +0 -0
  159. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_root.js +0 -0
  160. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/favicon-16x16.png +0 -0
  161. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/favicon-32x32.png +0 -0
  162. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/favicon.ico +0 -0
  163. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/favicon.png +0 -0
  164. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/index.html +0 -0
  165. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/api_keys.html +0 -0
  166. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/dial.html +0 -0
  167. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/footer.html +0 -0
  168. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/header.html +0 -0
  169. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/key_settings.html +0 -0
  170. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/VU-Server/www/views/start.html +0 -0
  171. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/__init__.py +0 -0
  172. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/assets/Barlow-Bold.ttf +0 -0
  173. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/assets/bl_dial_144x200.png +0 -0
  174. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/assets/bl_logo_144x200.png +0 -0
  175. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/devices.py +0 -0
  176. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/requirements.txt +0 -0
  177. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/sensors.py +0 -0
  178. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/test_devices.py +0 -0
  179. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/test_vu_server_config.py +0 -0
  180. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/test_vu_server_manager.py +0 -0
  181. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/test_vu_tui.py +0 -0
  182. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_dial.config_template +0 -0
  183. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_logo_gen.py +0 -0
  184. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_server.config_template +0 -0
  185. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_server_config.py +0 -0
  186. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_server_manager.py +0 -0
  187. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_tui.py +0 -0
  188. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/vu/vu_updater.py +0 -0
  189. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/README.md +0 -0
  190. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/__init__.py +0 -0
  191. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/assets/Inter-Bold.ttf +0 -0
  192. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/assets/Inter.ttf +0 -0
  193. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/assets/benchlab.png +0 -0
  194. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_fleet.py +0 -0
  195. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_graph.py +0 -0
  196. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_overview.py +0 -0
  197. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_telemetry.py +0 -0
  198. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_ui.py +0 -0
  199. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/benchlab_utils.py +0 -0
  200. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/requirements.txt +0 -0
  201. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/test_wigidash.py +0 -0
  202. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/wigidash_device.py +0 -0
  203. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/wigidash_manager.py +0 -0
  204. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/wigidash_session.py +0 -0
  205. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/wigidash_usb.py +0 -0
  206. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/benchlab/wigidash/wigidash_widget.py +0 -0
  207. {benchlab_pytools-3.0.0 → benchlab_pytools-3.0.1}/pytest.ini +0 -0
@@ -4,6 +4,20 @@ All notable changes to BENCHLAB PyTools are documented here. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versioning follows
5
5
  [SemVer](https://semver.org/).
6
6
 
7
+ ## [3.0.1] - 2026-08-18
8
+
9
+ ### Fixed
10
+ - PyPI install was broken: `bootstrap.py` and the core `requirements.txt`
11
+ lived at the repo root and were never included in the wheel (only
12
+ `benchlab/` is packaged), so `pip install benchlab-pytools` followed by
13
+ `benchlab ...` failed with `ModuleNotFoundError: No module named
14
+ 'bootstrap'`. Both files moved into `benchlab/`, with internal imports
15
+ updated to relative imports.
16
+ - `pywin32` was missing from `pyproject.toml`'s core dependencies, so
17
+ PyPI installs on Windows did not pull it in despite the `named_pipe`
18
+ data source depending on it. Added `pywin32>=306; platform_system ==
19
+ 'Windows'` alongside the existing `windows-curses` entry.
20
+
7
21
  ## [3.0.0] - 2026-08-15
8
22
 
9
23
  ### Added
@@ -41,4 +55,5 @@ export, MQTT publisher, VU dials, WigiDash, and config import/export tools,
41
55
  sharing a common data-source layer (direct serial, FastAPI, MQTT, named
42
56
  pipe, service HTTP).
43
57
 
58
+ [3.0.1]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.0...v3.0.1
44
59
  [3.0.0]: https://github.com/BenchLab-io/benchlab-pytools/compare/v0.8.2...v3.0.0
@@ -5,7 +5,7 @@
5
5
  ```bash
6
6
  git clone https://github.com/BenchLab-io/benchlab-pytools.git
7
7
  cd benchlab-pytools
8
- pip install -r requirements.txt
8
+ pip install -r benchlab/requirements.txt
9
9
  pip install -r benchlab/csv_log/requirements.txt
10
10
  pip install -r benchlab/graph/requirements.txt
11
11
  pip install -r benchlab/wigidash/requirements.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: benchlab-pytools
3
- Version: 3.0.0
3
+ Version: 3.0.1
4
4
  Summary: Python control suite for BENCHLAB telemetry devices
5
5
  Project-URL: Homepage, https://benchlab.io/
6
6
  Project-URL: Repository, https://github.com/BenchLab-io/benchlab-pytools
@@ -25,6 +25,7 @@ Requires-Python: >=3.10
25
25
  Requires-Dist: benchlab-pycore>=0.5.1
26
26
  Requires-Dist: packaging<26.0,>=23.0
27
27
  Requires-Dist: python-dotenv<2.0,>=1.0.0
28
+ Requires-Dist: pywin32>=306; platform_system == 'Windows'
28
29
  Requires-Dist: textual<9.0,>=0.60
29
30
  Requires-Dist: windows-curses>=2.4.1; platform_system == 'Windows'
30
31
  Provides-Extra: all
@@ -111,8 +112,18 @@ All tools share a common data-source layer, so the same telemetry can be read di
111
112
 
112
113
  Requires Python 3.10+.
113
114
 
115
+ ### From PyPI
116
+
117
+ ```bash
118
+ pip install benchlab-pytools
119
+ ```
120
+
121
+ This installs a `benchlab` console command on your PATH (see [Command-Line Flags](#command-line-flags) below). Install with extras for the tools you need, e.g. `pip install "benchlab-pytools[tui]"`.
122
+
123
+ ### From source
124
+
114
125
  ```bash
115
- pip install -r requirements.txt
126
+ pip install -r benchlab/requirements.txt
116
127
  ```
117
128
 
118
129
  Each tool has its own `requirements.txt` (e.g. `benchlab/graph/requirements.txt`, `benchlab/vu/requirements.txt`). The launcher installs a tool's requirements automatically the first time it's run — you generally don't need to install them by hand.
@@ -135,11 +146,17 @@ or equivalently:
135
146
  python -m benchlab
136
147
  ```
137
148
 
149
+ If installed from PyPI, use the `benchlab` command instead:
150
+
151
+ ```bash
152
+ benchlab
153
+ ```
154
+
138
155
  The interactive menu (prompt_toolkit-based, with a plain-input fallback if `prompt_toolkit` isn't installed) lets you pick a data source and one or more tools, then launches them — installing any missing per-tool dependencies along the way.
139
156
 
140
157
  ### Command-Line Flags
141
158
 
142
- Each tool can also be launched directly with a flag:
159
+ Each tool can also be launched directly with a flag. If installed from PyPI, replace `python -m benchlab` with `benchlab` in the examples below (e.g. `benchlab -tui`).
143
160
 
144
161
  ```bash
145
162
  python -m benchlab -tui # Interactive terminal dashboard
@@ -21,8 +21,18 @@ All tools share a common data-source layer, so the same telemetry can be read di
21
21
 
22
22
  Requires Python 3.10+.
23
23
 
24
+ ### From PyPI
25
+
26
+ ```bash
27
+ pip install benchlab-pytools
28
+ ```
29
+
30
+ This installs a `benchlab` console command on your PATH (see [Command-Line Flags](#command-line-flags) below). Install with extras for the tools you need, e.g. `pip install "benchlab-pytools[tui]"`.
31
+
32
+ ### From source
33
+
24
34
  ```bash
25
- pip install -r requirements.txt
35
+ pip install -r benchlab/requirements.txt
26
36
  ```
27
37
 
28
38
  Each tool has its own `requirements.txt` (e.g. `benchlab/graph/requirements.txt`, `benchlab/vu/requirements.txt`). The launcher installs a tool's requirements automatically the first time it's run — you generally don't need to install them by hand.
@@ -45,11 +55,17 @@ or equivalently:
45
55
  python -m benchlab
46
56
  ```
47
57
 
58
+ If installed from PyPI, use the `benchlab` command instead:
59
+
60
+ ```bash
61
+ benchlab
62
+ ```
63
+
48
64
  The interactive menu (prompt_toolkit-based, with a plain-input fallback if `prompt_toolkit` isn't installed) lets you pick a data source and one or more tools, then launches them — installing any missing per-tool dependencies along the way.
49
65
 
50
66
  ### Command-Line Flags
51
67
 
52
- Each tool can also be launched directly with a flag:
68
+ Each tool can also be launched directly with a flag. If installed from PyPI, replace `python -m benchlab` with `benchlab` in the examples below (e.g. `benchlab -tui`).
53
69
 
54
70
  ```bash
55
71
  python -m benchlab -tui # Interactive terminal dashboard
@@ -0,0 +1,5 @@
1
+ """
2
+ BENCHLAB Telemetry Package
3
+ """
4
+
5
+ __version__ = "3.0.1"
@@ -149,7 +149,6 @@ def install_core_requirements():
149
149
  req_file = BASE_DIR / "requirements.txt"
150
150
 
151
151
  if not req_file.exists():
152
- logger.warning("No global requirements.txt found")
153
152
  return
154
153
 
155
154
  install_requirements_file(str(req_file), "CORE")
@@ -23,7 +23,7 @@ import os
23
23
  import sys
24
24
  from typing import Dict, List, Optional, Tuple, Union
25
25
 
26
- from bootstrap import clear_screen
26
+ from .bootstrap import clear_screen
27
27
  from .tools import CONSUMER_TOOLS
28
28
  from .sources import (
29
29
  check_and_setup_source,
@@ -11,7 +11,7 @@ import os
11
11
  import sys
12
12
  from typing import List, Optional
13
13
 
14
- from bootstrap import clear_screen
14
+ from .bootstrap import clear_screen
15
15
  from .tools import CONSUMER_TOOLS
16
16
  from .sources import (
17
17
  check_and_setup_source,
@@ -22,4 +22,7 @@ paho-mqtt>=2.0,<3.0
22
22
  amqtt>=0.12.0,<0.13.0
23
23
 
24
24
  # Curses-based TUI
25
- windows-curses>=2.4.1; platform_system=="Windows"
25
+ windows-curses>=2.4.1; platform_system=="Windows"
26
+
27
+ # Named Pipe Data Source (BL_Service)
28
+ pywin32>=306; platform_system=="Windows"
@@ -9,7 +9,7 @@ import importlib.util
9
9
  import logging
10
10
  from pathlib import Path
11
11
 
12
- from bootstrap import install_requirements_file
12
+ from .bootstrap import install_requirements_file
13
13
 
14
14
  logger = logging.getLogger("benchlab.launcher")
15
15
 
@@ -22,13 +22,16 @@ if not logger.handlers:
22
22
 
23
23
 
24
24
  def main():
25
+ sys.path.insert(0, str(BASE_DIR))
26
+
25
27
  # Fast fail checks first
26
- from bootstrap import check_python_version, install_core_requirements
28
+ from benchlab.bootstrap import (
29
+ check_python_version, install_core_requirements,
30
+ )
27
31
  check_python_version()
28
32
  install_core_requirements()
29
33
 
30
34
  # Delegate everything to main entry point
31
- sys.path.insert(0, str(BASE_DIR))
32
35
  from benchlab.main import main
33
36
  main()
34
37
 
@@ -33,6 +33,7 @@ dependencies = [
33
33
  "textual>=0.60,<9.0",
34
34
  "benchlab-pycore>=0.5.1",
35
35
  "windows-curses>=2.4.1; platform_system=='Windows'",
36
+ "pywin32>=306; platform_system=='Windows'",
36
37
  ]
37
38
 
38
39
  [project.optional-dependencies]
@@ -1,14 +0,0 @@
1
- """
2
- BENCHLAB Telemetry Package
3
- """
4
-
5
- import os as _os
6
- import sys as _sys
7
-
8
- # Ensure the repo root (containing bootstrap.py) is importable. Centralized
9
- # here so menu.py/tools.py don't each need their own sys.path.insert hack.
10
- _repo_root = _os.path.dirname(_os.path.dirname(_os.path.abspath(__file__)))
11
- if _repo_root not in _sys.path:
12
- _sys.path.insert(0, _repo_root)
13
-
14
- __version__ = "3.0.0"