qiclib 2.2.0__tar.gz → 2.4.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 (489) hide show
  1. {qiclib-2.2.0 → qiclib-2.4.0}/.gitlab-ci.yml +15 -13
  2. {qiclib-2.2.0 → qiclib-2.4.0}/.pre-commit-config.yaml +2 -2
  3. qiclib-2.4.0/.python-version +1 -0
  4. {qiclib-2.2.0 → qiclib-2.4.0}/.vscode/settings.json +2 -1
  5. {qiclib-2.2.0 → qiclib-2.4.0}/PKG-INFO +4 -3
  6. {qiclib-2.2.0 → qiclib-2.4.0}/pyproject.toml +11 -4
  7. qiclib-2.4.0/qicode/cpp/.gitignore +46 -0
  8. qiclib-2.4.0/qicode/cpp/CMakeLists.txt +68 -0
  9. qiclib-2.4.0/qicode/cpp/README.md +21 -0
  10. qiclib-2.4.0/qicode/cpp/conanfile.py +55 -0
  11. qiclib-2.4.0/qicode/proto/cell.proto +11 -0
  12. qiclib-2.4.0/qicode/proto/commands.proto +142 -0
  13. qiclib-2.4.0/qicode/proto/compiled_job.proto +57 -0
  14. qiclib-2.4.0/qicode/proto/expression.proto +74 -0
  15. qiclib-2.4.0/qicode/proto/job.proto +14 -0
  16. qiclib-2.4.0/qicode/proto/pulse.proto +36 -0
  17. qiclib-2.4.0/qicode/proto/types.proto +27 -0
  18. qiclib-2.4.0/qicode/proto/variables.proto +7 -0
  19. qiclib-2.4.0/qicode/python/README.md +9 -0
  20. qiclib-2.4.0/qicode/python/pyproject.toml +29 -0
  21. qiclib-2.4.0/qicode/python/src/qicode/__init__.py +103 -0
  22. qiclib-2.4.0/qicode/python/src/qicode/_callsite.py +20 -0
  23. qiclib-2.4.0/qicode/python/src/qicode/compiled_job.py +37 -0
  24. qiclib-2.4.0/qicode/python/src/qicode/proto/__init__.py +75 -0
  25. qiclib-2.4.0/qicode/python/src/qicode/proto/cell_pb2.py +34 -0
  26. qiclib-2.4.0/qicode/python/src/qicode/proto/cell_pb2.pyi +18 -0
  27. qiclib-2.4.0/qicode/python/src/qicode/proto/commands_pb2.py +74 -0
  28. qiclib-2.4.0/qicode/python/src/qicode/proto/commands_pb2.pyi +350 -0
  29. qiclib-2.4.0/qicode/python/src/qicode/proto/compiled_job_pb2.py +42 -0
  30. qiclib-2.4.0/qicode/python/src/qicode/proto/compiled_job_pb2.pyi +118 -0
  31. qiclib-2.4.0/qicode/python/src/qicode/proto/expression_pb2.py +52 -0
  32. qiclib-2.4.0/qicode/python/src/qicode/proto/expression_pb2.pyi +180 -0
  33. qiclib-2.4.0/qicode/python/src/qicode/proto/job_pb2.py +32 -0
  34. qiclib-2.4.0/qicode/python/src/qicode/proto/job_pb2.pyi +33 -0
  35. qiclib-2.4.0/qicode/python/src/qicode/proto/pulse_pb2.py +40 -0
  36. qiclib-2.4.0/qicode/python/src/qicode/proto/pulse_pb2.pyi +87 -0
  37. qiclib-2.4.0/qicode/python/src/qicode/proto/types_pb2.py +38 -0
  38. qiclib-2.4.0/qicode/python/src/qicode/proto/types_pb2.pyi +52 -0
  39. qiclib-2.4.0/qicode/python/src/qicode/proto/variables_pb2.py +34 -0
  40. qiclib-2.4.0/qicode/python/src/qicode/proto/variables_pb2.pyi +12 -0
  41. qiclib-2.4.0/qicode/python/src/qicode/qi_cell.py +77 -0
  42. qiclib-2.4.0/qicode/python/src/qicode/qi_command.py +458 -0
  43. qiclib-2.4.0/qicode/python/src/qicode/qi_expression.py +365 -0
  44. qiclib-2.4.0/qicode/python/src/qicode/qi_job.py +95 -0
  45. qiclib-2.4.0/qicode/python/src/qicode/qi_pulse.py +98 -0
  46. qiclib-2.4.0/qicode/python/src/qicode/qi_type.py +144 -0
  47. qiclib-2.4.0/qicode/python/test/test_callsite.py +34 -0
  48. qiclib-2.4.0/qicode/python/test/test_commands.py +89 -0
  49. qiclib-2.4.0/qicode/python/test/test_expressions.py +20 -0
  50. qiclib-2.4.0/qicode/python/test/test_str_methods.py +186 -0
  51. qiclib-2.4.0/qicode/python/test/test_types.py +17 -0
  52. qiclib-2.4.0/qicode/python/update_protos +7 -0
  53. {qiclib-2.2.0 → qiclib-2.4.0}/ruff.toml +1 -0
  54. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/_version.py +2 -2
  55. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/__init__.py +4 -1
  56. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/analysis/qi_insert_mem_parameters.py +39 -17
  57. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_command.py +108 -46
  58. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_dataflow.py +30 -12
  59. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_jobs.py +502 -615
  60. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_prog_builder.py +79 -74
  61. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_pulse.py +65 -40
  62. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_seq_instructions.py +359 -3
  63. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_sequencer.py +184 -39
  64. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_simulate.py +18 -13
  65. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_types.py +80 -47
  66. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_util.py +6 -6
  67. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_var_definitions.py +101 -48
  68. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_visitor.py +14 -3
  69. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/base.py +2 -2
  70. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/base.py +14 -10
  71. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/data_handler.py +2 -2
  72. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/fit_utils.py +1 -1
  73. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/init_readout.py +1 -1
  74. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/direct_rf.py +4 -0
  75. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/storage.py +14 -0
  76. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/unitcell.py +1 -1
  77. qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2.py +38 -0
  78. qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2.pyi +6 -0
  79. qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2_grpc.py +193 -0
  80. qiclib-2.4.0/src/qiclib/packages/grpc/bullkidcalintegration_pb2.py +37 -0
  81. qiclib-2.4.0/src/qiclib/packages/grpc/bullkidcalintegration_pb2_grpc.py +613 -0
  82. qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2.py +45 -0
  83. qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2.pyi +44 -0
  84. qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2_grpc.py +748 -0
  85. qiclib-2.4.0/src/qiclib/packages/grpc/dmacontroller_pb2.py +51 -0
  86. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dmacontroller_pb2.pyi +4 -2
  87. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/CMakeLists.txt +6 -0
  88. qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/b2b_controller.proto +17 -0
  89. qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/bullkidcalintegration.proto +22 -0
  90. qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/combgenerator.proto +161 -0
  91. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dmacontroller.proto +2 -1
  92. qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/lorentzian.proto +25 -0
  93. qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/multi_harmonic_detection.proto +260 -0
  94. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_storage.proto +20 -1
  95. qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2.py +39 -0
  96. qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2.pyi +14 -0
  97. qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2_grpc.py +442 -0
  98. qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2.py +41 -0
  99. qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2.pyi +24 -0
  100. qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2_grpc.py +1261 -0
  101. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2.py +9 -3
  102. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2.pyi +26 -0
  103. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2_grpc.py +86 -0
  104. qiclib-2.4.0/src/qiclib/packages/grpc/signalamplifier_pb2.pyi +5 -0
  105. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_provider.py +1 -1
  106. qiclib-2.4.0/src/qiclib/py.typed +0 -0
  107. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/__init__.py +2 -0
  108. qiclib-2.4.0/tests/mocks/storage.py +22 -0
  109. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_calibrate_electrical_delay.py +1 -1
  110. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_experiments.py +2 -0
  111. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_iq_fit.py +1 -1
  112. qiclib-2.4.0/tests/test_qi_array_types.py +157 -0
  113. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_insert_mem_parameters.py +51 -33
  114. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_jobs.py +215 -164
  115. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_prog_builder.py +98 -67
  116. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_pulse.py +28 -42
  117. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_pulse_amplitude_warning.py +7 -7
  118. qiclib-2.4.0/tests/test_qi_seq_instructions_from_str.py +386 -0
  119. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_sequencer.py +41 -36
  120. qiclib-2.4.0/tests/test_qi_types.py +424 -0
  121. qiclib-2.4.0/tests/test_qi_util.py +78 -0
  122. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_var_definitions.py +7 -9
  123. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_visitor.py +28 -8
  124. qiclib-2.4.0/tests/test_static_variables.py +132 -0
  125. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_while_integration.py +5 -4
  126. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_while_loop.py +1 -3
  127. qiclib-2.4.0/uv.lock +4220 -0
  128. qiclib-2.2.0/.python-version +0 -1
  129. qiclib-2.2.0/src/qiclib/packages/grpc/dmacontroller_pb2.py +0 -51
  130. qiclib-2.2.0/tests/test_qi_types.py +0 -443
  131. qiclib-2.2.0/tests/test_qi_util.py +0 -55
  132. qiclib-2.2.0/uv.lock +0 -4130
  133. {qiclib-2.2.0 → qiclib-2.4.0}/.git-blame-ignore-revs +0 -0
  134. {qiclib-2.2.0 → qiclib-2.4.0}/.gitignore +0 -0
  135. {qiclib-2.2.0 → qiclib-2.4.0}/.gitmodules +0 -0
  136. {qiclib-2.2.0 → qiclib-2.4.0}/.pylintrc +0 -0
  137. {qiclib-2.2.0 → qiclib-2.4.0}/.vscode/extensions.json +0 -0
  138. {qiclib-2.2.0 → qiclib-2.4.0}/COPYING +0 -0
  139. {qiclib-2.2.0 → qiclib-2.4.0}/README.md +0 -0
  140. {qiclib-2.2.0 → qiclib-2.4.0}/docs/Makefile +0 -0
  141. {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/module.rst_t +0 -0
  142. {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/package.rst_t +0 -0
  143. {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/toc.rst_t +0 -0
  144. {qiclib-2.2.0 → qiclib-2.4.0}/docs/assets/QiCode_Tutorial.pdf +0 -0
  145. {qiclib-2.2.0 → qiclib-2.4.0}/docs/conf.py +0 -0
  146. {qiclib-2.2.0 → qiclib-2.4.0}/docs/experiments.rst +0 -0
  147. {qiclib-2.2.0 → qiclib-2.4.0}/docs/getting_started.rst +0 -0
  148. {qiclib-2.2.0 → qiclib-2.4.0}/docs/index.rst +0 -0
  149. {qiclib-2.2.0 → qiclib-2.4.0}/docs/qi_code.rst +0 -0
  150. {qiclib-2.2.0 → qiclib-2.4.0}/docs/reference.rst +0 -0
  151. {qiclib-2.2.0 → qiclib-2.4.0}/docs/serve-doc.py +0 -0
  152. {qiclib-2.2.0 → qiclib-2.4.0}/docs/troubleshooting.rst +0 -0
  153. {qiclib-2.2.0 → qiclib-2.4.0}/examples/digital_trigger.ipynb +0 -0
  154. {qiclib-2.2.0 → qiclib-2.4.0}/examples/pulses/pulse_player_examples.ipynb +0 -0
  155. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Deutsch Algorithm.ipynb +0 -0
  156. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Gover's-Algorithm.ipynb +0 -0
  157. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Phase Kickback.ipynb +0 -0
  158. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum Entanglement.ipynb +0 -0
  159. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum_Key_Distribution_protocol.ipynb +0 -0
  160. {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/Running_Qiskit_circuits_on_QiController_tutorial.ipynb +0 -0
  161. {qiclib-2.2.0 → qiclib-2.4.0}/examples/resonators/Resonators_Test_qiclib_2024_04_29.ipynb +0 -0
  162. {qiclib-2.2.0 → qiclib-2.4.0}/examples/rfdc/interfacing_with_the_directrf.ipynb +0 -0
  163. {qiclib-2.2.0 → qiclib-2.4.0}/examples/rfdc/interfacing_with_the_rfdc.ipynb +0 -0
  164. {qiclib-2.2.0/src/qiclib → qiclib-2.4.0/qicode/python/src/qicode}/py.typed +0 -0
  165. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/__init__.py +0 -0
  166. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/analysis/__init__.py +0 -0
  167. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_result.py +0 -0
  168. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_sample.py +0 -0
  169. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/coding/__init__.py +0 -0
  170. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/coding/sequencercode.py +0 -0
  171. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/SecondToneSweepR5.py +0 -0
  172. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/__init__.py +0 -0
  173. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/active_cooling_t1.py +0 -0
  174. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/active_reset_t1.py +0 -0
  175. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/benchmarking.py +0 -0
  176. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/collection.py +0 -0
  177. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/correlation_calibration.py +0 -0
  178. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/correlation_conv_all.py +0 -0
  179. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_correlation.py +0 -0
  180. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_correlation_conv.py +0 -0
  181. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_meas_setuptest.py +0 -0
  182. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g2_correlation.py +0 -0
  183. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g2_correlation_conv.py +0 -0
  184. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/gx_correlation_base.py +0 -0
  185. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/inverted_t1.py +0 -0
  186. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_multi_qfb.py +0 -0
  187. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_qfb_decay.py +0 -0
  188. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_ramsey.py +0 -0
  189. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_ringup.py +0 -0
  190. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/multi_pi_t1.py +0 -0
  191. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/__init__.py +0 -0
  192. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/collection.py +0 -0
  193. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/data_provider.py +0 -0
  194. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/qubit_times.py +0 -0
  195. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/qubit_times_qkit.py +0 -0
  196. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qkit_virtual_awg.py +0 -0
  197. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/quantum_jumps_long.py +0 -0
  198. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_R5PG.py +0 -0
  199. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_drag.py +0 -0
  200. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_short.py +0 -0
  201. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/readout_spectr.py +0 -0
  202. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/resonator_ringup.py +0 -0
  203. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/resonator_ringup_window.py +0 -0
  204. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/__init__.py +0 -0
  205. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/active_cooling.c +0 -0
  206. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/average_trace.c +0 -0
  207. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/base_experiment_task.c +0 -0
  208. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/__init__.py +0 -0
  209. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/calibration.c +0 -0
  210. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/correlation_conv.c +0 -0
  211. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation.c +0 -0
  212. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation_conv.c +0 -0
  213. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_meas_setuptest.c +0 -0
  214. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation.c +0 -0
  215. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation_conv.c +0 -0
  216. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/interleaved.c +0 -0
  217. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/interleaved_multi.c +0 -0
  218. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/iq_clouds.c +0 -0
  219. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/optimize_rec_offset.c +0 -0
  220. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/__init__.py +0 -0
  221. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/averaging.c +0 -0
  222. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/iq_collect.c +0 -0
  223. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/state_collect.c +0 -0
  224. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/state_count.c +0 -0
  225. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/timetrace.c +0 -0
  226. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps.c +0 -0
  227. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_multi.c +0 -0
  228. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_new.c +0 -0
  229. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qubit_freq_sweep_task.c +0 -0
  230. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/rabi_r5.c +0 -0
  231. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/__init__.py +0 -0
  232. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/copy_test.c +0 -0
  233. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/empty.c +0 -0
  234. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/shift_test.c +0 -0
  235. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/stream_test.c +0 -0
  236. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/test_databox.c +0 -0
  237. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/time_test_code.c +0 -0
  238. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test.c +0 -0
  239. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_axi.c +0 -0
  240. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_single.c +0 -0
  241. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/trace_fft.c +0 -0
  242. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/stream_test.py +0 -0
  243. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/__init__.py +0 -0
  244. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/controller.py +0 -0
  245. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/digital_trigger.py +0 -0
  246. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pimc.py +0 -0
  247. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/platform_component.py +0 -0
  248. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pulse_player.py +0 -0
  249. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pulsegen.py +0 -0
  250. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/recording.py +0 -0
  251. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/rfdc.py +0 -0
  252. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/sequencer.py +0 -0
  253. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/servicehub.py +0 -0
  254. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/taskrunner.py +0 -0
  255. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/vna.py +0 -0
  256. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/__init__.py +0 -0
  257. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/iq_fit.py +0 -0
  258. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/iq_plot.py +0 -0
  259. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/measure_iq.py +0 -0
  260. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/resonators.py +0 -0
  261. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/__init__.py +0 -0
  262. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/constants.py +0 -0
  263. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/.gitignore +0 -0
  264. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/__init__.py +0 -0
  265. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.py +0 -0
  266. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.pyi +0 -0
  267. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2_grpc.py +0 -0
  268. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2.py +0 -0
  269. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2.pyi +0 -0
  270. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2_grpc.py +0 -0
  271. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2.py +0 -0
  272. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2.pyi +0 -0
  273. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2_grpc.py +0 -0
  274. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2.py +0 -0
  275. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2.pyi +0 -0
  276. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2_grpc.py +0 -0
  277. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.py +0 -0
  278. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.pyi +0 -0
  279. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2_grpc.py +0 -0
  280. /qiclib-2.2.0/src/qiclib/packages/grpc/detector_emulator_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/bullkidcalintegration_pb2.pyi +0 -0
  281. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.py +0 -0
  282. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.pyi +0 -0
  283. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2_grpc.py +0 -0
  284. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2.py +0 -0
  285. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2.pyi +0 -0
  286. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2_grpc.py +0 -0
  287. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2.py +0 -0
  288. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2.pyi +0 -0
  289. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2_grpc.py +0 -0
  290. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/detector_emulator_pb2.py +0 -0
  291. /qiclib-2.2.0/src/qiclib/packages/grpc/erasynth_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/detector_emulator_pb2.pyi +0 -0
  292. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/detector_emulator_pb2_grpc.py +0 -0
  293. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2.py +0 -0
  294. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2.pyi +0 -0
  295. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2_grpc.py +0 -0
  296. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2.py +0 -0
  297. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2.pyi +0 -0
  298. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2_grpc.py +0 -0
  299. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2.py +0 -0
  300. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2.pyi +0 -0
  301. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2_grpc.py +0 -0
  302. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dmacontroller_pb2_grpc.py +0 -0
  303. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/erasynth_pb2.py +0 -0
  304. /qiclib-2.2.0/src/qiclib/packages/grpc/healthmon_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/erasynth_pb2.pyi +0 -0
  305. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/erasynth_pb2_grpc.py +0 -0
  306. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2.py +0 -0
  307. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2.pyi +0 -0
  308. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2_grpc.py +0 -0
  309. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2.py +0 -0
  310. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2.pyi +0 -0
  311. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2_grpc.py +0 -0
  312. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.py +0 -0
  313. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.pyi +0 -0
  314. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2_grpc.py +0 -0
  315. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.py +0 -0
  316. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.pyi +0 -0
  317. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2_grpc.py +0 -0
  318. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.py +0 -0
  319. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.pyi +0 -0
  320. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2_grpc.py +0 -0
  321. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/healthmon_pb2.py +0 -0
  322. /qiclib-2.2.0/src/qiclib/packages/grpc/signalamplifier_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/healthmon_pb2.pyi +0 -0
  323. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/healthmon_pb2_grpc.py +0 -0
  324. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.git +0 -0
  325. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.gitignore +0 -0
  326. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.vscode/extensions.json +0 -0
  327. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/README.md +0 -0
  328. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5672_5684.proto +0 -0
  329. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5675.proto +0 -0
  330. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad7291.proto +0 -0
  331. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bench.proto +0 -0
  332. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bidirectionalmixer.proto +0 -0
  333. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/build_protos.py +0 -0
  334. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/capreadoutchain.proto +0 -0
  335. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/chip_info.proto +0 -0
  336. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/datatypes.proto +0 -0
  337. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/detector_emulator.proto +0 -0
  338. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/digital_trigger.proto +0 -0
  339. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/direct_rf.proto +0 -0
  340. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dma.proto +0 -0
  341. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/Doxyfile +0 -0
  342. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/clean_docs +0 -0
  343. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/create_docs +0 -0
  344. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/scripts/proto2cpp.py +0 -0
  345. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/erasynth.proto +0 -0
  346. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/eventdetection.proto +0 -0
  347. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/README.md +0 -0
  348. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/qic-dynamic-routing.ipynb +0 -0
  349. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/faultrec.proto +0 -0
  350. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/firmwareupdate.proto +0 -0
  351. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxramp_generator.proto +0 -0
  352. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxrampdemod.proto +0 -0
  353. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/healthmon.proto +0 -0
  354. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmk04208.proto +0 -0
  355. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmx2594.proto +0 -0
  356. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc2000_cfg.proto +0 -0
  357. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc5586.proto +0 -0
  358. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/matrixvectormultiplier.proto +0 -0
  359. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/mdnspublisher.proto +0 -0
  360. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/memmap.proto +0 -0
  361. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multichannelddc.proto +0 -0
  362. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multilateration.proto +0 -0
  363. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/oscilloscope.proto +0 -0
  364. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pimc.proto +0 -0
  365. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pp_channelizer.proto +0 -0
  366. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulse_player.proto +0 -0
  367. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulsegen.proto +0 -0
  368. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_unitcell.proto +0 -0
  369. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rampgen.proto +0 -0
  370. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/recording.proto +0 -0
  371. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfdc.proto +0 -0
  372. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfpcbsuper.proto +0 -0
  373. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sequencer.proto +0 -0
  374. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/servicehubcontrol.proto +0 -0
  375. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/signalamplifier.proto +0 -0
  376. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/spectrum_analyzer.proto +0 -0
  377. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/stimulation.proto +0 -0
  378. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sysmon.proto +0 -0
  379. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/taskrunner.proto +0 -0
  380. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/tdmchannelmultipick.proto +0 -0
  381. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/vna.proto +0 -0
  382. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2.py +0 -0
  383. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2.pyi +0 -0
  384. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2_grpc.py +0 -0
  385. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2.py +0 -0
  386. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2.pyi +0 -0
  387. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2_grpc.py +0 -0
  388. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.py +0 -0
  389. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.pyi +0 -0
  390. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2_grpc.py +0 -0
  391. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2.py +0 -0
  392. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2.pyi +0 -0
  393. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2_grpc.py +0 -0
  394. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.py +0 -0
  395. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.pyi +0 -0
  396. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2_grpc.py +0 -0
  397. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.py +0 -0
  398. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.pyi +0 -0
  399. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2_grpc.py +0 -0
  400. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2.py +0 -0
  401. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2.pyi +0 -0
  402. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2_grpc.py +0 -0
  403. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2.py +0 -0
  404. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2.pyi +0 -0
  405. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2_grpc.py +0 -0
  406. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2.py +0 -0
  407. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2.pyi +0 -0
  408. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2_grpc.py +0 -0
  409. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2.py +0 -0
  410. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2.pyi +0 -0
  411. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2_grpc.py +0 -0
  412. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2.py +0 -0
  413. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2.pyi +0 -0
  414. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2_grpc.py +0 -0
  415. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.py +0 -0
  416. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.pyi +0 -0
  417. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2_grpc.py +0 -0
  418. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2.py +0 -0
  419. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2.pyi +0 -0
  420. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2_grpc.py +0 -0
  421. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2.py +0 -0
  422. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2.pyi +0 -0
  423. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2_grpc.py +0 -0
  424. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.py +0 -0
  425. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.pyi +0 -0
  426. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2_grpc.py +0 -0
  427. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2.py +0 -0
  428. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2.pyi +0 -0
  429. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2_grpc.py +0 -0
  430. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2.py +0 -0
  431. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2.pyi +0 -0
  432. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2_grpc.py +0 -0
  433. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2.py +0 -0
  434. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2.pyi +0 -0
  435. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2_grpc.py +0 -0
  436. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.py +0 -0
  437. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.pyi +0 -0
  438. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2_grpc.py +0 -0
  439. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2.py +0 -0
  440. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2.pyi +0 -0
  441. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2_grpc.py +0 -0
  442. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.py +0 -0
  443. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.pyi +0 -0
  444. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2_grpc.py +0 -0
  445. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/signalamplifier_pb2.py +0 -0
  446. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/signalamplifier_pb2_grpc.py +0 -0
  447. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.py +0 -0
  448. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.pyi +0 -0
  449. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2_grpc.py +0 -0
  450. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2.py +0 -0
  451. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2.pyi +0 -0
  452. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2_grpc.py +0 -0
  453. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2.py +0 -0
  454. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2.pyi +0 -0
  455. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2_grpc.py +0 -0
  456. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2.py +0 -0
  457. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2.pyi +0 -0
  458. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2_grpc.py +0 -0
  459. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.py +0 -0
  460. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.pyi +0 -0
  461. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2_grpc.py +0 -0
  462. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2.py +0 -0
  463. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2.pyi +0 -0
  464. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2_grpc.py +0 -0
  465. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_backend.py +0 -0
  466. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_job.py +0 -0
  467. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiGates.py +0 -0
  468. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/__init__.py +0 -0
  469. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qkit_polyfill.py +0 -0
  470. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/servicehub.py +0 -0
  471. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/utility.py +0 -0
  472. {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/state_estimation.py +0 -0
  473. {qiclib-2.2.0 → qiclib-2.4.0}/tests/data/amplitude_data.npy +0 -0
  474. {qiclib-2.2.0 → qiclib-2.4.0}/tests/data/iq_clouds_power_sweep.dat +0 -0
  475. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/digital_trigger.py +0 -0
  476. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/pimc.py +0 -0
  477. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/pulse_gen.py +0 -0
  478. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/recording.py +0 -0
  479. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/rfdc.py +0 -0
  480. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/sequencer.py +0 -0
  481. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/servicehub_control.py +0 -0
  482. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/taskrunner.py +0 -0
  483. {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/unit_cell.py +0 -0
  484. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_data_handlers.py +0 -0
  485. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_files/properties_error.json +0 -0
  486. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_files/properties_ok.json +0 -0
  487. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_sample.py +0 -0
  488. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_seq_instructions.py +0 -0
  489. {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_version.py +0 -0
@@ -1,8 +1,8 @@
1
1
  variables:
2
2
  GIT_SUBMODULE_STRATEGY: recursive
3
3
  GIT_SUBMODULE_FORCE_HTTPS: true
4
- UV_VERSION: 0.9
5
- PYTHON_VERSION: 3.9
4
+ UV_VERSION: '0.9.27'
5
+ PYTHON_VERSION: '3.10'
6
6
  BASE_LAYER: bookworm
7
7
  UV_SYSTEM_PYTHON: 1
8
8
  GITHUB_PUBLISH_USER: quantuminterfaceBot
@@ -36,17 +36,19 @@ unit_tests:
36
36
  coverage_format: cobertura
37
37
  path: coverage.xml
38
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
39
+ # Disabled because pre-commit throws an error in the pipeline
40
+ # The error is a false negative and pre-commit runs as expected locally.
41
+ # check_format:
42
+ # extends: .base_ruff
43
+ # stage: analysis
44
+ # variables:
45
+ # PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
46
+ # cache:
47
+ # paths:
48
+ # - ${PRE_COMMIT_HOME}
49
+ # script:
50
+ # - git config --global --add safe.directory '*'
51
+ # - uvx pre-commit run --all-files --show-diff-on-failure
50
52
 
51
53
  check_mypy:
52
54
  extends: .base_ruff
@@ -6,10 +6,10 @@ repos:
6
6
  - id: end-of-file-fixer
7
7
  - id: trailing-whitespace
8
8
  - repo: https://github.com/astral-sh/ruff-pre-commit
9
- rev: v0.11.3
9
+ rev: v0.14.14
10
10
  hooks:
11
11
  # Run the linter.
12
- - id: ruff
12
+ - id: ruff-check
13
13
  types_or: [ python, pyi, jupyter ]
14
14
  args: [ --fix ]
15
15
  # Run the formatter.
@@ -0,0 +1 @@
1
+ 3.10
@@ -11,5 +11,6 @@
11
11
  "python.testing.unittestEnabled": false,
12
12
  "python.testing.cwd": "${workspaceFolder}/tests",
13
13
  "python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest",
14
- "python.testing.autoTestDiscoverOnSaveEnabled": true
14
+ "python.testing.autoTestDiscoverOnSaveEnabled": true,
15
+ "cmake.sourceDirectory": "${workspaceFolder}/qicode/cpp"
15
16
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qiclib
3
- Version: 2.2.0
3
+ Version: 2.4.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>
@@ -683,14 +683,15 @@ Classifier: Development Status :: 3 - Alpha
683
683
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
684
684
  Classifier: Operating System :: OS Independent
685
685
  Classifier: Programming Language :: Python :: 3
686
- Classifier: Programming Language :: Python :: 3.9
687
- Requires-Python: >=3.9
686
+ Classifier: Programming Language :: Python :: 3.10
687
+ Requires-Python: >=3.10
688
688
  Requires-Dist: grpcio==1.73.1
689
689
  Requires-Dist: ipywidgets>=8.1
690
690
  Requires-Dist: lmfit>=1.3
691
691
  Requires-Dist: matplotlib>=3.7
692
692
  Requires-Dist: numpy>=1.24
693
693
  Requires-Dist: protobuf==6.31.1
694
+ Requires-Dist: qicode
694
695
  Requires-Dist: scipy>=1.10
695
696
  Requires-Dist: tqdm>=4.67.1
696
697
  Requires-Dist: wrapt>=1.16
@@ -38,14 +38,15 @@ dependencies = [
38
38
  # and runtime protobuf version
39
39
  "grpcio==1.73.1",
40
40
  "protobuf==6.31.1",
41
+ "qicode",
41
42
  ]
42
- requires-python = ">= 3.9"
43
+ requires-python = ">= 3.10"
43
44
  classifiers = [
44
45
  "Development Status :: 3 - Alpha",
45
46
  "Operating System :: OS Independent",
46
47
  "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
47
48
  "Programming Language :: Python :: 3",
48
- "Programming Language :: Python :: 3.9",
49
+ "Programming Language :: Python :: 3.10",
49
50
  ]
50
51
  dynamic = ["version"]
51
52
 
@@ -56,7 +57,7 @@ Repository = "https://github.com/quantuminterface/qiclib"
56
57
  qiskit = ["qiskit>=1.2.1", "tzlocal>=5.2", "qiskit-aer>=0.15.1"]
57
58
 
58
59
  [tool.mypy]
59
- python_version = "3.9"
60
+ python_version = "3.10"
60
61
  ignore_missing_imports = true
61
62
  no_implicit_optional = true
62
63
  # The following error codes are disabled because fixing them is
@@ -107,6 +108,12 @@ testpaths = ["tests"]
107
108
  [tool.uv]
108
109
  default-groups = ["dev", "jupyter"]
109
110
 
111
+ [tool.uv.workspace]
112
+ members = ["qicode/python"]
113
+
114
+ [tool.uv.sources]
115
+ qicode = { workspace = true }
116
+
110
117
  [dependency-groups]
111
118
  dev = [
112
119
  "hatch>=1.13.0",
@@ -117,7 +124,7 @@ dev = [
117
124
  "pytest-cov>=5.0.0",
118
125
  "pytest>=8.3.3",
119
126
  "sphinx>=7.1.2",
120
- "ruff>=0.11.3",
127
+ "ruff>=0.14.14",
121
128
  "furo>=2024.8.6",
122
129
  "livereload>=2.7.1",
123
130
  ]
@@ -0,0 +1,46 @@
1
+ # CMake build artifacts
2
+ build/
3
+ cmake_install.cmake
4
+ CMakeCache.txt
5
+ CMakeFiles/
6
+ *.cmake
7
+
8
+ # Generated proto files
9
+ generated/
10
+ *.pb.cc
11
+ *.pb.h
12
+
13
+ # Build artifacts
14
+ *.a
15
+ *.o
16
+ *.so
17
+ *.dylib
18
+ *.lib
19
+ *.dll
20
+ *.exe
21
+
22
+ # IDE
23
+ .vscode/
24
+ .idea/
25
+ *.sln
26
+ *.vcxproj*
27
+ *.xcodeproj/
28
+ *.swp
29
+ *.swo
30
+ *~
31
+
32
+ # Conan
33
+ conanbuild.cmake
34
+ conantoolchain.cmake
35
+ conaninfo.txt
36
+ graph_info.json
37
+ ConanPresets.json
38
+
39
+ # Testing
40
+ Testing/
41
+ CTestTestfile.cmake
42
+
43
+ # Misc
44
+ .DS_Store
45
+ *.pyc
46
+ __pycache__/
@@ -0,0 +1,68 @@
1
+ cmake_minimum_required(VERSION 3.23)
2
+ project(qicode VERSION 0.0.1 LANGUAGES CXX)
3
+
4
+ # Set C++ standard
5
+ set(CMAKE_CXX_STANDARD 20)
6
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
7
+ set(CMAKE_CXX_EXTENSIONS OFF)
8
+
9
+ # Find required packages
10
+ find_package(protobuf REQUIRED)
11
+
12
+ # Proto files
13
+ # This is a hack to enable conan create as well as building (and testing) locally.
14
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/qicode")
15
+ set(PROTO_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
16
+ else()
17
+ cmake_path(GET CMAKE_CURRENT_SOURCE_DIR PARENT_PATH PARENT_DIR)
18
+ cmake_path(GET PARENT_DIR PARENT_PATH PROTO_BASE_DIR)
19
+ endif()
20
+
21
+ message(STATUS "PROTO_BASE_DIR set to ${PROTO_BASE_DIR}")
22
+
23
+ cmake_path(APPEND PROTO_BASE_DIR qicode proto OUTPUT_VARIABLE PROTO_SRC_DIR)
24
+
25
+ file(GLOB PROTO_FILES "${PROTO_SRC_DIR}/*.proto")
26
+ message(STATUS "Proto files found: ${PROTO_SRC_DIR}")
27
+
28
+ set(PROTO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
29
+
30
+ # Ensure the output directory exists
31
+ file(MAKE_DIRECTORY "${PROTO_BINARY_DIR}")
32
+
33
+ # Generate protobuf files
34
+ protobuf_generate(
35
+ OUT_VAR PROTO_GENERATED_SRCS
36
+ LANGUAGE cpp
37
+ PROTOS ${PROTO_FILES}
38
+ PROTOC_OUT_DIR "${PROTO_BINARY_DIR}"
39
+ IMPORT_DIRS "${PROTO_BASE_DIR}"
40
+ )
41
+
42
+ add_library(qicode ${PROTO_GENERATED_SRCS})
43
+
44
+ # Set compiler warning flags
45
+ if(MSVC)
46
+ target_compile_options(qicode PRIVATE /W4)
47
+ else()
48
+ target_compile_options(qicode PRIVATE -Wall -Wextra -Wpedantic)
49
+ endif()
50
+
51
+ target_include_directories(qicode
52
+ PUBLIC
53
+ $<BUILD_INTERFACE:${PROTO_BINARY_DIR}>
54
+ $<INSTALL_INTERFACE:include>
55
+ PRIVATE
56
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
57
+ )
58
+
59
+ # Link protobuf library
60
+ target_link_libraries(qicode PUBLIC protobuf::libprotobuf)
61
+
62
+ # Installation
63
+ install(TARGETS qicode)
64
+
65
+ install(DIRECTORY ${PROTO_GENERATED_SRCS}
66
+ DESTINATION include/qicode/proto
67
+ FILES_MATCHING PATTERN "*.h"
68
+ )
@@ -0,0 +1,21 @@
1
+ # QiCode C++ Bindings
2
+
3
+ C++ bindings for QiCode protocol buffers.
4
+
5
+ ## Dependencies
6
+
7
+ - **Protobuf**: >= 5.27.2 (for protocol buffer support)
8
+ - **CMake**: >= 3.20
9
+
10
+ ## Building from Source
11
+
12
+ ```bash
13
+ conan create . --build=missing
14
+ ```
15
+
16
+ To use the library in your own Conan project:
17
+
18
+ ```
19
+ [requires]
20
+ qicode/0.0.1
21
+ ```
@@ -0,0 +1,55 @@
1
+ from conan import ConanFile
2
+ from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
3
+ from conan.tools.files import copy
4
+ import os
5
+
6
+
7
+ class QicodeConan(ConanFile):
8
+ name = "qicode"
9
+ version = "0.0.1"
10
+ description = "C++ Protocol Buffer bindings for QiCode language"
11
+ author = "Quantum Interface <quantuminterface@ipe.kit.edu>"
12
+ license = "GPL-3.0-or-later"
13
+ homepage = "https://github.com/quantuminterface/qiclib"
14
+ url = "https://github.com/quantuminterface/qiclib"
15
+
16
+ # Settings
17
+ settings = "os", "compiler", "build_type", "arch"
18
+ options = {"shared": [True, False], "fPIC": [True, False]}
19
+ default_options = {"shared": False, "fPIC": True}
20
+
21
+ def export_sources(self):
22
+ copy(self, "CMakeLists.txt", self.recipe_folder, self.export_sources_folder)
23
+ # Copy the proto folder relative to the sources folder.
24
+ # This change requires the `PROTO_BASE_DIR` variable to be set (see the generate method)
25
+ copy(self, "proto/*", os.path.join(self.recipe_folder, ".."), os.path.join(self.export_sources_folder, "qicode"))
26
+
27
+ def requirements(self):
28
+ self.requires("abseil/20250814.0")
29
+ self.requires("protobuf/6.30.1", transitive_headers=True)
30
+
31
+ def config_options(self):
32
+ if self.settings.os == "Windows":
33
+ del self.options.fPIC
34
+
35
+ def layout(self):
36
+ cmake_layout(self)
37
+
38
+ def generate(self):
39
+ deps = CMakeDeps(self)
40
+ deps.generate()
41
+ tc = CMakeToolchain(self)
42
+ tc.variables["PROTO_BASE_DIR"] = self.source_folder
43
+ tc.generate()
44
+
45
+ def build(self):
46
+ cmake = CMake(self)
47
+ cmake.configure()
48
+ cmake.build()
49
+
50
+ def package(self):
51
+ cmake = CMake(self)
52
+ cmake.install()
53
+
54
+ def package_info(self):
55
+ self.cpp_info.libs = ["qicode"]
@@ -0,0 +1,11 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ message Cell {
6
+ uint32 index = 1;
7
+ }
8
+
9
+ message Coupler {
10
+ uint32 index = 1;
11
+ }
@@ -0,0 +1,142 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ import "qicode/proto/expression.proto";
6
+ import "qicode/proto/variables.proto";
7
+ import "qicode/proto/pulse.proto";
8
+ import "qicode/proto/types.proto";
9
+ import "qicode/proto/cell.proto";
10
+
11
+ message DigitalTriggerCommand {
12
+ Cell cell = 1;
13
+ Expression length = 2;
14
+ repeated uint32 outputs = 3;
15
+ }
16
+
17
+ message WaitCommand {
18
+ Cell cell = 1;
19
+ Expression length = 2;
20
+ }
21
+
22
+ message RecordingCommand {
23
+ Cell cell = 1;
24
+ Expression offset = 2;
25
+ string save_to = 3;
26
+ Variable state_to = 4;
27
+ Expression duration = 5;
28
+ enum Mode {
29
+ Normal = 0;
30
+ ContinuousOn = 1;
31
+ ContinuousOff = 2;
32
+ }
33
+ Mode mode = 6;
34
+ }
35
+
36
+ message PlayCommand {
37
+ Cell cell = 1;
38
+ Pulse pulse = 2;
39
+ }
40
+
41
+ message PlayFluxCommand {
42
+ Coupler coupler = 1;
43
+ Pulse pulse = 2;
44
+ }
45
+
46
+ message PlayReadoutCommand {
47
+ Cell cell = 1;
48
+ Pulse pulse = 2;
49
+ }
50
+
51
+ message RotateFrameCommand {
52
+ Cell cell = 1;
53
+ Expression angle = 2;
54
+ }
55
+
56
+ message SyncCommand {
57
+ repeated Cell cells = 1;
58
+ }
59
+
60
+ message StoreCommand {
61
+ Cell cell = 1;
62
+ Variable var = 2;
63
+ string saveTo = 3;
64
+ }
65
+
66
+ message AssignCommand {
67
+ Variable destination = 1;
68
+ Expression value = 2;
69
+ }
70
+
71
+ message DeclareCommand {
72
+ Variable var = 1;
73
+ string name = 2;
74
+ Type type = 3;
75
+ bool static = 4;
76
+ Expression initialValue = 5;
77
+ }
78
+
79
+ message AsmCommand {
80
+ Cell cell = 1;
81
+ string instruction = 2;
82
+ }
83
+
84
+ message IfCommand {
85
+ Expression condition = 1;
86
+ repeated Command body = 2;
87
+ }
88
+
89
+ message ElseCommand {
90
+ repeated Command body = 1;
91
+ }
92
+
93
+ message ForRangeCommand {
94
+ Variable var = 1;
95
+ Expression start = 2;
96
+ Expression end = 3;
97
+ Expression step = 4;
98
+ repeated Command body = 5;
99
+ }
100
+
101
+ message WhileCommand {
102
+ Expression condition = 1;
103
+ repeated Command body = 2;
104
+ }
105
+
106
+ message ParallelCommand {
107
+ repeated Command body = 1;
108
+ }
109
+
110
+ message CallSite {
111
+ string file = 1;
112
+ uint32 line = 2;
113
+ string code = 3;
114
+ }
115
+
116
+ message GateCommand {
117
+ repeated Command body = 1;
118
+ }
119
+
120
+ message Command {
121
+ CallSite sourceInfo = 1;
122
+ oneof kind {
123
+ DigitalTriggerCommand digitalTriggerCommand = 2;
124
+ WaitCommand waitCommand = 3;
125
+ RecordingCommand recordingCommand = 4;
126
+ PlayCommand playCommand = 5;
127
+ PlayFluxCommand playFluxCommand = 6;
128
+ PlayReadoutCommand playReadoutCommand = 7;
129
+ RotateFrameCommand rotateFrameCommand = 8;
130
+ SyncCommand syncCommand = 9;
131
+ StoreCommand storeCommand = 10;
132
+ AssignCommand assignCommand = 11;
133
+ DeclareCommand declareCommand = 12;
134
+ AsmCommand asmCommand = 13;
135
+ IfCommand ifCommand = 14;
136
+ ElseCommand elseCommand = 15;
137
+ ForRangeCommand forRangeCommand = 16;
138
+ WhileCommand whileCommand = 17;
139
+ ParallelCommand parallelCommand = 18;
140
+ GateCommand gateCommand = 19;
141
+ }
142
+ }
@@ -0,0 +1,57 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ /// A pulse described in a way that it can be sampled.
6
+ message SampleablePulse {
7
+ /// The amplitude of the pulse.
8
+ /// Defined from `int16::min` to `int16::max`,
9
+ /// and other value is an error.
10
+ int32 amplitude = 1;
11
+ /// The index of the pulse.
12
+ /// The controller defines bounds of the index.
13
+ /// Furthermore, specialized pulses (e.g., choke)
14
+ /// may only occupy certain indices. This depends
15
+ /// on the controller.
16
+ uint32 index = 2;
17
+ /// The length of the pulse expressed in sample granularity.
18
+ uint32 length = 3;
19
+ /// The shape of the pulse.
20
+ /// This is an ID that is communicated between the compiler
21
+ /// and the controller software. Users define pulses by an ID
22
+ /// and must respect this ID when sampling the pulse.
23
+ int64 shape = 4;
24
+ /// Whether to hold the last value of the pulse.
25
+ /// If true, the last value of the pulse is held until a new
26
+ /// trigger command overwrites this.
27
+ bool hold = 5;
28
+ /// The phase offset that this pulse has.
29
+ /// This is defined using processor specific values
30
+ int64 phase = 6;
31
+ /// Special property to adapt the global phase
32
+ bool shift_phase= 7;
33
+ }
34
+
35
+ message BinaryJob {
36
+ message Cell {
37
+ uint32 id = 1;
38
+ repeated uint32 code = 2;
39
+ repeated uint32 original_recording_ids = 3;
40
+ repeated SampleablePulse manipulation_pulses = 4;
41
+ repeated SampleablePulse readout_pulses = 5;
42
+ }
43
+
44
+ repeated Cell cells = 1;
45
+ }
46
+
47
+ message AssembledJob {
48
+ message Cell {
49
+ uint32 id = 1;
50
+ repeated string code = 2;
51
+ repeated uint32 original_recording_ids = 3;
52
+ repeated SampleablePulse manipulation_pulses = 4;
53
+ repeated SampleablePulse readout_pulses = 5;
54
+ }
55
+
56
+ repeated Cell cells = 1;
57
+ }
@@ -0,0 +1,74 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ import "qicode/proto/variables.proto";
6
+ import "qicode/proto/cell.proto";
7
+ import "qicode/proto/types.proto";
8
+
9
+ message CellProperty {
10
+ Cell cell = 1;
11
+ string name = 2;
12
+ Expression defaultValue = 3;
13
+ }
14
+
15
+ message Expression {
16
+ message Binary {
17
+ enum Operator {
18
+ Plus = 0;
19
+ Minus = 1;
20
+ Mult = 2;
21
+ Div = 3;
22
+ Lsh = 4;
23
+ Rsh = 5;
24
+ And = 6;
25
+ Or = 7;
26
+ Xor = 8;
27
+ Lt = 9;
28
+ Le = 10;
29
+ Gt = 11;
30
+ Ge = 12;
31
+ Eq = 13;
32
+ Ne = 14;
33
+ }
34
+ Expression lhs = 1;
35
+ Operator op = 2;
36
+ Expression rhs = 3;
37
+ }
38
+ message Unary {
39
+ enum Operator {
40
+ Plus = 0;
41
+ Minus = 1;
42
+ Not = 2;
43
+ }
44
+ Expression expr = 1;
45
+ Operator op = 2;
46
+ }
47
+ message Index {
48
+ Expression base = 1;
49
+ Expression value = 2;
50
+ }
51
+ message TypeCast {
52
+ Expression expr = 1;
53
+ Type targetType = 2;
54
+ }
55
+ message Literal {
56
+ oneof kind {
57
+ int64 intLiteral = 1;
58
+ double floatLiteral = 2;
59
+ Array arrayLiteral = 3;
60
+ }
61
+ message Array {
62
+ repeated Literal values = 1;
63
+ }
64
+ }
65
+ oneof kind {
66
+ Literal literal = 1;
67
+ CellProperty property = 2;
68
+ Variable variable = 3;
69
+ Binary binary = 4;
70
+ Unary unary = 5;
71
+ TypeCast typeCast = 6;
72
+ Index indexed = 7;
73
+ }
74
+ }
@@ -0,0 +1,14 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ import "qicode/proto/commands.proto";
6
+ import "qicode/proto/cell.proto";
7
+
8
+ message Job {
9
+ repeated Command commands = 1;
10
+ repeated Cell cells = 2;
11
+ repeated Coupler couplers = 3;
12
+ bool skipNcoSync = 4;
13
+ uint32 ncoSyncLength = 5;
14
+ }
@@ -0,0 +1,36 @@
1
+ edition = "2023";
2
+
3
+ package qicode.proto;
4
+
5
+ import "qicode/proto/expression.proto";
6
+
7
+ message DiscretePulse {
8
+ Expression length = 1;
9
+ Expression amplitude = 2;
10
+ Expression phase = 3;
11
+ Expression frequency = 4;
12
+ Shape shape = 5;
13
+ bool hold = 6;
14
+ bool shiftPhase = 7;
15
+ }
16
+
17
+ message ContinuousPulse {
18
+ Expression amplitude = 1;
19
+ Expression phase = 2;
20
+ Expression frequency = 3;
21
+ Shape shape = 4;
22
+ }
23
+
24
+ message OffPulse {}
25
+
26
+ message Pulse {
27
+ oneof kind {
28
+ DiscretePulse discrete = 1;
29
+ ContinuousPulse continuous = 2;
30
+ OffPulse off = 3;
31
+ }
32
+ }
33
+
34
+ message Shape {
35
+ uint32 id = 1;
36
+ }