nsqdriver 0.0.203__cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.12.11__cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.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.
nsqdriver/NS_DDS_v3.py CHANGED
@@ -1,9 +1,7 @@
1
1
  import copy
2
2
  from enum import Enum
3
- from math import ceil
4
3
  from collections import namedtuple
5
- from waveforms import Waveform, wave_eval, WaveVStack
6
- from waveforms.waveform import _zero
4
+ from waveforms import Waveform, wave_eval
7
5
  from waveforms.math.signal import getFTMatrix, shift
8
6
  import nsqdriver.nswave as nw
9
7
 
@@ -89,27 +87,14 @@ def program_cap(param: nw.Var):
89
87
  nw.wait_for_trigger()
90
88
  i: nw.Var
91
89
  # param: [[100e-9, 1e-6], [200e-9, 1e-6]]
92
- # nw.wait(150e-9)
93
90
  for i in param:
94
91
  nw.wait(i[0])
95
- nw.capture(i[1], 0, 0)
96
-
97
-
98
- @nw.kernel
99
- def program_da(p: nw.Var):
100
- i: nw.Var
101
- e: nw.Var
102
- nw.init_frame(0, 0)
103
- nw.wait_for_trigger()
104
- # nw.reset_frame()
105
- for i in p:
106
- nw.wait(i[0])
107
- e = nw.ins_envelope(i[1])
108
- nw.play_wave(e, 1, 0, 0)
92
+ nw.capture(i[1], i[2], i[3])
109
93
 
110
94
 
111
95
  ProbeSegment = namedtuple('ProbeSegment', ['start', 'stop', 'freq'])
112
96
 
97
+
113
98
  CaptureCmd = namedtuple('CaptureCmd', [
114
99
  'start', 'ad_duration', 'delay', 'da_duration', 'freqs', 'delays'
115
100
  ])
@@ -176,7 +161,8 @@ class Driver(BaseDriver):
176
161
  # barthann、cosine、exponential、tukey、taylor
177
162
 
178
163
  # 内触发
179
- Quantity('GenerateTrig', value=1e7, unit='ns'), # set/get,触发周期单位ns,触发数量=shot
164
+ Quantity('GenerateTrig', value=1e7,
165
+ unit='ns'), # set/get,触发周期单位ns,触发数量=shot
180
166
  Quantity('UpdateFirmware', value='', ch=1), # qsync固件更新
181
167
  Quantity('PipInstall') # pip install in instance
182
168
  ]
@@ -194,8 +180,7 @@ class Driver(BaseDriver):
194
180
  self.coef_cache = {}
195
181
  self.res_maps = {}
196
182
  self.probe_da_wave = {}
197
- # self.probe_delay = 32e-9
198
- self.probe_delay = 0e-9
183
+ self.probe_delay = 32e-9
199
184
  self.capture_cmds: "dict[int, list[CaptureCmd]]" = {}
200
185
  self.capture_cali_param: "dict[int, np.ndarray]" = {}
201
186
  self.capture_points: "dict[int, np.ndarray]" = {}
@@ -226,24 +211,18 @@ class Driver(BaseDriver):
226
211
 
227
212
  def granularity4ns(self, delay):
228
213
  points_4ns = 16 # self.ad_srate*4e-6
229
- return delay * self.ad_srate // points_4ns * points_4ns / self.ad_srate
230
-
231
- def granularity4ns_zero_num(self, delay):
232
- points_4ns = 16
233
- out_delay = delay * self.srate // points_4ns * points_4ns / self.srate
234
- zero_num = round((delay - out_delay) * self.srate)
235
- return out_delay, zero_num
214
+ return delay*self.ad_srate//points_4ns*points_4ns/self.ad_srate
236
215
 
237
216
  @staticmethod
238
217
  def _delay2_phase(delay, freq):
239
- return 2 * np.pi * freq * delay
218
+ return 2*np.pi*freq*delay
240
219
 
241
- def in_sequence_in_time(self, coef_info: dict) -> list[CaptureCmd]:
220
+ def get_sequence_in_time(self, coef_info: dict) -> list[CaptureCmd]:
242
221
  w_list = coef_info.get('wList', [])
243
222
  time_segments: "list[ProbeSegment]" = []
244
223
 
245
224
  for wave in w_list:
246
- t0 = round(wave['t0']*1e9)/1e9
225
+ t0 = wave['t0']
247
226
  weight_expr = wave['weight']
248
227
 
249
228
  # 假设 weight 表达式格式为 "square(X) >> Y",我们提取实际时间宽度
@@ -251,7 +230,7 @@ class Driver(BaseDriver):
251
230
  _start, _stop, _ = wave_eval(weight_expr).bounds
252
231
 
253
232
  # 将区间加入列表
254
- seg = ProbeSegment(t0 + _start, t0 + _stop, wave['Delta'])
233
+ seg = ProbeSegment(t0+_start, t0+_stop, wave['Delta'])
255
234
  time_segments.append(seg)
256
235
 
257
236
  # 按起始时间排序
@@ -261,7 +240,7 @@ class Driver(BaseDriver):
261
240
  non_overlapping_segments: list[CaptureCmd] = []
262
241
  current_start, current_end = time_segments[0].start, time_segments[0].stop
263
242
  current_cmd = CaptureCmd(0, 0, 0, 0, [time_segments[0].freq], [0.])
264
- current_align_delay = current_start - self.granularity4ns(current_start)
243
+ current_align_delay = current_start-self.granularity4ns(current_start)
265
244
  pointer = 0
266
245
 
267
246
  for seg in time_segments[1:]:
@@ -284,7 +263,7 @@ class Driver(BaseDriver):
284
263
  current_end = max(current_end, seg.stop)
285
264
  current_cmd.freqs.append(seg.freq)
286
265
  # 由delay换算解缠绕相位
287
- current_cmd.delays.append(seg.start - current_start)
266
+ current_cmd.delays.append(seg.start-current_start)
288
267
  else:
289
268
  # 添加最后一个段
290
269
  current_cmd = current_cmd._replace(start=current_start - pointer - self.probe_delay)
@@ -294,14 +273,14 @@ class Driver(BaseDriver):
294
273
  non_overlapping_segments.append(current_cmd)
295
274
  return non_overlapping_segments
296
275
 
297
- def generate_in_program(self, coef_info, ch):
276
+ def generate_para(self, coef_info, ch):
298
277
  res_map = []
299
278
  phase_map = []
300
279
  points_map = []
301
280
  freq_map = []
302
281
  seq_param = []
303
282
 
304
- self.capture_cmds[ch] = seq = self.in_sequence_in_time(coef_info)
283
+ self.capture_cmds[ch] = seq = self.get_sequence_in_time(coef_info)
305
284
 
306
285
  for segment in seq:
307
286
  freq_map.extend(segment.freqs)
@@ -309,89 +288,26 @@ class Driver(BaseDriver):
309
288
 
310
289
  for cap_num, segment in enumerate(seq):
311
290
  _start = self.granularity4ns(segment.start)
312
- _start_diff = segment.start - _start
291
+ _start_diff = segment.start-_start
313
292
  seq_param.append([
314
293
  _start, segment.ad_duration, segment.delay, segment.da_duration
315
294
  ])
316
295
  for delay, freq in zip(segment.delays, segment.freqs):
317
296
  res_map.append([freq_map.index(freq), cap_num])
318
- phase_map.append(self._delay2_phase(delay+_start_diff, freq))
319
- points_map.append(segment.ad_duration * self.ad_srate)
297
+ phase_map.append(self._delay2_phase(delay, freq))
298
+ points_map.append(segment.ad_duration*self.ad_srate)
320
299
 
321
300
  self.res_maps[ch] = res_map
322
- self.capture_cali_param[ch] = np.exp(-1j * np.array(phase_map)).reshape((-1, 1))
301
+ self.capture_cali_param[ch] = np.exp(-1j*np.array(phase_map)).reshape((-1, 1))
323
302
  self.capture_points[ch] = np.array(points_map).reshape((-1, 1))
324
303
  return program_cap(seq_param), freq_map
325
304
 
326
- def out_sequence_in_time(self, wave_list: list):
327
- last_start = wave_list[0][0]
328
- last_stop = wave_list[0][1]
329
- temp_w = [wave_list[0][2]]
330
- _res = []
331
-
332
- for idx, (start, stop, seg) in enumerate(wave_list[1:]):
333
- if start > last_stop:
334
- _res.append([last_start, last_stop, np.hstack(temp_w)])
335
- last_start = start
336
- last_stop = stop
337
- temp_w.clear()
338
- temp_w.append(seg)
339
- else:
340
- last_stop = max(last_stop, stop)
341
- temp_w.append(seg)
342
- else:
343
- _res.append([last_start, last_stop, np.hstack(temp_w)])
344
- return _res
345
-
346
- def gen_wave_frag(self, x, wave: "Waveform"):
347
- range_list = np.searchsorted(x, wave.bounds)
348
- #ret = np.zeros_like(x)
349
- ret = []
350
- start, stop = 0, 0
351
- for i, stop in enumerate(range_list):
352
- if start < stop and wave.seq[i] != _zero:
353
- _w = copy.deepcopy(wave)
354
- _w.start = start/self.srate
355
- _w.stop = stop/self.srate
356
- part = _w.sample(self.srate)
357
- ret.append((start, stop, part))
358
- start = stop
359
- else:
360
- if not ret:
361
- ret.append((0, 128, np.zeros((128, ))))
362
- return ret
363
-
364
- def generate_out_program(self, _wave, ch):
365
- align_points = 32 # 4ns*8e9
366
- if isinstance(_wave, WaveVStack):
367
- _wave = _wave.simplify()
368
- if len(_wave.seq) == 1 and _wave.seq[0] == _zero:
369
- wave_list = [(0, 128, np.zeros((128, )))]
370
- else:
371
- _wave.stop = _wave.bounds[-2]
372
- wave_list = self.gen_wave_frag(np.linspace(_wave.start, _wave.stop, int((_wave.stop-_wave.start) * self.srate)+1), _wave)
373
- # wave_list = self.gen_wave_frag(np.arange(_wave.start, _wave.stop, 1/self.srate), _wave)
374
- print(f'generate_out_program: {_wave.start=}, {_wave.stop=}, {wave_list=}, {ch=}')
375
- _t_end = 0
376
- para = []
377
- wave = self.out_sequence_in_time(wave_list)
378
-
379
- for i in wave:
380
- wait = (i[0] - _t_end)
381
- align_wait = wait // align_points * align_points
382
- zero_num = wait - align_wait
383
- align_end = ceil(i[1]/align_points)*align_points
384
- align_wave = [np.zeros(zero_num), i[2], np.zeros([align_end - i[1]])]
385
- para.append([align_wait/self.srate, np.hstack(align_wave)])
386
- _t_end = align_end
387
- return program_da(para)
388
-
389
305
  def get_coef_res(self, iq_res, ch):
390
306
  res = []
391
307
  for (freq_num, cap_num) in self.res_maps[ch]:
392
308
  res.append(iq_res[freq_num][cap_num::len(self.capture_cmds[ch])])
393
309
  # 采样点归一化
394
- res = np.array(res) / self.capture_points[ch]
310
+ res = np.array(res)/self.capture_points[ch]
395
311
  # 校准相位
396
312
  res *= self.capture_cali_param[ch]
397
313
 
@@ -414,25 +330,22 @@ class Driver(BaseDriver):
414
330
 
415
331
  def write(self, name: str, value, **kw):
416
332
  channel = kw.get('ch', 1)
417
- # print(f'NS_DDS_v3 write: {name=}, {channel=}')
418
333
  if name in {'Coefficient'}:
334
+ # data, f_list, numberOfPoints, phases, points, _ = get_coef(value, 4e9)
419
335
  coef_info = value
420
336
  self.chs.add(channel)
421
- kernel, freq_map = self.generate_in_program(coef_info, channel)
422
- self.handle.set("ProgramIN", kernel, channel)
337
+ kernel, freq_map = self.generate_para(coef_info, channel)
338
+ self.handle.set("Program", kernel, channel)
423
339
  self.handle.set("FreqList", freq_map, channel)
424
340
  self.handle.set("TimeWidth", 2e-6, channel)
425
341
  self.coef_cache.update({channel: coef_info})
342
+ # elif name in {'Waveform'} and isinstance(value, waveforms.Waveform):
343
+ # self.probe_da_wave[channel] = value
426
344
  elif name in {
427
345
  'CaptureMode', 'SystemSync', 'ResetTrig', 'TrigPeriod',
428
346
  'TrigFrom'
429
347
  }:
430
348
  pass
431
- elif name in {
432
- 'GenWave', 'Waveform'
433
- } and isinstance(value, Waveform):
434
- kernel_da = self.generate_out_program(value, channel)
435
- self.handle.set("ProgramOUT", kernel_da, channel)
436
349
  else:
437
350
  if name in {"Shot"}:
438
351
  self.shots = value
@@ -457,7 +370,7 @@ class Driver(BaseDriver):
457
370
 
458
371
 
459
372
  if __name__ == '__main__':
460
- co = {'start': 0.0, 'stop': 10e-06, 'wList': [
373
+ co = {'start': 0.0, 'stop': 8.605e-06, 'wList': [
461
374
  {'Delta': 6796613333.333333, 'phase': -0.0, 'weight': 'square(8e-07) >> 4e-07', 'window': (0, 1024), 'w': None,
462
375
  't0': 1.5e-08, 'phi': 2.4311851282940524, 'threshold': 9.645718574523926},
463
376
  {'Delta': 6965129999.666667, 'phase': -0.0, 'weight': 'square(8e-07) >> 4e-07', 'window': (0, 1024), 'w': None,
@@ -477,72 +390,5 @@ if __name__ == '__main__':
477
390
  {'Delta': 6965129999.666667, 'phase': -0.0, 'weight': 'square(8e-07) >> 4e-07', 'window': (0, 1024), 'w': None,
478
391
  't0': 9.005e-06, 'phi': 2.4311851282940524, 'threshold': 9.645718574523926}
479
392
  ]}
480
- import matplotlib.pyplot as plt
481
- from nsqdriver import QSYNCDriver
482
- import time
483
- import waveforms as wf
484
- from nsqdriver.NS_MCI import SHARED_DEVICE_MEM
485
-
486
- SHARED_DEVICE_MEM.clear_ip()
487
- _d = Driver('192.168.0.43', 300)
488
- qsync = QSYNCDriver("192.168.0.43")
489
- _d = Driver('192.168.0.228', 30)
490
- _q = QSYNCDriver('192.168.0.228')
491
- time.sleep(5)
492
- _wave = wf.zero()
493
- for _w in co['wList']:
494
- t0 = _w['t0']
495
- _wave += (wf.wave_eval(_w['weight']) * wf.cos(2 * np.pi * _w['Delta'])) >> t0
496
- # _wave = _wave << 50e-9
497
- _wave.start = 0
498
- _wave.stop = 60e-6
499
-
500
- _wave(np.linspace(0, 20e-6, int(20e-6 * 8e9)), frag=True)
501
-
502
- wave = _wave.sample(8e9) / 3
503
- _wave
504
-
505
- for ch in range(3, 4):
506
- _d.write('GenWave', _wave, ch=ch)
507
- _d.write('Coefficient', co, ch=ch)
508
- # res = _d.generate_para(co, 1)
509
- _d.write("Coefficient", co, ch=2)
510
- ch = 2
511
- # wave = wf.cos(2*wf.pi*0.15e9)
512
- # wave.start = 0
513
- # wave.stop = 1e-6
514
-
515
- _wave = waveforms.zero()
516
- for _w in co['wList']:
517
- t0 = _w['t0']
518
- _wave += (waveforms.wave_eval(_w['weight']) * waveforms.cos(2 * np.pi * _w['Delta'])) >> t0
519
- # _wave = _wave << 50e-9
520
- _wave.start = 0
521
- _wave.stop = co["stop"]
522
- plt.plot(_wave.sample(8e9))
523
- plt.show()
524
- _d.write("GenWave", _wave, ch=2)
525
- _d.set('CaptureMode', 1)
526
- shots = 1024
527
- qsync.set('Shot', shots)
528
- _d.write('Shot', shots)
529
- _d.set('StartCapture')
530
- qsync.set('GenerateTrig', 400e-6)
531
- time.sleep(400e-6 * shots + 0.5)
532
- data = _d.get('TraceIQ', ch)
533
- data = np.array(data)
534
- print(data.shape)
535
- data = data.reshape((shots, -1))
536
- # qsync.set("Shot", 0xFFFFFFFF)
537
- # qsync.set("GenerateTrig", 500e-6)
538
- plt.figure()
539
- plt.plot(data.mean(axis=0)[:])
540
- plt.show()
541
- _d.set('CaptureMode', 0)
542
- _d.write("Coefficient", co, ch=2)
543
- _d.write("GenWave", _wave, ch=2)
544
- _d.set('StartCapture')
545
- qsync.set('GenerateTrig', 40e-6)
546
- data = _d.read("IQ", ch=2)
547
- print(20 * np.log10(np.abs(data.mean(axis=0))))
548
- pass
393
+ _d = Driver('127.0.0.1', 300)
394
+ res = _d.generate_para(co, 1)
nsqdriver/__init__.py CHANGED
@@ -4,7 +4,7 @@ from .NS_CST import Driver as CSTDriver
4
4
  from .compiler.ns_wave import InsChannel
5
5
  from .compiler.py_wave_asm import nsw_config, AssemblyError
6
6
 
7
- version_pack = (0, 0, 203)
7
+ version_pack = (0, 12, 11)
8
8
 
9
9
  __version__ = '.'.join(str(_) for _ in version_pack)
10
10
  __all__ = ['MCIDriver', 'QSYNCDriver', 'CSTDriver', 'InsChannel']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nsqdriver
3
- Version: 0.0.203
3
+ Version: 0.12.11
4
4
  Summary: Q series measurement and control equipment driver interface
5
5
  Home-page: https://g2hoyqcmh4.feishu.cn/wiki/Jgt1wxlKniveYQkqCgbcJHsMnoe
6
6
  Classifier: Intended Audience :: Developers
@@ -1,16 +1,16 @@
1
- nsqdriver/NS_DDS_v3.py,sha256=ypPG_7E7wSlLwJWi1x8M_PveJDv8lge7y7CFL9Yf058,21794
1
+ nsqdriver/NS_DDS_v3.py,sha256=dl78gjy0Ws41QSfi5kRk8tRZI9yMFxbjiX2K1Topotw,16564
2
2
  nsqdriver/NS_CST.py,sha256=_QYCjg1YglIJ4YVmxvISqvy5rExWGlMhyrK9zYIRbRY,7877
3
3
  nsqdriver/NS_MCI.py,sha256=cLvnEtqVnzlrKSbcVzXJOG72K4_RSGLGNjxW5KmPtMI,21903
4
4
  nsqdriver/common.py,sha256=IHfShqgNN3THbe7KD7ICdfFY7JKC_kQj0_KJk-449gQ,499
5
- nsqdriver/__init__.py,sha256=5eARPvOu4Pe_nagSOTFqxv3a5cTy_3SLPZW5AGWMJ-s,373
5
+ nsqdriver/__init__.py,sha256=19HDjGlgkd2RElhpltVzn7E2dFvRNesFLPVINv4UP2Q,373
6
6
  nsqdriver/NS_QSYNC.py,sha256=ZSOznM5PMlOm89rWAMiqVyZLWn3y0lTQp3d1z6LnkV0,27121
7
7
  nsqdriver/nswave/kernel.pyi,sha256=Fs-_v2XT0UpRSSoogwIbejXna6uAfceYv41PyL2m-NM,1952
8
8
  nsqdriver/nswave/_checkers.pyi,sha256=h_lMi6vWZ4SYe_5GDyOuYNbzL1nVDGvy4E-nAb9tzsk,1412
9
9
  nsqdriver/nswave/_checkers.cpython-310-aarch64-linux-gnu.so,sha256=8c4qefipItMF6rbWtQBby1eBA1cE8eDedAJgMrUCPmA,240624
10
10
  nsqdriver/nswave/_translate.cpython-310-aarch64-linux-gnu.so,sha256=E2S0rnPLJlKg0cpRQHg6ixmKg78TbgOQCgOhSvOTVHM,151096
11
- nsqdriver/nswave/_ir.cpython-310-aarch64-linux-gnu.so,sha256=HFBpIytxueKHJTaGgdoh8ktkUoomC3DJ1GMmhqGSAgo,471960
11
+ nsqdriver/nswave/_ir.cpython-310-aarch64-linux-gnu.so,sha256=JxOwhCw9CZMz4Ixxz290mNLzumOkLDHpdXPtPgjpX50,438872
12
12
  nsqdriver/nswave/_ir_pass.pyi,sha256=wYOesXdZnTlZ0Ph06VVP65uc6n-k8gywEkHaaSSyPmQ,282
13
- nsqdriver/nswave/_functions.cpython-310-aarch64-linux-gnu.so,sha256=hSWPgdCsj5scgrFk5W8m4yCD0UNX97p9skRWPQ322yY,211040
13
+ nsqdriver/nswave/_functions.cpython-310-aarch64-linux-gnu.so,sha256=bj2Sqt3T3VV9JeaDBzDcaPfwKdQ2dSDFFphb-0Ds2Tk,139168
14
14
  nsqdriver/nswave/_errors.pyi,sha256=pYt3VZxWgXWVNGvbQ3g6IwxItCmPcW_EfN3l1YfLk2o,640
15
15
  nsqdriver/nswave/_ir.pyi,sha256=tC4iVf0dUOevZhwbCm77pDk87PbaIbhpNGHFamNdx5k,7130
16
16
  nsqdriver/nswave/_rules.cpython-310-aarch64-linux-gnu.so,sha256=v3DkIGI8vs5rmtEHMcEkgJjxIPVtAhB1PJiSoafdHaQ,255592
@@ -23,17 +23,17 @@ nsqdriver/nswave/_asm.pyi,sha256=kayOim0cSLXwSCAAXkMu0-IsLusY95dTFORTNrHzFo8,274
23
23
  nsqdriver/nswave/_ir_pass.cpython-310-aarch64-linux-gnu.so,sha256=YLiP9yUW9acbQ5iKOgQXVcX1O_K_nEeMIiqifFIJkZk,69392
24
24
  nsqdriver/nswave/__init__.py,sha256=1-DljzsjzvnHRnD0tlpVTWSZjHtlCnP-yRirOJuG8Co,293
25
25
  nsqdriver/nswave/_optimizations.pyi,sha256=y6ytCU8SSlD4mzXe-V2GjFrvpafumK388pgxHuxDBnI,492
26
- nsqdriver/nswave/kernel.cpython-310-aarch64-linux-gnu.so,sha256=_uKXX3w-F_Qe3HZmhVkO1E2nB6HeZt7YcUsyPssNYek,374376
26
+ nsqdriver/nswave/kernel.cpython-310-aarch64-linux-gnu.so,sha256=F11vcgIpz0ui80lO8cy4Wb2fImHxWRi3czU4qWxLK-A,364584
27
27
  nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  nsqdriver/wrapper/ND_NSMCI.py,sha256=gTyrDObhbggl35V_q-kpDoPsfttIEnDFc6f0-pk_P0k,6288
29
29
  nsqdriver/wrapper/AWG_ADC.py,sha256=ktQkORc8VZUFkNg6huC7DKIkvZyHYXRolQ2SAA89JnM,19199
30
- nsqdriver/compiler/assembler.cpython-310-aarch64-linux-gnu.so,sha256=GM9mMOdSK66SGOGM3Uop-3lf5Wz0gPg5-jCJi1FhSlk,539752
30
+ nsqdriver/compiler/assembler.cpython-310-aarch64-linux-gnu.so,sha256=0HhmgGGSTCWnahADdfT65vmtKOP_oWay4dpQI1MXCi8,507472
31
31
  nsqdriver/compiler/ns_wave.cpython-310-aarch64-linux-gnu.so,sha256=P3ZkQNpIsIjAR0EzDFvCoVHA52KzVmF_DmllxknbuiY,348736
32
32
  nsqdriver/compiler/py_wave_asm.cpython-310-aarch64-linux-gnu.so,sha256=1MlIGX9RxUAXCCz1GzrRoAyDvxzh2tYY8bl7vXmpvtM,482560
33
33
  nsqdriver/compiler/py_wave_asm.pyi,sha256=w2PWlBrns4tfDYjTLyOBfNgjjjVA_xzMJZYYyDPKce4,656
34
34
  nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  nsqdriver/compiler/ns_wave.pyi,sha256=JQiE_9HqCzm00bS6c2JaaIXwt7xN_x9XXax-BBrE7-o,3824
36
- nsqdriver-0.0.203.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
37
- nsqdriver-0.0.203.dist-info/WHEEL,sha256=vh2oQsbkNC287YHyuh6hScUY27fsR8EWsF9NYy1tH2k,153
38
- nsqdriver-0.0.203.dist-info/METADATA,sha256=66YPJUo2O3fBWDhHez9698eqdmAwRPPt47Nz43Qn89c,4276
39
- nsqdriver-0.0.203.dist-info/RECORD,,
36
+ nsqdriver-0.12.11.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
37
+ nsqdriver-0.12.11.dist-info/WHEEL,sha256=vh2oQsbkNC287YHyuh6hScUY27fsR8EWsF9NYy1tH2k,153
38
+ nsqdriver-0.12.11.dist-info/METADATA,sha256=5hsgga0-SYpUUY14UYHb9qNreofnFYqPhXrrnzjVgr8,4276
39
+ nsqdriver-0.12.11.dist-info/RECORD,,