argenta 0.4.6__tar.gz → 0.4.7__tar.gz
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-0.4.6 → argenta-0.4.7}/PKG-INFO +158 -77
- {argenta-0.4.6 → argenta-0.4.7}/README.md +157 -76
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/models.py +0 -5
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/flag/models.py +1 -1
- {argenta-0.4.6 → argenta-0.4.7}/pyproject.toml +1 -1
- {argenta-0.4.6 → argenta-0.4.7}/LICENSE +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/defaults.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/exceptions.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/registered_routers/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/app/registered_routers/entity.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/exceptions.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/flag/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/flag/defaults.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/command/models.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/command_handler/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/command_handler/entity.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/command_handlers/__init__.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/command_handlers/entity.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/defaults.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/entity.py +0 -0
- {argenta-0.4.6 → argenta-0.4.7}/argenta/router/exceptions.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: argenta
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.7
|
4
4
|
Summary: python library for creating custom shells
|
5
5
|
License: MIT
|
6
6
|
Author: kolo
|
@@ -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
|
+
line_separate: str = '-----',
|
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
135
|
- `line_separate` (`str`): Разделительная строка между командами.
|
139
|
-
- `command_group_description_separate` (`str`): Разделитель между группами команд.
|
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,7 @@ 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
|
-
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
267
253
|
|
268
254
|
---
|
269
255
|
|
@@ -291,32 +277,27 @@ Router(title: str = 'Commands group title:',
|
|
291
277
|
|
292
278
|
#### **command(command: Command)**
|
293
279
|
|
294
|
-
*param* `command: Command` **::**
|
280
|
+
*param* `command: Command` **::** Экземпляр класса `Command`, который определяет строковый триггер команды,
|
295
281
|
допустимые флаги команды и другое
|
296
282
|
*required* **::** True
|
297
283
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
298
284
|
|
299
|
-
*method mean* **::**
|
285
|
+
*method mean* **::** Декоратор, который регистрирует функцию как обработчик команды
|
300
286
|
|
301
287
|
---
|
302
288
|
|
303
289
|
#### **.get_name() -> `str`**
|
304
290
|
|
305
|
-
*method mean* **::**
|
291
|
+
*method mean* **::** Возвращает установленное название роутера
|
306
292
|
|
307
293
|
---
|
308
294
|
|
309
295
|
#### **.get_title() -> `str`**
|
310
296
|
|
311
|
-
*method mean* **::**
|
297
|
+
*method mean* **::** Возвращает установленный заголовок группы команд данного роутера
|
312
298
|
|
313
299
|
---
|
314
300
|
|
315
|
-
#### **.get_all_commands() -> `list[str]`**
|
316
|
-
|
317
|
-
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
318
|
-
|
319
|
-
---
|
320
301
|
|
321
302
|
### Исключения
|
322
303
|
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
@@ -347,19 +328,19 @@ Command(trigger: str,
|
|
347
328
|
|
348
329
|
#### **.get_trigger() -> `str`**
|
349
330
|
|
350
|
-
*method mean* **::**
|
331
|
+
*method mean* **::** Возвращает строковый триггер экземпляра
|
351
332
|
|
352
333
|
---
|
353
334
|
|
354
335
|
#### **.get_description() -> `str`**
|
355
336
|
|
356
|
-
*method mean* **::**
|
337
|
+
*method mean* **::** Возвращает описание команды
|
357
338
|
|
358
339
|
---
|
359
340
|
|
360
341
|
#### **.get_registered_flags() -> `Flags | None`**
|
361
342
|
|
362
|
-
*method mean* **::**
|
343
|
+
*method mean* **::** Возвращает зарегистрированные флаги экземпляра
|
363
344
|
|
364
345
|
---
|
365
346
|
|
@@ -381,18 +362,18 @@ Command(trigger: str,
|
|
381
362
|
|
382
363
|
### Конструктор
|
383
364
|
```python
|
384
|
-
Flag(
|
385
|
-
|
386
|
-
|
365
|
+
Flag(name: str,
|
366
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
367
|
+
possible_values: list[str] | typing.Pattern[str] | False = True)
|
387
368
|
```
|
388
369
|
|
389
370
|
---
|
390
371
|
|
391
372
|
**Аргументы:**
|
392
373
|
- **name : mean**
|
393
|
-
- `
|
394
|
-
- `
|
395
|
-
- `
|
374
|
+
- `name` (`str`): Имя флага
|
375
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
376
|
+
- `possible_values` (`list[str] | Pattern[str] | bool`): Множество допустимых значений флага, может быть задано
|
396
377
|
списком с допустимыми значениями или регулярным выражением (рекомендуется `re.compile(r'example exspression')`), при значении
|
397
378
|
аргумента `False` у введённого флага не может быть значения, иначе будет вызвано исключение и обработано соответствующим
|
398
379
|
еррор-хэндлером
|
@@ -405,19 +386,60 @@ Flag(flag_name: str,
|
|
405
386
|
|
406
387
|
#### **.get_string_entity() -> `str`**
|
407
388
|
|
408
|
-
*method mean* **::**
|
389
|
+
*method mean* **::** Возвращает строковое представление флага(префикс + имя)
|
390
|
+
|
391
|
+
---
|
392
|
+
|
393
|
+
#### **.get_name() -> `str`**
|
394
|
+
|
395
|
+
*method mean* **::** Возвращает имя флага
|
396
|
+
|
397
|
+
---
|
398
|
+
|
399
|
+
#### **.get_prefix() -> `str`**
|
400
|
+
|
401
|
+
*method mean* **::** Возвращает префикс флага
|
402
|
+
|
403
|
+
---
|
404
|
+
|
405
|
+
## *class* :: `InputFlag`
|
406
|
+
Класс, экземпляры которого являются введёнными флагами команды, передаётся в хэндлер команды
|
407
|
+
через `InputFlags`
|
408
|
+
|
409
|
+
---
|
410
|
+
|
411
|
+
### Примечания
|
412
|
+
|
413
|
+
- Наиболее часто используемые флаги предопределены и доступны для быстрого использования:
|
414
|
+
`argenta.command.flag.defaults.PredeterminedFlags`
|
409
415
|
|
410
416
|
---
|
411
417
|
|
412
|
-
#### **.get_flag_name() -> `str`**
|
413
418
|
|
414
|
-
|
419
|
+
### Конструктор
|
420
|
+
```python
|
421
|
+
InputFlag(name: str,
|
422
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
423
|
+
value: str = None)
|
424
|
+
```
|
425
|
+
|
426
|
+
---
|
427
|
+
|
428
|
+
**Аргументы:**
|
429
|
+
- **name : mean**
|
430
|
+
- `name` (`str`): Имя флага
|
431
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
432
|
+
- `value` (`str`): Значение введённого флага, если оно есть
|
433
|
+
|
434
|
+
---
|
435
|
+
|
436
|
+
### ***methods***
|
415
437
|
|
416
438
|
---
|
417
439
|
|
418
|
-
#### **.
|
440
|
+
#### **.get_value() -> `str | None`**
|
419
441
|
|
420
|
-
*method mean* **::**
|
442
|
+
*method mean* **::** Возвращает значение введённого флага
|
421
443
|
|
422
444
|
---
|
423
445
|
|
@@ -428,7 +450,7 @@ Flag(flag_name: str,
|
|
428
450
|
|
429
451
|
### Конструктор
|
430
452
|
```python
|
431
|
-
Flags(*
|
453
|
+
Flags(*flags: Flag)
|
432
454
|
```
|
433
455
|
|
434
456
|
---
|
@@ -445,7 +467,66 @@ Flags(*flagы: Flag)
|
|
445
467
|
|
446
468
|
#### **.get_flags() -> `list[Flag]`**
|
447
469
|
|
448
|
-
*method mean* **::**
|
470
|
+
*method mean* **::** Возвращает зарегистрированные флаги
|
471
|
+
|
472
|
+
---
|
473
|
+
|
474
|
+
#### **.add_flag(flag: Flag) -> `None`**
|
475
|
+
|
476
|
+
*method mean* **::** Добавляет флаг в группу
|
477
|
+
|
478
|
+
---
|
479
|
+
|
480
|
+
#### **.add_flags(flags: list[Flag]) -> `None`**
|
481
|
+
|
482
|
+
*method mean* **::** Добавляет флаги в группу
|
483
|
+
|
484
|
+
---
|
485
|
+
|
486
|
+
#### **.get_flag(name: str) -> `Flag | None`**
|
487
|
+
|
488
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
489
|
+
*required* **::** True
|
490
|
+
*example* **::** `'host'`
|
491
|
+
|
492
|
+
*method mean* **::** Возвращает флаг по его триггеру или `None`, если флаг не найден
|
493
|
+
|
494
|
+
---
|
495
|
+
|
496
|
+
## *class* :: `InputFlags`
|
497
|
+
Класс, объединяющий список введённых флагов в один объект, передаётся соответствующему хэндлеру
|
498
|
+
в качестве аргумента
|
499
|
+
|
500
|
+
### Конструктор
|
501
|
+
```python
|
502
|
+
InputFlags(*flags: Flag)
|
503
|
+
```
|
504
|
+
|
505
|
+
---
|
506
|
+
|
507
|
+
**Аргументы:**
|
508
|
+
- **name : mean**
|
509
|
+
- `*flags` (`InputFlag`): Неограниченное количество передаваемых флагов
|
510
|
+
|
511
|
+
---
|
512
|
+
|
513
|
+
### ***methods***
|
514
|
+
|
515
|
+
---
|
516
|
+
|
517
|
+
#### **.get_flags() -> `list[Flag]`**
|
518
|
+
|
519
|
+
*method mean* **::** Возвращает введённые флаги
|
520
|
+
|
521
|
+
---
|
522
|
+
|
523
|
+
#### **.get_flag(name: str) -> `InputFlag | None`**
|
524
|
+
|
525
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
526
|
+
*required* **::** True
|
527
|
+
*example* **::** `'host'`
|
528
|
+
|
529
|
+
*method mean* **::** Возвращает введённый флаг по его триггеру или `None`, если флаг не найден
|
449
530
|
|
450
531
|
---
|
451
532
|
|
@@ -5,7 +5,7 @@
|
|
5
5
|
## Описание
|
6
6
|
**Argenta** — Python library for creating custom shells
|
7
7
|
|
8
|
-

|
8
|
+

|
9
9
|
Пример внешнего вида TUI, написанного с помощью Argenta
|
10
10
|
|
11
11
|
---
|
@@ -95,33 +95,29 @@ def handler_with_flags(flags: InputFlags):
|
|
95
95
|
|
96
96
|
### Конструктор
|
97
97
|
```python
|
98
|
-
App(prompt: str = '
|
99
|
-
|
100
|
-
farewell_message: str = '
|
98
|
+
App(prompt: str = 'What do you want to do?\n',
|
99
|
+
initial_message: str = 'Argenta',
|
100
|
+
farewell_message: str = 'See you',
|
101
101
|
exit_command: str = 'Q',
|
102
102
|
exit_command_description: str = 'Exit command',
|
103
103
|
system_points_title: str = 'System points:',
|
104
|
-
|
105
|
-
|
106
|
-
line_separate: str = '',
|
107
|
-
command_group_description_separate: str = '',
|
104
|
+
ignore_command_register: bool = True,
|
105
|
+
line_separate: str = '-----',
|
108
106
|
repeat_command_groups: bool = True,
|
109
|
-
print_func: Callable[[str], None] = print)
|
107
|
+
print_func: Callable[[str], None] = Console().print)
|
110
108
|
```
|
111
109
|
**Аргументы:**
|
112
110
|
- **name : mean**
|
113
111
|
- `prompt` (`str`): Сообщение перед вводом команды.
|
114
|
-
- `
|
112
|
+
- `initial_message` (`str`): Приветственное сообщение при запуске.
|
115
113
|
- `farewell_message` (`str`): Сообщение при выходе.
|
116
114
|
- `exit_command` (`str`): Команда выхода (по умолчанию `'Q'`).
|
117
115
|
- `exit_command_description` (`str`): Описание команды выхода.
|
118
116
|
- `system_points_title` (`str`): Заголовок перед списком системных команд.
|
119
|
-
- `ignore_exit_command_register` (`bool`): Игнорировать регистр команды выхода.
|
120
117
|
- `ignore_command_register` (`bool`): Игнорировать регистр всех команд.
|
121
118
|
- `line_separate` (`str`): Разделительная строка между командами.
|
122
|
-
- `command_group_description_separate` (`str`): Разделитель между группами команд.
|
123
119
|
- `repeat_command_groups` (`bool`): Повторять описание команд перед вводом.
|
124
|
-
- `print_func` (`Callable[[str], None]`): Функция вывода текста в
|
120
|
+
- `print_func` (`Callable[[str], None]`): Функция вывода текста в терминал.
|
125
121
|
|
126
122
|
---
|
127
123
|
|
@@ -131,94 +127,83 @@ App(prompt: str = 'Enter a command',
|
|
131
127
|
|
132
128
|
#### **.start_polling() -> `None`**
|
133
129
|
|
134
|
-
*method mean* **::**
|
130
|
+
*method mean* **::** Запускает цикл обработки ввода
|
135
131
|
|
136
132
|
---
|
137
133
|
|
138
134
|
#### **.include_router(router: Router) -> `None`**
|
139
135
|
|
140
|
-
*param* `router: Router` **::**
|
136
|
+
*param* `router: Router` **::** Регистрируемый роутер
|
141
137
|
*required* **::** True
|
142
138
|
|
143
|
-
*method mean* **::**
|
139
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
144
140
|
|
145
141
|
---
|
146
142
|
|
147
|
-
#### **.
|
143
|
+
#### **.include_routers(\*routers: Router) -> `None`**
|
148
144
|
|
149
|
-
*param* `
|
150
|
-
*required* **::** True
|
151
|
-
*example* **::** `"Hello, I'm a example app"`
|
145
|
+
*param* `routers: Router` **::** Неограниченное количество регистрируемых роутеров
|
146
|
+
*required* **::** True
|
152
147
|
|
153
|
-
*method mean* **::**
|
148
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
154
149
|
|
155
150
|
---
|
156
151
|
|
157
|
-
#### **.
|
152
|
+
#### **.set_description_message_pattern(pattern: str) -> `None`**
|
158
153
|
|
159
|
-
*param* `
|
154
|
+
*param* `pattern: str` **::** Паттерн описания команды при её выводе в консоль
|
160
155
|
*required* **::** True
|
161
|
-
*example* **::** `"
|
156
|
+
*example* **::** `"[{command}] *=*=* {description}"`
|
162
157
|
|
163
|
-
*method mean* **::**
|
158
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
159
|
+
при выводе в консоль
|
164
160
|
|
165
161
|
---
|
166
162
|
|
167
|
-
#### **.
|
163
|
+
#### **.add_message_on_startup(message: str) -> `None`**
|
168
164
|
|
169
|
-
*param* `
|
165
|
+
*param* `message: str` **::** Сообщение, которое будет выведено при запуске приложения
|
170
166
|
*required* **::** True
|
171
|
-
*example* **::** `
|
167
|
+
*example* **::** `Message on startup`
|
172
168
|
|
173
|
-
*method mean* **::**
|
169
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
174
170
|
при выводе в консоль
|
175
171
|
|
176
172
|
---
|
173
|
+
|
177
174
|
<a name="custom_handler"></a>
|
178
|
-
#### **.
|
175
|
+
#### **.repeated_input_flags_handler: `Callable[[str], None])`**
|
179
176
|
|
180
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
181
|
-
вводе юзером повторяющихся флагов
|
182
|
-
*required* **::** True
|
183
177
|
*example* **::** `lambda raw_command: print_func(f'Repeated input flags: "{raw_command}"')`
|
184
178
|
|
185
|
-
*
|
179
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
186
180
|
вводе юзером повторяющихся флагов
|
187
181
|
|
188
182
|
---
|
189
183
|
|
190
|
-
#### **.
|
184
|
+
#### **.invalid_input_flags_handler: `Callable[[str], None])`**
|
191
185
|
|
192
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
193
|
-
вводе юзером команды с некорректным синтаксисом флагов
|
194
|
-
*required* **::** True
|
195
186
|
*example* **::** `lambda raw_command: print_func(f'Incorrect flag syntax: "{raw_command}"')`
|
196
187
|
|
197
|
-
*
|
188
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
198
189
|
вводе юзером команды с некорректным синтаксисом флагов
|
199
190
|
|
200
191
|
---
|
201
192
|
|
202
|
-
#### **.
|
193
|
+
#### **.unknown_command_handler: `Callable[[str], None]`**
|
203
194
|
|
204
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
205
|
-
вводе юзером неизвестной команды
|
206
|
-
*required* **::** True
|
207
195
|
*example* **::** `lambda command: print_func(f"Unknown command: {command.get_string_entity()}")`
|
208
196
|
|
209
|
-
*
|
197
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
210
198
|
вводе юзером неизвестной команды
|
211
199
|
|
212
200
|
---
|
213
201
|
|
214
|
-
#### **.
|
202
|
+
#### **.empty_command_handler: `Callable[[str], None])`**
|
215
203
|
|
216
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
217
|
-
вводе юзером пустой команды
|
218
|
-
*required* **::** True
|
219
204
|
*example* **::** `lambda: print_func(f'Empty input command')`
|
220
205
|
|
221
|
-
*
|
206
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
222
207
|
вводе юзером пустой команды
|
223
208
|
|
224
209
|
---
|
@@ -236,6 +221,9 @@ App(prompt: str = 'Enter a command',
|
|
236
221
|
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
237
222
|
у __<u>разных</u>__ роутеров
|
238
223
|
|
224
|
+
- Наиболее частые сообщение при запуске предопределены и доступны для быстрого
|
225
|
+
использования: `argenta.app.defaults.PredeterminedMessages`
|
226
|
+
|
239
227
|
|
240
228
|
|
241
229
|
|
@@ -244,9 +232,7 @@ App(prompt: str = 'Enter a command',
|
|
244
232
|
- `InvalidRouterInstanceException` — Переданный объект в метод `App().include_router()` не является экземпляром класса `Router`.
|
245
233
|
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
246
234
|
- `IncorrectNumberOfHandlerArgsException` — У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент).
|
247
|
-
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
248
235
|
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
249
|
-
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
250
236
|
|
251
237
|
---
|
252
238
|
|
@@ -274,32 +260,27 @@ Router(title: str = 'Commands group title:',
|
|
274
260
|
|
275
261
|
#### **command(command: Command)**
|
276
262
|
|
277
|
-
*param* `command: Command` **::**
|
263
|
+
*param* `command: Command` **::** Экземпляр класса `Command`, который определяет строковый триггер команды,
|
278
264
|
допустимые флаги команды и другое
|
279
265
|
*required* **::** True
|
280
266
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
281
267
|
|
282
|
-
*method mean* **::**
|
268
|
+
*method mean* **::** Декоратор, который регистрирует функцию как обработчик команды
|
283
269
|
|
284
270
|
---
|
285
271
|
|
286
272
|
#### **.get_name() -> `str`**
|
287
273
|
|
288
|
-
*method mean* **::**
|
274
|
+
*method mean* **::** Возвращает установленное название роутера
|
289
275
|
|
290
276
|
---
|
291
277
|
|
292
278
|
#### **.get_title() -> `str`**
|
293
279
|
|
294
|
-
*method mean* **::**
|
280
|
+
*method mean* **::** Возвращает установленный заголовок группы команд данного роутера
|
295
281
|
|
296
282
|
---
|
297
283
|
|
298
|
-
#### **.get_all_commands() -> `list[str]`**
|
299
|
-
|
300
|
-
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
301
|
-
|
302
|
-
---
|
303
284
|
|
304
285
|
### Исключения
|
305
286
|
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
@@ -330,19 +311,19 @@ Command(trigger: str,
|
|
330
311
|
|
331
312
|
#### **.get_trigger() -> `str`**
|
332
313
|
|
333
|
-
*method mean* **::**
|
314
|
+
*method mean* **::** Возвращает строковый триггер экземпляра
|
334
315
|
|
335
316
|
---
|
336
317
|
|
337
318
|
#### **.get_description() -> `str`**
|
338
319
|
|
339
|
-
*method mean* **::**
|
320
|
+
*method mean* **::** Возвращает описание команды
|
340
321
|
|
341
322
|
---
|
342
323
|
|
343
324
|
#### **.get_registered_flags() -> `Flags | None`**
|
344
325
|
|
345
|
-
*method mean* **::**
|
326
|
+
*method mean* **::** Возвращает зарегистрированные флаги экземпляра
|
346
327
|
|
347
328
|
---
|
348
329
|
|
@@ -364,18 +345,18 @@ Command(trigger: str,
|
|
364
345
|
|
365
346
|
### Конструктор
|
366
347
|
```python
|
367
|
-
Flag(
|
368
|
-
|
369
|
-
|
348
|
+
Flag(name: str,
|
349
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
350
|
+
possible_values: list[str] | typing.Pattern[str] | False = True)
|
370
351
|
```
|
371
352
|
|
372
353
|
---
|
373
354
|
|
374
355
|
**Аргументы:**
|
375
356
|
- **name : mean**
|
376
|
-
- `
|
377
|
-
- `
|
378
|
-
- `
|
357
|
+
- `name` (`str`): Имя флага
|
358
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
359
|
+
- `possible_values` (`list[str] | Pattern[str] | bool`): Множество допустимых значений флага, может быть задано
|
379
360
|
списком с допустимыми значениями или регулярным выражением (рекомендуется `re.compile(r'example exspression')`), при значении
|
380
361
|
аргумента `False` у введённого флага не может быть значения, иначе будет вызвано исключение и обработано соответствующим
|
381
362
|
еррор-хэндлером
|
@@ -388,19 +369,60 @@ Flag(flag_name: str,
|
|
388
369
|
|
389
370
|
#### **.get_string_entity() -> `str`**
|
390
371
|
|
391
|
-
*method mean* **::**
|
372
|
+
*method mean* **::** Возвращает строковое представление флага(префикс + имя)
|
373
|
+
|
374
|
+
---
|
375
|
+
|
376
|
+
#### **.get_name() -> `str`**
|
377
|
+
|
378
|
+
*method mean* **::** Возвращает имя флага
|
379
|
+
|
380
|
+
---
|
381
|
+
|
382
|
+
#### **.get_prefix() -> `str`**
|
383
|
+
|
384
|
+
*method mean* **::** Возвращает префикс флага
|
385
|
+
|
386
|
+
---
|
387
|
+
|
388
|
+
## *class* :: `InputFlag`
|
389
|
+
Класс, экземпляры которого являются введёнными флагами команды, передаётся в хэндлер команды
|
390
|
+
через `InputFlags`
|
391
|
+
|
392
|
+
---
|
393
|
+
|
394
|
+
### Примечания
|
395
|
+
|
396
|
+
- Наиболее часто используемые флаги предопределены и доступны для быстрого использования:
|
397
|
+
`argenta.command.flag.defaults.PredeterminedFlags`
|
392
398
|
|
393
399
|
---
|
394
400
|
|
395
|
-
#### **.get_flag_name() -> `str`**
|
396
401
|
|
397
|
-
|
402
|
+
### Конструктор
|
403
|
+
```python
|
404
|
+
InputFlag(name: str,
|
405
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
406
|
+
value: str = None)
|
407
|
+
```
|
408
|
+
|
409
|
+
---
|
410
|
+
|
411
|
+
**Аргументы:**
|
412
|
+
- **name : mean**
|
413
|
+
- `name` (`str`): Имя флага
|
414
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
415
|
+
- `value` (`str`): Значение введённого флага, если оно есть
|
416
|
+
|
417
|
+
---
|
418
|
+
|
419
|
+
### ***methods***
|
398
420
|
|
399
421
|
---
|
400
422
|
|
401
|
-
#### **.
|
423
|
+
#### **.get_value() -> `str | None`**
|
402
424
|
|
403
|
-
*method mean* **::**
|
425
|
+
*method mean* **::** Возвращает значение введённого флага
|
404
426
|
|
405
427
|
---
|
406
428
|
|
@@ -411,7 +433,7 @@ Flag(flag_name: str,
|
|
411
433
|
|
412
434
|
### Конструктор
|
413
435
|
```python
|
414
|
-
Flags(*
|
436
|
+
Flags(*flags: Flag)
|
415
437
|
```
|
416
438
|
|
417
439
|
---
|
@@ -428,7 +450,66 @@ Flags(*flagы: Flag)
|
|
428
450
|
|
429
451
|
#### **.get_flags() -> `list[Flag]`**
|
430
452
|
|
431
|
-
*method mean* **::**
|
453
|
+
*method mean* **::** Возвращает зарегистрированные флаги
|
454
|
+
|
455
|
+
---
|
456
|
+
|
457
|
+
#### **.add_flag(flag: Flag) -> `None`**
|
458
|
+
|
459
|
+
*method mean* **::** Добавляет флаг в группу
|
460
|
+
|
461
|
+
---
|
462
|
+
|
463
|
+
#### **.add_flags(flags: list[Flag]) -> `None`**
|
464
|
+
|
465
|
+
*method mean* **::** Добавляет флаги в группу
|
466
|
+
|
467
|
+
---
|
468
|
+
|
469
|
+
#### **.get_flag(name: str) -> `Flag | None`**
|
470
|
+
|
471
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
472
|
+
*required* **::** True
|
473
|
+
*example* **::** `'host'`
|
474
|
+
|
475
|
+
*method mean* **::** Возвращает флаг по его триггеру или `None`, если флаг не найден
|
476
|
+
|
477
|
+
---
|
478
|
+
|
479
|
+
## *class* :: `InputFlags`
|
480
|
+
Класс, объединяющий список введённых флагов в один объект, передаётся соответствующему хэндлеру
|
481
|
+
в качестве аргумента
|
482
|
+
|
483
|
+
### Конструктор
|
484
|
+
```python
|
485
|
+
InputFlags(*flags: Flag)
|
486
|
+
```
|
487
|
+
|
488
|
+
---
|
489
|
+
|
490
|
+
**Аргументы:**
|
491
|
+
- **name : mean**
|
492
|
+
- `*flags` (`InputFlag`): Неограниченное количество передаваемых флагов
|
493
|
+
|
494
|
+
---
|
495
|
+
|
496
|
+
### ***methods***
|
497
|
+
|
498
|
+
---
|
499
|
+
|
500
|
+
#### **.get_flags() -> `list[Flag]`**
|
501
|
+
|
502
|
+
*method mean* **::** Возвращает введённые флаги
|
503
|
+
|
504
|
+
---
|
505
|
+
|
506
|
+
#### **.get_flag(name: str) -> `InputFlag | None`**
|
507
|
+
|
508
|
+
*param* `name: str` **::** Строковый триггер флага без префикса
|
509
|
+
*required* **::** True
|
510
|
+
*example* **::** `'host'`
|
511
|
+
|
512
|
+
*method mean* **::** Возвращает введённый флаг по его триггеру или `None`, если флаг не найден
|
432
513
|
|
433
514
|
---
|
434
515
|
|
@@ -151,9 +151,6 @@ class App(BaseApp):
|
|
151
151
|
self._print_func(self._line_separate)
|
152
152
|
self._error_handler(error, raw_command)
|
153
153
|
self._print_func(self._line_separate)
|
154
|
-
|
155
|
-
if not self._repeat_command_groups_description:
|
156
|
-
self._print_func(self._prompt)
|
157
154
|
continue
|
158
155
|
|
159
156
|
if self._is_exit_command(input_command):
|
@@ -163,8 +160,6 @@ class App(BaseApp):
|
|
163
160
|
|
164
161
|
if self._is_unknown_command(input_command):
|
165
162
|
self._print_func(self._line_separate)
|
166
|
-
if not self._repeat_command_groups_description:
|
167
|
-
self._print_func(self._prompt)
|
168
163
|
continue
|
169
164
|
|
170
165
|
for registered_router in self._registered_routers:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|