qplotter 1.6.0b3__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.
- qplotter-1.6.0b3/Agents.md +110 -0
- qplotter-1.6.0b3/CHANGELOG.md +666 -0
- qplotter-1.6.0b3/CONTRIBUTING.md +306 -0
- qplotter-1.6.0b3/LICENSE +21 -0
- qplotter-1.6.0b3/MANIFEST.in +35 -0
- qplotter-1.6.0b3/PKG-INFO +318 -0
- qplotter-1.6.0b3/README.md +273 -0
- qplotter-1.6.0b3/docs/architecture.md +824 -0
- qplotter-1.6.0b3/docs/assets/qplot-color-scale-dialog.png +0 -0
- qplotter-1.6.0b3/docs/assets/qplot-heatmap.png +0 -0
- qplotter-1.6.0b3/docs/assets/qplot-line-plot.png +0 -0
- qplotter-1.6.0b3/docs/assets/qplot-main-window.png +0 -0
- qplotter-1.6.0b3/docs/configuration.md +148 -0
- qplotter-1.6.0b3/docs/demo-data.md +170 -0
- qplotter-1.6.0b3/docs/distribution.md +587 -0
- qplotter-1.6.0b3/docs/troubleshooting.md +397 -0
- qplotter-1.6.0b3/docs/trusted-live-reader.md +985 -0
- qplotter-1.6.0b3/docs/user-guide.md +584 -0
- qplotter-1.6.0b3/pyproject.toml +230 -0
- qplotter-1.6.0b3/scripts/README.md +69 -0
- qplotter-1.6.0b3/scripts/benchmark_heatmap_aggregation.py +137 -0
- qplotter-1.6.0b3/scripts/benchmark_plot_launch.py +242 -0
- qplotter-1.6.0b3/scripts/capture_demo_screenshots.py +297 -0
- qplotter-1.6.0b3/scripts/liveplot.py +89 -0
- qplotter-1.6.0b3/scripts/manual_run.py +22 -0
- qplotter-1.6.0b3/scripts/profile_trusted_reads.py +77 -0
- qplotter-1.6.0b3/scripts/release.py +336 -0
- qplotter-1.6.0b3/scripts/time_stress.py +97 -0
- qplotter-1.6.0b3/scripts/validate_compiler_free_install.py +477 -0
- qplotter-1.6.0b3/scripts/validate_distribution.py +3825 -0
- qplotter-1.6.0b3/setup.cfg +4 -0
- qplotter-1.6.0b3/src/qplot/__init__.py +46 -0
- qplotter-1.6.0b3/src/qplot/__main__.py +232 -0
- qplotter-1.6.0b3/src/qplot/_auxiliary_paths.py +63 -0
- qplotter-1.6.0b3/src/qplot/_metadata.py +12 -0
- qplotter-1.6.0b3/src/qplot/_repair.py +14 -0
- qplotter-1.6.0b3/src/qplot/_shutdown_supervisor.py +4049 -0
- qplotter-1.6.0b3/src/qplot/_version.py +12 -0
- qplotter-1.6.0b3/src/qplot/_windows_shutdown_job.py +1166 -0
- qplotter-1.6.0b3/src/qplot/configuration/__init__.py +3 -0
- qplotter-1.6.0b3/src/qplot/configuration/config.py +573 -0
- qplotter-1.6.0b3/src/qplot/configuration/config_schema.json +319 -0
- qplotter-1.6.0b3/src/qplot/configuration/scripts.py +255 -0
- qplotter-1.6.0b3/src/qplot/configuration/themes/__init__.py +13 -0
- qplotter-1.6.0b3/src/qplot/configuration/themes/_base.py +579 -0
- qplotter-1.6.0b3/src/qplot/configuration/themes/blank.py +17 -0
- qplotter-1.6.0b3/src/qplot/configuration/themes/dark.py +54 -0
- qplotter-1.6.0b3/src/qplot/configuration/themes/light.py +54 -0
- qplotter-1.6.0b3/src/qplot/datahandling/LoadFromDB.py +224 -0
- qplotter-1.6.0b3/src/qplot/datahandling/__init__.py +47 -0
- qplotter-1.6.0b3/src/qplot/datahandling/_trusted_live_helper.py +812 -0
- qplotter-1.6.0b3/src/qplot/datahandling/_trusted_live_protocol.py +1745 -0
- qplotter-1.6.0b3/src/qplot/datahandling/database.py +2330 -0
- qplotter-1.6.0b3/src/qplot/datahandling/dimensions.py +43 -0
- qplotter-1.6.0b3/src/qplot/datahandling/file_identity.py +461 -0
- qplotter-1.6.0b3/src/qplot/datahandling/parameter_data.py +149 -0
- qplotter-1.6.0b3/src/qplot/datahandling/plot_progress.py +17 -0
- qplotter-1.6.0b3/src/qplot/datahandling/qcodes_cache.py +277 -0
- qplotter-1.6.0b3/src/qplot/datahandling/qcodes_compat.py +14 -0
- qplotter-1.6.0b3/src/qplot/datahandling/readSQL.py +2442 -0
- qplotter-1.6.0b3/src/qplot/datahandling/readonly.py +2561 -0
- qplotter-1.6.0b3/src/qplot/datahandling/source_activity.py +21 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_array_preview.py +127 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_derived_cache.py +1605 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_derived_rendering.py +868 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_heatmap.py +241 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_live.py +2808 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_live_queries.py +5907 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_live_service.py +1894 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_live_supervisor.py +2161 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_plot.py +283 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_presentation.py +1065 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_snapshot.py +1132 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_work_coordinator.py +2157 -0
- qplotter-1.6.0b3/src/qplot/datahandling/trusted_work_scheduler.py +1204 -0
- qplotter-1.6.0b3/src/qplot/diagnostics.py +241 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_01_10mb.csv +11 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_02_25mb.csv +14 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_03_50mb.csv +17 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_04_100mb.csv +20 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_05_250mb.csv +23 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_06_500mb.csv +26 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_07_1gb.csv +29 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_08_5gb.csv +32 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_09_10gb.csv +35 -0
- qplotter-1.6.0b3/src/qplot/resources/testdata/qplot_test_db_10_30gb.csv +38 -0
- qplotter-1.6.0b3/src/qplot/testdata.py +1733 -0
- qplotter-1.6.0b3/src/qplot/tools/__init__.py +13 -0
- qplotter-1.6.0b3/src/qplot/tools/finite_means.py +114 -0
- qplotter-1.6.0b3/src/qplot/tools/general.py +134 -0
- qplotter-1.6.0b3/src/qplot/tools/heatmap_geometry.py +381 -0
- qplotter-1.6.0b3/src/qplot/tools/operation_registry.py +179 -0
- qplotter-1.6.0b3/src/qplot/tools/plot_tools.py +625 -0
- qplotter-1.6.0b3/src/qplot/tools/sample_statistics.py +56 -0
- qplotter-1.6.0b3/src/qplot/tools/worker.py +2787 -0
- qplotter-1.6.0b3/src/qplot/windows/__init__.py +9 -0
- qplotter-1.6.0b3/src/qplot/windows/_colorbar.py +422 -0
- qplotter-1.6.0b3/src/qplot/windows/_commands.py +523 -0
- qplotter-1.6.0b3/src/qplot/windows/_config_persistence.py +123 -0
- qplotter-1.6.0b3/src/qplot/windows/_database_actions.py +4904 -0
- qplotter-1.6.0b3/src/qplot/windows/_dataset_handle.py +221 -0
- qplotter-1.6.0b3/src/qplot/windows/_dragdrop.py +71 -0
- qplotter-1.6.0b3/src/qplot/windows/_export_paths.py +1167 -0
- qplotter-1.6.0b3/src/qplot/windows/_help.py +169 -0
- qplotter-1.6.0b3/src/qplot/windows/_native_averaging.py +173 -0
- qplotter-1.6.0b3/src/qplot/windows/_native_transforms.py +389 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot1d_snap.py +608 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot1d_traces.py +2183 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot2d_colorbar.py +1126 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot2d_colorbar_dialog.py +786 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot2d_layers.py +2197 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot2d_sweeps.py +712 -0
- qplotter-1.6.0b3/src/qplot/windows/_plotWin.py +1993 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_actions.py +2695 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_appearance.py +276 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_axis_scaling.py +1485 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_export.py +1445 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_feedback.py +110 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_marquee.py +656 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_refresh.py +942 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_state.py +239 -0
- qplotter-1.6.0b3/src/qplot/windows/_plot_transform_labels.py +60 -0
- qplotter-1.6.0b3/src/qplot/windows/_preferences.py +635 -0
- qplotter-1.6.0b3/src/qplot/windows/_refresh_interval.py +70 -0
- qplotter-1.6.0b3/src/qplot/windows/_run_controls.py +828 -0
- qplotter-1.6.0b3/src/qplot/windows/_shortcuts.py +47 -0
- qplotter-1.6.0b3/src/qplot/windows/_subplots/__init__.py +8 -0
- qplotter-1.6.0b3/src/qplot/windows/_subplots/subplot1d.py +531 -0
- qplotter-1.6.0b3/src/qplot/windows/_subplots/subplot2d.py +918 -0
- qplotter-1.6.0b3/src/qplot/windows/_svg_export.py +209 -0
- qplotter-1.6.0b3/src/qplot/windows/_trusted_derived_qt.py +1759 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/__init__.py +23 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/_run_formatting.py +387 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/details_tables.py +1119 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/dropbox.py +290 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/operations.py +460 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/preview.py +2997 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/run_list_items.py +488 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/toolbar.py +111 -0
- qplotter-1.6.0b3/src/qplot/windows/_widgets/treeWidgets.py +2572 -0
- qplotter-1.6.0b3/src/qplot/windows/_window_controls.py +413 -0
- qplotter-1.6.0b3/src/qplot/windows/main.py +1635 -0
- qplotter-1.6.0b3/src/qplot/windows/plot1d.py +311 -0
- qplotter-1.6.0b3/src/qplot/windows/plot2d.py +1901 -0
- qplotter-1.6.0b3/src/qplotter.egg-info/SOURCES.txt +319 -0
- qplotter-1.6.0b3/tests/_artifact_audit.py +86 -0
- qplotter-1.6.0b3/tests/_ci_scheduling.py +75 -0
- qplotter-1.6.0b3/tests/_window_lifecycle.py +57 -0
- qplotter-1.6.0b3/tests/conftest.py +71 -0
- qplotter-1.6.0b3/tests/datahandling/_wal_lineage_scenarios.py +939 -0
- qplotter-1.6.0b3/tests/datahandling/test_array_record_metadata.py +198 -0
- qplotter-1.6.0b3/tests/datahandling/test_database_worker_instance_binding.py +1214 -0
- qplotter-1.6.0b3/tests/datahandling/test_dimensions.py +32 -0
- qplotter-1.6.0b3/tests/datahandling/test_inferred_planned_counts.py +146 -0
- qplotter-1.6.0b3/tests/datahandling/test_integer_record_cache.py +54 -0
- qplotter-1.6.0b3/tests/datahandling/test_live_acquired_point_counts.py +193 -0
- qplotter-1.6.0b3/tests/datahandling/test_plot_progress.py +78 -0
- qplotter-1.6.0b3/tests/datahandling/test_qcodes_cache.py +384 -0
- qplotter-1.6.0b3/tests/datahandling/test_read_sql.py +1798 -0
- qplotter-1.6.0b3/tests/datahandling/test_read_sql_database_identity.py +195 -0
- qplotter-1.6.0b3/tests/datahandling/test_readonly.py +2946 -0
- qplotter-1.6.0b3/tests/datahandling/test_snapshot_planned_setpoints.py +103 -0
- qplotter-1.6.0b3/tests/datahandling/test_stage5c_real_qcodes.py +1577 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_array_preview.py +146 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_array_record_metadata.py +239 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_database_information.py +51 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_derived_cache.py +1322 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_derived_cache_ownership.py +150 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_derived_live_integration.py +719 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_derived_queries.py +428 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_derived_rendering.py +1125 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_heatmap.py +384 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live.py +2692 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_partial_frames.py +303 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_protocol.py +131 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_queries.py +3310 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_result_limits.py +816 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_service.py +1571 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_stage4_integration.py +468 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_supervisor.py +2122 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_live_worker_integration.py +1545 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_plot.py +421 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_presentation.py +479 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_read_scope.py +158 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_snapshot.py +555 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_source_identifiers.py +133 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_work_coordinator.py +4670 -0
- qplotter-1.6.0b3/tests/datahandling/test_trusted_work_scheduler.py +1247 -0
- qplotter-1.6.0b3/tests/datahandling/test_wal_lineage_subprocess.py +93 -0
- qplotter-1.6.0b3/tests/test_auxiliary_database_protection.py +221 -0
- qplotter-1.6.0b3/tests/test_bounded_heatmap_means.py +251 -0
- qplotter-1.6.0b3/tests/test_bounded_integer_precision.py +78 -0
- qplotter-1.6.0b3/tests/test_ci_artifacts.py +82 -0
- qplotter-1.6.0b3/tests/test_ci_scheduling.py +186 -0
- qplotter-1.6.0b3/tests/test_compiler_free_install.py +279 -0
- qplotter-1.6.0b3/tests/test_config.py +1312 -0
- qplotter-1.6.0b3/tests/test_demo_database_safety.py +112 -0
- qplotter-1.6.0b3/tests/test_derivative_numeric_ranges.py +253 -0
- qplotter-1.6.0b3/tests/test_diagnostics.py +128 -0
- qplotter-1.6.0b3/tests/test_distribution_validator.py +531 -0
- qplotter-1.6.0b3/tests/test_heatmap_cancellation_residuals.py +60 -0
- qplotter-1.6.0b3/tests/test_heatmap_float_means.py +116 -0
- qplotter-1.6.0b3/tests/test_heatmap_geometry.py +207 -0
- qplotter-1.6.0b3/tests/test_independent_heatmap_extremes.py +72 -0
- qplotter-1.6.0b3/tests/test_liveplot_database_safety.py +152 -0
- qplotter-1.6.0b3/tests/test_native_fft_mixed_coordinates.py +104 -0
- qplotter-1.6.0b3/tests/test_nonuniform_cancellation.py +60 -0
- qplotter-1.6.0b3/tests/test_package_import.py +89 -0
- qplotter-1.6.0b3/tests/test_packaging_split.py +56 -0
- qplotter-1.6.0b3/tests/test_release.py +279 -0
- qplotter-1.6.0b3/tests/test_sample_statistics_accuracy.py +51 -0
- qplotter-1.6.0b3/tests/test_shutdown_supervisor.py +4886 -0
- qplotter-1.6.0b3/tests/test_testdata.py +2645 -0
- qplotter-1.6.0b3/tests/test_time_stress_database_safety.py +183 -0
- qplotter-1.6.0b3/tests/test_tools.py +1040 -0
- qplotter-1.6.0b3/tests/test_windows_ci.py +173 -0
- qplotter-1.6.0b3/tests/test_windows_shutdown_job.py +595 -0
- qplotter-1.6.0b3/tests/test_worker_array_heatmaps.py +1043 -0
- qplotter-1.6.0b3/tests/test_worker_array_measurements.py +177 -0
- qplotter-1.6.0b3/tests/test_worker_boolean_heatmap_missing.py +165 -0
- qplotter-1.6.0b3/tests/test_worker_complex_heatmaps.py +212 -0
- qplotter-1.6.0b3/tests/test_worker_complex_lines.py +26 -0
- qplotter-1.6.0b3/tests/test_worker_coordinate_precision.py +163 -0
- qplotter-1.6.0b3/tests/test_worker_heatmap_limits.py +232 -0
- qplotter-1.6.0b3/tests/test_worker_nonfinite_sql_heatmaps.py +205 -0
- qplotter-1.6.0b3/tests/test_worker_shaped_coordinate_validity.py +162 -0
- qplotter-1.6.0b3/tests/test_worker_sidecar_identities.py +105 -0
- qplotter-1.6.0b3/tests/widgets/test_operations.py +130 -0
- qplotter-1.6.0b3/tests/widgets/test_plot_preview_reuse.py +148 -0
- qplotter-1.6.0b3/tests/widgets/test_preview_database_instance.py +972 -0
- qplotter-1.6.0b3/tests/widgets/test_preview_dragdrop.py +569 -0
- qplotter-1.6.0b3/tests/widgets/test_preview_extreme_range.py +95 -0
- qplotter-1.6.0b3/tests/widgets/test_preview_placeholders.py +375 -0
- qplotter-1.6.0b3/tests/widgets/test_run_details.py +3051 -0
- qplotter-1.6.0b3/tests/widgets/test_run_list.py +2162 -0
- qplotter-1.6.0b3/tests/widgets/test_themes.py +102 -0
- qplotter-1.6.0b3/tests/windows/_trusted_derived_wal_ui.py +132 -0
- qplotter-1.6.0b3/tests/windows/test_appearance_swap_cuts.py +169 -0
- qplotter-1.6.0b3/tests/windows/test_axis_auto_padding_overflow.py +119 -0
- qplotter-1.6.0b3/tests/windows/test_axis_global_auto_validation.py +297 -0
- qplotter-1.6.0b3/tests/windows/test_axis_limit_overflow.py +412 -0
- qplotter-1.6.0b3/tests/windows/test_axis_limit_precision.py +97 -0
- qplotter-1.6.0b3/tests/windows/test_bounded_shutdown.py +952 -0
- qplotter-1.6.0b3/tests/windows/test_centering_extremes.py +129 -0
- qplotter-1.6.0b3/tests/windows/test_color_scale_locale.py +106 -0
- qplotter-1.6.0b3/tests/windows/test_commands.py +111 -0
- qplotter-1.6.0b3/tests/windows/test_complex_line_data.py +173 -0
- qplotter-1.6.0b3/tests/windows/test_config_transactions.py +670 -0
- qplotter-1.6.0b3/tests/windows/test_csv_shared_coordinates.py +58 -0
- qplotter-1.6.0b3/tests/windows/test_cut_cursor_integration.py +159 -0
- qplotter-1.6.0b3/tests/windows/test_database_information.py +304 -0
- qplotter-1.6.0b3/tests/windows/test_database_worker_errors.py +394 -0
- qplotter-1.6.0b3/tests/windows/test_derivative_scale.py +68 -0
- qplotter-1.6.0b3/tests/windows/test_differentiation_integration.py +510 -0
- qplotter-1.6.0b3/tests/windows/test_export_paths.py +1322 -0
- qplotter-1.6.0b3/tests/windows/test_filtered_axis_autoscale.py +390 -0
- qplotter-1.6.0b3/tests/windows/test_free_cursor_axis_assignment.py +150 -0
- qplotter-1.6.0b3/tests/windows/test_heatmap_appearance.py +193 -0
- qplotter-1.6.0b3/tests/windows/test_heatmap_color_range.py +322 -0
- qplotter-1.6.0b3/tests/windows/test_heatmap_layer_integration.py +292 -0
- qplotter-1.6.0b3/tests/windows/test_heatmap_limit_missing_samples.py +113 -0
- qplotter-1.6.0b3/tests/windows/test_help_menu.py +100 -0
- qplotter-1.6.0b3/tests/windows/test_independent_cancellation_mean.py +87 -0
- qplotter-1.6.0b3/tests/windows/test_independent_native_extremes.py +78 -0
- qplotter-1.6.0b3/tests/windows/test_limit_integer_integration.py +183 -0
- qplotter-1.6.0b3/tests/windows/test_live_array_dtypes.py +193 -0
- qplotter-1.6.0b3/tests/windows/test_main_window.py +5576 -0
- qplotter-1.6.0b3/tests/windows/test_marquee_statistics_accuracy.py +45 -0
- qplotter-1.6.0b3/tests/windows/test_merged_trace_metadata.py +288 -0
- qplotter-1.6.0b3/tests/windows/test_native_average_cancellation.py +50 -0
- qplotter-1.6.0b3/tests/windows/test_native_averaging.py +228 -0
- qplotter-1.6.0b3/tests/windows/test_native_boolean_derivatives.py +60 -0
- qplotter-1.6.0b3/tests/windows/test_native_fft_coordinates.py +434 -0
- qplotter-1.6.0b3/tests/windows/test_native_fft_dynamic_range.py +153 -0
- qplotter-1.6.0b3/tests/windows/test_native_fft_float_precision.py +177 -0
- qplotter-1.6.0b3/tests/windows/test_native_fft_integer_precision.py +163 -0
- qplotter-1.6.0b3/tests/windows/test_native_float_transforms.py +186 -0
- qplotter-1.6.0b3/tests/windows/test_native_integer_transforms.py +337 -0
- qplotter-1.6.0b3/tests/windows/test_native_transform_labels.py +537 -0
- qplotter-1.6.0b3/tests/windows/test_native_transform_snapping.py +226 -0
- qplotter-1.6.0b3/tests/windows/test_nonuniform_gradient_overflow.py +134 -0
- qplotter-1.6.0b3/tests/windows/test_numeric_sample_preservation.py +204 -0
- qplotter-1.6.0b3/tests/windows/test_numerical_stability.py +309 -0
- qplotter-1.6.0b3/tests/windows/test_offset_precision_regressions.py +132 -0
- qplotter-1.6.0b3/tests/windows/test_pending_preview_drop.py +82 -0
- qplotter-1.6.0b3/tests/windows/test_planned_integer_array_extent.py +229 -0
- qplotter-1.6.0b3/tests/windows/test_plot1d.py +3193 -0
- qplotter-1.6.0b3/tests/windows/test_plot1d_snap_precision.py +250 -0
- qplotter-1.6.0b3/tests/windows/test_plot2d.py +3261 -0
- qplotter-1.6.0b3/tests/windows/test_plot2d_layers.py +693 -0
- qplotter-1.6.0b3/tests/windows/test_plot_actions.py +455 -0
- qplotter-1.6.0b3/tests/windows/test_plot_csv_precision.py +342 -0
- qplotter-1.6.0b3/tests/windows/test_plot_dialog_lifecycle.py +196 -0
- qplotter-1.6.0b3/tests/windows/test_plot_integration.py +4540 -0
- qplotter-1.6.0b3/tests/windows/test_plot_overlay_integration.py +645 -0
- qplotter-1.6.0b3/tests/windows/test_plot_progress_ui.py +174 -0
- qplotter-1.6.0b3/tests/windows/test_plot_sidecar_binding.py +793 -0
- qplotter-1.6.0b3/tests/windows/test_plot_window.py +3841 -0
- qplotter-1.6.0b3/tests/windows/test_preferences.py +415 -0
- qplotter-1.6.0b3/tests/windows/test_preferences_lifecycle.py +114 -0
- qplotter-1.6.0b3/tests/windows/test_preferences_value_preservation.py +118 -0
- qplotter-1.6.0b3/tests/windows/test_refresh_interval_precision.py +257 -0
- qplotter-1.6.0b3/tests/windows/test_refresh_lifecycle.py +322 -0
- qplotter-1.6.0b3/tests/windows/test_run_csv_export_race.py +651 -0
- qplotter-1.6.0b3/tests/windows/test_run_csv_mixed_integer_precision.py +139 -0
- qplotter-1.6.0b3/tests/windows/test_run_duration_wal.py +187 -0
- qplotter-1.6.0b3/tests/windows/test_settings_decoder_limits.py +83 -0
- qplotter-1.6.0b3/tests/windows/test_svg_export_integration.py +337 -0
- qplotter-1.6.0b3/tests/windows/test_testdata_gui.py +715 -0
- qplotter-1.6.0b3/tests/windows/test_tiny_tick_labels.py +127 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_live_counts.py +205 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_qt.py +2495 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_wal_grid_ui.py +432 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_wal_snapshot_ui.py +304 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_wal_tiers_ui.py +436 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_derived_wal_ui.py +570 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_live_ui.py +4225 -0
- qplotter-1.6.0b3/tests/windows/test_trusted_plot_launch.py +233 -0
- qplotter-1.6.0b3/tests/windows/test_unloaded_database_export.py +220 -0
- qplotter-1.6.0b3/tests/windows/test_variable_array_records.py +220 -0
- qplotter-1.6.0b3/tests/windows/test_visual_smoke.py +81 -0
- qplotter-1.6.0b3/tests/windows/test_window_controls.py +199 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Project instructions for Codex
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
The program is required only to show data generated by QCoDeS. This means for example that only the most recend .db specification needs to be supported.
|
|
6
|
+
|
|
7
|
+
## Database access invariant
|
|
8
|
+
|
|
9
|
+
qPlot must never write, truncate, replace, rename, or delete an existing QCoDeS main database, its `-wal` file, or its rollback `-journal`. Ordinary viewing must not checkpoint the database, change journal mode, migrate its schema, or otherwise cause database content to be written.
|
|
10
|
+
|
|
11
|
+
For trusted live viewing of a local WAL-mode database, qPlot's pinned SQLite reader may create, open, resize, memory-map, lock, and modify only the exact regular, colocated `<database>-shm` file through SQLite's standard WAL shared-memory operations. Resulting SHM content and timestamp changes are permitted. qPlot must not rename or delete the SHM file, and no application code may write it outside the pinned SQLite VFS.
|
|
12
|
+
|
|
13
|
+
All main-database and WAL handles used by qPlot must remain physically read-only. Reader transactions must be short, bounded, and cancellable so that viewing does not indefinitely delay QCoDeS checkpoints.
|
|
14
|
+
|
|
15
|
+
The sole additional exception is explicit synthetic test-database generation. That workflow may create temporary files and create or atomically replace only the exact output path selected by the user. Replacing an existing file requires explicit user confirmation.
|
|
16
|
+
|
|
17
|
+
For trusted live reading, the selected local database directory and its path components are assumed trusted and are not expected to be concurrently redirected by a hostile actor. qPlot need not resist adversarial namespace substitution. SQLite’s standard handling of the exact -shm, including permission-mode normalization such as POSIX fchmod, is permitted. Trusted live reading must run unprivileged.
|
|
18
|
+
|
|
19
|
+
## Settings compatibility
|
|
20
|
+
|
|
21
|
+
Backward compatibility with older qPlot settings formats is not required. The small user base does not justify additional compatibility complexity.
|
|
22
|
+
|
|
23
|
+
Do not add settings migrations or support for legacy settings formats unless explicitly requested. When the settings schema changes, resetting incompatible settings to current defaults is acceptable; the application
|
|
24
|
+
should still start normally.
|
|
25
|
+
|
|
26
|
+
Continue validating current settings and saving them safely. This policy applies only to qPlot settings and does not relax the database-access invariant or measurement-data correctness requirements.
|
|
27
|
+
|
|
28
|
+
## Python environment
|
|
29
|
+
|
|
30
|
+
Always use the project virtual environment for Python commands. If the
|
|
31
|
+
environment is activated, use `python -m ...`; otherwise call the environment's
|
|
32
|
+
Python executable directly.
|
|
33
|
+
|
|
34
|
+
On Windows:
|
|
35
|
+
- Prefer `.venv\Scripts\python.exe` if the environment lives inside the
|
|
36
|
+
repository.
|
|
37
|
+
- In local checkouts where the environment is next to the repository, use
|
|
38
|
+
`..\.venv\Scripts\python.exe`.
|
|
39
|
+
- Use the selected venv Python with `-m pytest` instead of bare `pytest`.
|
|
40
|
+
- Use the selected venv Python with `-m pip` instead of bare `pip`.
|
|
41
|
+
|
|
42
|
+
On macOS/Linux:
|
|
43
|
+
- Use `.venv-mac/bin/python` if the environment is not already activated.
|
|
44
|
+
- Use the selected venv Python with `-m pytest` instead of bare `pytest`.
|
|
45
|
+
- Use the selected venv Python with `-m pip` instead of bare `pip`.
|
|
46
|
+
|
|
47
|
+
Do not try the system Python first.
|
|
48
|
+
Do not run tests with bare `pytest`; run them through the appropriate venv Python for the current OS.
|
|
49
|
+
|
|
50
|
+
## Test commands
|
|
51
|
+
|
|
52
|
+
Use these commands when relevant:
|
|
53
|
+
|
|
54
|
+
Windows:
|
|
55
|
+
```powershell
|
|
56
|
+
python -m pytest
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
macOS/Linux:
|
|
60
|
+
```bash
|
|
61
|
+
python -m pytest
|
|
62
|
+
```
|
|
63
|
+
## After code changes
|
|
64
|
+
|
|
65
|
+
If you modify application code, before the final response:
|
|
66
|
+
|
|
67
|
+
1. Run the relevant automated tests.
|
|
68
|
+
2. If the change affects runtime behavior or UI, start qPlot from the project venv.
|
|
69
|
+
|
|
70
|
+
On Windows, prefer:
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
..\.venv\Scripts\python.exe -m qplot
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
On macOS/Linux, prefer:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
.venv-mac/bin/python -m qplot
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Matplotlib cache
|
|
83
|
+
|
|
84
|
+
On macOS, prefix every Python command that may import Matplotlib with the same
|
|
85
|
+
writable cache directory:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
MPLCONFIGDIR=/private/tmp/qplot-matplotlib-cache .venv-mac/bin/python -m pytest
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Reuse this exact cache directory; do not create a fresh temporary directory for
|
|
92
|
+
each run. The first invocation may build the font cache once, but subsequent
|
|
93
|
+
runs should reuse it. Set `MPLCONFIGDIR` on each command invocation because
|
|
94
|
+
separate Codex shell commands may not share exported environment variables.
|
|
95
|
+
|
|
96
|
+
For automated qPlot startup smoke checks, use:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
QT_QPA_PLATFORM=offscreen MPLCONFIGDIR=/private/tmp/qplot-matplotlib-cache .venv-mac/bin/python -m qplot
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Omit `QT_QPA_PLATFORM=offscreen` when a visible manual UI check is required.
|
|
103
|
+
|
|
104
|
+
## GitHub publishing
|
|
105
|
+
|
|
106
|
+
Do not use the GitHub CLI (`gh`) or require `gh auth` for repository work.
|
|
107
|
+
|
|
108
|
+
Use the configured Git remote and credentials for `git fetch`, `git push`, and tag pushes. Use the connected GitHub app for pull-request operations.
|
|
109
|
+
|
|
110
|
+
If GitHub release creation is needed but unavailable through the connected app, stop and ask for direction; do not fall back to `gh`.
|