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.
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
- line_separate: str = '-----',
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._line_separate = line_separate
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.unknown_command_handler(command)
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
- self._print_func(self._line_separate)
152
- self._error_handler(error, raw_command)
153
- self._print_func(self._line_separate)
154
-
155
- if not self._repeat_command_groups_description:
156
- self._print_func(self._prompt)
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
- for registered_router in self._registered_routers:
171
- registered_router.input_command_handler(input_command)
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
 
@@ -27,7 +27,7 @@ class InputFlag(BaseFlag):
27
27
  super().__init__(name, prefix)
28
28
  self._flag_value = value
29
29
 
30
- def get_value(self):
30
+ def get_value(self) -> str | None:
31
31
  return self._flag_value
32
32
 
33
33
  def set_value(self, value):
argenta/command/models.py CHANGED
@@ -60,6 +60,7 @@ class InputCommand(BaseCommand, Generic[InputCommandType]):
60
60
  def get_input_flags(self) -> InputFlags:
61
61
  return self._input_flags
62
62
 
63
+
63
64
  @staticmethod
64
65
  def parse(raw_command: str) -> InputCommandType:
65
66
  if not raw_command:
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: argenta
3
- Version: 0.4.6
4
- Summary: python library for creating custom shells
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
- ![prewiev](imgs/mock_app_preview_last.png)
25
+ ![prewiev](https://github.com/koloideal/Argenta/blob/kolo/imgs/mock_app_preview_last.png?raw=True)
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 = 'Enter a command',
116
- initial_greeting: str = '\nHello, I am Argenta\n',
117
- farewell_message: str = '\nGoodBye\n',
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
- ignore_exit_command_register: bool = True,
122
- ignore_command_register: bool = False,
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
- - `initial_greeting` (`str`): Приветственное сообщение при запуске.
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
- - `line_separate` (`str`): Разделительная строка между командами.
139
- - `command_group_description_separate` (`str`): Разделитель между группами команд.
135
+ - `dividing_line` (`StaticDividingLine | DynamicDividingLine`): Разделительная строка.
140
136
  - `repeat_command_groups` (`bool`): Повторять описание команд перед вводом.
141
- - `print_func` (`Callable[[str], None]`): Функция вывода текста в терминал (по умолчанию `print`).
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
- #### **.set_initial_message(message: str) -> `None`**
160
+ #### **.include_routers(\*routers: Router) -> `None`**
165
161
 
166
- *param* `message: str` **::** устанавливаемое приветственное сообщение
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
- #### **.set_farewell_message(message: str) -> `None`**
169
+ #### **.set_description_message_pattern(pattern: str) -> `None`**
175
170
 
176
- *param* `message: str` **::** устанавливаемое сообщение при выходе
171
+ *param* `pattern: str` **::** Паттерн описания команды при её выводе в консоль
177
172
  *required* **::** True
178
- *example* **::** `"GoodBye !"`
173
+ *example* **::** `"[{command}] *=*=* {description}"`
179
174
 
180
- *method mean* **::** устанавливает сообщение, которое будет отображено при выходе
175
+ *method mean* **::** Устанавливает паттерн описания команд, который будет использован
176
+ при выводе в консоль
181
177
 
182
178
  ---
183
179
 
184
- #### **.set_description_message_pattern(pattern: str) -> `None`**
180
+ #### **.add_message_on_startup(message: str) -> `None`**
185
181
 
186
- *param* `pattern: str` **::** паттерн описания команды при её выводе в консоль
182
+ *param* `message: str` **::** Сообщение, которое будет выведено при запуске приложения
187
183
  *required* **::** True
188
- *example* **::** `"[{command}] *=*=* {description}"`
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
- #### **.set_repeated_input_flags_handler(handler: Callable[[str], None]) -> `None`**
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
- *method mean* **::** устанавливает функцию, которой будет передано управление при
196
+ *attr mean* **::** Устанавливает функцию, которой будет передано управление при
203
197
  вводе юзером повторяющихся флагов
204
198
 
205
199
  ---
206
200
 
207
- #### **.set_invalid_input_flags_handler(self, handler: Callable[[str], None]) -> `None`**
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
- *method mean* **::** устанавливает функцию, которой будет передано управление при
205
+ *attr mean* **::** Устанавливает функцию, которой будет передано управление при
215
206
  вводе юзером команды с некорректным синтаксисом флагов
216
207
 
217
208
  ---
218
209
 
219
- #### **.set_unknown_command_handler(self, handler: Callable[[str], None]) -> `None`**
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
- *method mean* **::** устанавливает функцию, которой будет передано управление при
214
+ *attr mean* **::** Устанавливает функцию, которой будет передано управление при
227
215
  вводе юзером неизвестной команды
228
216
 
229
217
  ---
230
218
 
231
- #### **.set_empty_command_handler(self, handler: Callable[[str], None]) -> `None`**
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
- *method mean* **::** устанавливает функцию, которой будет передано управление при
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
- - `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
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` **::** экземпляр класса `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(flag_name: str,
385
- flag_prefix: typing.Literal['-', '--', '---'] = '-',
386
- possible_flag_values: list[str] | typing.Pattern[str] | False = True)
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
- - `flag_name` (`str`): Имя флага
394
- - `flag_prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
395
- - `possible_flag_values` (`list[str] | Pattern[str] | bool`): Множество допустимых значений флага, может быть задано
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
- #### **.get_flag_name() -> `str`**
458
+ **Аргументы:**
459
+ - **name : mean**
460
+ - `name` (`str`): Имя флага
461
+ - `prefix` (`Literal['-', '--', '---']`): Префикс команды, допустимым значением является от одного до трёх минусов
462
+ - `value` (`str`): Значение введённого флага, если оно есть
413
463
 
414
- *method mean* **::** возвращает имя флага
464
+ ---
465
+
466
+ ### ***methods***
415
467
 
416
468
  ---
417
469
 
418
- #### **.get_flag_prefix() -> `str`**
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(*flagы: Flag)
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=fZtJQEbGZWZfyNw1gfjJ4m_lx_ZyJgsn6b9ojjZpuNE,9574
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=X1MFpAtnUX6mi1huycAtwAPXPeh9YFO-lH91TNyD3G4,3755
13
- argenta/command/models.py,sha256=4MoO22EijeoMGmwYi88BSnBrip8fre2KpULGt8-NouY,4434
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.6.dist-info/LICENSE,sha256=zmqoGh2n5rReBv4s8wPxF_gZEZDgauJYSPMuPczgOiU,1082
23
- argenta-0.4.6.dist-info/METADATA,sha256=OUOooU874KmkCuynY9KXha_FNTB64q7ZCQeI9TZYcM4,18243
24
- argenta-0.4.6.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
25
- argenta-0.4.6.dist-info/RECORD,,
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,,