def user_select(client, file_=None, maxi=None):
    """Prompt user to select one or more dimensions, and return their selections.

        client (obj):
            creopyson Client.
        `file_` (str, optional):
            Model name. Defaults is current active model.
        maxi (int, optional):
            The maximum number of dimensions that the user can select.
            Defaults is `1`.

    Raises:
        Warning: error message from creoson.

    Returns:
        (list:dict): List of selected dimension information
            name (str):
                Dimension name
            value (str|float):
                Dimension value; if encoded is True it is a str,
                if encoded is False it is a float.
            encoded (boolean):
                Whether the returned value is Base64-encoded.
            file (str):
                File name.
            relation_id (int):
                Relation ID number.

    """
    data = {"max": 1}
    if file_ is not None:
        data["file"] = file_
    else:
        active_file = client.file_get_active()
        if active_file:
            data["file"] = active_file["file"]
    if maxi is not None:
        data["max"] = maxi
    return client._creoson_post("dimension", "user_select", data, "dimlist")