Source code for chalky.interface

# -*- encoding: utf-8 -*-
# Copyright (c) 2020 Stephen Bunn <>
# ISC License <>

"""Contains the actual implementation of interacting with a type of terminal buffer."""

import sys
from functools import lru_cache
from typing import Optional, TextIO

from .ansi import AnsiInterface
from .base import BaseInterface

[docs]@lru_cache() def get_interface(io: Optional[TextIO] = None) -> BaseInterface: """Get the appropriate interface to interact with some terminal buffer. Examples: Get the default interface for interacting with the terminal buffer. This defaults to using :data:`sys.stdout` >>> from chalky.interface import get_interface >>> interface = get_interface() To get an interface using a different text io buffer, pass it in: >>> import sys >>> stderr_interface = get_interface(sys.stderr) Args: io (Optional[:class:`~typing.TextIO`], optional): The io to build an interface for. Defaults to :data:`sys.stdout`. Returns: :class:`~interface.base.BaseInterface`: The created interface for the given io buffer. """ if not io: io = sys.stdout return AnsiInterface(io)
__all__ = ["get_interface"]