argenta 0.3.6__py3-none-any.whl → 0.3.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/router/entity.py +5 -2
- argenta/router/exceptions.py +5 -0
- {argenta-0.3.6.dist-info → argenta-0.3.8.dist-info}/METADATA +52 -44
- {argenta-0.3.6.dist-info → argenta-0.3.8.dist-info}/RECORD +6 -6
- {argenta-0.3.6.dist-info → argenta-0.3.8.dist-info}/LICENSE +0 -0
- {argenta-0.3.6.dist-info → argenta-0.3.8.dist-info}/WHEEL +0 -0
argenta/router/entity.py
CHANGED
@@ -8,13 +8,14 @@ from ..router.exceptions import (RepeatedCommandException,
|
|
8
8
|
RepeatedFlagNameException,
|
9
9
|
TooManyTransferredArgsException,
|
10
10
|
RequiredArgumentNotPassedException,
|
11
|
-
IncorrectNumberOfHandlerArgsException
|
11
|
+
IncorrectNumberOfHandlerArgsException,
|
12
|
+
TriggerCannotContainSpacesException)
|
12
13
|
|
13
14
|
|
14
15
|
class Router:
|
15
16
|
def __init__(self,
|
16
17
|
title: str = 'Commands group title:',
|
17
|
-
name: str = '
|
18
|
+
name: str = 'Default'):
|
18
19
|
|
19
20
|
self._title = title
|
20
21
|
self._name = name
|
@@ -71,6 +72,8 @@ class Router:
|
|
71
72
|
|
72
73
|
def _validate_command(self, command: Command):
|
73
74
|
command_name: str = command.get_trigger()
|
75
|
+
if command_name.find(' ') != -1:
|
76
|
+
raise TriggerCannotContainSpacesException()
|
74
77
|
if command_name in self.get_all_commands():
|
75
78
|
raise RepeatedCommandException()
|
76
79
|
if self._ignore_command_register:
|
argenta/router/exceptions.py
CHANGED
@@ -21,3 +21,8 @@ class RequiredArgumentNotPassedException(Exception):
|
|
21
21
|
class IncorrectNumberOfHandlerArgsException(Exception):
|
22
22
|
def __str__(self):
|
23
23
|
return "Handler has incorrect number of arguments"
|
24
|
+
|
25
|
+
|
26
|
+
class TriggerCannotContainSpacesException(Exception):
|
27
|
+
def __str__(self):
|
28
|
+
return "Command trigger cannot contain spaces"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: argenta
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.8
|
4
4
|
Summary: python library for creating custom shells
|
5
5
|
License: MIT
|
6
6
|
Author: kolo
|
@@ -35,7 +35,7 @@ poetry add argenta
|
|
35
35
|
|
36
36
|
# Быстрый старт
|
37
37
|
|
38
|
-
Пример простейшей оболочки с командой без флагов
|
38
|
+
Пример простейшей оболочки с командой без зарегистрированных флагов
|
39
39
|
```python
|
40
40
|
# routers.py
|
41
41
|
from argenta.router import Router
|
@@ -75,14 +75,12 @@ from argenta.command.params.flag import FlagsGroup, Flag
|
|
75
75
|
|
76
76
|
router = Router()
|
77
77
|
|
78
|
-
|
78
|
+
registered_flags = FlagsGroup([
|
79
79
|
Flag(flag_name='host',
|
80
80
|
flag_prefix='--',
|
81
81
|
possible_flag_values=re.compile(r'^192.168.\d{1,3}.\d{1,3}$')),
|
82
|
-
Flag(
|
83
|
-
|
84
|
-
possible_flag_values=re.compile(r'^[0-9]{1,4}$'))
|
85
|
-
]
|
82
|
+
Flag('port', '---', re.compile(r'^[0-9]{1,4}$'))
|
83
|
+
])
|
86
84
|
|
87
85
|
|
88
86
|
@router.command(Command("hello"))
|
@@ -92,10 +90,10 @@ def handler():
|
|
92
90
|
|
93
91
|
@router.command(Command(trigger="ssh",
|
94
92
|
description='connect via ssh',
|
95
|
-
flags=
|
93
|
+
flags=registered_flags))
|
96
94
|
def handler_with_flags(flags: dict):
|
97
95
|
for flag in flags:
|
98
|
-
print(f'Flag name: {flag['name']}\n
|
96
|
+
print(f'Flag name: {flag['name']}\n'
|
99
97
|
f'Flag value: {flag['value']}')
|
100
98
|
```
|
101
99
|
|
@@ -105,7 +103,7 @@ def handler_with_flags(flags: dict):
|
|
105
103
|
|
106
104
|
---
|
107
105
|
|
108
|
-
## *class*
|
106
|
+
## *class* : : `App`
|
109
107
|
Класс, определяющий поведение и состояние оболочки
|
110
108
|
|
111
109
|
### Конструктор
|
@@ -144,52 +142,57 @@ App(prompt: str = 'Enter a command',
|
|
144
142
|
|
145
143
|
---
|
146
144
|
|
147
|
-
|
145
|
+
#### **.start_polling() -> `None`**
|
148
146
|
|
149
|
-
*method mean* **::** запускает
|
147
|
+
*method mean* **::** запускает цикл обработки ввода
|
150
148
|
|
151
149
|
---
|
152
150
|
|
153
|
-
|
151
|
+
#### **.include_router(router: Router) -> `None`**
|
154
152
|
|
155
|
-
*param* `router: Router` **::** регистрируемый роутер
|
153
|
+
*param* `router: Router` **::** регистрируемый роутер
|
154
|
+
*required* **::** True
|
156
155
|
|
157
|
-
*method mean* **::** регистрирует роутер в
|
156
|
+
*method mean* **::** регистрирует роутер в оболочке
|
158
157
|
|
159
158
|
---
|
160
159
|
|
161
|
-
|
160
|
+
#### **.set_initial_message(message: str) -> `None`**
|
162
161
|
|
163
162
|
*param* `message: str` **::** устанавливаемое приветственное сообщение
|
163
|
+
*required* **::** True
|
164
164
|
*example* **::** `"Hello, I'm a example app"`
|
165
165
|
|
166
166
|
*method mean* **::** устанавливает сообщение, которое будет отображено при запуске программы
|
167
167
|
|
168
168
|
---
|
169
169
|
|
170
|
-
|
170
|
+
#### **.set_farewell_message(message: str) -> `None`**
|
171
171
|
|
172
172
|
*param* `message: str` **::** устанавливаемое сообщение при выходе
|
173
|
+
*required* **::** True
|
173
174
|
*example* **::** `"GoodBye !"`
|
174
175
|
|
175
176
|
*method mean* **::** устанавливает сообщение, которое будет отображено при выходе
|
176
177
|
|
177
178
|
---
|
178
179
|
|
179
|
-
|
180
|
+
#### **.set_description_message_pattern(pattern: str) -> `None`**
|
180
181
|
|
181
182
|
*param* `pattern: str` **::** паттерн описания команды при её выводе в консоль
|
183
|
+
*required* **::** True
|
182
184
|
*example* **::** `"[{command}] *=*=* {description}"`
|
183
185
|
|
184
186
|
*method mean* **::** устанавливает паттерн описания команд, который будет использован
|
185
187
|
при выводе в консоль
|
186
188
|
|
187
189
|
---
|
188
|
-
|
189
|
-
|
190
|
+
<a name="custom_handler"></a>
|
191
|
+
#### **.set_repeated_input_flags_handler(handler: Callable[[str], None]) -> `None`**
|
190
192
|
|
191
193
|
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
192
|
-
вводе юзером повторяющихся флагов
|
194
|
+
вводе юзером повторяющихся флагов
|
195
|
+
*required* **::** True
|
193
196
|
*example* **::** `lambda raw_command: print_func(f'Repeated input flags: "{raw_command}"')`
|
194
197
|
|
195
198
|
*method mean* **::** устанавливает функцию, которой будет передано управление при
|
@@ -197,10 +200,11 @@ App(prompt: str = 'Enter a command',
|
|
197
200
|
|
198
201
|
---
|
199
202
|
|
200
|
-
|
203
|
+
#### **.set_invalid_input_flags_handler(self, handler: Callable[[str], None]) -> `None`**
|
201
204
|
|
202
205
|
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
203
206
|
вводе юзером команды с некорректным синтаксисом флагов
|
207
|
+
*required* **::** True
|
204
208
|
*example* **::** `lambda raw_command: print_func(f'Incorrect flag syntax: "{raw_command}"')`
|
205
209
|
|
206
210
|
*method mean* **::** устанавливает функцию, которой будет передано управление при
|
@@ -208,10 +212,11 @@ App(prompt: str = 'Enter a command',
|
|
208
212
|
|
209
213
|
---
|
210
214
|
|
211
|
-
|
215
|
+
#### **.set_unknown_command_handler(self, handler: Callable[[str], None]) -> `None`**
|
212
216
|
|
213
217
|
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
214
218
|
вводе юзером неизвестной команды
|
219
|
+
*required* **::** True
|
215
220
|
*example* **::** `lambda command: print_func(f"Unknown command: {command.get_string_entity()}")`
|
216
221
|
|
217
222
|
*method mean* **::** устанавливает функцию, которой будет передано управление при
|
@@ -219,10 +224,11 @@ App(prompt: str = 'Enter a command',
|
|
219
224
|
|
220
225
|
---
|
221
226
|
|
222
|
-
|
227
|
+
#### **.set_empty_command_handler(self, handler: Callable[[str], None]) -> `None`**
|
223
228
|
|
224
229
|
*param* `handler: Callable[[str], None]` **::** функция или лямбда функция, которой будет передано управление при
|
225
|
-
вводе юзером пустой команды
|
230
|
+
вводе юзером пустой команды
|
231
|
+
*required* **::** True
|
226
232
|
*example* **::** `lambda: print_func(f'Empty input command')`
|
227
233
|
|
228
234
|
*method mean* **::** устанавливает функцию, которой будет передано управление при
|
@@ -234,10 +240,10 @@ App(prompt: str = 'Enter a command',
|
|
234
240
|
|
235
241
|
- В устанавливаемом паттерне сообщения описания команды необходимы быть два ключевых слова:
|
236
242
|
`command` и `description`, каждое из которых должно быть заключено в фигурные скобки, после обработки
|
237
|
-
паттерна на места этих ключевых слов будут подставлены соответствующие
|
243
|
+
паттерна на места этих ключевых слов будут подставлены соответствующие атрибуты команды, при отсутствии
|
238
244
|
этих двух ключевых слов будет вызвано исключение `InvalidDescriptionMessagePatternException`
|
239
245
|
|
240
|
-
- Команды
|
246
|
+
- Команды оболочки не должны повторяться, при значении атрибута `ignore_command_register` равным `True`
|
241
247
|
допускается создание обработчиков для разных регистров одинаковых символов в команде, для примера `u` и `U`,
|
242
248
|
при значении атрибута `ignore_command_register` класса `App` равным `False` тот же пример вызывает исключение
|
243
249
|
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
@@ -263,7 +269,7 @@ App(prompt: str = 'Enter a command',
|
|
263
269
|
### Конструктор
|
264
270
|
```python
|
265
271
|
Router(title: str = 'Commands group title:',
|
266
|
-
name: str = '
|
272
|
+
name: str = 'Default')
|
267
273
|
```
|
268
274
|
|
269
275
|
|
@@ -279,29 +285,30 @@ Router(title: str = 'Commands group title:',
|
|
279
285
|
|
280
286
|
---
|
281
287
|
|
282
|
-
|
288
|
+
#### **command(command: Command)**
|
283
289
|
|
284
290
|
*param* `command: Command` **::** экземпляр класса `Command`, который определяет строковый триггер команды,
|
285
|
-
допустимые флаги команды и другое
|
291
|
+
допустимые флаги команды и другое
|
292
|
+
*required* **::** True
|
286
293
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
287
294
|
|
288
295
|
*method mean* **::** декоратор, который регистрирует функцию как обработчик команды
|
289
296
|
|
290
297
|
---
|
291
298
|
|
292
|
-
|
299
|
+
#### **.get_name() -> `str`**
|
293
300
|
|
294
301
|
*method mean* **::** возвращает установленное название роутера
|
295
302
|
|
296
303
|
---
|
297
304
|
|
298
|
-
|
305
|
+
#### **.get_title() -> `str`**
|
299
306
|
|
300
307
|
*method mean* **::** возвращает установленный заголовок группы команд данного роутера
|
301
308
|
|
302
309
|
---
|
303
310
|
|
304
|
-
|
311
|
+
#### **.get_all_commands() -> `list[str]`**
|
305
312
|
|
306
313
|
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
307
314
|
|
@@ -313,6 +320,7 @@ Router(title: str = 'Commands group title:',
|
|
313
320
|
- `TooManyTransferredArgsException` - Слишком много зарегистрированных аргументов у обработчика команды
|
314
321
|
- `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды)
|
315
322
|
- `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
|
323
|
+
- `TriggerCannotContainSpacesException` - У регистрируемой команды в триггере содержатся пробелы
|
316
324
|
|
317
325
|
---
|
318
326
|
|
@@ -334,19 +342,19 @@ Command(trigger: str,
|
|
334
342
|
|
335
343
|
---
|
336
344
|
|
337
|
-
|
345
|
+
#### **.get_trigger() -> `str`**
|
338
346
|
|
339
347
|
*method mean* **::** возвращает строковый триггер экземпляра
|
340
348
|
|
341
349
|
---
|
342
350
|
|
343
|
-
|
351
|
+
#### **.get_description() -> `str`**
|
344
352
|
|
345
353
|
*method mean* **::** возвращает описание команды
|
346
354
|
|
347
355
|
---
|
348
356
|
|
349
|
-
|
357
|
+
#### **.get_registered_flags() -> `FlagsGroup | None`**
|
350
358
|
|
351
359
|
*method mean* **::** возвращает зарегистрированные флаги экземпляра
|
352
360
|
|
@@ -360,20 +368,20 @@ Command(trigger: str,
|
|
360
368
|
**Примечание**
|
361
369
|
Все вышеуказанные исключения класса `Command` вызываются в рантайме запущенным экземпляром класса
|
362
370
|
`App`, а также по дефолту обрабатываются, при желании можно задать пользовательские
|
363
|
-
обработчики для этих исключений ([подробнее см.](#
|
371
|
+
обработчики для этих исключений ([подробнее см.](#custom_handler))
|
364
372
|
|
365
373
|
---
|
366
374
|
|
367
375
|
## *class* :: `Flag`
|
368
|
-
Класс, экземпляры которого в большинстве случаев
|
376
|
+
Класс, экземпляры которого в большинстве случаев передаются при создании
|
369
377
|
экземпляра класса `Command` для регистрации допустимого флага при вводе юзером команды
|
370
378
|
|
371
379
|
### Конструктор
|
372
380
|
```python
|
373
381
|
Flag(flag_name: str,
|
374
|
-
flag_prefix: Literal['-', '--', '---'] = '-',
|
382
|
+
flag_prefix: typing.Literal['-', '--', '---'] = '-',
|
375
383
|
ignore_flag_value_register: bool = False,
|
376
|
-
possible_flag_values: list[str] | Pattern[str] = False)
|
384
|
+
possible_flag_values: list[str] | typing.Pattern[str] = False)
|
377
385
|
```
|
378
386
|
|
379
387
|
---
|
@@ -392,19 +400,19 @@ Flag(flag_name: str,
|
|
392
400
|
|
393
401
|
---
|
394
402
|
|
395
|
-
|
403
|
+
#### **.get_string_entity() -> `str`**
|
396
404
|
|
397
405
|
*method mean* **::** возвращает строковое представление флага(префикс + имя)
|
398
406
|
|
399
407
|
---
|
400
408
|
|
401
|
-
|
409
|
+
#### **.get_flag_name() -> `str`**
|
402
410
|
|
403
411
|
*method mean* **::** возвращает имя флага
|
404
412
|
|
405
413
|
---
|
406
414
|
|
407
|
-
|
415
|
+
#### **.get_flag_prefix() -> `str`**
|
408
416
|
|
409
417
|
*method mean* **::** возвращает префикс флага
|
410
418
|
|
@@ -432,7 +440,7 @@ FlagsGroup(flags: list[Flag] = None)
|
|
432
440
|
|
433
441
|
---
|
434
442
|
|
435
|
-
|
443
|
+
#### **.get_flags() -> `list[Flag]`**
|
436
444
|
|
437
445
|
*method mean* **::** возвращает зарегистрированные флаги
|
438
446
|
|
@@ -11,9 +11,9 @@ argenta/command/params/flag/entity.py,sha256=wqCLVCDUqvuPVQQyz2mOeslH6Xha0nwiKUq
|
|
11
11
|
argenta/command/params/flag/flags_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
argenta/command/params/flag/flags_group/entity.py,sha256=qcVbRkfWblR53a1N0C8tpZ8UOH5aNlQmkyxRfCrrwMo,1011
|
13
13
|
argenta/router/__init__.py,sha256=vIU2o3JJ7misRm9mUzUQw5HdverdMDfvHNzkWuYFRBY,26
|
14
|
-
argenta/router/entity.py,sha256=
|
15
|
-
argenta/router/exceptions.py,sha256=
|
16
|
-
argenta-0.3.
|
17
|
-
argenta-0.3.
|
18
|
-
argenta-0.3.
|
19
|
-
argenta-0.3.
|
14
|
+
argenta/router/entity.py,sha256=aS1djCzqjowygEZQea2pA2lTnwYOq2uD7vd__k7t_kE,5102
|
15
|
+
argenta/router/exceptions.py,sha256=NseEKrhwvG-H5_qdN-hzq83eJ98jku-PzHspz4CG9PM,796
|
16
|
+
argenta-0.3.8.dist-info/LICENSE,sha256=zmqoGh2n5rReBv4s8wPxF_gZEZDgauJYSPMuPczgOiU,1082
|
17
|
+
argenta-0.3.8.dist-info/METADATA,sha256=ZsoSvI7THi1gXxWdGZyrwqGc9G605IIZgUZghJdHmjg,18136
|
18
|
+
argenta-0.3.8.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
19
|
+
argenta-0.3.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|