qplotter 1.6.0b3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. qplot/__init__.py +46 -0
  2. qplot/__main__.py +232 -0
  3. qplot/_auxiliary_paths.py +63 -0
  4. qplot/_metadata.py +12 -0
  5. qplot/_repair.py +14 -0
  6. qplot/_shutdown_supervisor.py +4049 -0
  7. qplot/_version.py +12 -0
  8. qplot/_windows_shutdown_job.py +1166 -0
  9. qplot/configuration/__init__.py +3 -0
  10. qplot/configuration/config.py +573 -0
  11. qplot/configuration/config_schema.json +319 -0
  12. qplot/configuration/scripts.py +255 -0
  13. qplot/configuration/themes/__init__.py +13 -0
  14. qplot/configuration/themes/_base.py +579 -0
  15. qplot/configuration/themes/blank.py +17 -0
  16. qplot/configuration/themes/dark.py +54 -0
  17. qplot/configuration/themes/light.py +54 -0
  18. qplot/datahandling/LoadFromDB.py +224 -0
  19. qplot/datahandling/__init__.py +47 -0
  20. qplot/datahandling/_trusted_live_helper.py +812 -0
  21. qplot/datahandling/_trusted_live_protocol.py +1745 -0
  22. qplot/datahandling/database.py +2330 -0
  23. qplot/datahandling/dimensions.py +43 -0
  24. qplot/datahandling/file_identity.py +461 -0
  25. qplot/datahandling/parameter_data.py +149 -0
  26. qplot/datahandling/plot_progress.py +17 -0
  27. qplot/datahandling/qcodes_cache.py +277 -0
  28. qplot/datahandling/qcodes_compat.py +14 -0
  29. qplot/datahandling/readSQL.py +2442 -0
  30. qplot/datahandling/readonly.py +2561 -0
  31. qplot/datahandling/source_activity.py +21 -0
  32. qplot/datahandling/trusted_array_preview.py +127 -0
  33. qplot/datahandling/trusted_derived_cache.py +1605 -0
  34. qplot/datahandling/trusted_derived_rendering.py +868 -0
  35. qplot/datahandling/trusted_heatmap.py +241 -0
  36. qplot/datahandling/trusted_live.py +2808 -0
  37. qplot/datahandling/trusted_live_queries.py +5907 -0
  38. qplot/datahandling/trusted_live_service.py +1894 -0
  39. qplot/datahandling/trusted_live_supervisor.py +2161 -0
  40. qplot/datahandling/trusted_plot.py +283 -0
  41. qplot/datahandling/trusted_presentation.py +1065 -0
  42. qplot/datahandling/trusted_snapshot.py +1132 -0
  43. qplot/datahandling/trusted_work_coordinator.py +2157 -0
  44. qplot/datahandling/trusted_work_scheduler.py +1204 -0
  45. qplot/diagnostics.py +241 -0
  46. qplot/resources/testdata/qplot_test_db_01_10mb.csv +11 -0
  47. qplot/resources/testdata/qplot_test_db_02_25mb.csv +14 -0
  48. qplot/resources/testdata/qplot_test_db_03_50mb.csv +17 -0
  49. qplot/resources/testdata/qplot_test_db_04_100mb.csv +20 -0
  50. qplot/resources/testdata/qplot_test_db_05_250mb.csv +23 -0
  51. qplot/resources/testdata/qplot_test_db_06_500mb.csv +26 -0
  52. qplot/resources/testdata/qplot_test_db_07_1gb.csv +29 -0
  53. qplot/resources/testdata/qplot_test_db_08_5gb.csv +32 -0
  54. qplot/resources/testdata/qplot_test_db_09_10gb.csv +35 -0
  55. qplot/resources/testdata/qplot_test_db_10_30gb.csv +38 -0
  56. qplot/testdata.py +1733 -0
  57. qplot/tools/__init__.py +13 -0
  58. qplot/tools/finite_means.py +114 -0
  59. qplot/tools/general.py +134 -0
  60. qplot/tools/heatmap_geometry.py +381 -0
  61. qplot/tools/operation_registry.py +179 -0
  62. qplot/tools/plot_tools.py +625 -0
  63. qplot/tools/sample_statistics.py +56 -0
  64. qplot/tools/worker.py +2787 -0
  65. qplot/windows/__init__.py +9 -0
  66. qplot/windows/_colorbar.py +422 -0
  67. qplot/windows/_commands.py +523 -0
  68. qplot/windows/_config_persistence.py +123 -0
  69. qplot/windows/_database_actions.py +4904 -0
  70. qplot/windows/_dataset_handle.py +221 -0
  71. qplot/windows/_dragdrop.py +71 -0
  72. qplot/windows/_export_paths.py +1167 -0
  73. qplot/windows/_help.py +169 -0
  74. qplot/windows/_native_averaging.py +173 -0
  75. qplot/windows/_native_transforms.py +389 -0
  76. qplot/windows/_plot1d_snap.py +608 -0
  77. qplot/windows/_plot1d_traces.py +2183 -0
  78. qplot/windows/_plot2d_colorbar.py +1126 -0
  79. qplot/windows/_plot2d_colorbar_dialog.py +786 -0
  80. qplot/windows/_plot2d_layers.py +2197 -0
  81. qplot/windows/_plot2d_sweeps.py +712 -0
  82. qplot/windows/_plotWin.py +1993 -0
  83. qplot/windows/_plot_actions.py +2695 -0
  84. qplot/windows/_plot_appearance.py +276 -0
  85. qplot/windows/_plot_axis_scaling.py +1485 -0
  86. qplot/windows/_plot_export.py +1445 -0
  87. qplot/windows/_plot_feedback.py +110 -0
  88. qplot/windows/_plot_marquee.py +656 -0
  89. qplot/windows/_plot_refresh.py +942 -0
  90. qplot/windows/_plot_state.py +239 -0
  91. qplot/windows/_plot_transform_labels.py +60 -0
  92. qplot/windows/_preferences.py +635 -0
  93. qplot/windows/_refresh_interval.py +70 -0
  94. qplot/windows/_run_controls.py +828 -0
  95. qplot/windows/_shortcuts.py +47 -0
  96. qplot/windows/_subplots/__init__.py +8 -0
  97. qplot/windows/_subplots/subplot1d.py +531 -0
  98. qplot/windows/_subplots/subplot2d.py +918 -0
  99. qplot/windows/_svg_export.py +209 -0
  100. qplot/windows/_trusted_derived_qt.py +1759 -0
  101. qplot/windows/_widgets/__init__.py +23 -0
  102. qplot/windows/_widgets/_run_formatting.py +387 -0
  103. qplot/windows/_widgets/details_tables.py +1119 -0
  104. qplot/windows/_widgets/dropbox.py +290 -0
  105. qplot/windows/_widgets/operations.py +460 -0
  106. qplot/windows/_widgets/preview.py +2997 -0
  107. qplot/windows/_widgets/run_list_items.py +488 -0
  108. qplot/windows/_widgets/toolbar.py +111 -0
  109. qplot/windows/_widgets/treeWidgets.py +2572 -0
  110. qplot/windows/_window_controls.py +413 -0
  111. qplot/windows/main.py +1635 -0
  112. qplot/windows/plot1d.py +311 -0
  113. qplot/windows/plot2d.py +1901 -0
  114. qplotter-1.6.0b3.dist-info/METADATA +318 -0
  115. qplotter-1.6.0b3.dist-info/RECORD +119 -0
  116. qplotter-1.6.0b3.dist-info/WHEEL +5 -0
  117. qplotter-1.6.0b3.dist-info/entry_points.txt +4 -0
  118. qplotter-1.6.0b3.dist-info/licenses/LICENSE +21 -0
  119. qplotter-1.6.0b3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,318 @@
1
+ Metadata-Version: 2.4
2
+ Name: qplotter
3
+ Version: 1.6.0b3
4
+ Summary: PyQt-based viewer for completed and running QCoDeS database experiments
5
+ Author-email: Ben Wordsworth <b.wordsworth@lancaster.ac.uk>, Edward Laird <e.a.laird@lancaster.ac.uk>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/lairdgrouplancaster/QCoDeS-Plotter.git
8
+ Project-URL: Source, https://github.com/lairdgrouplancaster/QCoDeS-Plotter
9
+ Project-URL: Issues, https://github.com/lairdgrouplancaster/QCoDeS-Plotter/issues
10
+ Keywords: qcodes,pyqt,pyqtgraph,data-visualization,scientific-computing
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: MacOS X
13
+ Classifier: Environment :: Win32 (MS Windows)
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Topic :: Scientific/Engineering :: Visualization
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: qplotter-native==1.0.0
28
+ Requires-Dist: apsw==3.53.4.0
29
+ Requires-Dist: jsonschema>=4.23.0
30
+ Requires-Dist: numpy>=2.3.1
31
+ Requires-Dist: pandas>=2.3.0
32
+ Requires-Dist: PyQt6>=6.8.0
33
+ Requires-Dist: pyqtgraph>=0.14.0
34
+ Requires-Dist: qcodes>=0.53.0
35
+ Provides-Extra: dev
36
+ Requires-Dist: build>=1.2; extra == "dev"
37
+ Requires-Dist: mypy<2.0,>=1.14; extra == "dev"
38
+ Requires-Dist: pytest>=8.2; extra == "dev"
39
+ Requires-Dist: pytest-cov>=6.0; extra == "dev"
40
+ Requires-Dist: pytest-timeout>=2.3; extra == "dev"
41
+ Requires-Dist: pytest-xdist>=3.8; extra == "dev"
42
+ Requires-Dist: ruff>=0.8; extra == "dev"
43
+ Requires-Dist: twine>=5.0; extra == "dev"
44
+ Dynamic: license-file
45
+
46
+ # QCoDeS-Plotter
47
+
48
+ [![release](https://img.shields.io/github/v/release/lairdgrouplancaster/QCoDeS-Plotter?label=release)](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/releases/latest)
49
+ [![pre-release](https://img.shields.io/github/v/release/lairdgrouplancaster/QCoDeS-Plotter?include_prereleases&label=pre-release&sort=semver)](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/releases)
50
+
51
+ QCoDeS-Plotter, or qPlot, is a PyQt-based data viewer for QCoDeS databases. It
52
+ is designed for inspecting completed and running experiments, with live refresh,
53
+ line plots, heatmaps, 1D cut extraction, CSV export, and simple data operations.
54
+
55
+ ## Requirements
56
+
57
+ qPlot supports standard CPython 3.11–3.14. Free-threaded Python and PyPy are
58
+ outside the supported matrix.
59
+
60
+ Runtime dependencies are declared in `pyproject.toml` and are installed
61
+ automatically when qPlot is installed.
62
+
63
+ Application development and Git installs use a separately installed native
64
+ platform wheel for trusted live QCoDeS access. A C compiler is required only
65
+ when building the native distribution from source.
66
+
67
+ Native wheels are prepared for Windows x64, macOS ARM64, macOS Intel, and Linux
68
+ x86_64 (`manylinux_2_28`, requiring glibc 2.28 or newer). Windows and macOS are
69
+ the supported desktop platforms. Linux receives headless application, reader
70
+ and installation validation; its interactive desktop GUI is not yet supported.
71
+ Linux may need system Qt libraries such as `libegl1`. Other architectures,
72
+ 32-bit Windows and musl-based Linux have no native wheel. Their ordinary PyPI
73
+ installation fails with a missing compatible distribution instead of compiling.
74
+
75
+ For a supported local database, qPlot now attempts trusted live access first.
76
+ One application read broker uses one persistent helper to publish the basic run
77
+ list, detect later commits, fill run metadata progressively, and load the
78
+ selected run's plain detail view without copying the database. Main-database,
79
+ WAL, and rollback-journal handles remain read-only; SQLite may update only the
80
+ exact colocated `-shm` file as transient WAL coordination state.
81
+
82
+ Normal `qplot`, `python -m qplot`, and `qplot.run()` launches put the complete
83
+ qPlot process tree behind a shutdown boundary before Qt or reader helpers can
84
+ start. The command-line process is the launcher. A public `qplot.run()` call
85
+ first starts a dedicated Python launcher, so the calling process, its threads,
86
+ its QCoDeS writer, and unrelated children stay outside that boundary. POSIX
87
+ uses a dedicated GUI session/process group whose leader is retained until it is
88
+ reaped; Windows assigns the GUI atomically to a retained kill-on-close Job
89
+ Object and keeps the original handles. The API launcher reports only after the
90
+ GUI tree is gone, through a private authenticated channel whose EOF remains
91
+ usable even if a caller thread reaps the launcher first. `qplot.run()` returns
92
+ 70 for forced shutdown and represents POSIX signal termination without
93
+ signalling its caller as `-signal_number`. If the caller receives
94
+ `KeyboardInterrupt`, `SystemExit`, or another control-flow exception while
95
+ waiting, it sends an irreversible authenticated cancellation and re-raises the
96
+ original exception only after the launcher has killed and reaped its GUI/helper
97
+ tree and exited. A dedicated cancellation writer retains partial-send progress;
98
+ one serialized lifecycle permits exactly one worker creation and start attempt,
99
+ or one committed write-side-EOF fallback if startup fails. Later interrupts are
100
+ absorbed until authenticated outcome, launcher EOF, and exit/reap observation
101
+ are all complete, so they cannot replace the first exception or release a live
102
+ tree. During that bounded interval qPlot transactionally installs a temporary
103
+ SIGINT absorber and always restores the exact caller handler, including when an
104
+ interrupt lands after either signal-handler side effect. Caller-channel EOF
105
+ triggers the same fail-closed cleanup. A
106
+ confirmed shutdown therefore has
107
+ one immutable absolute deadline even if native Qt teardown blocks. The special
108
+ `qplot.run(return_objects=True)` form instead runs in the caller's process and
109
+ returns caller-owned Qt objects; it intentionally does not acquire the
110
+ launcher's process-tree containment or hard-deadline guarantee.
111
+
112
+ Snapshot fallback is limited to an unavailable native backend or an explicitly
113
+ unsupported source or filesystem that the legacy access probe can verify
114
+ safely. Ordinary fallback selection is basic-only: it renders cached run-list
115
+ fields and an unavailable detail state without starting a selected-detail
116
+ reader or preparing an additional selected-detail snapshot. That claim applies
117
+ only to row selection: fallback metadata and retained preview paths can still
118
+ create private snapshots. Plot and CSV actions also acquire action-owned
119
+ snapshots. Automatic trusted live
120
+ previews and thumbnails are disabled until the Stage 5 scheduler and disk cache
121
+ are implemented. See
122
+ [Trusted live QCoDeS reader](docs/trusted-live-reader.md).
123
+
124
+ ## Packages
125
+
126
+ The application distribution is `qplotter`; its Python imports and
127
+ console commands remain `qplot`, `qplot-cfg`, and `qplot-generate-db`.
128
+ The separately built `qplotter-native==1.0.0` supplies the protected
129
+ SQLite reader through `qplot_native`. The application's exact dependency pin
130
+ installs the compatible native wheel automatically. Both packages pin the same
131
+ APSW/SQLite runtime, preserving trusted live reading and database protections.
132
+
133
+ Contributors can edit the application without a C compiler:
134
+
135
+ ```console
136
+ python -m pip install --only-binary=:all: -e ".[dev]"
137
+ ```
138
+
139
+ See [Contributing](CONTRIBUTING.md) and [Distribution](docs/distribution.md)
140
+ for prepublication development using a local native wheel, explicit native
141
+ source builds, and release validation.
142
+
143
+ ## Install
144
+
145
+ Install qPlot inside a supported Python virtual environment. This checkout
146
+ prepares the first split PyPI release, application `1.6.0b3` with native `1.0.0`;
147
+ the commands targeting these packages work after publication. Until then, use
148
+ validated local artifacts as described in [Distribution](docs/distribution.md).
149
+
150
+ ### Prelude
151
+ #### Windows
152
+
153
+ Create a folder for qPlot, open it in Terminal, and execute:
154
+ ```console
155
+ py -3.11 --version
156
+ py -3.11 -m venv .venv
157
+ .\.venv\Scripts\Activate.ps1
158
+ python -m pip install -U pip
159
+ ```
160
+ #### macOS / Linux
161
+
162
+ Create a folder for qPlot, open Terminal there, and execute:
163
+ ```console
164
+ python3 --version
165
+ python3 -m venv .venv-mac
166
+ source .venv-mac/bin/activate
167
+ python -m pip install -U pip
168
+ ```
169
+ ### Installing your chosen version
170
+
171
+ For ordinary installation after a stable PyPI release is available:
172
+
173
+ ```console
174
+ python -m pip install --only-binary=:all: qplotter
175
+ ```
176
+
177
+ For the first split beta, explicitly select the prerelease:
178
+ ```console
179
+ python -m pip install --only-binary=:all: qplotter==1.6.0b3
180
+ ```
181
+
182
+ Both commands install the full runtime dependency set as wheels, with no C
183
+ compiler. To follow subsequent betas, add `--pre`. Check the selected Python
184
+ interpreter and platform if pip reports no compatible wheel.
185
+
186
+ Historical releases retain their old packaging. For example, the earlier full
187
+ release remains available from its Git tag:
188
+ ```console
189
+ python -m pip install git+https://github.com/lairdgrouplancaster/QCoDeS-Plotter.git@v1.5.0
190
+ ```
191
+
192
+ ### Replacing an older installation
193
+
194
+ Older releases used the distribution name `qplot`. A fresh virtual environment
195
+ is the simplest replacement. To reuse an environment, close qPlot, uninstall
196
+ the old distribution and any overlapping split installation **before**
197
+ installing the new packages:
198
+
199
+ ```console
200
+ python -m pip uninstall -y qplot qcodes-plotter qcodes-plotter-native qplotter qplotter-native
201
+ python -m pip install --only-binary=:all: qplotter==1.6.0b3
202
+ python -m pip check
203
+ ```
204
+
205
+ Do this even if the old installation was editable. Installing the new name
206
+ over `qplot` leaves two distributions owning the same `qplot` import package
207
+ and console commands; uninstalling the old one afterward can remove the new
208
+ installation's files. Settings and measurement databases are outside these
209
+ packages and are unaffected by pip uninstall.
210
+
211
+ ### Troubleshooting
212
+
213
+ If the version check above reports Python 3.10 or older, install Python 3.11 or newer
214
+ first and use that launcher instead, for example `python3.12` on macOS.
215
+
216
+ Virtual environments are not portable between operating systems. If the
217
+ checkout is synced between systems, make sure VS Code is using the interpreter
218
+ created for the current system:
219
+
220
+ * Windows: `.\.venv\Scripts\python.exe`
221
+ * macOS: `./.venv-mac/bin/python`
222
+ * Linux development: `./.venv-linux/bin/python`
223
+
224
+ ### Check the install
225
+
226
+ ```console
227
+ qplot-cfg -version
228
+ python -c "import qplot; print(qplot.__file__)"
229
+ ```
230
+
231
+ ## Run
232
+
233
+ Start the app from an activated virtual environment:
234
+
235
+ ```console
236
+ qplot
237
+ ```
238
+
239
+ To open a database directly:
240
+
241
+ ```console
242
+ qplot path/to/database.db
243
+ ```
244
+
245
+ For file-manager `Open With` and double-click setup, see
246
+ [Opening Databases from the File Manager](docs/user-guide.md#opening-databases-from-the-file-manager).
247
+
248
+ You can also run:
249
+
250
+ ```console
251
+ python -m qplot
252
+ ```
253
+
254
+ or start it from Python:
255
+
256
+ ```python
257
+ import qplot
258
+
259
+ qplot.run()
260
+ ```
261
+
262
+ ## Basic Use
263
+
264
+ 1. Open qPlot.
265
+ 2. Drag a QCoDeS `.db` file onto the database path field, or use
266
+ `File -> Load Database...`.
267
+ 3. Select a run in the run table.
268
+ 4. Plot a measurement using the run-table context menu, or enter a run ID and
269
+ measurement number at the top of the window. Snapshot fallback sessions may
270
+ also offer a preview that can be double-clicked.
271
+
272
+ Plot windows may appear before their data has finished loading. Check the
273
+ status bar at the bottom of the plot window before assuming a load has failed.
274
+
275
+ For the installed `1.5.0` release, see its
276
+ [versioned user guide](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/blob/v1.5.0/docs/user-guide.md).
277
+
278
+ Likewise, use the
279
+ [1.5.0 troubleshooting guide](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/blob/v1.5.0/docs/troubleshooting.md)
280
+ for this release.
281
+
282
+ For release history, see [CHANGELOG.md](CHANGELOG.md).
283
+
284
+ ## Configuration
285
+
286
+ On first run, qPlot creates:
287
+
288
+ ```text
289
+ ~/.qplot/config.json
290
+ ```
291
+
292
+ Useful commands:
293
+
294
+ ```console
295
+ qplot-cfg -info
296
+ qplot-cfg -version
297
+ qplot-cfg -dump
298
+ qplot-cfg -find user_preference.theme
299
+ qplot-cfg -set_value user_preference.theme dark
300
+ qplot-cfg -reset
301
+ ```
302
+
303
+ For all config keys, defaults, validation rules, and contributor notes, see
304
+ [docs/configuration.md](docs/configuration.md).
305
+
306
+ ## Development
307
+
308
+ For development setup, test commands, and contribution workflow, see
309
+ [CONTRIBUTING.md](CONTRIBUTING.md).
310
+
311
+ For a short map of the codebase, see [docs/architecture.md](docs/architecture.md).
312
+
313
+ For demo data and screenshot workflow notes, see [docs/demo-data.md](docs/demo-data.md).
314
+
315
+ For release and packaging notes, see [docs/distribution.md](docs/distribution.md).
316
+
317
+ Local development helper scripts are documented in
318
+ [scripts/README.md](scripts/README.md).
@@ -0,0 +1,119 @@
1
+ qplot/__init__.py,sha256=h7bATpj2Fws18yzOZB9S4CG4WI2nspp1y62SGYMBQs0,995
2
+ qplot/__main__.py,sha256=mo3MljVvNwH9UER9zVelA5OtwAKbwP3ioOWRPLa7XL8,7196
3
+ qplot/_auxiliary_paths.py,sha256=hnE-Upmymkv32mo4NGrQgNGbjKwVvGGtA7-WrfOPgAw,2613
4
+ qplot/_metadata.py,sha256=erFpq1Pi8onofb-kYwA1Vef7QbFxKKLRchDZBJSaPWw,255
5
+ qplot/_repair.py,sha256=p0ECi8EUalhbO5dqyYYDTI2_056hXjoC1iz4ttGxLsQ,400
6
+ qplot/_shutdown_supervisor.py,sha256=-_6JHn3QGS3kb3Ve9OvfXPVzuOdx4uTxHmPhnW1TUz8,150232
7
+ qplot/_version.py,sha256=erFpq1Pi8onofb-kYwA1Vef7QbFxKKLRchDZBJSaPWw,255
8
+ qplot/_windows_shutdown_job.py,sha256=4VerCXKwHkOwBUtpDZDf-H3-Jl6SuA7SeI3qVnpYzmg,44929
9
+ qplot/diagnostics.py,sha256=B5_vR60t5cWwE5y_hxyZQJQDoM_PZNavgWK_LCCGiOs,6796
10
+ qplot/testdata.py,sha256=_2OAXCK-ysV5LvALd8cAFda-iLtVq3l55Ii6E6eAYVo,66142
11
+ qplot/configuration/__init__.py,sha256=coXd1W4qzG_qftVAVidfUj_8HC5mYRKQF1-6AfnnFbw,32
12
+ qplot/configuration/config.py,sha256=CK91j_PEu5963C4b4dXuvWisHAE2XFYoU_XJ5AvDEco,18344
13
+ qplot/configuration/config_schema.json,sha256=g-RrkE0vpLuGqCUiXMrenzkRnQ73WJGNNyuEFKSybwA,11285
14
+ qplot/configuration/scripts.py,sha256=XlJWj242rtXMUJobuQSjSG2s5MJFYM24UwOfPL3IN88,7061
15
+ qplot/configuration/themes/__init__.py,sha256=TDdORwH1LMAknZVNrm6uIlpp-LlMUFE9TvUJZMURVVg,222
16
+ qplot/configuration/themes/_base.py,sha256=ry67WGfnX9bYkuLPkfktEmyEzEWOhKr5zYaya69PgyQ,15491
17
+ qplot/configuration/themes/blank.py,sha256=0GPSpECINzeMnLRk4K3xJWcM8rEYfbQ4P-popFYJAK8,463
18
+ qplot/configuration/themes/dark.py,sha256=9Z5GzpJgJ5FydfuownFAOIN8Y_JAs2IivBw8cAAVe0o,1364
19
+ qplot/configuration/themes/light.py,sha256=s0aMj2-6kBjSuP4kUb-1e4FkbvibS1uuw2rgEN8rgns,1369
20
+ qplot/datahandling/LoadFromDB.py,sha256=U4ERlImWRCokqrWRDFrOPfvluNEaHYGxFske0NiUmP0,8197
21
+ qplot/datahandling/__init__.py,sha256=lVgpAbIwthVdxhr0Ifpxpg71bRQ-zQKGL1H38oFAYJY,1386
22
+ qplot/datahandling/_trusted_live_helper.py,sha256=7QcgRtGFTlFXdQX-tet6aA2G5M_78XZ1n-CHbM32w2k,30458
23
+ qplot/datahandling/_trusted_live_protocol.py,sha256=v8HwmRc3Ify_8FZSQKR1k5UoGkc681Br6tivG85P4BQ,63164
24
+ qplot/datahandling/database.py,sha256=w9xxsaXBLHWHHxBrWDOWSRVcu9wewnfwu-FfVeA6Npw,81123
25
+ qplot/datahandling/dimensions.py,sha256=rttzcg8_LftVsl2cP5fK26n9Wt-GbmD52gsOW4Co2yU,1452
26
+ qplot/datahandling/file_identity.py,sha256=TRvh8GcGsl82ZoRhz7bi7FkLxtXa6c_Vyb6OvlNbbHA,15807
27
+ qplot/datahandling/parameter_data.py,sha256=VxXEzU3gIQZKABcYPBtaQMMEbuABhz_P03j-RXXpBW8,5609
28
+ qplot/datahandling/plot_progress.py,sha256=WzgyWY4d7Q29D7ZH0HdKdTKTuEPLrDic6s05gm-qW9c,368
29
+ qplot/datahandling/qcodes_cache.py,sha256=RSfyctKs-qjICxgmtpJfRLfsWw2T9tzFZFzROnnDXnU,9076
30
+ qplot/datahandling/qcodes_compat.py,sha256=ScgxuRDrPBN65QvHEj8OUGWdXpiXAHy2GN3b45xmE2Q,535
31
+ qplot/datahandling/readSQL.py,sha256=aJDadBNroHAJfAf0uoN2L2I0Bqaw24YFWFnCA8SmggQ,81697
32
+ qplot/datahandling/readonly.py,sha256=lZPz6nEYsTIp9Mx1EVgH5JWtSkxFNxrf1qWYSV3v-1s,93372
33
+ qplot/datahandling/source_activity.py,sha256=4WP9VFD5usBjI4hckg5OXfbD7lQMj6NM-DclEOkOzfE,751
34
+ qplot/datahandling/trusted_array_preview.py,sha256=k6e_fYhwT4DxxJHOnNh-R1Y7Yd5Wd_tQNTlpXNaAod8,5778
35
+ qplot/datahandling/trusted_derived_cache.py,sha256=3SETZTfNovjHj2wwRfRcDuPaNwajiAP1I9CzmwhXoss,62213
36
+ qplot/datahandling/trusted_derived_rendering.py,sha256=POudpOuZomT9CTaihjaXSY4h4EjwlItqMxPpWica_ic,32838
37
+ qplot/datahandling/trusted_heatmap.py,sha256=IowWFOJ4NEcUCWkBfcLQHMCZqUeHbYwfZ-QiNk4pBZw,10511
38
+ qplot/datahandling/trusted_live.py,sha256=_qQSRTThJKpiIIMw9Ukegnys-oEdRa1MefBwTe_MFTs,113026
39
+ qplot/datahandling/trusted_live_queries.py,sha256=1Lv_4PCbYIBDd-BSTwNVad0vDB4miNeZtF8evIepPJU,233550
40
+ qplot/datahandling/trusted_live_service.py,sha256=mt9XJBYoivHXmaAXM7LjrIw9KEnkQ_gzCeT5xkhcFGA,74064
41
+ qplot/datahandling/trusted_live_supervisor.py,sha256=fd3-33_EA5rPCH8Eeo071tqlWRs5150EX_RM9LREo7Y,81053
42
+ qplot/datahandling/trusted_plot.py,sha256=4kdNhTnNILxPvM5NalDWtP5vmTLPf5gH06Mje84nsCk,13137
43
+ qplot/datahandling/trusted_presentation.py,sha256=RL6F_pjVmoFdpMaylaGpkPr7EnESXmAjCtaOkDsVlTU,37591
44
+ qplot/datahandling/trusted_snapshot.py,sha256=o6EJqntswtVBiQ745zluKwtqKwI2c35oxgKiGbYkJno,39912
45
+ qplot/datahandling/trusted_work_coordinator.py,sha256=JdJTbi73O2uoSStuufcEsOzbwzCRvofL0hUqgaFuSu4,83916
46
+ qplot/datahandling/trusted_work_scheduler.py,sha256=rslm4R9LJl0FzMWYbSDyKrc8liGA1WgKUEhoYAhmH2s,46553
47
+ qplot/resources/testdata/qplot_test_db_01_10mb.csv,sha256=orvze7G1wYHVxRJ9P8RD_HUk6fAHjLBMpMRPDohfo6I,590
48
+ qplot/resources/testdata/qplot_test_db_02_25mb.csv,sha256=vXHkaakA2Kc4ghKzPnAXPeFFQ21aQOB1UxeG9A456WM,731
49
+ qplot/resources/testdata/qplot_test_db_03_50mb.csv,sha256=FBwUONqm2EIBTAUsg6D4tJOQYjspfPITgV1Wol_CAAQ,872
50
+ qplot/resources/testdata/qplot_test_db_04_100mb.csv,sha256=TBTpmEVfWJ2a6vZ5Chn5k7gPSl9Gy8tKXYbLUWIdgQk,1015
51
+ qplot/resources/testdata/qplot_test_db_05_250mb.csv,sha256=DgtuXKmRZeIby88CVhfYGTyZxrJvf77YfxCjQ57wb_o,1164
52
+ qplot/resources/testdata/qplot_test_db_06_500mb.csv,sha256=g2E21l2IfeF4mpNLQeuGO3bNBPVuTku7ygH0gt0eRcg,1313
53
+ qplot/resources/testdata/qplot_test_db_07_1gb.csv,sha256=klnu_9KiWXJcsFgtYfGQQrtRrWQBgxe7JZKrnM1M27w,1462
54
+ qplot/resources/testdata/qplot_test_db_08_5gb.csv,sha256=0yDuBKsK8_X2SWPPoDWTiH-KAAb2PG7ToGPub-6CA9w,1611
55
+ qplot/resources/testdata/qplot_test_db_09_10gb.csv,sha256=MP4GMMS_osFubnn1orKZHsUKlNpfueQo0_vPDtlJ9bQ,1760
56
+ qplot/resources/testdata/qplot_test_db_10_30gb.csv,sha256=n5TYHogO9_mmUu9-yPjO09ExCqVWaEl623XPK8pLCgo,1919
57
+ qplot/tools/__init__.py,sha256=Ssfd1pPEQCU_Ji59hN2nXQ3mS9U63eaQ6_YN2SvD8O8,167
58
+ qplot/tools/finite_means.py,sha256=rdKC6aUAqcf83_I7lzPY14d6JiiFYADiTdiL4uJjlI8,5405
59
+ qplot/tools/general.py,sha256=hANER2uOPb5u50TbJ10Toy0-kKtTxGNB_T1KbsVykgY,5351
60
+ qplot/tools/heatmap_geometry.py,sha256=ojWQeItenoGWpNY-hYlNOr5SVnD7kruTBwAABC5kc3s,13498
61
+ qplot/tools/operation_registry.py,sha256=7G0Q7cpuWJkySfcx_xwHKHQkC_cXpW-VQwKSj_cIRto,5100
62
+ qplot/tools/plot_tools.py,sha256=nET93PSQP3Zf2y5XGUk3ueMm_-gxVry0uD3-0D8pc9w,28164
63
+ qplot/tools/sample_statistics.py,sha256=LdNhkd6PX52xD5dDvDW9HSBua59SAzuiOAbDXJRWFoU,2080
64
+ qplot/tools/worker.py,sha256=ofae8U0wD89Av1X2VbJlXLpqq54Q0b4iLnPM8H3FYPw,113003
65
+ qplot/windows/__init__.py,sha256=TDjjzSl7-RlPj5XWVYO4cRsIDoeDrI2MITv8Hw5jw-s,148
66
+ qplot/windows/_colorbar.py,sha256=DPx2ZmTTx1k636DCMztQkOIwd8xSNdK6TW5a44qlVvs,9855
67
+ qplot/windows/_commands.py,sha256=bc3Yx-5eBayXCyq_UOE78w8Ah8EjyR3rjMrAQqvahSo,16088
68
+ qplot/windows/_config_persistence.py,sha256=VtcdAiApp4xNl5-yb_PxBWeWfPBPU5zcE6Q2KaNUbJ8,3371
69
+ qplot/windows/_database_actions.py,sha256=0qGzreUMKF0sFXxnG7KAVj5dnu4TLJmAnQoQ9kaYjq8,190940
70
+ qplot/windows/_dataset_handle.py,sha256=cEUOqZFRm84FrVMOREbNEKlQi90LYym72F3-98uRtnU,6792
71
+ qplot/windows/_dragdrop.py,sha256=H9kMn4XME_nb_kjyOt3dR8RhpQfArANDy_z32QdXRzw,2416
72
+ qplot/windows/_export_paths.py,sha256=o5J-wWMCOaVyjflqX2d-9xZnVgd46qlqSYuuOVS9zJU,40073
73
+ qplot/windows/_help.py,sha256=7hdKmcFBJCV5lB1MetRx-Tn7mfsviHQSHqDEbE-W8Ew,5568
74
+ qplot/windows/_native_averaging.py,sha256=_bRMoIWGMezeQQPrValTapkST4F9-hLQqfPcSmcWpqg,8099
75
+ qplot/windows/_native_transforms.py,sha256=y7QPw44gP_osEWw_Uz5ROKDuc1qiaNIxZ4y8aWfWtEA,19476
76
+ qplot/windows/_plot1d_snap.py,sha256=Z-n9NTVWtOvCp-AstMyF8VNRDqzRp3KTnDb3ONpUzDU,19728
77
+ qplot/windows/_plot1d_traces.py,sha256=tEERvA-h9j5ay6le2UX56aisksKVLLXz-MtuMxr30xY,87863
78
+ qplot/windows/_plot2d_colorbar.py,sha256=F2GQRh7govKXZJs6aqlmlPZLO1QfZ-r4GCIY3MZK2JE,37953
79
+ qplot/windows/_plot2d_colorbar_dialog.py,sha256=0PgBF52uxQGXrigKXu8xTbf5i7773_QNruxfdOt4XWk,29282
80
+ qplot/windows/_plot2d_layers.py,sha256=Iw3ryLaobBjoushhrhQYcPGRo4RpUbrkZnPX9wiE6h8,84122
81
+ qplot/windows/_plot2d_sweeps.py,sha256=WHb57R_ldKKU4hVyFsQz11H3D_hHbs27yi9dnT9SA5I,24053
82
+ qplot/windows/_plotWin.py,sha256=izUCnsknqAk6HAVVNc2xxLmrq08EBmY3gAchNj6ail8,70307
83
+ qplot/windows/_plot_actions.py,sha256=vtCabgxjQYUUGq-FW3VpbwMwbSrJtrVzhHEgSSqHoCc,101494
84
+ qplot/windows/_plot_appearance.py,sha256=B4d3NGpYz3d6d18GSBIVtXDtlS3J5mdft3l2vnMcqlo,9788
85
+ qplot/windows/_plot_axis_scaling.py,sha256=nPZ28-V5Q_NuF1T29XQ7I3kBSYq42dXfe_wtIbQHjt0,61065
86
+ qplot/windows/_plot_export.py,sha256=510J1WmwnLNZYiHQMqPu-RuDof3Om1xeIw8q4YgXDBc,51691
87
+ qplot/windows/_plot_feedback.py,sha256=r-3Fg7QRY68uymoLgeo18XKmafcRU1ONBIvkE-PuyjQ,2862
88
+ qplot/windows/_plot_marquee.py,sha256=aYtB14xAuNAYmPuPpQ5zzcIC3zMMGaZ9cmrqheecsoA,23502
89
+ qplot/windows/_plot_refresh.py,sha256=b-NK5oxr8JHjXxhN88XYB3Y9ifkfqGt-IvWi9AiBsuo,35419
90
+ qplot/windows/_plot_state.py,sha256=o9n2mwOuoTiG1PFfMsVhUnY2M9ugpI55ax6qHOtvKpE,8897
91
+ qplot/windows/_plot_transform_labels.py,sha256=aI3eDgWJklL6_SgDQMYYEVfHnwj_QDWbtqDqIfSv9Ic,2241
92
+ qplot/windows/_preferences.py,sha256=mf4_LNwhSbv9PpM1YtXg9ld59zrcfSQsJQoU8nlEag0,25210
93
+ qplot/windows/_refresh_interval.py,sha256=es3MFIa8E28iJZR0LL0KHAlzpB5eGyQ8Hr1elMfSk5o,2735
94
+ qplot/windows/_run_controls.py,sha256=DsXZ9kdGyyc2gsy_33PNvoPaMk4TYSlKXrogS1AhWp0,31270
95
+ qplot/windows/_shortcuts.py,sha256=LPSjVZzQmSOdN5h6KZ9MSG1RLVOCnL5Xxwb6aDWaIy8,1166
96
+ qplot/windows/_svg_export.py,sha256=DzQxvBPm40rBoZrXIkoYDFkAsoxpTKXfnrn8iYCJkJc,9065
97
+ qplot/windows/_trusted_derived_qt.py,sha256=L8AytLvDDs-gTRx53uHn0zTVOzDg8CAqsz-PugTh4gM,69708
98
+ qplot/windows/_window_controls.py,sha256=WVm3CZz2OJD0cmXyX0N6o0uglt4D6SF61VVmL_x3IIg,12465
99
+ qplot/windows/main.py,sha256=eATvQ9teCBT_jA1DgAXLcsm4CjUwb_Yb02cIxG767uI,63491
100
+ qplot/windows/plot1d.py,sha256=DJppW1Mly5xc3m6ApJ-nYesmEeA7-E8yWtw6lvs_nVY,10738
101
+ qplot/windows/plot2d.py,sha256=ei5dJgMJktRE0BPhi6UDdSiJb_QR8-aXKIG8kBzEYlc,70056
102
+ qplot/windows/_subplots/__init__.py,sha256=Ap-OwFwkdizuY7gNpUDYfdVJoY_dcO3kvGIoRo9L8W0,154
103
+ qplot/windows/_subplots/subplot1d.py,sha256=gnZjyvjWuEnFxlgkEP8MtZMP-G0OHDht7Fa04ohGwt0,17656
104
+ qplot/windows/_subplots/subplot2d.py,sha256=UBVEzqQpCCZ4Unw7kyUPKH-mFcsl0-XCcJmYpG2cB7w,32327
105
+ qplot/windows/_widgets/__init__.py,sha256=dNRx5KrMZO1JvHHuKFF_mObW3cuRPE9D3ogpI4yPUoE,459
106
+ qplot/windows/_widgets/_run_formatting.py,sha256=8oIT3d8oWAYZp7ii6vOOamG1Aq7THg_xdMrVLder8xA,11893
107
+ qplot/windows/_widgets/details_tables.py,sha256=jx2DbJ0ywsKnzbkI_e39lVa0ypdfI2zvDcxZYY3gwNk,41586
108
+ qplot/windows/_widgets/dropbox.py,sha256=5lijy1zs6ZVTpp-8f7UdUZjqTEywEo6PgL7bZIHX3nM,9036
109
+ qplot/windows/_widgets/operations.py,sha256=QUw_Sqk5UoZhLfEaW1Eesu2j7MpC7ylkciJc63lRflQ,16451
110
+ qplot/windows/_widgets/preview.py,sha256=8Qx5r7lm8jFURx1oSTE5ca04VukvysDrx2CaRAfKXwE,96566
111
+ qplot/windows/_widgets/run_list_items.py,sha256=yCDXUbutUGGmYI7vIoVJBzXiQT24THwmSUl5dAk4C4U,16837
112
+ qplot/windows/_widgets/toolbar.py,sha256=hdLaQ80VekKnkQgY9ESassiCN1-IxPGuqrFn7rn6Ugg,3834
113
+ qplot/windows/_widgets/treeWidgets.py,sha256=Ir9jkyQOjv56ZPV5nI92Xlolq447TYxo0NML6zB3SI8,93791
114
+ qplotter-1.6.0b3.dist-info/licenses/LICENSE,sha256=pAF_Uxq42gSBSjDcnzaFQwvCf-oQZc42t0R8u27p9nk,1076
115
+ qplotter-1.6.0b3.dist-info/METADATA,sha256=_h_asQACOIO5lYKeWpbvU4r__dP5TIfJJMTG2hq04qE,12808
116
+ qplotter-1.6.0b3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
117
+ qplotter-1.6.0b3.dist-info/entry_points.txt,sha256=qyuJQsN21MFJrhDZJSQ5YJs1MXm546hoXdjH_autJGU,133
118
+ qplotter-1.6.0b3.dist-info/top_level.txt,sha256=0DiVN2Aw9NMB6RtGe8zXPFDdhyaU1QYwDVRdPiR-xYA,6
119
+ qplotter-1.6.0b3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ qplot = qplot.__main__:run
3
+ qplot-cfg = qplot.configuration.scripts:scripts
4
+ qplot-generate-db = qplot.testdata:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 lairdgrouplancaster
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ qplot