def __init__(
        self,
        measurement_duration: cirq.DURATION_LIKE,
        twoq_gates_duration: cirq.DURATION_LIKE,
        oneq_gates_duration: cirq.DURATION_LIKE,
        qubits: Iterable[cirq.LineQubit],
    ) -> None:
        """Initializes the description of an ion trap device.

        Args:
            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.
            qubits: Qubits on the device, identified by their x location.

        Raises:
            TypeError: If not all the qubits supplied are `cirq.LineQubit`s.
        """
        if not all(isinstance(qubit, cirq.LineQubit) for qubit in qubits):
            raise TypeError(
                "All qubits were not of type cirq.LineQubit, instead were "
                f"{set(type(qubit) for qubit in qubits)}"
            )
        self.qubits = frozenset(qubits)

        graph = nx.Graph()
        graph.add_edges_from([(a, b) for a in qubits for b in qubits if a != b], directed=False)
        self._metadata = aqt_device_metadata.AQTDeviceMetadata(
            qubits=self.qubits,
            measurement_duration=measurement_duration,
            twoq_gates_duration=twoq_gates_duration,
            oneq_gates_duration=oneq_gates_duration,
        )
Initializes the description of an ion trap device.

        Args:
            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.
            qubits: Qubits on the device, identified by their x location.

        Raises:
            TypeError: If not all the qubits supplied are `cirq.LineQubit`s.
        
cirq-aqt/cirq_aqt/aqt_device.py