QuLab 2.12.2__tar.gz → 2.13.0__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.12.2 → qulab-2.13.0}/PKG-INFO +8 -1
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/PKG-INFO +8 -1
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/SOURCES.txt +69 -10
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/requires.txt +7 -0
- {qulab-2.12.2 → qulab-2.13.0}/pyproject.toml +14 -0
- qulab-2.13.0/qulab/auto/__init__.py +109 -0
- qulab-2.13.0/qulab/auto/agent/__init__.py +34 -0
- qulab-2.13.0/qulab/auto/agent/analyzer.py +610 -0
- qulab-2.13.0/qulab/auto/agent/executor.py +552 -0
- qulab-2.13.0/qulab/auto/agent/loop.py +514 -0
- qulab-2.13.0/qulab/auto/agent/memory.py +223 -0
- qulab-2.13.0/qulab/auto/agent/planner.py +673 -0
- qulab-2.13.0/qulab/auto/bus/__init__.py +9 -0
- qulab-2.13.0/qulab/auto/bus/queue.py +427 -0
- qulab-2.13.0/qulab/auto/cli.py +715 -0
- qulab-2.13.0/qulab/auto/config.py +523 -0
- qulab-2.13.0/qulab/auto/exceptions.py +41 -0
- qulab-2.13.0/qulab/auto/executor/__init__.py +11 -0
- qulab-2.13.0/qulab/auto/executor/base.py +65 -0
- qulab-2.13.0/qulab/auto/executor/context.py +105 -0
- qulab-2.13.0/qulab/auto/executor/local.py +226 -0
- qulab-2.13.0/qulab/auto/llm/__init__.py +19 -0
- qulab-2.13.0/qulab/auto/llm/anthropic.py +172 -0
- qulab-2.13.0/qulab/auto/llm/base.py +60 -0
- qulab-2.13.0/qulab/auto/llm/openai.py +172 -0
- qulab-2.13.0/qulab/auto/llm/registry.py +110 -0
- qulab-2.13.0/qulab/auto/main.py +208 -0
- qulab-2.13.0/qulab/auto/models/__init__.py +5 -0
- qulab-2.13.0/qulab/auto/models/session.py +73 -0
- qulab-2.13.0/qulab/auto/skills/__init__.py +15 -0
- qulab-2.13.0/qulab/auto/skills/base.py +153 -0
- qulab-2.13.0/qulab/auto/skills/builtin/__init__.py +1 -0
- qulab-2.13.0/qulab/auto/skills/cache.py +235 -0
- qulab-2.13.0/qulab/auto/skills/generator.py +330 -0
- qulab-2.13.0/qulab/auto/skills/loader.py +265 -0
- qulab-2.13.0/qulab/auto/tools/__init__.py +18 -0
- qulab-2.13.0/qulab/auto/tools/analysis.py +619 -0
- qulab-2.13.0/qulab/auto/tools/base.py +126 -0
- qulab-2.13.0/qulab/auto/tools/config.py +50 -0
- qulab-2.13.0/qulab/auto/tools/human.py +61 -0
- qulab-2.13.0/qulab/auto/tools/lesson.py +410 -0
- qulab-2.13.0/qulab/auto/tools/measurement.py +454 -0
- qulab-2.13.0/qulab/auto/tools/query.py +156 -0
- qulab-2.13.0/qulab/auto/tools/registry.py +122 -0
- qulab-2.13.0/qulab/auto/world_model/__init__.py +20 -0
- qulab-2.13.0/qulab/auto/world_model/base.py +360 -0
- qulab-2.13.0/qulab/auto/world_model/history.py +318 -0
- qulab-2.13.0/qulab/auto/world_model/parameter.py +418 -0
- qulab-2.13.0/qulab/auto/world_model/state.py +415 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/cli/commands.py +6 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/cli/config.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/load.py +1 -5
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/schedule.py +0 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/__main__.py +2 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/mainwindow.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/monitor.py +2 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/ploter.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/toolbar.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/optimize.py +0 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/record.py +6 -6
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/scan.py +2 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/server.py +7 -10
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/space.py +0 -1
- qulab-2.13.0/qulab/storage/__init__.py +78 -0
- qulab-2.13.0/qulab/storage/__main__.py +6 -0
- qulab-2.13.0/qulab/storage/array.py +525 -0
- qulab-2.13.0/qulab/storage/array_utils.py +267 -0
- qulab-2.13.0/qulab/storage/attachment.py +264 -0
- qulab-2.13.0/qulab/storage/base.py +262 -0
- qulab-2.13.0/qulab/storage/chunk.py +100 -0
- qulab-2.13.0/qulab/storage/cli.py +328 -0
- qulab-2.13.0/qulab/storage/dataset.py +752 -0
- qulab-2.13.0/qulab/storage/document.py +535 -0
- qulab-2.13.0/qulab/storage/local.py +575 -0
- qulab-2.13.0/qulab/storage/models/__init__.py +79 -0
- qulab-2.13.0/qulab/storage/models/attachment.py +167 -0
- qulab-2.13.0/qulab/storage/models/base.py +50 -0
- qulab-2.13.0/qulab/storage/models/config.py +147 -0
- qulab-2.13.0/qulab/storage/models/dataset.py +255 -0
- qulab-2.13.0/qulab/storage/models/document.py +237 -0
- qulab-2.13.0/qulab/storage/models/script.py +146 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/storage/models/tag.py +14 -11
- qulab-2.13.0/qulab/storage/remote.py +484 -0
- qulab-2.13.0/qulab/storage/render.py +285 -0
- qulab-2.13.0/qulab/storage/server.py +386 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/chat.py +0 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/device/loader.py +0 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/device/utils.py +5 -5
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/ipy_events.py +5 -3
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/dhcp.py +0 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/dhcpd.py +3 -6
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/kad.py +2 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/kcp.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/msgpack.py +12 -21
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/serialize.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/utils.py +0 -2
- qulab-2.13.0/qulab/tools/xlsx.py +81 -0
- qulab-2.13.0/qulab/trace/__init__.py +186 -0
- qulab-2.13.0/qulab/trace/capture.py +313 -0
- qulab-2.13.0/qulab/trace/cli.py +178 -0
- qulab-2.13.0/qulab/trace/client.py +476 -0
- qulab-2.13.0/qulab/trace/hooks.py +330 -0
- qulab-2.13.0/qulab/trace/models.py +189 -0
- qulab-2.13.0/qulab/trace/server.py +156 -0
- qulab-2.13.0/qulab/trace/storage.py +387 -0
- qulab-2.13.0/qulab/trace/watcher.py +242 -0
- qulab-2.13.0/qulab/typing.py +1 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/utils.py +1 -1
- qulab-2.13.0/qulab/version.py +1 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/__init__.py +2 -2
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/plot_circ.py +1 -1
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/plot_layout.py +6 -11
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/rot3d.py +0 -1
- qulab-2.13.0/qulab/visualization/widgets.py +821 -0
- qulab-2.13.0/tests/test_auto_framework.py +477 -0
- qulab-2.12.2/qulab/storage/__main__.py +0 -51
- qulab-2.12.2/qulab/storage/backend/redis.py +0 -204
- qulab-2.12.2/qulab/storage/base_dataset.py +0 -352
- qulab-2.12.2/qulab/storage/chunk.py +0 -60
- qulab-2.12.2/qulab/storage/dataset.py +0 -127
- qulab-2.12.2/qulab/storage/file.py +0 -273
- qulab-2.12.2/qulab/storage/models/__init__.py +0 -22
- qulab-2.12.2/qulab/storage/models/base.py +0 -4
- qulab-2.12.2/qulab/storage/models/config.py +0 -28
- qulab-2.12.2/qulab/storage/models/file.py +0 -89
- qulab-2.12.2/qulab/storage/models/ipy.py +0 -58
- qulab-2.12.2/qulab/storage/models/models.py +0 -88
- qulab-2.12.2/qulab/storage/models/record.py +0 -161
- qulab-2.12.2/qulab/storage/models/report.py +0 -22
- qulab-2.12.2/qulab/storage/storage.py +0 -95
- qulab-2.12.2/qulab/sys/rpc/__init__.py +0 -0
- qulab-2.12.2/qulab/tools/__init__.py +0 -0
- qulab-2.12.2/qulab/typing.py +0 -2
- qulab-2.12.2/qulab/version.py +0 -1
- qulab-2.12.2/qulab/visualization/widgets.py +0 -86
- {qulab-2.12.2 → qulab-2.13.0}/LICENSE +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/MANIFEST.in +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/dependency_links.txt +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/entry_points.txt +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/QuLab.egg-info/top_level.txt +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/README.md +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/__main__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/cli/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/cli/decorators.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/analyze.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/cli.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/registry.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/storage.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/template.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/executor/utils.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/config.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/dataset.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/event_queue.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/monitor/qt_compat.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/curd.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/models.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/query.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/scan/utils.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/device/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/device/basedevice.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/drivers/FakeInstrument.py +0 -0
- {qulab-2.12.2/qulab/storage → qulab-2.13.0/qulab/sys/drivers}/__init__.py +0 -0
- {qulab-2.12.2/qulab/storage/backend → qulab-2.13.0/qulab/sys/net}/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/bencoder.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/cli.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/net/nginx.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/progress.py +0 -0
- {qulab-2.12.2/qulab/sys/drivers → qulab-2.13.0/qulab/sys/rpc}/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/client.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/exceptions.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/msgpack.pyi +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/router.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/rpc.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/server.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/socket.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/worker.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/sys/rpc/zmq_socket.py +0 -0
- {qulab-2.12.2/qulab/sys/net → qulab-2.13.0/qulab/tools}/__init__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/tools/connection_helper.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/__main__.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/_autoplot.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/plot_seq.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/qulab/visualization/qdat.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/setup.cfg +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/setup.py +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/src/qulab.h +0 -0
- {qulab-2.12.2 → qulab-2.13.0}/tests/test_scan.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: QuLab
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.13.0
|
|
4
4
|
Summary: contral instruments and manage data
|
|
5
5
|
Author-email: feihoo87 <feihoo87@gmail.com>
|
|
6
6
|
Maintainer-email: feihoo87 <feihoo87@gmail.com>
|
|
@@ -35,8 +35,10 @@ Requires-Dist: matplotlib>=3.7.2
|
|
|
35
35
|
Requires-Dist: msgpack>=1.0.5
|
|
36
36
|
Requires-Dist: nevergrad>=1.0.2
|
|
37
37
|
Requires-Dist: numpy>=1.13.3
|
|
38
|
+
Requires-Dist: openai>=1.0.0
|
|
38
39
|
Requires-Dist: ply>=3.11
|
|
39
40
|
Requires-Dist: pyperclip>=1.8.2
|
|
41
|
+
Requires-Dist: pyyaml>=6.0
|
|
40
42
|
Requires-Dist: pyzmq>=25.1.0
|
|
41
43
|
Requires-Dist: qlisp>=1.1.4
|
|
42
44
|
Requires-Dist: qlispc>=1.1.8
|
|
@@ -48,6 +50,11 @@ Requires-Dist: watchdog>=4.0.0
|
|
|
48
50
|
Requires-Dist: wath>=1.1.6
|
|
49
51
|
Requires-Dist: waveforms>=1.9.4
|
|
50
52
|
Requires-Dist: rich>=14.0.0
|
|
53
|
+
Requires-Dist: pydantic>=2.12.5
|
|
54
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
55
|
+
Requires-Dist: anthropic>=0.84.0
|
|
56
|
+
Requires-Dist: fastapi>=0.115.0
|
|
57
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
51
58
|
Provides-Extra: full
|
|
52
59
|
Requires-Dist: paramiko>=3.5.1; extra == "full"
|
|
53
60
|
Requires-Dist: uvloop>=0.19.0; extra == "full"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: QuLab
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.13.0
|
|
4
4
|
Summary: contral instruments and manage data
|
|
5
5
|
Author-email: feihoo87 <feihoo87@gmail.com>
|
|
6
6
|
Maintainer-email: feihoo87 <feihoo87@gmail.com>
|
|
@@ -35,8 +35,10 @@ Requires-Dist: matplotlib>=3.7.2
|
|
|
35
35
|
Requires-Dist: msgpack>=1.0.5
|
|
36
36
|
Requires-Dist: nevergrad>=1.0.2
|
|
37
37
|
Requires-Dist: numpy>=1.13.3
|
|
38
|
+
Requires-Dist: openai>=1.0.0
|
|
38
39
|
Requires-Dist: ply>=3.11
|
|
39
40
|
Requires-Dist: pyperclip>=1.8.2
|
|
41
|
+
Requires-Dist: pyyaml>=6.0
|
|
40
42
|
Requires-Dist: pyzmq>=25.1.0
|
|
41
43
|
Requires-Dist: qlisp>=1.1.4
|
|
42
44
|
Requires-Dist: qlispc>=1.1.8
|
|
@@ -48,6 +50,11 @@ Requires-Dist: watchdog>=4.0.0
|
|
|
48
50
|
Requires-Dist: wath>=1.1.6
|
|
49
51
|
Requires-Dist: waveforms>=1.9.4
|
|
50
52
|
Requires-Dist: rich>=14.0.0
|
|
53
|
+
Requires-Dist: pydantic>=2.12.5
|
|
54
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
55
|
+
Requires-Dist: anthropic>=0.84.0
|
|
56
|
+
Requires-Dist: fastapi>=0.115.0
|
|
57
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
51
58
|
Provides-Extra: full
|
|
52
59
|
Requires-Dist: paramiko>=3.5.1; extra == "full"
|
|
53
60
|
Requires-Dist: uvloop>=0.19.0; extra == "full"
|
|
@@ -14,6 +14,50 @@ qulab/__main__.py
|
|
|
14
14
|
qulab/typing.py
|
|
15
15
|
qulab/utils.py
|
|
16
16
|
qulab/version.py
|
|
17
|
+
qulab/auto/__init__.py
|
|
18
|
+
qulab/auto/cli.py
|
|
19
|
+
qulab/auto/config.py
|
|
20
|
+
qulab/auto/exceptions.py
|
|
21
|
+
qulab/auto/main.py
|
|
22
|
+
qulab/auto/agent/__init__.py
|
|
23
|
+
qulab/auto/agent/analyzer.py
|
|
24
|
+
qulab/auto/agent/executor.py
|
|
25
|
+
qulab/auto/agent/loop.py
|
|
26
|
+
qulab/auto/agent/memory.py
|
|
27
|
+
qulab/auto/agent/planner.py
|
|
28
|
+
qulab/auto/bus/__init__.py
|
|
29
|
+
qulab/auto/bus/queue.py
|
|
30
|
+
qulab/auto/executor/__init__.py
|
|
31
|
+
qulab/auto/executor/base.py
|
|
32
|
+
qulab/auto/executor/context.py
|
|
33
|
+
qulab/auto/executor/local.py
|
|
34
|
+
qulab/auto/llm/__init__.py
|
|
35
|
+
qulab/auto/llm/anthropic.py
|
|
36
|
+
qulab/auto/llm/base.py
|
|
37
|
+
qulab/auto/llm/openai.py
|
|
38
|
+
qulab/auto/llm/registry.py
|
|
39
|
+
qulab/auto/models/__init__.py
|
|
40
|
+
qulab/auto/models/session.py
|
|
41
|
+
qulab/auto/skills/__init__.py
|
|
42
|
+
qulab/auto/skills/base.py
|
|
43
|
+
qulab/auto/skills/cache.py
|
|
44
|
+
qulab/auto/skills/generator.py
|
|
45
|
+
qulab/auto/skills/loader.py
|
|
46
|
+
qulab/auto/skills/builtin/__init__.py
|
|
47
|
+
qulab/auto/tools/__init__.py
|
|
48
|
+
qulab/auto/tools/analysis.py
|
|
49
|
+
qulab/auto/tools/base.py
|
|
50
|
+
qulab/auto/tools/config.py
|
|
51
|
+
qulab/auto/tools/human.py
|
|
52
|
+
qulab/auto/tools/lesson.py
|
|
53
|
+
qulab/auto/tools/measurement.py
|
|
54
|
+
qulab/auto/tools/query.py
|
|
55
|
+
qulab/auto/tools/registry.py
|
|
56
|
+
qulab/auto/world_model/__init__.py
|
|
57
|
+
qulab/auto/world_model/base.py
|
|
58
|
+
qulab/auto/world_model/history.py
|
|
59
|
+
qulab/auto/world_model/parameter.py
|
|
60
|
+
qulab/auto/world_model/state.py
|
|
17
61
|
qulab/cli/__init__.py
|
|
18
62
|
qulab/cli/commands.py
|
|
19
63
|
qulab/cli/config.py
|
|
@@ -49,21 +93,25 @@ qulab/scan/space.py
|
|
|
49
93
|
qulab/scan/utils.py
|
|
50
94
|
qulab/storage/__init__.py
|
|
51
95
|
qulab/storage/__main__.py
|
|
52
|
-
qulab/storage/
|
|
96
|
+
qulab/storage/array.py
|
|
97
|
+
qulab/storage/array_utils.py
|
|
98
|
+
qulab/storage/attachment.py
|
|
99
|
+
qulab/storage/base.py
|
|
53
100
|
qulab/storage/chunk.py
|
|
101
|
+
qulab/storage/cli.py
|
|
54
102
|
qulab/storage/dataset.py
|
|
55
|
-
qulab/storage/
|
|
56
|
-
qulab/storage/
|
|
57
|
-
qulab/storage/
|
|
58
|
-
qulab/storage/
|
|
103
|
+
qulab/storage/document.py
|
|
104
|
+
qulab/storage/local.py
|
|
105
|
+
qulab/storage/remote.py
|
|
106
|
+
qulab/storage/render.py
|
|
107
|
+
qulab/storage/server.py
|
|
59
108
|
qulab/storage/models/__init__.py
|
|
109
|
+
qulab/storage/models/attachment.py
|
|
60
110
|
qulab/storage/models/base.py
|
|
61
111
|
qulab/storage/models/config.py
|
|
62
|
-
qulab/storage/models/
|
|
63
|
-
qulab/storage/models/
|
|
64
|
-
qulab/storage/models/
|
|
65
|
-
qulab/storage/models/record.py
|
|
66
|
-
qulab/storage/models/report.py
|
|
112
|
+
qulab/storage/models/dataset.py
|
|
113
|
+
qulab/storage/models/document.py
|
|
114
|
+
qulab/storage/models/script.py
|
|
67
115
|
qulab/storage/models/tag.py
|
|
68
116
|
qulab/sys/__init__.py
|
|
69
117
|
qulab/sys/chat.py
|
|
@@ -98,6 +146,16 @@ qulab/sys/rpc/worker.py
|
|
|
98
146
|
qulab/sys/rpc/zmq_socket.py
|
|
99
147
|
qulab/tools/__init__.py
|
|
100
148
|
qulab/tools/connection_helper.py
|
|
149
|
+
qulab/tools/xlsx.py
|
|
150
|
+
qulab/trace/__init__.py
|
|
151
|
+
qulab/trace/capture.py
|
|
152
|
+
qulab/trace/cli.py
|
|
153
|
+
qulab/trace/client.py
|
|
154
|
+
qulab/trace/hooks.py
|
|
155
|
+
qulab/trace/models.py
|
|
156
|
+
qulab/trace/server.py
|
|
157
|
+
qulab/trace/storage.py
|
|
158
|
+
qulab/trace/watcher.py
|
|
101
159
|
qulab/visualization/__init__.py
|
|
102
160
|
qulab/visualization/__main__.py
|
|
103
161
|
qulab/visualization/_autoplot.py
|
|
@@ -108,4 +166,5 @@ qulab/visualization/qdat.py
|
|
|
108
166
|
qulab/visualization/rot3d.py
|
|
109
167
|
qulab/visualization/widgets.py
|
|
110
168
|
src/qulab.h
|
|
169
|
+
tests/test_auto_framework.py
|
|
111
170
|
tests/test_scan.py
|
|
@@ -9,8 +9,10 @@ matplotlib>=3.7.2
|
|
|
9
9
|
msgpack>=1.0.5
|
|
10
10
|
nevergrad>=1.0.2
|
|
11
11
|
numpy>=1.13.3
|
|
12
|
+
openai>=1.0.0
|
|
12
13
|
ply>=3.11
|
|
13
14
|
pyperclip>=1.8.2
|
|
15
|
+
pyyaml>=6.0
|
|
14
16
|
pyzmq>=25.1.0
|
|
15
17
|
qlisp>=1.1.4
|
|
16
18
|
qlispc>=1.1.8
|
|
@@ -22,6 +24,11 @@ watchdog>=4.0.0
|
|
|
22
24
|
wath>=1.1.6
|
|
23
25
|
waveforms>=1.9.4
|
|
24
26
|
rich>=14.0.0
|
|
27
|
+
pydantic>=2.12.5
|
|
28
|
+
openpyxl>=3.1.5
|
|
29
|
+
anthropic>=0.84.0
|
|
30
|
+
fastapi>=0.115.0
|
|
31
|
+
uvicorn>=0.30.0
|
|
25
32
|
|
|
26
33
|
[full]
|
|
27
34
|
paramiko>=3.5.1
|
|
@@ -39,8 +39,10 @@ dependencies = [
|
|
|
39
39
|
"msgpack>=1.0.5",
|
|
40
40
|
"nevergrad>=1.0.2",
|
|
41
41
|
"numpy>=1.13.3",
|
|
42
|
+
"openai>=1.0.0",
|
|
42
43
|
"ply>=3.11",
|
|
43
44
|
"pyperclip>=1.8.2",
|
|
45
|
+
"pyyaml>=6.0",
|
|
44
46
|
"pyzmq>=25.1.0",
|
|
45
47
|
"qlisp>=1.1.4",
|
|
46
48
|
"qlispc>=1.1.8",
|
|
@@ -52,6 +54,11 @@ dependencies = [
|
|
|
52
54
|
"wath>=1.1.6",
|
|
53
55
|
"waveforms>=1.9.4",
|
|
54
56
|
"rich>=14.0.0",
|
|
57
|
+
"pydantic>=2.12.5",
|
|
58
|
+
"openpyxl>=3.1.5",
|
|
59
|
+
"anthropic>=0.84.0",
|
|
60
|
+
"fastapi>=0.115.0",
|
|
61
|
+
"uvicorn>=0.30.0",
|
|
55
62
|
]
|
|
56
63
|
dynamic = ["version"]
|
|
57
64
|
|
|
@@ -79,3 +86,10 @@ include-package-data = true
|
|
|
79
86
|
|
|
80
87
|
[tool.setuptools.dynamic]
|
|
81
88
|
version = {attr = "qulab.version.__version__"}
|
|
89
|
+
|
|
90
|
+
[dependency-groups]
|
|
91
|
+
dev = [
|
|
92
|
+
"pylint[spelling]>=4.0.5",
|
|
93
|
+
"pytest>=9.0.2",
|
|
94
|
+
"pytest-asyncio>=1.3.0",
|
|
95
|
+
]
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""QuLab Automatic Experiment Framework
|
|
2
|
+
|
|
3
|
+
This module provides an automated experiment framework similar to nanobot,
|
|
4
|
+
using LLM as the decision center for coordinating measurement and analysis tasks.
|
|
5
|
+
|
|
6
|
+
Example:
|
|
7
|
+
>>> from qulab.auto import AutoLab
|
|
8
|
+
>>> from qulab.storage import LocalStorage
|
|
9
|
+
>>>
|
|
10
|
+
>>> # Initialize storage
|
|
11
|
+
>>> storage = LocalStorage("./data")
|
|
12
|
+
>>>
|
|
13
|
+
>>> # Initialize AutoLab with Kimi
|
|
14
|
+
>>> lab = AutoLab(storage, llm_config={
|
|
15
|
+
... "provider": "openai",
|
|
16
|
+
... "base_url": "https://api.moonshot.cn/v1",
|
|
17
|
+
... "api_key": "sk-...",
|
|
18
|
+
... "model": "kimi-k2.5"
|
|
19
|
+
... })
|
|
20
|
+
>>>
|
|
21
|
+
>>> # Start a session
|
|
22
|
+
>>> async for event in lab.start("Calibrate qubit 1 frequency"):
|
|
23
|
+
... print(f"[{event.type}] {event.content}")
|
|
24
|
+
|
|
25
|
+
The framework consists of:
|
|
26
|
+
- **Agent**: ReAct decision loop that coordinates tasks
|
|
27
|
+
- **LLM**: Pluggable LLM providers (Anthropic, OpenAI-compatible like Kimi)
|
|
28
|
+
- **Skills**: YAML + Markdown files describing experiments and analyses
|
|
29
|
+
- **Tools**: Query, measurement, analysis, config update, and human query
|
|
30
|
+
- **Storage**: Persistent storage via qulab.storage
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from .config import (
|
|
34
|
+
AutoLabConfig,
|
|
35
|
+
BusConfig,
|
|
36
|
+
ExecutorConfig,
|
|
37
|
+
LLMConfig,
|
|
38
|
+
MemoryConfig,
|
|
39
|
+
SkillConfig,
|
|
40
|
+
WorldModelConfig,
|
|
41
|
+
)
|
|
42
|
+
from .exceptions import (
|
|
43
|
+
AutoLabError,
|
|
44
|
+
ConfigError,
|
|
45
|
+
LLMError,
|
|
46
|
+
SessionError,
|
|
47
|
+
SkillError,
|
|
48
|
+
SkillNotFoundError,
|
|
49
|
+
ToolError,
|
|
50
|
+
ToolNotFoundError,
|
|
51
|
+
)
|
|
52
|
+
from .main import AutoLab
|
|
53
|
+
|
|
54
|
+
__all__ = [
|
|
55
|
+
# Main class
|
|
56
|
+
"AutoLab",
|
|
57
|
+
# Configuration
|
|
58
|
+
"AutoLabConfig",
|
|
59
|
+
"LLMConfig",
|
|
60
|
+
"SkillConfig",
|
|
61
|
+
"ExecutorConfig",
|
|
62
|
+
"MemoryConfig",
|
|
63
|
+
"WorldModelConfig",
|
|
64
|
+
"BusConfig",
|
|
65
|
+
# Exceptions
|
|
66
|
+
"AutoLabError",
|
|
67
|
+
"SkillError",
|
|
68
|
+
"SkillNotFoundError",
|
|
69
|
+
"ToolError",
|
|
70
|
+
"ToolNotFoundError",
|
|
71
|
+
"LLMError",
|
|
72
|
+
"ConfigError",
|
|
73
|
+
"SessionError",
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def __getattr__(name):
|
|
78
|
+
"""Lazy import for agent components."""
|
|
79
|
+
if name == "AgentLoop":
|
|
80
|
+
from .agent.loop import AgentLoop
|
|
81
|
+
return AgentLoop
|
|
82
|
+
if name == "AgentConfig":
|
|
83
|
+
from .agent.loop import AgentConfig
|
|
84
|
+
return AgentConfig
|
|
85
|
+
if name == "AgentEvent":
|
|
86
|
+
from .agent.loop import AgentEvent
|
|
87
|
+
return AgentEvent
|
|
88
|
+
if name == "PlannerAgent":
|
|
89
|
+
from .agent.planner import PlannerAgent
|
|
90
|
+
return PlannerAgent
|
|
91
|
+
if name == "ExecutorAgent":
|
|
92
|
+
from .agent.executor import ExecutorAgent
|
|
93
|
+
return ExecutorAgent
|
|
94
|
+
if name == "AnalysisAgent":
|
|
95
|
+
from .agent.analyzer import AnalysisAgent
|
|
96
|
+
return AnalysisAgent
|
|
97
|
+
if name == "Skill":
|
|
98
|
+
from .skills.base import Skill
|
|
99
|
+
return Skill
|
|
100
|
+
if name == "SkillLoader":
|
|
101
|
+
from .skills.loader import SkillLoader
|
|
102
|
+
return SkillLoader
|
|
103
|
+
if name == "MessageBus":
|
|
104
|
+
from .bus import MessageBus
|
|
105
|
+
return MessageBus
|
|
106
|
+
if name == "WorldModel":
|
|
107
|
+
from .world_model import WorldModel
|
|
108
|
+
return WorldModel
|
|
109
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Agent system for auto experiment framework.
|
|
2
|
+
|
|
3
|
+
This module provides a three-layer agent architecture:
|
|
4
|
+
- PlannerAgent: High-level strategy and planning
|
|
5
|
+
- ExecutorAgent: Experiment skill execution
|
|
6
|
+
- AnalysisAgent: Data analysis execution
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .analyzer import AnalysisAgent, AnalysisContext, AnalysisResult
|
|
10
|
+
from .executor import ExecutorAgent, ExecutionContext, ExecutionResult
|
|
11
|
+
from .loop import AgentConfig, AgentEvent, AgentLoop
|
|
12
|
+
from .memory import SessionMemory
|
|
13
|
+
from .planner import ExecutionPlan, PlanStatus, PlanStep, PlannerAgent
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
# Original classes
|
|
17
|
+
"AgentLoop",
|
|
18
|
+
"AgentConfig",
|
|
19
|
+
"AgentEvent",
|
|
20
|
+
"SessionMemory",
|
|
21
|
+
# Planner Agent
|
|
22
|
+
"PlannerAgent",
|
|
23
|
+
"ExecutionPlan",
|
|
24
|
+
"PlanStep",
|
|
25
|
+
"PlanStatus",
|
|
26
|
+
# Executor Agent
|
|
27
|
+
"ExecutorAgent",
|
|
28
|
+
"ExecutionContext",
|
|
29
|
+
"ExecutionResult",
|
|
30
|
+
# Analysis Agent
|
|
31
|
+
"AnalysisAgent",
|
|
32
|
+
"AnalysisContext",
|
|
33
|
+
"AnalysisResult",
|
|
34
|
+
]
|