QuLab 2.7.1__tar.gz → 2.7.3__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.
Files changed (112) hide show
  1. {qulab-2.7.1 → qulab-2.7.3}/PKG-INFO +1 -1
  2. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/PKG-INFO +1 -1
  3. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/SOURCES.txt +1 -0
  4. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/cli.py +18 -0
  5. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/schedule.py +2 -2
  6. qulab-2.7.3/qulab/utils.py +31 -0
  7. qulab-2.7.3/qulab/version.py +1 -0
  8. qulab-2.7.1/qulab/version.py +0 -1
  9. {qulab-2.7.1 → qulab-2.7.3}/LICENSE +0 -0
  10. {qulab-2.7.1 → qulab-2.7.3}/MANIFEST.in +0 -0
  11. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/dependency_links.txt +0 -0
  12. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/entry_points.txt +0 -0
  13. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/requires.txt +0 -0
  14. {qulab-2.7.1 → qulab-2.7.3}/QuLab.egg-info/top_level.txt +0 -0
  15. {qulab-2.7.1 → qulab-2.7.3}/README.md +0 -0
  16. {qulab-2.7.1 → qulab-2.7.3}/pyproject.toml +0 -0
  17. {qulab-2.7.1 → qulab-2.7.3}/qulab/__init__.py +0 -0
  18. {qulab-2.7.1 → qulab-2.7.3}/qulab/__main__.py +0 -0
  19. {qulab-2.7.1 → qulab-2.7.3}/qulab/cli/__init__.py +0 -0
  20. {qulab-2.7.1 → qulab-2.7.3}/qulab/cli/commands.py +0 -0
  21. {qulab-2.7.1 → qulab-2.7.3}/qulab/cli/config.py +0 -0
  22. {qulab-2.7.1 → qulab-2.7.3}/qulab/dicttree.py +0 -0
  23. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/__init__.py +0 -0
  24. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/load.py +0 -0
  25. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/storage.py +0 -0
  26. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/transform.py +0 -0
  27. {qulab-2.7.1 → qulab-2.7.3}/qulab/executor/utils.py +0 -0
  28. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/__init__.py +0 -0
  29. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/__main__.py +0 -0
  30. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/config.py +0 -0
  31. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/dataset.py +0 -0
  32. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/event_queue.py +0 -0
  33. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/mainwindow.py +0 -0
  34. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/monitor.py +0 -0
  35. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/ploter.py +0 -0
  36. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/qt_compat.py +0 -0
  37. {qulab-2.7.1 → qulab-2.7.3}/qulab/monitor/toolbar.py +0 -0
  38. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/__init__.py +0 -0
  39. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/curd.py +0 -0
  40. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/expression.py +0 -0
  41. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/models.py +0 -0
  42. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/optimize.py +0 -0
  43. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/query.py +0 -0
  44. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/record.py +0 -0
  45. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/scan.py +0 -0
  46. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/server.py +0 -0
  47. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/space.py +0 -0
  48. {qulab-2.7.1 → qulab-2.7.3}/qulab/scan/utils.py +0 -0
  49. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/__init__.py +0 -0
  50. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/__main__.py +0 -0
  51. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/backend/__init__.py +0 -0
  52. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/backend/redis.py +0 -0
  53. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/base_dataset.py +0 -0
  54. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/chunk.py +0 -0
  55. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/dataset.py +0 -0
  56. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/file.py +0 -0
  57. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/__init__.py +0 -0
  58. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/base.py +0 -0
  59. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/config.py +0 -0
  60. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/file.py +0 -0
  61. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/ipy.py +0 -0
  62. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/models.py +0 -0
  63. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/record.py +0 -0
  64. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/report.py +0 -0
  65. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/models/tag.py +0 -0
  66. {qulab-2.7.1 → qulab-2.7.3}/qulab/storage/storage.py +0 -0
  67. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/__init__.py +0 -0
  68. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/chat.py +0 -0
  69. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/device/__init__.py +0 -0
  70. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/device/basedevice.py +0 -0
  71. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/device/loader.py +0 -0
  72. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/device/utils.py +0 -0
  73. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/drivers/FakeInstrument.py +0 -0
  74. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/drivers/__init__.py +0 -0
  75. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/ipy_events.py +0 -0
  76. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/__init__.py +0 -0
  77. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/bencoder.py +0 -0
  78. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/cli.py +0 -0
  79. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/dhcp.py +0 -0
  80. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/dhcpd.py +0 -0
  81. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/kad.py +0 -0
  82. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/kcp.py +0 -0
  83. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/net/nginx.py +0 -0
  84. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/progress.py +0 -0
  85. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/__init__.py +0 -0
  86. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/client.py +0 -0
  87. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/exceptions.py +0 -0
  88. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/msgpack.py +0 -0
  89. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/msgpack.pyi +0 -0
  90. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/router.py +0 -0
  91. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/rpc.py +0 -0
  92. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/serialize.py +0 -0
  93. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/server.py +0 -0
  94. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/socket.py +0 -0
  95. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/utils.py +0 -0
  96. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/worker.py +0 -0
  97. {qulab-2.7.1 → qulab-2.7.3}/qulab/sys/rpc/zmq_socket.py +0 -0
  98. {qulab-2.7.1 → qulab-2.7.3}/qulab/typing.py +0 -0
  99. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/__init__.py +0 -0
  100. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/__main__.py +0 -0
  101. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/_autoplot.py +0 -0
  102. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/plot_circ.py +0 -0
  103. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/plot_layout.py +0 -0
  104. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/plot_seq.py +0 -0
  105. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/qdat.py +0 -0
  106. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/rot3d.py +0 -0
  107. {qulab-2.7.1 → qulab-2.7.3}/qulab/visualization/widgets.py +0 -0
  108. {qulab-2.7.1 → qulab-2.7.3}/setup.cfg +0 -0
  109. {qulab-2.7.1 → qulab-2.7.3}/setup.py +0 -0
  110. {qulab-2.7.1 → qulab-2.7.3}/src/qulab.h +0 -0
  111. {qulab-2.7.1 → qulab-2.7.3}/tests/test_kad.py +0 -0
  112. {qulab-2.7.1 → qulab-2.7.3}/tests/test_scan.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: QuLab
3
- Version: 2.7.1
3
+ Version: 2.7.3
4
4
  Summary: contral instruments and manage data
5
5
  Author-email: feihoo87 <feihoo87@gmail.com>
6
6
  Maintainer-email: feihoo87 <feihoo87@gmail.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: QuLab
3
- Version: 2.7.1
3
+ Version: 2.7.3
4
4
  Summary: contral instruments and manage data
5
5
  Author-email: feihoo87 <feihoo87@gmail.com>
6
6
  Maintainer-email: feihoo87 <feihoo87@gmail.com>
@@ -13,6 +13,7 @@ qulab/__init__.py
13
13
  qulab/__main__.py
14
14
  qulab/dicttree.py
15
15
  qulab/typing.py
16
+ qulab/utils.py
16
17
  qulab/version.py
17
18
  qulab/cli/__init__.py
18
19
  qulab/cli/commands.py
@@ -17,6 +17,16 @@ from .transform import set_config_api
17
17
  from .utils import workflow_template
18
18
 
19
19
 
20
+ @logger.catch(reraise=True)
21
+ def boot(script_path):
22
+ """Run a script in a new terminal."""
23
+ import sys
24
+
25
+ from qulab.utils import run_detached_with_terminal
26
+
27
+ run_detached_with_terminal(sys.executable + ' ' + script_path)
28
+
29
+
20
30
  @logger.catch(reraise=True)
21
31
  def check_toplogy(workflow: WorkflowType, code_path: str | Path) -> dict:
22
32
  graph = {}
@@ -51,8 +61,16 @@ def command_option(command_name):
51
61
  '-a',
52
62
  default=lambda: get_config_value("api", str, command_name),
53
63
  help='The modlule name of the api.')
64
+ @click.option(
65
+ '--bootstrap',
66
+ '-b',
67
+ default=lambda: get_config_value("bootstrap", Path, command_name),
68
+ help='The path of the bootstrap.')
54
69
  @functools.wraps(func)
55
70
  def wrapper(*args, **kwargs):
71
+ bootstrap = kwargs.pop('bootstrap')
72
+ if bootstrap is not None:
73
+ boot(bootstrap)
56
74
  return func(*args, **kwargs)
57
75
 
58
76
  return wrapper
@@ -47,7 +47,7 @@ def check_state(workflow: WorkflowType, code_path: str | Path,
47
47
  3. No dependencies have been recalibrated since the last time check data or calibrate was run on this cal.
48
48
  4. All dependencies pass check state.
49
49
  """
50
- logger.debug(f'check_state: "{workflow}"')
50
+ logger.debug(f'check_state: "{workflow.__workflow_id__}"')
51
51
  result = find_result(workflow.__workflow_id__, state_path)
52
52
  if not result:
53
53
  logger.debug(
@@ -207,7 +207,7 @@ def check_data(workflow: WorkflowType, code_path: str | Path,
207
207
  base_path=state_path)
208
208
  save_result(workflow.__workflow_id__, result, state_path)
209
209
 
210
- logger.debug(f'Calibrated "{workflow}" !')
210
+ logger.debug(f'Calibrated "{workflow.__workflow_id__}" !')
211
211
  result = call_analyzer(workflow,
212
212
  result,
213
213
  history,
@@ -0,0 +1,31 @@
1
+ import subprocess
2
+ import sys
3
+
4
+
5
+ def run_detached_with_terminal(executable_path):
6
+ """
7
+ 启动可执行文件并在新终端窗口中保持运行,Python退出后进程仍存在。
8
+ 适用于Windows、Linux和macOS。
9
+ """
10
+ try:
11
+ if sys.platform == 'win32':
12
+ # Windows:使用start命令启动新cmd窗口
13
+ cmd = f'start cmd /k "{executable_path}"'
14
+ subprocess.Popen(cmd, shell=True)
15
+ elif sys.platform == 'darwin':
16
+ # macOS:通过AppleScript在Terminal中执行命令
17
+ escaped_path = executable_path.replace('"', r'\"')
18
+ script = f'tell application "Terminal" to do script "{escaped_path}"'
19
+ subprocess.Popen(['osascript', '-e', script],
20
+ start_new_session=True)
21
+ else:
22
+ # Linux:尝试gnome-terminal或xterm
23
+ try:
24
+ subprocess.Popen(['gnome-terminal', '--', executable_path],
25
+ start_new_session=True)
26
+ except FileNotFoundError:
27
+ subprocess.Popen(['xterm', '-e', executable_path],
28
+ start_new_session=True)
29
+ except Exception as e:
30
+ print(f"启动失败: {e}")
31
+ sys.exit(1)
@@ -0,0 +1 @@
1
+ __version__ = "2.7.3"
@@ -1 +0,0 @@
1
- __version__ = "2.7.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