QuLab 2.6.1__tar.gz → 2.6.2__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.
- {qulab-2.6.1 → qulab-2.6.2}/PKG-INFO +1 -1
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/PKG-INFO +1 -1
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/cli.py +59 -33
- qulab-2.6.2/qulab/version.py +1 -0
- qulab-2.6.1/qulab/version.py +0 -1
- {qulab-2.6.1 → qulab-2.6.2}/LICENSE +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/MANIFEST.in +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/SOURCES.txt +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/dependency_links.txt +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/entry_points.txt +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/requires.txt +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/QuLab.egg-info/top_level.txt +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/README.md +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/pyproject.toml +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/__main__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/cli/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/cli/commands.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/cli/config.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/dicttree.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/load.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/schedule.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/storage.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/transform.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/executor/utils.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/__main__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/config.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/dataset.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/event_queue.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/mainwindow.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/monitor.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/ploter.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/qt_compat.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/monitor/toolbar.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/curd.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/expression.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/models.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/optimize.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/query.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/record.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/scan.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/server.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/space.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/scan/utils.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/__main__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/backend/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/backend/redis.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/base_dataset.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/chunk.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/dataset.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/file.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/base.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/config.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/file.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/ipy.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/models.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/record.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/report.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/models/tag.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/storage/storage.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/chat.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/device/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/device/basedevice.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/device/loader.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/device/utils.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/drivers/FakeInstrument.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/drivers/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/ipy_events.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/bencoder.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/cli.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/dhcp.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/dhcpd.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/kad.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/kcp.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/net/nginx.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/progress.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/client.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/exceptions.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/msgpack.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/msgpack.pyi +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/router.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/rpc.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/serialize.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/server.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/socket.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/utils.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/worker.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/sys/rpc/zmq_socket.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/typing.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/__init__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/__main__.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/_autoplot.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/plot_circ.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/plot_layout.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/plot_seq.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/qdat.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/rot3d.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/qulab/visualization/widgets.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/setup.cfg +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/setup.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/src/qulab.h +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/tests/test_kad.py +0 -0
- {qulab-2.6.1 → qulab-2.6.2}/tests/test_scan.py +0 -0
@@ -12,6 +12,7 @@ from .load import (WorkflowType, find_unreferenced_workflows, get_entries,
|
|
12
12
|
load_workflow, make_graph)
|
13
13
|
from .schedule import maintain as maintain_workflow
|
14
14
|
from .schedule import run as run_workflow
|
15
|
+
from .schedule import CalibrationFailedError
|
15
16
|
from .transform import set_config_api
|
16
17
|
from .utils import workflow_template
|
17
18
|
|
@@ -135,16 +136,20 @@ def get(key, api):
|
|
135
136
|
'-n',
|
136
137
|
is_flag=True,
|
137
138
|
help='Do not run dependents.')
|
139
|
+
@click.option('--retry', '-r', default=1, type=int, help='Retry times.')
|
138
140
|
@click.option('--update', '-u', is_flag=True)
|
139
141
|
@log_options
|
140
142
|
@command_option('run')
|
141
|
-
def run(workflow, code, data, api, plot, no_dependents, update):
|
143
|
+
def run(workflow, code, data, api, plot, no_dependents, retry, update):
|
142
144
|
"""
|
143
145
|
Run a workflow.
|
144
146
|
"""
|
145
147
|
logger.info(
|
146
|
-
f'[CMD]: run {workflow} --code {code} --data {data} --api {api}
|
147
|
-
|
148
|
+
f'[CMD]: run {workflow} --code {code} --data {data} --api {api}'
|
149
|
+
f'{" --plot" if plot else ""}'
|
150
|
+
f'{" --no-dependents" if no_dependents else ""}'
|
151
|
+
f' --retry {retry}'
|
152
|
+
f'{" --update " if update else ""}')
|
148
153
|
if api is not None:
|
149
154
|
api = importlib.import_module(api)
|
150
155
|
set_config_api(api.query_config, api.update_config, api.export_config)
|
@@ -159,42 +164,56 @@ def run(workflow, code, data, api, plot, no_dependents, update):
|
|
159
164
|
wf = load_workflow(workflow, code)
|
160
165
|
check_toplogy(wf, code)
|
161
166
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
167
|
+
for i in range(retry):
|
168
|
+
try:
|
169
|
+
if no_dependents:
|
170
|
+
if hasattr(wf, 'entries'):
|
171
|
+
for entry in get_entries(wf, code):
|
172
|
+
run_workflow(entry,
|
173
|
+
code,
|
174
|
+
data,
|
175
|
+
plot=plot,
|
176
|
+
update=update)
|
177
|
+
else:
|
178
|
+
run_workflow(wf, code, data, plot=plot, update=update)
|
179
|
+
else:
|
180
|
+
if hasattr(wf, 'entries'):
|
181
|
+
for entry in get_entries(wf, code):
|
182
|
+
maintain_workflow(entry,
|
183
|
+
code,
|
184
|
+
data,
|
185
|
+
run=True,
|
186
|
+
plot=plot,
|
187
|
+
update=update)
|
188
|
+
else:
|
189
|
+
maintain_workflow(wf,
|
190
|
+
code,
|
191
|
+
data,
|
192
|
+
run=True,
|
193
|
+
plot=plot,
|
194
|
+
update=update)
|
195
|
+
break
|
196
|
+
except CalibrationFailedError as e:
|
197
|
+
if i == retry - 1:
|
198
|
+
raise e
|
199
|
+
logger.warning(f'Calibration failed, retrying ({i + 1}/{retry})')
|
200
|
+
continue
|
184
201
|
|
185
202
|
|
186
203
|
@click.command()
|
187
204
|
@click.argument('workflow')
|
205
|
+
@click.option('--retry', '-r', default=1, type=int, help='Retry times.')
|
188
206
|
@click.option('--plot', '-p', is_flag=True, help='Plot the result.')
|
189
207
|
@log_options
|
190
208
|
@command_option('maintain')
|
191
|
-
def maintain(workflow, code, data, api, plot):
|
209
|
+
def maintain(workflow, code, data, api, retry, plot):
|
192
210
|
"""
|
193
211
|
Maintain a workflow.
|
194
212
|
"""
|
195
213
|
logger.info(
|
196
|
-
f'[CMD]: maintain {workflow} --code {code} --data {data} --api {api}
|
197
|
-
|
214
|
+
f'[CMD]: maintain {workflow} --code {code} --data {data} --api {api}'
|
215
|
+
f' --retry {retry}'
|
216
|
+
f'{" --plot" if plot else ""}')
|
198
217
|
if api is not None:
|
199
218
|
api = importlib.import_module(api)
|
200
219
|
set_config_api(api.query_config, api.update_config, api.export_config)
|
@@ -209,8 +228,15 @@ def maintain(workflow, code, data, api, plot):
|
|
209
228
|
wf = load_workflow(workflow, code)
|
210
229
|
check_toplogy(wf, code)
|
211
230
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
231
|
+
for i in range(retry):
|
232
|
+
try:
|
233
|
+
if hasattr(wf, 'entries'):
|
234
|
+
for entry in get_entries(wf, code):
|
235
|
+
maintain_workflow(entry, code, data, run=False, plot=plot)
|
236
|
+
else:
|
237
|
+
maintain_workflow(wf, code, data, run=False, plot=plot)
|
238
|
+
except CalibrationFailedError as e:
|
239
|
+
if i == retry - 1:
|
240
|
+
raise e
|
241
|
+
logger.warning(f'Calibration failed, retrying ({i + 1}/{retry})')
|
242
|
+
continue
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "2.6.2"
|
qulab-2.6.1/qulab/version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "2.6.1"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|