QuLab 2.11.14__tar.gz → 2.11.15__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 (114) hide show
  1. {qulab-2.11.14 → qulab-2.11.15}/PKG-INFO +1 -1
  2. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/PKG-INFO +1 -1
  3. {qulab-2.11.14 → qulab-2.11.15}/qulab/cli/config.py +35 -8
  4. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/template.py +2 -0
  5. qulab-2.11.15/qulab/version.py +1 -0
  6. qulab-2.11.14/qulab/version.py +0 -1
  7. {qulab-2.11.14 → qulab-2.11.15}/LICENSE +0 -0
  8. {qulab-2.11.14 → qulab-2.11.15}/MANIFEST.in +0 -0
  9. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/SOURCES.txt +0 -0
  10. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/dependency_links.txt +0 -0
  11. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/entry_points.txt +0 -0
  12. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/requires.txt +0 -0
  13. {qulab-2.11.14 → qulab-2.11.15}/QuLab.egg-info/top_level.txt +0 -0
  14. {qulab-2.11.14 → qulab-2.11.15}/README.md +0 -0
  15. {qulab-2.11.14 → qulab-2.11.15}/pyproject.toml +0 -0
  16. {qulab-2.11.14 → qulab-2.11.15}/qulab/__init__.py +0 -0
  17. {qulab-2.11.14 → qulab-2.11.15}/qulab/__main__.py +0 -0
  18. {qulab-2.11.14 → qulab-2.11.15}/qulab/cli/__init__.py +0 -0
  19. {qulab-2.11.14 → qulab-2.11.15}/qulab/cli/commands.py +0 -0
  20. {qulab-2.11.14 → qulab-2.11.15}/qulab/cli/decorators.py +0 -0
  21. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/__init__.py +0 -0
  22. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/analyze.py +0 -0
  23. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/cli.py +0 -0
  24. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/load.py +0 -0
  25. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/registry.py +0 -0
  26. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/schedule.py +0 -0
  27. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/storage.py +0 -0
  28. {qulab-2.11.14 → qulab-2.11.15}/qulab/executor/utils.py +0 -0
  29. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/__init__.py +0 -0
  30. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/__main__.py +0 -0
  31. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/config.py +0 -0
  32. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/dataset.py +0 -0
  33. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/event_queue.py +0 -0
  34. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/mainwindow.py +0 -0
  35. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/monitor.py +0 -0
  36. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/ploter.py +0 -0
  37. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/qt_compat.py +0 -0
  38. {qulab-2.11.14 → qulab-2.11.15}/qulab/monitor/toolbar.py +0 -0
  39. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/__init__.py +0 -0
  40. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/curd.py +0 -0
  41. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/models.py +0 -0
  42. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/optimize.py +0 -0
  43. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/query.py +0 -0
  44. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/record.py +0 -0
  45. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/scan.py +0 -0
  46. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/server.py +0 -0
  47. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/space.py +0 -0
  48. {qulab-2.11.14 → qulab-2.11.15}/qulab/scan/utils.py +0 -0
  49. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/__init__.py +0 -0
  50. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/__main__.py +0 -0
  51. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/backend/__init__.py +0 -0
  52. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/backend/redis.py +0 -0
  53. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/base_dataset.py +0 -0
  54. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/chunk.py +0 -0
  55. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/dataset.py +0 -0
  56. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/file.py +0 -0
  57. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/__init__.py +0 -0
  58. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/base.py +0 -0
  59. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/config.py +0 -0
  60. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/file.py +0 -0
  61. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/ipy.py +0 -0
  62. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/models.py +0 -0
  63. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/record.py +0 -0
  64. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/report.py +0 -0
  65. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/models/tag.py +0 -0
  66. {qulab-2.11.14 → qulab-2.11.15}/qulab/storage/storage.py +0 -0
  67. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/__init__.py +0 -0
  68. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/chat.py +0 -0
  69. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/device/__init__.py +0 -0
  70. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/device/basedevice.py +0 -0
  71. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/device/loader.py +0 -0
  72. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/device/utils.py +0 -0
  73. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/drivers/FakeInstrument.py +0 -0
  74. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/drivers/__init__.py +0 -0
  75. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/ipy_events.py +0 -0
  76. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/__init__.py +0 -0
  77. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/bencoder.py +0 -0
  78. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/cli.py +0 -0
  79. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/dhcp.py +0 -0
  80. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/dhcpd.py +0 -0
  81. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/kad.py +0 -0
  82. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/kcp.py +0 -0
  83. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/net/nginx.py +0 -0
  84. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/progress.py +0 -0
  85. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/__init__.py +0 -0
  86. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/client.py +0 -0
  87. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/exceptions.py +0 -0
  88. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/msgpack.py +0 -0
  89. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/msgpack.pyi +0 -0
  90. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/router.py +0 -0
  91. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/rpc.py +0 -0
  92. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/serialize.py +0 -0
  93. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/server.py +0 -0
  94. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/socket.py +0 -0
  95. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/utils.py +0 -0
  96. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/worker.py +0 -0
  97. {qulab-2.11.14 → qulab-2.11.15}/qulab/sys/rpc/zmq_socket.py +0 -0
  98. {qulab-2.11.14 → qulab-2.11.15}/qulab/tools/__init__.py +0 -0
  99. {qulab-2.11.14 → qulab-2.11.15}/qulab/tools/connection_helper.py +0 -0
  100. {qulab-2.11.14 → qulab-2.11.15}/qulab/typing.py +0 -0
  101. {qulab-2.11.14 → qulab-2.11.15}/qulab/utils.py +0 -0
  102. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/__init__.py +0 -0
  103. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/__main__.py +0 -0
  104. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/_autoplot.py +0 -0
  105. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/plot_circ.py +0 -0
  106. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/plot_layout.py +0 -0
  107. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/plot_seq.py +0 -0
  108. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/qdat.py +0 -0
  109. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/rot3d.py +0 -0
  110. {qulab-2.11.14 → qulab-2.11.15}/qulab/visualization/widgets.py +0 -0
  111. {qulab-2.11.14 → qulab-2.11.15}/setup.cfg +0 -0
  112. {qulab-2.11.14 → qulab-2.11.15}/setup.py +0 -0
  113. {qulab-2.11.14 → qulab-2.11.15}/src/qulab.h +0 -0
  114. {qulab-2.11.14 → qulab-2.11.15}/tests/test_scan.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: QuLab
3
- Version: 2.11.14
3
+ Version: 2.11.15
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.4
2
2
  Name: QuLab
3
- Version: 2.11.14
3
+ Version: 2.11.15
4
4
  Summary: contral instruments and manage data
5
5
  Author-email: feihoo87 <feihoo87@gmail.com>
6
6
  Maintainer-email: feihoo87 <feihoo87@gmail.com>
@@ -3,6 +3,7 @@ import functools
3
3
  import os
4
4
  import sys
5
5
  from pathlib import Path
6
+ from typing import Any
6
7
 
7
8
  import click
8
9
  from loguru import logger
@@ -11,6 +12,34 @@ DEFAULT_CONFIG_PATH = Path(os.path.expanduser("~/.qulab.ini"))
11
12
  ENV_PREFIX = "QULAB_"
12
13
 
13
14
 
15
+ def find_config_file() -> Path | None:
16
+ """
17
+ 查找配置文件
18
+ """
19
+ # 环境变量
20
+ if config_path := os.getenv("QULAB_CONFIG_PATH"):
21
+ return Path(config_path)
22
+
23
+ # 先查找当前目录下的配置文件
24
+ config_path = Path.cwd() / "qulab.ini"
25
+ if config_path.exists():
26
+ return config_path
27
+
28
+ # 向上级目录查找,直到找到 uv 项目根目录
29
+ current_dir = Path.cwd()
30
+ while not (current_dir / "uv.lock").exists():
31
+ current_dir = current_dir.parent
32
+ if current_dir == Path("/"):
33
+ break
34
+ config_path = current_dir / "qulab.ini"
35
+ if config_path.exists():
36
+ return config_path
37
+
38
+ if DEFAULT_CONFIG_PATH.exists():
39
+ return DEFAULT_CONFIG_PATH
40
+ return None
41
+
42
+
14
43
  def _get_config_value(option_name,
15
44
  type_cast=str,
16
45
  command_name=None,
@@ -37,11 +66,9 @@ def _get_config_value(option_name,
37
66
  # 先加载默认配置防止段不存在
38
67
  config.read_dict({config_section: {}})
39
68
 
40
- config_path = Path.cwd() / "qulab.ini"
41
- if config_path.exists():
69
+ config_path = find_config_file()
70
+ if config_path is not None:
42
71
  config.read(config_path)
43
- elif DEFAULT_CONFIG_PATH.exists():
44
- config.read(DEFAULT_CONFIG_PATH)
45
72
 
46
73
  # 从对应配置段读取
47
74
  if config.has_section(config_section):
@@ -57,10 +84,10 @@ def _get_config_value(option_name,
57
84
  return default # 交给 Click 处理默认值
58
85
 
59
86
 
60
- def get_config_value(option_name,
61
- type_cast=str,
62
- command_name=None,
63
- default=None):
87
+ def get_config_value(option_name: str,
88
+ type_cast: type = str,
89
+ command_name: str | None = None,
90
+ default: Any = None):
64
91
  """
65
92
  获取配置值,支持命令专属配置的优先级获取
66
93
 
@@ -236,6 +236,8 @@ def inject_mapping(source: str, mapping: dict[str, Any],
236
236
  if default_value is not None:
237
237
  # 清除 default 值前后的空格
238
238
  clean_value = default_value.strip()
239
+ if var_name not in mapping:
240
+ return clean_value
239
241
  return f'{base}.get({quote}{var_name}{quote}, {clean_value})'
240
242
  else:
241
243
  return f'{base}[{quote}{var_name}{quote}]'
@@ -0,0 +1 @@
1
+ __version__ = "2.11.15"
@@ -1 +0,0 @@
1
- __version__ = "2.11.14"
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