qiclib 2.1.0__tar.gz → 2.2.0__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 (418) hide show
  1. qiclib-2.2.0/.gitlab-ci.yml +154 -0
  2. qiclib-2.2.0/.pre-commit-config.yaml +16 -0
  3. qiclib-2.2.0/.python-version +1 -0
  4. qiclib-2.2.0/.vscode/extensions.json +13 -0
  5. qiclib-2.2.0/.vscode/settings.json +15 -0
  6. {qiclib-2.1.0 → qiclib-2.2.0}/PKG-INFO +1 -1
  7. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/_version.py +16 -3
  8. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_jobs.py +20 -21
  9. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_types.py +10 -0
  10. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_var_definitions.py +7 -1
  11. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/base.py +8 -1
  12. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/data_provider.py +1 -4
  13. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/controller.py +1 -0
  14. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/unitcell.py +19 -5
  15. qiclib-2.2.0/src/qiclib/packages/grpc/ipe_servicehub_protos/.git +1 -0
  16. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/memmap.proto +0 -1
  17. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pimc.proto +20 -20
  18. qiclib-2.2.0/src/qiclib/packages/grpc/memmap_pb2.py +50 -0
  19. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/memmap_pb2.pyi +0 -1
  20. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pimc_pb2_grpc.py +20 -20
  21. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_data_handlers.py +9 -8
  22. qiclib-2.1.0/.gitlab-ci.yml +0 -89
  23. qiclib-2.1.0/.pre-commit-config.yaml +0 -12
  24. qiclib-2.1.0/.vscode/extensions.json +0 -7
  25. qiclib-2.1.0/.vscode/settings.json +0 -15
  26. qiclib-2.1.0/src/qiclib/packages/grpc/memmap_pb2.py +0 -51
  27. {qiclib-2.1.0 → qiclib-2.2.0}/.git-blame-ignore-revs +0 -0
  28. {qiclib-2.1.0 → qiclib-2.2.0}/.gitignore +0 -0
  29. {qiclib-2.1.0 → qiclib-2.2.0}/.gitmodules +0 -0
  30. {qiclib-2.1.0 → qiclib-2.2.0}/.pylintrc +0 -0
  31. {qiclib-2.1.0 → qiclib-2.2.0}/COPYING +0 -0
  32. {qiclib-2.1.0 → qiclib-2.2.0}/README.md +0 -0
  33. {qiclib-2.1.0 → qiclib-2.2.0}/docs/Makefile +0 -0
  34. {qiclib-2.1.0 → qiclib-2.2.0}/docs/_templates/module.rst_t +0 -0
  35. {qiclib-2.1.0 → qiclib-2.2.0}/docs/_templates/package.rst_t +0 -0
  36. {qiclib-2.1.0 → qiclib-2.2.0}/docs/_templates/toc.rst_t +0 -0
  37. {qiclib-2.1.0 → qiclib-2.2.0}/docs/assets/QiCode_Tutorial.pdf +0 -0
  38. {qiclib-2.1.0 → qiclib-2.2.0}/docs/conf.py +0 -0
  39. {qiclib-2.1.0 → qiclib-2.2.0}/docs/experiments.rst +0 -0
  40. {qiclib-2.1.0 → qiclib-2.2.0}/docs/getting_started.rst +0 -0
  41. {qiclib-2.1.0 → qiclib-2.2.0}/docs/index.rst +0 -0
  42. {qiclib-2.1.0 → qiclib-2.2.0}/docs/qi_code.rst +0 -0
  43. {qiclib-2.1.0 → qiclib-2.2.0}/docs/reference.rst +0 -0
  44. {qiclib-2.1.0 → qiclib-2.2.0}/docs/serve-doc.py +0 -0
  45. {qiclib-2.1.0 → qiclib-2.2.0}/docs/troubleshooting.rst +0 -0
  46. {qiclib-2.1.0 → qiclib-2.2.0}/examples/digital_trigger.ipynb +0 -0
  47. {qiclib-2.1.0 → qiclib-2.2.0}/examples/pulses/pulse_player_examples.ipynb +0 -0
  48. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Deutsch Algorithm.ipynb +0 -0
  49. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Gover's-Algorithm.ipynb +0 -0
  50. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/2-qubit-quantum-algorithms/Phase Kickback.ipynb +0 -0
  51. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum Entanglement.ipynb +0 -0
  52. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum_Key_Distribution_protocol.ipynb +0 -0
  53. {qiclib-2.1.0 → qiclib-2.2.0}/examples/qiskit/Running_Qiskit_circuits_on_QiController_tutorial.ipynb +0 -0
  54. {qiclib-2.1.0 → qiclib-2.2.0}/examples/resonators/Resonators_Test_qiclib_2024_04_29.ipynb +0 -0
  55. {qiclib-2.1.0 → qiclib-2.2.0}/examples/rfdc/interfacing_with_the_directrf.ipynb +0 -0
  56. {qiclib-2.1.0 → qiclib-2.2.0}/examples/rfdc/interfacing_with_the_rfdc.ipynb +0 -0
  57. {qiclib-2.1.0 → qiclib-2.2.0}/pyproject.toml +0 -0
  58. {qiclib-2.1.0 → qiclib-2.2.0}/ruff.toml +0 -0
  59. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/__init__.py +0 -0
  60. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/__init__.py +0 -0
  61. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/analysis/__init__.py +0 -0
  62. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/analysis/qi_insert_mem_parameters.py +0 -0
  63. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_command.py +0 -0
  64. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_dataflow.py +0 -0
  65. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_prog_builder.py +0 -0
  66. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_pulse.py +0 -0
  67. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_result.py +0 -0
  68. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_sample.py +0 -0
  69. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_seq_instructions.py +0 -0
  70. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_sequencer.py +0 -0
  71. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_simulate.py +0 -0
  72. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_util.py +0 -0
  73. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/code/qi_visitor.py +0 -0
  74. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/coding/__init__.py +0 -0
  75. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/coding/sequencercode.py +0 -0
  76. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/SecondToneSweepR5.py +0 -0
  77. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/__init__.py +0 -0
  78. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/active_cooling_t1.py +0 -0
  79. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/active_reset_t1.py +0 -0
  80. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/base.py +0 -0
  81. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/benchmarking.py +0 -0
  82. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/collection.py +0 -0
  83. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/correlation_calibration.py +0 -0
  84. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/correlation_conv_all.py +0 -0
  85. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/g1_correlation.py +0 -0
  86. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/g1_correlation_conv.py +0 -0
  87. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/g1_meas_setuptest.py +0 -0
  88. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/g2_correlation.py +0 -0
  89. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/g2_correlation_conv.py +0 -0
  90. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/gx_correlation_base.py +0 -0
  91. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/inverted_t1.py +0 -0
  92. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/iq_clouds_multi_qfb.py +0 -0
  93. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/iq_clouds_qfb_decay.py +0 -0
  94. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/iq_clouds_ramsey.py +0 -0
  95. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/iq_clouds_ringup.py +0 -0
  96. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/multi_pi_t1.py +0 -0
  97. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/__init__.py +0 -0
  98. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/collection.py +0 -0
  99. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/data_handler.py +0 -0
  100. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/fit_utils.py +0 -0
  101. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/init_readout.py +0 -0
  102. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/qubit_times.py +0 -0
  103. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qicode/qubit_times_qkit.py +0 -0
  104. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/qkit_virtual_awg.py +0 -0
  105. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/quantum_jumps_long.py +0 -0
  106. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rabi_R5PG.py +0 -0
  107. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rabi_drag.py +0 -0
  108. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rabi_short.py +0 -0
  109. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/readout_spectr.py +0 -0
  110. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/resonator_ringup.py +0 -0
  111. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/resonator_ringup_window.py +0 -0
  112. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/__init__.py +0 -0
  113. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/active_cooling.c +0 -0
  114. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/average_trace.c +0 -0
  115. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/base_experiment_task.c +0 -0
  116. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/__init__.py +0 -0
  117. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/calibration.c +0 -0
  118. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/correlation_conv.c +0 -0
  119. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation.c +0 -0
  120. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation_conv.c +0 -0
  121. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_meas_setuptest.c +0 -0
  122. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation.c +0 -0
  123. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation_conv.c +0 -0
  124. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/interleaved.c +0 -0
  125. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/interleaved_multi.c +0 -0
  126. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/iq_clouds.c +0 -0
  127. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/optimize_rec_offset.c +0 -0
  128. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/__init__.py +0 -0
  129. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/averaging.c +0 -0
  130. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/iq_collect.c +0 -0
  131. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/state_collect.c +0 -0
  132. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/state_count.c +0 -0
  133. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qicode/timetrace.c +0 -0
  134. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps.c +0 -0
  135. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_multi.c +0 -0
  136. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_new.c +0 -0
  137. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/qubit_freq_sweep_task.c +0 -0
  138. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/rabi_r5.c +0 -0
  139. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/__init__.py +0 -0
  140. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/copy_test.c +0 -0
  141. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/empty.c +0 -0
  142. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/shift_test.c +0 -0
  143. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/stream_test.c +0 -0
  144. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/test_databox.c +0 -0
  145. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/time_test_code.c +0 -0
  146. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/timing_test.c +0 -0
  147. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_axi.c +0 -0
  148. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_single.c +0 -0
  149. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/rtos_tasks/trace_fft.c +0 -0
  150. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/experiment/stream_test.py +0 -0
  151. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/__init__.py +0 -0
  152. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/digital_trigger.py +0 -0
  153. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/direct_rf.py +0 -0
  154. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/pimc.py +0 -0
  155. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/platform_component.py +0 -0
  156. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/pulse_player.py +0 -0
  157. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/pulsegen.py +0 -0
  158. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/recording.py +0 -0
  159. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/rfdc.py +0 -0
  160. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/sequencer.py +0 -0
  161. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/servicehub.py +0 -0
  162. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/storage.py +0 -0
  163. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/taskrunner.py +0 -0
  164. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/hardware/vna.py +0 -0
  165. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/measurement/__init__.py +0 -0
  166. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/measurement/iq_fit.py +0 -0
  167. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/measurement/iq_plot.py +0 -0
  168. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/measurement/measure_iq.py +0 -0
  169. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/measurement/resonators.py +0 -0
  170. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/__init__.py +0 -0
  171. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/constants.py +0 -0
  172. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/.gitignore +0 -0
  173. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/__init__.py +0 -0
  174. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.py +0 -0
  175. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.pyi +0 -0
  176. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5672_5684_pb2_grpc.py +0 -0
  177. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5675_pb2.py +0 -0
  178. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5675_pb2.pyi +0 -0
  179. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad5675_pb2_grpc.py +0 -0
  180. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad7291_pb2.py +0 -0
  181. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad7291_pb2.pyi +0 -0
  182. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ad7291_pb2_grpc.py +0 -0
  183. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bench_pb2.py +0 -0
  184. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bench_pb2.pyi +0 -0
  185. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bench_pb2_grpc.py +0 -0
  186. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.py +0 -0
  187. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.pyi +0 -0
  188. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2_grpc.py +0 -0
  189. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.py +0 -0
  190. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.pyi +0 -0
  191. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/capreadoutchain_pb2_grpc.py +0 -0
  192. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/chip_info_pb2.py +0 -0
  193. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/chip_info_pb2.pyi +0 -0
  194. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/chip_info_pb2_grpc.py +0 -0
  195. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/datatypes_pb2.py +0 -0
  196. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/datatypes_pb2.pyi +0 -0
  197. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/datatypes_pb2_grpc.py +0 -0
  198. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/detector_emulator_pb2.py +0 -0
  199. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/detector_emulator_pb2.pyi +0 -0
  200. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/detector_emulator_pb2_grpc.py +0 -0
  201. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/digital_trigger_pb2.py +0 -0
  202. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/digital_trigger_pb2.pyi +0 -0
  203. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/digital_trigger_pb2_grpc.py +0 -0
  204. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/direct_rf_pb2.py +0 -0
  205. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/direct_rf_pb2.pyi +0 -0
  206. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/direct_rf_pb2_grpc.py +0 -0
  207. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dma_pb2.py +0 -0
  208. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dma_pb2.pyi +0 -0
  209. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dma_pb2_grpc.py +0 -0
  210. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dmacontroller_pb2.py +0 -0
  211. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dmacontroller_pb2.pyi +0 -0
  212. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/dmacontroller_pb2_grpc.py +0 -0
  213. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/erasynth_pb2.py +0 -0
  214. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/erasynth_pb2.pyi +0 -0
  215. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/erasynth_pb2_grpc.py +0 -0
  216. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/eventdetection_pb2.py +0 -0
  217. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/eventdetection_pb2.pyi +0 -0
  218. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/eventdetection_pb2_grpc.py +0 -0
  219. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/faultrec_pb2.py +0 -0
  220. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/faultrec_pb2.pyi +0 -0
  221. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/faultrec_pb2_grpc.py +0 -0
  222. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.py +0 -0
  223. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.pyi +0 -0
  224. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/firmwareupdate_pb2_grpc.py +0 -0
  225. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.py +0 -0
  226. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.pyi +0 -0
  227. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2_grpc.py +0 -0
  228. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.py +0 -0
  229. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.pyi +0 -0
  230. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2_grpc.py +0 -0
  231. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/healthmon_pb2.py +0 -0
  232. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/healthmon_pb2.pyi +0 -0
  233. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/healthmon_pb2_grpc.py +0 -0
  234. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.gitignore +0 -0
  235. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.vscode/extensions.json +0 -0
  236. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/CMakeLists.txt +0 -0
  237. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/README.md +0 -0
  238. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5672_5684.proto +0 -0
  239. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5675.proto +0 -0
  240. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad7291.proto +0 -0
  241. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bench.proto +0 -0
  242. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bidirectionalmixer.proto +0 -0
  243. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/build_protos.py +0 -0
  244. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/capreadoutchain.proto +0 -0
  245. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/chip_info.proto +0 -0
  246. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/datatypes.proto +0 -0
  247. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/detector_emulator.proto +0 -0
  248. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/digital_trigger.proto +0 -0
  249. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/direct_rf.proto +0 -0
  250. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dma.proto +0 -0
  251. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dmacontroller.proto +0 -0
  252. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/Doxyfile +0 -0
  253. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/clean_docs +0 -0
  254. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/create_docs +0 -0
  255. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/scripts/proto2cpp.py +0 -0
  256. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/erasynth.proto +0 -0
  257. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/eventdetection.proto +0 -0
  258. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/README.md +0 -0
  259. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/qic-dynamic-routing.ipynb +0 -0
  260. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/faultrec.proto +0 -0
  261. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/firmwareupdate.proto +0 -0
  262. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxramp_generator.proto +0 -0
  263. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxrampdemod.proto +0 -0
  264. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/healthmon.proto +0 -0
  265. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmk04208.proto +0 -0
  266. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmx2594.proto +0 -0
  267. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc2000_cfg.proto +0 -0
  268. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc5586.proto +0 -0
  269. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/matrixvectormultiplier.proto +0 -0
  270. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/mdnspublisher.proto +0 -0
  271. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multichannelddc.proto +0 -0
  272. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multilateration.proto +0 -0
  273. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/oscilloscope.proto +0 -0
  274. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pp_channelizer.proto +0 -0
  275. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulse_player.proto +0 -0
  276. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulsegen.proto +0 -0
  277. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_storage.proto +0 -0
  278. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_unitcell.proto +0 -0
  279. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rampgen.proto +0 -0
  280. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/recording.proto +0 -0
  281. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfdc.proto +0 -0
  282. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfpcbsuper.proto +0 -0
  283. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sequencer.proto +0 -0
  284. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/servicehubcontrol.proto +0 -0
  285. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/signalamplifier.proto +0 -0
  286. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/spectrum_analyzer.proto +0 -0
  287. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/stimulation.proto +0 -0
  288. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sysmon.proto +0 -0
  289. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/taskrunner.proto +0 -0
  290. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/tdmchannelmultipick.proto +0 -0
  291. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/vna.proto +0 -0
  292. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmk04208_pb2.py +0 -0
  293. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmk04208_pb2.pyi +0 -0
  294. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmk04208_pb2_grpc.py +0 -0
  295. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmx2594_pb2.py +0 -0
  296. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmx2594_pb2.pyi +0 -0
  297. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/lmx2594_pb2_grpc.py +0 -0
  298. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.py +0 -0
  299. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.pyi +0 -0
  300. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2_grpc.py +0 -0
  301. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc5586_pb2.py +0 -0
  302. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc5586_pb2.pyi +0 -0
  303. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/ltc5586_pb2_grpc.py +0 -0
  304. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.py +0 -0
  305. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.pyi +0 -0
  306. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2_grpc.py +0 -0
  307. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.py +0 -0
  308. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.pyi +0 -0
  309. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/mdnspublisher_pb2_grpc.py +0 -0
  310. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/memmap_pb2_grpc.py +0 -0
  311. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multichannelddc_pb2.py +0 -0
  312. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multichannelddc_pb2.pyi +0 -0
  313. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multichannelddc_pb2_grpc.py +0 -0
  314. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multilateration_pb2.py +0 -0
  315. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multilateration_pb2.pyi +0 -0
  316. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/multilateration_pb2_grpc.py +0 -0
  317. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/oscilloscope_pb2.py +0 -0
  318. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/oscilloscope_pb2.pyi +0 -0
  319. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/oscilloscope_pb2_grpc.py +0 -0
  320. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pimc_pb2.py +0 -0
  321. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pimc_pb2.pyi +0 -0
  322. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.py +0 -0
  323. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.pyi +0 -0
  324. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pp_channelizer_pb2_grpc.py +0 -0
  325. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulse_player_pb2.py +0 -0
  326. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulse_player_pb2.pyi +0 -0
  327. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulse_player_pb2_grpc.py +0 -0
  328. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulsegen_pb2.py +0 -0
  329. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulsegen_pb2.pyi +0 -0
  330. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/pulsegen_pb2_grpc.py +0 -0
  331. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_storage_pb2.py +0 -0
  332. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_storage_pb2.pyi +0 -0
  333. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_storage_pb2_grpc.py +0 -0
  334. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.py +0 -0
  335. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.pyi +0 -0
  336. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/qic_unitcell_pb2_grpc.py +0 -0
  337. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rampgen_pb2.py +0 -0
  338. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rampgen_pb2.pyi +0 -0
  339. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rampgen_pb2_grpc.py +0 -0
  340. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/recording_pb2.py +0 -0
  341. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/recording_pb2.pyi +0 -0
  342. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/recording_pb2_grpc.py +0 -0
  343. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfdc_pb2.py +0 -0
  344. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfdc_pb2.pyi +0 -0
  345. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfdc_pb2_grpc.py +0 -0
  346. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.py +0 -0
  347. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.pyi +0 -0
  348. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2_grpc.py +0 -0
  349. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sequencer_pb2.py +0 -0
  350. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sequencer_pb2.pyi +0 -0
  351. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sequencer_pb2_grpc.py +0 -0
  352. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.py +0 -0
  353. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.pyi +0 -0
  354. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2_grpc.py +0 -0
  355. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/signalamplifier_pb2.py +0 -0
  356. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/signalamplifier_pb2.pyi +0 -0
  357. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/signalamplifier_pb2_grpc.py +0 -0
  358. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.py +0 -0
  359. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.pyi +0 -0
  360. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2_grpc.py +0 -0
  361. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/stimulation_pb2.py +0 -0
  362. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/stimulation_pb2.pyi +0 -0
  363. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/stimulation_pb2_grpc.py +0 -0
  364. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sysmon_pb2.py +0 -0
  365. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sysmon_pb2.pyi +0 -0
  366. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/sysmon_pb2_grpc.py +0 -0
  367. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/taskrunner_pb2.py +0 -0
  368. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/taskrunner_pb2.pyi +0 -0
  369. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/taskrunner_pb2_grpc.py +0 -0
  370. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.py +0 -0
  371. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.pyi +0 -0
  372. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2_grpc.py +0 -0
  373. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/vna_pb2.py +0 -0
  374. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/vna_pb2.pyi +0 -0
  375. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/grpc/vna_pb2_grpc.py +0 -0
  376. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qiskit/QiController_backend.py +0 -0
  377. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qiskit/QiController_job.py +0 -0
  378. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qiskit/QiController_provider.py +0 -0
  379. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qiskit/QiGates.py +0 -0
  380. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qiskit/__init__.py +0 -0
  381. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/qkit_polyfill.py +0 -0
  382. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/servicehub.py +0 -0
  383. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/packages/utility.py +0 -0
  384. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/py.typed +0 -0
  385. {qiclib-2.1.0 → qiclib-2.2.0}/src/qiclib/state_estimation.py +0 -0
  386. {qiclib-2.1.0 → qiclib-2.2.0}/tests/data/amplitude_data.npy +0 -0
  387. {qiclib-2.1.0 → qiclib-2.2.0}/tests/data/iq_clouds_power_sweep.dat +0 -0
  388. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/__init__.py +0 -0
  389. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/digital_trigger.py +0 -0
  390. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/pimc.py +0 -0
  391. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/pulse_gen.py +0 -0
  392. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/recording.py +0 -0
  393. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/rfdc.py +0 -0
  394. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/sequencer.py +0 -0
  395. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/servicehub_control.py +0 -0
  396. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/taskrunner.py +0 -0
  397. {qiclib-2.1.0 → qiclib-2.2.0}/tests/mocks/unit_cell.py +0 -0
  398. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_calibrate_electrical_delay.py +0 -0
  399. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_experiments.py +0 -0
  400. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_files/properties_error.json +0 -0
  401. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_files/properties_ok.json +0 -0
  402. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_iq_fit.py +0 -0
  403. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_insert_mem_parameters.py +0 -0
  404. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_jobs.py +0 -0
  405. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_prog_builder.py +0 -0
  406. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_pulse.py +0 -0
  407. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_pulse_amplitude_warning.py +0 -0
  408. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_sample.py +0 -0
  409. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_seq_instructions.py +0 -0
  410. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_sequencer.py +0 -0
  411. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_types.py +0 -0
  412. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_util.py +0 -0
  413. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_var_definitions.py +0 -0
  414. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_qi_visitor.py +0 -0
  415. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_version.py +0 -0
  416. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_while_integration.py +0 -0
  417. {qiclib-2.1.0 → qiclib-2.2.0}/tests/test_while_loop.py +0 -0
  418. {qiclib-2.1.0 → qiclib-2.2.0}/uv.lock +0 -0
@@ -0,0 +1,154 @@
1
+ variables:
2
+ GIT_SUBMODULE_STRATEGY: recursive
3
+ GIT_SUBMODULE_FORCE_HTTPS: true
4
+ UV_VERSION: 0.9
5
+ PYTHON_VERSION: 3.9
6
+ BASE_LAYER: bookworm
7
+ UV_SYSTEM_PYTHON: 1
8
+ GITHUB_PUBLISH_USER: quantuminterfaceBot
9
+ GITHUB_PUBLISH_REPO: quantuminterface/qiclib
10
+
11
+ stages: [analysis, test, build, deploy]
12
+
13
+ default:
14
+ image: ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER
15
+
16
+ .base_ruff:
17
+ interruptible: true
18
+ before_script:
19
+ - export UV_TOOL_BIN_DIR=/usr/local/bin
20
+ - cd $CI_PROJECT_DIR
21
+
22
+ unit_tests:
23
+ extends: .base_ruff
24
+ stage: test
25
+ script:
26
+ - uv run pytest --junitxml tests.xml --cov=qiclib --cov-fail-under=50 --cov-report xml --cov-report term
27
+ coverage: "/TOTAL.+ ([0-9]{1,3}%)/"
28
+ artifacts:
29
+ when: always
30
+ paths:
31
+ - tests.xml
32
+ reports:
33
+ junit:
34
+ - tests.xml
35
+ coverage_report:
36
+ coverage_format: cobertura
37
+ path: coverage.xml
38
+
39
+ check_format:
40
+ extends: .base_ruff
41
+ stage: analysis
42
+ variables:
43
+ PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
44
+ cache:
45
+ paths:
46
+ - ${PRE_COMMIT_HOME}
47
+ script:
48
+ - git config --global --add safe.directory '*'
49
+ - uvx pre-commit run --all-files
50
+
51
+ check_mypy:
52
+ extends: .base_ruff
53
+ stage: analysis
54
+ script:
55
+ - uv run mypy src --junit-xml mypy.xml --install-types --non-interactive --check-untyped-defs
56
+ artifacts:
57
+ when: on_failure
58
+ paths:
59
+ - mypy.xml
60
+ reports:
61
+ junit: mypy.xml
62
+
63
+ check_ruff:
64
+ extends: .base_ruff
65
+ stage: analysis
66
+ script:
67
+ - uv run ruff check --output-format junit > ruff.xml
68
+ artifacts:
69
+ when: on_failure
70
+ paths:
71
+ - ruff.xml
72
+ reports:
73
+ junit: ruff.xml
74
+
75
+ pylint:
76
+ extends: .base_ruff
77
+ stage: analysis
78
+ before_script:
79
+ - mkdir -p public/badges
80
+ - echo undefined > public/badges/$CI_JOB_NAME.score
81
+ script:
82
+ - uv run pylint --exit-zero --output-format=text src | tee /tmp/pylint.txt
83
+ - sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' /tmp/pylint.txt > public/badges/$CI_JOB_NAME.score
84
+ - uv run --with pylint-gitlab pylint --exit-zero --output-format=pylint_gitlab.GitlabCodeClimateReporter src > codeclimate.json
85
+ after_script:
86
+ - uvx anybadge --overwrite --label $CI_JOB_NAME --value=$(cat public/badges/$CI_JOB_NAME.score) --file=public/badges/$CI_JOB_NAME.svg 4=red 6=orange 8=yellow 10=green
87
+ - |
88
+ echo "Your score is: $(cat public/badges/$CI_JOB_NAME.score)"
89
+ artifacts:
90
+ paths:
91
+ - public
92
+ reports:
93
+ codequality: codeclimate.json
94
+ when: always
95
+
96
+ build_project:
97
+ extends: .base_ruff
98
+ stage: build
99
+ script:
100
+ - uv build
101
+ - uvx twine check dist/*
102
+ artifacts:
103
+ paths:
104
+ - dist/
105
+ when: on_success
106
+
107
+ mirror_to_github:
108
+ stage: deploy
109
+ rules:
110
+ # Run only for tags matching semver like v1.2.3, v2.0.0-rc.1, v1.0.0+build123, etc.
111
+ - if: '$CI_COMMIT_TAG =~ /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/'
112
+ script:
113
+ - VERSION="$CI_COMMIT_TAG"
114
+ - echo "Preparing release $VERSION for GitHub mirror"
115
+
116
+ # Prepare a clean directory with the repository contents
117
+ - mkdir ../mirror
118
+ - git archive "$VERSION" | tar -x -C ../mirror
119
+ - cd ../mirror
120
+ - git init --initial-branch=main
121
+
122
+ # Git Identity
123
+ - git config user.email "quantuminterface@ipe.kit.edu"
124
+ - git config user.name "Quantuminterface Bot"
125
+
126
+ # Pull existing history from GitHub
127
+ - git remote add origin "https://${GITHUB_PUBLISH_USER}:${GITHUB_PUBLISH_TOKEN}@github.com/${GITHUB_PUBLISH_REPO}.git"
128
+ - git fetch origin main
129
+ - git checkout -B main
130
+ - git reset --soft origin/main
131
+
132
+ # Commit the new release snapshot
133
+ - git add -A
134
+ - git commit -m "Release $VERSION"
135
+
136
+ # Tag and push both branch and tag
137
+ - git tag "$VERSION"
138
+ - git push origin main
139
+ - git push origin "$VERSION"
140
+
141
+ publish_to_pypi:
142
+ stage: deploy
143
+ needs:
144
+ - build_project
145
+ rules:
146
+ - if: '$CI_COMMIT_TAG =~ /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/'
147
+ script:
148
+ - echo "Publishing version $CI_COMMIT_TAG to PyPI"
149
+
150
+ # Build the wheel and sdist
151
+ - uv build
152
+
153
+ # Publish to PyPI
154
+ - uv publish --token "$PYPI_PUBLISH_TOKEN"
@@ -0,0 +1,16 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ - repo: https://github.com/astral-sh/ruff-pre-commit
9
+ rev: v0.11.3
10
+ hooks:
11
+ # Run the linter.
12
+ - id: ruff
13
+ types_or: [ python, pyi, jupyter ]
14
+ args: [ --fix ]
15
+ # Run the formatter.
16
+ - id: ruff-format
@@ -0,0 +1 @@
1
+ 3.9
@@ -0,0 +1,13 @@
1
+ {
2
+ "recommendations": [
3
+ "charliermarsh.ruff",
4
+ "ms-python.python",
5
+ "ms-python.debugpy",
6
+ "tamasfe.even-better-toml",
7
+ "ms-toolsai.jupyter",
8
+ "donjayamanne.vscode-default-python-kernel",
9
+ "GitLab.gitlab-workflow",
10
+ "redhat.vscode-yaml",
11
+ "zxh404.vscode-proto3"
12
+ ]
13
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "editor.detectIndentation": false,
4
+ "editor.tabSize": 4,
5
+ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
6
+ "python.analysis.autoSearchPaths": true,
7
+ "python.analysis.extraPaths": [
8
+ "${workspaceFolder}"
9
+ ],
10
+ "python.testing.pytestEnabled": true,
11
+ "python.testing.unittestEnabled": false,
12
+ "python.testing.cwd": "${workspaceFolder}/tests",
13
+ "python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest",
14
+ "python.testing.autoTestDiscoverOnSaveEnabled": true
15
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qiclib
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Library to connect to Quantum Interface's QiController.
5
5
  Project-URL: Repository, https://github.com/quantuminterface/qiclib
6
6
  Author-email: Quantum Interface <quantuminterface@ipe.kit.edu>
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '2.1.0'
21
- __version_tuple__ = version_tuple = (2, 1, 0)
31
+ __version__ = version = '2.2.0'
32
+ __version_tuple__ = version_tuple = (2, 2, 0)
33
+
34
+ __commit_id__ = commit_id = None
@@ -75,6 +75,7 @@ from qiclib.experiment.qicode.data_handler import DataHandler
75
75
  from qiclib.experiment.qicode.data_provider import DataProvider
76
76
  from qiclib.hardware import digital_trigger
77
77
  from qiclib.hardware.taskrunner import TaskRunner
78
+ from qiclib.hardware.unitcell import DataCollection
78
79
 
79
80
  if TYPE_CHECKING:
80
81
  from qiclib.experiment.qicode.base import QiCodeExperiment
@@ -125,13 +126,13 @@ class QiCell:
125
126
  self._relevant_vars: set[_QiVariableBase] = set()
126
127
 
127
128
  # These attributes are determined by dataflow analyses
128
- self._initial_manip_freq: float = None
129
- self._initial_readout_freq: float = None
130
- self._initial_rec_offset: float = None
131
- self._initial_phase: float = None
132
- self._initial_amplitude: float = None
129
+ self._initial_manip_freq: float | None = None
130
+ self._initial_readout_freq: float | None = None
131
+ self._initial_rec_offset: float | None = None
132
+ self._initial_phase: float | None = None
133
+ self._initial_amplitude: float | None = None
133
134
 
134
- self._rec_length: int | float | QiCellProperty = None
135
+ self._rec_length: int | float | QiCellProperty | None = None
135
136
 
136
137
  self._properties: dict[str | QiCellProperty, Any] = {}
137
138
 
@@ -364,7 +365,7 @@ class QiCells:
364
365
  :raises RuntimeError: When the :python:`QiCells` object is instantiated outside a :python:`QiJob`
365
366
  """
366
367
 
367
- def __init__(self, num: int, job: QiJob = None) -> None:
368
+ def __init__(self, num: int, job: QiJob | None = None) -> None:
368
369
  self.cells = [QiCell(x) for x in range(num)]
369
370
  if job is None:
370
371
  QiJob.current()._register_cells(self.cells)
@@ -472,7 +473,7 @@ class _QiContextManager(ABC, Generic[_T]):
472
473
  """Base Class for If, Else, ForRange and Parallel.
473
474
  Defines functions for storing commands."""
474
475
 
475
- def __init__(self, command: _T | None) -> None:
476
+ def __init__(self, command: _T) -> None:
476
477
  super().__init__()
477
478
  self._command = command
478
479
 
@@ -488,7 +489,7 @@ class _QiContextManager(ABC, Generic[_T]):
488
489
  pass
489
490
 
490
491
 
491
- class If(_QiContextManager[QiCondition]):
492
+ class If(_QiContextManager[IfCommand]):
492
493
  """
493
494
  Add conditional logic to the program.
494
495
  If multiple cells are used inside the body, a synchronization between the cells takes place before the If.
@@ -555,11 +556,13 @@ class Else(_QiContextManager[None]):
555
556
  super().__init__(None)
556
557
 
557
558
  def __enter__(self):
558
- self.if_cmd = QiJob.current().commands[-1]
559
+ if_cmd = QiJob.current().commands[-1]
559
560
 
560
- if not isinstance(self.if_cmd, IfCommand):
561
+ if not isinstance(if_cmd, IfCommand):
561
562
  raise RuntimeError("Else is not preceded by If")
562
563
 
564
+ self.if_cmd = if_cmd
565
+
563
566
  QiJob.current()._open_new_context()
564
567
  return self
565
568
 
@@ -734,16 +737,12 @@ class QiVariable(_QiVariableBase):
734
737
  value=None,
735
738
  name=None,
736
739
  ) -> None:
737
- if type is int:
738
- type = QiType.NORMAL
739
- elif type is float:
740
- type = QiType.TIME
741
-
742
- super().__init__(type, value, name=name)
740
+ qi_type = QiType.convert_from(type)
741
+ super().__init__(qi_type, value, name=name)
743
742
  QiJob.current()._add_command(DeclareCommand(self))
744
743
  if self.value is not None:
745
- val = _QiConstValue(value)
746
- val._type_info.set_type(type, _TypeDefiningUse.VARIABLE_DEFINITION)
744
+ val = _QiConstValue(self.value)
745
+ val._type_info.set_type(qi_type, _TypeDefiningUse.VARIABLE_DEFINITION)
747
746
  QiJob.current()._add_command(AssignCommand(self, val))
748
747
 
749
748
 
@@ -1061,8 +1060,8 @@ class QiJob:
1061
1060
  averages: int = 1,
1062
1061
  cell_map: list[int] | None = None,
1063
1062
  coupling_map: list[int] | None = None,
1064
- data_collection=None,
1065
- use_taskrunner=False,
1063
+ data_collection: DataCollection | None = None,
1064
+ use_taskrunner: bool = False,
1066
1065
  ):
1067
1066
  """executes the job and returns the results
1068
1067
 
@@ -61,6 +61,16 @@ class QiType(Enum):
61
61
  Amplitude values are specified in floating point units from 0 to 1 and can be used in the Play/PlayReadout commands
62
62
  """
63
63
 
64
+ @classmethod
65
+ def convert_from(cls, py_type) -> QiType:
66
+ if isinstance(py_type, QiType):
67
+ return py_type
68
+ if py_type is int:
69
+ return QiType.NORMAL
70
+ if py_type is float:
71
+ return QiType.TIME
72
+ raise RuntimeError(f"passed type {py_type} cannot be converted to a QiType")
73
+
64
74
 
65
75
  class _TypeConstraintReason:
66
76
  pass
@@ -354,7 +354,7 @@ class _QiConstValue(QiExpression):
354
354
  QiType.PHASE,
355
355
  QiType.AMPLITUDE,
356
356
  )
357
- return self._given_value
357
+ return float(self._given_value)
358
358
 
359
359
  @property
360
360
  def value(self):
@@ -381,6 +381,12 @@ class _QiConstValue(QiExpression):
381
381
  assert self.type == QiType.FREQUENCY
382
382
  return util.conv_freq_to_nco_phase_inc(self._given_value)
383
383
 
384
+ def __int__(self):
385
+ return self.value
386
+
387
+ def __float__(self):
388
+ return self.float_value
389
+
384
390
  @property
385
391
  def contained_variables(self):
386
392
  return QiVariableSet()
@@ -40,6 +40,7 @@ from qiclib.experiment.qicode.data_provider import DataProvider
40
40
  from qiclib.hardware.controller import QiController
41
41
  from qiclib.hardware.pulsegen import TriggerSet
42
42
  from qiclib.hardware.taskrunner import TaskRunner
43
+ from qiclib.hardware.unitcell import DataCollection
43
44
  from qiclib.packages import utility as util
44
45
  from qiclib.packages.constants import CONTROLLER_SAMPLE_FREQUENCY_IN_HZ as samplerate
45
46
  from qiclib.packages.qkit_polyfill import SampleObject
@@ -437,7 +438,13 @@ class QiCodeExperiment(BaseExperiment):
437
438
  else:
438
439
  return [] # Empty (no recordings requested)
439
440
 
440
- def _record_internal_plugin(self, averages, cells, recordings, data_collection):
441
+ def _record_internal_plugin(
442
+ self,
443
+ averages: int,
444
+ cells: list[int],
445
+ recordings: list[int],
446
+ data_collection: DataCollection,
447
+ ):
441
448
  self._create_progress(averages, "Averages")
442
449
 
443
450
  def progress_callback(progress):
@@ -117,10 +117,7 @@ class _InternalPluginDataProvider(DataProvider):
117
117
 
118
118
  @staticmethod
119
119
  def _get_iq_cloud(data, index: int, recording_count: int) -> npt.NDArray[np.int32]:
120
- return data[
121
- index * (len(data) // recording_count) : (index + 1)
122
- * (len(data) // recording_count)
123
- ]
120
+ return data[index::recording_count]
124
121
 
125
122
  def get_iq_cloud_i(
126
123
  self, cell_index: int, index: int, recording_count: int
@@ -187,6 +187,7 @@ class QiController(PlatformComponent):
187
187
  0x38: "ZRF8",
188
188
  0x41: "ZCU216",
189
189
  0x51: "ZCU208",
190
+ 0x61: "iWave",
190
191
  }.get(self.platform_id)
191
192
 
192
193
  if self.platform_name is None:
@@ -60,7 +60,8 @@ from __future__ import annotations
60
60
 
61
61
  import sys
62
62
  from collections.abc import Iterable, Mapping
63
- from typing import TYPE_CHECKING
63
+ from copy import copy
64
+ from typing import TYPE_CHECKING, Literal
64
65
 
65
66
  import numpy as np
66
67
 
@@ -79,6 +80,11 @@ if TYPE_CHECKING:
79
80
  from qiclib.hardware.controller import QiController
80
81
 
81
82
 
83
+ DataCollection = Literal[
84
+ "average", "amp_pha", "iqcloud", "raw", "states", "counts", "quantum_jumps"
85
+ ]
86
+
87
+
82
88
  class UnitCell:
83
89
  """A single digital unit cell containing its internal modules as properties.
84
90
  The index serves as identifier in a List of UnitCells.
@@ -411,7 +417,7 @@ class UnitCells(PlatformComponent, Mapping):
411
417
  averages: int,
412
418
  cells: list[int],
413
419
  recordings: list[int],
414
- data_collection: str = "average",
420
+ data_collection: DataCollection = "average",
415
421
  progress_callback=None,
416
422
  ):
417
423
  """
@@ -435,7 +441,7 @@ class UnitCells(PlatformComponent, Mapping):
435
441
  mode = switch_dict.get(data_collection)
436
442
  if mode is None:
437
443
  raise Warning("Unknown data collection mode " + data_collection)
438
- experiment_results = []
444
+ experiment_results: proto.ExperimentResults = None
439
445
  for progress in self._stub.RunExperiment(
440
446
  proto.ExperimentParameters(
441
447
  mode=mode,
@@ -444,7 +450,15 @@ class UnitCells(PlatformComponent, Mapping):
444
450
  recordings=recordings,
445
451
  )
446
452
  ):
447
- experiment_results.extend(progress.results)
453
+ if len(progress.results) > 0:
454
+ if experiment_results is None:
455
+ experiment_results = copy(progress)
456
+ else:
457
+ for i, result in enumerate(progress.results):
458
+ experiment_results.results[i].MergeFrom(result)
459
+
448
460
  if progress_callback:
449
461
  progress_callback(progress.progress)
450
- return self._process_results(mode, experiment_results)
462
+ if experiment_results is None:
463
+ experiment_results = proto.ExperimentResults()
464
+ return self._process_results(mode, experiment_results.results)
@@ -0,0 +1 @@
1
+ gitdir: ../../../../../.git/modules/src/qiclib/packages/grpc/ipe_servicehub_protos
@@ -1,7 +1,6 @@
1
1
  syntax = "proto3";
2
2
 
3
3
  package memmap;
4
- import "datatypes.proto";
5
4
 
6
5
  service DevMemService {
7
6
  rpc Read (ReadRequest) returns (MemContent) {}
@@ -5,7 +5,7 @@ import "datatypes.proto";
5
5
 
6
6
  service PIMCService
7
7
  {
8
- /**
8
+ /*
9
9
  * @brief Issue reset in the firmware.
10
10
  *
11
11
  * This reset is given to the IP cores within the FPGA side.
@@ -18,7 +18,7 @@ service PIMCService
18
18
  */
19
19
  rpc SetReset(sdr.datatypes.Empty) returns (sdr.datatypes.Empty) {}
20
20
 
21
- /**
21
+ /*
22
22
  * @brief Read if system is busy.
23
23
  *
24
24
  * @param sdr.datatypes.Empty
@@ -26,7 +26,7 @@ service PIMCService
26
26
  */
27
27
  rpc GetBusy(sdr.datatypes.Empty) returns (sdr.datatypes.Bool) {}
28
28
 
29
- /**
29
+ /*
30
30
  * @brief Read if the system is fully initialized and ready to be operated.
31
31
  *
32
32
  * @param sdr.datatypes.Empty
@@ -34,7 +34,7 @@ service PIMCService
34
34
  */
35
35
  rpc GetReady(sdr.datatypes.Empty) returns (sdr.datatypes.Bool) {}
36
36
 
37
- /**
37
+ /*
38
38
  * @brief Set the software ready flag of the platform.
39
39
  *
40
40
  * @param sdr.datatypes.Empty
@@ -42,7 +42,7 @@ service PIMCService
42
42
  */
43
43
  rpc SetSWReady(sdr.datatypes.Empty) returns (sdr.datatypes.Empty) {}
44
44
 
45
- /**
45
+ /*
46
46
  * @brief Read the software ready flag from the platform.
47
47
  *
48
48
  * @param sdr.datatypes.Empty
@@ -50,7 +50,7 @@ service PIMCService
50
50
  */
51
51
  rpc GetSWReady(sdr.datatypes.Empty) returns (sdr.datatypes.Bool) {}
52
52
 
53
- /**
53
+ /*
54
54
  * @brief Set the reset done flag of the platform.
55
55
  *
56
56
  * @param sdr.datatypes.Empty
@@ -58,7 +58,7 @@ service PIMCService
58
58
  */
59
59
  rpc SetResetDone(sdr.datatypes.Empty) returns (sdr.datatypes.Empty) {}
60
60
 
61
- /**
61
+ /*
62
62
  * @brief Read the reset done flag from the platform.
63
63
  *
64
64
  * @param sdr.datatypes.Empty
@@ -66,7 +66,7 @@ service PIMCService
66
66
  */
67
67
  rpc GetResetDone(sdr.datatypes.Empty) returns (sdr.datatypes.Bool) {}
68
68
 
69
- /**
69
+ /*
70
70
  * @brief Returns Chip version of PIMC core.
71
71
  *
72
72
  * The ID Should be 0xFFFF, the version is iterated
@@ -77,7 +77,7 @@ service PIMCService
77
77
  */
78
78
  rpc GetChipVersion(sdr.datatypes.Empty) returns (sdr.datatypes.UInt) {}
79
79
 
80
- /**
80
+ /*
81
81
  * @brief Returns version of the core module from the platform.
82
82
  *
83
83
  * @param sdr.datatypes.Empty
@@ -85,7 +85,7 @@ service PIMCService
85
85
  */
86
86
  rpc GetModuleChipVersion(sdr.datatypes.Empty) returns (sdr.datatypes.UInt) {}
87
87
 
88
- /**
88
+ /*
89
89
  * @brief Returns struct containing pimcID, pimcVersion, projectID,
90
90
  * platformID, buildRevision and buildTime.
91
91
  *
@@ -94,7 +94,7 @@ service PIMCService
94
94
  */
95
95
  rpc GetInfo(sdr.datatypes.Empty) returns (Info) {}
96
96
 
97
- /**
97
+ /*
98
98
  * @brief Returns all Info data.
99
99
  *
100
100
  * @param sdr.datatypes.Empty
@@ -102,7 +102,7 @@ service PIMCService
102
102
  */
103
103
  rpc GetInfoString(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
104
104
 
105
- /**
105
+ /*
106
106
  * @brief Returns true if all clocks are in valid frequency range.
107
107
  *
108
108
  * @param sdr.datatypes.Empty
@@ -110,7 +110,7 @@ service PIMCService
110
110
  */
111
111
  rpc GetAllClocksValid(sdr.datatypes.Empty) returns (sdr.datatypes.Bool) {}
112
112
 
113
- /**
113
+ /*
114
114
  * @brief Returns String containing information about connected clocks.
115
115
  *
116
116
  * @param sdr.datatypes.Empty
@@ -118,7 +118,7 @@ service PIMCService
118
118
  */
119
119
  rpc GetClocksInfo(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
120
120
 
121
- /**
121
+ /*
122
122
  * @brief Returns String representing 16bit StatusInputs.
123
123
  *
124
124
  * @param sdr.datatypes.Empty
@@ -126,7 +126,7 @@ service PIMCService
126
126
  */
127
127
  rpc GetStatusInputs(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
128
128
 
129
- /**
129
+ /*
130
130
  * @brief Returns String representing 16bit ReadyMask.
131
131
  *
132
132
  * @param sdr.datatypes.Empty
@@ -134,7 +134,7 @@ service PIMCService
134
134
  */
135
135
  rpc GetReadyMask(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
136
136
 
137
- /**
137
+ /*
138
138
  * @brief Returns String representing 16bit ReadyState.
139
139
  *
140
140
  * @param sdr.datatypes.Empty
@@ -142,7 +142,7 @@ service PIMCService
142
142
  */
143
143
  rpc GetReadyState(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
144
144
 
145
- /**
145
+ /*
146
146
  * @brief Returns the status of the platform.
147
147
  *
148
148
  * The user can check if the platform is ready by reading the flag.
@@ -153,7 +153,7 @@ service PIMCService
153
153
  */
154
154
  rpc GetStatus(sdr.datatypes.Empty) returns (PIMCStatus) {}
155
155
 
156
- /**
156
+ /*
157
157
  * @brief \deprecated Returns Project containing projectId, platformId and
158
158
  * buildRevision.
159
159
  *
@@ -167,7 +167,7 @@ service PIMCService
167
167
  */
168
168
  rpc GetProject(sdr.datatypes.Empty) returns (Project) {}
169
169
 
170
- /**
170
+ /*
171
171
  * @brief \deprecated Returns buildTime in string format.
172
172
  *
173
173
  * The returned build time tells when the synthesis was started.
@@ -178,7 +178,7 @@ service PIMCService
178
178
  */
179
179
  rpc GetBuildTime(sdr.datatypes.Empty) returns (sdr.datatypes.String) {}
180
180
 
181
- /**
181
+ /*
182
182
  * @brief \deprecated Returns BoardInfo containing coreId, the Project and
183
183
  * BuildTime.
184
184
  *