qm-qua 0.0.0a3.dev20260517__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.
- qm_qua-0.0.0a3.dev20260517/CHANGELOG.md +725 -0
- qm_qua-0.0.0a3.dev20260517/LICENSE +6 -0
- qm_qua-0.0.0a3.dev20260517/PKG-INFO +49 -0
- qm_qua-0.0.0a3.dev20260517/README.md +10 -0
- qm_qua-0.0.0a3.dev20260517/pyproject.toml +156 -0
- qm_qua-0.0.0a3.dev20260517/qm/QuantumMachine.py +9 -0
- qm_qua-0.0.0a3.dev20260517/qm/_QmJobErrors.py +257 -0
- qm_qua-0.0.0a3.dev20260517/qm/__init__.py +79 -0
- qm_qua-0.0.0a3.dev20260517/qm/_loc.py +14 -0
- qm_qua-0.0.0a3.dev20260517/qm/_octaves_container.py +297 -0
- qm_qua-0.0.0a3.dev20260517/qm/_report.py +86 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/__init__.py +25 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_multiple_streams_fetcher.py +107 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_single_stream_fetchers/__init__.py +9 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_single_stream_fetchers/_base_single_stream_fetcher.py +273 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_single_stream_fetchers/_single_stream_multiple_results_fetcher.py +68 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_single_stream_fetchers/_single_stream_single_result_fetcher.py +101 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_streams_manager.py +317 -0
- qm_qua-0.0.0a3.dev20260517/qm/_stream_results/_utils.py +64 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/base_api.py +177 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/frontend_api.py +418 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/info_service_api.py +28 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/job_manager_api.py +228 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/job_result_api.py +103 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/capabilities.py +159 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/channel.py +97 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/compiler.py +44 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/debug_data.py +17 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/devices.py +29 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/grpc_interceptors.py +165 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/info.py +16 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/jobs.py +72 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/quantum_machine.py +9 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/models/server_details.py +111 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/server_detector.py +167 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/simulation_api.py +166 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/stubs/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/stubs/deprecated_job_manager_stub.py +30 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/base_api_v2.py +39 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/__init__.py +9 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/element_api.py +86 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/element_input_api.py +144 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/element_port_api.py +61 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/generic_apis.py +21 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/job_api.py +1066 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/job_elements_db.py +70 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_api/simulated_job_api.py +126 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/job_result_api.py +166 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/qm_api.py +689 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/qm_api_old.py +1056 -0
- qm_qua-0.0.0a3.dev20260517/qm/api/v2/qmm_api.py +282 -0
- qm_qua-0.0.0a3.dev20260517/qm/communication/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/communication/http_redirection.py +67 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_elements/__init__.py +51 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_elements/_analog_inputs.py +218 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_elements/_analog_outputs.py +45 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_elements/_digital.py +36 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_elements/_element.py +271 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_full_config.py +60 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_octave/__init__.py +29 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_octave/_octave.py +209 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/__init__.py +87 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/_analog_input.py +178 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/_analog_output.py +322 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/_digital_input.py +132 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/_digital_output.py +133 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_ports/_port_base.py +157 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_primitives.py +205 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_pulses/__init__.py +5 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_pulses/_integration_weights.py +57 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_pulses/_operation.py +32 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_pulses/_pulse.py +127 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_waveforms/__init__.py +10 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_waveforms/_analog.py +189 -0
- qm_qua-0.0.0a3.dev20260517/qm/config/_waveforms/_digital.py +24 -0
- qm_qua-0.0.0a3.dev20260517/qm/containers/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/containers/capabilities_container.py +17 -0
- qm_qua-0.0.0a3.dev20260517/qm/datadog_api.py +53 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements/element.py +149 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements/element_inputs.py +209 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements/element_outputs.py +62 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements/up_converted_input.py +171 -0
- qm_qua-0.0.0a3.dev20260517/qm/elements_db.py +201 -0
- qm_qua-0.0.0a3.dev20260517/qm/exceptions.py +384 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/VERSION +1 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/io/qualang/api/v1/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/io/qualang/api/v1/info_service_pb2.py +32 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/io/qualang/api/v1/info_service_pb2.pyi +30 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/io/qualang/api/v1/info_service_pb2_grpc.py +73 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/octave/v1/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/octave/v1/api_pb2.py +199 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/octave/v1/api_pb2.pyi +855 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/octave/v1/api_pb2_grpc.py +469 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/common_types_pb2.py +30 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/common_types_pb2.pyi +35 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/common_types_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/job_api_pb2.py +314 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/job_api_pb2.pyi +976 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/job_api_pb2_grpc.py +1063 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qm_api_pb2.py +116 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qm_api_pb2.pyi +311 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qm_api_pb2_grpc.py +403 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qmm_api_pb2.py +173 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qmm_api_pb2.pyi +433 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/grpc/v2/qmm_api_pb2_grpc.py +403 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/compiler_pb2.py +45 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/compiler_pb2.pyi +71 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/compiler_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/errors_pb2.py +31 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/errors_pb2.pyi +52 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/errors_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/frontend_pb2.py +216 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/frontend_pb2.pyi +680 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/frontend_pb2_grpc.py +1107 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/general_messages_pb2.py +31 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/general_messages_pb2.pyi +35 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/general_messages_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qm_api_pb2.py +81 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qm_api_pb2.pyi +224 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qm_api_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_config_pb2.py +445 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_config_pb2.pyi +1198 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_config_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_pb2.py +256 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_pb2.pyi +1060 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/inc_qua_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_manager_pb2.py +61 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_manager_pb2.pyi +139 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_manager_pb2_grpc.py +172 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_results_pb2.py +96 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_results_pb2.pyi +308 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/job_results_pb2_grpc.py +205 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/qm_manager_pb2.py +57 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/qm_manager_pb2.pyi +142 -0
- qm_qua-0.0.0a3.dev20260517/qm/grpc/qm/pb/qm_manager_pb2_grpc.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/base_job.py +120 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/job_queue_base.py +128 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/job_queue_old_api.py +231 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/job_queue_with_deprecations.py +179 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/pending_job.py +103 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/qm_job.py +5 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/running_qm_job.py +149 -0
- qm_qua-0.0.0a3.dev20260517/qm/jobs/simulated_job.py +257 -0
- qm_qua-0.0.0a3.dev20260517/qm/logger.py +12 -0
- qm_qua-0.0.0a3.dev20260517/qm/logging_utils.py +42 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/__init__.py +36 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/_calibration_analysis.py +309 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/_calibration_config.py +57 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/_calibration_names.py +47 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/abstract_calibration_db.py +106 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/calibration_db.py +342 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/calibration_utils.py +22 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/enums.py +30 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/octave_config.py +401 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/octave_manager.py +1005 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/octave_mixer_calibration.py +941 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave/qm_octave.py +421 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/__init__.py +15 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/_client_request_builder.py +85 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/_default_identity.py +338 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/_errors.py +2 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/_octave_client.py +551 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/batch.py +80 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/conflict_exceptions.py +22 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/conflict_manager.py +295 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/connectivity.py +652 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/connectivity_filter.py +143 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/connectivity_util.py +43 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/connectivity_util_private.py +99 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/connectivity/exceptions.py +26 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/health_client.py +99 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/health_monitor.py +102 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/octave.py +1431 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/octave_async_thread.py +14 -0
- qm_qua-0.0.0a3.dev20260517/qm/octave_sdk/octave_module_com.py +14 -0
- qm_qua-0.0.0a3.dev20260517/qm/persistence.py +77 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/ConfigBuilder.py +27 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/__init__.py +6 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/__init__.py +7 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/base_converter.py +117 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/control_device_converter/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/control_device_converter/analog_output_filters_converter.py +183 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/control_device_converter/control_device_converter.py +730 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/element_converter.py +498 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/integration_weights_converter.py +64 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/mixer_correction_converter.py +79 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/octave_converter.py +188 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/oscillator_converter.py +43 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/pulse_converter.py +52 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/converters/waveform_converter.py +99 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_dict_to_pb_converter/main_config_converter.py +400 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_execution_overrides_schema.py +43 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_fill_defaults_in_config_v1.py +106 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_qua_config_schema.py +1988 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/_validate_config_schema.py +69 -0
- qm_qua-0.0.0a3.dev20260517/qm/program/program.py +93 -0
- qm_qua-0.0.0a3.dev20260517/qm/py.typed +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/__init__.py +149 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/__init__.py +9 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/_type_hints.py +11 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/_utils.py +32 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/amplitude.py +108 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/arbitrary.py +108 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/broadcast.py +61 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/calibration_params_update.py +130 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/frame_rotation.py +127 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/function_expressions.py +76 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/global_var.py +21 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/measure/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/measure/analog_measure_process.py +285 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/measure/digital_measure_process.py +84 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/measure/measure.py +248 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/measure/measure_process_factories.py +708 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/other.py +18 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/phase_reset.py +56 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/play.py +231 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/proto_any_converter.py +37 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/pulses_utils.py +63 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/scope_functions.py +532 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/direct_stream_processing.py +266 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/direct_stream_processing_interface.py +37 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/map_functions/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/map_functions/map_function_classes.py +185 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/map_functions/map_functions.py +209 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/stream_processing.py +762 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/stream_processing/stream_processing_utils.py +25 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/common.py +16 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/external_streams.py +171 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/input_streams/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/input_streams/declare_input_stream.py +236 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/input_streams/receive_from_stream.py +96 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/output_streams/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/output_streams/declare_output_stream.py +194 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/streams/output_streams/send_to_stream.py +109 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/variable_handling.py +378 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_dsl/wait.py +128 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_expressions.py +833 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_qua_struct.py +171 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_scope_management/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_scope_management/_core_scopes.py +278 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_scope_management/scopes.py +238 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/_scope_management/scopes_manager.py +62 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/__init__.py +13 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_iterators.py +283 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_iterators_base.py +75 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_iterators_types.py +64 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_native_iterators.py +143 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_product.py +76 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/extensions/qua_iterators/qua_zip.py +122 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/lib.py +774 -0
- qm_qua-0.0.0a3.dev20260517/qm/qua/type_hints.py +44 -0
- qm_qua-0.0.0a3.dev20260517/qm/quantum_machine.py +960 -0
- qm_qua-0.0.0a3.dev20260517/qm/quantum_machines_manager.py +887 -0
- qm_qua-0.0.0a3.dev20260517/qm/results/__init__.py +35 -0
- qm_qua-0.0.0a3.dev20260517/qm/results/simulator_samples.py +18 -0
- qm_qua-0.0.0a3.dev20260517/qm/serialization/__init__.py +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/serialization/expression_serializing_visitor.py +327 -0
- qm_qua-0.0.0a3.dev20260517/qm/serialization/generate_qua_script.py +400 -0
- qm_qua-0.0.0a3.dev20260517/qm/serialization/qua_node_visitor.py +65 -0
- qm_qua-0.0.0a3.dev20260517/qm/serialization/qua_serializing_visitor.py +958 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/__init__.py +20 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/_simulator_samples.py +135 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/credentials.py +37 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/interface.py +158 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/loopback.py +123 -0
- qm_qua-0.0.0a3.dev20260517/qm/simulate/raw.py +67 -0
- qm_qua-0.0.0a3.dev20260517/qm/sources/logo_qm_square.png +0 -0
- qm_qua-0.0.0a3.dev20260517/qm/type_hinting/__init__.py +13 -0
- qm_qua-0.0.0a3.dev20260517/qm/type_hinting/config_types.py +337 -0
- qm_qua-0.0.0a3.dev20260517/qm/type_hinting/execution_overrides.py +5 -0
- qm_qua-0.0.0a3.dev20260517/qm/type_hinting/general.py +27 -0
- qm_qua-0.0.0a3.dev20260517/qm/user_config.py +183 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/__init__.py +25 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/config_utils.py +130 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/deprecation_utils.py +39 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/general_utils.py +77 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/list_compression_utils.py +55 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/numpy_utils.py +22 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/protobuf_utils.py +122 -0
- qm_qua-0.0.0a3.dev20260517/qm/utils/types_utils.py +85 -0
- qm_qua-0.0.0a3.dev20260517/qm/version.py +1 -0
- qm_qua-0.0.0a3.dev20260517/qm/waveform_report/__init__.py +19 -0
- qm_qua-0.0.0a3.dev20260517/qm/waveform_report/_type_hints.py +109 -0
- qm_qua-0.0.0a3.dev20260517/qm/waveform_report/_utils.py +12 -0
- qm_qua-0.0.0a3.dev20260517/qm/waveform_report/_waveform_plot_builder.py +539 -0
- qm_qua-0.0.0a3.dev20260517/qm/waveform_report/_waveform_report.py +570 -0
|
@@ -0,0 +1,725 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- QOP 3.7 - Added key `lo_mode` to the MW-FEM analog input port configuration, with the options of "auto" (default) and "always_on".
|
|
11
|
+
- Added support for Python 3.13
|
|
12
|
+
- Added support for plotly 6 (changed requirements to be `>=5` instead of `^5.13.0`)
|
|
13
|
+
- Improved safeguards in `generate_qua_script` to prevent unintended or arbitrary code execution.
|
|
14
|
+
- Added `QOP` to DevicesVersion string representation returned by `qmm.version()`.
|
|
15
|
+
- Introduced the wait_for_execution_timeout argument to the execute method.
|
|
16
|
+
- Introduced declare_with_stream API to create qua variables with built-in implicit stream processing.
|
|
17
|
+
- Added NativeIterable, NativeIterableRange, QuaIterable, and QuaIterableRange to simplify writing QUA programs containing loops.
|
|
18
|
+
- Added support for protobuf 7.
|
|
19
|
+
- Added support for Python 3.14.
|
|
20
|
+
- Added `qmm.close()` to release the gRPC channel and free its TCP connection. After `close()`, any RPC method on the QMM raises `QMConnectionError`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Updated the `high_pass` warning message to indicate the correct behavior and marked it as a DeprecationWarning.
|
|
24
|
+
- Changed the signature of `for_` and `while_` loops so they will not hold `None` Defaults. This will prevent propagation of errors due to missing arguments.
|
|
25
|
+
- Increased the default qmm timeout from 60 seconds to 120 seconds.
|
|
26
|
+
- Removed betterproto dependency, grpc is now compiled with protoc.
|
|
27
|
+
- Updated the timeout exception message to be more descriptive.
|
|
28
|
+
- Unified the various input and output stream APIs:
|
|
29
|
+
- Input streams are declared using `declare_input_stream()`.
|
|
30
|
+
- Output streams are declared using `declare_output_stream()`.
|
|
31
|
+
- Input streams can receive data using `receive_from_stream()`.
|
|
32
|
+
- Data can be sent to output streams using `send_to_stream()`.
|
|
33
|
+
- Changed the signature of `declare_input_stream()` to support OPNIC streams. This is a backward-compatible change.
|
|
34
|
+
- Changed `QuaZip` to raise `QmQuaException` when the provided QUA iterables do not all have the same length.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
- Fixed a bug when opening a qm with the flag `"validate_with_protobuf"=True` when the config had string keys.
|
|
38
|
+
- Fixed a bug in `job.get_simulated_samples()` when using OPX+ with NumPy 2
|
|
39
|
+
- Update the dependency of marshmallow to avoid a vulnerability issue.
|
|
40
|
+
- Fix a bug in config validation - an element that had RF inputs or outputs, but did not have an Octave, did not raise an error.
|
|
41
|
+
- Fix a bug that made an element named `""` (empty string) appear in the waveform report.
|
|
42
|
+
- Using `wait_until()` on a specific state will now also return if a following state is reached. E.g., `wait_until("RUNNING")` will return if the state is "PROCESSING" or "DONE".
|
|
43
|
+
- Fixed the warning message for unsupported QOP versions so it no longer displays an incorrect version number.
|
|
44
|
+
- Fixed a dependency incompatibility issue of protobuf, that caused due to a too-new proto-files generation (too-advanced grpcio-tool version)
|
|
45
|
+
- Fixed a bug where configuring Octave ports that share a synthesizer (upconverters 2 & 3, upconverters 4 & 5, and upconverter 1 / downconverter 1) with internal LO source and different LO frequencies was silently accepted; this now raises `OctaveLoFrequencyConflict`.
|
|
46
|
+
|
|
47
|
+
### Deprecated
|
|
48
|
+
- The `declare_stream()` function is deprecated and has been replaced by `declare_output_stream()`.
|
|
49
|
+
- The `declare_external_stream()` function is deprecated and has been replaced by `declare_input_stream()` and `declare_output_stream()`.
|
|
50
|
+
- The `send_to_external_stream()` function is deprecated and has been replaced by `send_to_stream()`.
|
|
51
|
+
- The `receive_from_external_stream()` function is deprecated and has been replaced by `receive_from_stream()`.
|
|
52
|
+
|
|
53
|
+
### Removed
|
|
54
|
+
- Dropped support of 4 <= protobuf < 4.25
|
|
55
|
+
- Dropped support for Python 3.9.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## [1.2.6] - 2026-02-25
|
|
59
|
+
|
|
60
|
+
- Requires Python >=3.9, <3.13
|
|
61
|
+
- Tested against QOP 2.6.0, 3.6.0, 3.6.1, 3.6.2
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
- Correctly report QOP 3.6.2 version using `qmm.version_dict()`.
|
|
65
|
+
|
|
66
|
+
## [1.2.5] - 2026-01-29
|
|
67
|
+
|
|
68
|
+
- Requires Python >=3.9, <3.13
|
|
69
|
+
- Tested against QOP 2.6.0, 3.6.1
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
- Correctly report QOP 3.6.1 version using `qmm.version_dict()`.
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
## [1.2.4.1] - 2026-01-27
|
|
76
|
+
|
|
77
|
+
**Note, this version was [Yanked](https://pypi.org/help/#yanked) as it wrongly reported QOP 3.6.1 as QOP 3.6.0 when using `qmm.version_dict()`**
|
|
78
|
+
|
|
79
|
+
- Requires Python >=3.9, <3.13
|
|
80
|
+
- Tested against QOP 2.6.0, 3.6.0, 3.6.1
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## [1.2.4] - 2025-12-21
|
|
84
|
+
|
|
85
|
+
- Requires Python >=3.9, <3.13
|
|
86
|
+
- Tested against QOP 2.6.0, 3.6.0, 3.6.1
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
- Added a warning message when opening a `QuantumMachinesManager` with an outdated `qm-qua` compared to the QOP version.
|
|
90
|
+
- Creating programs with the context manager is now thread safe. Multiple programs can be generated in parallel.
|
|
91
|
+
- QOP 3.7 - Added keys `min_voltage_limit` and `max_voltage_limit` to the LF-FEM analog output port configuration.
|
|
92
|
+
- Added info-level log when a job is successfully enqueued.
|
|
93
|
+
- Added info-level log when a QM instance is successfully opened.
|
|
94
|
+
- Using an in-place operator on a QUA variable or QUA array cell (e.g. `I += i`) will now return an error instead of causing unwanted behavior. Note that doing `I = I + 1` is not caught and will cause unwanted behavior.
|
|
95
|
+
|
|
96
|
+
### Changed
|
|
97
|
+
- Attempting to resume a job in an error state will no longer return an error, but will simply return without doing anything.
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
- Removed erroneous warning message 'Fetching single result will always return the single value' when using `job.result_handles.fetch_results()` in some QOP versions
|
|
101
|
+
- Fixed incorrect typing for stream fetchers that may return single scalar values instead of arrays.
|
|
102
|
+
- Fixed serialization of the array `length()` function when applied to a struct property.
|
|
103
|
+
- Fixed an issue in `qm.set_element_correction` when sending the configuration update request to the QOP.
|
|
104
|
+
- Resolved an issue where `qm.get_config()` returned an incorrect analog input sampling rate.
|
|
105
|
+
- Improved error handling for Octave calibration, raising en exception instead of hanging in some cases.
|
|
106
|
+
- Fixed a bug in setting the downconversion LO-source in case it was not provided.
|
|
107
|
+
- Added support for time of flight parameter in case element has only digital outputs.
|
|
108
|
+
|
|
109
|
+
### Removed
|
|
110
|
+
- The `stream_metadata` property of the stream fetcher has been removed.
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## [1.2.3] - 2025-08-28
|
|
114
|
+
|
|
115
|
+
- Requires Python >=3.9, <3.13
|
|
116
|
+
- Tested against QOP 2.5.0, 3.5.0
|
|
117
|
+
|
|
118
|
+
### Added
|
|
119
|
+
- Added support for NumPy 2.
|
|
120
|
+
- Added support for Protobuf 5 and Protobuf 6.
|
|
121
|
+
- Added two new configuration types: ControllerQuaConfig and LogicalQuaConfig. These are used to define the QUA configuration for the controller (physical) and logical parts of the QOP, respectively.
|
|
122
|
+
- QOP 3.5 - Added the ability to pass a logical config to the following methods:
|
|
123
|
+
- `qm.add_to_queue()`
|
|
124
|
+
- `qm.compile()`
|
|
125
|
+
- `qm.execute()`
|
|
126
|
+
- `qm.simulate()`
|
|
127
|
+
- QOP 3.5 - Added `load_waveform()` to the QUA DSL.
|
|
128
|
+
- QOP 3.5 - Added new waveform type `array` to the waveforms config.
|
|
129
|
+
- Added a method `job.result_handles.fetch_results()` that allows fetching all results from a job at once. Fast fetching implementation exists only from QOP 3.5.
|
|
130
|
+
- QOP 3.5 - Added new IIR filter key `exponential_dc_gain`, which can be used instead of `high_pass` in the QUA configuration.
|
|
131
|
+
- QOP 3.5 - Added `qm.reset_digital_filters()` function.
|
|
132
|
+
- Signal power is now returned as part of the Octave calibration result (as part of the debug data).
|
|
133
|
+
- Added support for declaring data structures in QUA.
|
|
134
|
+
- QOP 3.5 - Added support for declaring, reading from, and writing to external streams in QUA.
|
|
135
|
+
- A `NoScopeFoundException` will be raised when QUA statements are added in invalid contexts.
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
- When doing a legacy save operation (or using `measure` with a stream of type string), there will no longer be a separate stream with the suffix `_timestamps`.
|
|
139
|
+
- When doing a legacy save operation (or using `measure` with a stream of type string), fetching the results with `flat_structure=True` would no longer only fetch the values without the timestamps.
|
|
140
|
+
- `DictQuaConfig` has been renamed to `FullQuaConfig`.
|
|
141
|
+
- The QUA configuration (`FullQuaConfig` / `DictQuaConfig`) should not contain a `version` anymore.
|
|
142
|
+
- QOP 3.5 - `qmm.open_qm()` now allows opening a qm only with a controller config (`ControllerQuaConfig`).
|
|
143
|
+
- `qmm.open_qm()` default for `close_other_machines` is now `None`. The behavior is the same as `None` will set it true.
|
|
144
|
+
- `result_handles.wait_for_all_values()` now returns False if the OPX1000 job fails or is canceled.
|
|
145
|
+
|
|
146
|
+
### Deprecated
|
|
147
|
+
- `qmm.open_qm()` without an explicitly set `close_other_machines` will raise a deprecation warning on the OPX1000, as the default will change to `False` in the next minor version.
|
|
148
|
+
- `qmm.store` is deprecated and will be removed in the next minor version. The values `store` and `file_store_root` have no effect anymore.
|
|
149
|
+
- The names of the classes of the stream result fetchers were changed. The old names will be deleted in the future.
|
|
150
|
+
- `qm.StreamingResultFetcher -> qm.StreamsManager`
|
|
151
|
+
- `qm.SingleStreamingResultFetcher -> qm.SingleStreamSingleResultFetcher`
|
|
152
|
+
- `qm.MultipleStreamingResultFetcher -> qm.SingleStreamMultipleResultFetcher`
|
|
153
|
+
|
|
154
|
+
### Removed
|
|
155
|
+
- Removed support for the "compressed" waveform type in `qm.get_config()`. With that, the `compressed` waveform type is no longer supported in the QUA configuration.
|
|
156
|
+
- Removed support for Python 3.8
|
|
157
|
+
- Removed support for Protobuf 3
|
|
158
|
+
|
|
159
|
+
### Fixed
|
|
160
|
+
- Fixed a bug where `job.is_finished()` incorrectly returned `False` for completed jobs.
|
|
161
|
+
- Fixed a bug where the timeout parameter in `job.result_handles.fetch_results()` was only applied to a single internal API request.
|
|
162
|
+
- Ensured `job.result_handles.fetch_results()` consistently raises `QMTimeoutError`, instead of raising regular `TimeoutError` in some scenarios.
|
|
163
|
+
- Reduced max timeout value for `job.result_handles.wait_for_all_values` to 23 days, to fix Windows gRPC timeout format errors.
|
|
164
|
+
- Saving timestamps directly to a string will now not mess up adc saving.
|
|
165
|
+
- Fix serialization for timestamps in some cases.
|
|
166
|
+
- Fixed a bug that showed a warning of no octave connection when there was no configuration of octave.
|
|
167
|
+
- Optimized `result_handles.wait_for_all_values()` in OPX1000 to improve performance.
|
|
168
|
+
- Fixed a bug that caused `generate_qua_script` to raise an error when attempting to serialize a program and configuration without a `QuantumMachineManager` instance opened.
|
|
169
|
+
- Fixed a bug that created an extra numpy array wrapping the results when using both `with_timestamps()` and `save_all()`.
|
|
170
|
+
|
|
171
|
+
## [1.2.2] - 2025-04-01
|
|
172
|
+
|
|
173
|
+
- Requires Python >=3.8, <3.13
|
|
174
|
+
- Tested against QOP 3.3, 2.4.4
|
|
175
|
+
|
|
176
|
+
### Added
|
|
177
|
+
- Added `qm.qua.type_hints` file to allow the import of type hints relevant to the QUA DSL.
|
|
178
|
+
- Added `broadcast` object to the QUA DSL, supporting the functions: `broadcast.and_()`, `broadcast.or_()` and `broadcast.xor_()`, supported from QOP 3.3.
|
|
179
|
+
- Raise an error when trying to fetch results but there is data loss on the OPX1000
|
|
180
|
+
- Added the ability to export the capabilities of the QOP, using `qmm.capabilities`.
|
|
181
|
+
- Added the ability to set capabilities without connecting to a QOP server, using the static function `QuantumMachinesManager.set_capabilities_offline()`.
|
|
182
|
+
- Added arguments to the constructor of `QuantumMachinesManager` to allow control of the connection redirection:
|
|
183
|
+
- `follow_gateway_redirections` (bool): If True (default), the client will follow redirections to find a QuantumMachinesManager and Octaves. Otherwise, it will only connect to the given host and port.
|
|
184
|
+
- `async_follow_redirects` (bool): If False (default), async httpx will not follow redirections, relevant only in case follow_gateway_redirections is True.
|
|
185
|
+
- `async_trust_env` (bool): If True (default), async httpx will read the environment variables for settings as proxy settings, relevant only in case follow_gateway_redirections is True.
|
|
186
|
+
- Added the method `add_octave_to_opx_port_mapping` to the `QmOctaveConfig`. When defined, it allows calibration of an Octave connected to multiple FEMs. This method is deprecated and will be removed in the future.
|
|
187
|
+
- Added `AbstractCalibrationDB` class to allow for custom Octave calibration databases. (`from qm.octave import AbstractCalibrationDB`)
|
|
188
|
+
- `QuantumMachinesManager` can now accept an object of type `AbstractCalibrationDB` in its `octave_calibration_db_path` argument
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
### Changed
|
|
192
|
+
- Made parameters `feedforward` and `feedback` optional in `qm.set_output_filter_by_element` (OPX+)
|
|
193
|
+
- Supports the new simulator flow in QOP 3.3 in which the `simulate` command becomes non-blocking and the job object can be interacted with. Most Job APIs are not supported yet.
|
|
194
|
+
- `qm.get_job()`, `qm.get_job_by_id()` and `qmm.get_job()` can now return a simulated job.
|
|
195
|
+
- Added new fields for filters in the LF-FEM config: `exponential` and `high_pass`. These are used in QOP 3.3 for a new mechanism for analog output IIR filters.
|
|
196
|
+
- Improved labels for the simulators' samples plot and waveform report plot
|
|
197
|
+
- The simulator's samples plot will no longer plot waveforms that are all zeros (not changed in the simulation)
|
|
198
|
+
- Refined connection error handling: Errors are now caught specifically for connection issues, rather than broadly across larger scopes as was previously the case.
|
|
199
|
+
- Improved the implementation of `wait_for_all_values` in OPX1000 to reduce latency.
|
|
200
|
+
- Improved labels for the simulators' samples plot and waveform report plot
|
|
201
|
+
- The simulator's samples plot will no longer plot waveforms that are all zeros (not changed in the simulation)
|
|
202
|
+
|
|
203
|
+
### Deprecated
|
|
204
|
+
- The `measure` command signature has changed, `stream` has been renamed `adc_stream` and moved to the end of the arguments list. The old signature is deprecated and will be removed in the future.
|
|
205
|
+
- The field `outputPulseParameters` in the element part of the config has been deprecated and will be replaced with the field `timeTaggingParameters`.
|
|
206
|
+
- `"Ascending"` and `"Descending"` have been deprecated and are replaced by `"Above"` and `"Below"` for the fields of the polarity in `timeTaggingParameters`
|
|
207
|
+
- The field `thread` in the element part of the config has been deprecated and will be replaced with the field `core`.
|
|
208
|
+
- In QOP >= 3.3, the function `fast_frame_rotation` is deprecated as it is no longer faster than frame_rotation_2pi (and in fact, it is less efficient). It will be removed in future versions.
|
|
209
|
+
- The method `job.update_oscillator_frequency` is replaced by `job.set_converter_frequency` and will be removed in the future.
|
|
210
|
+
|
|
211
|
+
### Fixed
|
|
212
|
+
- `qm.get_config()` and `job.get_compilation_config()` now return the correct default values for analog output filters.
|
|
213
|
+
- The `Math.dot()` function in qm.qua.lib supports different data types for the x and y arguments.
|
|
214
|
+
- Fixed `mypy` returning false positive type errors.
|
|
215
|
+
- The DSL now is fully typed.
|
|
216
|
+
- A `JobNotFoundException` is now raised when trying to get a job that does not exist (using functions - `qm.get_job`, `qm.get_job_by_id()` and `qmm.get_job()`).
|
|
217
|
+
- Fixed a QUA program serialization error casued by malparsing of certain variable names.
|
|
218
|
+
- Fixed wrong serialization for a random number with a seed.
|
|
219
|
+
- QOP 3.3 - It is now possible to fetch results with a large number of data points, and it will not result in a gRPC timeout.
|
|
220
|
+
- Fixed a bug that prevented calibration of octave with frequencies of type np.int32.
|
|
221
|
+
- Fixed the function `job.update_oscillator_frequency` to work on the latest QOP 3.2.
|
|
222
|
+
- Fixed a bug for OPX1000 in which `qm.get_digital_delay()` would return the digital buffer instead.
|
|
223
|
+
- Fix usage of removeprefix for Python 3.8 compatibility.
|
|
224
|
+
- Fixed a bug in the MW-FEM samples returned from the cloud simulator (using `qm-saas`) which prevented plotting them
|
|
225
|
+
|
|
226
|
+
## [1.2.1] - 2024-11-20
|
|
227
|
+
|
|
228
|
+
- Requires Python >=3.8, <3.13
|
|
229
|
+
- Tested against QOP 2.4, 3.2
|
|
230
|
+
|
|
231
|
+
### Added
|
|
232
|
+
- Python 3.12 is now supported.
|
|
233
|
+
- Serializing a QUA program after it was executed will now also include the `CompilerOptions` it was executed with.
|
|
234
|
+
- Added support of 2 Gs/s sampling rate in LF-FEM analog inputs (OPX1000 only)
|
|
235
|
+
- Added a QUA function for resetting global phase - `reset_global_phase`
|
|
236
|
+
- Octave calibrations can be done now with the octave connected to two different FEMS/controllers.
|
|
237
|
+
- Added an `octave_calibration_db_path` argument to the `QuantumMachinesManager` constructor that can be set when opening a `QuantumMachinesManager`.
|
|
238
|
+
- Added an option to set the `octave_calibration_db_path` in the `UserConfig` file.
|
|
239
|
+
- Added new math functions - atan, atan_2pi, atan2, atan2_2pi - supported from QOP 2.4.
|
|
240
|
+
- When getting the devices using 'qmm.get_devices()', temperature information will also be returned (not available for OPX1000 yet).
|
|
241
|
+
- Added an optional flag 'keep_dc_offsets_when_closing' to 'open_qm()' that prevents resetting the DC voltages back to zero when the QM is closed (not available for OPX1000 yet).
|
|
242
|
+
- QuantumMachinesManager API
|
|
243
|
+
- Added `qmm.list_open_qms()` which replaced `qmm.list_open_quantum_machines()`.
|
|
244
|
+
- Added `qmm.close_all_qms()` which replaced `qmm.close_all_quantum_machines()`.
|
|
245
|
+
- Added `qmm.get_jobs(filter_options)` to get a list of jobs that match the filter options. This function is currently only available for QOP 3.x (OPX1000) users.
|
|
246
|
+
- Added `qmm.get_job(job_id)` to get an instance of running job by its ID. This function is currently only available for QOP 3.x (OPX1000) users.
|
|
247
|
+
- Added `qmm.get_job_result_handles(job_id)` to get the results of a job by its ID. This is a backwards compatible solution that will be also removed soon.
|
|
248
|
+
- Added `qmm.get_devices()` which returns both the OPX controllers and also the Octaves connected to the system.
|
|
249
|
+
|
|
250
|
+
- QuantumMachine API
|
|
251
|
+
- Added `qm.update_config(config)` function that sets/update the **physical** properties of the qm. This function is currently only available for QOP 3.x (OPX1000) users.
|
|
252
|
+
- Added `qm.get_jobs(filter_options)` to get the jobs on the current machine.
|
|
253
|
+
|
|
254
|
+
- Job API - These function are currently only available for QOP 3.x (OPX1000) users.
|
|
255
|
+
- Added `job.get_compilation_config()` that returns the config with which the running program was compiled.
|
|
256
|
+
- Added `job.__str__` and `job.__repr__` methods for the `QmJob` class.
|
|
257
|
+
- Added `job.get_status()` to get the status of a job.
|
|
258
|
+
- Added `job.set_io_values()` to set the IO values to the running program.
|
|
259
|
+
- Added `job.set_io1_value()` to set the IO value to the running program.
|
|
260
|
+
- Added `job.set_io2_value()` to set the IO value to the running program.
|
|
261
|
+
- Added `job.get_io_values(io1_type, io2_type)` to get the IO values from the running program.
|
|
262
|
+
- Added `job.get_io1_values(as_type)` to get the IO value from the running program.
|
|
263
|
+
- Added `job.get_io2_values(as_type)` to get the IO value from the running program.
|
|
264
|
+
- Added `job.wait_until(status)` to get the job status.
|
|
265
|
+
- Added `job.is_running()` to check if the program is still actively running.
|
|
266
|
+
- Added `job.is_finished()` to check if the program is done (or canceled, or has an error).
|
|
267
|
+
- Added `job.set/get_element_correction(...)` to set/get the correction matrix currently used by the element.
|
|
268
|
+
- Added `job.set/get_intermediate_frequency(...)` to set/get the current intermediate frequency of the element
|
|
269
|
+
- Added `job.set/get_output_digital_delay(...)` to set/get the current digital delay of the element's port.
|
|
270
|
+
- Added `job.set/get_output_digital_buffer(...)` to set/get the current digital buffer of the element's port.
|
|
271
|
+
- Added `job.set/get_output_dc_offset_by_element(...)` to set/get the current dc offset of the element's port.
|
|
272
|
+
- Added `job.update_oscillator_frequency(...)` to update the MW-FEM upconverter and downconverter frequencies.
|
|
273
|
+
|
|
274
|
+
- Job API
|
|
275
|
+
- Added `job.push_to_input_stream()` which replaces `job.insert_input_stream()`
|
|
276
|
+
- Added `job.cancel()` which cancels a job in the queue or halts a running job.
|
|
277
|
+
|
|
278
|
+
- QUA
|
|
279
|
+
- `dual_demod.full()` can now be called without referencing the element's outputs, and default values are set: `dual_demod.full("cos", "sin", I)` -> `dual_demod.full("cos", "out1", "sin", "out2", I)`. This is compatible with performing demodulation with the MW-FEM.
|
|
280
|
+
- A new QUA context manager `port_condition` is introduced that allows faster conditional play for the entire port, supported with the MW-FEM.
|
|
281
|
+
|
|
282
|
+
- Config
|
|
283
|
+
- Added an FEM type called `MW`, which has its own set of properties.
|
|
284
|
+
- There is a new input to an element called `MWInput`, that references one output port in the MW-FEM.
|
|
285
|
+
- There is a new output called `MWOutput`, that references one input port in the MW-FEM.
|
|
286
|
+
|
|
287
|
+
- General
|
|
288
|
+
- Added two new stream processing commands `.real()` and `.image()`, that can be applied to a MW-FEM ADC stream.
|
|
289
|
+
|
|
290
|
+
### Changed
|
|
291
|
+
- Changed the package license to BSD-3
|
|
292
|
+
- The configuration of the digital upconverters of the MW-FEM (OPX1000) is now done in ports instead of elements, the elements now reference the relevant upconverter through the MWInput/MWOutput part of the config.
|
|
293
|
+
- `qmm.version()` - Return type has changed, `qmm.version_dict()` will give the same output as `qmm.version()` did in previous versions.
|
|
294
|
+
- Setting `close_other_qm=True` when opening a qm will no longer close **all** qms, it will only close those that are blocking the new qm (Using the same ports). If you wish to close **all** qms, please use `qmm.close_all_qms()` before.
|
|
295
|
+
- After calibration, dc offsets are set only if found LO *and* IF frequencies that match the current element state.
|
|
296
|
+
- QuantumMachinesManager API
|
|
297
|
+
- `qmm.get_controllers()` - returns also the types of the FEMs they contain. For QOP2.x (OPX+) it returns single FEM.
|
|
298
|
+
- QOP 3.x (OPX1000) users will get a new object based return when calling `qmm.version()`. For QOP 2.x (OPX+) users the returned object stays the same.
|
|
299
|
+
|
|
300
|
+
- QuantumMachine API
|
|
301
|
+
- When closing a QM with `qm.close()`, `None` will be returned instead of `True`.
|
|
302
|
+
|
|
303
|
+
- Job API
|
|
304
|
+
- `job.id` is changed to `job.get_job_id()`.
|
|
305
|
+
- When a job has data loss, an error is raised instead of a warning.
|
|
306
|
+
|
|
307
|
+
- General
|
|
308
|
+
- Simulation of MW signals returns a complex signal of the I and Q quadratures, before the upconversion.
|
|
309
|
+
- The MW-FEM ADC stream is returned as a complex float representing the I and Q quadratures.
|
|
310
|
+
|
|
311
|
+
### Fixed
|
|
312
|
+
- Fixed a bug with qm.get_config() in the OPX1000.
|
|
313
|
+
- Fixed serialization for the `.image()` and `.real()` operations in the stream processor.
|
|
314
|
+
- Fixed a false positive `Cable swap detected` error when opening a QuantumMachine with an octave when the order of the ports in the controller does not match the octave definition.
|
|
315
|
+
- Fixed an octave bug that raised an error when trying to run get_lo_source() from RF input 2
|
|
316
|
+
- Fixed the way connection to octave upconverters is done, to allow for more than one upconverter to same opx ports.
|
|
317
|
+
- Fixed `qm.get_config()` for a config with OPX1000
|
|
318
|
+
- Fixed a bug when opening a QM with an OPX1000, when `close_other_qm` to false, it will no longer close other quantum machines and will raise an error if a QM cannot be opened.
|
|
319
|
+
- At the end of the calibration, dc-offsets are set to their initial values, and not to the last values calibrated (both inputs and outputs).
|
|
320
|
+
- Fixed a bug that opened a redundant communication with Octaves in the cluster when opening a QM, even if the Octaves were not in the config.
|
|
321
|
+
- Removed the duplication of keys we have in simulation results, keys are now prefixed with "1-" or "2-" to indicate the fem index (also for OPX).
|
|
322
|
+
- Fixed an error that occurred when setting the Octave to default connectivity and also adding the OPX input ports manually to the readout element.
|
|
323
|
+
- Fixed a bug introduced in 1.1.7 that prevented multiple Octaves to be used in the same QM in some cases.
|
|
324
|
+
- Fixed validation of the pulse configuration to catch typos in operation value.
|
|
325
|
+
- Fixed a bug that set the Octave's input attenuators to 0 regardless of the config.
|
|
326
|
+
- At the end of the calibration, dc-offsets are set to their initial values, and not to the last values calibrated.
|
|
327
|
+
|
|
328
|
+
### Deprecated
|
|
329
|
+
- The method `reset_phase` is replaced by `reset_if_phase` and will be removed in the future.
|
|
330
|
+
- `octave_config.set_calibration_db` in moved to the `QuantumMachinesManager` class.
|
|
331
|
+
- QuantumMachinesManager API
|
|
332
|
+
- `qmm.list_open_quantum_machines()` has been replaced by `qmm.list_open_qms()`
|
|
333
|
+
- `qmm.close_all_quantum_machines()` has been replaced by `qmm.close_all_qms()`
|
|
334
|
+
- `qmm.open_qm_from_file()` is deprecated and will be removed in the future.
|
|
335
|
+
- `qmm.clear_all_job_results()` is deprecated and will be removed in the future.
|
|
336
|
+
|
|
337
|
+
- QuantumMachine API - These changes are currently only for QOP 3.x (OPX1000) users
|
|
338
|
+
- `save_config_to_file` is deprecated and will be removed in the future.
|
|
339
|
+
- The following methods will be moved to the job API:
|
|
340
|
+
- `qm.get_digital_buffer()` -> `job.get_output_digital_buffer()`
|
|
341
|
+
- `qm.set_digital_buffer()` -> `job.set_output_digital_buffer()`
|
|
342
|
+
- `qm.get_digital_delay()` -> `job.getoutput__digital_delay()`
|
|
343
|
+
- `qm.set_digital_delay()` -> `job.setoutput__digital_delay()`
|
|
344
|
+
- `qm.get_input_dc_offset_by_element()` -> `job.get_input_dc_offset_by_element()`
|
|
345
|
+
- `qm.set_input_dc_offset_by_element()` -> `job.set_input_dc_offset_by_element()`
|
|
346
|
+
- `qm.get_io1_value()` -> `job.get_io1_value()`
|
|
347
|
+
- `qm.set_io1_value()` -> `job.set_io1_value()`
|
|
348
|
+
- `qm.get_io2_value()` -> `job.get_io2_value()`
|
|
349
|
+
- `qm.set_io2_value()` -> `job.set_io2_value()`
|
|
350
|
+
- `qm.get_io_values()` -> `job.get_io_values()`
|
|
351
|
+
- `qm.set_io_values()` -> `job.set_io_values()`
|
|
352
|
+
- `qm.get_intermediate_frequency()` -> `job.get_intermediate_frequency()`
|
|
353
|
+
- `qm.set_intermediate_frequency()` -> `job.set_intermediate_frequency()`
|
|
354
|
+
- `qm.get_output_dc_offset_by_element()` -> `job.get_output_dc_offset_by_element()`
|
|
355
|
+
- `qm.set_output_dc_offset_by_element()` -> `job.set_output_dc_offset_by_element()`
|
|
356
|
+
- The following methods will be deprecated, these values can be set/get from the config:
|
|
357
|
+
- `qm.set_mixer_correction()`
|
|
358
|
+
- `qm.get_smearing()`
|
|
359
|
+
- `qm.get_time_of_flight()`
|
|
360
|
+
- `qm.list_controllers()`
|
|
361
|
+
- The following methods will be deprecated:
|
|
362
|
+
- `qm.get_running_job()`
|
|
363
|
+
- `qm.queue` is being deprecated, management of the queue is moving to the QM itself:
|
|
364
|
+
- `qm.queue.count()` -> `qm.get_queue_count()`
|
|
365
|
+
- `qm.queue.pending_jobs()` -> `qm.get_pending_jobs()`
|
|
366
|
+
- `qm.queue.add()` -> `qm.add_to_queue()`
|
|
367
|
+
- `qm.queue.add_compiled()` -> `qm.add_compiled()`
|
|
368
|
+
- `qm.queue.clear()` -> `qm.clear_queue()`
|
|
369
|
+
- `qm.queue.get()` -> `qm.get_job_by_id()`
|
|
370
|
+
- `qm.queue.get_by_user_id()` -> `qm.get_jobs_by_user_id()`
|
|
371
|
+
- `qm.queue.remove_by_user_id()` -> `qm.clear_jobs_by_user_id()`
|
|
372
|
+
- `qm.queue` is being deprecated, this methods will be removed in the future:
|
|
373
|
+
- `qm.queue.add_to_start()`
|
|
374
|
+
- `qm.queue.get_at()`
|
|
375
|
+
- `qm.queue.remove_by_id()`
|
|
376
|
+
- `qm.queue.remove_by_position()`
|
|
377
|
+
|
|
378
|
+
- Job API
|
|
379
|
+
- `job.insert_input_stream()` is renamed to `job.push_to_input_stream()`
|
|
380
|
+
- `job.halt()` is renamed to `job.cancel()`.
|
|
381
|
+
|
|
382
|
+
- Job API - These changes are currently only for QOP 3.x (OPX1000) users
|
|
383
|
+
- The `job.status` property is deprecated, and will be removed in the future. Please use `job.get_status()`, which has a different return type.
|
|
384
|
+
- `job.position_in_queue()` is deprecated and will be removed in the future.
|
|
385
|
+
- `job.wait_for_execution()` is deprecated and will be removed in the future. Please use `job.wait_until("Running")` instead.
|
|
386
|
+
- The property `job.manager` has been removed.
|
|
387
|
+
|
|
388
|
+
### Removed
|
|
389
|
+
- The following deprecated files were removed:
|
|
390
|
+
- QmJob.py - Class can be imported directly `from qm`.
|
|
391
|
+
- QmPendingJob.py - Class can be imported directly `from qm`.
|
|
392
|
+
- QmQueue.py - Class can be imported directly `from qm`.
|
|
393
|
+
- Program.py - Class can be imported directly `from qm`.
|
|
394
|
+
- QuaNodeVisitor.py - Class can be imported `from qm.serialization.qua_serializing_visitor`.
|
|
395
|
+
- `capabilities.py` - Can be imported `from qm.api.models.capabilitie`.
|
|
396
|
+
- `logger.py` - To use, `import logging` and then `logging.getLogger("qm")`.
|
|
397
|
+
|
|
398
|
+
- The following deprecated methods were removed:
|
|
399
|
+
- `save_to_store` - Function is removed.
|
|
400
|
+
- `job.id()` - Function removed, use `job.id` instead.
|
|
401
|
+
- `qm.manager()` - Function removed.
|
|
402
|
+
- `qm.peek()` - Function removed.
|
|
403
|
+
- `qm.poke()` - Function removed.
|
|
404
|
+
- `qmm.close()` - Function removed.
|
|
405
|
+
|
|
406
|
+
## [1.1.7] - 2024-02-19
|
|
407
|
+
|
|
408
|
+
- Requires Python >=3.8, <3.12
|
|
409
|
+
- Tested against QOP 1.2, 2.2
|
|
410
|
+
|
|
411
|
+
### Changed
|
|
412
|
+
- Changed the flag `check_for_errors` default, in all fetching functions, to `True`. This will produce a warning if any run-time errors are detected during the job execution.
|
|
413
|
+
- Importing everything from `qm.qua` (`from qm.qua import *`) will no longer import external libraries such as NumPy and logging.
|
|
414
|
+
|
|
415
|
+
### Fixed
|
|
416
|
+
- Fixed a bug that disabled external loggers when importing the qm-qua package.
|
|
417
|
+
- Fixed a bug that prevented the waveform reporting from generating.
|
|
418
|
+
- Fixed the plot label units in the waveform report.
|
|
419
|
+
- Optimized the program's execution latency, especially for larger programs.
|
|
420
|
+
- Optimized the latency for setting and reading the Octave's LO frequency.
|
|
421
|
+
- Speed up QMM initialization by removing an unneeded call to Octave clients.
|
|
422
|
+
- Fixed the Octave calibration algorithm to shut down upconverters and downconverters during calibration, so that the calibration will not be affected by RF in.
|
|
423
|
+
- Fixed cases in which compilation errors related to elements were given without a location.
|
|
424
|
+
- Fixed a bug that prevents setting the downconverter's frequency when connected through a loopback.
|
|
425
|
+
- Fixed a bug that prevented connecting one pair of OPX outputs to different Octave upconverters.
|
|
426
|
+
|
|
427
|
+
### Added
|
|
428
|
+
- Added the option to receive Octaves with the cluster when opening a QuantumMachinesManager, instead of manually giving their addresses using `OctaveConfig`. This requires QOP 2.4.0 or above.
|
|
429
|
+
- Added `program.to_protobuf(config)` and `program.to_file('my_program.pb', config)` to save a program to memory or to disk.
|
|
430
|
+
- Added `Program.from_protobuf(config)` and `Program.from_file('my_program.pb', config)` to load a serialized program from memory or to disk.
|
|
431
|
+
- Added support for OPX1000 – The config controller seciotn now accepts a controller of type "OPX1000", and the element’s input and output ports can now indicate which FEM is to be used.
|
|
432
|
+
- `Variable` class is now exported to allow type checking.
|
|
433
|
+
- Connections’ headers are now forwarded to the Octaves.
|
|
434
|
+
- Connections’ headers are now indicating to which device the message belongs to.
|
|
435
|
+
|
|
436
|
+
### Deprecation
|
|
437
|
+
- Deprecated old Octave configuration API; these functions will be removed in a future version.
|
|
438
|
+
- Deprecated `Program.build`; this function will be removed in the next minor version. Instead, you can use `Program.qua_program`.
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
### Removed
|
|
442
|
+
- Dropped support of Python 3.7.
|
|
443
|
+
|
|
444
|
+
### Known Issues
|
|
445
|
+
- At the end of the Octave calibration, dc-offsets stay at the last values calibrated.
|
|
446
|
+
- Connecting an octave to two or more FEMs / OPX+es is unsupported and will give an undescriptive error.
|
|
447
|
+
- An Octave connected to a 2 Gs/s OPX1000 port will not calibrate and will give a compilation error. As a workaround, set the port to 1 Gs/s, calibrate, and then set it back to 2 Gs/s.
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
## [1.1.6] - 2023-11-19
|
|
451
|
+
### Fixed
|
|
452
|
+
- Fixed the serialization if a list was used for port definition instead of a tuple
|
|
453
|
+
- Fixed a bug which prevented the waveform reporting from generating plots (bad encoding)
|
|
454
|
+
|
|
455
|
+
### Added
|
|
456
|
+
- When empty loopback is given, it is treated as no loopbacks interface.
|
|
457
|
+
- Python 3.11 is now supported
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
## [1.1.5.1] - 2023-10-30
|
|
461
|
+
### Fixed
|
|
462
|
+
- Downgrading from this version will not break the Octave (Introduced in 1.1.5)
|
|
463
|
+
- Saving timestamps directly to a string will now not mess up adc saving
|
|
464
|
+
- Improved serialization handling of streams, fixes issues in some cases
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
## [1.1.5] - 2023-10-22
|
|
468
|
+
|
|
469
|
+
**Note, this version was [Yanked](https://pypi.org/help/#yanked), downgrading from this version could lead to issues, this was fixed in 1.1.5.1**
|
|
470
|
+
|
|
471
|
+
### Fixed
|
|
472
|
+
- Fixed simulations with negative IF frequency (in mixer).
|
|
473
|
+
- Deprecation warnings will now be shown for imports in IPython
|
|
474
|
+
- Improved octave calibration algorithm.
|
|
475
|
+
|
|
476
|
+
### Added
|
|
477
|
+
- Added new API for octave configuration, through the QUA config dict (except for the octave's IP and port)
|
|
478
|
+
|
|
479
|
+
### Deprecation
|
|
480
|
+
- All the functions that config octave through the OctaveConfig object
|
|
481
|
+
- All the functions that config the octave through the QMOctave object
|
|
482
|
+
|
|
483
|
+
## [1.1.4] - 2023-09-07
|
|
484
|
+
### Deprecation
|
|
485
|
+
- Starting from version 1.2.0, `QuantumMachinesMananger.version()` will have a different return type.
|
|
486
|
+
- `ServerDetails.qop_version` has been renamed to `ServerDetails.server_version`.
|
|
487
|
+
|
|
488
|
+
### Added
|
|
489
|
+
- Added `QuantumMachinesMananger.version_dict()` which returns a dict with two keys `qm-qua` and `QOP`.
|
|
490
|
+
- Two new keys were added to the dict returned by `QuantumMachinesMananger.version()`: `qm-qua` and `QOP`.
|
|
491
|
+
|
|
492
|
+
### Fixed
|
|
493
|
+
- Fixed missing import of `ClockMode`.
|
|
494
|
+
- Fixed simulations with negative IF frequency (in mixer).
|
|
495
|
+
- Fixed simulations with the new sticky API.
|
|
496
|
+
- Fixed conversion back to ns of the sticky duration for the config received from the OPX.
|
|
497
|
+
- Fixed rare cases in which the octave failed to boot.
|
|
498
|
+
- Fixed the serialization for a list in a `.maps(FUNCTION.average(list))` call in the stream processing.
|
|
499
|
+
- Serialization will now not give an error if it fails to generate a config with the QMM configuration.
|
|
500
|
+
- Intermediate frequency returns with the same sign as it was set in te config.
|
|
501
|
+
- Deprecation warnings are now shown by default.
|
|
502
|
+
|
|
503
|
+
### Changed
|
|
504
|
+
- If no port is given to `QuantumMachinesManager`, and there isn't a saved configuration file, it will default to `80` (instead of `80` & `9510`)
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
## [1.1.3] - 2023-05-29
|
|
508
|
+
### Fixed
|
|
509
|
+
- Fixed negative IF freq handling in config builder
|
|
510
|
+
- Sticky Element duration is to be given in ns and not clock cycles
|
|
511
|
+
- Fixed a bug that prevents opening many QMMs/QMs due to thread exhaustion when creating Octave clients.
|
|
512
|
+
- The deprecated `strict` and `flags` arguments now work but give a deprecation warning.
|
|
513
|
+
- Fixed the version of typing-extensions, to prevent import-error
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
## [1.1.2] - 2023-05-11
|
|
517
|
+
### Deprecation
|
|
518
|
+
- Moved `qm.QuantumMachinesManager.QuantumMachinesManager` path to `qm.quantum_machines_manager.QuantumMachinesManager`. Old path will be removed in 1.2.0
|
|
519
|
+
|
|
520
|
+
### Added
|
|
521
|
+
- Added `qmm.validate_qua_config()` for config validation without opening a qm
|
|
522
|
+
- Added support for getting clusters by name in `QuantumMachinesManager`
|
|
523
|
+
- Added a `py.typed` file, that marks the package as supporting type-hints.
|
|
524
|
+
- Added a default (minimal) duration for sticky elements
|
|
525
|
+
- Added `qm.get_job(job_id)` to retreieve previously ran jobs
|
|
526
|
+
|
|
527
|
+
### Fixed
|
|
528
|
+
- Fixed creating credentials for authentication in gRPC
|
|
529
|
+
- Removed redundant entry from element generated class (`up_converted`)
|
|
530
|
+
- Float frequency support - fixed the creation of config classes so integer frequency will always exist
|
|
531
|
+
- Fixed creating a mixer dict-config from protobuf class instance
|
|
532
|
+
- Fixed error raised when fetching saved data in the backwards compatible
|
|
533
|
+
- Fixed creating a digital port dict-config from protobuf class instance
|
|
534
|
+
- Fixed event-loop Windows bug of creating multiple instances of QuantumMachine
|
|
535
|
+
|
|
536
|
+
## [1.1.1] - 2023-03-20
|
|
537
|
+
### Fixed
|
|
538
|
+
- Fixed long delay while waiting for values
|
|
539
|
+
|
|
540
|
+
## [1.1.0] - 2023-03-16
|
|
541
|
+
|
|
542
|
+
**Note, this version (and all future versions) does not support QOP 2.0.0 or 2.0.1**
|
|
543
|
+
|
|
544
|
+
### Deprecation
|
|
545
|
+
- The `hold_offset` entry in the config is deprecated and is replaced by a new `sticky` entry with an improved API
|
|
546
|
+
- Moved `_Program` path to `qm.program.program.Program`. Old path will be removed in 1.2.0
|
|
547
|
+
- Moved `QmJob` path to `qm.jobs.qm_job.QmJob`. Old path will be removed in 1.2.0
|
|
548
|
+
- Moved `QmPendingJob` path to `qm.jobs.pending_job.QmPendingJob`. Old path will be removed in 1.2.0
|
|
549
|
+
- Moved `QmQueue` path to `qm.jobs.job_queue.QmQueue`. Old path will be removed in 1.2.0
|
|
550
|
+
- Renamed `JobResults` into `StreamingResultFetcher`. Old name will be removed in 1.2.0
|
|
551
|
+
- Moved `StreamingResultFetcher` path to `qm.results.StreamingResultFetcher`.
|
|
552
|
+
- `QmJob.id()` is deprecated, use `QmJob.id` instead, will be removed in 1.2.0
|
|
553
|
+
- `QmJob` no longer has `manager` property
|
|
554
|
+
- `QmPendingJob.id()` is deprecated, use `QmPendingJob.id` instead, will be removed in 1.2.0
|
|
555
|
+
- `QuantumMachine` no longer has `manager` property
|
|
556
|
+
- `QuantumMachine.peek` is removed (was never implemented)
|
|
557
|
+
- `QuantumMachine.poke` is removed (was never implemented)
|
|
558
|
+
- `IsInt()` function for qua variables is deprecated, use `is_int()` instead, will be removed in 1.2.0
|
|
559
|
+
- `IsFixed()` function for qua variables is deprecated, use `is_fixed()` instead, will be removed in 1.2.0
|
|
560
|
+
- `IsBool()` function for qua variables is deprecated, use `is_bool()` instead, will be removed in 1.2.0
|
|
561
|
+
- `set_clock` method of the octave changed API, old API will be removed in 1.2.0.
|
|
562
|
+
- Deprecated the `strict` and `flags` kwargs arguments in the `execute` and `simulate` functions.
|
|
563
|
+
|
|
564
|
+
### Added
|
|
565
|
+
- Added autocorrection for config dict in IDEs, when creating a config, add the following: `config: DictQuaConfig = {...}`.
|
|
566
|
+
- Added the option to invert the digital markers in a quantum machine by indicating it in the config.
|
|
567
|
+
- Support `fast_frame_rotation`, a frame rotation with a cosine and sine rotation matrix rather than an angle.
|
|
568
|
+
- Added support for floating point numbers in the `intermediate_frequency` field of `element` .
|
|
569
|
+
- Conditional `play` is extended to both the digital pulse if defined for operation.
|
|
570
|
+
- Extended the sticky capability to include the digital pulse (optional)
|
|
571
|
+
- Added option to validate QUA config with protobuf instead of marshmallow. It is usually faster when working with large configs, to use this feature, set `validate_with_protobuf=True` while opening a quantum machine.
|
|
572
|
+
- Added type hinting for all `qua` functions and programs
|
|
573
|
+
- Added another way of getting results from job results: `job.result_handles["result_name"]`.`
|
|
574
|
+
- Octave reset request command added to "Octave manager".
|
|
575
|
+
- Added support for octave configuration inside the QUA-config dictionary, this will later deprecate the `OctaveConfig` object, which is still supported
|
|
576
|
+
- Added objects that reflects the elements in the `QuantumMachine` instance.
|
|
577
|
+
- Added the waveform report for better displaying simulation results.
|
|
578
|
+
|
|
579
|
+
### Changed
|
|
580
|
+
- Updated `play` docstrings to reflect that the changes to conditional digital pulse.
|
|
581
|
+
- Changed octave's `set_clock` API.
|
|
582
|
+
- Changed and improved internal grpc infrastructure
|
|
583
|
+
- Changed and improved async infrastructure
|
|
584
|
+
|
|
585
|
+
## [1.0.2] - 2023-01-01
|
|
586
|
+
### Removed
|
|
587
|
+
- Removed deprecated `math` library (use {class}`~qm.qua.lib.Math` instead).
|
|
588
|
+
- Removed deprecated `qrun_` context manager (use {func}`~qm.qua.strict_timing_` instead).
|
|
589
|
+
|
|
590
|
+
### Added
|
|
591
|
+
- Better exception error printing.
|
|
592
|
+
- An api to add more information to error printing `activate_verbose_errors`
|
|
593
|
+
- Add support for OPD (Please check [the OPD documentation](https://docs.quantum-machines.co/latest/docs/Hardware/dib/) for more details).
|
|
594
|
+
- Added timestamps for {func}`~qm.qua.play` and {func}`~qm.qua.measure` statements.
|
|
595
|
+
- Support for numpy float128.
|
|
596
|
+
- Added the function {func}`qm.user_config.create_new_user_config` to create a configuration file with the QOP host IP & Port to allow opening {func}`~qm.QuantumMachinesManager.QuantumMachinesManager` without inputs.
|
|
597
|
+
- Added infrastructure for anonymous log sending (by default, no logs are sent).
|
|
598
|
+
|
|
599
|
+
### Fixed
|
|
600
|
+
- Serializer - Added support for averaging on different axes.
|
|
601
|
+
- Serializer - Remove false message about lacking `play(ramp()...)` support.
|
|
602
|
+
- Serializer - Fixed the serialization when `.length()` is used.
|
|
603
|
+
- Serializer - Fixed cases in which the serializer did not deal with `adc_trace=true` properly.
|
|
604
|
+
- Serializer - The serializer does not report failed serialization when the only difference is the streams' order.
|
|
605
|
+
- Serializer - The serializer now correctly serialize the configuration when an element's name has a `'`.
|
|
606
|
+
|
|
607
|
+
## [1.0.1] - 2022-09-22
|
|
608
|
+
### Changed
|
|
609
|
+
- Octave - Added a flag to not close all the quantum machines in {func}`~qm.octave.qm_octave.QmOctaveBase.calibrate_element`.
|
|
610
|
+
- Octave - The quantum machine doing the calibrations will be closed after the calibration is done.
|
|
611
|
+
|
|
612
|
+
## [1.0.0] - 2022-09-04
|
|
613
|
+
- Removed deprecated entries from the configuration schema
|
|
614
|
+
- Removed dependency in `qua` package
|
|
615
|
+
### Fixed
|
|
616
|
+
- QuantumMachineManager - Fixed a bug where you could not connect using SSL on python version 3.10+
|
|
617
|
+
- Serializer - Fixed `declare_stream()` with `adc_true=True`
|
|
618
|
+
### Changed
|
|
619
|
+
- Update betterproto version.
|
|
620
|
+
- OctaveConfig: changed `set_device_info` name to `add_device_info`
|
|
621
|
+
- OctaveConfig: changed `add_opx_connections` name to `add_opx_octave_port_mapping`
|
|
622
|
+
- OctaveConfig: changed `get_opx_octave_connections` name to `get_opx_octave_port_mapping`
|
|
623
|
+
### Added
|
|
624
|
+
- API to control Octave - an up-conversion and down-conversion module with built-in Local Oscillator (LO) sources.
|
|
625
|
+
- Support Numpy as input - Support numpy scalars and arrays as valid input. Numpy object can now be used interchangeably with python scalars and lists. This applies to all statements imported with `from qm.qua import *`
|
|
626
|
+
- Serializer - Added support for legacy save
|
|
627
|
+
|
|
628
|
+
## [0.3.8] - 2022-07-10
|
|
629
|
+
### Fixed
|
|
630
|
+
- Serializer - Fixed a bug which caused binary expression to fail
|
|
631
|
+
### Changed
|
|
632
|
+
- QuantumMachineManager will try to connect to 80 before 9510 if the user did not specify a port.
|
|
633
|
+
- QuantumMachineManager will give an error if no host is given and config file does not contain one.
|
|
634
|
+
- QRun - Change qrun to strict_timing
|
|
635
|
+
- Input Stream - Fixed API for input stream
|
|
636
|
+
### Added
|
|
637
|
+
- Serializer - add strict_timing to serializer
|
|
638
|
+
- Logger - Can now add an environment variable to disable the output to stdout
|
|
639
|
+
|
|
640
|
+
## [0.3.7] - 2022-05-31
|
|
641
|
+
### Fixed
|
|
642
|
+
- Serializer - Fixed a bug which caused the serializer to fail when given completely arbitrary integration weights
|
|
643
|
+
- Serializer - Fixed a bug which caused the serializer to fail when given a list of correction matrices
|
|
644
|
+
- Serializer - Added support for "pass" inside blocks (if, for, etc). "pass" inside "else" is not supported.
|
|
645
|
+
### Added
|
|
646
|
+
- play - Add support for continue chirp feature
|
|
647
|
+
- High Resolution Time Tagging - Add support for high resolution time-tagging measure process
|
|
648
|
+
- Input Stream - Add support for streaming data from the computer to the program
|
|
649
|
+
- OPD - Added missing OPD timetagging function
|
|
650
|
+
### Changed
|
|
651
|
+
- set_dc_offset - 2nd input for function was renamed from `input_reference` to `element_input`
|
|
652
|
+
- QuantumMachineManager will try to connect to ports 9510 and 80 if the user did not specify a port.
|
|
653
|
+
- set_output_dc_offset_by_element - can now accept a tuple of ports and offsets
|
|
654
|
+
- `signalPolarity` in the timetagging parameters (`outputPulseParameters` in configuration) now accept `Above` and `Below` instead of `Rising` and `Falling`, which better represent it's meaning.
|
|
655
|
+
|
|
656
|
+
## [0.3.6] - 2022-01-23
|
|
657
|
+
### Added
|
|
658
|
+
- `signalPolarity` in the timetagging parameters (`outputPulseParameters` in configuration) now accept also `Rising` and `Falling`, which better represent it's meaning.
|
|
659
|
+
- `derivativePolarity` in the timetagging parameters (`outputPulseParameters` in configuration) now accept also `Above` and `Below`, which better represent it's meaning.
|
|
660
|
+
- Add unsafe switch to `generate_qua_config` function.
|
|
661
|
+
- Add library functions and `amp()` in measure statement to `generate_qua_config` function.
|
|
662
|
+
### Changed
|
|
663
|
+
- Better error for library functions as save source
|
|
664
|
+
|
|
665
|
+
## [0.3.5] - 2021-12-27
|
|
666
|
+
### Added
|
|
667
|
+
- Raises an error when using Python logical operators
|
|
668
|
+
- Add elif statement to `generate_qua_config` function
|
|
669
|
+
|
|
670
|
+
### Changed
|
|
671
|
+
- Fix indentation problem on the end of for_each block in `generate_qua_config` function
|
|
672
|
+
- The `generate_qua_config` now compresses lists to make the resulting file smaller and more readable
|
|
673
|
+
|
|
674
|
+
## [0.3.4] - 2021-12-05
|
|
675
|
+
### Added
|
|
676
|
+
- Define multiple elements with shared oscillator.
|
|
677
|
+
- Define an analog port with channel weights.
|
|
678
|
+
- Add measure and play features to `generate_qua_config` function
|
|
679
|
+
- format `generate_qua_config` function output
|
|
680
|
+
- improve `wait_for_all_values` execution time
|
|
681
|
+
|
|
682
|
+
## [0.3.3] - 2021-10-24
|
|
683
|
+
### Added
|
|
684
|
+
- Define an analog port with delay.
|
|
685
|
+
- New `set_dc_offset()` statement that can change the DC offset of element input in real time.
|
|
686
|
+
- New input stream capabilities facilitating data transfer from job to QUA.
|
|
687
|
+
- New flag for stream processing fft operator to control output type.
|
|
688
|
+
- Add information about demod on a tuple.
|
|
689
|
+
- Added best practice guide.
|
|
690
|
+
### Changed
|
|
691
|
+
- Validate that element has one and only one of the available input type QMQUA-26
|
|
692
|
+
|
|
693
|
+
## [0.3.2] - 2021-10-03
|
|
694
|
+
### Added
|
|
695
|
+
- QuantumMachinesManager health check shows errors and warnings.
|
|
696
|
+
- Fetching job results indicates if there were execution errors.
|
|
697
|
+
- Define an element with multiple input ports.
|
|
698
|
+
- Stream processing demod now supports named argument `integrate`. If `False` is provided the demod will not sum the items, but only multiply by weights.
|
|
699
|
+
### Changed
|
|
700
|
+
- Documentation structure and content.
|
|
701
|
+
|
|
702
|
+
## [0.3.1] - 2021-09-13
|
|
703
|
+
### Fixed
|
|
704
|
+
- Fixed serialization of IO values.
|
|
705
|
+
- Support running `QuantumMachinesManager` inside ipython or jupyter notebook.
|
|
706
|
+
### Changed
|
|
707
|
+
- Removing deprecation notice from `with_timestamps` method on result streams.
|
|
708
|
+
- Setting `time_of_flight` or `smearing` are required if element has `outputs` and must not appear if it does not.
|
|
709
|
+
|
|
710
|
+
## [0.3.0] - 2021-09-03
|
|
711
|
+
### Changed
|
|
712
|
+
- Support for result fetching of both versions of QM Server.
|
|
713
|
+
- Now the SDK supports all version of QM server.
|
|
714
|
+
|
|
715
|
+
## [0.2.1] - 2021-09-01
|
|
716
|
+
### Changed
|
|
717
|
+
- Default port when creating new `QuantumMachineManager` is now `80` and user config file is ignored.
|
|
718
|
+
|
|
719
|
+
## [0.2.0] - 2021-08-31
|
|
720
|
+
### Added
|
|
721
|
+
- The original QM SDK for QOP 2.
|
|
722
|
+
|
|
723
|
+
## [0.1.0] - 2021-08-31
|
|
724
|
+
### Added
|
|
725
|
+
- The original QM SDK for QOP 1.
|