docs: def make(content, error=None, version=None, mode=None, mask=None, encoding=None,
           eci=False, micro=None, boost_error=True):
      """\
      Creates a (Micro) QR Code.
  
      This is main entry point to create QR Codes and Micro QR Codes.
  
      Aside from `content`, all parameters are optional and an optimal (minimal)
      (Micro) QR Code with a maximal error correction level (minimum "M") is
      generated.
  
      :param content: The data to encode. Either a Unicode string, an integer or
              bytes. If bytes are provided, the `encoding` parameter should be
              used to specify the used encoding.
      :type content: str, int, bytes
      :param error: Error correction level. If ``None`` (default), error
              correction level ``L`` is used (note: Micro QR Code version M1 does
              not support error correction. If an explicit error level is used,
              a M1 QR Code won't be generated).
              Valid values: ``None`` (allowing generation of M1 codes or use error
              correction level "L" or better see ``boost_error``), "L", "M", "Q",
              "H" (error correction level "H" isn't available for Micro QR Codes).
  
              =====================================   ===========================
              Error correction level                  Error correction capability
              =====================================   ===========================
              L (Segno's default unless version M1)   recovers  7% of data
              M                                       recovers 15% of data
              Q                                       recovers 25% of data
              H (not available for Micro QR Codes)    recovers 30% of data
              =====================================   ===========================
  
              Higher error levels may require larger QR Codes (see also `version`
              parameter).
  
              The `error` parameter is case insensitive.
  
              See also the `boost_error` parameter.
      :type error: str, unicode or None
      :param version: QR Code version. If the value is ``None`` (default), the
              minimal version which fits for the input data will be used.
              Valid values: "M1", "M2", "M3", "M4" (for Micro QR Codes) or an
              integer between 1 and 40 (for QR Codes).
              The `version` parameter is case insensitive.
      :type version: int, str, unicode or None.
      :param mode: "numeric", "alphanumeric", "byte", or "kanji". If the value is
              ``None`` (default) the appropriate mode will automatically be
              determined.
              If `version` refers a to Micro QR Code, this function may raise a
              :py:class:`ModeError` if the provided `mode` is not supported.
  
              ============    =======================
              Mode            (Micro) QR Code Version
              ============    =======================
              numeric         1 - 40, M1, M2, M3, M4
              alphanumeric    1 - 40,     M2, M3, M4
              byte            1 - 40,         M3, M4
              kanji           1 - 40,         M3, M4
              ============    =======================
  
              The `mode` parameter is case insensitive.
  
      :type mode: str, unicode, or None
      :param mask: Data mask. If the value is ``None`` (default), the
              appropriate data mask is choosen automatically. If the `mask`
              parameter if provided, this function may raise a :py:exc:`MaskError`
              if the mask is invalid.
      :type mask: int or None
      :param encoding: Indicates the encoding in mode "byte". By default
              (`encoding` is ``None``) the implementation tries to use the
              standard conform ISO/IEC 8859-1 encoding and if it does not fit, it
              will use UTF-8. Note that no ECI mode indicator is inserted by
              default (see `eci`).
              The `encoding` parameter is case insensitive.
      :type encoding: unicode|str|None
      :param bool eci: Indicates if binary data which does not use the default
              encoding (ISO/IEC 8859-1) should enforce the ECI mode. Since a lot
              of QR Code readers do not support the ECI mode, this feature is
              disabled by default and the data is encoded in the provided
              `encoding` using the usual "byte" mode. Set `eci` to ``True`` if
              an ECI header should be inserted into the QR Code. Note that
              the implementation may not know the ECI designator for the provided
              `encoding` and may raise an exception if the ECI designator cannot
              be found.
              The ECI mode is not supported by Micro QR Codes.
      :param micro: If `version` is ``None`` this parameter can be used
              to allow the creation of a Micro QR Code.
              If set to ``False``, a QR Code is generated. If set to
              ``None`` (default) a Micro QR Code may be generated if applicable.
              If set to ``True`` the algorithm generates a Micro QR Code or
              raises an exception if the `mode` is not compatible or the `content`
              is too large for Micro QR Codes.
      :type micro: bool or None
      :param bool boost_error: Indicates if the error correction level may be
              increased if it does not affect the version (default: ``True``).
              If set to ``True``, the ``error`` parameter is interpreted as
              minimum error level. If set to ``False``, the resulting (Micro) QR
              Code uses the provided ``error`` level (or the default error
              correction level, if error is ``None``)
      :raises: :py:exc:`QRCodeError`: In case of a problem. In fact, it's more
              likely that a derived exception is thrown:
              :py:exc:`ModeError`: In case of problems with the mode (i.e. invalid
              mode or invalid `mode` / `version` combination.
              :py:exc:`VersionError`: In case the `version` is invalid or the
              `micro` parameter contradicts the provided `version`.
              :py:exc:`ErrorLevelError`: In case the error level is invalid or the
              error level is not supported by the provided `version`.
              :py:exc:`DataOverflowError`: In case the data does not fit into a
              (Micro) QR Code or it does not fit into the provided `version`.
              :py:exc:`MaskError`: In case an invalid data mask was specified.
      :rtype: QRCode
      """
      return QRCode(encoder.encode(content, error, version, mode, mask, encoding,
                                   eci, micro, boost_error=boost_error))