<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_filetypes_info(editor_quote="`", flag_leaf=True):
 """ Reports available data types Args: editor_quote: character to enclose the name of the editor script between. flag_leaf: see tabulate_filetypes_rest() Returns: list: list of FileTypeInfo """

    NONE_REPL = ""
    import f311
    data = []  # [FileTypeInfo, ...]

    for attr in f311.classes_file(flag_leaf):
        description = a99.get_obj_doc0(attr)

        def_ = NONE_REPL if attr.default_filename is None else attr.default_filename
        ee = attr.editors
        if ee is None:
            ee = NONE_REPL
        else:
            # Example: "``mained.py``, ``x.py``"
            ee = ", ".join(["{0}{1}{0}".format(editor_quote, x, editor_quote) for x in ee])

        data.append({"description": description, "default_filename": def_, "classname": attr.__name__,
                     "editors": ee, "class": attr, "txtbin": "text" if attr.flag_txt else "binary"})

    data.sort(key=lambda x: x["description"])

    return data