QuLab 2.0.7__cp312-cp312-win_amd64.whl → 2.0.9__cp312-cp312-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.0.7
3
+ Version: 2.0.9
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=8zLGg-DfQhnDl2Ky0n-zXpN-8e-g7iR0AcaI4l4Vvpk,32
2
2
  qulab/__main__.py,sha256=XN2wrhlmEkTIPq_ZeSaO8rWXfYgD2Czkm9DVFVoCw_U,515
3
- qulab/fun.cp312-win_amd64.pyd,sha256=O05oDJQ7lTXstpBqAdt1lxIRQx9n6eOBNQQlUl5kxTI,31744
4
- qulab/version.py,sha256=Ch1foRTConPN5Ppjf6BSKYuXYy0kR0uQuUlG41WPUX4,21
3
+ qulab/fun.cp312-win_amd64.pyd,sha256=7DT5cURXpyn9n0IasWZIc7P4qgT4yhv6OB4hcAgk2kg,31744
4
+ qulab/version.py,sha256=KmRUsw1os9zycj-k3YLWzgxp2vob6KBciPMbxED0Lqk,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,8 +18,8 @@ qulab/scan/expression.py,sha256=vwUM9E0OFQal4bljlUtLR3NJu4zGRyuWYrdyZSs3QTU,1619
18
18
  qulab/scan/models.py,sha256=TkiVHF_fUZzYHs4MsCTRh391thpf4Ozd3R_LAU0Gxkg,17657
19
19
  qulab/scan/optimize.py,sha256=MlT4y422CnP961IR384UKryyZh8riNvrPSd2z_MXLEg,2356
20
20
  qulab/scan/query_record.py,sha256=rpw4U3NjLzlv9QMwKdCvEUGHjzPF8u1UpodfLW8aoTY,11853
21
- qulab/scan/recorder.py,sha256=lbIASqH4-4eTzqX1sG9K1LnUkqvkcRK5ab2OpXSeE-Y,22801
22
- qulab/scan/scan.py,sha256=QIMjc9JpB-4Epsg8WPgEmHKppJ1dWTY2R8H5Co6YRG0,28937
21
+ qulab/scan/recorder.py,sha256=q991ChS3UtUYKoaRxDhXUqV5Oad_hVD27MD68H5NBQQ,23179
22
+ qulab/scan/scan.py,sha256=tv3CUk6Qe60xYRKvzCqbnNzinzW8q3K_7c-gc2EjH1M,29313
23
23
  qulab/scan/server.py,sha256=zDZfG6bOB3EUubfByQMq0BSQ9C6IV_Av0tDinzgpGjQ,2950
24
24
  qulab/scan/utils.py,sha256=XM-eKL5Xkm0hihhGS7Kq4g654Ye7n7TcU_f95gxtXq8,2634
25
25
  qulab/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -77,9 +77,9 @@ qulab/visualization/plot_layout.py,sha256=yAnMONOms7_szCdng-8wPpUMPis5UnbaNNzV4K
77
77
  qulab/visualization/plot_seq.py,sha256=h9D0Yl_yO64IwlvBgzMu9EBKr9gg6y8QE55gu2PfTns,2783
78
78
  qulab/visualization/qdat.py,sha256=HubXFu4nfcA7iUzghJGle1C86G6221hicLR0b-GqhKQ,5887
79
79
  qulab/visualization/widgets.py,sha256=HcYwdhDtLreJiYaZuN3LfofjJmZcLwjMfP5aasebgDo,3266
80
- QuLab-2.0.7.dist-info/LICENSE,sha256=b4NRQ-GFVpJMT7RuExW3NwhfbrYsX7AcdB7Gudok-fs,1086
81
- QuLab-2.0.7.dist-info/METADATA,sha256=4YsQ1mzdMruQZL4uFSVCEQ0UX71Jd3iz3tPAInCKOLU,3609
82
- QuLab-2.0.7.dist-info/WHEEL,sha256=fZWyj_84lK0cA-ZNCsdwhbJl0OTrpWkxInEn424qrSs,102
83
- QuLab-2.0.7.dist-info/entry_points.txt,sha256=ohBzutEnQimP_BZWiuXdSliu4QAYSHHcN0PZD8c7ZCY,46
84
- QuLab-2.0.7.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
85
- QuLab-2.0.7.dist-info/RECORD,,
80
+ QuLab-2.0.9.dist-info/LICENSE,sha256=b4NRQ-GFVpJMT7RuExW3NwhfbrYsX7AcdB7Gudok-fs,1086
81
+ QuLab-2.0.9.dist-info/METADATA,sha256=QmffAJ3QJnxAeZUv9X9ca7Qgbqcgm1AeEO9XUZgeEh4,3609
82
+ QuLab-2.0.9.dist-info/WHEEL,sha256=fZWyj_84lK0cA-ZNCsdwhbJl0OTrpWkxInEn424qrSs,102
83
+ QuLab-2.0.9.dist-info/entry_points.txt,sha256=ohBzutEnQimP_BZWiuXdSliu4QAYSHHcN0PZD8c7ZCY,46
84
+ QuLab-2.0.9.dist-info/top_level.txt,sha256=3T886LbAsbvjonu_TDdmgxKYUn939BVTRPxPl9r4cEg,6
85
+ QuLab-2.0.9.dist-info/RECORD,,
Binary file
qulab/scan/recorder.py CHANGED
@@ -216,6 +216,8 @@ class BufferList():
216
216
  class Record():
217
217
 
218
218
  def __init__(self, id, database, description=None):
219
+ from .scan import OptimizeSpace
220
+
219
221
  self.id = id
220
222
  self.database = database
221
223
  self.description = description
@@ -236,22 +238,29 @@ class Record():
236
238
  self.dims[name] = ()
237
239
  for level, range_list in self.description['loops'].items():
238
240
  for name, iterable in range_list:
239
- if isinstance(iterable, (np.ndarray, list, tuple, range)):
241
+ if isinstance(iterable, OptimizeSpace):
242
+ self.dims[name] = tuple(range(level + 1))
243
+ continue
244
+ elif isinstance(iterable, (np.ndarray, list, tuple, range)):
240
245
  self._items[name] = iterable
241
246
  self.independent_variables[name] = iterable
242
- self.dims[name] = (level, )
247
+ self.dims[name] = (level, )
243
248
 
244
249
  for level, group in self.description['order'].items():
245
250
  for names in group:
246
251
  for name in names:
247
- if name not in self.dims:
248
- if name not in self.description['dependents']:
252
+ if name not in self.description['dependents']:
253
+ if name not in self.dims:
249
254
  self.dims[name] = (level, )
250
- else:
251
- d = set()
252
- for n in self.description['dependents'][name]:
253
- d.update(self.dims[n])
255
+ else:
256
+ d = set()
257
+ for n in self.description['dependents'][name]:
258
+ d.update(self.dims[n])
259
+ if name not in self.dims:
254
260
  self.dims[name] = tuple(sorted(d))
261
+ else:
262
+ self.dims[name] = tuple(
263
+ sorted(set(self.dims[name]) | d))
255
264
 
256
265
  if self.is_local_record():
257
266
  self.database = Path(self.database)
qulab/scan/scan.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import copy
2
3
  import datetime
3
4
  import inspect
4
5
  import itertools
@@ -437,13 +438,24 @@ class Scan():
437
438
  elif inspect.isawaitable(task):
438
439
  await task
439
440
 
440
- async def _run(self):
441
+ async def run(self):
441
442
  assymbly(self.description)
443
+ if isinstance(
444
+ self.description['database'],
445
+ str) and self.description['database'].startswith("tcp://"):
446
+ async with ZMQContextManager(
447
+ zmq.DEALER,
448
+ connect=self.description['database']) as socket:
449
+ self._sock = socket
450
+ await self._run()
451
+ else:
452
+ await self._run()
453
+
454
+ async def _run(self):
442
455
  task = asyncio.create_task(self._update_progress())
443
456
  self._task_pool.append(task)
444
457
  self._variables = {'self': self}
445
- await _update_variables(self._variables, self.description['consts'],
446
- self.description['setters'])
458
+ self._variables.update(self.description['consts'].copy())
447
459
  for level, total in self.description['total'].items():
448
460
  if total == np.inf:
449
461
  total = None
@@ -458,18 +470,8 @@ class Scan():
458
470
  self.variables[name])
459
471
  if inspect.isawaitable(coro):
460
472
  await coro
461
- if isinstance(
462
- self.description['database'],
463
- str) and self.description['database'].startswith("tcp://"):
464
- async with ZMQContextManager(
465
- zmq.DEALER,
466
- connect=self.description['database']) as socket:
467
- self._sock = socket
468
- self.record = await self.create_record()
469
- await self.work()
470
- else:
471
- self.record = await self.create_record()
472
- await self.work()
473
+ self.record = await self.create_record()
474
+ await self.work()
473
475
  for level, bar in self._bar.items():
474
476
  bar.close()
475
477
 
@@ -479,10 +481,15 @@ class Scan():
479
481
  evt.set()
480
482
  elif inspect.isawaitable(evt):
481
483
  await evt
482
- task.cancel()
483
484
  if self._single_step:
485
+ for group in self.description['order'].get(-1, []):
486
+ for name in group:
487
+ if name in self.description['getters']:
488
+ self.variables[name] = await call_function(
489
+ self.description['getters'][name], self.variables)
484
490
  await self.emit(0, 0, 0, self.variables.copy())
485
491
  await self.emit(-1, 0, 0, {})
492
+ task.cancel()
486
493
  return self.variables
487
494
 
488
495
  async def done(self):
@@ -497,7 +504,7 @@ class Scan():
497
504
 
498
505
  def start(self):
499
506
  import asyncio
500
- self._main_task = asyncio.create_task(self._run())
507
+ self._main_task = asyncio.create_task(self.run())
501
508
 
502
509
  async def submit(self, server='tcp://127.0.0.1:6788'):
503
510
  assymbly(self.description)
@@ -705,18 +712,18 @@ def assymbly(description):
705
712
  except:
706
713
  pass
707
714
 
708
- dependents = description['dependents'].copy()
715
+ dependents = copy.deepcopy(description['dependents'])
709
716
 
710
717
  for level in levels:
711
718
  range_list = description['loops'].get(level, [])
712
719
  if level > 0:
713
720
  if f'#__loop_{level}' not in description['dependents']:
714
- dependents[f'#__loop_{level}'] = []
715
- dependents[f'#__loop_{level}'].append(f'#__loop_{level-1}')
721
+ dependents[f'#__loop_{level}'] = set()
722
+ dependents[f'#__loop_{level}'].add(f'#__loop_{level-1}')
716
723
  for name, _ in range_list:
717
724
  if name not in description['dependents']:
718
- dependents[name] = []
719
- dependents[name].append(f'#__loop_{level}')
725
+ dependents[name] = set()
726
+ dependents[name].add(f'#__loop_{level}')
720
727
 
721
728
  def _get_all_depends(key, graph):
722
729
  ret = set()
@@ -734,7 +741,10 @@ def assymbly(description):
734
741
 
735
742
  levels = {}
736
743
  passed = set()
737
- all_keys = set()
744
+ all_keys = set(description['consts'].keys())
745
+ for key in dependents:
746
+ all_keys.add(key)
747
+ all_keys.update(dependents[key])
738
748
  for level in reversed(description['loops'].keys()):
739
749
  tag = f'#__loop_{level}'
740
750
  for key, deps in full_depends.items():
qulab/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "2.0.7"
1
+ __version__ = "2.0.9"
File without changes
File without changes