mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
work on docs
This commit is contained in:
@@ -219,17 +219,6 @@ App(prompt: str = 'Enter a command',
|
|||||||
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
|
||||||
у __<u>разных</u>__ роутеров
|
у __<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`.
|
- `InvalidRouterInstanceException` — Переданный объект в метод `App().include_router()` не является экземпляром класса `Router`.
|
||||||
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
- `InvalidDescriptionMessagePatternException` — Неправильный формат паттерна описания команд.
|
||||||
- `OnlyOneMainRouterIsAllowedException` — Регистрация более одного главного роутера.
|
- `IncorrectNumberOfHandlerArgsException` — У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент).
|
||||||
- `MissingMainRouterException` — Отсутствует главный роутер.
|
|
||||||
- `MissingHandlerForUnknownCommandsException` — В основном роутере отсутствует обработчик неизвестных команд.
|
|
||||||
- `HandlerForUnknownCommandsOnNonMainRouterException` — Обработчик неизвестных команд определён не у основного роутера.
|
|
||||||
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
- `NoRegisteredRoutersException` — Отсутствуют зарегистрированные роутеры.
|
||||||
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
- `NoRegisteredHandlersException` — У роутера нет ни одного обработчика команд.
|
||||||
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
- `RepeatedCommandInDifferentRoutersException` — Одна и та же команда зарегистрирована в разных роутерах.
|
||||||
@@ -269,16 +255,11 @@ Router(title: str = 'Commands group title:',
|
|||||||
|
|
||||||
**`@`Router().**`command(command: Command)`
|
**`@`Router().**`command(command: Command)`
|
||||||
|
|
||||||
*param* `command: Command` **::** строковый триггер, который будет выполнять указанные действия
|
*param* `command: Command` **::** экземпляр класса `Command`, который определяет строковый триггер команды,
|
||||||
*example* **::** `U` / `update` / `ExaMPLE`
|
допустимые флаги команды и другое
|
||||||
|
*example* **::** `Command(command='ssh', description='connect via ssh')`
|
||||||
|
|
||||||
*method mean* **::** декоратор регистрирует функцию как обработчик команды
|
*method mean* **::** декоратор, который регистрирует функцию как обработчик команды
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**`@`Router().**`unknown_command`
|
|
||||||
|
|
||||||
*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]`
|
**Router().**`get_all_commands() -> list[str]`
|
||||||
|
|
||||||
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
*method mean* **::** возвращает все зарегистрированные команды для данного роутера
|
||||||
@@ -307,7 +282,9 @@ Router(title: str = 'Commands group title:',
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### Исключения
|
#### Исключения
|
||||||
- `InvalidCommandInstanceException` - Переданный объект для регистрации команды не является строкой
|
|
||||||
- `InvalidDescriptionInstanceException` - Переданный объект для регистрации описания команды не является строкой
|
- `InvalidDescriptionInstanceException` - Переданный объект для регистрации описания команды не является строкой
|
||||||
- `UnknownCommandHandlerHasAlreadyBeenCreatedException` - Обработчик неизвестных команд уже создан
|
|
||||||
- `RepeatedCommandException` - Одна и та же команда зарегистрирована в одном роутере
|
- `RepeatedCommandException` - Одна и та же команда зарегистрирована в одном роутере
|
||||||
|
- `RepeatedFlagNameException` - Повторяющиеся зарегистрированные флаги в команде
|
||||||
|
- `TooManyTransferredArgsException` - Слишком много зарегистрированных аргументов у обработчика команды
|
||||||
|
- `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды)
|
||||||
|
- `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
|
||||||
@@ -1,3 +1 @@
|
|||||||
from .entity import App
|
from .entity import App
|
||||||
from .exceptions import (InvalidDescriptionMessagePatternException,
|
|
||||||
InvalidRouterInstanceException)
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ class Router:
|
|||||||
title: str = 'Commands group title:',
|
title: str = 'Commands group title:',
|
||||||
name: str = 'subordinate'):
|
name: str = 'subordinate'):
|
||||||
|
|
||||||
self.title = title
|
self._title = title
|
||||||
self.name = name
|
self._name = name
|
||||||
|
|
||||||
self._command_entities: list[dict[str, Callable[[], None] | Command]] = []
|
self._command_entities: list[dict[str, Callable[[], None] | Command]] = []
|
||||||
self._ignore_command_register: bool = False
|
self._ignore_command_register: bool = False
|
||||||
@@ -106,11 +106,11 @@ class Router:
|
|||||||
|
|
||||||
|
|
||||||
def get_name(self) -> str:
|
def get_name(self) -> str:
|
||||||
return self.name
|
return self._name
|
||||||
|
|
||||||
|
|
||||||
def get_title(self) -> str:
|
def get_title(self) -> str:
|
||||||
return self.title
|
return self._title
|
||||||
|
|
||||||
|
|
||||||
def get_all_commands(self) -> list[str]:
|
def get_all_commands(self) -> list[str]:
|
||||||
|
|||||||
@@ -23,11 +23,6 @@ class RequiredArgumentNotPassedException(Exception):
|
|||||||
return "Required argument not passed"
|
return "Required argument not passed"
|
||||||
|
|
||||||
|
|
||||||
class NotValidInputFlagHandlerHasBeenAlreadyCreatedException(Exception):
|
|
||||||
def __str__(self):
|
|
||||||
return "Invalid Input Flag Handler has already been created"
|
|
||||||
|
|
||||||
|
|
||||||
class IncorrectNumberOfHandlerArgsException(Exception):
|
class IncorrectNumberOfHandlerArgsException(Exception):
|
||||||
def __str__(self):
|
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.command.params.flag import FlagsGroup, Flag
|
||||||
from argenta.router import Router
|
from argenta.router import Router
|
||||||
from argenta.command import Command
|
from argenta.command import Command
|
||||||
|
from argenta.router.exceptions import RepeatedCommandException
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
@@ -32,3 +33,94 @@ class TestRouter(unittest.TestCase):
|
|||||||
input_command.set_input_flags(FlagsGroup([Flag('host')]))
|
input_command.set_input_flags(FlagsGroup([Flag('host')]))
|
||||||
|
|
||||||
self.assertEqual(router.input_command_handler(input_command), None)
|
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