QuLab 2.4.18__tar.gz → 2.4.19__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 (109) hide show
  1. {qulab-2.4.18 → qulab-2.4.19}/PKG-INFO +1 -1
  2. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/PKG-INFO +1 -1
  3. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/load.py +33 -8
  4. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/utils.py +1 -1
  5. qulab-2.4.19/qulab/version.py +1 -0
  6. qulab-2.4.18/qulab/version.py +0 -1
  7. {qulab-2.4.18 → qulab-2.4.19}/LICENSE +0 -0
  8. {qulab-2.4.18 → qulab-2.4.19}/MANIFEST.in +0 -0
  9. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/SOURCES.txt +0 -0
  10. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/dependency_links.txt +0 -0
  11. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/entry_points.txt +0 -0
  12. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/requires.txt +0 -0
  13. {qulab-2.4.18 → qulab-2.4.19}/QuLab.egg-info/top_level.txt +0 -0
  14. {qulab-2.4.18 → qulab-2.4.19}/README.md +0 -0
  15. {qulab-2.4.18 → qulab-2.4.19}/pyproject.toml +0 -0
  16. {qulab-2.4.18 → qulab-2.4.19}/qulab/__init__.py +0 -0
  17. {qulab-2.4.18 → qulab-2.4.19}/qulab/__main__.py +0 -0
  18. {qulab-2.4.18 → qulab-2.4.19}/qulab/cli/__init__.py +0 -0
  19. {qulab-2.4.18 → qulab-2.4.19}/qulab/cli/config.py +0 -0
  20. {qulab-2.4.18 → qulab-2.4.19}/qulab/dicttree.py +0 -0
  21. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/__init__.py +0 -0
  22. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/cli.py +0 -0
  23. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/schedule.py +0 -0
  24. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/storage.py +0 -0
  25. {qulab-2.4.18 → qulab-2.4.19}/qulab/executor/transform.py +0 -0
  26. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/__init__.py +0 -0
  27. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/__main__.py +0 -0
  28. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/config.py +0 -0
  29. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/dataset.py +0 -0
  30. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/event_queue.py +0 -0
  31. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/mainwindow.py +0 -0
  32. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/monitor.py +0 -0
  33. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/ploter.py +0 -0
  34. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/qt_compat.py +0 -0
  35. {qulab-2.4.18 → qulab-2.4.19}/qulab/monitor/toolbar.py +0 -0
  36. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/__init__.py +0 -0
  37. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/curd.py +0 -0
  38. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/expression.py +0 -0
  39. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/models.py +0 -0
  40. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/optimize.py +0 -0
  41. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/query.py +0 -0
  42. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/record.py +0 -0
  43. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/scan.py +0 -0
  44. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/server.py +0 -0
  45. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/space.py +0 -0
  46. {qulab-2.4.18 → qulab-2.4.19}/qulab/scan/utils.py +0 -0
  47. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/__init__.py +0 -0
  48. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/__main__.py +0 -0
  49. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/backend/__init__.py +0 -0
  50. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/backend/redis.py +0 -0
  51. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/base_dataset.py +0 -0
  52. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/chunk.py +0 -0
  53. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/dataset.py +0 -0
  54. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/file.py +0 -0
  55. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/__init__.py +0 -0
  56. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/base.py +0 -0
  57. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/config.py +0 -0
  58. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/file.py +0 -0
  59. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/ipy.py +0 -0
  60. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/models.py +0 -0
  61. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/record.py +0 -0
  62. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/report.py +0 -0
  63. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/models/tag.py +0 -0
  64. {qulab-2.4.18 → qulab-2.4.19}/qulab/storage/storage.py +0 -0
  65. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/__init__.py +0 -0
  66. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/chat.py +0 -0
  67. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/device/__init__.py +0 -0
  68. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/device/basedevice.py +0 -0
  69. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/device/loader.py +0 -0
  70. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/device/utils.py +0 -0
  71. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/drivers/FakeInstrument.py +0 -0
  72. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/drivers/__init__.py +0 -0
  73. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/ipy_events.py +0 -0
  74. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/__init__.py +0 -0
  75. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/bencoder.py +0 -0
  76. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/cli.py +0 -0
  77. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/dhcp.py +0 -0
  78. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/dhcpd.py +0 -0
  79. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/kad.py +0 -0
  80. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/kcp.py +0 -0
  81. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/net/nginx.py +0 -0
  82. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/progress.py +0 -0
  83. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/__init__.py +0 -0
  84. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/client.py +0 -0
  85. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/exceptions.py +0 -0
  86. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/msgpack.py +0 -0
  87. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/msgpack.pyi +0 -0
  88. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/router.py +0 -0
  89. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/rpc.py +0 -0
  90. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/serialize.py +0 -0
  91. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/server.py +0 -0
  92. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/socket.py +0 -0
  93. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/utils.py +0 -0
  94. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/worker.py +0 -0
  95. {qulab-2.4.18 → qulab-2.4.19}/qulab/sys/rpc/zmq_socket.py +0 -0
  96. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/__init__.py +0 -0
  97. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/__main__.py +0 -0
  98. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/_autoplot.py +0 -0
  99. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/plot_circ.py +0 -0
  100. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/plot_layout.py +0 -0
  101. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/plot_seq.py +0 -0
  102. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/qdat.py +0 -0
  103. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/rot3d.py +0 -0
  104. {qulab-2.4.18 → qulab-2.4.19}/qulab/visualization/widgets.py +0 -0
  105. {qulab-2.4.18 → qulab-2.4.19}/setup.cfg +0 -0
  106. {qulab-2.4.18 → qulab-2.4.19}/setup.py +0 -0
  107. {qulab-2.4.18 → qulab-2.4.19}/src/qulab.h +0 -0
  108. {qulab-2.4.18 → qulab-2.4.19}/tests/test_kad.py +0 -0
  109. {qulab-2.4.18 → qulab-2.4.19}/tests/test_scan.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: QuLab
3
- Version: 2.4.18
3
+ Version: 2.4.19
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.4.18
3
+ Version: 2.4.19
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,8 +1,11 @@
1
+ import base64
1
2
  import hashlib
2
3
  import inspect
4
+ import lzma
3
5
  import pickle
4
6
  import re
5
7
  import string
8
+ import textwrap
6
9
  import warnings
7
10
  from importlib.util import module_from_spec, spec_from_file_location
8
11
  from pathlib import Path
@@ -224,8 +227,24 @@ def load_workflow_from_file(file_name: str,
224
227
  return module
225
228
 
226
229
 
230
+ def encode_mapping(mapping):
231
+ mapping_bytes = lzma.compress(pickle.dumps(mapping))
232
+ hash_str = hashlib.md5(mapping_bytes).hexdigest()[:8]
233
+ mappping_code = '\n'.join(
234
+ textwrap.wrap(base64.b64encode(mapping_bytes).decode(), 100))
235
+ return hash_str, mappping_code
236
+
237
+
238
+ def decode_mapping(hash_str, mappping_code):
239
+ mapping_bytes = base64.b64decode(mappping_code.replace('\n', ''))
240
+ if hash_str != hashlib.md5(mapping_bytes).hexdigest()[:8]:
241
+ raise ValueError("Hash does not match")
242
+ mapping = pickle.loads(lzma.decompress(mapping_bytes))
243
+ return mapping
244
+
245
+
227
246
  def load_workflow_from_template(template_path: str,
228
- mappping: dict[str, str],
247
+ mapping: dict[str, str],
229
248
  base_path: str | Path,
230
249
  target_path: str | None = None,
231
250
  package='workflows',
@@ -237,30 +256,36 @@ def load_workflow_from_template(template_path: str,
237
256
  content = f.read()
238
257
 
239
258
  mtime = max(Path(template_path).stat().st_mtime, mtime)
259
+ hash_str, mapping_code = encode_mapping(mapping)
240
260
 
241
261
  def replace(text):
242
262
  """
243
- 将给定文本中的所有 _D_("var") 替换为 ${var}
263
+ 将给定文本中的所有 VAR("var") 替换为 __VAR_{hash_str}["var"]
244
264
 
245
265
  Args:
246
- text (str): 包含 _D_ 调用的字符串。
266
+ text (str): 包含 VAR 调用的字符串。
247
267
 
248
268
  Returns:
249
269
  str: 已经替换的新字符串。
250
270
  """
251
- pattern = re.compile(r'_D_\s*\(\s*(["\'])(\w+)\1\s*\)')
252
- replacement = r'${\2}'
271
+ pattern = re.compile(r'VAR\s*\(\s*(["\'])(\w+)\1\s*\)')
272
+ replacement = f'__VAR_{hash_str}' + r'["\2"]'
253
273
  new_text = re.sub(pattern, replacement, text)
254
274
  return new_text
255
275
 
256
276
  template = string.Template(replace(content))
257
277
  keys = template.get_identifiers()
258
- missing = set(keys) - set(mappping.keys())
278
+ missing = set(keys) - set(mapping.keys())
259
279
  if missing:
260
280
  raise KeyError(f"{template_path}: Missing keys in mapping: {missing}")
261
- content = template.substitute(mappping)
281
+ content = template.substitute(mapping)
262
282
 
263
- hash_str = hashlib.md5(pickle.dumps(mappping)).hexdigest()[:8]
283
+ inject_code = [
284
+ "from qulab.executor.load import decode_mapping",
285
+ f"__VAR_{hash_str} = decode_mapping(\"{hash_str}\",",
286
+ f"\"\"\"{mapping_code}\"\"\")"
287
+ ]
288
+ content = '\n'.join(inject_code + [content])
264
289
  if target_path is None:
265
290
  if path.stem == 'template':
266
291
  path = path.parent / f'tmp{hash_str}.py'
@@ -34,7 +34,7 @@ def workflow_template(deps: list[str]) -> str:
34
34
  return f"""
35
35
  from loguru import logger
36
36
 
37
- def _D_(s): pass
37
+ def VAR(s): pass
38
38
 
39
39
  import numpy as np
40
40
 
@@ -0,0 +1 @@
1
+ __version__ = "2.4.19"
@@ -1 +0,0 @@
1
- __version__ = "2.4.18"
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