1""" 
    2Many places in prompt_toolkit can take either plain text, or formatted text. 
    3For instance the :func:`~prompt_toolkit.shortcuts.prompt` function takes either 
    4plain text or formatted text for the prompt. The 
    5:class:`~prompt_toolkit.layout.FormattedTextControl` can also take either plain 
    6text or formatted text. 
    7 
    8In any case, there is an input that can either be just plain text (a string), 
    9an :class:`.HTML` object, an :class:`.ANSI` object or a sequence of 
    10`(style_string, text)` tuples. The :func:`.to_formatted_text` conversion 
    11function takes any of these and turns all of them into such a tuple sequence. 
    12""" 
    13 
    14from __future__ import annotations 
    15 
    16from .ansi import ANSI 
    17from .base import ( 
    18    AnyFormattedText, 
    19    FormattedText, 
    20    OneStyleAndTextTuple, 
    21    StyleAndTextTuples, 
    22    Template, 
    23    is_formatted_text, 
    24    merge_formatted_text, 
    25    to_formatted_text, 
    26) 
    27from .html import HTML 
    28from .pygments import PygmentsTokens 
    29from .utils import ( 
    30    fragment_list_len, 
    31    fragment_list_to_text, 
    32    fragment_list_width, 
    33    split_lines, 
    34    to_plain_text, 
    35) 
    36 
    37__all__ = [ 
    38    # Base. 
    39    "AnyFormattedText", 
    40    "OneStyleAndTextTuple", 
    41    "to_formatted_text", 
    42    "is_formatted_text", 
    43    "Template", 
    44    "merge_formatted_text", 
    45    "FormattedText", 
    46    "StyleAndTextTuples", 
    47    # HTML. 
    48    "HTML", 
    49    # ANSI. 
    50    "ANSI", 
    51    # Pygments. 
    52    "PygmentsTokens", 
    53    # Utils. 
    54    "fragment_list_len", 
    55    "fragment_list_width", 
    56    "fragment_list_to_text", 
    57    "split_lines", 
    58    "to_plain_text", 
    59]