diff --git a/README.md b/README.md
index ce8ef3f..42af5cc 100644
--- a/README.md
+++ b/README.md
@@ -219,17 +219,6 @@ App(prompt: str = 'Enter a command',
`RepeatedCommandInDifferentRoutersException`. Исключение вызывается только при наличии пересекающихся команд
у __разных__ роутеров
-```python
-router = Router()
-
-@router.unknown_command
-def unknown_command(command):
- print(f'Command "{command}" undefined')
-```
-При отсутствии обработчика неизвестных команд у главного роутера будет вызвано исключение
-`MissingHandlerForUnknownCommandsException`. При регистрации обработчика неизвестных команд у
-__не__ главного роутера будет вызвано исключение `HandlerForUnknownCommandsOnNonMainRouterException`
-
@@ -237,10 +226,7 @@ __не__ главного роутера будет вызвано иск
- `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` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
\ No newline at end of file
diff --git a/argenta/app/__init__.py b/argenta/app/__init__.py
index f3d0744..145d061 100644
--- a/argenta/app/__init__.py
+++ b/argenta/app/__init__.py
@@ -1,3 +1 @@
from .entity import App
-from .exceptions import (InvalidDescriptionMessagePatternException,
- InvalidRouterInstanceException)
diff --git a/argenta/router/entity.py b/argenta/router/entity.py
index 1a8d081..4dc6e12 100644
--- a/argenta/router/entity.py
+++ b/argenta/router/entity.py
@@ -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]:
diff --git a/argenta/router/exceptions.py b/argenta/router/exceptions.py
index f6e91e1..aa70784 100644
--- a/argenta/router/exceptions.py
+++ b/argenta/router/exceptions.py
@@ -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"
diff --git a/tests/test_router.py b/tests/test_router.py
index 671bffc..b7b288e 100644
--- a/tests/test_router.py
+++ b/tests/test_router.py
@@ -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'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+