work on docs

This commit is contained in:
2025-03-04 18:44:45 +03:00
parent 2c9c8da13c
commit 971258728c
5 changed files with 106 additions and 44 deletions
+9 -32
View File
@@ -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` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
-2
View File
@@ -1,3 +1 @@
from .entity import App from .entity import App
from .exceptions import (InvalidDescriptionMessagePatternException,
InvalidRouterInstanceException)
+4 -4
View File
@@ -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]:
+1 -6
View File
@@ -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"
+92
View File
@@ -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'