QuLab 2.2.6__cp310-cp310-win_amd64.whl → 2.2.7__cp310-cp310-win_amd64.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: QuLab
3
- Version: 2.2.6
3
+ Version: 2.2.7
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,7 +1,7 @@
1
1
  qulab/__init__.py,sha256=vkFybY8YSsQilYdThPRD83-btPAR41sy_WCXiM-6mME,141
2
2
  qulab/__main__.py,sha256=V7iokU7awstgjCeiF_hoOdFyrqJwC_4QetiLe7cWvOQ,454
3
- qulab/fun.cp310-win_amd64.pyd,sha256=R50QTjA_NNs2c1bpEvHA3wn92yzgudCE3Vork5hncxA,31744
4
- qulab/version.py,sha256=CsrswO-ECCDHSY48Nv5lOOdRgL8EGAixBOHDf7PkRZA,21
3
+ qulab/fun.cp310-win_amd64.pyd,sha256=HhDHwlovmbtFML-GZmXElJ4iouH5WffpId7e6GRBf1s,31744
4
+ qulab/version.py,sha256=I501tBgxLlOMpveUyk065aIcjgpxqCi7zjY3gqoar7c,21
5
5
  qulab/monitor/__init__.py,sha256=xEVDkJF8issrsDeLqQmDsvtRmrf-UiViFcGTWuzdlFU,43
6
6
  qulab/monitor/__main__.py,sha256=k2H1H5Zf9LLXTDLISJkbikLH-z0f1e5i5i6wXXYPOrE,105
7
7
  qulab/monitor/config.py,sha256=y_5StMkdrbZO1ziyKBrvIkB7Jclp9RCPK1QbsOhCxnY,785
@@ -18,9 +18,9 @@ qulab/scan/expression.py,sha256=vwUM9E0OFQal4bljlUtLR3NJu4zGRyuWYrdyZSs3QTU,1619
18
18
  qulab/scan/models.py,sha256=ZvXkJEt5Yz3Sjx0JKzYka-q2Uo-w_iVzHgH8A6DbjF0,18236
19
19
  qulab/scan/optimize.py,sha256=MlT4y422CnP961IR384UKryyZh8riNvrPSd2z_MXLEg,2356
20
20
  qulab/scan/query.py,sha256=RM8bG4Tcx_PaNk8tv9HdlTZ1dGuuSr3sZVkYVq2BtfQ,12183
21
- qulab/scan/record.py,sha256=wqIAXcRx-TNtlDuYBj-OEm277EWFL3Sl8x4WkhWTNIA,21703
22
- qulab/scan/scan.py,sha256=TByI8LHSCcfaEUav9bH9qFWYBPyrjB9oOuvvT4hYuvc,35928
23
- qulab/scan/server.py,sha256=ZWTnlK_YMfPTCoq6GnGpsZzSFGyoO4qF7aEGW9wCwhM,14542
21
+ qulab/scan/record.py,sha256=aBpUllhKsBRhPOwZwsp3rcw2HB-3ne9yLYHLBeXXM-M,21669
22
+ qulab/scan/scan.py,sha256=hYTEEa4frIN6HraNleoytnCZjZ0c_XWOI1DSLchkpuE,37589
23
+ qulab/scan/server.py,sha256=GTV9wzlFTmG6YUj_8WwR4e6uvaq9AgdearLh3i3YAfw,14569
24
24
  qulab/scan/space.py,sha256=fWsY99HDauk89f5ygqnJYBoeNFGTUkAGFssrw-YMHok,5453
25
25
  qulab/scan/utils.py,sha256=30qnYvyFyctwcWxOCUpCNxXgGysA7xdIDzYbjwxGUzA,3744
26
26
  qulab/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -78,9 +78,9 @@ qulab/visualization/plot_layout.py,sha256=yAnMONOms7_szCdng-8wPpUMPis5UnbaNNzV4K
78
78
  qulab/visualization/plot_seq.py,sha256=h9D0Yl_yO64IwlvBgzMu9EBKr9gg6y8QE55gu2PfTns,2783
79
79
  qulab/visualization/qdat.py,sha256=HubXFu4nfcA7iUzghJGle1C86G6221hicLR0b-GqhKQ,5887
80
80
  qulab/visualization/widgets.py,sha256=HcYwdhDtLreJiYaZuN3LfofjJmZcLwjMfP5aasebgDo,3266
81
- QuLab-2.2.6.dist-info/LICENSE,sha256=b4NRQ-GFVpJMT7RuExW3NwhfbrYsX7AcdB7Gudok-fs,1086
82
- QuLab-2.2.6.dist-info/METADATA,sha256=pQVHj7boWPB5vS2J5mDJjspwUM-EZIJP24mWz5prhmg,3609
83
- QuLab-2.2.6.dist-info/WHEEL,sha256=lO6CqtLHCAi38X3Es1a4R1lAjZFvN010IMRCFo2S7Mc,102
84
- QuLab-2.2.6.dist-info/entry_points.txt,sha256=ohBzutEnQimP_BZWiuXdSliu4QAYSHHcN0PZD8c7ZCY,46
85
- QuLab-2.2.6.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
86
- QuLab-2.2.6.dist-info/RECORD,,
81
+ QuLab-2.2.7.dist-info/LICENSE,sha256=b4NRQ-GFVpJMT7RuExW3NwhfbrYsX7AcdB7Gudok-fs,1086
82
+ QuLab-2.2.7.dist-info/METADATA,sha256=uMz3KTAANhe7RMJa0Y-Q0LXISTG98aYohmRRA05bSK4,3609
83
+ QuLab-2.2.7.dist-info/WHEEL,sha256=lO6CqtLHCAi38X3Es1a4R1lAjZFvN010IMRCFo2S7Mc,102
84
+ QuLab-2.2.7.dist-info/entry_points.txt,sha256=ohBzutEnQimP_BZWiuXdSliu4QAYSHHcN0PZD8c7ZCY,46
85
+ QuLab-2.2.7.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
86
+ QuLab-2.2.7.dist-info/RECORD,,
Binary file
qulab/scan/record.py CHANGED
@@ -453,7 +453,6 @@ class Record():
453
453
  if isinstance(d, BufferList):
454
454
  if isinstance(d.file, str):
455
455
  d.file = self._file.parent.parent.parent.parent / d.file
456
- d._slice = slice
457
456
  if buffer_to_array:
458
457
  return d.toarray()
459
458
  else:
qulab/scan/scan.py CHANGED
@@ -310,7 +310,10 @@ class Scan():
310
310
  self._main_task.cancel()
311
311
  except:
312
312
  pass
313
- self._executors.shutdown()
313
+ try:
314
+ self._executors.shutdown()
315
+ except:
316
+ pass
314
317
 
315
318
  @property
316
319
  def current_level(self):
@@ -323,7 +326,7 @@ class Scan():
323
326
  async def _emit(self, current_level, step, position, variables: dict[str,
324
327
  Any]):
325
328
  for key, value in list(variables.items()):
326
- if key.startswith('*'):
329
+ if key.startswith('*') or ',' in key:
327
330
  await _unpack(key, variables)
328
331
  elif inspect.isawaitable(value) and not self.hiden(key):
329
332
  variables[key] = await value
@@ -356,8 +359,8 @@ class Scan():
356
359
  self._hide_pattern_re = re.compile('|'.join(self.description['hiden']))
357
360
 
358
361
  def hiden(self, name: str) -> bool:
359
- return bool(
360
- self._hide_pattern_re.match(name)) and not name.startswith('*')
362
+ return bool(self._hide_pattern_re.match(name)) or name.startswith(
363
+ '*') or ',' in name
361
364
 
362
365
  async def _filter(self, variables: dict[str, Any], level: int = 0):
363
366
  try:
@@ -444,6 +447,11 @@ class Scan():
444
447
  except:
445
448
  pass
446
449
  self.description['consts'][name] = value
450
+
451
+ if ',' in name:
452
+ for key in name.split(','):
453
+ if not key.startswith('*'):
454
+ self.add_depends(key, [name])
447
455
  if setter:
448
456
  self.description['setters'][name] = setter
449
457
 
@@ -903,7 +911,10 @@ def assymbly(description):
903
911
  axis[name] = tuple(sorted(d))
904
912
  else:
905
913
  axis[name] = tuple(sorted(set(axis[name]) | d))
906
- description['axis'] = axis
914
+ description['axis'] = {
915
+ k: tuple([x for x in v if x >= 0])
916
+ for k, v in axis.items()
917
+ }
907
918
  description['independent_variables'] = independent_variables
908
919
 
909
920
  return description
@@ -974,7 +985,7 @@ async def _iter_level(variables,
974
985
 
975
986
  if opts:
976
987
  for key in list(variables.keys()):
977
- if key.startswith('*'):
988
+ if key.startswith('*') or ',' in key:
978
989
  await _unpack(key, variables)
979
990
 
980
991
  for name, opt in opts.items():
@@ -1026,7 +1037,8 @@ async def _unpack(key, variables):
1026
1037
  if inspect.isawaitable(x):
1027
1038
  x = await x
1028
1039
  if key.startswith('**'):
1029
- assert isinstance(x, dict), f"Should promise a dict for `**` symbol."
1040
+ assert isinstance(
1041
+ x, dict), f"Should promise a dict for `**` symbol. {key}"
1030
1042
  if "{key}" in key:
1031
1043
  for k, v in x.items():
1032
1044
  variables[key[2:].format(key=k)] = v
@@ -1035,10 +1047,44 @@ async def _unpack(key, variables):
1035
1047
  elif key.startswith('*'):
1036
1048
  assert isinstance(
1037
1049
  x, (list, tuple,
1038
- np.ndarray)), f"Should promise a list for `*` symbol."
1050
+ np.ndarray)), f"Should promise a list for `*` symbol. {key}"
1039
1051
  for i, v in enumerate(x):
1040
1052
  k = key[1:].format(i=i)
1041
1053
  variables[k] = v
1054
+ elif ',' in key:
1055
+ keys1, keys2 = [], []
1056
+ args = None
1057
+ for k in key.split(','):
1058
+ if k.startswith('*'):
1059
+ if args is None:
1060
+ args = k
1061
+ else:
1062
+ raise ValueError(f'Only one `*` symbol is allowed. {key}')
1063
+ elif args is None:
1064
+ keys1.append(k)
1065
+ else:
1066
+ keys2.append(k)
1067
+ assert isinstance(
1068
+ x,
1069
+ (list, tuple,
1070
+ np.ndarray)), f"Should promise a list for multiple symbols. {key}"
1071
+ if args is None:
1072
+ assert len(keys1) == len(
1073
+ x), f"Length of keys and values should be equal. {key}"
1074
+ for k, v in zip(keys1, x):
1075
+ variables[k] = v
1076
+ else:
1077
+ assert len(keys1) + len(keys2) <= len(
1078
+ x), f"Too many values for unpacking. {key}"
1079
+ for k, v in zip(keys1, x[:len(keys1)]):
1080
+ variables[k] = v
1081
+ end = -len(keys2) if keys2 else None
1082
+ for i, v in enumerate(x[len(keys1):end]):
1083
+ k = args[1:].format(i=i)
1084
+ variables[k] = v
1085
+ if keys2:
1086
+ for k, v in zip(keys2, x[end:]):
1087
+ variables[k] = v
1042
1088
  else:
1043
1089
  return
1044
1090
  del variables[key]
qulab/scan/server.py CHANGED
@@ -161,8 +161,9 @@ async def handle(session: Session, request: Request, datapath: Path):
161
161
  iter_id = uuid.uuid3(namespace, str(time.time_ns())).bytes
162
162
  record = get_record(session, msg['record_id'], datapath)
163
163
  bufferlist = record.get(msg['key'],
164
- buffer_to_array=False,
165
- slice=msg['slice'])
164
+ buffer_to_array=False)
165
+ if msg['slice']:
166
+ bufferlist._slice = msg['slice']
166
167
  it = bufferlist.iter()
167
168
  for _, _ in zip(range(msg['start']), it):
168
169
  pass
qulab/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "2.2.6"
1
+ __version__ = "2.2.7"
File without changes
File without changes