inquirer-textual 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,15 @@
1
- from typing import TypeVar
1
+ from __future__ import annotations
2
2
 
3
- from textual.app import App
3
+ from asyncio import AbstractEventLoop
4
+ from threading import Event
5
+ from typing import TypeVar, Callable, Any
6
+
7
+ from textual.app import App, AutopilotCallbackType
4
8
  from textual.app import ComposeResult
9
+ from textual.binding import Binding, BindingsMap
5
10
  from textual.widgets import Footer
6
11
 
12
+ from inquirer_textual.common.InquirerHeader import InquirerHeader
7
13
  from inquirer_textual.common.Result import Result
8
14
  from inquirer_textual.common.Shortcut import Shortcut
9
15
  from inquirer_textual.widgets.InquirerWidget import InquirerWidget
@@ -25,33 +31,122 @@ class InquirerApp(App[Result[T]], inherit_bindings=False): # type: ignore[call-
25
31
  """
26
32
  ENABLE_COMMAND_PALETTE = False
27
33
  INLINE_PADDING = 0
34
+ BINDINGS = [
35
+ Binding("ctrl+d", "quit", "Quit", show=False, priority=True)
36
+ ]
28
37
 
29
- def __init__(self, widget: InquirerWidget, shortcuts: list[Shortcut] | None = None, show_footer: bool = False):
38
+ def __init__(self) -> None:
39
+ self.widget: InquirerWidget | None = None
40
+ self.shortcuts: list[Shortcut] | None = None
41
+ self.header: str | list[str] | None = None
42
+ self.show_footer: bool = False
43
+ self.result: Result[T] | None = None
44
+ self.result_ready: Event | None = None
45
+ self.inquiry_func: Callable[[InquirerApp[T]], None] | None = None
46
+ self.inquiry_func_stop: bool = False
30
47
  super().__init__()
31
- self.widget = widget
32
- self.shortcuts = shortcuts
33
- self.show_footer = show_footer
34
48
 
35
49
  def on_mount(self) -> None:
50
+ self._update_bindings()
51
+ if self.inquiry_func:
52
+ self.run_worker(self.inquiry_func_worker, thread=True)
53
+
54
+ def _update_bindings(self) -> None:
55
+ self._bindings = BindingsMap()
36
56
  if self.shortcuts:
37
57
  for shortcut in self.shortcuts:
38
58
  self._bindings.bind(shortcut.key, f'shortcut("{shortcut.command}")',
39
59
  description=shortcut.description,
40
60
  show=shortcut.show)
41
61
 
62
+ def inquiry_func_worker(self):
63
+ if self.inquiry_func:
64
+ self.inquiry_func(self)
65
+
42
66
  def action_shortcut(self, command: str):
43
- self._exit_select(command)
67
+ value = self.widget.current_value() if self.widget else None
68
+ self._handle_result(command, value)
69
+
70
+ async def action_quit(self):
71
+ self._handle_result('quit', None)
44
72
 
45
73
  def on_inquirer_widget_submit(self, event: InquirerWidget.Submit) -> None:
46
- self.call_after_refresh(lambda: self.app.exit(Result(event.command, event.value)))
74
+ self._handle_result(event.command, event.value)
75
+
76
+ def _handle_result(self, command: str | None, value: Any | None):
77
+ if self.result_ready is not None:
78
+ self.result = Result(command, value) # type: ignore[arg-type]
79
+ self.result_ready.set()
80
+ else:
81
+ self.call_after_refresh(lambda: self._terminate(command, value))
47
82
 
48
- def _exit_select(self, command: str):
49
- self.call_after_refresh(lambda: self.app.exit(Result(command, self.widget.current_value())))
83
+ def _terminate(self, command: str | None = None, value: Any | None = None):
84
+ self.inquiry_func_stop = True
85
+ if self.result_ready:
86
+ self.result_ready.set()
87
+ if command is not None:
88
+ self.app.exit(Result(command, value))
89
+ else:
90
+ self.exit(value)
50
91
 
51
92
  def compose(self) -> ComposeResult:
52
- yield self.widget
53
- if self.show_footer:
54
- yield Footer()
93
+ if self.header is not None:
94
+ yield InquirerHeader(self.header)
95
+ if self.widget:
96
+ yield self.widget
97
+ self.widget.focus()
98
+ if self.show_footer:
99
+ yield Footer()
100
+
101
+ def focus_widget(self):
102
+ if self.widget:
103
+ self.call_after_refresh(self.widget.focus)
104
+
105
+ def prompt(self, widget: InquirerWidget, shortcuts: list[Shortcut] | None = None) -> Result[T]:
106
+ if shortcuts:
107
+ self.shortcuts = shortcuts
108
+ self.show_footer = True
109
+ self._update_bindings()
110
+ self.widget = widget
111
+ if not self.result_ready:
112
+ self.result_ready = Event()
113
+ self.call_from_thread(self.refresh, recompose=True)
114
+ self.call_from_thread(self.focus_widget)
115
+ self.result_ready.wait()
116
+ self.result_ready.clear()
117
+ if self.inquiry_func_stop:
118
+ raise RuntimeError("InquirerApp has been stopped.")
119
+ return self.result # type: ignore[return-value]
120
+
121
+ def stop(self, value: Any = None):
122
+ if value:
123
+ self.call_after_refresh(lambda: self._terminate(value=value))
124
+ else:
125
+ self.call_from_thread(self.exit)
126
+
127
+ def run(
128
+ self,
129
+ *,
130
+ headless: bool = False,
131
+ inline: bool = False,
132
+ inline_no_clear: bool = False,
133
+ mouse: bool = True,
134
+ size: tuple[int, int] | None = None,
135
+ auto_pilot: AutopilotCallbackType | None = None,
136
+ loop: AbstractEventLoop | None = None,
137
+ inquiry_func: Callable[[InquirerApp[T]], None] | None = None,
138
+ ) -> Result[T]:
139
+ if not self.inquiry_func:
140
+ self.inquiry_func = inquiry_func
141
+ return super().run(
142
+ headless=headless,
143
+ inline=inline,
144
+ inline_no_clear=inline_no_clear,
145
+ mouse=mouse,
146
+ size=size,
147
+ auto_pilot=auto_pilot,
148
+ loop=loop,
149
+ )
55
150
 
56
151
  def get_theme_variable_defaults(self) -> dict[str, str]:
57
152
  return {
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from textual.widgets import Label
2
4
 
3
5
  from inquirer_textual.common.Choice import Choice
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from textual.widgets import Label
2
4
 
3
5
  from inquirer_textual.common.Choice import Choice
@@ -0,0 +1,31 @@
1
+ from __future__ import annotations
2
+
3
+ from textual.app import ComposeResult
4
+ from textual.containers import Vertical
5
+ from textual.widget import Widget
6
+ from textual.widgets import Static
7
+
8
+
9
+ class InquirerHeader(Widget):
10
+ DEFAULT_CSS = """
11
+ InquirerHeader {
12
+ margin-bottom: 1;
13
+ }
14
+
15
+ #inquirer-header-static {
16
+ width: 1fr;
17
+ text-align: center;
18
+ }
19
+ """
20
+
21
+ def __init__(self, text: str | list[str]) -> None:
22
+ super().__init__()
23
+ self._text = text if isinstance(text, list) else [text]
24
+
25
+ def on_mount(self):
26
+ self.styles.height = len(self._text)
27
+
28
+ def compose(self) -> ComposeResult:
29
+ with Vertical():
30
+ for line in self._text:
31
+ yield Static(line, id="inquirer-header-static")
@@ -1,11 +1,13 @@
1
+ from __future__ import annotations
2
+
1
3
  from dataclasses import dataclass
2
- from typing import TypeVar
4
+ from typing import TypeVar, Generic
3
5
 
4
6
  T = TypeVar('T')
5
7
 
6
8
 
7
9
  @dataclass
8
- class Result[T]:
10
+ class Result(Generic[T]):
9
11
  command: str | None
10
12
  value: T
11
13
 
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from dataclasses import dataclass
2
4
 
3
5
 
@@ -10,4 +12,4 @@ class Shortcut:
10
12
 
11
13
  def __post_init__(self):
12
14
  if self.description is None:
13
- self.description = self.command
15
+ self.description = self.command
@@ -1,61 +1,76 @@
1
1
  from typing import Any, Iterable
2
2
 
3
+ from textual.validation import Validator
4
+
3
5
  from inquirer_textual.InquirerApp import InquirerApp
4
6
  from inquirer_textual.common.Choice import Choice
7
+ from inquirer_textual.common.Result import Result
8
+ from inquirer_textual.common.Shortcut import Shortcut
9
+ from inquirer_textual.widgets.InquirerCheckbox import InquirerCheckbox
5
10
  from inquirer_textual.widgets.InquirerConfirm import InquirerConfirm
6
11
  from inquirer_textual.widgets.InquirerMulti import InquirerMulti
7
12
  from inquirer_textual.widgets.InquirerNumber import InquirerNumber
8
13
  from inquirer_textual.widgets.InquirerSecret import InquirerSecret
14
+ from inquirer_textual.widgets.InquirerSelect import InquirerSelect
9
15
  from inquirer_textual.widgets.InquirerText import InquirerText
10
16
  from inquirer_textual.widgets.InquirerWidget import InquirerWidget
11
- from inquirer_textual.common.Result import Result
12
- from inquirer_textual.common.Shortcut import Shortcut
13
- from inquirer_textual.widgets.InquirerCheckbox import InquirerCheckbox
14
- from inquirer_textual.widgets.InquirerSelect import InquirerSelect
15
- from textual.validation import Validator
16
17
 
17
18
 
18
19
  def text(message: str, shortcuts: list[Shortcut] | None = None,
19
20
  validators: Validator | Iterable[Validator] | None = None) -> Result[str]:
20
- widget = InquirerText(message, validators=validators)
21
- app: InquirerApp[str] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
21
+ app: InquirerApp[str] = InquirerApp()
22
+ app.widget = InquirerText(message, validators=validators)
23
+ app.shortcuts = shortcuts
24
+ app.show_footer = bool(shortcuts)
22
25
  return app.run(inline=True)
23
26
 
24
27
 
25
28
  def secret(message: str, shortcuts: list[Shortcut] | None = None) -> Result[str]:
26
- widget = InquirerSecret(message)
27
- app: InquirerApp[str] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
29
+ app: InquirerApp[str] = InquirerApp()
30
+ app.widget = InquirerSecret(message)
31
+ app.shortcuts = shortcuts
32
+ app.show_footer = bool(shortcuts)
28
33
  return app.run(inline=True)
29
34
 
30
35
 
31
36
  def number(message: str, shortcuts: list[Shortcut] | None = None) -> Result[int]:
32
- widget = InquirerNumber(message)
33
- app: InquirerApp[int] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
37
+ app: InquirerApp[int] = InquirerApp()
38
+ app.widget = InquirerNumber(message)
39
+ app.shortcuts = shortcuts
40
+ app.show_footer = bool(shortcuts)
34
41
  return app.run(inline=True)
35
42
 
36
43
 
37
44
  def confirm(message: str, shortcuts: list[Shortcut] | None = None, default: bool = False, mandatory: bool = True) -> \
38
45
  Result[bool]:
39
- widget = InquirerConfirm(message, default=default, mandatory=mandatory)
40
- app: InquirerApp[bool] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
46
+ app: InquirerApp[bool] = InquirerApp()
47
+ app.widget = InquirerConfirm(message, default=default, mandatory=mandatory)
48
+ app.shortcuts = shortcuts
49
+ app.show_footer = bool(shortcuts)
41
50
  return app.run(inline=True)
42
51
 
43
52
 
44
53
  def select(message: str, choices: list[str | Choice], shortcuts: list[Shortcut] | None = None,
45
54
  default: str | Choice | None = None, mandatory: bool = True) -> Result[str | Choice]:
46
- widget = InquirerSelect(message, choices, default, mandatory)
47
- app: InquirerApp[str | Choice] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
55
+ app: InquirerApp[str | Choice] = InquirerApp()
56
+ app.widget = InquirerSelect(message, choices, default, mandatory)
57
+ app.shortcuts = shortcuts
58
+ app.show_footer = bool(shortcuts)
48
59
  return app.run(inline=True)
49
60
 
50
61
 
51
62
  def checkbox(message: str, choices: list[str | Choice], shortcuts: list[Shortcut] | None = None,
52
63
  enabled: list[str | Choice] | None = None) -> Result[list[str | Choice]]:
53
- widget = InquirerCheckbox(message, choices, enabled)
54
- app: InquirerApp[list[str | Choice]] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
64
+ app: InquirerApp[list[str | Choice]] = InquirerApp()
65
+ app.widget = InquirerCheckbox(message, choices, enabled)
66
+ app.shortcuts = shortcuts
67
+ app.show_footer = bool(shortcuts)
55
68
  return app.run(inline=True)
56
69
 
57
70
 
58
71
  def multi(widgets: list[InquirerWidget], shortcuts: list[Shortcut] | None = None) -> Result[list[Any]]:
59
- widget = InquirerMulti(widgets)
60
- app: InquirerApp[list[Any]] = InquirerApp(widget, shortcuts, show_footer=bool(shortcuts))
72
+ app: InquirerApp[list[Any]] = InquirerApp()
73
+ app.widget = InquirerMulti(widgets)
74
+ app.shortcuts = shortcuts
75
+ app.show_footer = bool(shortcuts)
61
76
  return app.run(inline=True)
@@ -1 +1 @@
1
- version = "0.1.0"
1
+ version = "0.2.0"
@@ -1,8 +1,9 @@
1
- from typing import Self
1
+ from __future__ import annotations
2
2
 
3
3
  from textual.app import ComposeResult
4
4
  from textual.containers import VerticalGroup
5
5
  from textual.widgets import ListItem, ListView
6
+ from typing_extensions import Self
6
7
 
7
8
  from inquirer_textual.common.Choice import Choice
8
9
  from inquirer_textual.common.ChoiceCheckboxLabel import ChoiceCheckboxLabel
@@ -1,4 +1,6 @@
1
- from typing import Self
1
+ from __future__ import annotations
2
+
3
+ from typing_extensions import Self
2
4
 
3
5
  from textual.app import ComposeResult
4
6
  from textual.containers import HorizontalGroup
@@ -1,8 +1,9 @@
1
- from typing import Self
1
+ from __future__ import annotations
2
2
 
3
3
  from textual.app import ComposeResult
4
4
  from textual.containers import HorizontalGroup
5
5
  from textual.widgets import Input
6
+ from typing_extensions import Self
6
7
 
7
8
  from inquirer_textual.common.PromptMessage import PromptMessage
8
9
  from inquirer_textual.widgets.InquirerWidget import InquirerWidget
@@ -1,12 +1,14 @@
1
- from typing import Self
1
+ from __future__ import annotations
2
2
 
3
- from inquirer_textual.common.Choice import Choice
4
- from inquirer_textual.widgets.InquirerWidget import InquirerWidget
5
- from inquirer_textual.common.PromptMessage import PromptMessage
6
- from inquirer_textual.common.ChoiceLabel import ChoiceLabel
7
3
  from textual.app import ComposeResult
8
4
  from textual.containers import VerticalGroup
9
5
  from textual.widgets import ListView, ListItem
6
+ from typing_extensions import Self
7
+
8
+ from inquirer_textual.common.Choice import Choice
9
+ from inquirer_textual.common.ChoiceLabel import ChoiceLabel
10
+ from inquirer_textual.common.PromptMessage import PromptMessage
11
+ from inquirer_textual.widgets.InquirerWidget import InquirerWidget
10
12
 
11
13
 
12
14
  class InquirerSelect(InquirerWidget):
@@ -41,7 +43,10 @@ class InquirerSelect(InquirerWidget):
41
43
 
42
44
  def on_mount(self):
43
45
  super().on_mount()
44
- self.styles.height = min(10, len(self.choices) + 1)
46
+ if self.app.is_inline:
47
+ self.styles.height = min(10, len(self.choices) + 1)
48
+ else:
49
+ self.styles.height = '1fr'
45
50
 
46
51
  def on_list_view_highlighted(self, event: ListView.Highlighted) -> None:
47
52
  if self.selected_label:
@@ -1,12 +1,15 @@
1
- from typing import Self, Iterable
1
+ from __future__ import annotations
2
+
3
+ from typing import Iterable
2
4
 
3
5
  from textual.app import ComposeResult
4
6
  from textual.containers import HorizontalGroup
5
7
  from textual.validation import Validator
6
8
  from textual.widgets import Input
9
+ from typing_extensions import Self
7
10
 
8
- from inquirer_textual.widgets.InquirerWidget import InquirerWidget
9
11
  from inquirer_textual.common.PromptMessage import PromptMessage
12
+ from inquirer_textual.widgets.InquirerWidget import InquirerWidget
10
13
 
11
14
 
12
15
  class InquirerText(InquirerWidget):
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from typing import Any
2
4
 
3
5
  from textual.message import Message
@@ -20,7 +22,7 @@ class InquirerWidget(Widget):
20
22
  self._bindings.bind('ctrl+c', 'exit_now', show=False)
21
23
 
22
24
  def action_exit_now(self):
23
- self.post_message(InquirerWidget.Submit(None, None))
25
+ self.post_message(InquirerWidget.Submit(None, 'ctrl+c'))
24
26
 
25
27
  def current_value(self):
26
28
  raise NotImplementedError("Subclasses must implement current_value method")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: inquirer-textual
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Inquirer based on Textual
5
5
  Project-URL: Changelog, https://github.com/robvanderleek/inquirer-textual/blob/master/CHANGELOG.md
6
6
  Project-URL: Documentation, https://robvanderleek.github.io/inquirer-textual/
@@ -8,8 +8,8 @@ Project-URL: Source, https://github.com/robvanderleek/inquirer-textual
8
8
  Author-email: Rob van der Leek <robvanderleek@gmail.com>
9
9
  License-Expression: GPL-3.0-or-later
10
10
  License-File: LICENSE
11
- Requires-Python: >=3.12
12
- Requires-Dist: textual>=6.2.1
11
+ Requires-Python: <3.15,>=3.9
12
+ Requires-Dist: textual>=6.7.1
13
13
  Description-Content-Type: text/markdown
14
14
 
15
15
  # Inquirer-Textual
@@ -20,6 +20,12 @@ Description-Content-Type: text/markdown
20
20
 
21
21
  </div>
22
22
 
23
+ <div align="center">
24
+
25
+ *Versatile library for user input in Python 🎙️*
26
+
27
+ </div>
28
+
23
29
  <div align="center">
24
30
 
25
31
  [![main](https://github.com/robvanderleek/inquirer-textual/actions/workflows/main.yml/badge.svg)](https://github.com/robvanderleek/inquirer-textual/actions/workflows/main.yml)
@@ -28,6 +34,13 @@ Description-Content-Type: text/markdown
28
34
 
29
35
  </div>
30
36
 
37
+ All terminal programs start small. Some stay small, and some become incredibly
38
+ big. The goal of this Python library is to make user input simple for small
39
+ programs, but also support a smooth transition to a comprehensive UI library as
40
+ your program grows.
41
+
42
+ Read the [documentation here](https://robvanderleek.github.io/inquirer-textual/)
43
+
31
44
  ## Development
32
45
 
33
46
  Add this library as an editable local dependency to another project using `uv`:
@@ -0,0 +1,25 @@
1
+ inquirer_textual/InquirerApp.py,sha256=2lDgzimH0EXeRnPDlre97q24TPsgIE9mI-cJfhQ8hIk,5377
2
+ inquirer_textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ inquirer_textual/prompts.py,sha256=NvaU1hgLe962iSHH3EtmLkbB0K5Vlav38mcHSiYXrOg,3186
4
+ inquirer_textual/version.py,sha256=XQVhijSHeIVMVzY2S4fY9BKxV2XHSTr9VVHsYltGPvQ,18
5
+ inquirer_textual/common/Choice.py,sha256=ZRggsayRKcNMDLRh12Zblol_pusE2keVEXlHkaw5RsE,147
6
+ inquirer_textual/common/ChoiceCheckboxLabel.py,sha256=BZg5vLe6_qc0ipYUaonNfygSOnHyJuEVrB8mmM6tOjw,675
7
+ inquirer_textual/common/ChoiceLabel.py,sha256=Wxt5IZUSHJsVEza1Uj19HZP7oD1uNvclY1UDbaNiOOM,504
8
+ inquirer_textual/common/InquirerHeader.py,sha256=txl-TRe3DKsOPcmDKy1fhfTa-YAURsjTYePDDHzcPH8,802
9
+ inquirer_textual/common/PromptMessage.py,sha256=MCXdsE9j0XlqVKjWUhXB-9qZ24Lk7dA5QWRgUWTdF8o,831
10
+ inquirer_textual/common/Result.py,sha256=mC79hFPITwyXFrrxlHxiumdywKhqGpBM32KhxzJvm-E,255
11
+ inquirer_textual/common/Shortcut.py,sha256=9mzLVnphImnehNo1HHU_gPMv-vFi5nXsb1G2CAbpuEY,297
12
+ inquirer_textual/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ inquirer_textual/widgets/InquirerCheckbox.py,sha256=ytWNqRbJ46iItJxbKfFTHGVapFnJjF9DwG3XtKfRW0E,3008
14
+ inquirer_textual/widgets/InquirerConfirm.py,sha256=RFxSnxj1NS_kqirWWu_VLm0C2Bf4h-3zewDJ_IAtgYs,2293
15
+ inquirer_textual/widgets/InquirerMulti.py,sha256=WhjhEq2j9IL4PIT2kgvClXorazeii4Lxv1TdUDyC60c,1637
16
+ inquirer_textual/widgets/InquirerNumber.py,sha256=05ZEXHVeZ-jzvn7Ts0sJkpkP6oTlgBAWcZGEyrDG0H8,1550
17
+ inquirer_textual/widgets/InquirerSecret.py,sha256=XnMP77O8XWeHvqmttb7xj94a3pgX95a9pEgLvIehmBg,1586
18
+ inquirer_textual/widgets/InquirerSelect.py,sha256=P0_7B3945I-O2HXzXpGO5HDIqD7poR6aa0yOX6a9CGM,3259
19
+ inquirer_textual/widgets/InquirerText.py,sha256=6sQxS87pAooCOdZBcZbxWfUXxqQZA5VYv1ebLv7-3J8,2154
20
+ inquirer_textual/widgets/InquirerWidget.py,sha256=56rcnnK5vqD66WKfmv8V_kZ4YG63Vkxz3pYUq18OJKo,802
21
+ inquirer_textual/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ inquirer_textual-0.2.0.dist-info/METADATA,sha256=etLlsW92h4EEQbgExg2JUV0ZNBPEsyBKpdgl4A4o8sE,1768
23
+ inquirer_textual-0.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
24
+ inquirer_textual-0.2.0.dist-info/licenses/LICENSE,sha256=fJuRou64yfkof3ZFdeHcgk7K8pqxis6SBr-vtUEgBuA,1073
25
+ inquirer_textual-0.2.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,24 +0,0 @@
1
- inquirer_textual/InquirerApp.py,sha256=jKni2W65cfthR9mVU-jljJjtYr9Zhk2yLUgjcmZegOg,2016
2
- inquirer_textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- inquirer_textual/prompts.py,sha256=Rb4pwVje09wcIVXUCep_Qm_pCb5adQZ3iv2yGGiBsPc,3003
4
- inquirer_textual/version.py,sha256=aOHawL1zuHMfBWKXqwUkXcW96oXLNCY-CXdHDqkz4g4,18
5
- inquirer_textual/common/Choice.py,sha256=ZRggsayRKcNMDLRh12Zblol_pusE2keVEXlHkaw5RsE,147
6
- inquirer_textual/common/ChoiceCheckboxLabel.py,sha256=lUIiR9STUxRsI6psH6y7-MFgK1shDG6W7oPhkdl_3e8,639
7
- inquirer_textual/common/ChoiceLabel.py,sha256=SMsXjMzGngFrwxkSxtthnX2XdSvBShZVnDxJEttIusY,468
8
- inquirer_textual/common/PromptMessage.py,sha256=MCXdsE9j0XlqVKjWUhXB-9qZ24Lk7dA5QWRgUWTdF8o,831
9
- inquirer_textual/common/Result.py,sha256=HE-LkUQwRSy_bdnR1aT9b50Ym0oFs0T-qIMmuwokG44,201
10
- inquirer_textual/common/Shortcut.py,sha256=Mvd0pbSC1GKphhLqjVZ-i54Nd_bEjoEYmR_Xjb6WyCo,260
11
- inquirer_textual/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- inquirer_textual/widgets/InquirerCheckbox.py,sha256=CuJYe6gVM6ahxel2rsX9tYJD1LhUbc3tmX5B9LINSJ0,2962
13
- inquirer_textual/widgets/InquirerConfirm.py,sha256=RFxSnxj1NS_kqirWWu_VLm0C2Bf4h-3zewDJ_IAtgYs,2293
14
- inquirer_textual/widgets/InquirerMulti.py,sha256=WhjhEq2j9IL4PIT2kgvClXorazeii4Lxv1TdUDyC60c,1637
15
- inquirer_textual/widgets/InquirerNumber.py,sha256=dFAP2GqqT7Dh0Lb1aZLfjyjbLbSBXqEbMghZXpeplq8,1503
16
- inquirer_textual/widgets/InquirerSecret.py,sha256=CjPb_u32cOxK5So2GRVhxPqx2-3pjT4Ic-7NmhgwxSo,1540
17
- inquirer_textual/widgets/InquirerSelect.py,sha256=__T_2qUSPFK7qR82UkRaKeNBjb6-hOaJ3oVQE7_9PBE,3124
18
- inquirer_textual/widgets/InquirerText.py,sha256=IMev5EmYLs90M0TrX0tuhXkMyp8wBHIuyaHqwJzhqiY,2089
19
- inquirer_textual/widgets/InquirerWidget.py,sha256=yxQ2qcqp1dsBXZUBqiqKzcSt3aTUjEPi2I0MbQ7E7Z0,762
20
- inquirer_textual/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- inquirer_textual-0.1.0.dist-info/METADATA,sha256=fBixuYNdQCuU-nA09XmImFHeakveZwb5M_r8lvR_Pho,1339
22
- inquirer_textual-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
- inquirer_textual-0.1.0.dist-info/licenses/LICENSE,sha256=fJuRou64yfkof3ZFdeHcgk7K8pqxis6SBr-vtUEgBuA,1073
24
- inquirer_textual-0.1.0.dist-info/RECORD,,