This commit is contained in:
2025-03-06 01:35:18 +03:00
parent a57ce490c1
commit b61c151e1c
5 changed files with 21 additions and 5 deletions
+3 -2
View File
@@ -305,6 +305,7 @@ Router(title: str = 'Commands group title:',
- `TooManyTransferredArgsException` - Слишком много зарегистрированных аргументов у обработчика команды - `TooManyTransferredArgsException` - Слишком много зарегистрированных аргументов у обработчика команды
- `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды) - `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды)
- `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент) - `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
- `TriggerCannotContainSpacesException` - У регистрируемой команды в триггере содержатся пробелы
--- ---
@@ -363,9 +364,9 @@ Command(trigger: str,
### Конструктор ### Конструктор
```python ```python
Flag(flag_name: str, Flag(flag_name: str,
flag_prefix: Literal['-', '--', '---'] = '-', flag_prefix: typing.Literal['-', '--', '---'] = '-',
ignore_flag_value_register: bool = False, ignore_flag_value_register: bool = False,
possible_flag_values: list[str] | Pattern[str] = False) possible_flag_values: list[str] | typing.Pattern[str] = False)
``` ```
--- ---
+4 -1
View File
@@ -8,7 +8,8 @@ from ..router.exceptions import (RepeatedCommandException,
RepeatedFlagNameException, RepeatedFlagNameException,
TooManyTransferredArgsException, TooManyTransferredArgsException,
RequiredArgumentNotPassedException, RequiredArgumentNotPassedException,
IncorrectNumberOfHandlerArgsException) IncorrectNumberOfHandlerArgsException,
TriggerCannotContainSpacesException)
class Router: class Router:
@@ -71,6 +72,8 @@ class Router:
def _validate_command(self, command: Command): def _validate_command(self, command: Command):
command_name: str = command.get_trigger() command_name: str = command.get_trigger()
if command_name.find(' ') != -1:
raise TriggerCannotContainSpacesException()
if command_name in self.get_all_commands(): if command_name in self.get_all_commands():
raise RepeatedCommandException() raise RepeatedCommandException()
if self._ignore_command_register: if self._ignore_command_register:
+5
View File
@@ -21,3 +21,8 @@ class RequiredArgumentNotPassedException(Exception):
class IncorrectNumberOfHandlerArgsException(Exception): class IncorrectNumberOfHandlerArgsException(Exception):
def __str__(self): def __str__(self):
return "Handler has incorrect number of arguments" return "Handler has incorrect number of arguments"
class TriggerCannotContainSpacesException(Exception):
def __str__(self):
return "Command trigger cannot contain spaces"
+1 -1
View File
@@ -32,7 +32,7 @@ def command_help():
help_command() help_command()
@work_router.command(Command(trigger='P', description='Start Solving', flags=flags)) @work_router.command(Command(trigger='--gbP', description='Start Solving', flags=flags))
def command_start_solving(args: dict): def command_start_solving(args: dict):
print('Solving...') print('Solving...')
pprint(args) pprint(args)
+8 -1
View File
@@ -1,7 +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 from argenta.router.exceptions import RepeatedCommandException, TriggerCannotContainSpacesException
import unittest import unittest
@@ -109,6 +109,13 @@ class TestRouter(unittest.TestCase):
def test(): def test():
return 'correct result' return 'correct result'
def test_register_command_with_spaces_in_trigger(self):
router = Router()
with self.assertRaises(TriggerCannotContainSpacesException):
@router.command(Command(trigger='command with spaces'))
def test():
return 'correct result'