docs: def _pack(formatstring, value):
      """Pack a value into a bytestring.
  
      Uses the built-in :mod:`struct` Python module.
  
      Args:
          * formatstring (str): String for the packing. See the :mod:`struct` module for details.
          * value (depends on formatstring): The value to be packed
  
      Returns:
          A bytestring (str).
  
      Raises:
          ValueError
  
      Note that the :mod:`struct` module produces byte buffers for Python3,
      but bytestrings for Python2. This is compensated for automatically.
  
      """
      _checkString(formatstring, description='formatstring', minlength=1)
  
      try:
          result = struct.pack(formatstring, value)
      except:
          errortext = 'The value to send is probably out of range, as the num-to-bytestring conversion failed.'
          errortext += ' Value: {0!r} Struct format code is: {1}'
          raise ValueError(errortext.format(value, formatstring))
  
      if sys.version_info[0] > 2:
          return str(result, encoding='latin1')  # Convert types to make it Python3 compatible
      return result