benchlab-pytools 3.0.2__tar.gz → 3.0.3__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.
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/CHANGELOG.md +25 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/PKG-INFO +1 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/__init__.py +1 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/datasource.py +58 -4
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/mqtt_publisher.py +30 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/config.py +4 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/.flake8 +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/.gitignore +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/CONTRIBUTING.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/LICENSE +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/__main__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/bootstrap.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/config_client.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/config_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/config_tool.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/diff.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/examples/complete_config.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/examples/rgb_lighting.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/examples/simple_fan.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/schema.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/test_config_client.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/test_config_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/test_diff.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/datasource_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/device_registry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/discovery.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/infrastructure.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/process_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/retry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/shared_serial.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/core/statistics.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/csv_logger_enhanced.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/message_batcher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/csv_log/smart_retry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/app.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/runner.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/test_graph.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/graph/ui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/hwinfo/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/hwinfo/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/hwinfo/hwinfo_export.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/hwinfo/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/hwinfo/test_hwinfo_export.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/launcher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/link/.env.EXAMPLE +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/link/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/link/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/link/link_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/link/test_link_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/menu.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/menu_classic.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/mqtt.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/mqtt/test_mqtt_publisher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/prefs.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/.env.example +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/favicon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/readme.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/telemetry_api.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/restapi/test_server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/sources.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tools.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/test_tui_core.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/test_tui_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/tui_core.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/tui/tui_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/NOTICE.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/Running_from_source_on_linux.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/assets/vu1_hello_world.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/community_applications.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/config.yaml +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/database.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dial_driver.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/Comms_Hub_Server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/base_logger.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/installer/inc/icon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/installer/install.nsi +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/make_version.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/pylintrc +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/serial_driver.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/server_dial_handler.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/vu_notifications.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/android-chrome-192x192.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/android-chrome-512x512.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/apple-touch-icon.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-social.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-social.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/theme.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/img/header.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/img/logo.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/dark-theme.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/dark-theme.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/demo.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/demo.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/jquery.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_api.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_key_settings.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_keys.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_dial.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_home.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_root.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon-16x16.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon-32x32.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/index.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/api_keys.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/dial.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/footer.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/header.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/key_settings.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/start.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/assets/Barlow-Bold.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/assets/bl_dial_144x200.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/assets/bl_logo_144x200.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/devices.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/sensors.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/test_devices.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/test_vu_server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/test_vu_server_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/test_vu_tui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_dial.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_logo_gen.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_server.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_server_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_tui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/vu_updater.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/assets/Inter-Bold.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/assets/Inter.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/assets/benchlab.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_fleet.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_graph.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_overview.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_telemetry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_ui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/benchlab_utils.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/test_wigidash.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/wigidash_device.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/wigidash_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/wigidash_session.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/wigidash_usb.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/wigidash/wigidash_widget.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/pyproject.toml +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/pytest.ini +0 -0
|
@@ -4,6 +4,30 @@ 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.3] - 2026-08-18
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- TUI: the 12VHPWR tab's Voltage section was cut off with no way to
|
|
11
|
+
scroll, since `MIN_TERMINAL_ROWS` (35) was well under the ~48 rows
|
|
12
|
+
the stacked Power/Current/Voltage layout plus status bar actually
|
|
13
|
+
needs. Raised to 48.
|
|
14
|
+
- `mqtt`, `service_http`, and `named_pipe` data sources never surfaced
|
|
15
|
+
`vendor_id`/`product_id`/`firmware_version`, so the Fleet TUI's
|
|
16
|
+
Model column (BL1 vs BL2 detection) was always wrong for these
|
|
17
|
+
sources:
|
|
18
|
+
- `mqtt`: the publisher's retained info payload only sent
|
|
19
|
+
`uid`/`com_port`/`firmware`; it now also reads
|
|
20
|
+
`ProductId`/`VendorId`/`FwVersion` via `read_device()` and
|
|
21
|
+
computes `variant`.
|
|
22
|
+
- `named_pipe`: the C# service's camelCase `productId` is now
|
|
23
|
+
mapped to the PascalCase keys the TUI expects
|
|
24
|
+
(`vendorId`/`firmwareVersion` also mapped), with `variant`
|
|
25
|
+
computed — field names verified against the
|
|
26
|
+
`BENCHLAB.BENCHLAB_Service` source.
|
|
27
|
+
- `service_http`: added a device-info normalization step (the C#
|
|
28
|
+
HTTP API only ever sends `productId`, confirmed against source —
|
|
29
|
+
vendor/firmware are unavailable there and default to unknown).
|
|
30
|
+
|
|
7
31
|
## [3.0.2] - 2026-08-18
|
|
8
32
|
|
|
9
33
|
### Fixed
|
|
@@ -67,6 +91,7 @@ export, MQTT publisher, VU dials, WigiDash, and config import/export tools,
|
|
|
67
91
|
sharing a common data-source layer (direct serial, FastAPI, MQTT, named
|
|
68
92
|
pipe, service HTTP).
|
|
69
93
|
|
|
94
|
+
[3.0.3]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.2...v3.0.3
|
|
70
95
|
[3.0.2]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.1...v3.0.2
|
|
71
96
|
[3.0.1]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.0...v3.0.1
|
|
72
97
|
[3.0.0]: https://github.com/BenchLab-io/benchlab-pytools/compare/v0.8.2...v3.0.0
|
|
@@ -595,7 +595,15 @@ class MQTTDataSource(DataSource):
|
|
|
595
595
|
|
|
596
596
|
with self._lock:
|
|
597
597
|
return [
|
|
598
|
-
{
|
|
598
|
+
{
|
|
599
|
+
'uid': uid,
|
|
600
|
+
'port': info.get('com_port', 'unknown'),
|
|
601
|
+
'firmware': info.get('firmware', '?'),
|
|
602
|
+
'variant': info.get('variant'),
|
|
603
|
+
'VendorId': info.get('VendorId', 0),
|
|
604
|
+
'ProductId': info.get('ProductId', 0),
|
|
605
|
+
'FwVersion': info.get('FwVersion', 0),
|
|
606
|
+
}
|
|
599
607
|
for uid, info in self._device_info.items()
|
|
600
608
|
]
|
|
601
609
|
|
|
@@ -729,6 +737,34 @@ def _normalise_cs_telemetry(sensors_raw: list) -> Dict[str, Any]:
|
|
|
729
737
|
return result
|
|
730
738
|
|
|
731
739
|
|
|
740
|
+
def _normalise_cs_device_info(d: Dict[str, Any]) -> Dict[str, Any]:
|
|
741
|
+
"""Normalise a C# service device dict into the shape the TUI expects.
|
|
742
|
+
|
|
743
|
+
The C# service's /devices, /device/{uid}/info, and discovery-pipe
|
|
744
|
+
responses use camelCase keys (productId, vendorId, firmwareVersion —
|
|
745
|
+
confirmed against BenchlabSensorWorker.cs/HttpApiServer.cs in the
|
|
746
|
+
BENCHLAB_Service repo). Note the HTTP API's /devices and
|
|
747
|
+
/device/{uid}/info endpoints only send productId — no vendorId or
|
|
748
|
+
firmwareVersion — so those default to 0 there; only the named-pipe
|
|
749
|
+
discovery/GetServiceInfo responses include all three.
|
|
750
|
+
DirectDataSource/FastAPIDataSource populate PascalCase keys
|
|
751
|
+
(ProductId, VendorId, FwVersion) plus a computed 'variant' — this
|
|
752
|
+
adds those same keys without discarding what the C# service sent.
|
|
753
|
+
"""
|
|
754
|
+
result = dict(d)
|
|
755
|
+
product_id = d.get("ProductId", d.get("productId", 0))
|
|
756
|
+
vendor_id = d.get("VendorId", d.get("vendorId", 0))
|
|
757
|
+
fw_version = d.get("FwVersion", d.get("firmwareVersion", 0))
|
|
758
|
+
result["ProductId"] = product_id
|
|
759
|
+
result["VendorId"] = vendor_id
|
|
760
|
+
result["FwVersion"] = fw_version
|
|
761
|
+
result.setdefault("firmware", d.get("firmware", fw_version))
|
|
762
|
+
# 0x11 = BENCHLAB_BL2_PRODUCT_ID (see DirectDataSource/tui_core.py).
|
|
763
|
+
result.setdefault(
|
|
764
|
+
"variant", "BL2" if product_id == 0x11 else "ORIGINAL")
|
|
765
|
+
return result
|
|
766
|
+
|
|
767
|
+
|
|
732
768
|
class NamedPipeDataSource(DataSource):
|
|
733
769
|
"""Data source that connects to the C# BenchLab Windows service via
|
|
734
770
|
named pipes.
|
|
@@ -792,14 +828,31 @@ class NamedPipeDataSource(DataSource):
|
|
|
792
828
|
self._pipe_names.clear()
|
|
793
829
|
for d in devices:
|
|
794
830
|
uid = d.get("guid") or d.get("deviceName", "unknown")
|
|
831
|
+
# Field names confirmed against BenchlabSensorWorker.cs's
|
|
832
|
+
# ListDevices response in the BENCHLAB_Service repo.
|
|
833
|
+
product_id = d.get("productId", 0)
|
|
834
|
+
vendor_id = d.get("vendorId", 0)
|
|
835
|
+
fw_version = d.get("firmwareVersion", 0)
|
|
836
|
+
# 0x11 = BENCHLAB_BL2_PRODUCT_ID (see
|
|
837
|
+
# DirectDataSource/tui_core.py); hardcoded rather than
|
|
838
|
+
# importing benchlab_pycore, which named_pipe consumers
|
|
839
|
+
# of the C# service don't necessarily have installed.
|
|
840
|
+
variant = "BL2" if product_id == 0x11 else "ORIGINAL"
|
|
795
841
|
self._devices[uid] = {
|
|
796
842
|
"uid": uid,
|
|
797
843
|
"port": d.get("port", "unknown"),
|
|
798
844
|
"name": d.get("deviceName", "unknown"),
|
|
799
|
-
"productId":
|
|
845
|
+
"productId": product_id,
|
|
800
846
|
"status": d.get("status", "unknown"),
|
|
801
847
|
"sensorCount": d.get("sensorCount", 0),
|
|
802
848
|
"pipeName": d.get("pipeName", ""),
|
|
849
|
+
# PascalCase aliases matching DirectDataSource's shape,
|
|
850
|
+
# so consumers (e.g. the TUI) can detect BL1/BL2.
|
|
851
|
+
"firmware": fw_version,
|
|
852
|
+
"variant": variant,
|
|
853
|
+
"VendorId": vendor_id,
|
|
854
|
+
"ProductId": product_id,
|
|
855
|
+
"FwVersion": fw_version,
|
|
803
856
|
}
|
|
804
857
|
self._pipe_names[uid] = d.get("pipeName", "")
|
|
805
858
|
|
|
@@ -1041,7 +1094,7 @@ class ServiceHttpDataSource(DataSource):
|
|
|
1041
1094
|
for d in devices:
|
|
1042
1095
|
uid = d.get("uid", "")
|
|
1043
1096
|
if uid:
|
|
1044
|
-
self._devices[uid] = d
|
|
1097
|
+
self._devices[uid] = _normalise_cs_device_info(d)
|
|
1045
1098
|
|
|
1046
1099
|
self._connected = True
|
|
1047
1100
|
self._stop_event.clear()
|
|
@@ -1146,7 +1199,8 @@ class ServiceHttpDataSource(DataSource):
|
|
|
1146
1199
|
for d in devices:
|
|
1147
1200
|
uid = d.get("uid", "")
|
|
1148
1201
|
if uid:
|
|
1149
|
-
self._devices[uid] =
|
|
1202
|
+
self._devices[uid] = (
|
|
1203
|
+
_normalise_cs_device_info(d))
|
|
1150
1204
|
|
|
1151
1205
|
# Poll telemetry for each device
|
|
1152
1206
|
with self._lock:
|
|
@@ -17,6 +17,11 @@ from benchlab_pycore.core import (
|
|
|
17
17
|
read_device,
|
|
18
18
|
BENCHLAB_ORIGINAL_PRODUCT_ID,
|
|
19
19
|
)
|
|
20
|
+
try:
|
|
21
|
+
from benchlab_pycore.core import BENCHLAB_BL2_PRODUCT_ID
|
|
22
|
+
except ImportError:
|
|
23
|
+
from benchlab_pycore.core import (
|
|
24
|
+
BENCHLAB_CFE_PRODUCT_ID as BENCHLAB_BL2_PRODUCT_ID)
|
|
20
25
|
from benchlab_pycore.core.serial_io import get_fleet_info
|
|
21
26
|
|
|
22
27
|
# Import DeviceRegistry so the MQTT publisher publishes device lifecycle events
|
|
@@ -340,12 +345,36 @@ def device_thread(device, cfg, publish_interval=1):
|
|
|
340
345
|
time.sleep(1)
|
|
341
346
|
continue
|
|
342
347
|
|
|
348
|
+
# Read device info (ProductId/VendorId/FwVersion) so the
|
|
349
|
+
# info payload lets consumers (e.g. the TUI) detect the
|
|
350
|
+
# BL1/BL2 variant, matching DirectDataSource's shape.
|
|
351
|
+
vendor_id = 0
|
|
352
|
+
product_id = BENCHLAB_ORIGINAL_PRODUCT_ID
|
|
353
|
+
fw_version = device.get("firmware")
|
|
354
|
+
try:
|
|
355
|
+
dev_info = read_device(ser)
|
|
356
|
+
if dev_info:
|
|
357
|
+
vendor_id = dev_info.get('VendorId', 0)
|
|
358
|
+
product_id = dev_info.get(
|
|
359
|
+
'ProductId', BENCHLAB_ORIGINAL_PRODUCT_ID)
|
|
360
|
+
fw_version = dev_info.get('FwVersion', fw_version)
|
|
361
|
+
except Exception:
|
|
362
|
+
pass
|
|
363
|
+
variant = (
|
|
364
|
+
"BL2" if product_id == BENCHLAB_BL2_PRODUCT_ID
|
|
365
|
+
else "ORIGINAL")
|
|
366
|
+
|
|
343
367
|
# Send initial info payload (retain=True so late subscribers
|
|
344
368
|
# like the TUI can discover this device)
|
|
345
369
|
info_payload = {
|
|
346
370
|
"uid": uid,
|
|
347
371
|
"com_port": port,
|
|
348
|
-
"firmware": device.get("firmware")
|
|
372
|
+
"firmware": device.get("firmware"),
|
|
373
|
+
"VendorId": vendor_id,
|
|
374
|
+
"ProductId": product_id,
|
|
375
|
+
"FwVersion": fw_version,
|
|
376
|
+
"variant": variant,
|
|
377
|
+
}
|
|
349
378
|
topic_info = f"{cfg['topic_prefix']}/{uid}/info"
|
|
350
379
|
mqtt_publish(
|
|
351
380
|
client,
|
|
@@ -14,7 +14,10 @@ from typing import Tuple
|
|
|
14
14
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
15
15
|
|
|
16
16
|
# Minimum terminal size requirements
|
|
17
|
-
|
|
17
|
+
# The 12VHPWR tab's stacked Power/Current/Voltage sections (12 channels
|
|
18
|
+
# each) need rows through ~45 for the last Voltage bar, plus 2 rows for
|
|
19
|
+
# the status bar at the bottom (drawn at height-2/height-1).
|
|
20
|
+
MIN_TERMINAL_ROWS = 48
|
|
18
21
|
MIN_TERMINAL_COLS = 100
|
|
19
22
|
|
|
20
23
|
# Tab configuration
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/examples/complete_config.json
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/config/examples/rgb_lighting.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/assets/vu1_hello_world.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/community_applications.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/Comms_Hub_Server.py
RENAMED
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/dials/base_logger.py
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/installer/inc/icon.ico
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/installer/install.nsi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/server_dial_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/apple-touch-icon.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.min.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/tabler.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/css/theme.min.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/img/header.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/img/logo.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/dark-theme.js
RENAMED
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/demo.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/demo.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/jquery.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.js
RENAMED
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/tabler.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/assets/js/vu1_api.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon-16x16.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/favicon-32x32.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/api_keys.html
RENAMED
|
File without changes
|
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/footer.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/header.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/key_settings.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.3}/benchlab/vu/VU-Server/www/views/start.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|