benchlab-pytools 3.0.2__tar.gz → 3.0.4__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.4}/CHANGELOG.md +37 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/PKG-INFO +1 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/__init__.py +1 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/datasource.py +68 -4
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/mqtt_publisher.py +30 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/config.py +4 -1
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/.flake8 +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/.gitignore +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/CONTRIBUTING.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/LICENSE +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/__main__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/bootstrap.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/config_client.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/config_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/config_tool.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/diff.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/examples/complete_config.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/examples/rgb_lighting.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/examples/simple_fan.json +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/schema.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/test_config_client.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/test_config_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/config/test_diff.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/datasource_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/device_registry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/discovery.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/infrastructure.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/process_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/retry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/shared_serial.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/core/statistics.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/csv_logger_enhanced.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/message_batcher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/csv_log/smart_retry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/app.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/runner.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/test_graph.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/graph/ui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/hwinfo/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/hwinfo/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/hwinfo/hwinfo_export.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/hwinfo/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/hwinfo/test_hwinfo_export.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/launcher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/link/.env.EXAMPLE +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/link/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/link/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/link/link_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/link/test_link_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/menu.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/menu_classic.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/mqtt.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/mqtt/test_mqtt_publisher.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/prefs.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/.env.example +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/favicon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/readme.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/telemetry_api.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/restapi/test_server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/sources.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tools.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/test_tui_core.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/test_tui_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/tui_core.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/tui/tui_main.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/NOTICE.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/Running_from_source_on_linux.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/assets/vu1_hello_world.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/community_applications.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/config.yaml +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/database.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/dial_driver.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/dials/Comms_Hub_Server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/dials/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/dials/base_logger.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/installer/inc/icon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/installer/install.nsi +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/make_version.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/pylintrc +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/serial_driver.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/server.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/server_dial_handler.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/vu_notifications.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/android-chrome-192x192.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/android-chrome-512x512.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/apple-touch-icon.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-flags.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-payments.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-social.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-social.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-social.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler-vendors.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/tabler.rtl.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/theme.min.css +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/img/header.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/img/logo.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/dark-theme.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/dark-theme.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/demo.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/demo.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/jquery.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/tabler.esm.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/tabler.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/tabler.min.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_api.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_key_settings.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_api_keys.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_dial.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_home.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/vu1_gui_root.js +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/favicon-16x16.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/favicon-32x32.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/favicon.ico +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/favicon.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/index.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/api_keys.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/dial.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/footer.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/header.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/key_settings.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/start.html +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/assets/Barlow-Bold.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/assets/bl_dial_144x200.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/assets/bl_logo_144x200.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/devices.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/sensors.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/test_devices.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/test_vu_server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/test_vu_server_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/test_vu_tui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_dial.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_logo_gen.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_server.config_template +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_server_config.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_server_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_tui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/vu_updater.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/README.md +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/__init__.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/assets/Inter-Bold.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/assets/Inter.ttf +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/assets/benchlab.png +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_fleet.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_graph.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_overview.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_telemetry.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_ui.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/benchlab_utils.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/requirements.txt +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/test_wigidash.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/wigidash_device.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/wigidash_manager.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/wigidash_session.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/wigidash_usb.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/wigidash/wigidash_widget.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab.py +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/pyproject.toml +0 -0
- {benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/pytest.ini +0 -0
|
@@ -4,6 +4,41 @@ 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.4] - 2026-08-18
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- 12VHPWR tab per-pin sense lines (`HPWR{1,2}_W{1..6}`) read 0.0 over
|
|
11
|
+
`service_http`/`named_pipe`, even though other apps using the same
|
|
12
|
+
`service_http` API showed correct values. The C# service's telemetry
|
|
13
|
+
normalization mapped the HPWR1/HPWR2 rail summaries but never mapped
|
|
14
|
+
the 12 individual per-pin sense-line sensors, so their C#
|
|
15
|
+
`ShortName`s (`HPWR{n}_W{m}_{P,I,V}`) passed through unmapped instead
|
|
16
|
+
of becoming the `..._{Power,Current,Voltage}` keys the TUI reads.
|
|
17
|
+
|
|
18
|
+
## [3.0.3] - 2026-08-18
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- TUI: the 12VHPWR tab's Voltage section was cut off with no way to
|
|
22
|
+
scroll, since `MIN_TERMINAL_ROWS` (35) was well under the ~48 rows
|
|
23
|
+
the stacked Power/Current/Voltage layout plus status bar actually
|
|
24
|
+
needs. Raised to 48.
|
|
25
|
+
- `mqtt`, `service_http`, and `named_pipe` data sources never surfaced
|
|
26
|
+
`vendor_id`/`product_id`/`firmware_version`, so the Fleet TUI's
|
|
27
|
+
Model column (BL1 vs BL2 detection) was always wrong for these
|
|
28
|
+
sources:
|
|
29
|
+
- `mqtt`: the publisher's retained info payload only sent
|
|
30
|
+
`uid`/`com_port`/`firmware`; it now also reads
|
|
31
|
+
`ProductId`/`VendorId`/`FwVersion` via `read_device()` and
|
|
32
|
+
computes `variant`.
|
|
33
|
+
- `named_pipe`: the C# service's camelCase `productId` is now
|
|
34
|
+
mapped to the PascalCase keys the TUI expects
|
|
35
|
+
(`vendorId`/`firmwareVersion` also mapped), with `variant`
|
|
36
|
+
computed — field names verified against the
|
|
37
|
+
`BENCHLAB.BENCHLAB_Service` source.
|
|
38
|
+
- `service_http`: added a device-info normalization step (the C#
|
|
39
|
+
HTTP API only ever sends `productId`, confirmed against source —
|
|
40
|
+
vendor/firmware are unavailable there and default to unknown).
|
|
41
|
+
|
|
7
42
|
## [3.0.2] - 2026-08-18
|
|
8
43
|
|
|
9
44
|
### Fixed
|
|
@@ -67,6 +102,8 @@ export, MQTT publisher, VU dials, WigiDash, and config import/export tools,
|
|
|
67
102
|
sharing a common data-source layer (direct serial, FastAPI, MQTT, named
|
|
68
103
|
pipe, service HTTP).
|
|
69
104
|
|
|
105
|
+
[3.0.4]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.3...v3.0.4
|
|
106
|
+
[3.0.3]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.2...v3.0.3
|
|
70
107
|
[3.0.2]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.1...v3.0.2
|
|
71
108
|
[3.0.1]: https://github.com/BenchLab-io/benchlab-pytools/compare/v3.0.0...v3.0.1
|
|
72
109
|
[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
|
|
|
@@ -690,6 +698,16 @@ def _normalise_cs_telemetry(sensors_raw: list) -> Dict[str, Any]:
|
|
|
690
698
|
"HPWR2_P": "HPWR2_Power", "HPWR2_V": "HPWR2_Voltage",
|
|
691
699
|
"HPWR2_I": "HPWR2_Current",
|
|
692
700
|
|
|
701
|
+
# BL2 12VHPWR per-pin sense lines (HPWR{1,2}_W{1..6}), shown on
|
|
702
|
+
# the TUI's 12VHPWR tab as HPWR{n}_W{m}_{Power,Current,Voltage}
|
|
703
|
+
**{
|
|
704
|
+
f"HPWR{n}_W{m}_{suffix}": f"HPWR{n}_W{m}_{tui_suffix}"
|
|
705
|
+
for n in (1, 2)
|
|
706
|
+
for m in range(1, 7)
|
|
707
|
+
for suffix, tui_suffix in (
|
|
708
|
+
("P", "Power"), ("I", "Current"), ("V", "Voltage"))
|
|
709
|
+
},
|
|
710
|
+
|
|
693
711
|
# Board voltages
|
|
694
712
|
"VDD": "Vdd",
|
|
695
713
|
"VREF": "Vref",
|
|
@@ -729,6 +747,34 @@ def _normalise_cs_telemetry(sensors_raw: list) -> Dict[str, Any]:
|
|
|
729
747
|
return result
|
|
730
748
|
|
|
731
749
|
|
|
750
|
+
def _normalise_cs_device_info(d: Dict[str, Any]) -> Dict[str, Any]:
|
|
751
|
+
"""Normalise a C# service device dict into the shape the TUI expects.
|
|
752
|
+
|
|
753
|
+
The C# service's /devices, /device/{uid}/info, and discovery-pipe
|
|
754
|
+
responses use camelCase keys (productId, vendorId, firmwareVersion —
|
|
755
|
+
confirmed against BenchlabSensorWorker.cs/HttpApiServer.cs in the
|
|
756
|
+
BENCHLAB_Service repo). Note the HTTP API's /devices and
|
|
757
|
+
/device/{uid}/info endpoints only send productId — no vendorId or
|
|
758
|
+
firmwareVersion — so those default to 0 there; only the named-pipe
|
|
759
|
+
discovery/GetServiceInfo responses include all three.
|
|
760
|
+
DirectDataSource/FastAPIDataSource populate PascalCase keys
|
|
761
|
+
(ProductId, VendorId, FwVersion) plus a computed 'variant' — this
|
|
762
|
+
adds those same keys without discarding what the C# service sent.
|
|
763
|
+
"""
|
|
764
|
+
result = dict(d)
|
|
765
|
+
product_id = d.get("ProductId", d.get("productId", 0))
|
|
766
|
+
vendor_id = d.get("VendorId", d.get("vendorId", 0))
|
|
767
|
+
fw_version = d.get("FwVersion", d.get("firmwareVersion", 0))
|
|
768
|
+
result["ProductId"] = product_id
|
|
769
|
+
result["VendorId"] = vendor_id
|
|
770
|
+
result["FwVersion"] = fw_version
|
|
771
|
+
result.setdefault("firmware", d.get("firmware", fw_version))
|
|
772
|
+
# 0x11 = BENCHLAB_BL2_PRODUCT_ID (see DirectDataSource/tui_core.py).
|
|
773
|
+
result.setdefault(
|
|
774
|
+
"variant", "BL2" if product_id == 0x11 else "ORIGINAL")
|
|
775
|
+
return result
|
|
776
|
+
|
|
777
|
+
|
|
732
778
|
class NamedPipeDataSource(DataSource):
|
|
733
779
|
"""Data source that connects to the C# BenchLab Windows service via
|
|
734
780
|
named pipes.
|
|
@@ -792,14 +838,31 @@ class NamedPipeDataSource(DataSource):
|
|
|
792
838
|
self._pipe_names.clear()
|
|
793
839
|
for d in devices:
|
|
794
840
|
uid = d.get("guid") or d.get("deviceName", "unknown")
|
|
841
|
+
# Field names confirmed against BenchlabSensorWorker.cs's
|
|
842
|
+
# ListDevices response in the BENCHLAB_Service repo.
|
|
843
|
+
product_id = d.get("productId", 0)
|
|
844
|
+
vendor_id = d.get("vendorId", 0)
|
|
845
|
+
fw_version = d.get("firmwareVersion", 0)
|
|
846
|
+
# 0x11 = BENCHLAB_BL2_PRODUCT_ID (see
|
|
847
|
+
# DirectDataSource/tui_core.py); hardcoded rather than
|
|
848
|
+
# importing benchlab_pycore, which named_pipe consumers
|
|
849
|
+
# of the C# service don't necessarily have installed.
|
|
850
|
+
variant = "BL2" if product_id == 0x11 else "ORIGINAL"
|
|
795
851
|
self._devices[uid] = {
|
|
796
852
|
"uid": uid,
|
|
797
853
|
"port": d.get("port", "unknown"),
|
|
798
854
|
"name": d.get("deviceName", "unknown"),
|
|
799
|
-
"productId":
|
|
855
|
+
"productId": product_id,
|
|
800
856
|
"status": d.get("status", "unknown"),
|
|
801
857
|
"sensorCount": d.get("sensorCount", 0),
|
|
802
858
|
"pipeName": d.get("pipeName", ""),
|
|
859
|
+
# PascalCase aliases matching DirectDataSource's shape,
|
|
860
|
+
# so consumers (e.g. the TUI) can detect BL1/BL2.
|
|
861
|
+
"firmware": fw_version,
|
|
862
|
+
"variant": variant,
|
|
863
|
+
"VendorId": vendor_id,
|
|
864
|
+
"ProductId": product_id,
|
|
865
|
+
"FwVersion": fw_version,
|
|
803
866
|
}
|
|
804
867
|
self._pipe_names[uid] = d.get("pipeName", "")
|
|
805
868
|
|
|
@@ -1041,7 +1104,7 @@ class ServiceHttpDataSource(DataSource):
|
|
|
1041
1104
|
for d in devices:
|
|
1042
1105
|
uid = d.get("uid", "")
|
|
1043
1106
|
if uid:
|
|
1044
|
-
self._devices[uid] = d
|
|
1107
|
+
self._devices[uid] = _normalise_cs_device_info(d)
|
|
1045
1108
|
|
|
1046
1109
|
self._connected = True
|
|
1047
1110
|
self._stop_event.clear()
|
|
@@ -1146,7 +1209,8 @@ class ServiceHttpDataSource(DataSource):
|
|
|
1146
1209
|
for d in devices:
|
|
1147
1210
|
uid = d.get("uid", "")
|
|
1148
1211
|
if uid:
|
|
1149
|
-
self._devices[uid] =
|
|
1212
|
+
self._devices[uid] = (
|
|
1213
|
+
_normalise_cs_device_info(d))
|
|
1150
1214
|
|
|
1151
1215
|
# Poll telemetry for each device
|
|
1152
1216
|
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.4}/benchlab/config/examples/complete_config.json
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/assets/vu1_hello_world.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/dials/Comms_Hub_Gauge.py
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/dials/base_logger.py
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/installer/inc/icon.ico
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/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.4}/benchlab/vu/VU-Server/www/apple-touch-icon.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/css/demo.min.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/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.4}/benchlab/vu/VU-Server/www/assets/css/theme.min.css
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/img/header.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/img/logo.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/www/assets/js/demo.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/demo.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/jquery.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/www/assets/js/tabler.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/assets/js/tabler.min.js
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/benchlab/vu/VU-Server/www/favicon-16x16.png
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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.4}/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.4}/benchlab/vu/VU-Server/www/views/footer.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/header.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/benchlab/vu/VU-Server/www/views/key_settings.html
RENAMED
|
File without changes
|
{benchlab_pytools-3.0.2 → benchlab_pytools-3.0.4}/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
|