mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
work on Response model
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from argenta.command.flag.models import ValidInputFlag, Flag
|
||||
from argenta.command.flag.models import Flag, InputFlag
|
||||
|
||||
|
||||
class BaseInputCommandException(Exception):
|
||||
@@ -20,7 +20,7 @@ class RepeatedInputFlagsException(BaseInputCommandException):
|
||||
"""
|
||||
Private. Raised when repeated input flags are detected
|
||||
"""
|
||||
def __init__(self, flag: Flag | ValidInputFlag):
|
||||
def __init__(self, flag: Flag | InputFlag):
|
||||
self.flag = flag
|
||||
def __str__(self):
|
||||
return ("Repeated Input Flags\n"
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
__all__ = ('InputFlags', 'ValidInputFlag', 'Flag', 'Flags')
|
||||
|
||||
|
||||
from argenta.command.flag.models import InputFlags, ValidInputFlag, Flags, Flag
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from typing import Literal, Pattern
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class BaseFlag(ABC):
|
||||
|
||||
class BaseFlag:
|
||||
def __init__(self, name: str,
|
||||
prefix: Literal['-', '--', '---'] = '--') -> None:
|
||||
"""
|
||||
@@ -37,7 +37,6 @@ class BaseFlag(ABC):
|
||||
return self._prefix
|
||||
|
||||
|
||||
|
||||
class Flag(BaseFlag):
|
||||
def __init__(self, name: str,
|
||||
prefix: Literal['-', '--', '---'] = '--',
|
||||
@@ -82,8 +81,7 @@ class Flag(BaseFlag):
|
||||
return True
|
||||
|
||||
|
||||
|
||||
class ValidInputFlag(BaseFlag):
|
||||
class InputFlag(BaseFlag):
|
||||
def __init__(self, name: str,
|
||||
prefix: Literal['-', '--', '---'] = '--',
|
||||
value: str = None):
|
||||
@@ -112,11 +110,3 @@ class ValidInputFlag(BaseFlag):
|
||||
"""
|
||||
self._flag_value = value
|
||||
|
||||
|
||||
|
||||
class UndefinedInputFlag(ValidInputFlag): pass
|
||||
|
||||
|
||||
|
||||
class InvalidValueInputFlag(ValidInputFlag): pass
|
||||
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
from argenta.command.flag import Flag, ValidInputFlag
|
||||
from argenta.command.flag.models import InputFlag, Flag
|
||||
from typing import Generic, TypeVar
|
||||
|
||||
|
||||
|
||||
class Flags:
|
||||
def __init__(self, *flags: Flag):
|
||||
FlagType = TypeVar('FlagType')
|
||||
|
||||
|
||||
class BaseFlags(Generic[FlagType]):
|
||||
def __init__(self, *flags: FlagType):
|
||||
"""
|
||||
Public. A model that combines the registered flags
|
||||
:param flags: the flags that will be registered
|
||||
@@ -11,14 +15,14 @@ class Flags:
|
||||
"""
|
||||
self._flags = flags if flags else []
|
||||
|
||||
def get_flags(self) -> list[Flag]:
|
||||
def get_flags(self) -> list[FlagType]:
|
||||
"""
|
||||
Public. Returns a list of flags
|
||||
:return: list of flags
|
||||
:return: list of flags as list[FlagType]
|
||||
"""
|
||||
return self._flags
|
||||
|
||||
def add_flag(self, flag: Flag):
|
||||
def add_flag(self, flag: FlagType):
|
||||
"""
|
||||
Public. Adds a flag to the list of flags
|
||||
:param flag: flag to add
|
||||
@@ -26,7 +30,7 @@ class Flags:
|
||||
"""
|
||||
self._flags.append(flag)
|
||||
|
||||
def add_flags(self, flags: list[Flag]):
|
||||
def add_flags(self, flags: list[FlagType]):
|
||||
"""
|
||||
Public. Adds a list of flags to the list of flags
|
||||
:param flags: list of flags to add
|
||||
@@ -34,7 +38,7 @@ class Flags:
|
||||
"""
|
||||
self._flags.extend(flags)
|
||||
|
||||
def get_flag(self, name: str) -> Flag | None:
|
||||
def get_flag(self, name: str) -> FlagType | None:
|
||||
"""
|
||||
Public. Returns the flag entity by its name or None if not found
|
||||
:param name: the name of the flag to get
|
||||
@@ -55,15 +59,17 @@ class Flags:
|
||||
return self._flags[item]
|
||||
|
||||
|
||||
|
||||
class ValidInputFlags(ValidInputFlag):
|
||||
pass
|
||||
class Flags(BaseFlags[Flag]): pass
|
||||
|
||||
|
||||
class UndefinedInputFlags(ValidInputFlags):
|
||||
pass
|
||||
class InputFlags(BaseFlags[InputFlag]): pass
|
||||
|
||||
|
||||
class InvalidValueInputFlags(ValidInputFlags):
|
||||
pass
|
||||
class ValidInputFlags(InputFlags): pass
|
||||
|
||||
|
||||
class UndefinedInputFlags(InputFlags): pass
|
||||
|
||||
|
||||
class InvalidValueInputFlags(InputFlags): pass
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from argenta.command.flag.models import Flag, ValidInputFlag, Flags, InputFlags
|
||||
from argenta.command.flag.models import Flag, InputFlag
|
||||
from argenta.command.flags.models import InputFlags, Flags
|
||||
from argenta.command.exceptions import (UnprocessedInputFlagException,
|
||||
RepeatedInputFlagsException,
|
||||
EmptyInputCommandException)
|
||||
@@ -55,7 +56,7 @@ class Command(BaseCommand):
|
||||
"""
|
||||
return self._aliases
|
||||
|
||||
def validate_input_flag(self, flag: ValidInputFlag) -> bool:
|
||||
def validate_input_flag(self, flag: InputFlag) -> Literal['Undefined', 'Valid', 'Invalid']:
|
||||
"""
|
||||
Private. Validates the input flag
|
||||
:param flag: input flag for validation
|
||||
@@ -67,14 +68,21 @@ class Command(BaseCommand):
|
||||
if registered_flags.get_string_entity() == flag.get_string_entity():
|
||||
is_valid = registered_flags.validate_input_flag_value(flag.get_value())
|
||||
if is_valid:
|
||||
return True
|
||||
return 'Valid'
|
||||
else:
|
||||
return 'Invalid'
|
||||
else:
|
||||
return 'Undefined'
|
||||
else:
|
||||
for registered_flag in registered_flags:
|
||||
if registered_flag.get_string_entity() == flag.get_string_entity():
|
||||
is_valid = registered_flag.validate_input_flag_value(flag.get_value())
|
||||
if is_valid:
|
||||
return True
|
||||
return False
|
||||
return 'Valid'
|
||||
else:
|
||||
return 'Invalid'
|
||||
return 'Undefined'
|
||||
return 'Undefined'
|
||||
|
||||
def get_description(self) -> str:
|
||||
"""
|
||||
@@ -87,7 +95,7 @@ class Command(BaseCommand):
|
||||
|
||||
class InputCommand(BaseCommand, Generic[InputCommandType]):
|
||||
def __init__(self, trigger: str,
|
||||
input_flags: ValidInputFlag | InputFlags = None):
|
||||
input_flags: InputFlag | InputFlags = None):
|
||||
"""
|
||||
Private. The model of the input command, after parsing
|
||||
:param trigger:the trigger of the command
|
||||
@@ -95,7 +103,7 @@ class InputCommand(BaseCommand, Generic[InputCommandType]):
|
||||
:return: None
|
||||
"""
|
||||
super().__init__(trigger)
|
||||
self._input_flags: InputFlags = input_flags if isinstance(input_flags, InputFlags) else InputFlags(input_flags) if isinstance(input_flags, ValidInputFlag) else InputFlags()
|
||||
self._input_flags: InputFlags = input_flags if isinstance(input_flags, InputFlags) else InputFlags(input_flags) if isinstance(input_flags, InputFlag) else InputFlags()
|
||||
|
||||
def _set_input_flags(self, input_flags: InputFlags) -> None:
|
||||
"""
|
||||
@@ -144,10 +152,10 @@ class InputCommand(BaseCommand, Generic[InputCommandType]):
|
||||
if not list_of_tokens[k+1].startswith('-'):
|
||||
continue
|
||||
|
||||
input_flag = ValidInputFlag(name=current_flag_name[current_flag_name.rfind('-') + 1:],
|
||||
prefix=cast(Literal['-', '--', '---'],
|
||||
current_flag_name[:current_flag_name.rfind('-')+1]),
|
||||
value=current_flag_value)
|
||||
input_flag = InputFlag(name=current_flag_name[current_flag_name.rfind('-') + 1:],
|
||||
prefix=cast(Literal['-', '--', '---'],
|
||||
current_flag_name[:current_flag_name.rfind('-')+1]),
|
||||
value=current_flag_value)
|
||||
|
||||
all_flags = [flag.get_string_entity() for flag in input_flags.get_flags()]
|
||||
if input_flag.get_string_entity() not in all_flags:
|
||||
|
||||
Reference in New Issue
Block a user