Source code for braket.emulation.passes.circuit_passes.qubit_count_validator

# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
#     http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

from braket.circuits import Circuit
from braket.emulation.passes import ValidationPass
from braket.program_sets import ProgramSet


[docs] class QubitCountValidator(ValidationPass): def __init__(self, qubit_count: int): """ A QubitCountValidator instance validates that a circuit does not use more qubits than available on a device. Args: qubit_count (int): The number of qubits on the device Raises: ValueError: If the circuit uses more qubits than available on a device. """ if qubit_count <= 0: raise ValueError(f"qubit_count ({qubit_count}) must be a positive integer.") self._qubit_count = qubit_count self._supported_specifications = Circuit | ProgramSet
[docs] def validate(self, circuit: Circuit | ProgramSet) -> None: """ Checks that the number of qubits used in this circuit does not exceed this validator's qubit_count max. Args: circuit (Circuit | ProgramSet): The Braket circuit whose qubit count to validate. Raises: ValueError: If the number of qubits used in the circuit exceeds the qubit_count. """ if isinstance(circuit, ProgramSet): for item in circuit: self.validate(item) return if circuit.qubit_count > self._qubit_count: raise ValueError( f"Circuit must use at most {self._qubit_count} qubits, \ but uses {circuit.qubit_count} qubits." )