docs: def write(self, bytes):
          """Write data to the memory.
  
          .. note::
              Writes beyond the specified memory range will be truncated and a
              :py:exc:`.TruncationWarning` is produced. These warnings can be
              converted into exceptions using :py:func:`warnings.simplefilter`::
  
                  >>> import warnings
                  >>> from rig.machine_control.machine_controller \\
                  ...     import TruncationWarning
                  >>> warnings.simplefilter('error', TruncationWarning)
  
          Parameters
          ----------
          bytes : :py:class:`bytes`
              Data to write to the memory as a bytestring.
  
          Returns
          -------
          int
              Number of bytes written.
          """
          if self.address + len(bytes) > self._end_address:
              n_bytes = self._end_address - self.address
  
              warnings.warn("write truncated from {} to {} bytes".format(
                  len(bytes), n_bytes), TruncationWarning, stacklevel=3)
              bytes = bytes[:n_bytes]
  
          if len(bytes) == 0:
              return 0
  
          # Perform the write and increment the offset
          self._parent._perform_write(self.address, bytes)
          self._offset += len(bytes)
          return len(bytes)