mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
work on docs
This commit is contained in:
@@ -219,17 +219,6 @@ App(prompt: str = 'Enter a command',
|
||||
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
||||
у __<u>разных</u>__ роутеров
|
||||
|
||||
```python
|
||||
router = Router()
|
||||
|
||||
@router.unknown_command
|
||||
def unknown_command(command):
|
||||
print(f'Command "{command}" undefined')
|
||||
```
|
||||
При отсутствии обработчика неизвестных команд у главного роутера будет вызвано исключение
|
||||
`MissingHandlerForUnknownCommandsException`. При регистрации обработчика неизвестных команд у
|
||||
__<u>не</u>__ главного роутера будет вызвано исключение `HandlerForUnknownCommandsOnNonMainRouterException`
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -237,10 +226,7 @@ __<u>не</u>__ главного роутера будет вызвано иск
|
||||
|
||||
- `InvalidRouterInstanceException` — Переданный объект в метод `App().include_router()` не является экземпляром класса `Router`.
|
||||
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
||||
- `OnlyOneMainRouterIsAllowedException` — Регистрация более одного главного роутера.
|
||||
- `MissingMainRouterException` — Отсутствует главный роутер.
|
||||
- `MissingHandlerForUnknownCommandsException` — В основном роутере отсутствует обработчик неизвестных команд.
|
||||
- `HandlerForUnknownCommandsOnNonMainRouterException` — Обработчик неизвестных команд определён не у основного роутера.
|
||||
- `IncorrectNumberOfHandlerArgsException` — У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент).
|
||||
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
||||
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
||||
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
||||
@@ -269,16 +255,11 @@ Router(title: str = 'Commands group title:',
|
||||
|
||||
**`@`Router().**`command(command: Command)`
|
||||
|
||||
*param* `command: Command` **::** строковый триггер, который будет выполнять указанные действия
|
||||
*example* **::** `U` / `update` / `ExaMPLE`
|
||||
*param* `command: Command` **::** экземпляр класса `Command`, который определяет строковый триггер команды,
|
||||
допустимые флаги команды и другое
|
||||
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
||||
|
||||
*method mean* **::** декоратор регистрирует функцию как обработчик команды
|
||||
|
||||
---
|
||||
|
||||
**`@`Router().**`unknown_command`
|
||||
|
||||
*method mean* **::** декоратор регистрирует функцию как обработчик неизвестных команд
|
||||
*method mean* **::** декоратор, который регистрирует функцию как обработчик команды
|
||||
|
||||
---
|
||||
|
||||
@@ -294,12 +275,6 @@ Router(title: str = 'Commands group title:',
|
||||
|
||||
---
|
||||
|
||||
**Router().**`get_router_info() -> dict`
|
||||
|
||||
*method mean* **::** возвращает информацию о роутере
|
||||
|
||||
---
|
||||
|
||||
**Router().**`get_all_commands() -> list[str]`
|
||||
|
||||
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
||||
@@ -307,7 +282,9 @@ Router(title: str = 'Commands group title:',
|
||||
---
|
||||
|
||||
#### Исключения
|
||||
- `InvalidCommandInstanceException` - Переданный объект для регистрации команды не является строкой
|
||||
- `InvalidDescriptionInstanceException` - Переданный объект для регистрации описания команды не является строкой
|
||||
- `UnknownCommandHandlerHasAlreadyBeenCreatedException` - Обработчик неизвестных команд уже создан
|
||||
- `RepeatedCommandException` - Одна и та же команда зарегистрирована в одном роутере
|
||||
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
||||
- `TooManyTransferredArgsException` - Слишком много зарегистрированных аргументов у обработчика команды
|
||||
- `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды)
|
||||
- `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
|
||||
@@ -1,3 +1 @@
|
||||
from .entity import App
|
||||
from .exceptions import (InvalidDescriptionMessagePatternException,
|
||||
InvalidRouterInstanceException)
|
||||
|
||||
@@ -15,8 +15,8 @@ class Router:
|
||||
title: str = 'Commands group title:',
|
||||
name: str = 'subordinate'):
|
||||
|
||||
self.title = title
|
||||
self.name = name
|
||||
self._title = title
|
||||
self._name = name
|
||||
|
||||
self._command_entities: list[dict[str, Callable[[], None] | Command]] = []
|
||||
self._ignore_command_register: bool = False
|
||||
@@ -106,11 +106,11 @@ class Router:
|
||||
|
||||
|
||||
def get_name(self) -> str:
|
||||
return self.name
|
||||
return self._name
|
||||
|
||||
|
||||
def get_title(self) -> str:
|
||||
return self.title
|
||||
return self._title
|
||||
|
||||
|
||||
def get_all_commands(self) -> list[str]:
|
||||
|
||||
@@ -23,11 +23,6 @@ class RequiredArgumentNotPassedException(Exception):
|
||||
return "Required argument not passed"
|
||||
|
||||
|
||||
class NotValidInputFlagHandlerHasBeenAlreadyCreatedException(Exception):
|
||||
def __str__(self):
|
||||
return "Invalid Input Flag Handler has already been created"
|
||||
|
||||
|
||||
class IncorrectNumberOfHandlerArgsException(Exception):
|
||||
def __str__(self):
|
||||
return "Incorrect Input Flags Handler has incorrect number of arguments"
|
||||
return "Handler has incorrect number of arguments"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from argenta.command.params.flag import FlagsGroup, Flag
|
||||
from argenta.router import Router
|
||||
from argenta.command import Command
|
||||
from argenta.router.exceptions import RepeatedCommandException
|
||||
|
||||
import unittest
|
||||
|
||||
@@ -32,3 +33,94 @@ class TestRouter(unittest.TestCase):
|
||||
input_command.set_input_flags(FlagsGroup([Flag('host')]))
|
||||
|
||||
self.assertEqual(router.input_command_handler(input_command), None)
|
||||
|
||||
def test_input_correct_command_with_one_register_and_ignore_command_register(self):
|
||||
router = Router()
|
||||
router.set_ignore_command_register(True)
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
self.assertEqual(router.input_command_handler(Command(command='test')), 'correct result')
|
||||
|
||||
def test_input_correct_command_with_different_register_and_ignore_command_register(self):
|
||||
router = Router()
|
||||
router.set_ignore_command_register(True)
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
self.assertEqual(router.input_command_handler(Command(command='TeSt')), 'correct result')
|
||||
|
||||
def test_input_incorrect_command_with_ignore_command_register(self):
|
||||
router = Router()
|
||||
router.set_ignore_command_register(True)
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
self.assertEqual(router.input_command_handler(Command(command='Test2')), None)
|
||||
|
||||
def test_register_repeated_commands_with_one_register(self):
|
||||
router = Router()
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
with self.assertRaises(RepeatedCommandException):
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
def test_register_commands_with_different_register(self):
|
||||
router = Router()
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
try:
|
||||
@router.command(Command(command='Test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
except RepeatedCommandException:
|
||||
self.fail('RepeatedCommandException should not have been thrown')
|
||||
|
||||
def test_register_repeated_commands_with_one_register_and_set_ignore_command_register(self):
|
||||
router = Router()
|
||||
router.set_ignore_command_register(True)
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
with self.assertRaises(RepeatedCommandException):
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
def test_register_repeated_commands_with_different_register_and_set_ignore_command_register(self):
|
||||
router = Router()
|
||||
router.set_ignore_command_register(True)
|
||||
@router.command(Command(command='test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
with self.assertRaises(RepeatedCommandException):
|
||||
@router.command(Command(command='Test'))
|
||||
def test():
|
||||
return 'correct result'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user