def __init__(
        self,
        qubits: Iterable[cirq.LineQubit],
        measurement_duration: cirq.DURATION_LIKE,
        twoq_gates_duration: cirq.DURATION_LIKE,
        oneq_gates_duration: cirq.DURATION_LIKE,
    ):
        """Create metadata object for AQTDevice.

        Args:
            qubits: Iterable of `cirq.LineQubit`s that exist on the device.
            measurement_duration: The maximum duration of a measurement.
            twoq_gates_duration: The maximum duration of a two qubit operation.
            oneq_gates_duration: The maximum duration of a single qubit operation.
        """

        graph = nx.Graph()
        graph.add_edges_from([(a, b) for a in qubits for b in qubits if a != b], directed=False)
        super().__init__(qubits, graph)
        self._gateset = aqt_target_gateset.AQTTargetGateset()
        self._measurement_duration = cirq.Duration(measurement_duration)
        self._twoq_gates_duration = cirq.Duration(twoq_gates_duration)
        self._oneq_gates_duration = cirq.Duration(oneq_gates_duration)
        self._gate_durations = {
            cirq.GateFamily(cirq.MeasurementGate): self._measurement_duration,
            cirq.GateFamily(cirq.XXPowGate): self._twoq_gates_duration,
            cirq.GateFamily(cirq.ZPowGate): self._oneq_gates_duration,
            cirq.GateFamily(cirq.PhasedXPowGate): self._oneq_gates_duration,
        }
        assert not self._gateset.gates.symmetric_difference(self._gate_durations.keys()), (
            "AQTDeviceMetadata.gate_durations must have the same Gates " "as AQTTargetGateset."
        )
Create metadata object for AQTDevice.

        Args:
            qubits: Iterable of `cirq.LineQubit`s that exist on the device.
            measurement_duration: The maximum duration of a measurement.
            twoq_gates_duration: The maximum duration of a two qubit operation.
            oneq_gates_duration: The maximum duration of a single qubit operation.
        
cirq-aqt/cirq_aqt/aqt_device_metadata.py