def preprocess_model(model, rewrap=True, **kwargs):
    """Preprocess a MiniZinc model.

    This function takes care of preprocessing the model by resolving the
    template using the arguments passed as keyword arguments to this function.
    Optionally, this function can also "rewrap" the model, deleting spaces at
    the beginning of the lines while preserving indentation.

    Parameters
    ----------
    model : str
        The minizinc model (i.e. the content of a ``.mzn`` file).
    rewrap : bool
        Whether to "rewrap" the model, i.e. to delete leading spaces, while
        preserving indentation. Default is ``True``.
    **kwargs
        Additional arguments to pass to the template engine.

    Returns
    -------
    str
        The preprocessed model.
    """

    args = {**kwargs, **config.get('args', {})}
    model = _process_template(model, **args)

    if rewrap:
        model = rewrap_model(model)

    return model
Preprocess a MiniZinc model.

    This function takes care of preprocessing the model by resolving the
    template using the arguments passed as keyword arguments to this function.
    Optionally, this function can also "rewrap" the model, deleting spaces at
    the beginning of the lines while preserving indentation.

    Parameters
    ----------
    model : str
        The minizinc model (i.e. the content of a ``.mzn`` file).
    rewrap : bool
        Whether to "rewrap" the model, i.e. to delete leading spaces, while
        preserving indentation. Default is ``True``.
    **kwargs
        Additional arguments to pass to the template engine.

    Returns
    -------
    str
        The preprocessed model.