def make_list(val, coerce_numbers=True):
    """Make a list from a given value.

    Roughly equivalent to Djangos' make_list, with some enhancements.

    Args:
        val (mixed): The value to convert.
        coerce_numbers (bool, optional): Whether or not string number
            should be coerced back to their original values.

    Returns:
        mixed: If dict is given, return d.items(). If list is given, return it.
            If integers given, return a list of digits.
            Otherwise, return a list of characters.
    """
    if isinstance(val, dict):
        return list(val.items())
    if isinstance(val, list):
        return val
    vals = list(str(val))
    if coerce_numbers and isinstance(val, str):
        lst = []
        for v in vals:
            try:
                lst.append(int(v))
            except ValueError:
                lst.append(v)
        return lst
    return vals