Enforce always adding HardwareOptions to HardwareCompilationConfig
Explanation of changes
- Makes HardwareOptions required field in the HardwareCompilationConfig. (zero hardware options are still supported, because all hw options fields are optional; all a user has to do is add a
"hardware_options": {}to the hardware compilation config input dictionary). - Allows omitting "frequency" key in LO settings Qblox backend to avoid unclear KeyError (#446 (closed)).
The below code now no longer raises a "frequency" KeyError (see #446 (closed)), but an ValidationError that the HardwareOptions are missing.
def test_unclear_error(
mock_setup_basic_transmon_with_standard_params,
hardware_compilation_config_qblox_example,
):
hardware_config = hardware_compilation_config_qblox_example
mock_setup = mock_setup_basic_transmon_with_standard_params
quantum_device = mock_setup["quantum_device"]
del hardware_config["hardware_options"]
quantum_device.hardware_config(hardware_config)
qubit = mock_setup["q0"]
schedule = Schedule("frequency valueerror")
schedule.add(Measure(qubit.name))
compiler = SerialCompiler("compiler", quantum_device=quantum_device)
compiled_schedule = compiler.compile(schedule)
Motivation of changes
Closes #446 (closed)
Merge checklist
See also merge request guidelines
-
Merge request has been reviewed (in-depth by a knowledgeable contributor), and is approved by a project maintainer. -
New code is covered by unit tests (or N/A). -
New code is documented and docstrings use numpydoc format (or N/A). -
New functionality: considered making private instead of extending public API (or N/A). -
Public API changed: added @deprecated(or N/A). -
Newly added/adjusted documentation and docstrings render properly (or N/A). -
Pipeline fix or dependency update: post in #software-for-developerschannel to mergemainback in or update local packages (or N/A). -
Tested on hardware (or N/A). -
CHANGELOG.mdandAUTHORS.mdhave been updated (or N/A). -
Windows tests in CI pipeline pass (manually triggered by maintainers before merging). - Maintainers do not hit Auto-merge, we need to actively check as manual tests do not block pipeline
For reference, the issues workflow is described in the contribution guidelines.
Edited by Tobias Bonsen