argenta 0.4.5__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.5 → argenta-0.4.7}/PKG-INFO +162 -76
- {argenta-0.4.5 → argenta-0.4.7}/README.md +159 -75
- argenta-0.4.7/argenta/app/__init__.py +3 -0
- argenta-0.4.7/argenta/app/defaults.py +8 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/app/exceptions.py +0 -5
- argenta-0.4.7/argenta/app/models.py +209 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/exceptions.py +8 -4
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/flag/models.py +1 -1
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/models.py +2 -1
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/command_handler/entity.py +2 -2
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/entity.py +17 -20
- {argenta-0.4.5 → argenta-0.4.7}/pyproject.toml +2 -8
- argenta-0.4.5/argenta/app/__init__.py +0 -3
- argenta-0.4.5/argenta/app/entity.py +0 -262
- {argenta-0.4.5 → argenta-0.4.7}/LICENSE +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/app/registered_routers/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/app/registered_routers/entity.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/flag/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/command/flag/defaults.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/command_handler/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/command_handlers/__init__.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/command_handlers/entity.py +0 -0
- {argenta-0.4.5 → argenta-0.4.7}/argenta/router/defaults.py +0 -0
- {argenta-0.4.5 → 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
|
@@ -11,6 +11,8 @@ Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
14
|
+
Requires-Dist: art (>=6.4,<7.0)
|
15
|
+
Requires-Dist: rich (>=14.0.0,<15.0.0)
|
14
16
|
Description-Content-Type: text/markdown
|
15
17
|
|
16
18
|
# Argenta
|
@@ -20,6 +22,9 @@ Description-Content-Type: text/markdown
|
|
20
22
|
## Описание
|
21
23
|
**Argenta** — Python library for creating custom shells
|
22
24
|
|
25
|
+

|
26
|
+
Пример внешнего вида TUI, написанного с помощью Argenta
|
27
|
+
|
23
28
|
---
|
24
29
|
|
25
30
|
# Установка
|
@@ -107,33 +112,29 @@ def handler_with_flags(flags: InputFlags):
|
|
107
112
|
|
108
113
|
### Конструктор
|
109
114
|
```python
|
110
|
-
App(prompt: str = '
|
111
|
-
|
112
|
-
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',
|
113
118
|
exit_command: str = 'Q',
|
114
119
|
exit_command_description: str = 'Exit command',
|
115
120
|
system_points_title: str = 'System points:',
|
116
|
-
|
117
|
-
|
118
|
-
line_separate: str = '',
|
119
|
-
command_group_description_separate: str = '',
|
121
|
+
ignore_command_register: bool = True,
|
122
|
+
line_separate: str = '-----',
|
120
123
|
repeat_command_groups: bool = True,
|
121
|
-
print_func: Callable[[str], None] = print)
|
124
|
+
print_func: Callable[[str], None] = Console().print)
|
122
125
|
```
|
123
126
|
**Аргументы:**
|
124
127
|
- **name : mean**
|
125
128
|
- `prompt` (`str`): Сообщение перед вводом команды.
|
126
|
-
- `
|
129
|
+
- `initial_message` (`str`): Приветственное сообщение при запуске.
|
127
130
|
- `farewell_message` (`str`): Сообщение при выходе.
|
128
131
|
- `exit_command` (`str`): Команда выхода (по умолчанию `'Q'`).
|
129
132
|
- `exit_command_description` (`str`): Описание команды выхода.
|
130
133
|
- `system_points_title` (`str`): Заголовок перед списком системных команд.
|
131
|
-
- `ignore_exit_command_register` (`bool`): Игнорировать регистр команды выхода.
|
132
134
|
- `ignore_command_register` (`bool`): Игнорировать регистр всех команд.
|
133
135
|
- `line_separate` (`str`): Разделительная строка между командами.
|
134
|
-
- `command_group_description_separate` (`str`): Разделитель между группами команд.
|
135
136
|
- `repeat_command_groups` (`bool`): Повторять описание команд перед вводом.
|
136
|
-
- `print_func` (`Callable[[str], None]`): Функция вывода текста в
|
137
|
+
- `print_func` (`Callable[[str], None]`): Функция вывода текста в терминал.
|
137
138
|
|
138
139
|
---
|
139
140
|
|
@@ -143,94 +144,83 @@ App(prompt: str = 'Enter a command',
|
|
143
144
|
|
144
145
|
#### **.start_polling() -> `None`**
|
145
146
|
|
146
|
-
*method mean* **::**
|
147
|
+
*method mean* **::** Запускает цикл обработки ввода
|
147
148
|
|
148
149
|
---
|
149
150
|
|
150
151
|
#### **.include_router(router: Router) -> `None`**
|
151
152
|
|
152
|
-
*param* `router: Router` **::**
|
153
|
+
*param* `router: Router` **::** Регистрируемый роутер
|
153
154
|
*required* **::** True
|
154
155
|
|
155
|
-
*method mean* **::**
|
156
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
156
157
|
|
157
158
|
---
|
158
159
|
|
159
|
-
#### **.
|
160
|
+
#### **.include_routers(\*routers: Router) -> `None`**
|
160
161
|
|
161
|
-
*param* `
|
162
|
-
*required* **::** True
|
163
|
-
*example* **::** `"Hello, I'm a example app"`
|
162
|
+
*param* `routers: Router` **::** Неограниченное количество регистрируемых роутеров
|
163
|
+
*required* **::** True
|
164
164
|
|
165
|
-
*method mean* **::**
|
165
|
+
*method mean* **::** Регистрирует роутер в оболочке
|
166
166
|
|
167
167
|
---
|
168
168
|
|
169
|
-
#### **.
|
169
|
+
#### **.set_description_message_pattern(pattern: str) -> `None`**
|
170
170
|
|
171
|
-
*param* `
|
171
|
+
*param* `pattern: str` **::** Паттерн описания команды при её выводе в консоль
|
172
172
|
*required* **::** True
|
173
|
-
*example* **::** `"
|
173
|
+
*example* **::** `"[{command}] *=*=* {description}"`
|
174
174
|
|
175
|
-
*method mean* **::**
|
175
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
176
|
+
при выводе в консоль
|
176
177
|
|
177
178
|
---
|
178
179
|
|
179
|
-
#### **.
|
180
|
+
#### **.add_message_on_startup(message: str) -> `None`**
|
180
181
|
|
181
|
-
*param* `
|
182
|
+
*param* `message: str` **::** Сообщение, которое будет выведено при запуске приложения
|
182
183
|
*required* **::** True
|
183
|
-
*example* **::** `
|
184
|
+
*example* **::** `Message on startup`
|
184
185
|
|
185
|
-
*method mean* **::**
|
186
|
+
*method mean* **::** Устанавливает паттерн описания команд, который будет использован
|
186
187
|
при выводе в консоль
|
187
188
|
|
188
189
|
---
|
190
|
+
|
189
191
|
<a name="custom_handler"></a>
|
190
|
-
#### **.
|
192
|
+
#### **.repeated_input_flags_handler: `Callable[[str], None])`**
|
191
193
|
|
192
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
193
|
-
вводе юзером повторяющихся флагов
|
194
|
-
*required* **::** True
|
195
194
|
*example* **::** `lambda raw_command: print_func(f'Repeated input flags: "{raw_command}"')`
|
196
195
|
|
197
|
-
*
|
196
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
198
197
|
вводе юзером повторяющихся флагов
|
199
198
|
|
200
199
|
---
|
201
200
|
|
202
|
-
#### **.
|
201
|
+
#### **.invalid_input_flags_handler: `Callable[[str], None])`**
|
203
202
|
|
204
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
205
|
-
вводе юзером команды с некорректным синтаксисом флагов
|
206
|
-
*required* **::** True
|
207
203
|
*example* **::** `lambda raw_command: print_func(f'Incorrect flag syntax: "{raw_command}"')`
|
208
204
|
|
209
|
-
*
|
205
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
210
206
|
вводе юзером команды с некорректным синтаксисом флагов
|
211
207
|
|
212
208
|
---
|
213
209
|
|
214
|
-
#### **.
|
210
|
+
#### **.unknown_command_handler: `Callable[[str], None]`**
|
215
211
|
|
216
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
217
|
-
вводе юзером неизвестной команды
|
218
|
-
*required* **::** True
|
219
212
|
*example* **::** `lambda command: print_func(f"Unknown command: {command.get_string_entity()}")`
|
220
213
|
|
221
|
-
*
|
214
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
222
215
|
вводе юзером неизвестной команды
|
223
216
|
|
224
217
|
---
|
225
218
|
|
226
|
-
#### **.
|
219
|
+
#### **.empty_command_handler: `Callable[[str], None])`**
|
227
220
|
|
228
|
-
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
229
|
-
вводе юзером пустой команды
|
230
|
-
*required* **::** True
|
231
221
|
*example* **::** `lambda: print_func(f'Empty input command')`
|
232
222
|
|
233
|
-
*
|
223
|
+
*attr mean* **::** Устанавливает функцию, которой будет передано управление при
|
234
224
|
вводе юзером пустой команды
|
235
225
|
|
236
226
|
---
|
@@ -248,6 +238,9 @@ App(prompt: str = 'Enter a command',
|
|
248
238
|
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
249
239
|
у __<u>разных</u>__ роутеров
|
250
240
|
|
241
|
+
- Наиболее частые сообщение при запуске предопределены и доступны для быстрого
|
242
|
+
использования: `argenta.app.defaults.PredeterminedMessages`
|
243
|
+
|
251
244
|
|
252
245
|
|
253
246
|
|
@@ -256,9 +249,7 @@ App(prompt: str = 'Enter a command',
|
|
256
249
|
- `InvalidRouterInstanceException` — Переданный объект в метод `App().include_router()` не является экземпляром класса `Router`.
|
257
250
|
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
258
251
|
- `IncorrectNumberOfHandlerArgsException` — У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент).
|
259
|
-
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
260
252
|
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
261
|
-
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
262
253
|
|
263
254
|
---
|
264
255
|
|
@@ -286,32 +277,27 @@ Router(title: str = 'Commands group title:',
|
|
286
277
|
|
287
278
|
#### **command(command: Command)**
|
288
279
|
|
289
|
-
*param* `command: Command` **::**
|
280
|
+
*param* `command: Command` **::** Экземпляр класса `Command`, который определяет строковый триггер команды,
|
290
281
|
допустимые флаги команды и другое
|
291
282
|
*required* **::** True
|
292
283
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
293
284
|
|
294
|
-
*method mean* **::**
|
285
|
+
*method mean* **::** Декоратор, который регистрирует функцию как обработчик команды
|
295
286
|
|
296
287
|
---
|
297
288
|
|
298
289
|
#### **.get_name() -> `str`**
|
299
290
|
|
300
|
-
*method mean* **::**
|
291
|
+
*method mean* **::** Возвращает установленное название роутера
|
301
292
|
|
302
293
|
---
|
303
294
|
|
304
295
|
#### **.get_title() -> `str`**
|
305
296
|
|
306
|
-
*method mean* **::**
|
297
|
+
*method mean* **::** Возвращает установленный заголовок группы команд данного роутера
|
307
298
|
|
308
299
|
---
|
309
300
|
|
310
|
-
#### **.get_all_commands() -> `list[str]`**
|
311
|
-
|
312
|
-
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
313
|
-
|
314
|
-
---
|
315
301
|
|
316
302
|
### Исключения
|
317
303
|
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
@@ -342,19 +328,19 @@ Command(trigger: str,
|
|
342
328
|
|
343
329
|
#### **.get_trigger() -> `str`**
|
344
330
|
|
345
|
-
*method mean* **::**
|
331
|
+
*method mean* **::** Возвращает строковый триггер экземпляра
|
346
332
|
|
347
333
|
---
|
348
334
|
|
349
335
|
#### **.get_description() -> `str`**
|
350
336
|
|
351
|
-
*method mean* **::**
|
337
|
+
*method mean* **::** Возвращает описание команды
|
352
338
|
|
353
339
|
---
|
354
340
|
|
355
341
|
#### **.get_registered_flags() -> `Flags | None`**
|
356
342
|
|
357
|
-
*method mean* **::**
|
343
|
+
*method mean* **::** Возвращает зарегистрированные флаги экземпляра
|
358
344
|
|
359
345
|
---
|
360
346
|
|
@@ -376,18 +362,18 @@ Command(trigger: str,
|
|
376
362
|
|
377
363
|
### Конструктор
|
378
364
|
```python
|
379
|
-
Flag(
|
380
|
-
|
381
|
-
|
365
|
+
Flag(name: str,
|
366
|
+
prefix: typing.Literal['-', '--', '---'] = '-',
|
367
|
+
possible_values: list[str] | typing.Pattern[str] | False = True)
|
382
368
|
```
|
383
369
|
|
384
370
|
---
|
385
371
|
|
386
372
|
**Аргументы:**
|
387
373
|
- **name : mean**
|
388
|
-
- `
|
389
|
-
- `
|
390
|
-
- `
|
374
|
+
- `name` (`str`): Имя флага
|
375
|
+
- `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
|
376
|
+
- `possible_values` (`list[str] | Pattern[str] | bool`): Множество допустимых значений флага, может быть задано
|
391
377
|
списком с допустимыми значениями или регулярным выражением (рекомендуется `re.compile(r'example exspression')`), при значении
|
392
378
|
аргумента `False` у введённого флага не может быть значения, иначе будет вызвано исключение и обработано соответствующим
|
393
379
|
еррор-хэндлером
|
@@ -400,19 +386,60 @@ Flag(flag_name: str,
|
|
400
386
|
|
401
387
|
#### **.get_string_entity() -> `str`**
|
402
388
|
|
403
|
-
*method mean* **::**
|
389
|
+
*method mean* **::** Возвращает строковое представление флага(префикс + имя)
|
404
390
|
|
405
391
|
---
|
406
392
|
|
407
|
-
#### **.
|
393
|
+
#### **.get_name() -> `str`**
|
408
394
|
|
409
|
-
*method mean* **::**
|
395
|
+
*method mean* **::** Возвращает имя флага
|
410
396
|
|
411
397
|
---
|
412
398
|
|
413
|
-
#### **.
|
399
|
+
#### **.get_prefix() -> `str`**
|
400
|
+
|
401
|
+
*method mean* **::** Возвращает префикс флага
|
402
|
+
|
403
|
+
---
|
414
404
|
|
415
|
-
*
|
405
|
+
## *class* :: `InputFlag`
|
406
|
+
Класс, экземпляры которого являются введёнными флагами команды, передаётся в хэндлер команды
|
407
|
+
через `InputFlags`
|
408
|
+
|
409
|
+
---
|
410
|
+
|
411
|
+
### Примечания
|
412
|
+
|
413
|
+
- Наиболее часто используемые флаги предопределены и доступны для быстрого использования:
|
414
|
+
`argenta.command.flag.defaults.PredeterminedFlags`
|
415
|
+
|
416
|
+
---
|
417
|
+
|
418
|
+
|
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***
|
437
|
+
|
438
|
+
---
|
439
|
+
|
440
|
+
#### **.get_value() -> `str | None`**
|
441
|
+
|
442
|
+
*method mean* **::** Возвращает значение введённого флага
|
416
443
|
|
417
444
|
---
|
418
445
|
|
@@ -423,7 +450,7 @@ Flag(flag_name: str,
|
|
423
450
|
|
424
451
|
### Конструктор
|
425
452
|
```python
|
426
|
-
Flags(*
|
453
|
+
Flags(*flags: Flag)
|
427
454
|
```
|
428
455
|
|
429
456
|
---
|
@@ -440,7 +467,66 @@ Flags(*flagы: Flag)
|
|
440
467
|
|
441
468
|
#### **.get_flags() -> `list[Flag]`**
|
442
469
|
|
443
|
-
*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`, если флаг не найден
|
444
530
|
|
445
531
|
---
|
446
532
|
|