code: def _get_qvm_qc(name: str, qvm_type: str, device: AbstractDevice, noise_model: NoiseModel = None,
                  requires_executable: bool = False,
                  connection: ForestConnection = None) -> QuantumComputer:
      
      if connection is None:
          connection = ForestConnection()
  
      return QuantumComputer(name=name,
                             qam=_get_qvm_or_pyqvm(
                                 qvm_type=qvm_type,
                                 connection=connection,
                                 noise_model=noise_model,
                                 device=device,
                                 requires_executable=requires_executable),
                             device=device,
                             compiler=QVMCompiler(
                                 device=device,
                                 endpoint=connection.compiler_endpoint))
docs: Construct a QuantumComputer backed by a QVM.
  
      This is a minimal wrapper over the QuantumComputer, QVM, and QVMCompiler constructors.
  
      :param name: A string identifying this particular quantum computer.
      :param qvm_type: The type of QVM. Either qvm or pyqvm.
      :param device: A device following the AbstractDevice interface.
      :param noise_model: An optional noise model
      :param requires_executable: Whether this QVM will refuse to run a :py:class:`Program` and
          only accept the result of :py:func:`compiler.native_quil_to_executable`. Setting this
          to True better emulates the behavior of a QPU.
      :param connection: An optional :py:class:`ForestConnection` object. If not specified,
          the default values for URL endpoints will be used.
      :return: A QuantumComputer backed by a QVM with the above options.