Source code for userinterfaces._interface_base

"""Abstract base user interface module.

.. versionadded:: 6.2
"""
#
# (C) Pywikibot team, 2021
#
# Distributed under the terms of the MIT license.
#
import sys
from abc import ABC, abstractmethod
from typing import Any, Union

from pywikibot.backports import List


[docs]class ABUIC(ABC): """Abstract base user interface class. Every user interface should derive from it to ensure that all required methods are implemented. .. versionadded:: 6.2 """
[docs] def argvu(self) -> List[str]: """Return copy of sys.argv. Assigned to pywikibot.argvu in bot module """ return list(sys.argv)
[docs] @abstractmethod def flush(self) -> None: """Flush cached output. May be passed to atexit.register() to flush any ui cache. """
[docs] @abstractmethod def init_handlers(self, *args, **kwargs) -> None: """Initialize the handlers for user output. Called in bot.init_handlers(). """
[docs] @abstractmethod def input(self, *args, **kwargs) -> str: """Ask the user a question and return the answer. Called by bot.input(). """ if args: return input(args[0]) return input()
[docs] @abstractmethod def input_choice(self, *args, **kwargs) -> Union[int, str]: """Ask the user and returns a value from the options. Called by bot.input_choice(). """ return self.input()
[docs] @abstractmethod def input_list_choice(self, *args, **kwargs) -> Any: """Ask the user to select one entry from a list of entries. Called by bot.input_list_choice(). """ return self.input()
[docs] @abstractmethod def output(self, *args, **kwargs) -> None: """Output text to a stream.""" print(*args, **kwargs) # noqa: T001, T201