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