work on docstrings

This commit is contained in:
2025-04-15 23:49:51 +03:00
parent 26a9d8a6da
commit a649022f1d
4 changed files with 96 additions and 13 deletions
+12
View File
@@ -2,15 +2,24 @@ from argenta.command.flag.models import InputFlag, Flag
class BaseInputCommandException(Exception): class BaseInputCommandException(Exception):
"""
Private. Base exception class for all exceptions raised when parse input command
"""
pass pass
class UnprocessedInputFlagException(BaseInputCommandException): class UnprocessedInputFlagException(BaseInputCommandException):
"""
Private. Raised when an unprocessed input flag is detected
"""
def __str__(self): def __str__(self):
return "Unprocessed Input Flags" return "Unprocessed Input Flags"
class RepeatedInputFlagsException(BaseInputCommandException): class RepeatedInputFlagsException(BaseInputCommandException):
"""
Private. Raised when repeated input flags are detected
"""
def __init__(self, flag: Flag | InputFlag): def __init__(self, flag: Flag | InputFlag):
self.flag = flag self.flag = flag
def __str__(self): def __str__(self):
@@ -19,5 +28,8 @@ class RepeatedInputFlagsException(BaseInputCommandException):
class EmptyInputCommandException(BaseInputCommandException): class EmptyInputCommandException(BaseInputCommandException):
"""
Private. Raised when an empty input command is detected
"""
def __str__(self): def __str__(self):
return "Input Command is empty" return "Input Command is empty"
+65 -7
View File
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
class BaseFlag(ABC): class BaseFlag(ABC):
def __init__(self, name: str, def __init__(self, name: str,
prefix: Literal['-', '--', '---'] = '--'): prefix: Literal['-', '--', '---'] = '--') -> None:
""" """
Private. Base class for flags Private. Base class for flags
:param name: the name of the flag :param name: the name of the flag
@@ -14,18 +14,26 @@ class BaseFlag(ABC):
self._name = name self._name = name
self._prefix = prefix self._prefix = prefix
def get_string_entity(self): def get_string_entity(self) -> str:
""" """
Private. Returns a string representation of the flag Public. Returns a string representation of the flag
:return: None :return: string representation of the flag as str
""" """
string_entity: str = self._prefix + self._name string_entity: str = self._prefix + self._name
return string_entity return string_entity
def get_name(self): def get_name(self) -> str:
"""
Public. Returns the name of the flag
:return: the name of the flag as str
"""
return self._name return self._name
def get_prefix(self): def get_prefix(self) -> str:
"""
Public. Returns the prefix of the flag
:return: the prefix of the flag as str
"""
return self._prefix return self._prefix
@@ -34,13 +42,29 @@ class InputFlag(BaseFlag):
def __init__(self, name: str, def __init__(self, name: str,
prefix: Literal['-', '--', '---'] = '--', prefix: Literal['-', '--', '---'] = '--',
value: str = None): value: str = None):
"""
Public. The entity of the flag of the entered command
:param name: the name of the input flag
:param prefix: the prefix of the input flag
:param value: the value of the input flag
:return: None
"""
super().__init__(name, prefix) super().__init__(name, prefix)
self._flag_value = value self._flag_value = value
def get_value(self) -> str | None: def get_value(self) -> str | None:
"""
Public. Returns the value of the flag
:return: the value of the flag as str
"""
return self._flag_value return self._flag_value
def set_value(self, value): def set_value(self, value):
"""
Private. Sets the value of the flag
:param value: the fag value to set
:return: None
"""
self._flag_value = value self._flag_value = value
@@ -48,11 +72,23 @@ class InputFlag(BaseFlag):
class Flag(BaseFlag): class Flag(BaseFlag):
def __init__(self, name: str, def __init__(self, name: str,
prefix: Literal['-', '--', '---'] = '--', prefix: Literal['-', '--', '---'] = '--',
possible_values: list[str] | Pattern[str] | False = True): possible_values: list[str] | Pattern[str] | False = True) -> None:
"""
Public. The entity of the flag being registered for subsequent processing
:param name: The name of the flag
:param prefix: The prefix of the flag
:param possible_values: The possible values of the flag, if False then the flag cannot have a value
:return: None
"""
super().__init__(name, prefix) super().__init__(name, prefix)
self.possible_values = possible_values self.possible_values = possible_values
def validate_input_flag_value(self, input_flag_value: str | None): def validate_input_flag_value(self, input_flag_value: str | None):
"""
Private. Validates the input flag value
:param input_flag_value: The input flag value to validate
:return: whether the entered flag is valid as bool
"""
if self.possible_values is False: if self.possible_values is False:
if input_flag_value is None: if input_flag_value is None:
return True return True
@@ -79,22 +115,44 @@ class Flag(BaseFlag):
class BaseFlags(ABC): class BaseFlags(ABC):
"""
Private. Base class for groups of flags
"""
__slots__ = ('_flags',) __slots__ = ('_flags',)
@abstractmethod @abstractmethod
def get_flags(self): def get_flags(self):
"""
Public. Returns a list of flags
:return: list of flags
"""
pass pass
@abstractmethod @abstractmethod
def add_flag(self, flag: Flag | InputFlag): def add_flag(self, flag: Flag | InputFlag):
"""
Public. Adds a flag to the list of flags
:param flag: flag to add
:return: None
"""
pass pass
@abstractmethod @abstractmethod
def add_flags(self, flags: list[Flag] | list[InputFlag]): def add_flags(self, flags: list[Flag] | list[InputFlag]):
"""
Public. Adds a list of flags to the list of flags
:param flags: list of flags to add
:return: None
"""
pass pass
@abstractmethod @abstractmethod
def get_flag(self, name: str): def get_flag(self, name: str):
"""
Public. Returns the flag entity by its name or None if not found
:param name: the name of the flag to get
:return: entity of the flag or None
"""
pass pass
def __iter__(self): def __iter__(self):
+18 -3
View File
@@ -1,7 +1,7 @@
from argenta.command.flag.models import Flag, InputFlag, Flags, InputFlags from argenta.command.flag.models import Flag, InputFlag, Flags, InputFlags
from argenta.command.exceptions import (UnprocessedInputFlagException, from argenta.command.exceptions import (UnprocessedInputFlagException,
RepeatedInputFlagsException, RepeatedInputFlagsException,
EmptyInputCommandException) EmptyInputCommandException)
from typing import Generic, TypeVar, cast, Literal from typing import Generic, TypeVar, cast, Literal
@@ -9,10 +9,18 @@ InputCommandType = TypeVar('InputCommandType')
class BaseCommand: class BaseCommand:
def __init__(self, trigger: str): def __init__(self, trigger: str) -> None:
"""
Private. Base class for all commands
:param trigger: A string trigger, which, when entered by the user, indicates that the input corresponds to the command
"""
self._trigger = trigger self._trigger = trigger
def get_trigger(self) -> str: def get_trigger(self) -> str:
"""
Returns the trigger of the command
:return: the trigger of the command as str
"""
return self._trigger return self._trigger
@@ -21,6 +29,13 @@ class Command(BaseCommand):
description: str = None, description: str = None,
flags: Flag | Flags = None, flags: Flag | Flags = None,
aliases: list[str] = None): aliases: list[str] = None):
"""
Public. The command that can and should be registered in the Router
:param trigger: A string trigger, which, when entered by the user, indicates that the input corresponds to the command
:param description: the description of the command
:param flags: processed commands
:param aliases: string synonyms for the main trigger
"""
super().__init__(trigger) super().__init__(trigger)
self._registered_flags: Flags = flags if isinstance(flags, Flags) else Flags(flags) if isinstance(flags, Flag) else Flags() self._registered_flags: Flags = flags if isinstance(flags, Flags) else Flags(flags) if isinstance(flags, Flag) else Flags()
self._description = f'Description for "{self._trigger}" command' if not description else description self._description = f'Description for "{self._trigger}" command' if not description else description
-2
View File
@@ -16,5 +16,3 @@ documentation for details.
:caption: Contents: :caption: Contents:
.. automodule:: argenta .. automodule:: argenta
:members: