some changes in readme

This commit is contained in:
2025-04-01 23:49:17 +03:00
parent cc8135b733
commit 54992e55cb
6 changed files with 35 additions and 24 deletions
+13
View File
@@ -5,6 +5,19 @@
## Описание ## Описание
**Argenta** — Python library for creating custom shells **Argenta** — Python library for creating custom shells
![prewiev](imgs/mock_app_preview.png)
Пример внешнего вида TUI, написанного с помощью Argenta
Рекомендуемая библиотека для форматирования текста - [rich](https://github.com/Textualize/rich)
```python
from argenta.app import App
from rich.console import Console
app = App(print_func=Console().print) # default: builtins.print
# code...
```
--- ---
# Установка # Установка
+5 -12
View File
@@ -7,7 +7,8 @@ from argenta.router import Router
from argenta.router.defaults import system_router from argenta.router.defaults import system_router
from argenta.command.exceptions import (UnprocessedInputFlagException, from argenta.command.exceptions import (UnprocessedInputFlagException,
RepeatedInputFlagsException, RepeatedInputFlagsException,
EmptyInputCommandException) EmptyInputCommandException,
BaseInputCommandException)
from argenta.app.exceptions import (InvalidRouterInstanceException, from argenta.app.exceptions import (InvalidRouterInstanceException,
InvalidDescriptionMessagePatternException, InvalidDescriptionMessagePatternException,
NoRegisteredRoutersException, NoRegisteredRoutersException,
@@ -79,9 +80,7 @@ class App:
try: try:
input_command: InputCommand = InputCommand.parse(raw_command=raw_command) input_command: InputCommand = InputCommand.parse(raw_command=raw_command)
except (UnprocessedInputFlagException, except BaseInputCommandException as error:
RepeatedInputFlagsException,
EmptyInputCommandException) as error:
self.print_func(self.line_separate) self.print_func(self.line_separate)
self._error_handler(error, raw_command) self._error_handler(error, raw_command)
self.print_func(self.line_separate) self.print_func(self.line_separate)
@@ -240,17 +239,11 @@ class App:
for command_handler in registered_router.get_command_handlers(): for command_handler in registered_router.get_command_handlers():
self.print_func(self._description_message_pattern.format( self.print_func(self._description_message_pattern.format(
command=command_handler.get_handled_command().get_trigger(), command=command_handler.get_handled_command().get_trigger(),
description=command_handler.get_handled_command().get_description() description=command_handler.get_handled_command().get_description()))
)
)
self.print_func(self.command_group_description_separate) self.print_func(self.command_group_description_separate)
def _error_handler(self, def _error_handler(self, error: BaseInputCommandException, raw_command: str) -> None:
error: UnprocessedInputFlagException |
RepeatedInputFlagsException |
EmptyInputCommandException,
raw_command: str) -> None:
match error: match error:
case UnprocessedInputFlagException(): case UnprocessedInputFlagException():
self._invalid_input_flags_handler(raw_command) self._invalid_input_flags_handler(raw_command)
+7 -3
View File
@@ -1,12 +1,16 @@
from argenta.command.flag.models import InputFlag, Flag from argenta.command.flag.models import InputFlag, Flag
class UnprocessedInputFlagException(Exception): class BaseInputCommandException(Exception):
pass
class UnprocessedInputFlagException(BaseInputCommandException):
def __str__(self): def __str__(self):
return "Unprocessed Input Flags" return "Unprocessed Input Flags"
class RepeatedInputFlagsException(Exception): class RepeatedInputFlagsException(BaseInputCommandException):
def __init__(self, flag: Flag | InputFlag): def __init__(self, flag: Flag | InputFlag):
self.flag = flag self.flag = flag
def __str__(self): def __str__(self):
@@ -14,6 +18,6 @@ class RepeatedInputFlagsException(Exception):
f"Duplicate flag was detected in the input: '{self.flag.get_string_entity()}'") f"Duplicate flag was detected in the input: '{self.flag.get_string_entity()}'")
class EmptyInputCommandException(Exception): class EmptyInputCommandException(BaseInputCommandException):
def __str__(self): def __str__(self):
return "Input Command is empty" return "Input Command is empty"
Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

+4 -4
View File
@@ -2,13 +2,13 @@ from pprint import pprint
from rich.console import Console from rich.console import Console
from argenta.command import Command from argenta.command import Command
from argenta.command.flag import Flags, InputFlags, Flag from argenta.command.flag import Flags, InputFlags
from argenta.command.flag.defaults import PredeterminedFlags from argenta.command.flag.defaults import PredeterminedFlags
from argenta.router import Router from argenta.router import Router
from .handlers_implementation.help_command import help_command from .handlers_implementation.help_command import help_command
work_router: Router = Router(title='Work nts:') work_router: Router = Router(title='Work points:')
work_router.set_invalid_input_flag_handler(lambda flag: print(f'Invalid input flag: {flag.get_string_entity()} {flag.get_value() if flag.get_value() else ''}')) work_router.set_invalid_input_flag_handler(lambda flag: print(f'Invalid input flag: {flag.get_string_entity()} {flag.get_value() if flag.get_value() else ''}'))
settings_router: Router = Router(title='Settings points:') settings_router: Router = Router(title='Settings points:')
@@ -22,14 +22,14 @@ def command_help():
help_command() help_command()
@work_router.command(Command(trigger='P', description='Start Solving', flags=Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT))) @work_router.command(Command(trigger='S', description='Start Solving', flags=Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT)))
def command_start_solving(args: InputFlags): def command_start_solving(args: InputFlags):
print('Solving...') print('Solving...')
pprint(args.get_flag('host')) pprint(args.get_flag('host'))
#start_solving_command() #start_solving_command()
@settings_router.command(Command(trigger='G', description='Update WordMath')) @settings_router.command(Command(trigger='U', description='Update WordMath'))
def command_update(): def command_update():
print('Command update') print('Command update')
+4 -3
View File
@@ -9,7 +9,7 @@ app: App = App(prompt='[italic white bold]What do you want to do(enter number of
line_separate=f'\n{"[bold green]-[/bold green][bold red]-[/bold red]"*25}\n', line_separate=f'\n{"[bold green]-[/bold green][bold red]-[/bold red]"*25}\n',
print_func=Console().print, print_func=Console().print,
command_group_description_separate='', command_group_description_separate='',
repeat_command_groups=True) repeat_command_groups=False)
def main(): def main():
@@ -24,13 +24,14 @@ def main():
app.set_initial_message(initial_greeting) app.set_initial_message(initial_greeting)
app.set_farewell_message(goodbye_message) app.set_farewell_message(goodbye_message)
app.add_message_on_startup('--help for get helping\n\n') app.add_message_on_startup('[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]\n')
app.add_message_on_startup('[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]\n\n')
app.set_invalid_input_flags_handler(lambda raw_command: print(f"Invalid input flags: {raw_command}")) app.set_invalid_input_flags_handler(lambda raw_command: print(f"Invalid input flags: {raw_command}"))
app.set_unknown_command_handler(lambda command: print(f"Unknown command: {command.get_trigger()}")) app.set_unknown_command_handler(lambda command: print(f"Unknown command: {command.get_trigger()}"))
app.set_repeated_input_flags_handler(lambda raw_command: print(f"Repeated input flags: {raw_command}")) app.set_repeated_input_flags_handler(lambda raw_command: print(f"Repeated input flags: {raw_command}"))
app.set_description_message_pattern('[bold red][{command}][/bold red] [blue]*=*=*[/blue] [bold yellow italic]{description}') app.set_description_message_pattern('[bold red][{command}][/bold red] [blue dim]*=*=*[/blue dim] [bold yellow italic]{description}')
app.start_polling() app.start_polling()