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-developers channel to merge main back in or update local packages (or N/A).
  • Tested on hardware (or N/A).
  • CHANGELOG.md and AUTHORS.md have 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

Merge request reports

Loading