qplotter 1.6.0__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.
- qplot/__init__.py +46 -0
- qplot/__main__.py +232 -0
- qplot/_auxiliary_paths.py +67 -0
- qplot/_build_info.json +1 -0
- qplot/_metadata.py +75 -0
- qplot/_repair.py +14 -0
- qplot/_shutdown_supervisor.py +4049 -0
- qplot/_version.py +12 -0
- qplot/_windows_shutdown_job.py +1166 -0
- qplot/configuration/__init__.py +3 -0
- qplot/configuration/config.py +578 -0
- qplot/configuration/config_schema.json +357 -0
- qplot/configuration/fonts.py +3 -0
- qplot/configuration/scripts.py +255 -0
- qplot/configuration/themes/__init__.py +13 -0
- qplot/configuration/themes/_base.py +592 -0
- qplot/configuration/themes/blank.py +17 -0
- qplot/configuration/themes/dark.py +54 -0
- qplot/configuration/themes/light.py +54 -0
- qplot/datahandling/LoadFromDB.py +224 -0
- qplot/datahandling/__init__.py +47 -0
- qplot/datahandling/_trusted_live_helper.py +812 -0
- qplot/datahandling/_trusted_live_protocol.py +1745 -0
- qplot/datahandling/database.py +2340 -0
- qplot/datahandling/dimensions.py +43 -0
- qplot/datahandling/file_identity.py +461 -0
- qplot/datahandling/parameter_data.py +149 -0
- qplot/datahandling/plot_progress.py +17 -0
- qplot/datahandling/qcodes_cache.py +277 -0
- qplot/datahandling/qcodes_compat.py +14 -0
- qplot/datahandling/readSQL.py +2442 -0
- qplot/datahandling/readonly.py +2566 -0
- qplot/datahandling/source_activity.py +21 -0
- qplot/datahandling/trusted_array_preview.py +148 -0
- qplot/datahandling/trusted_derived_cache.py +1605 -0
- qplot/datahandling/trusted_derived_rendering.py +876 -0
- qplot/datahandling/trusted_heatmap.py +246 -0
- qplot/datahandling/trusted_live.py +2808 -0
- qplot/datahandling/trusted_live_queries.py +5907 -0
- qplot/datahandling/trusted_live_service.py +1919 -0
- qplot/datahandling/trusted_live_supervisor.py +2161 -0
- qplot/datahandling/trusted_plot.py +283 -0
- qplot/datahandling/trusted_presentation.py +1065 -0
- qplot/datahandling/trusted_snapshot.py +1132 -0
- qplot/datahandling/trusted_work_coordinator.py +2157 -0
- qplot/datahandling/trusted_work_scheduler.py +1204 -0
- qplot/diagnostics.py +241 -0
- qplot/resources/testdata/qplot_test_db_01_10mb.csv +11 -0
- qplot/resources/testdata/qplot_test_db_02_25mb.csv +14 -0
- qplot/resources/testdata/qplot_test_db_03_50mb.csv +17 -0
- qplot/resources/testdata/qplot_test_db_04_100mb.csv +20 -0
- qplot/resources/testdata/qplot_test_db_05_250mb.csv +23 -0
- qplot/resources/testdata/qplot_test_db_06_500mb.csv +26 -0
- qplot/resources/testdata/qplot_test_db_07_1gb.csv +29 -0
- qplot/resources/testdata/qplot_test_db_08_5gb.csv +32 -0
- qplot/resources/testdata/qplot_test_db_09_10gb.csv +35 -0
- qplot/resources/testdata/qplot_test_db_10_30gb.csv +38 -0
- qplot/testdata.py +1804 -0
- qplot/tools/__init__.py +13 -0
- qplot/tools/finite_means.py +123 -0
- qplot/tools/general.py +139 -0
- qplot/tools/heatmap_geometry.py +391 -0
- qplot/tools/operation_registry.py +179 -0
- qplot/tools/plot_tools.py +650 -0
- qplot/tools/sample_statistics.py +111 -0
- qplot/tools/worker.py +2838 -0
- qplot/windows/__init__.py +9 -0
- qplot/windows/_colorbar.py +422 -0
- qplot/windows/_commands.py +523 -0
- qplot/windows/_config_persistence.py +123 -0
- qplot/windows/_database_actions.py +4933 -0
- qplot/windows/_dataset_handle.py +221 -0
- qplot/windows/_display_precision.py +48 -0
- qplot/windows/_dragdrop.py +70 -0
- qplot/windows/_export_paths.py +1167 -0
- qplot/windows/_help.py +210 -0
- qplot/windows/_mixed_appearance.py +303 -0
- qplot/windows/_mixed_plots.py +461 -0
- qplot/windows/_native_averaging.py +323 -0
- qplot/windows/_native_transforms.py +551 -0
- qplot/windows/_plot1d_snap.py +612 -0
- qplot/windows/_plot1d_traces.py +2236 -0
- qplot/windows/_plot2d_colorbar.py +1127 -0
- qplot/windows/_plot2d_colorbar_dialog.py +786 -0
- qplot/windows/_plot2d_layers.py +2291 -0
- qplot/windows/_plot2d_sweeps.py +712 -0
- qplot/windows/_plotWin.py +2082 -0
- qplot/windows/_plot_actions.py +2703 -0
- qplot/windows/_plot_annotation.py +186 -0
- qplot/windows/_plot_appearance.py +283 -0
- qplot/windows/_plot_axis_scaling.py +1521 -0
- qplot/windows/_plot_data_viewbox.py +94 -0
- qplot/windows/_plot_drop_axes.py +224 -0
- qplot/windows/_plot_export.py +1445 -0
- qplot/windows/_plot_feedback.py +112 -0
- qplot/windows/_plot_marquee.py +659 -0
- qplot/windows/_plot_refresh.py +950 -0
- qplot/windows/_plot_source_promotion.py +178 -0
- qplot/windows/_plot_state.py +237 -0
- qplot/windows/_plot_status.py +115 -0
- qplot/windows/_plot_tiling.py +35 -0
- qplot/windows/_plot_transform_labels.py +60 -0
- qplot/windows/_preferences.py +724 -0
- qplot/windows/_refresh_interval.py +172 -0
- qplot/windows/_run_controls.py +789 -0
- qplot/windows/_shortcuts.py +47 -0
- qplot/windows/_subplots/__init__.py +8 -0
- qplot/windows/_subplots/subplot1d.py +532 -0
- qplot/windows/_subplots/subplot2d.py +919 -0
- qplot/windows/_svg_export.py +209 -0
- qplot/windows/_trusted_derived_qt.py +1759 -0
- qplot/windows/_widgets/__init__.py +23 -0
- qplot/windows/_widgets/_run_formatting.py +387 -0
- qplot/windows/_widgets/details_tables.py +1119 -0
- qplot/windows/_widgets/dropbox.py +290 -0
- qplot/windows/_widgets/operations.py +460 -0
- qplot/windows/_widgets/preview.py +2997 -0
- qplot/windows/_widgets/run_list_items.py +488 -0
- qplot/windows/_widgets/toolbar.py +111 -0
- qplot/windows/_widgets/treeWidgets.py +2572 -0
- qplot/windows/_window_controls.py +414 -0
- qplot/windows/main.py +1632 -0
- qplot/windows/plot1d.py +313 -0
- qplot/windows/plot2d.py +1935 -0
- qplotter-1.6.0.dist-info/METADATA +322 -0
- qplotter-1.6.0.dist-info/RECORD +130 -0
- qplotter-1.6.0.dist-info/WHEEL +5 -0
- qplotter-1.6.0.dist-info/entry_points.txt +4 -0
- qplotter-1.6.0.dist-info/licenses/LICENSE +21 -0
- qplotter-1.6.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: qplotter
|
|
3
|
+
Version: 1.6.0
|
|
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 :: 5 - Production/Stable
|
|
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
|
+
[](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/releases/latest)
|
|
49
|
+
[](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. Trusted live previews and thumbnails load progressively through a bounded
|
|
120
|
+
scheduler and application cache. See
|
|
121
|
+
[Trusted live QCoDeS reader](docs/trusted-live-reader.md).
|
|
122
|
+
|
|
123
|
+
## Packages
|
|
124
|
+
|
|
125
|
+
The application distribution is `qplotter`; its Python imports and
|
|
126
|
+
console commands remain `qplot`, `qplot-cfg`, and `qplot-generate-db`.
|
|
127
|
+
Use **Help → About qPlot** to see the version in use on every platform.
|
|
128
|
+
Source checkouts also show the commit and
|
|
129
|
+
whether there are local changes. CI-built packages retain their build commit
|
|
130
|
+
and, for pull-request builds, the PR number. Packages installed without build
|
|
131
|
+
provenance still show the release number.
|
|
132
|
+
The separately built `qplotter-native==1.0.0` supplies the protected
|
|
133
|
+
SQLite reader through `qplot_native`. The application's exact dependency pin
|
|
134
|
+
installs the compatible native wheel automatically. Both packages pin the same
|
|
135
|
+
APSW/SQLite runtime, preserving trusted live reading and database protections.
|
|
136
|
+
|
|
137
|
+
Contributors can edit the application without a C compiler:
|
|
138
|
+
|
|
139
|
+
```console
|
|
140
|
+
python -m pip install --only-binary=:all: -e ".[dev]"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
See [Contributing](CONTRIBUTING.md) and [Distribution](docs/distribution.md)
|
|
144
|
+
for prepublication development using a local native wheel, explicit native
|
|
145
|
+
source builds, and release validation.
|
|
146
|
+
|
|
147
|
+
## Install
|
|
148
|
+
|
|
149
|
+
Install qPlot inside a supported Python virtual environment. This checkout
|
|
150
|
+
prepares the stable application release `1.6.0`, with native `1.0.0`.
|
|
151
|
+
The installation examples below work after publication; until then, use
|
|
152
|
+
validated local artifacts as described in [Distribution](docs/distribution.md).
|
|
153
|
+
|
|
154
|
+
### Prelude
|
|
155
|
+
#### Windows
|
|
156
|
+
|
|
157
|
+
Create a folder for qPlot, open it in Terminal, and execute:
|
|
158
|
+
```console
|
|
159
|
+
py -3.11 --version
|
|
160
|
+
py -3.11 -m venv .venv
|
|
161
|
+
.\.venv\Scripts\Activate.ps1
|
|
162
|
+
python -m pip install -U pip
|
|
163
|
+
```
|
|
164
|
+
#### macOS / Linux
|
|
165
|
+
|
|
166
|
+
Create a folder for qPlot, open Terminal there, and execute:
|
|
167
|
+
```console
|
|
168
|
+
python3 --version
|
|
169
|
+
python3 -m venv .venv-mac
|
|
170
|
+
source .venv-mac/bin/activate
|
|
171
|
+
python -m pip install -U pip
|
|
172
|
+
```
|
|
173
|
+
### Installing your chosen version
|
|
174
|
+
|
|
175
|
+
For ordinary installation after a stable PyPI release is available:
|
|
176
|
+
|
|
177
|
+
```console
|
|
178
|
+
python -m pip install --only-binary=:all: qplotter
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
To select version 1.6.0 explicitly after publication:
|
|
182
|
+
```console
|
|
183
|
+
python -m pip install --only-binary=:all: qplotter==1.6.0
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Both commands install the full runtime dependency set as wheels, with no C
|
|
187
|
+
compiler. To follow subsequent betas, add `--pre`. Check the selected Python
|
|
188
|
+
interpreter and platform if pip reports no compatible wheel.
|
|
189
|
+
|
|
190
|
+
Historical releases retain their old packaging. For example, the earlier full
|
|
191
|
+
release remains available from its Git tag:
|
|
192
|
+
```console
|
|
193
|
+
python -m pip install git+https://github.com/lairdgrouplancaster/QCoDeS-Plotter.git@v1.5.0
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Replacing an older installation
|
|
197
|
+
|
|
198
|
+
Older releases used the distribution name `qplot`. A fresh virtual environment
|
|
199
|
+
is the simplest replacement. To reuse an environment, close qPlot, uninstall
|
|
200
|
+
the old distribution and any overlapping split installation **before**
|
|
201
|
+
installing the new packages:
|
|
202
|
+
|
|
203
|
+
```console
|
|
204
|
+
python -m pip uninstall -y qplot qcodes-plotter qcodes-plotter-native qplotter qplotter-native
|
|
205
|
+
python -m pip install --only-binary=:all: qplotter==1.6.0
|
|
206
|
+
python -m pip check
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Do this even if the old installation was editable. Installing the new name
|
|
210
|
+
over `qplot` leaves two distributions owning the same `qplot` import package
|
|
211
|
+
and console commands; uninstalling the old one afterward can remove the new
|
|
212
|
+
installation's files. Settings and measurement databases are outside these
|
|
213
|
+
packages and are unaffected by pip uninstall.
|
|
214
|
+
|
|
215
|
+
### Troubleshooting
|
|
216
|
+
|
|
217
|
+
If the version check above reports Python 3.10 or older, install Python 3.11 or newer
|
|
218
|
+
first and use that launcher instead, for example `python3.12` on macOS.
|
|
219
|
+
|
|
220
|
+
Virtual environments are not portable between operating systems. If the
|
|
221
|
+
checkout is synced between systems, make sure VS Code is using the interpreter
|
|
222
|
+
created for the current system:
|
|
223
|
+
|
|
224
|
+
* Windows: `.\.venv\Scripts\python.exe`
|
|
225
|
+
* macOS: `./.venv-mac/bin/python`
|
|
226
|
+
* Linux development: `./.venv-linux/bin/python`
|
|
227
|
+
|
|
228
|
+
### Check the install
|
|
229
|
+
|
|
230
|
+
```console
|
|
231
|
+
qplot-cfg -version
|
|
232
|
+
python -c "import qplot; print(qplot.__file__)"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Run
|
|
236
|
+
|
|
237
|
+
Start the app from an activated virtual environment:
|
|
238
|
+
|
|
239
|
+
```console
|
|
240
|
+
qplot
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
To open a database directly:
|
|
244
|
+
|
|
245
|
+
```console
|
|
246
|
+
qplot path/to/database.db
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
For file-manager `Open With` and double-click setup, see
|
|
250
|
+
[Opening Databases from the File Manager](docs/user-guide.md#opening-databases-from-the-file-manager).
|
|
251
|
+
|
|
252
|
+
You can also run:
|
|
253
|
+
|
|
254
|
+
```console
|
|
255
|
+
python -m qplot
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
or start it from Python:
|
|
259
|
+
|
|
260
|
+
```python
|
|
261
|
+
import qplot
|
|
262
|
+
|
|
263
|
+
qplot.run()
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Basic Use
|
|
267
|
+
|
|
268
|
+
1. Open qPlot.
|
|
269
|
+
2. Drag a QCoDeS `.db` file onto the database path field, or use
|
|
270
|
+
`File -> Load Database...`.
|
|
271
|
+
3. Select a run in the run table.
|
|
272
|
+
4. Plot a measurement using the run-table context menu, or enter a run ID and
|
|
273
|
+
measurement number at the top of the window. Snapshot fallback sessions may
|
|
274
|
+
also offer a preview that can be double-clicked.
|
|
275
|
+
|
|
276
|
+
Plot windows may appear before their data has finished loading. Check the
|
|
277
|
+
status bar at the bottom of the plot window before assuming a load has failed.
|
|
278
|
+
|
|
279
|
+
For the installed `1.5.0` release, see its
|
|
280
|
+
[versioned user guide](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/blob/v1.5.0/docs/user-guide.md).
|
|
281
|
+
|
|
282
|
+
Likewise, use the
|
|
283
|
+
[1.5.0 troubleshooting guide](https://github.com/lairdgrouplancaster/QCoDeS-Plotter/blob/v1.5.0/docs/troubleshooting.md)
|
|
284
|
+
for this release.
|
|
285
|
+
|
|
286
|
+
For release history, see [CHANGELOG.md](CHANGELOG.md).
|
|
287
|
+
|
|
288
|
+
## Configuration
|
|
289
|
+
|
|
290
|
+
On first run, qPlot creates:
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
~/.qplot/config.json
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Useful commands:
|
|
297
|
+
|
|
298
|
+
```console
|
|
299
|
+
qplot-cfg -info
|
|
300
|
+
qplot-cfg -version
|
|
301
|
+
qplot-cfg -dump
|
|
302
|
+
qplot-cfg -find user_preference.theme
|
|
303
|
+
qplot-cfg -set_value user_preference.theme dark
|
|
304
|
+
qplot-cfg -reset
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
For all config keys, defaults, validation rules, and contributor notes, see
|
|
308
|
+
[docs/configuration.md](docs/configuration.md).
|
|
309
|
+
|
|
310
|
+
## Development
|
|
311
|
+
|
|
312
|
+
For development setup, test commands, and contribution workflow, see
|
|
313
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
314
|
+
|
|
315
|
+
For a short map of the codebase, see [docs/architecture.md](docs/architecture.md).
|
|
316
|
+
|
|
317
|
+
For demo data and screenshot workflow notes, see [docs/demo-data.md](docs/demo-data.md).
|
|
318
|
+
|
|
319
|
+
For release and packaging notes, see [docs/distribution.md](docs/distribution.md).
|
|
320
|
+
|
|
321
|
+
Local development helper scripts are documented in
|
|
322
|
+
[scripts/README.md](scripts/README.md).
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
qplot/__init__.py,sha256=h7bATpj2Fws18yzOZB9S4CG4WI2nspp1y62SGYMBQs0,995
|
|
2
|
+
qplot/__main__.py,sha256=mo3MljVvNwH9UER9zVelA5OtwAKbwP3ioOWRPLa7XL8,7196
|
|
3
|
+
qplot/_auxiliary_paths.py,sha256=PSHcPlOsZLyifrFM2exq0UjbXOxdAwtjvv9G1WRrGyE,2869
|
|
4
|
+
qplot/_build_info.json,sha256=s5OetzXTjqAJW09Fg9TkYucRpECC_nQhgJ0fi-gV56c,109
|
|
5
|
+
qplot/_metadata.py,sha256=JdYjUqPMlvuLorfKFrDBzDl5XtuK1UajiSabvTREVYU,2882
|
|
6
|
+
qplot/_repair.py,sha256=p0ECi8EUalhbO5dqyYYDTI2_056hXjoC1iz4ttGxLsQ,400
|
|
7
|
+
qplot/_shutdown_supervisor.py,sha256=-_6JHn3QGS3kb3Ve9OvfXPVzuOdx4uTxHmPhnW1TUz8,150232
|
|
8
|
+
qplot/_version.py,sha256=erFpq1Pi8onofb-kYwA1Vef7QbFxKKLRchDZBJSaPWw,255
|
|
9
|
+
qplot/_windows_shutdown_job.py,sha256=4VerCXKwHkOwBUtpDZDf-H3-Jl6SuA7SeI3qVnpYzmg,44929
|
|
10
|
+
qplot/diagnostics.py,sha256=B5_vR60t5cWwE5y_hxyZQJQDoM_PZNavgWK_LCCGiOs,6796
|
|
11
|
+
qplot/testdata.py,sha256=fv2uGoVCB2lijl9gWD8VkK3kU5sNpHuGisbZelD6vio,69253
|
|
12
|
+
qplot/configuration/__init__.py,sha256=coXd1W4qzG_qftVAVidfUj_8HC5mYRKQF1-6AfnnFbw,32
|
|
13
|
+
qplot/configuration/config.py,sha256=iI0sZseXF08HNLUNx_rnzintd6wwDNnmLXEqBUGTNA4,18704
|
|
14
|
+
qplot/configuration/config_schema.json,sha256=9BcbkCnVkUFgmSrEdssK4MU-8jodD7O-KKdJV3--T6o,12592
|
|
15
|
+
qplot/configuration/fonts.py,sha256=f5t7MKDgZVfxVs8njQHpUstooGOcthbmVsQFZ4wTMy4,91
|
|
16
|
+
qplot/configuration/scripts.py,sha256=XlJWj242rtXMUJobuQSjSG2s5MJFYM24UwOfPL3IN88,7061
|
|
17
|
+
qplot/configuration/themes/__init__.py,sha256=TDdORwH1LMAknZVNrm6uIlpp-LlMUFE9TvUJZMURVVg,222
|
|
18
|
+
qplot/configuration/themes/_base.py,sha256=2Ok9IS3NEK3niEIFP98dEuVkBwU7KAoWYBN1u8LYlKQ,15898
|
|
19
|
+
qplot/configuration/themes/blank.py,sha256=0GPSpECINzeMnLRk4K3xJWcM8rEYfbQ4P-popFYJAK8,463
|
|
20
|
+
qplot/configuration/themes/dark.py,sha256=9Z5GzpJgJ5FydfuownFAOIN8Y_JAs2IivBw8cAAVe0o,1364
|
|
21
|
+
qplot/configuration/themes/light.py,sha256=s0aMj2-6kBjSuP4kUb-1e4FkbvibS1uuw2rgEN8rgns,1369
|
|
22
|
+
qplot/datahandling/LoadFromDB.py,sha256=U4ERlImWRCokqrWRDFrOPfvluNEaHYGxFske0NiUmP0,8197
|
|
23
|
+
qplot/datahandling/__init__.py,sha256=lVgpAbIwthVdxhr0Ifpxpg71bRQ-zQKGL1H38oFAYJY,1386
|
|
24
|
+
qplot/datahandling/_trusted_live_helper.py,sha256=7QcgRtGFTlFXdQX-tet6aA2G5M_78XZ1n-CHbM32w2k,30458
|
|
25
|
+
qplot/datahandling/_trusted_live_protocol.py,sha256=v8HwmRc3Ify_8FZSQKR1k5UoGkc681Br6tivG85P4BQ,63164
|
|
26
|
+
qplot/datahandling/database.py,sha256=3Xdj4nTvErngJrTbdiCaozRal0-Bdt4PjYadHb21zJc,81732
|
|
27
|
+
qplot/datahandling/dimensions.py,sha256=rttzcg8_LftVsl2cP5fK26n9Wt-GbmD52gsOW4Co2yU,1452
|
|
28
|
+
qplot/datahandling/file_identity.py,sha256=TRvh8GcGsl82ZoRhz7bi7FkLxtXa6c_Vyb6OvlNbbHA,15807
|
|
29
|
+
qplot/datahandling/parameter_data.py,sha256=VxXEzU3gIQZKABcYPBtaQMMEbuABhz_P03j-RXXpBW8,5609
|
|
30
|
+
qplot/datahandling/plot_progress.py,sha256=WzgyWY4d7Q29D7ZH0HdKdTKTuEPLrDic6s05gm-qW9c,368
|
|
31
|
+
qplot/datahandling/qcodes_cache.py,sha256=RSfyctKs-qjICxgmtpJfRLfsWw2T9tzFZFzROnnDXnU,9076
|
|
32
|
+
qplot/datahandling/qcodes_compat.py,sha256=ScgxuRDrPBN65QvHEj8OUGWdXpiXAHy2GN3b45xmE2Q,535
|
|
33
|
+
qplot/datahandling/readSQL.py,sha256=aJDadBNroHAJfAf0uoN2L2I0Bqaw24YFWFnCA8SmggQ,81697
|
|
34
|
+
qplot/datahandling/readonly.py,sha256=JnKJq8R-bAJHWDMwrjW0ei1UUZ8NnXKB0onmBVQJQy4,93659
|
|
35
|
+
qplot/datahandling/source_activity.py,sha256=4WP9VFD5usBjI4hckg5OXfbD7lQMj6NM-DclEOkOzfE,751
|
|
36
|
+
qplot/datahandling/trusted_array_preview.py,sha256=3-CJ15sWqRuCJz7ZRnSrb1xrOUyfBBxT354tRCldTE0,6752
|
|
37
|
+
qplot/datahandling/trusted_derived_cache.py,sha256=3SETZTfNovjHj2wwRfRcDuPaNwajiAP1I9CzmwhXoss,62213
|
|
38
|
+
qplot/datahandling/trusted_derived_rendering.py,sha256=VT1Dh1_O1-ukXbX49YNDL2gOfG06ccbw2N6ednoApuU,33399
|
|
39
|
+
qplot/datahandling/trusted_heatmap.py,sha256=RIyT_pFXiHCT5sKJE47osXrUu0O2wz7DKPcIwnKSiZ4,10849
|
|
40
|
+
qplot/datahandling/trusted_live.py,sha256=_qQSRTThJKpiIIMw9Ukegnys-oEdRa1MefBwTe_MFTs,113026
|
|
41
|
+
qplot/datahandling/trusted_live_queries.py,sha256=1Lv_4PCbYIBDd-BSTwNVad0vDB4miNeZtF8evIepPJU,233550
|
|
42
|
+
qplot/datahandling/trusted_live_service.py,sha256=AaLT4JLVPskIrv242l62SuGMCSgZx6wfZRE9nVuodRw,75330
|
|
43
|
+
qplot/datahandling/trusted_live_supervisor.py,sha256=fd3-33_EA5rPCH8Eeo071tqlWRs5150EX_RM9LREo7Y,81053
|
|
44
|
+
qplot/datahandling/trusted_plot.py,sha256=4kdNhTnNILxPvM5NalDWtP5vmTLPf5gH06Mje84nsCk,13137
|
|
45
|
+
qplot/datahandling/trusted_presentation.py,sha256=RL6F_pjVmoFdpMaylaGpkPr7EnESXmAjCtaOkDsVlTU,37591
|
|
46
|
+
qplot/datahandling/trusted_snapshot.py,sha256=o6EJqntswtVBiQ745zluKwtqKwI2c35oxgKiGbYkJno,39912
|
|
47
|
+
qplot/datahandling/trusted_work_coordinator.py,sha256=JdJTbi73O2uoSStuufcEsOzbwzCRvofL0hUqgaFuSu4,83916
|
|
48
|
+
qplot/datahandling/trusted_work_scheduler.py,sha256=rslm4R9LJl0FzMWYbSDyKrc8liGA1WgKUEhoYAhmH2s,46553
|
|
49
|
+
qplot/resources/testdata/qplot_test_db_01_10mb.csv,sha256=orvze7G1wYHVxRJ9P8RD_HUk6fAHjLBMpMRPDohfo6I,590
|
|
50
|
+
qplot/resources/testdata/qplot_test_db_02_25mb.csv,sha256=vXHkaakA2Kc4ghKzPnAXPeFFQ21aQOB1UxeG9A456WM,731
|
|
51
|
+
qplot/resources/testdata/qplot_test_db_03_50mb.csv,sha256=FBwUONqm2EIBTAUsg6D4tJOQYjspfPITgV1Wol_CAAQ,872
|
|
52
|
+
qplot/resources/testdata/qplot_test_db_04_100mb.csv,sha256=TBTpmEVfWJ2a6vZ5Chn5k7gPSl9Gy8tKXYbLUWIdgQk,1015
|
|
53
|
+
qplot/resources/testdata/qplot_test_db_05_250mb.csv,sha256=DgtuXKmRZeIby88CVhfYGTyZxrJvf77YfxCjQ57wb_o,1164
|
|
54
|
+
qplot/resources/testdata/qplot_test_db_06_500mb.csv,sha256=g2E21l2IfeF4mpNLQeuGO3bNBPVuTku7ygH0gt0eRcg,1313
|
|
55
|
+
qplot/resources/testdata/qplot_test_db_07_1gb.csv,sha256=klnu_9KiWXJcsFgtYfGQQrtRrWQBgxe7JZKrnM1M27w,1462
|
|
56
|
+
qplot/resources/testdata/qplot_test_db_08_5gb.csv,sha256=0yDuBKsK8_X2SWPPoDWTiH-KAAb2PG7ToGPub-6CA9w,1611
|
|
57
|
+
qplot/resources/testdata/qplot_test_db_09_10gb.csv,sha256=MP4GMMS_osFubnn1orKZHsUKlNpfueQo0_vPDtlJ9bQ,1760
|
|
58
|
+
qplot/resources/testdata/qplot_test_db_10_30gb.csv,sha256=n5TYHogO9_mmUu9-yPjO09ExCqVWaEl623XPK8pLCgo,1919
|
|
59
|
+
qplot/tools/__init__.py,sha256=Ssfd1pPEQCU_Ji59hN2nXQ3mS9U63eaQ6_YN2SvD8O8,167
|
|
60
|
+
qplot/tools/finite_means.py,sha256=L9cQNoFQZfCc2j2TPTfBb2hZZAa0LVqKCp-3dP3Dvxw,5980
|
|
61
|
+
qplot/tools/general.py,sha256=adlJ2f4EpI-0DBzS1SUVJ29n9ZY8cknUk52aGsZeaks,5559
|
|
62
|
+
qplot/tools/heatmap_geometry.py,sha256=TKNormEKCXiGFGM56AsZ9Teu4fmtlBRGOqsdNLJ5BQU,14157
|
|
63
|
+
qplot/tools/operation_registry.py,sha256=7G0Q7cpuWJkySfcx_xwHKHQkC_cXpW-VQwKSj_cIRto,5100
|
|
64
|
+
qplot/tools/plot_tools.py,sha256=p_Kc19wxLXbsyIzKJPz6YPF1ZxOrY4zFf7YA2m0U-Ps,29344
|
|
65
|
+
qplot/tools/sample_statistics.py,sha256=5OaaqwO8RXnk1RTk1BpMtHdNuSeGBwIRRUWQ7ysyJVY,4656
|
|
66
|
+
qplot/tools/worker.py,sha256=F0zvErGjVsdO8dNOB2b8SaFRRHzRl-oiWglnwkZnX60,116167
|
|
67
|
+
qplot/windows/__init__.py,sha256=TDjjzSl7-RlPj5XWVYO4cRsIDoeDrI2MITv8Hw5jw-s,148
|
|
68
|
+
qplot/windows/_colorbar.py,sha256=DPx2ZmTTx1k636DCMztQkOIwd8xSNdK6TW5a44qlVvs,9855
|
|
69
|
+
qplot/windows/_commands.py,sha256=vg9-ivGC83hpTnz5g1fMAvj5etbfziUQKx0Q9Bk1ino,16143
|
|
70
|
+
qplot/windows/_config_persistence.py,sha256=VtcdAiApp4xNl5-yb_PxBWeWfPBPU5zcE6Q2KaNUbJ8,3371
|
|
71
|
+
qplot/windows/_database_actions.py,sha256=zGxW7WvLUhAlfbjJgp4QZiC3jpIonf-rB7vWwI-pjrg,192402
|
|
72
|
+
qplot/windows/_dataset_handle.py,sha256=cEUOqZFRm84FrVMOREbNEKlQi90LYym72F3-98uRtnU,6792
|
|
73
|
+
qplot/windows/_display_precision.py,sha256=riC8HtgM5lfiJb9662AaFHGzjGEjE6rFYVxLpKwUDTA,1930
|
|
74
|
+
qplot/windows/_dragdrop.py,sha256=YbUyaPG53JojEuWBIa1jf5CXoAVshon9WIl6aiRHnZU,2470
|
|
75
|
+
qplot/windows/_export_paths.py,sha256=o5J-wWMCOaVyjflqX2d-9xZnVgd46qlqSYuuOVS9zJU,40073
|
|
76
|
+
qplot/windows/_help.py,sha256=G80F749dYfKd4wmdxZY5wch4iJgAbnrwMtmG7mtU9xQ,7442
|
|
77
|
+
qplot/windows/_mixed_appearance.py,sha256=5w91csvpiWzkDC-lyM_yQdTHmWZbIG5kKcTYQQ6N-1Y,14564
|
|
78
|
+
qplot/windows/_mixed_plots.py,sha256=QNcb7StkPAO92HQmdm3AWP3t5KWBZ4ZROwBaUwOUNCg,20846
|
|
79
|
+
qplot/windows/_native_averaging.py,sha256=OoXlwjrS2LMjRGzSv9rtB4lWUgoHHcwtsDacLCSZL1Q,15418
|
|
80
|
+
qplot/windows/_native_transforms.py,sha256=T-afZaE4dhFTjcVssxD0Ay32HXJje_tnBvQ9N_VvEeg,27393
|
|
81
|
+
qplot/windows/_plot1d_snap.py,sha256=TktSEQOPsebf2LrENkQ02OSNz9E7z0BiiaPlJlvnEGY,19920
|
|
82
|
+
qplot/windows/_plot1d_traces.py,sha256=lMCYBSvxJ5ieF8wPqFJMhOwzOqpA7oEEUXj1aCubbKM,90208
|
|
83
|
+
qplot/windows/_plot2d_colorbar.py,sha256=JrIlsVLzeT_V3D_OneWntp-5F_1YkeGht0EBtUOTybE,38102
|
|
84
|
+
qplot/windows/_plot2d_colorbar_dialog.py,sha256=0PgBF52uxQGXrigKXu8xTbf5i7773_QNruxfdOt4XWk,29282
|
|
85
|
+
qplot/windows/_plot2d_layers.py,sha256=DZblhbyO3vwbvSddrfljlLhsPAltsze5P55-TuvNfho,89605
|
|
86
|
+
qplot/windows/_plot2d_sweeps.py,sha256=WHb57R_ldKKU4hVyFsQz11H3D_hHbs27yi9dnT9SA5I,24053
|
|
87
|
+
qplot/windows/_plotWin.py,sha256=lAlTKBP93Oqm2fESG5na8RC91Ox_vGRrPNpS8gIU8ZE,75061
|
|
88
|
+
qplot/windows/_plot_actions.py,sha256=uYL8hrB3Y2JXw7P_CDhjBPKClkqzKgp5prgEm4w8FN8,102480
|
|
89
|
+
qplot/windows/_plot_annotation.py,sha256=Nby3p-21Wbak4Z6_16GegPFyVYtl7swtSGU2GpzbR1M,7413
|
|
90
|
+
qplot/windows/_plot_appearance.py,sha256=5siPatEk7lSVN5MEUmH72nFtZ08IHS41hDrdDCv9lnU,10071
|
|
91
|
+
qplot/windows/_plot_axis_scaling.py,sha256=7ydY6yjR-hfxq5LgzTCE5wq4AHxblTmZ3jnVq8TkPe4,63229
|
|
92
|
+
qplot/windows/_plot_data_viewbox.py,sha256=T5UMZ6HHPnfuRqdxUd_scCDpxTDx3DaR2l9Nt8zc77A,3637
|
|
93
|
+
qplot/windows/_plot_drop_axes.py,sha256=HbAGv4Rz6l8QlsvyWlWvhySryTqWfPVSU-at2DMkrsw,10411
|
|
94
|
+
qplot/windows/_plot_export.py,sha256=510J1WmwnLNZYiHQMqPu-RuDof3Om1xeIw8q4YgXDBc,51691
|
|
95
|
+
qplot/windows/_plot_feedback.py,sha256=mjlKBt-Mo4sfxyRfjTjPQTVL34ESLoTSIR5ibOr-iqs,2966
|
|
96
|
+
qplot/windows/_plot_marquee.py,sha256=bM8MgqfRuLeOL1Pzf-wGecnxQvipkXOeO_kLxQJ_eRk,23613
|
|
97
|
+
qplot/windows/_plot_refresh.py,sha256=kqSNBuSV7dJ510mG9EEQsYFbiGXmgqJtx3RLZSaIYfU,35940
|
|
98
|
+
qplot/windows/_plot_source_promotion.py,sha256=Jy3MQI6WzF2yHF-QmigW9Ujg0SkL3SFkwzAs1bSJNGg,8310
|
|
99
|
+
qplot/windows/_plot_state.py,sha256=zGcwYvuzbW26dnX7OIiAd9cP06N3mlJAh7q6Qj10c8U,8612
|
|
100
|
+
qplot/windows/_plot_status.py,sha256=E2vXihUoSUt_eilN1PK0VY4lf3lhMxbwj8mRgr2bs24,4879
|
|
101
|
+
qplot/windows/_plot_tiling.py,sha256=wETDCQ7SlO4Dwj8HrH9-iss5Ydf5VpFUknwrGh1eGNs,1320
|
|
102
|
+
qplot/windows/_plot_transform_labels.py,sha256=aI3eDgWJklL6_SgDQMYYEVfHnwj_QDWbtqDqIfSv9Ic,2241
|
|
103
|
+
qplot/windows/_preferences.py,sha256=-MkS9u985D8sYirI6Wppb1MPGgdoaTyzwenQGDa3J30,29835
|
|
104
|
+
qplot/windows/_refresh_interval.py,sha256=k25WtU5O5e1VWHC7-YQt0f6nQrNCGBR1qV83b7Xgi0Y,6484
|
|
105
|
+
qplot/windows/_run_controls.py,sha256=bKMCNjVsUwQWu2sF9DC7KjOgqTcNGiK4kQLdeZ7f6qc,29781
|
|
106
|
+
qplot/windows/_shortcuts.py,sha256=LPSjVZzQmSOdN5h6KZ9MSG1RLVOCnL5Xxwb6aDWaIy8,1166
|
|
107
|
+
qplot/windows/_svg_export.py,sha256=DzQxvBPm40rBoZrXIkoYDFkAsoxpTKXfnrn8iYCJkJc,9065
|
|
108
|
+
qplot/windows/_trusted_derived_qt.py,sha256=L8AytLvDDs-gTRx53uHn0zTVOzDg8CAqsz-PugTh4gM,69708
|
|
109
|
+
qplot/windows/_window_controls.py,sha256=nKSMoRkSbtybMv8ZKMccChjDkD3KaX9bIqBQbby53AA,12541
|
|
110
|
+
qplot/windows/main.py,sha256=IdqwxNkW7T9BM1QUF60nxQNWMsU_TqkmCfBKnnXL0gM,63400
|
|
111
|
+
qplot/windows/plot1d.py,sha256=IYfeIKdOt5c4mp71RDOXISiQtCFwqF3_U9ttBrBehG8,10849
|
|
112
|
+
qplot/windows/plot2d.py,sha256=hbmBjT6Cju-wH8jrrnVadBgjQGhsmex2QSersFvNXRU,71754
|
|
113
|
+
qplot/windows/_subplots/__init__.py,sha256=Ap-OwFwkdizuY7gNpUDYfdVJoY_dcO3kvGIoRo9L8W0,154
|
|
114
|
+
qplot/windows/_subplots/subplot1d.py,sha256=-W4vQrz_2g29uanp_C71SwqaSdtKThvz7NeHKq-8Ryk,17710
|
|
115
|
+
qplot/windows/_subplots/subplot2d.py,sha256=wF2i_UzWt0gB6-9ASHa8dG5yq0JeGFljXNAxQEuuxf0,32375
|
|
116
|
+
qplot/windows/_widgets/__init__.py,sha256=dNRx5KrMZO1JvHHuKFF_mObW3cuRPE9D3ogpI4yPUoE,459
|
|
117
|
+
qplot/windows/_widgets/_run_formatting.py,sha256=8oIT3d8oWAYZp7ii6vOOamG1Aq7THg_xdMrVLder8xA,11893
|
|
118
|
+
qplot/windows/_widgets/details_tables.py,sha256=jx2DbJ0ywsKnzbkI_e39lVa0ypdfI2zvDcxZYY3gwNk,41586
|
|
119
|
+
qplot/windows/_widgets/dropbox.py,sha256=5lijy1zs6ZVTpp-8f7UdUZjqTEywEo6PgL7bZIHX3nM,9036
|
|
120
|
+
qplot/windows/_widgets/operations.py,sha256=QUw_Sqk5UoZhLfEaW1Eesu2j7MpC7ylkciJc63lRflQ,16451
|
|
121
|
+
qplot/windows/_widgets/preview.py,sha256=8Qx5r7lm8jFURx1oSTE5ca04VukvysDrx2CaRAfKXwE,96566
|
|
122
|
+
qplot/windows/_widgets/run_list_items.py,sha256=yCDXUbutUGGmYI7vIoVJBzXiQT24THwmSUl5dAk4C4U,16837
|
|
123
|
+
qplot/windows/_widgets/toolbar.py,sha256=hdLaQ80VekKnkQgY9ESassiCN1-IxPGuqrFn7rn6Ugg,3834
|
|
124
|
+
qplot/windows/_widgets/treeWidgets.py,sha256=Ir9jkyQOjv56ZPV5nI92Xlolq447TYxo0NML6zB3SI8,93791
|
|
125
|
+
qplotter-1.6.0.dist-info/licenses/LICENSE,sha256=pAF_Uxq42gSBSjDcnzaFQwvCf-oQZc42t0R8u27p9nk,1076
|
|
126
|
+
qplotter-1.6.0.dist-info/METADATA,sha256=8Zakhx2xz4rfgQd7yt95u1eOaCDpDAwj1PgAoHYJj_0,13091
|
|
127
|
+
qplotter-1.6.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
128
|
+
qplotter-1.6.0.dist-info/entry_points.txt,sha256=qyuJQsN21MFJrhDZJSQ5YJs1MXm546hoXdjH_autJGU,133
|
|
129
|
+
qplotter-1.6.0.dist-info/top_level.txt,sha256=0DiVN2Aw9NMB6RtGe8zXPFDdhyaU1QYwDVRdPiR-xYA,6
|
|
130
|
+
qplotter-1.6.0.dist-info/RECORD,,
|
|
@@ -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
|