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.
- {qiclib-2.2.0 → qiclib-2.4.0}/.gitlab-ci.yml +15 -13
- {qiclib-2.2.0 → qiclib-2.4.0}/.pre-commit-config.yaml +2 -2
- qiclib-2.4.0/.python-version +1 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/.vscode/settings.json +2 -1
- {qiclib-2.2.0 → qiclib-2.4.0}/PKG-INFO +4 -3
- {qiclib-2.2.0 → qiclib-2.4.0}/pyproject.toml +11 -4
- qiclib-2.4.0/qicode/cpp/.gitignore +46 -0
- qiclib-2.4.0/qicode/cpp/CMakeLists.txt +68 -0
- qiclib-2.4.0/qicode/cpp/README.md +21 -0
- qiclib-2.4.0/qicode/cpp/conanfile.py +55 -0
- qiclib-2.4.0/qicode/proto/cell.proto +11 -0
- qiclib-2.4.0/qicode/proto/commands.proto +142 -0
- qiclib-2.4.0/qicode/proto/compiled_job.proto +57 -0
- qiclib-2.4.0/qicode/proto/expression.proto +74 -0
- qiclib-2.4.0/qicode/proto/job.proto +14 -0
- qiclib-2.4.0/qicode/proto/pulse.proto +36 -0
- qiclib-2.4.0/qicode/proto/types.proto +27 -0
- qiclib-2.4.0/qicode/proto/variables.proto +7 -0
- qiclib-2.4.0/qicode/python/README.md +9 -0
- qiclib-2.4.0/qicode/python/pyproject.toml +29 -0
- qiclib-2.4.0/qicode/python/src/qicode/__init__.py +103 -0
- qiclib-2.4.0/qicode/python/src/qicode/_callsite.py +20 -0
- qiclib-2.4.0/qicode/python/src/qicode/compiled_job.py +37 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/__init__.py +75 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/cell_pb2.py +34 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/cell_pb2.pyi +18 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/commands_pb2.py +74 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/commands_pb2.pyi +350 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/compiled_job_pb2.py +42 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/compiled_job_pb2.pyi +118 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/expression_pb2.py +52 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/expression_pb2.pyi +180 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/job_pb2.py +32 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/job_pb2.pyi +33 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/pulse_pb2.py +40 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/pulse_pb2.pyi +87 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/types_pb2.py +38 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/types_pb2.pyi +52 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/variables_pb2.py +34 -0
- qiclib-2.4.0/qicode/python/src/qicode/proto/variables_pb2.pyi +12 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_cell.py +77 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_command.py +458 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_expression.py +365 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_job.py +95 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_pulse.py +98 -0
- qiclib-2.4.0/qicode/python/src/qicode/qi_type.py +144 -0
- qiclib-2.4.0/qicode/python/test/test_callsite.py +34 -0
- qiclib-2.4.0/qicode/python/test/test_commands.py +89 -0
- qiclib-2.4.0/qicode/python/test/test_expressions.py +20 -0
- qiclib-2.4.0/qicode/python/test/test_str_methods.py +186 -0
- qiclib-2.4.0/qicode/python/test/test_types.py +17 -0
- qiclib-2.4.0/qicode/python/update_protos +7 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/ruff.toml +1 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/_version.py +2 -2
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/__init__.py +4 -1
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/analysis/qi_insert_mem_parameters.py +39 -17
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_command.py +108 -46
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_dataflow.py +30 -12
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_jobs.py +502 -615
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_prog_builder.py +79 -74
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_pulse.py +65 -40
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_seq_instructions.py +359 -3
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_sequencer.py +184 -39
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_simulate.py +18 -13
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_types.py +80 -47
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_util.py +6 -6
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_var_definitions.py +101 -48
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_visitor.py +14 -3
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/base.py +2 -2
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/base.py +14 -10
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/data_handler.py +2 -2
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/fit_utils.py +1 -1
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/init_readout.py +1 -1
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/direct_rf.py +4 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/storage.py +14 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/unitcell.py +1 -1
- qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2.py +38 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2.pyi +6 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/b2b_controller_pb2_grpc.py +193 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/bullkidcalintegration_pb2.py +37 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/bullkidcalintegration_pb2_grpc.py +613 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2.py +45 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2.pyi +44 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/combgenerator_pb2_grpc.py +748 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/dmacontroller_pb2.py +51 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dmacontroller_pb2.pyi +4 -2
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/CMakeLists.txt +6 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/b2b_controller.proto +17 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/bullkidcalintegration.proto +22 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/combgenerator.proto +161 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dmacontroller.proto +2 -1
- qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/lorentzian.proto +25 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/ipe_servicehub_protos/multi_harmonic_detection.proto +260 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_storage.proto +20 -1
- qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2.py +39 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2.pyi +14 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/lorentzian_pb2_grpc.py +442 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2.py +41 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2.pyi +24 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/multi_harmonic_detection_pb2_grpc.py +1261 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2.py +9 -3
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2.pyi +26 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_storage_pb2_grpc.py +86 -0
- qiclib-2.4.0/src/qiclib/packages/grpc/signalamplifier_pb2.pyi +5 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_provider.py +1 -1
- qiclib-2.4.0/src/qiclib/py.typed +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/__init__.py +2 -0
- qiclib-2.4.0/tests/mocks/storage.py +22 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_calibrate_electrical_delay.py +1 -1
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_experiments.py +2 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_iq_fit.py +1 -1
- qiclib-2.4.0/tests/test_qi_array_types.py +157 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_insert_mem_parameters.py +51 -33
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_jobs.py +215 -164
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_prog_builder.py +98 -67
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_pulse.py +28 -42
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_pulse_amplitude_warning.py +7 -7
- qiclib-2.4.0/tests/test_qi_seq_instructions_from_str.py +386 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_sequencer.py +41 -36
- qiclib-2.4.0/tests/test_qi_types.py +424 -0
- qiclib-2.4.0/tests/test_qi_util.py +78 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_var_definitions.py +7 -9
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_visitor.py +28 -8
- qiclib-2.4.0/tests/test_static_variables.py +132 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_while_integration.py +5 -4
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_while_loop.py +1 -3
- qiclib-2.4.0/uv.lock +4220 -0
- qiclib-2.2.0/.python-version +0 -1
- qiclib-2.2.0/src/qiclib/packages/grpc/dmacontroller_pb2.py +0 -51
- qiclib-2.2.0/tests/test_qi_types.py +0 -443
- qiclib-2.2.0/tests/test_qi_util.py +0 -55
- qiclib-2.2.0/uv.lock +0 -4130
- {qiclib-2.2.0 → qiclib-2.4.0}/.git-blame-ignore-revs +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/.gitignore +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/.gitmodules +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/.pylintrc +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/.vscode/extensions.json +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/COPYING +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/README.md +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/Makefile +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/module.rst_t +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/package.rst_t +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/_templates/toc.rst_t +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/assets/QiCode_Tutorial.pdf +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/conf.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/experiments.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/getting_started.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/index.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/qi_code.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/reference.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/serve-doc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/docs/troubleshooting.rst +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/digital_trigger.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/pulses/pulse_player_examples.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Deutsch Algorithm.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/2-qubit-Gover's-Algorithm.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Phase Kickback.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum Entanglement.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/2-qubit-quantum-algorithms/Quantum_Key_Distribution_protocol.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/qiskit/Running_Qiskit_circuits_on_QiController_tutorial.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/resonators/Resonators_Test_qiclib_2024_04_29.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/rfdc/interfacing_with_the_directrf.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/examples/rfdc/interfacing_with_the_rfdc.ipynb +0 -0
- {qiclib-2.2.0/src/qiclib → qiclib-2.4.0/qicode/python/src/qicode}/py.typed +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/analysis/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_result.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/code/qi_sample.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/coding/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/coding/sequencercode.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/SecondToneSweepR5.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/active_cooling_t1.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/active_reset_t1.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/benchmarking.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/collection.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/correlation_calibration.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/correlation_conv_all.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_correlation.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_correlation_conv.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g1_meas_setuptest.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g2_correlation.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/g2_correlation_conv.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/gx_correlation_base.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/inverted_t1.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_multi_qfb.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_qfb_decay.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_ramsey.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/iq_clouds_ringup.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/multi_pi_t1.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/collection.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/data_provider.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/qubit_times.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qicode/qubit_times_qkit.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/qkit_virtual_awg.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/quantum_jumps_long.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_R5PG.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_drag.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rabi_short.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/readout_spectr.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/resonator_ringup.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/resonator_ringup_window.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/active_cooling.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/average_trace.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/base_experiment_task.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/calibration.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/correlation_conv.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_correlation_conv.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g1_meas_setuptest.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/correlation/g2_correlation_conv.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/interleaved.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/interleaved_multi.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/iq_clouds.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/optimize_rec_offset.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/averaging.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/iq_collect.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/state_collect.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/state_count.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qicode/timetrace.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_multi.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/quantum_jumps_new.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/qubit_freq_sweep_task.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/rabi_r5.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/copy_test.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/empty.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/shift_test.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/stream_test.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/test_databox.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/time_test_code.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_axi.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/test/timing_test_single.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/rtos_tasks/trace_fft.c +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/experiment/stream_test.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/controller.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/digital_trigger.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pimc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/platform_component.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pulse_player.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/pulsegen.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/recording.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/rfdc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/sequencer.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/servicehub.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/taskrunner.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/hardware/vna.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/iq_fit.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/iq_plot.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/measure_iq.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/measurement/resonators.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/constants.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/.gitignore +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5672_5684_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad5675_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ad7291_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bench_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/bidirectionalmixer_pb2_grpc.py +0 -0
- /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
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/capreadoutchain_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/chip_info_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/datatypes_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/detector_emulator_pb2.py +0 -0
- /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
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/detector_emulator_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/digital_trigger_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/direct_rf_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dma_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/dmacontroller_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/erasynth_pb2.py +0 -0
- /qiclib-2.2.0/src/qiclib/packages/grpc/healthmon_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/erasynth_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/erasynth_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/eventdetection_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/faultrec_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/firmwareupdate_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxramp_generator_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/fluxrampdemod_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/healthmon_pb2.py +0 -0
- /qiclib-2.2.0/src/qiclib/packages/grpc/signalamplifier_pb2.pyi → /qiclib-2.4.0/src/qiclib/packages/grpc/healthmon_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/healthmon_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.git +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.gitignore +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/.vscode/extensions.json +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/README.md +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5672_5684.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad5675.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ad7291.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bench.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/bidirectionalmixer.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/build_protos.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/capreadoutchain.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/chip_info.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/datatypes.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/detector_emulator.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/digital_trigger.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/direct_rf.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/dma.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/Doxyfile +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/clean_docs +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/create_docs +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/doc/scripts/proto2cpp.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/erasynth.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/eventdetection.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/README.md +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/examples/qic-dynamic-routing.ipynb +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/faultrec.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/firmwareupdate.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxramp_generator.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/fluxrampdemod.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/healthmon.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmk04208.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/lmx2594.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc2000_cfg.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/ltc5586.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/matrixvectormultiplier.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/mdnspublisher.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/memmap.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multichannelddc.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/multilateration.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/oscilloscope.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pimc.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pp_channelizer.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulse_player.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/pulsegen.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/qic_unitcell.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rampgen.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/recording.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfdc.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/rfpcbsuper.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sequencer.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/servicehubcontrol.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/signalamplifier.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/spectrum_analyzer.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/stimulation.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/sysmon.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/taskrunner.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/tdmchannelmultipick.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ipe_servicehub_protos/vna.proto +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmk04208_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/lmx2594_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc2000_cfg_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/ltc5586_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/matrixvectormultiplier_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/mdnspublisher_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/memmap_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multichannelddc_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/multilateration_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/oscilloscope_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pimc_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pp_channelizer_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulse_player_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/pulsegen_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/qic_unitcell_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rampgen_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/recording_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfdc_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/rfpcbsuper_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sequencer_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/servicehubcontrol_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/signalamplifier_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/signalamplifier_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/spectrum_analyzer_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/stimulation_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/sysmon_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/taskrunner_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/tdmchannelmultipick_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2.pyi +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/grpc/vna_pb2_grpc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_backend.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiController_job.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/QiGates.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qiskit/__init__.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/qkit_polyfill.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/servicehub.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/packages/utility.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/src/qiclib/state_estimation.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/data/amplitude_data.npy +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/data/iq_clouds_power_sweep.dat +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/digital_trigger.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/pimc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/pulse_gen.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/recording.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/rfdc.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/sequencer.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/servicehub_control.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/taskrunner.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/mocks/unit_cell.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_data_handlers.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_files/properties_error.json +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_files/properties_ok.json +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_sample.py +0 -0
- {qiclib-2.2.0 → qiclib-2.4.0}/tests/test_qi_seq_instructions.py +0 -0
- {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.
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
687
|
-
Requires-Python: >=3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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,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
|
+
}
|