argenta 0.4.6__py3-none-any.whl → 0.4.8__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.
- argenta/app/dividing_line/__init__.py +0 -0
- argenta/app/dividing_line/models.py +24 -0
- argenta/app/models.py +45 -23
- argenta/command/flag/models.py +1 -1
- argenta/command/models.py +1 -0
- {argenta-0.4.6.dist-info → argenta-0.4.8.dist-info}/METADATA +190 -79
- {argenta-0.4.6.dist-info → argenta-0.4.8.dist-info}/RECORD +9 -7
- {argenta-0.4.6.dist-info → argenta-0.4.8.dist-info}/LICENSE +0 -0
- {argenta-0.4.6.dist-info → argenta-0.4.8.dist-info}/WHEEL +0 -0
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class BaseDividingLine:
|
2
|
+
def __init__(self, unit_part: str = '-'):
|
3
|
+
self.unit_part = unit_part
|
4
|
+
|
5
|
+
def get_unit_part(self):
|
6
|
+
if len(self.unit_part) == 0:
|
7
|
+
return ' '
|
8
|
+
else:
|
9
|
+
return self.unit_part[0]
|
10
|
+
|
11
|
+
class StaticDividingLine(BaseDividingLine):
|
12
|
+
def __init__(self, unit_part: str = '-', length: int = 25):
|
13
|
+
super().__init__(unit_part)
|
14
|
+
self.length = length
|
15
|
+
|
16
|
+
def get_full_line(self):
|
17
|
+
return f'\n[dim]{self.length * self.get_unit_part()}[/dim]\n'
|
18
|
+
|
19
|
+
|
20
|
+
class DynamicDividingLine(BaseDividingLine):
|
21
|
+
def get_full_line(self, length: int):
|
22
|
+
return f'\n[dim]{self.get_unit_part() * length}[/dim]\n'
|
23
|
+
|
24
|
+
|
argenta/app/models.py
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
from typing import Callable
|
2
2
|
from rich.console import Console
|
3
3
|
from art import text2art
|
4
|
+
from contextlib import redirect_stdout
|
5
|
+
import io
|
4
6
|
import re
|
5
7
|
|
6
8
|
from argenta.command.models import Command, InputCommand
|
7
9
|
from argenta.router import Router
|
8
10
|
from argenta.router.defaults import system_router
|
11
|
+
from argenta.app.dividing_line.models import StaticDividingLine, DynamicDividingLine
|
9
12
|
from argenta.command.exceptions import (UnprocessedInputFlagException,
|
10
13
|
RepeatedInputFlagsException,
|
11
14
|
EmptyInputCommandException,
|
@@ -27,7 +30,7 @@ class BaseApp:
|
|
27
30
|
exit_command_description: str = 'Exit command',
|
28
31
|
system_points_title: str = 'System points:',
|
29
32
|
ignore_command_register: bool = True,
|
30
|
-
|
33
|
+
dividing_line: StaticDividingLine | DynamicDividingLine = StaticDividingLine(),
|
31
34
|
repeat_command_groups: bool = True,
|
32
35
|
print_func: Callable[[str], None] = Console().print) -> None:
|
33
36
|
self._prompt = prompt
|
@@ -35,7 +38,7 @@ class BaseApp:
|
|
35
38
|
self._exit_command = exit_command
|
36
39
|
self._exit_command_description = exit_command_description
|
37
40
|
self._system_points_title = system_points_title
|
38
|
-
self.
|
41
|
+
self._dividing_line = dividing_line
|
39
42
|
self._ignore_command_register = ignore_command_register
|
40
43
|
self._repeat_command_groups_description = repeat_command_groups
|
41
44
|
|
@@ -53,21 +56,17 @@ class BaseApp:
|
|
53
56
|
self.exit_command_handler: Callable[[], None] = lambda: print_func(self.farewell_message)
|
54
57
|
|
55
58
|
self._setup_default_view(is_initial_message_default=initial_message == 'Argenta',
|
56
|
-
is_farewell_message_default=farewell_message == 'See you'
|
57
|
-
is_line_separate_default=line_separate == '-----')
|
59
|
+
is_farewell_message_default=farewell_message == 'See you')
|
58
60
|
|
59
61
|
|
60
62
|
def _setup_default_view(self, is_initial_message_default: bool,
|
61
|
-
is_farewell_message_default: bool
|
62
|
-
is_line_separate_default: bool):
|
63
|
+
is_farewell_message_default: bool):
|
63
64
|
if is_initial_message_default:
|
64
65
|
self.initial_message = f'\n[bold red]{text2art('Argenta', font='tarty1')}\n\n'
|
65
66
|
if is_farewell_message_default:
|
66
67
|
self.farewell_message = (f'[bold red]\n{text2art('\nSee you\n', font='chanky')}[/bold red]\n'
|
67
68
|
f'[red i]github.com/koloideal/Argenta[/red i] | '
|
68
69
|
f'[red bold i]made by kolo[/red bold i]\n')
|
69
|
-
if is_line_separate_default:
|
70
|
-
self._line_separate = f'\n[dim]{"-" * 50}\n'
|
71
70
|
|
72
71
|
|
73
72
|
def _validate_number_of_routers(self) -> None:
|
@@ -100,7 +99,15 @@ class BaseApp:
|
|
100
99
|
return False
|
101
100
|
elif handled_command_trigger == command.get_trigger():
|
102
101
|
return False
|
103
|
-
self.
|
102
|
+
if isinstance(self._dividing_line, StaticDividingLine):
|
103
|
+
self._print_func(self._dividing_line.get_full_line())
|
104
|
+
self.unknown_command_handler(command)
|
105
|
+
self._print_func(self._dividing_line.get_full_line())
|
106
|
+
elif isinstance(self._dividing_line, DynamicDividingLine):
|
107
|
+
with redirect_stdout(io.StringIO()) as f:
|
108
|
+
self.unknown_command_handler(command)
|
109
|
+
res: str = f.getvalue()
|
110
|
+
self._print_framed_text_with_dynamic_line(res)
|
104
111
|
return True
|
105
112
|
|
106
113
|
|
@@ -124,6 +131,15 @@ class BaseApp:
|
|
124
131
|
self.empty_input_command_handler()
|
125
132
|
|
126
133
|
|
134
|
+
def _print_framed_text_with_dynamic_line(self, text: str):
|
135
|
+
clear_text = re.sub(r'\u001b\[[0-9;]*m', '', text)
|
136
|
+
max_length_line = max([len(line) for line in clear_text.split('\n')])
|
137
|
+
max_length_line = max_length_line if 10 <= max_length_line <= 80 else 80 if max_length_line > 80 else 10
|
138
|
+
self._print_func(self._dividing_line.get_full_line(max_length_line))
|
139
|
+
print(text.strip('\n'))
|
140
|
+
self._print_func(self._dividing_line.get_full_line(max_length_line))
|
141
|
+
|
142
|
+
|
127
143
|
|
128
144
|
class App(BaseApp):
|
129
145
|
def start_polling(self) -> None:
|
@@ -148,29 +164,35 @@ class App(BaseApp):
|
|
148
164
|
try:
|
149
165
|
input_command: InputCommand = InputCommand.parse(raw_command=raw_command)
|
150
166
|
except BaseInputCommandException as error:
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
167
|
+
if isinstance(self._dividing_line, StaticDividingLine):
|
168
|
+
self._print_func(self._dividing_line.get_full_line())
|
169
|
+
self._error_handler(error, raw_command)
|
170
|
+
self._print_func(self._dividing_line.get_full_line())
|
171
|
+
elif isinstance(self._dividing_line, DynamicDividingLine):
|
172
|
+
with redirect_stdout(io.StringIO()) as f:
|
173
|
+
self._error_handler(error, raw_command)
|
174
|
+
res: str = f.getvalue()
|
175
|
+
self._print_framed_text_with_dynamic_line(res)
|
157
176
|
continue
|
158
177
|
|
159
178
|
if self._is_exit_command(input_command):
|
160
179
|
return
|
161
180
|
|
162
|
-
self._print_func(self._line_separate)
|
163
|
-
|
164
181
|
if self._is_unknown_command(input_command):
|
165
|
-
self._print_func(self._line_separate)
|
166
|
-
if not self._repeat_command_groups_description:
|
167
|
-
self._print_func(self._prompt)
|
168
182
|
continue
|
169
183
|
|
170
|
-
|
171
|
-
|
184
|
+
if isinstance(self._dividing_line, StaticDividingLine):
|
185
|
+
self._print_func(self._dividing_line.get_full_line())
|
186
|
+
for registered_router in self._registered_routers:
|
187
|
+
registered_router.input_command_handler(input_command)
|
188
|
+
self._print_func(self._dividing_line.get_full_line())
|
189
|
+
elif isinstance(self._dividing_line, DynamicDividingLine):
|
190
|
+
with redirect_stdout(io.StringIO()) as f:
|
191
|
+
for registered_router in self._registered_routers:
|
192
|
+
registered_router.input_command_handler(input_command)
|
193
|
+
res: str = f.getvalue()
|
194
|
+
self._print_framed_text_with_dynamic_line(res)
|
172
195
|
|
173
|
-
self._print_func(self._line_separate)
|
174
196
|
if not self._repeat_command_groups_description:
|
175
197
|
self._print_func(self._prompt)
|
176
198
|
|
argenta/command/flag/models.py
CHANGED
argenta/command/models.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: argenta
|
3
|
-
Version: 0.4.
|
4
|
-
Summary:
|
3
|
+
Version: 0.4.8
|
4
|
+
Summary: Python library for creating TUI
|
5
5
|
License: MIT
|
6
6
|
Author: kolo
|
7
7
|
Author-email: kolo.is.main@gmail.com
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
22
22
|
## Описание
|
23
23
|
**Argenta** — Python library for creating custom shells
|
24
24
|
|
25
|
-

|
25
|
+

|
26
26
|
Пример внешнего вида TUI, написанного с помощью Argenta
|
27
27
|
|
28
28
|
---
|
@@ -112,33 +112,29 @@ def handler_with_flags(flags: InputFlags):
|
|
112
112
|
|
113
113
|
### Конструктор
|
114
114
|
```python
|
115
|
-
App(prompt: str = '
|
116
|
-
|
117
|
-
farewell_message: str = '
|
115
|
+
App(prompt: str = 'What do you want to do?\n',
|
116
|
+
initial_message: str = 'Argenta',
|
117
|
+
farewell_message: str = 'See you',
|
118
118
|
exit_command: str = 'Q',
|
119
119
|
exit_command_description: str = 'Exit command',
|
120
120
|
system_points_title: str = 'System points:',
|
121
|
-
|
122
|
-
|
123
|
-
line_separate: str = '',
|
124
|
-
command_group_description_separate: str = '',
|
121
|
+
ignore_command_register: bool = True,
|
122
|
+
dividing_line: StaticDividingLine | DynamicDividingLine = StaticDividingLine(),
|
125
123
|
repeat_command_groups: bool = True,
|
126
|
-
print_func: Callable[[str], None] = print)
|
124
|
+
print_func: Callable[[str], None] = Console().print)
|
127
125
|
```
|
128
126
|
**Аргументы:**
|
129
127
|
- **name : mean**
|
130
128
|
- `prompt` (`str`): Сообщение перед вводом команды.
|
131
|
-
- `
|
129
|
+
- `initial_message` (`str`): Приветственное сообщение при запуске.
|
132
130
|
- `farewell_message` (`str`): Сообщение при выходе.
|
133
131
|
- `exit_command` (`str`): Команда выхода (по умолчанию `'Q'`).
|
134
132
|
- `exit_command_description` (`str`): Описание команды выхода.
|
135
133
|
- `system_points_title` (`str`): Заголовок перед списком системных команд.
|
136
|
-
- `ignore_exit_command_register` (`bool`): Игнорировать регистр команды выхода.
|
137
134
|
- `ignore_command_register` (`bool`): Игнорировать регистр всех команд.
|
138
|
-
- `
|
139
|
-
- `command_group_description_separate` (`str`): Разделитель между группами команд.
|
135
|
+
- `dividing_line` (`StaticDividingLine | DynamicDividingLine`): Разделительная строка.
|
140
136
|
- `repeat_command_groups` (`bool`): Повторять описание команд перед вводом.
|
141
|
-
- `print_func` (`Callable[[str], None]`): Функция вывода текста в
|
137
|
+
- `print_func` (`Callable[[str], None]`): Функция вывода текста в терминал.
|
142
138
|
|
143
139
|
---
|
144
140
|
|
@@ -148,94 +144,83 @@ App(prompt: str = 'Enter a command',
|
|
148
144
|
|
149
145
|
#### **.start_polling() -> `None`**
|
150
146
|
|
151
|
-
*method mean* **::**
|
147
|
+
*method mean* **::** Запускает цикл обработки ввода
|
152
148
|
|
153
149
|
---
|
154
150
|
|
155
151
|
#### **.include_router(router: Router) -> `None`**
|
156
152
|
|
157
|
-
*param* `router: Router` **::**
|
153
|
+
*param* `router: Router` **::** Регистрируемый роутер
|
158
154
|
*required* **::** True
|
159
155
|
|
160
|
-
*method mean* **::**
|
156
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
161
157
|
|
162
158
|
---
|
163
159
|
|
164
|
-
#### **.
|
160
|
+
#### **.include_routers(\*routers: Router) -> `None`**
|
165
161
|
|
166
|
-
*param* `
|
167
|
-
*required* **::** True
|
168
|
-
*example* **::** `"Hello, I'm a example app"`
|
162
|
+
*param* `routers: Router` **::** Неограниченное количество регистрируемых роутеров
|
163
|
+
*required* **::** True
|
169
164
|
|
170
|
-
*method mean* **::**
|
165
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
171
166
|
|
172
167
|
---
|
173
168
|
|
174
|
-
#### **.
|
169
|
+
#### **.set_description_message_pattern(pattern: str) -> `None`**
|
175
170
|
|
176
|
-
*param* `
|
171
|
+
*param* `pattern: str` **::** Паттерн описания команды при её выводе в консоль
|
177
172
|
*required* **::** True
|
178
|
-
*example* **::** `"
|
173
|
+
*example* **::** `"[{command}] *=*=* {description}"`
|
179
174
|
|
180
|
-
*method mean* **::**
|
175
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
176
|
+
при выводе в консоль
|
181
177
|
|
182
178
|
---
|
183
179
|
|
184
|
-
#### **.
|
180
|
+
#### **.add_message_on_startup(message: str) -> `None`**
|
185
181
|
|
186
|
-
*param* `
|
182
|
+
*param* `message: str` **::** Сообщение, которое будет выведено при запуске приложения
|
187
183
|
*required* **::** True
|
188
|
-
*example* **::** `
|
184
|
+
*example* **::** `Message on startup`
|
189
185
|
|
190
|
-
*method mean* **::**
|
186
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
191
187
|
при выводе в консоль
|
192
188
|
|
193
189
|
---
|
190
|
+
|
194
191
|
<a name="custom_handler"></a>
|
195
|
-
#### **.
|
192
|
+
#### **.repeated_input_flags_handler: `Callable[[str], None])`**
|
196
193
|
|
197
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
198
|
-
вводе юзером повторяющихся флагов
|
199
|
-
*required* **::** True
|
200
194
|
*example* **::** `lambda raw_command: print_func(f'Repeated input flags: "{raw_command}"')`
|
201
195
|
|
202
|
-
*
|
196
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
203
197
|
вводе юзером повторяющихся флагов
|
204
198
|
|
205
199
|
---
|
206
200
|
|
207
|
-
#### **.
|
201
|
+
#### **.invalid_input_flags_handler: `Callable[[str], None])`**
|
208
202
|
|
209
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
210
|
-
вводе юзером команды с некорректным синтаксисом флагов
|
211
|
-
*required* **::** True
|
212
203
|
*example* **::** `lambda raw_command: print_func(f'Incorrect flag syntax: "{raw_command}"')`
|
213
204
|
|
214
|
-
*
|
205
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
215
206
|
вводе юзером команды с некорректным синтаксисом флагов
|
216
207
|
|
217
208
|
---
|
218
209
|
|
219
|
-
#### **.
|
210
|
+
#### **.unknown_command_handler: `Callable[[str], None]`**
|
220
211
|
|
221
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
222
|
-
вводе юзером неизвестной команды
|
223
|
-
*required* **::** True
|
224
212
|
*example* **::** `lambda command: print_func(f"Unknown command: {command.get_string_entity()}")`
|
225
213
|
|
226
|
-
*
|
214
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
227
215
|
вводе юзером неизвестной команды
|
228
216
|
|
229
217
|
---
|
230
218
|
|
231
|
-
#### **.
|
219
|
+
#### **.empty_command_handler: `Callable[[str], None])`**
|
232
220
|
|
233
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
234
|
-
вводе юзером пустой команды
|
235
|
-
*required* **::** True
|
236
221
|
*example* **::** `lambda: print_func(f'Empty input command')`
|
237
222
|
|
238
|
-
*
|
223
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
239
224
|
вводе юзером пустой команды
|
240
225
|
|
241
226
|
---
|
@@ -253,6 +238,9 @@ App(prompt: str = 'Enter a command',
|
|
253
238
|
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
254
239
|
у __<u>разных</u>__ роутеров
|
255
240
|
|
241
|
+
- Наиболее частые сообщение при запуске предопределены и доступны для быстрого
|
242
|
+
использования: `argenta.app.defaults.PredeterminedMessages`
|
243
|
+
|
256
244
|
|
257
245
|
|
258
246
|
|
@@ -261,9 +249,37 @@ App(prompt: str = 'Enter a command',
|
|
261
249
|
- `InvalidRouterInstanceException` — Переданный объект в метод `App().include_router()` не является экземпляром класса `Router`.
|
262
250
|
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
263
251
|
- `IncorrectNumberOfHandlerArgsException` — У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент).
|
264
|
-
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
265
252
|
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
266
|
-
|
253
|
+
|
254
|
+
---
|
255
|
+
|
256
|
+
## *class* :: `StaticDivideLine`
|
257
|
+
Класс, экземпляр которого представляет собой строковый разделитель фиксированной длины
|
258
|
+
|
259
|
+
### Конструктор
|
260
|
+
```python
|
261
|
+
StaticDivideLine(unit_part: str = '-',
|
262
|
+
length: int = 25)
|
263
|
+
```
|
264
|
+
|
265
|
+
**Аргументы:**
|
266
|
+
- **name : mean**
|
267
|
+
- `unit_part` (`str`): Единичная часть строкового разделителя
|
268
|
+
- `length` (`int`): Длина строкового разделителя
|
269
|
+
|
270
|
+
---
|
271
|
+
|
272
|
+
## *class* :: `DinamicDivideLine`
|
273
|
+
Строковый разделитель динамической длины, которая определяется длиной обрамляемого вывода команды
|
274
|
+
|
275
|
+
### Конструктор
|
276
|
+
```python
|
277
|
+
DinamicDivideLine(unit_part: str = '-')
|
278
|
+
```
|
279
|
+
|
280
|
+
**Аргументы:**
|
281
|
+
- **name : mean**
|
282
|
+
- `unit_part` (`str`): Единичная часть строкового разделителя
|
267
283
|
|
268
284
|
---
|
269
285
|
|
@@ -291,32 +307,27 @@ Router(title: str = 'Commands group title:',
|
|
291
307
|
|
292
308
|
#### **command(command: Command)**
|
293
309
|
|
294
|
-
*param* `command: Command` **::**
|
310
|
+
*param* `command: Command` **::** Экземпляр класса `Command`, который определяет строковый триггер команды,
|
295
311
|
допустимые флаги команды и другое
|
296
312
|
*required* **::** True
|
297
313
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
298
314
|
|
299
|
-
*method mean* **::**
|
315
|
+
*method mean* **::** Декоратор, который регистрирует функцию как обработчик команды
|
300
316
|
|
301
317
|
---
|
302
318
|
|
303
319
|
#### **.get_name() -> `str`**
|
304
320
|
|
305
|
-
*method mean* **::**
|
321
|
+
*method mean* **::** Возвращает установленное название роутера
|
306
322
|
|
307
323
|
---
|
308
324
|
|
309
325
|
#### **.get_title() -> `str`**
|
310
326
|
|
311
|
-
*method mean* **::**
|
327
|
+
*method mean* **::** Возвращает установленный заголовок группы команд данного роутера
|
312
328
|
|
313
329
|
---
|
314
330
|
|
315
|
-
#### **.get_all_commands() -> `list[str]`**
|
316
|
-
|
317
|
-
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
318
|
-
|
319
|
-
---
|
320
331
|
|
321
332
|
### Исключения
|
322
333
|
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
@@ -347,19 +358,19 @@ Command(trigger: str,
|
|
347
358
|
|
348
359
|
#### **.get_trigger() -> `str`**
|
349
360
|
|
350
|
-
*method mean* **::**
|
361
|
+
*method mean* **::** Возвращает строковый триггер экземпляра
|
351
362
|
|
352
363
|
---
|
353
364
|
|
354
365
|
#### **.get_description() -> `str`**
|
355
366
|
|
356
|
-
*method mean* **::**
|
367
|
+
*method mean* **::** Возвращает описание команды
|
357
368
|
|
358
369
|
---
|
359
370
|
|
360
371
|
#### **.get_registered_flags() -> `Flags | None`**
|
361
372
|
|
362
|
-
*method mean* **::**
|
373
|
+
*method mean* **::** Возвращает зарегистрированные флаги экземпляра
|
363
374
|
|
364
375
|
---
|
365
376
|
|
@@ -381,18 +392,18 @@ Command(trigger: str,
|
|
381
392
|
|
382
393
|
### Конструктор
|
383
394
|
```python
|
384
|
-
Flag(
|
385
|
-
|
386
|
-
|
395
|
+
Flag(name: str,
|
396
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
397
|
+
possible_values: list[str] | typing.Pattern[str] | False = True)
|
387
398
|
```
|
388
399
|
|
389
400
|
---
|
390
401
|
|
391
402
|
**Аргументы:**
|
392
403
|
- **name : mean**
|
393
|
-
- `
|
394
|
-
- `
|
395
|
-
- `
|
404
|
+
- `name` (`str`): Имя флага
|
405
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
406
|
+
- `possible_values` (`list[str] | Pattern[str] | bool`): Множество допустимых значений флага, может быть задано
|
396
407
|
списком с допустимыми значениями или регулярным выражением (рекомендуется `re.compile(r'example exspression')`), при значении
|
397
408
|
аргумента `False` у введённого флага не может быть значения, иначе будет вызвано исключение и обработано соответствующим
|
398
409
|
еррор-хэндлером
|
@@ -405,19 +416,60 @@ Flag(flag_name: str,
|
|
405
416
|
|
406
417
|
#### **.get_string_entity() -> `str`**
|
407
418
|
|
408
|
-
*method mean* **::**
|
419
|
+
*method mean* **::** Возвращает строковое представление флага(префикс + имя)
|
420
|
+
|
421
|
+
---
|
422
|
+
|
423
|
+
#### **.get_name() -> `str`**
|
424
|
+
|
425
|
+
*method mean* **::** Возвращает имя флага
|
426
|
+
|
427
|
+
---
|
428
|
+
|
429
|
+
#### **.get_prefix() -> `str`**
|
430
|
+
|
431
|
+
*method mean* **::** Возвращает префикс флага
|
432
|
+
|
433
|
+
---
|
434
|
+
|
435
|
+
## *class* :: `InputFlag`
|
436
|
+
Класс, экземпляры которого являются введёнными флагами команды, передаётся в хэндлер команды
|
437
|
+
через `InputFlags`
|
438
|
+
|
439
|
+
---
|
440
|
+
|
441
|
+
### Примечания
|
442
|
+
|
443
|
+
- Наиболее часто используемые флаги предопределены и доступны для быстрого использования:
|
444
|
+
`argenta.command.flag.defaults.PredeterminedFlags`
|
445
|
+
|
446
|
+
---
|
447
|
+
|
448
|
+
|
449
|
+
### Конструктор
|
450
|
+
```python
|
451
|
+
InputFlag(name: str,
|
452
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
453
|
+
value: str = None)
|
454
|
+
```
|
409
455
|
|
410
456
|
---
|
411
457
|
|
412
|
-
|
458
|
+
**Аргументы:**
|
459
|
+
- **name : mean**
|
460
|
+
- `name` (`str`): Имя флага
|
461
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
462
|
+
- `value` (`str`): Значение введённого флага, если оно есть
|
413
463
|
|
414
|
-
|
464
|
+
---
|
465
|
+
|
466
|
+
### ***methods***
|
415
467
|
|
416
468
|
---
|
417
469
|
|
418
|
-
#### **.
|
470
|
+
#### **.get_value() -> `str | None`**
|
419
471
|
|
420
|
-
*method mean* **::**
|
472
|
+
*method mean* **::** Возвращает значение введённого флага
|
421
473
|
|
422
474
|
---
|
423
475
|
|
@@ -428,7 +480,7 @@ Flag(flag_name: str,
|
|
428
480
|
|
429
481
|
### Конструктор
|
430
482
|
```python
|
431
|
-
Flags(*
|
483
|
+
Flags(*flags: Flag)
|
432
484
|
```
|
433
485
|
|
434
486
|
---
|
@@ -445,7 +497,66 @@ Flags(*flagы: Flag)
|
|
445
497
|
|
446
498
|
#### **.get_flags() -> `list[Flag]`**
|
447
499
|
|
448
|
-
*method mean* **::**
|
500
|
+
*method mean* **::** Возвращает зарегистрированные флаги
|
501
|
+
|
502
|
+
---
|
503
|
+
|
504
|
+
#### **.add_flag(flag: Flag) -> `None`**
|
505
|
+
|
506
|
+
*method mean* **::** Добавляет флаг в группу
|
507
|
+
|
508
|
+
---
|
509
|
+
|
510
|
+
#### **.add_flags(flags: list[Flag]) -> `None`**
|
511
|
+
|
512
|
+
*method mean* **::** Добавляет флаги в группу
|
513
|
+
|
514
|
+
---
|
515
|
+
|
516
|
+
#### **.get_flag(name: str) -> `Flag | None`**
|
517
|
+
|
518
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
519
|
+
*required* **::** True
|
520
|
+
*example* **::** `'host'`
|
521
|
+
|
522
|
+
*method mean* **::** Возвращает флаг по его триггеру или `None`, если флаг не найден
|
523
|
+
|
524
|
+
---
|
525
|
+
|
526
|
+
## *class* :: `InputFlags`
|
527
|
+
Класс, объединяющий список введённых флагов в один объект, передаётся соответствующему хэндлеру
|
528
|
+
в качестве аргумента
|
529
|
+
|
530
|
+
### Конструктор
|
531
|
+
```python
|
532
|
+
InputFlags(*flags: Flag)
|
533
|
+
```
|
534
|
+
|
535
|
+
---
|
536
|
+
|
537
|
+
**Аргументы:**
|
538
|
+
- **name : mean**
|
539
|
+
- `*flags` (`InputFlag`): Неограниченное количество передаваемых флагов
|
540
|
+
|
541
|
+
---
|
542
|
+
|
543
|
+
### ***methods***
|
544
|
+
|
545
|
+
---
|
546
|
+
|
547
|
+
#### **.get_flags() -> `list[Flag]`**
|
548
|
+
|
549
|
+
*method mean* **::** Возвращает введённые флаги
|
550
|
+
|
551
|
+
---
|
552
|
+
|
553
|
+
#### **.get_flag(name: str) -> `InputFlag | None`**
|
554
|
+
|
555
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
556
|
+
*required* **::** True
|
557
|
+
*example* **::** `'host'`
|
558
|
+
|
559
|
+
*method mean* **::** Возвращает введённый флаг по его триггеру или `None`, если флаг не найден
|
449
560
|
|
450
561
|
---
|
451
562
|
|
@@ -1,16 +1,18 @@
|
|
1
1
|
argenta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
argenta/app/__init__.py,sha256=Slm_0b1yaXeJ78zUpo_sDSEzYuTSj3_DhRU6wU8XU9Q,46
|
3
3
|
argenta/app/defaults.py,sha256=7ej4G-4dieMlichfuQhw5XgabF15X-vAa8k02ZfkdUs,234
|
4
|
+
argenta/app/dividing_line/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
+
argenta/app/dividing_line/models.py,sha256=ueBDmy1hfYzGAr1X2G2Mw0hjES7YQBtP7N3TLBDz9h0,700
|
4
6
|
argenta/app/exceptions.py,sha256=uCkb1VqEIZQuVDY0ZsfDc3yCbySwLpV5CdIT7iaGYRM,928
|
5
|
-
argenta/app/models.py,sha256=
|
7
|
+
argenta/app/models.py,sha256=F3r1WElR3T9-ebD7ud1GPtMOkoArmbpHbDSFKAizf4M,11165
|
6
8
|
argenta/app/registered_routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
9
|
argenta/app/registered_routers/entity.py,sha256=OQZyrF4eoCoDHzRJ22zZxhNEx-bOUDu7NZIFDfO-fuY,688
|
8
10
|
argenta/command/__init__.py,sha256=Yx5Zl5Diwhjs8SZrsYEBNJscTMxWkLP0nqPvAJZtu30,52
|
9
11
|
argenta/command/exceptions.py,sha256=HOgddtXLDgk9Wx6c_GnzW3bMAMU5CuUnUyxjW3cVHRo,687
|
10
12
|
argenta/command/flag/__init__.py,sha256=Ew-ZRFVY7sC_PMvavN0AEcsvdYGHkLAPOYMrReY3NC0,116
|
11
13
|
argenta/command/flag/defaults.py,sha256=ktKmDT0rSSBoFUghTlEQ6OletoFxCiD37hRzO73mUUc,875
|
12
|
-
argenta/command/flag/models.py,sha256=
|
13
|
-
argenta/command/models.py,sha256=
|
14
|
+
argenta/command/flag/models.py,sha256=IY0FHyAFD9O1ZxSaq6NR9gSTkldoQGrKVoGrAbnmEuA,3769
|
15
|
+
argenta/command/models.py,sha256=1p_QZ5cQq47t915zHehEx-S0smTqj4DDnjZGn_qZlOA,4436
|
14
16
|
argenta/router/__init__.py,sha256=uP58EfcmtK2NuMBQaspD_Gmq3LqgDXus4rfB6hp9Uig,52
|
15
17
|
argenta/router/command_handler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
18
|
argenta/router/command_handler/entity.py,sha256=8sWhP89c0FavFBITJmH9c8wNn2ipW_6-_obzjkwXueU,646
|
@@ -19,7 +21,7 @@ argenta/router/command_handlers/entity.py,sha256=KgFKjAMUr_mOcn9xahTxMUKB6lIxXgq
|
|
19
21
|
argenta/router/defaults.py,sha256=huftOg1HMjrT_R2SHHOL4eJ5uZHspNEYBSg-mCq9xhU,126
|
20
22
|
argenta/router/entity.py,sha256=afQn5jrDBrcd5QUzeBwRPfazOO6x0yYSXcmvHYhJpDw,4997
|
21
23
|
argenta/router/exceptions.py,sha256=tdeaR8zDvnytgRYo_wQWKHt3if2brapgauIhhMIsTsA,678
|
22
|
-
argenta-0.4.
|
23
|
-
argenta-0.4.
|
24
|
-
argenta-0.4.
|
25
|
-
argenta-0.4.
|
24
|
+
argenta-0.4.8.dist-info/LICENSE,sha256=zmqoGh2n5rReBv4s8wPxF_gZEZDgauJYSPMuPczgOiU,1082
|
25
|
+
argenta-0.4.8.dist-info/METADATA,sha256=JjVjgk4hSSFA8I-oe5XHz67QANNXsZq6fA88igFvxww,20238
|
26
|
+
argenta-0.4.8.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
27
|
+
argenta-0.4.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|