Add type stubs for package console-menu (#8820)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
Giles Johnson
2022-10-03 12:22:39 -04:00
committed by GitHub
parent 6950c32370
commit aab29f626c
26 changed files with 737 additions and 0 deletions

View File

@@ -38,6 +38,7 @@
"stubs/caldav",
"stubs/cffi",
"stubs/commonmark",
"stubs/console-menu",
"stubs/cryptography",
"stubs/dateparser",
"stubs/dj-database-url",

View File

@@ -0,0 +1,4 @@
version = "0.7.*"
[tool.stubtest]
ignore_missing_stub = false

View File

@@ -0,0 +1,6 @@
from . import items as items
from .console_menu import ConsoleMenu as ConsoleMenu, Screen as Screen, clear_terminal as clear_terminal
from .menu_formatter import MenuFormatBuilder as MenuFormatBuilder
from .multiselect_menu import MultiSelectMenu as MultiSelectMenu
from .prompt_utils import PromptUtils as PromptUtils
from .selection_menu import SelectionMenu as SelectionMenu

View File

@@ -0,0 +1,87 @@
from collections.abc import Callable
from consolemenu.menu_formatter import MenuFormatBuilder as MenuFormatBuilder
from consolemenu.screen import Screen as Screen
class ConsoleMenu:
currently_active_menu: ConsoleMenu | None
screen: Screen
clear_screen_before_render: bool
formatter: MenuFormatBuilder
title: str | Callable[[], str] | None
subtitle: str | Callable[[], str] | None
prologue_text: str | Callable[[], str] | None
epilogue_text: str | Callable[[], str] | None
highlight: None
normal: None
show_exit_option: bool
items: list[MenuItem]
parent: ConsoleMenu | None
exit_item: ExitItem
current_option: int
selected_option: int
returned_value: object | None
should_exit: bool
previous_active_menu: ConsoleMenu | None
def __init__(
self,
title: str | Callable[[], str] | None = ...,
subtitle: str | Callable[[], str] | None = ...,
screen: Screen | None = ...,
formatter: MenuFormatBuilder | None = ...,
prologue_text: str | Callable[[], str] | None = ...,
epilogue_text: str | Callable[[], str] | None = ...,
clear_screen: bool = ...,
show_exit_option: bool = ...,
exit_option_text: str = ...,
) -> None: ...
@property
def current_item(self) -> MenuItem | None: ...
@property
def selected_item(self) -> MenuItem | None: ...
def append_item(self, item: MenuItem) -> None: ...
def remove_item(self, item: MenuItem) -> bool: ...
def add_exit(self) -> bool: ...
def remove_exit(self) -> bool: ...
def is_selected_item_exit(self) -> bool: ...
def start(self, show_exit_option: bool | None = ...) -> None: ...
def show(self, show_exit_option: bool | None = ...) -> None: ...
def draw(self) -> None: ...
def is_running(self) -> bool: ...
def wait_for_start(self, timeout: float | None = ...) -> bool: ...
def is_alive(self) -> bool: ...
def pause(self) -> None: ...
def resume(self) -> None: ...
def join(self, timeout: float | None = ...) -> None: ...
def get_input(self) -> int: ...
def process_user_input(self) -> int | None: ...
def go_to(self, option: int) -> None: ...
def go_down(self) -> None: ...
def go_up(self) -> None: ...
def select(self) -> None: ...
def exit(self) -> None: ...
def clear_screen(self) -> None: ...
def get_title(self) -> str: ...
def get_subtitle(self) -> str: ...
def get_prologue_text(self) -> str: ...
def get_epilogue_text(self) -> str: ...
class MenuItem:
text: str
menu: ConsoleMenu | None
should_exit: bool
index_item_separator: str
def __init__(self, text: str | Callable[[], str], menu: ConsoleMenu | None = ..., should_exit: bool = ...) -> None: ...
def show(self, index: int) -> str: ...
def set_up(self) -> None: ...
def action(self) -> None: ...
def clean_up(self) -> None: ...
def get_return(self) -> object: ...
def __eq__(self, o: MenuItem) -> bool: ... # type: ignore[override]
def get_text(self) -> str: ...
class ExitItem(MenuItem):
def __init__(self, text: str | Callable[[], str] = ..., menu: ConsoleMenu | None = ...) -> None: ...
def show(self, index: int, available_width: None = ...): ...
def clear_terminal() -> None: ...

View File

@@ -0,0 +1,14 @@
from .menu_borders import (
AsciiBorderStyle as AsciiBorderStyle,
DoubleLineBorderStyle as DoubleLineBorderStyle,
DoubleLineOuterLightInnerBorderStyle as DoubleLineOuterLightInnerBorderStyle,
HeavyBorderStyle as HeavyBorderStyle,
HeavyOuterLightInnerBorderStyle as HeavyOuterLightInnerBorderStyle,
LightBorderStyle as LightBorderStyle,
MenuBorderStyle as MenuBorderStyle,
MenuBorderStyleFactory as MenuBorderStyleFactory,
MenuBorderStyleType as MenuBorderStyleType,
)
from .menu_margins import MenuMargins as MenuMargins
from .menu_padding import MenuPadding as MenuPadding
from .menu_style import MenuStyle as MenuStyle

View File

@@ -0,0 +1,194 @@
import logging
class MenuBorderStyle:
@property
def bottom_left_corner(self) -> str: ...
@property
def bottom_right_corner(self) -> str: ...
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
@property
def top_left_corner(self) -> str: ...
@property
def top_right_corner(self) -> str: ...
class AsciiBorderStyle(MenuBorderStyle):
@property
def bottom_left_corner(self) -> str: ...
@property
def bottom_right_corner(self) -> str: ...
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
@property
def top_left_corner(self) -> str: ...
@property
def top_right_corner(self) -> str: ...
class LightBorderStyle(MenuBorderStyle):
@property
def bottom_left_corner(self) -> str: ...
@property
def bottom_right_corner(self) -> str: ...
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
@property
def top_left_corner(self) -> str: ...
@property
def top_right_corner(self) -> str: ...
class HeavyBorderStyle(MenuBorderStyle):
@property
def bottom_left_corner(self) -> str: ...
@property
def bottom_right_corner(self) -> str: ...
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
@property
def top_left_corner(self) -> str: ...
@property
def top_right_corner(self) -> str: ...
class HeavyOuterLightInnerBorderStyle(HeavyBorderStyle):
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
class DoubleLineBorderStyle(MenuBorderStyle):
@property
def bottom_left_corner(self) -> str: ...
@property
def bottom_right_corner(self) -> str: ...
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
@property
def top_left_corner(self) -> str: ...
@property
def top_right_corner(self) -> str: ...
class DoubleLineOuterLightInnerBorderStyle(DoubleLineBorderStyle):
@property
def inner_horizontal(self) -> str: ...
@property
def inner_vertical(self) -> str: ...
@property
def intersection(self) -> str: ...
@property
def outer_horizontal_inner_down(self) -> str: ...
@property
def outer_horizontal_inner_up(self) -> str: ...
@property
def outer_vertical_inner_left(self) -> str: ...
@property
def outer_vertical_inner_right(self) -> str: ...
class MenuBorderStyleType:
ASCII_BORDER: int
LIGHT_BORDER: int
HEAVY_BORDER: int
DOUBLE_LINE_BORDER: int
HEAVY_OUTER_LIGHT_INNER_BORDER: int
DOUBLE_LINE_OUTER_LIGHT_INNER_BORDER: int
class MenuBorderStyleFactory:
logger: logging.Logger
def __init__(self) -> None: ...
def create_border(self, border_style_type: MenuBorderStyleType) -> MenuBorderStyle: ...
def create_ascii_border(self) -> AsciiBorderStyle: ...
def create_light_border(self) -> LightBorderStyle: ...
def create_heavy_border(self) -> HeavyBorderStyle: ...
def create_heavy_outer_light_inner_border(self) -> HeavyOuterLightInnerBorderStyle: ...
def create_doubleline_border(self) -> DoubleLineBorderStyle: ...
def create_doubleline_outer_light_inner_border(self) -> DoubleLineOuterLightInnerBorderStyle: ...
@staticmethod
def is_win_python35_or_earlier() -> bool: ...

View File

@@ -0,0 +1,18 @@
class MenuMargins:
def __init__(self, top: int = ..., left: int = ..., bottom: int = ..., right: int = ...) -> None: ...
@property
def left(self) -> int: ...
@left.setter
def left(self, left: int) -> None: ...
@property
def right(self) -> int: ...
@right.setter
def right(self, right: int) -> None: ...
@property
def top(self) -> int: ...
@top.setter
def top(self, top: int) -> None: ...
@property
def bottom(self) -> int: ...
@bottom.setter
def bottom(self, bottom: int) -> None: ...

View File

@@ -0,0 +1,18 @@
class MenuPadding:
def __init__(self, top: int = ..., left: int = ..., bottom: int = ..., right: int = ...) -> None: ...
@property
def left(self) -> int: ...
@left.setter
def left(self, left: int) -> None: ...
@property
def right(self) -> int: ...
@right.setter
def right(self, right: int) -> None: ...
@property
def top(self) -> int: ...
@top.setter
def top(self, top: int) -> None: ...
@property
def bottom(self) -> int: ...
@bottom.setter
def bottom(self, bottom: int) -> None: ...

View File

@@ -0,0 +1,29 @@
from consolemenu.format.menu_borders import MenuBorderStyle as MenuBorderStyle, MenuBorderStyleFactory as MenuBorderStyleFactory
from consolemenu.format.menu_margins import MenuMargins as MenuMargins
from consolemenu.format.menu_padding import MenuPadding as MenuPadding
class MenuStyle:
def __init__(
self,
margins: MenuMargins | None = ...,
padding: MenuPadding | None = ...,
border_style: MenuBorderStyle | None = ...,
border_style_type: int | None = ...,
border_style_factory: MenuBorderStyleFactory | None = ...,
) -> None: ...
@property
def margins(self) -> MenuMargins: ...
@margins.setter
def margins(self, margins: MenuMargins) -> None: ...
@property
def padding(self) -> MenuPadding: ...
@padding.setter
def padding(self, padding: MenuPadding) -> None: ...
@property
def border_style(self) -> MenuBorderStyle: ...
@border_style.setter
def border_style(self, border_style: MenuBorderStyle) -> None: ...
@property
def border_style_factory(self) -> MenuBorderStyleFactory: ...
@border_style_factory.setter
def border_style_factory(self, border_style_factory: MenuBorderStyleFactory) -> None: ...

View File

@@ -0,0 +1,6 @@
from ..console_menu import ExitItem as ExitItem, MenuItem as MenuItem
from .command_item import CommandItem as CommandItem
from .external_item import ExternalItem as ExternalItem
from .function_item import FunctionItem as FunctionItem
from .selection_item import SelectionItem as SelectionItem
from .submenu_item import SubmenuItem as SubmenuItem

View File

@@ -0,0 +1,12 @@
from consolemenu.console_menu import ConsoleMenu
from consolemenu.items import ExternalItem as ExternalItem
class CommandItem(ExternalItem):
command: str
arguments: list[str]
exit_status: int | None
def __init__(
self, text: str, command: str, arguments: list[str] | None = ..., menu: ConsoleMenu | None = ..., should_exit: bool = ...
) -> None: ...
def action(self) -> None: ...
def get_return(self) -> int: ...

View File

@@ -0,0 +1,5 @@
from consolemenu.items import MenuItem as MenuItem
class ExternalItem(MenuItem):
def set_up(self) -> None: ...
def clean_up(self) -> None: ...

View File

@@ -0,0 +1,23 @@
from collections.abc import Callable, Mapping, Sequence
from typing import Any
from consolemenu.console_menu import ConsoleMenu
from consolemenu.items import ExternalItem as ExternalItem
class FunctionItem(ExternalItem):
function: Callable[..., Any]
args: Sequence[Any]
kwargs: Mapping[str, Any]
return_value: Any | None
def __init__(
self,
text: str,
function: Callable[..., Any],
args: Sequence[Any] | None = ...,
kwargs: Mapping[str, Any] | None = ...,
menu: ConsoleMenu | None = ...,
should_exit: bool = ...,
) -> None: ...
def action(self) -> None: ...
def clean_up(self) -> None: ...
def get_return(self) -> Any | None: ...

View File

@@ -0,0 +1,9 @@
from collections.abc import Callable
from consolemenu.console_menu import ConsoleMenu
from consolemenu.items import MenuItem as MenuItem
class SelectionItem(MenuItem):
index: int
def __init__(self, text: str | Callable[[], str], index: int, menu: ConsoleMenu | None = ...) -> None: ...
def get_return(self) -> int: ...

View File

@@ -0,0 +1,17 @@
from collections.abc import Callable
from consolemenu.console_menu import ConsoleMenu
from consolemenu.items import MenuItem as MenuItem
class SubmenuItem(MenuItem):
submenu: ConsoleMenu
def __init__(
self, text: str | Callable[[], str], submenu: ConsoleMenu, menu: ConsoleMenu | None = ..., should_exit: bool = ...
) -> None: ...
menu: ConsoleMenu
def set_menu(self, menu: ConsoleMenu) -> None: ...
def set_up(self) -> None: ...
def action(self) -> None: ...
def clean_up(self) -> None: ...
def get_return(self) -> object: ...
def get_submenu(self) -> ConsoleMenu: ...

View File

@@ -0,0 +1,99 @@
from collections.abc import Generator
from consolemenu.console_menu import MenuItem
from consolemenu.format import MenuBorderStyle, MenuMargins, MenuPadding, MenuStyle as MenuStyle
def ansilen(s: str) -> int: ...
class Dimension:
width: int
height: int
def __init__(self, width: int = ..., height: int = ..., dimension: Dimension | None = ...) -> None: ...
class MenuComponent:
def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = ...) -> None: ...
@property
def max_dimension(self) -> Dimension: ...
@property
def style(self) -> MenuStyle: ...
@property
def margins(self) -> MenuMargins: ...
@property
def padding(self) -> MenuPadding: ...
@property
def border_style(self) -> MenuBorderStyle: ...
def calculate_border_width(self) -> int: ...
def calculate_content_width(self) -> int: ...
def generate(self) -> Generator[str, None, None]: ...
def inner_horizontals(self) -> str: ...
def inner_horizontal_border(self) -> str: ...
def outer_horizontals(self) -> str: ...
def outer_horizontal_border_bottom(self) -> str: ...
def outer_horizontal_border_top(self) -> str: ...
def row(self, content: str = ..., align: str = ..., indent_len: int = ...) -> str: ...
class MenuHeader(MenuComponent):
title: str
title_align: str
subtitle: str
subtitle_align: str
show_bottom_border: bool
def __init__(
self,
menu_style: MenuStyle,
max_dimension: Dimension | None = ...,
title: str | None = ...,
title_align: str = ...,
subtitle: str | None = ...,
subtitle_align: str = ...,
show_bottom_border: bool = ...,
) -> None: ...
def generate(self) -> Generator[str, None, None]: ...
class MenuTextSection(MenuComponent):
text: str
text_align: str
show_top_border: bool
show_bottom_border: bool
def __init__(
self,
menu_style: MenuStyle,
max_dimension: Dimension | None = ...,
text: str | None = ...,
text_align: str = ...,
show_top_border: bool = ...,
show_bottom_border: bool = ...,
) -> None: ...
def generate(self) -> Generator[str, None, None]: ...
class MenuItemsSection(MenuComponent):
items_align: str
def __init__(
self,
menu_style: MenuStyle,
max_dimension: Dimension | None = ...,
items: list[MenuItem] | None = ...,
items_align: str = ...,
) -> None: ...
@property
def items(self) -> list[MenuItem]: ...
@items.setter
def items(self, items: list[MenuItem]) -> None: ...
@property
def items_with_bottom_border(self) -> list[str]: ...
@property
def items_with_top_border(self) -> list[str]: ...
def show_item_bottom_border(self, item_text: str, flag: bool) -> None: ...
def show_item_top_border(self, item_text: str, flag: bool) -> None: ...
def generate(self) -> Generator[str, None, None]: ...
class MenuFooter(MenuComponent):
def generate(self) -> Generator[str, None, None]: ...
class MenuPrompt(MenuComponent):
def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = ..., prompt_string: str = ...) -> None: ...
@property
def prompt(self) -> str: ...
@prompt.setter
def prompt(self, prompt: str) -> None: ...
def generate(self) -> Generator[str, None, None]: ...

View File

@@ -0,0 +1,55 @@
from consolemenu.console_menu import MenuItem
from consolemenu.format import MenuBorderStyleType
from consolemenu.format.menu_borders import MenuBorderStyle as MenuBorderStyle, MenuBorderStyleFactory as MenuBorderStyleFactory
from consolemenu.format.menu_style import MenuStyle as MenuStyle
from consolemenu.menu_component import (
Dimension as Dimension,
MenuFooter as MenuFooter,
MenuHeader as MenuHeader,
MenuItemsSection as MenuItemsSection,
MenuPrompt as MenuPrompt,
MenuTextSection as MenuTextSection,
)
class MenuFormatBuilder:
def __init__(self, max_dimension: Dimension | None = ...) -> None: ...
def set_border_style(self, border_style: MenuBorderStyle) -> MenuFormatBuilder: ...
def set_border_style_type(self, border_style_type: MenuBorderStyleType) -> MenuFormatBuilder: ...
def set_border_style_factory(self, border_style_factory: MenuBorderStyleFactory) -> MenuFormatBuilder: ...
def set_bottom_margin(self, bottom_margin: int) -> MenuFormatBuilder: ...
def set_left_margin(self, left_margin: int) -> MenuFormatBuilder: ...
def set_right_margin(self, right_margin: int) -> MenuFormatBuilder: ...
def set_top_margin(self, top_margin: int) -> MenuFormatBuilder: ...
def set_title_align(self, align: str = ...) -> MenuFormatBuilder: ...
def set_subtitle_align(self, align: str = ...) -> MenuFormatBuilder: ...
def set_header_left_padding(self, x: int) -> MenuFormatBuilder: ...
def set_header_right_padding(self, x: int) -> MenuFormatBuilder: ...
def set_header_bottom_padding(self, x: int) -> MenuFormatBuilder: ...
def set_header_top_padding(self, x: int) -> MenuFormatBuilder: ...
def show_header_bottom_border(self, flag: bool) -> MenuFormatBuilder: ...
def set_footer_left_padding(self, x: int) -> MenuFormatBuilder: ...
def set_footer_right_padding(self, x: int) -> MenuFormatBuilder: ...
def set_footer_bottom_padding(self, x: int) -> MenuFormatBuilder: ...
def set_footer_top_padding(self, x: int) -> MenuFormatBuilder: ...
def set_items_left_padding(self, x: int) -> MenuFormatBuilder: ...
def set_items_right_padding(self, x: int) -> MenuFormatBuilder: ...
def set_items_bottom_padding(self, x: int) -> MenuFormatBuilder: ...
def set_items_top_padding(self, x: int) -> MenuFormatBuilder: ...
def show_item_bottom_border(self, item_text: str, flag: bool) -> MenuFormatBuilder: ...
def show_item_top_border(self, item_text: str, flag: bool) -> MenuFormatBuilder: ...
def set_prologue_text_align(self, align: str = ...) -> MenuFormatBuilder: ...
def show_prologue_top_border(self, flag: bool) -> MenuFormatBuilder: ...
def show_prologue_bottom_border(self, flag: bool) -> MenuFormatBuilder: ...
def set_epilogue_text_align(self, align: str = ...) -> MenuFormatBuilder: ...
def show_epilogue_top_border(self, flag: bool) -> MenuFormatBuilder: ...
def show_epilogue_bottom_border(self, flag: bool) -> MenuFormatBuilder: ...
def set_prompt(self, prompt: MenuPrompt) -> MenuFormatBuilder: ...
def clear_data(self) -> None: ...
def format(
self,
title: str | None = ...,
subtitle: str | None = ...,
prologue_text: str | None = ...,
epilogue_text: str | None = ...,
items: list[MenuItem] | None = ...,
) -> str: ...

View File

@@ -0,0 +1,22 @@
from consolemenu import ConsoleMenu as ConsoleMenu
from consolemenu.console_menu import MenuItem
from consolemenu.items import SubmenuItem as SubmenuItem
from consolemenu.menu_formatter import MenuFormatBuilder
class MultiSelectMenu(ConsoleMenu):
ack_item_completion: bool
def __init__(
self,
title: str | None = ...,
subtitle: str | None = ...,
formatter: MenuFormatBuilder | None = ...,
prologue_text: str | None = ...,
epilogue_text: str | None = ...,
ack_item_completion: bool = ...,
show_exit_option: bool = ...,
exit_option_text: str = ...,
clear_screen: bool = ...,
) -> None: ...
def append_item(self, item: MenuItem) -> None: ...
current_option: int
def process_user_input(self) -> None: ...

View File

@@ -0,0 +1,47 @@
from collections.abc import Iterable, Sequence
from typing import Any, NamedTuple
from consolemenu.screen import Screen
from consolemenu.validators.base import BaseValidator
class InputResult(NamedTuple):
input_string: str
validation_result: bool
class PromptFormatter:
@staticmethod
def format_prompt(
prompt: str | None = ...,
default: str | None = ...,
enable_quit: bool = ...,
quit_string: str = ...,
quit_message: str = ...,
) -> str: ...
class PromptUtils:
def __init__(self, screen: Screen, prompt_formatter: PromptFormatter | None = ...) -> None: ...
@property
def screen(self) -> Screen: ...
def clear(self) -> None: ...
def confirm_answer(self, answer: str, message: str | None = ...) -> bool: ...
def enter_to_continue(self, message: str | None = ...) -> None: ...
def input(
self,
prompt: str | None = ...,
default: str | None = ...,
validators: Iterable[BaseValidator] | None = ...,
enable_quit: bool = ...,
quit_string: str = ...,
quit_message: str = ...,
) -> InputResult: ...
def input_password(self, message: str | None = ...) -> str: ...
def printf(self, *args: Any) -> None: ...
def println(self, *args: Any) -> None: ...
def prompt_and_confirm_password(self, message: str) -> str: ...
def prompt_for_bilateral_choice(self, prompt: str, option1: str, option2: str) -> str: ...
def prompt_for_trilateral_choice(self, prompt: str, option1: str, option2: str, option3: str) -> str: ...
def prompt_for_yes_or_no(self, prompt: str) -> bool: ...
def prompt_for_numbered_choice(self, choices: Sequence[str], title: str | None = ..., prompt: str = ...) -> int: ...
def validate_input(self, input_string: str, validators: BaseValidator) -> bool: ...
class UserQuit(Exception): ...

View File

@@ -0,0 +1,17 @@
from typing import Any
class Screen:
def __init__(self) -> None: ...
@property
def screen_height(self) -> int: ...
@property
def screen_width(self) -> int: ...
@staticmethod
def clear() -> None: ...
@staticmethod
def flush() -> None: ...
def input(self, prompt: str = ...) -> str: ...
@staticmethod
def printf(*args: Any) -> None: ...
@staticmethod
def println(*args: Any) -> None: ...

View File

@@ -0,0 +1,31 @@
from collections.abc import Iterable
from consolemenu import ConsoleMenu as ConsoleMenu
from consolemenu.items import SelectionItem as SelectionItem
from consolemenu.menu_formatter import MenuFormatBuilder
from consolemenu.screen import Screen
class SelectionMenu(ConsoleMenu):
def __init__(
self,
strings: Iterable[str],
title: str | None = ...,
subtitle: str | None = ...,
screen: Screen | None = ...,
formatter: MenuFormatBuilder | None = ...,
prologue_text: str | None = ...,
epilogue_text: str | None = ...,
show_exit_option: bool = ...,
exit_option_text: str = ...,
clear_screen: bool = ...,
) -> None: ...
@classmethod
def get_selection(
cls,
strings: Iterable[str],
title: str = ...,
subtitle: str | None = ...,
show_exit_option: bool = ...,
_menu: ConsoleMenu | None = ...,
) -> int: ...
def append_string(self, string: str) -> None: ...

View File

@@ -0,0 +1,11 @@
import abc
from abc import abstractmethod
from logging import Logger
class InvalidValidator(Exception): ...
class BaseValidator(metaclass=abc.ABCMeta):
log: Logger
def __init__(self) -> None: ...
@abstractmethod
def validate(self, input_string: str) -> bool: ...

View File

@@ -0,0 +1,7 @@
from consolemenu.validators.base import BaseValidator as BaseValidator
class RegexValidator(BaseValidator):
def __init__(self, pattern: str) -> None: ...
@property
def pattern(self) -> str: ...
def validate(self, input_string: str) -> bool: ...

View File

@@ -0,0 +1,5 @@
from consolemenu.validators.base import BaseValidator as BaseValidator
class UrlValidator(BaseValidator):
def __init__(self) -> None: ...
def validate(self, input_string: str) -> bool: ...