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` - Слишком много зарегистрированных аргументов у обработчика команды
- `RequiredArgumentNotPassedException` - Не зарегистрирован обязательный аргумент у обработчика команды(аргумент, через который будут переданы флаги введённой команды)
- `IncorrectNumberOfHandlerArgsException` - У обработчика нестандартного поведения зарегистрировано неверное количество аргументов(в большинстве случаев у него должен быть один аргумент)
- `TriggerCannotContainSpacesException` - У регистрируемой команды в триггере содержатся пробелы
---
@@ -363,9 +364,9 @@ Command(trigger: str,
### Конструктор
```python
Flag(flag_name: str,
flag_prefix: Literal['-', '--', '---'] = '-',
flag_prefix: typing.Literal['-', '--', '---'] = '-',
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,
TooManyTransferredArgsException,
RequiredArgumentNotPassedException,
IncorrectNumberOfHandlerArgsException)
IncorrectNumberOfHandlerArgsException,
TriggerCannotContainSpacesException)
class Router:
@@ -71,6 +72,8 @@ class Router:
def _validate_command(self, command: Command):
command_name: str = command.get_trigger()
if command_name.find(' ') != -1:
raise TriggerCannotContainSpacesException()
if command_name in self.get_all_commands():
raise RepeatedCommandException()
if self._ignore_command_register:
+5
View File
@@ -21,3 +21,8 @@ class RequiredArgumentNotPassedException(Exception):
class IncorrectNumberOfHandlerArgsException(Exception):
def __str__(self):
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()
@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):
print('Solving...')
pprint(args)
+8 -1
View File
@@ -1,7 +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
from argenta.router.exceptions import RepeatedCommandException, TriggerCannotContainSpacesException
import unittest
@@ -109,6 +109,13 @@ class TestRouter(unittest.TestCase):
def test():
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'