orionis 0.25.0__py3-none-any.whl → 0.27.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- orionis/framework.py +1 -1
- orionis/luminate/bootstrap/cli_exception.py +54 -0
- orionis/luminate/bootstrap/commands/bootstrapper.py +99 -0
- orionis/luminate/{console → bootstrap/commands}/register.py +7 -13
- orionis/luminate/bootstrap/config/bootstrapper.py +2 -1
- orionis/luminate/cache/app/config.py +14 -7
- orionis/luminate/cache/console/commands.py +20 -21
- orionis/luminate/console/base/command.py +1 -1
- orionis/luminate/console/cache.py +12 -57
- orionis/luminate/console/commands/cache_clear.py +3 -4
- orionis/luminate/console/commands/help.py +3 -4
- orionis/luminate/console/commands/schedule_work.py +3 -4
- orionis/luminate/console/commands/tests.py +3 -4
- orionis/luminate/console/commands/version.py +3 -4
- orionis/luminate/console/exceptions/cli_exception.py +43 -0
- orionis/luminate/console/kernel.py +1 -1
- orionis/luminate/console/output/console.py +1 -1
- orionis/luminate/console/output/executor.py +1 -1
- orionis/luminate/console/output/progress_bar.py +1 -1
- orionis/luminate/console/scripts/management.py +1 -1
- orionis/luminate/console/tasks/scheduler.py +1 -1
- orionis/luminate/container/container.py +19 -22
- orionis/luminate/contracts/bootstrap/commands/bootstrapper_interface.py +44 -0
- orionis/luminate/contracts/{console → bootstrap/commands}/register_interface.py +2 -1
- orionis/luminate/contracts/cache/app/config_interface.py +76 -0
- orionis/luminate/contracts/cache/{cache_commands_interface.py → console/commands_interface.py} +14 -5
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/METADATA +1 -1
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/RECORD +38 -35
- orionis/luminate/contracts/console/cli_cache_interface.py +0 -34
- /orionis/luminate/contracts/console/{base_command_interface.py → base/base_command_interface.py} +0 -0
- /orionis/luminate/contracts/console/{console_interface.py → output/console_interface.py} +0 -0
- /orionis/luminate/contracts/console/{executor_interface.py → output/executor_interface.py} +0 -0
- /orionis/luminate/contracts/console/{progress_bar_interface.py → output/progress_bar_interface.py} +0 -0
- /orionis/luminate/contracts/console/{management_interface.py → scripts/management_interface.py} +0 -0
- /orionis/luminate/contracts/console/{schedule_interface.py → tasks/schedule_interface.py} +0 -0
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/LICENCE +0 -0
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/WHEEL +0 -0
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/entry_points.txt +0 -0
- {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/top_level.txt +0 -0
    
        orionis/framework.py
    CHANGED
    
    
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            class BootstrapRuntimeError(RuntimeError):
         | 
| 2 | 
            +
                """
         | 
| 3 | 
            +
                Exception raised for errors related to dumping Orionis data.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                Parameters
         | 
| 6 | 
            +
                ----------
         | 
| 7 | 
            +
                message : str
         | 
| 8 | 
            +
                    The error message describing the issue.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                Attributes
         | 
| 11 | 
            +
                ----------
         | 
| 12 | 
            +
                message : str
         | 
| 13 | 
            +
                    The stored error message.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                Methods
         | 
| 16 | 
            +
                -------
         | 
| 17 | 
            +
                __str__()
         | 
| 18 | 
            +
                    Returns a user-friendly string representation of the exception.
         | 
| 19 | 
            +
                __repr__()
         | 
| 20 | 
            +
                    Returns a detailed representation for debugging purposes.
         | 
| 21 | 
            +
                """
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def __init__(self, message: str):
         | 
| 24 | 
            +
                    """
         | 
| 25 | 
            +
                    Initialize the exception with a message.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    Parameters
         | 
| 28 | 
            +
                    ----------
         | 
| 29 | 
            +
                    message : str
         | 
| 30 | 
            +
                        The error message describing the issue.
         | 
| 31 | 
            +
                    """
         | 
| 32 | 
            +
                    super().__init__(f"[BootstrapRuntimeError]: {message}")
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                def __str__(self) -> str:
         | 
| 35 | 
            +
                    """
         | 
| 36 | 
            +
                    Returns a user-friendly string representation.
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    Returns
         | 
| 39 | 
            +
                    -------
         | 
| 40 | 
            +
                    str
         | 
| 41 | 
            +
                        A formatted error message.
         | 
| 42 | 
            +
                    """
         | 
| 43 | 
            +
                    return self.args[0]
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def __repr__(self) -> str:
         | 
| 46 | 
            +
                    """
         | 
| 47 | 
            +
                    Returns a detailed representation for debugging.
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    Returns
         | 
| 50 | 
            +
                    -------
         | 
| 51 | 
            +
                    str
         | 
| 52 | 
            +
                        A detailed string representation including the exception name.
         | 
| 53 | 
            +
                    """
         | 
| 54 | 
            +
                    return f"{self.__class__.__name__}({self.args[0]!r})"
         | 
| @@ -0,0 +1,99 @@ | |
| 1 | 
            +
            import pathlib
         | 
| 2 | 
            +
            import importlib
         | 
| 3 | 
            +
            import inspect
         | 
| 4 | 
            +
            from orionis.luminate.bootstrap.cli_exception import BootstrapRuntimeError
         | 
| 5 | 
            +
            from orionis.luminate.bootstrap.commands.register import Register
         | 
| 6 | 
            +
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 7 | 
            +
            from orionis.luminate.contracts.bootstrap.commands.bootstrapper_interface import IBootstrapper
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            class Bootstrapper(IBootstrapper):
         | 
| 10 | 
            +
                """
         | 
| 11 | 
            +
                Manages the automatic loading and registration of command classes
         | 
| 12 | 
            +
                from Python files located in predefined directories.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                The `Bootstrapper` class scans specific directories for Python files, dynamically
         | 
| 15 | 
            +
                imports them, and registers classes that inherit from `BaseCommand`.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                Attributes
         | 
| 18 | 
            +
                ----------
         | 
| 19 | 
            +
                register : Register
         | 
| 20 | 
            +
                    An instance of the `Register` class used to register command classes.
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                Methods
         | 
| 23 | 
            +
                -------
         | 
| 24 | 
            +
                __init__(register: Register) -> None
         | 
| 25 | 
            +
                    Initializes the `Bootstrapper` with a `Register` instance and triggers autoloading.
         | 
| 26 | 
            +
                _autoload() -> None
         | 
| 27 | 
            +
                    Scans predefined directories for Python files, dynamically imports modules,
         | 
| 28 | 
            +
                    and registers classes that extend `BaseCommand`.
         | 
| 29 | 
            +
                """
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def __init__(self, register: Register) -> None:
         | 
| 32 | 
            +
                    """
         | 
| 33 | 
            +
                    Initializes the `Bootstrapper` with a `Register` instance and triggers autoloading.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    Parameters
         | 
| 36 | 
            +
                    ----------
         | 
| 37 | 
            +
                    register : Register
         | 
| 38 | 
            +
                        An instance of the `Register` class used to register command classes.
         | 
| 39 | 
            +
                    """
         | 
| 40 | 
            +
                    self.register = register
         | 
| 41 | 
            +
                    self._autoload()
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                def _autoload(self) -> None:
         | 
| 44 | 
            +
                    """
         | 
| 45 | 
            +
                    Autoloads command modules from specified directories and registers command classes.
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                    This method searches for Python files in the predefined command directories,
         | 
| 48 | 
            +
                    dynamically imports the modules, and registers classes that inherit from `BaseCommand`.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    The command directories searched are:
         | 
| 51 | 
            +
                    - `app/console/commands` relative to the current working directory.
         | 
| 52 | 
            +
                    - `console/commands` relative to the parent directory of the current file.
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    It skips `__init__.py` files and ignores directories that do not exist.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    Raises
         | 
| 57 | 
            +
                    ------
         | 
| 58 | 
            +
                    BootstrapRuntimeError
         | 
| 59 | 
            +
                        If an error occurs while loading a module.
         | 
| 60 | 
            +
                    """
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                    # Define the base project path
         | 
| 63 | 
            +
                    base_path = pathlib.Path.cwd()
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                    # Define the command directories to search
         | 
| 66 | 
            +
                    command_dirs = [
         | 
| 67 | 
            +
                        base_path / "app" / "console" / "commands",
         | 
| 68 | 
            +
                        pathlib.Path(__file__).resolve().parent.parent / "console" / "commands"
         | 
| 69 | 
            +
                    ]
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    # Iterate over each command directory
         | 
| 72 | 
            +
                    for cmd_dir in command_dirs:
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                        # Skip if the directory does not exist
         | 
| 75 | 
            +
                        if not cmd_dir.is_dir():
         | 
| 76 | 
            +
                            continue
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                        # Iterate over Python files in the directory (recursive search)
         | 
| 79 | 
            +
                        for file_path in cmd_dir.rglob("*.py"):
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                            # Skip `__init__.py` files
         | 
| 82 | 
            +
                            if file_path.name == "__init__.py":
         | 
| 83 | 
            +
                                continue
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                            # Convert file path to a Python module import path
         | 
| 86 | 
            +
                            module_path = ".".join(file_path.relative_to(base_path).with_suffix("").parts)
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                            try:
         | 
| 89 | 
            +
                                # Dynamically import the module
         | 
| 90 | 
            +
                                module = importlib.import_module(module_path)
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                                # Find classes that inherit from `BaseCommand`
         | 
| 93 | 
            +
                                for name, obj in inspect.getmembers(module, inspect.isclass):
         | 
| 94 | 
            +
                                    if issubclass(obj, BaseCommand) and obj is not BaseCommand:
         | 
| 95 | 
            +
                                        # Register the class
         | 
| 96 | 
            +
                                        self.register.command(obj)
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                            except Exception as e:
         | 
| 99 | 
            +
                                raise BootstrapRuntimeError(f"Error loading {module_path}") from e
         | 
| @@ -1,6 +1,7 @@ | |
| 1 | 
            +
            from typing import Any, Callable
         | 
| 1 2 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 2 3 | 
             
            from orionis.luminate.cache.console.commands import CacheCommands
         | 
| 3 | 
            -
            from orionis.luminate.contracts. | 
| 4 | 
            +
            from orionis.luminate.contracts.bootstrap.commands.register_interface import IRegister
         | 
| 4 5 |  | 
| 5 6 | 
             
            class Register(IRegister):
         | 
| 6 7 | 
             
                """
         | 
| @@ -12,13 +13,13 @@ class Register(IRegister): | |
| 12 13 | 
             
                    A dictionary storing registered command classes.
         | 
| 13 14 | 
             
                """
         | 
| 14 15 |  | 
| 15 | 
            -
                def __init__(self, cache : CacheCommands | 
| 16 | 
            +
                def __init__(self, cache : CacheCommands):
         | 
| 16 17 | 
             
                    """
         | 
| 17 18 | 
             
                    Initializes the Register instance and prepares the cache commands system.
         | 
| 18 19 | 
             
                    """
         | 
| 19 | 
            -
                    self.cache_commands = cache | 
| 20 | 
            +
                    self.cache_commands = cache
         | 
| 20 21 |  | 
| 21 | 
            -
                def command(self, command_class):
         | 
| 22 | 
            +
                def command(self, command_class: Callable[..., Any]) -> None:
         | 
| 22 23 | 
             
                    """
         | 
| 23 24 | 
             
                    Registers a command class after validating its structure.
         | 
| 24 25 |  | 
| @@ -84,15 +85,8 @@ class Register(IRegister): | |
| 84 85 |  | 
| 85 86 | 
             
                    # Register the command
         | 
| 86 87 | 
             
                    self.cache_commands.register(
         | 
| 87 | 
            -
                         | 
| 88 | 
            +
                        concrete=command_class,
         | 
| 88 89 | 
             
                        arguments=arguments,
         | 
| 89 90 | 
             
                        description=description,
         | 
| 90 91 | 
             
                        signature=signature
         | 
| 91 | 
            -
                    )
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                    # Return Class
         | 
| 94 | 
            -
                    return command_class
         | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
            # Return Decorator.
         | 
| 98 | 
            -
            register = Register()
         | 
| 92 | 
            +
                    )
         | 
| @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            import importlib
         | 
| 2 2 | 
             
            import pathlib
         | 
| 3 | 
            +
            from orionis.luminate.bootstrap.cli_exception import BootstrapRuntimeError
         | 
| 3 4 | 
             
            from orionis.luminate.bootstrap.config.register import Register
         | 
| 4 5 | 
             
            from orionis.luminate.contracts.bootstrap.config.bootstrapper_interface import IBootstrapper
         | 
| 5 6 |  | 
| @@ -74,5 +75,5 @@ class Bootstrapper(IBootstrapper): | |
| 74 75 | 
             
                            if hasattr(module, "Config"):
         | 
| 75 76 | 
             
                                self.register.config(getattr(module, "Config"))
         | 
| 76 77 | 
             
                        except Exception as e:
         | 
| 77 | 
            -
                            raise  | 
| 78 | 
            +
                            raise BootstrapRuntimeError(f"Error loading module {module_path}") from e
         | 
| 78 79 |  | 
| @@ -1,15 +1,22 @@ | |
| 1 1 | 
             
            from typing import Dict, Any
         | 
| 2 | 
            +
            from orionis.luminate.contracts.cache.app.config_interface import ICacheConfig
         | 
| 2 3 |  | 
| 3 | 
            -
            class CacheConfig:
         | 
| 4 | 
            +
            class CacheConfig(ICacheConfig):
         | 
| 4 5 | 
             
                """
         | 
| 5 | 
            -
                 | 
| 6 | 
            -
                and provides methods to register, unregister, and retrieve configurations.
         | 
| 6 | 
            +
                CacheConfig is a class that manages the registration, unregistration, and retrieval of configuration sections.
         | 
| 7 7 |  | 
| 8 | 
            -
                 | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                     | 
| 8 | 
            +
                Methods
         | 
| 9 | 
            +
                -------
         | 
| 10 | 
            +
                __init__()
         | 
| 11 | 
            +
                    Initializes a new instance of the class with an empty configuration dictionary.
         | 
| 12 | 
            +
                register(section: str, data: Dict[str, Any])
         | 
| 13 | 
            +
                    Registers a configuration section with its associated data.
         | 
| 14 | 
            +
                unregister(section: str)
         | 
| 15 | 
            +
                    Unregisters a previously registered configuration section.
         | 
| 16 | 
            +
                get(section: str)
         | 
| 17 | 
            +
                    Retrieves the configuration data for a specific section.
         | 
| 12 18 | 
             
                """
         | 
| 19 | 
            +
             | 
| 13 20 | 
             
                def __init__(self) -> None:
         | 
| 14 21 | 
             
                    """
         | 
| 15 22 | 
             
                    Initializes a new instance of the class with an empty configuration dictionary.
         | 
| @@ -1,33 +1,32 @@ | |
| 1 | 
            -
            from  | 
| 1 | 
            +
            from typing import Any, Callable
         | 
| 2 | 
            +
            from orionis.luminate.contracts.cache.console.commands_interface import ICacheCommands
         | 
| 2 3 |  | 
| 3 4 | 
             
            class CacheCommands(ICacheCommands):
         | 
| 4 5 | 
             
                """
         | 
| 5 | 
            -
                 | 
| 6 | 
            +
                CacheCommands is a class that manages the registration, unregistration, and retrieval of command instances.
         | 
| 6 7 |  | 
| 7 | 
            -
                 | 
| 8 | 
            -
                 | 
| 8 | 
            +
                Methods
         | 
| 9 | 
            +
                -------
         | 
| 10 | 
            +
                __init__()
         | 
| 11 | 
            +
                    Initializes the command cache with an empty dictionary.
         | 
| 12 | 
            +
                register(signature: str, description: str, arguments: list, concrete: Callable[..., Any])
         | 
| 13 | 
            +
                    Register a new command with its signature, description, and class instance.
         | 
| 14 | 
            +
                unregister(signature: str)
         | 
| 15 | 
            +
                    Unregister an existing command by its signature.
         | 
| 16 | 
            +
                get(signature: str)
         | 
| 17 | 
            +
                    Retrieve the information of a registered command by its signature.
         | 
| 9 18 | 
             
                """
         | 
| 10 19 |  | 
| 11 | 
            -
                 | 
| 20 | 
            +
                def __init__(self):
         | 
| 12 21 |  | 
| 13 | 
            -
                def __new__(cls, *args, **kwargs):
         | 
| 14 22 | 
             
                    """
         | 
| 15 | 
            -
                     | 
| 23 | 
            +
                    Initializes the command cache.
         | 
| 16 24 |  | 
| 17 | 
            -
                     | 
| 18 | 
            -
                    during the lifetime of the application.
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                    Returns
         | 
| 21 | 
            -
                    -------
         | 
| 22 | 
            -
                    CacheCommands
         | 
| 23 | 
            -
                        The singleton instance of the class.
         | 
| 25 | 
            +
                    This constructor sets up an empty dictionary to store commands.
         | 
| 24 26 | 
             
                    """
         | 
| 25 | 
            -
                     | 
| 26 | 
            -
                        cls._instance = super().__new__(cls, *args, **kwargs)
         | 
| 27 | 
            -
                        cls._instance.commands = {}
         | 
| 28 | 
            -
                    return cls._instance
         | 
| 27 | 
            +
                    self.commands = {}
         | 
| 29 28 |  | 
| 30 | 
            -
                def register(self, signature: str, description: str, arguments: list,  | 
| 29 | 
            +
                def register(self, signature: str, description: str, arguments: list, concrete: Callable[..., Any]):
         | 
| 31 30 | 
             
                    """
         | 
| 32 31 | 
             
                    Register a new command with its signature, description, and class instance.
         | 
| 33 32 |  | 
| @@ -37,7 +36,7 @@ class CacheCommands(ICacheCommands): | |
| 37 36 | 
             
                        The unique identifier (signature) for the command.
         | 
| 38 37 | 
             
                    description : str
         | 
| 39 38 | 
             
                        A brief description of what the command does.
         | 
| 40 | 
            -
                     | 
| 39 | 
            +
                    concrete : class
         | 
| 41 40 | 
             
                        The class or callable instance that defines the command behavior.
         | 
| 42 41 |  | 
| 43 42 | 
             
                    Raises
         | 
| @@ -49,7 +48,7 @@ class CacheCommands(ICacheCommands): | |
| 49 48 | 
             
                        raise ValueError(f"Command '{signature}' is already registered. Please ensure signatures are unique.")
         | 
| 50 49 |  | 
| 51 50 | 
             
                    self.commands[signature] = {
         | 
| 52 | 
            -
                        ' | 
| 51 | 
            +
                        'concrete':concrete,
         | 
| 53 52 | 
             
                        'arguments':arguments,
         | 
| 54 53 | 
             
                        'description':description,
         | 
| 55 54 | 
             
                        'signature':signature
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            from orionis.luminate.console.output.console import Console
         | 
| 2 2 | 
             
            from orionis.luminate.console.output.progress_bar import ProgressBar
         | 
| 3 | 
            -
            from orionis.luminate.contracts.console.base_command_interface import IBaseCommand
         | 
| 3 | 
            +
            from orionis.luminate.contracts.console.base.base_command_interface import IBaseCommand
         | 
| 4 4 |  | 
| 5 5 | 
             
            class BaseCommand(IBaseCommand):
         | 
| 6 6 | 
             
                """
         | 
| @@ -1,59 +1,25 @@ | |
| 1 1 | 
             
            import os
         | 
| 2 | 
            -
            from threading import Lock
         | 
| 3 2 | 
             
            from orionis.luminate.tools.reflection import Reflection
         | 
| 4 | 
            -
            from orionis.luminate.cache.console.commands import CacheCommands
         | 
| 5 | 
            -
            from orionis.luminate.contracts.console.cli_cache_interface import ICLICache
         | 
| 6 3 |  | 
| 7 | 
            -
            class CLICache | 
| 4 | 
            +
            class CLICache:
         | 
| 8 5 | 
             
                """
         | 
| 9 | 
            -
                 | 
| 6 | 
            +
                Class responsible for managing the loading and execution of commands within the framework.
         | 
| 10 7 |  | 
| 11 | 
            -
                This class ensures that commands are loaded only once and are accessible for execution. | 
| 12 | 
            -
                the Singleton pattern, meaning only one instance of this class will exist in the application lifecycle.
         | 
| 8 | 
            +
                This class ensures that commands are loaded only once and are accessible for execution.
         | 
| 13 9 |  | 
| 14 10 | 
             
                Attributes
         | 
| 15 11 | 
             
                ----------
         | 
| 16 | 
            -
                _instance : CLICache
         | 
| 17 | 
            -
                    The singleton instance of the CLICache class.
         | 
| 18 | 
            -
                _lock : threading.Lock
         | 
| 19 | 
            -
                    A lock used to ensure thread-safety during instance creation.
         | 
| 20 | 
            -
                _initialized : bool
         | 
| 21 | 
            -
                    A flag indicating whether the class has been initialized.
         | 
| 22 12 | 
             
                paths : list
         | 
| 23 13 | 
             
                    List of directories where commands are located.
         | 
| 24 14 |  | 
| 25 15 | 
             
                Methods
         | 
| 26 16 | 
             
                -------
         | 
| 27 | 
            -
                __new__ :
         | 
| 28 | 
            -
                    Creates and returns the singleton instance of the CLICache class.
         | 
| 29 17 | 
             
                __init__ :
         | 
| 30 18 | 
             
                    Initializes the CLICache instance, loading commands if not already initialized.
         | 
| 31 19 | 
             
                _load_commands :
         | 
| 32 20 | 
             
                    Loads command modules from predefined directories and imports them dynamically.
         | 
| 33 | 
            -
                getCommands :
         | 
| 34 | 
            -
                    Returns the instance of CacheCommands containing the command cache.
         | 
| 35 21 | 
             
                """
         | 
| 36 22 |  | 
| 37 | 
            -
                _instance = None
         | 
| 38 | 
            -
                _lock = Lock()
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                def __new__(cls):
         | 
| 41 | 
            -
                    """
         | 
| 42 | 
            -
                    Ensures only one instance of the CLICache class exists (Singleton pattern).
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    This method is responsible for controlling the instance creation process, ensuring that no more than one
         | 
| 45 | 
            -
                    CLICache instance is created in the system, even in multi-threaded environments.
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    Returns
         | 
| 48 | 
            -
                    -------
         | 
| 49 | 
            -
                    CLICache
         | 
| 50 | 
            -
                        The singleton instance of the CLICache class.
         | 
| 51 | 
            -
                    """
         | 
| 52 | 
            -
                    with cls._lock:
         | 
| 53 | 
            -
                        if cls._instance is None:
         | 
| 54 | 
            -
                            cls._instance = super(CLICache, cls).__new__(cls)
         | 
| 55 | 
            -
                            cls._instance._initialized = False
         | 
| 56 | 
            -
                    return cls._instance
         | 
| 57 23 |  | 
| 58 24 | 
             
                def __init__(self) -> None:
         | 
| 59 25 | 
             
                    """
         | 
| @@ -67,12 +33,8 @@ class CLICache(ICLICache): | |
| 67 33 | 
             
                    paths : list
         | 
| 68 34 | 
             
                        List of directories containing command files to be loaded.
         | 
| 69 35 | 
             
                    """
         | 
| 70 | 
            -
                    if self._initialized:
         | 
| 71 | 
            -
                        return
         | 
| 72 | 
            -
             | 
| 73 36 | 
             
                    self.paths = []
         | 
| 74 37 | 
             
                    self._load_commands()
         | 
| 75 | 
            -
                    self._initialized = True
         | 
| 76 38 |  | 
| 77 39 | 
             
                def _load_commands(self):
         | 
| 78 40 | 
             
                    """
         | 
| @@ -110,23 +72,16 @@ class CLICache(ICLICache): | |
| 110 72 | 
             
                                pre_module = current_directory.replace(base_path, '').replace(os.sep, '.').lstrip('.')
         | 
| 111 73 | 
             
                                for file in files:
         | 
| 112 74 | 
             
                                    if file.endswith('.py'):
         | 
| 113 | 
            -
                                        # Construct the module name and path
         | 
| 114 | 
            -
                                        module_name = file[:-3]  # Remove the '.py' extension
         | 
| 115 | 
            -
                                        module_path = f"{pre_module}.{module_name}".replace('venv.Lib.site-packages.', '')
         | 
| 116 75 |  | 
| 117 | 
            -
                                        #  | 
| 118 | 
            -
                                         | 
| 76 | 
            +
                                        # Remove the '.py' extension
         | 
| 77 | 
            +
                                        module_name = file[:-3]
         | 
| 119 78 |  | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
                    Returns the instance of the CacheCommands containing the command cache.
         | 
| 79 | 
            +
                                        # Construct the full module path
         | 
| 80 | 
            +
                                        module_path = f"{pre_module}.{module_name}"
         | 
| 123 81 |  | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 82 | 
            +
                                        # Remove the 'site-packages' prefix from the module path
         | 
| 83 | 
            +
                                        if 'site-packages.' in module_path:
         | 
| 84 | 
            +
                                            module_path = module_path.split('site-packages.')[1]
         | 
| 126 85 |  | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 129 | 
            -
                    CacheCommands
         | 
| 130 | 
            -
                        The instance of CacheCommands that holds the cached commands.
         | 
| 131 | 
            -
                    """
         | 
| 132 | 
            -
                    return CacheCommands()
         | 
| 86 | 
            +
                                        # Use Reflection to load the module dynamically
         | 
| 87 | 
            +
                                        Reflection(module=module_path)
         | 
| @@ -1,9 +1,8 @@ | |
| 1 1 | 
             
            import os
         | 
| 2 2 | 
             
            import shutil
         | 
| 3 | 
            -
            from orionis.luminate.console.register import register
         | 
| 4 3 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 4 | 
            +
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisRuntimeError
         | 
| 5 5 |  | 
| 6 | 
            -
            @register.command
         | 
| 7 6 | 
             
            class CacheClearCommand(BaseCommand):
         | 
| 8 7 | 
             
                """
         | 
| 9 8 | 
             
                Clears Python bytecode caches (__pycache__) within the project directory.
         | 
| @@ -48,9 +47,9 @@ class CacheClearCommand(BaseCommand): | |
| 48 47 | 
             
                                    shutil.rmtree(pycache_path)
         | 
| 49 48 |  | 
| 50 49 | 
             
                        # Log a success message once all caches are cleared
         | 
| 51 | 
            -
                        self.success(message='The application cache has been successfully cleared.' | 
| 50 | 
            +
                        self.success(message='The application cache has been successfully cleared.')
         | 
| 52 51 |  | 
| 53 52 | 
             
                    except Exception as e:
         | 
| 54 53 |  | 
| 55 54 | 
             
                        # Handle any unexpected error and display the error message
         | 
| 56 | 
            -
                        raise  | 
| 55 | 
            +
                        raise CLIOrionisRuntimeError(f"An unexpected error occurred while clearing the cache: {e}") from e
         | 
| @@ -1,8 +1,7 @@ | |
| 1 | 
            -
            from orionis.luminate.console.register import register
         | 
| 2 1 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 3 2 | 
             
            from orionis.luminate.cache.console.commands import CacheCommands
         | 
| 3 | 
            +
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisRuntimeError
         | 
| 4 4 |  | 
| 5 | 
            -
            @register.command
         | 
| 6 5 | 
             
            class HelpCommand(BaseCommand):
         | 
| 7 6 | 
             
                """
         | 
| 8 7 | 
             
                Command class to display the list of available commands in the Orionis application.
         | 
| @@ -55,5 +54,5 @@ class HelpCommand(BaseCommand): | |
| 55 54 |  | 
| 56 55 | 
             
                    except Exception as e:
         | 
| 57 56 |  | 
| 58 | 
            -
                        #  | 
| 59 | 
            -
                        raise  | 
| 57 | 
            +
                        # Handle any unexpected error and display the error message
         | 
| 58 | 
            +
                        raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
         | 
| @@ -1,9 +1,8 @@ | |
| 1 | 
            -
            from orionis.luminate.console.register import register
         | 
| 2 1 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 2 | 
            +
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisRuntimeError
         | 
| 3 3 | 
             
            from orionis.luminate.console.tasks.scheduler import Schedule
         | 
| 4 4 | 
             
            from orionis.luminate.contracts.console.task_manager_interface import ITaskManager
         | 
| 5 5 |  | 
| 6 | 
            -
            @register.command
         | 
| 7 6 | 
             
            class ScheduleWorkCommand(BaseCommand):
         | 
| 8 7 | 
             
                """
         | 
| 9 8 | 
             
                Command class to handle scheduled tasks within the Orionis application.
         | 
| @@ -46,5 +45,5 @@ class ScheduleWorkCommand(BaseCommand): | |
| 46 45 |  | 
| 47 46 | 
             
                    except Exception as e:
         | 
| 48 47 |  | 
| 49 | 
            -
                        #  | 
| 50 | 
            -
                        raise  | 
| 48 | 
            +
                        # Handle any unexpected error and display the error message
         | 
| 49 | 
            +
                        raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
         | 
| @@ -1,8 +1,7 @@ | |
| 1 | 
            +
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisRuntimeError
         | 
| 1 2 | 
             
            from orionis.luminate.facades.tests import UnitTests
         | 
| 2 | 
            -
            from orionis.luminate.console.register import register
         | 
| 3 3 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 4 4 |  | 
| 5 | 
            -
            @register.command
         | 
| 6 5 | 
             
            class TestsCommand(BaseCommand):
         | 
| 7 6 | 
             
                """
         | 
| 8 7 | 
             
                Command class to display the list of available commands in the Orionis application.
         | 
| @@ -36,5 +35,5 @@ class TestsCommand(BaseCommand): | |
| 36 35 |  | 
| 37 36 | 
             
                    except Exception as e:
         | 
| 38 37 |  | 
| 39 | 
            -
                        #  | 
| 40 | 
            -
                        raise  | 
| 38 | 
            +
                        # Handle any unexpected error and display the error message
         | 
| 39 | 
            +
                        raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
         | 
| @@ -1,8 +1,7 @@ | |
| 1 1 | 
             
            from orionis.framework import VERSION
         | 
| 2 | 
            -
            from orionis.luminate.console.register import register
         | 
| 3 2 | 
             
            from orionis.luminate.console.base.command import BaseCommand
         | 
| 3 | 
            +
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisRuntimeError
         | 
| 4 4 |  | 
| 5 | 
            -
            @register.command
         | 
| 6 5 | 
             
            class VersionCommand(BaseCommand):
         | 
| 7 6 | 
             
                """
         | 
| 8 7 | 
             
                Command class to display the current version of the Orionis framework.
         | 
| @@ -35,5 +34,5 @@ class VersionCommand(BaseCommand): | |
| 35 34 |  | 
| 36 35 | 
             
                    except Exception as e:
         | 
| 37 36 |  | 
| 38 | 
            -
                        #  | 
| 39 | 
            -
                        raise  | 
| 37 | 
            +
                        # Handle any unexpected error and display the error message
         | 
| 38 | 
            +
                        raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
         | 
| @@ -125,3 +125,46 @@ class CLIOrionisScheduleException(Exception): | |
| 125 125 | 
             
                        A string containing the exception name and the response message.
         | 
| 126 126 | 
             
                    """
         | 
| 127 127 | 
             
                    return f"[CLIOrionisScheduleException]: {self.args[0]}"
         | 
| 128 | 
            +
             | 
| 129 | 
            +
             | 
| 130 | 
            +
            class CLIOrionisRuntimeError(RuntimeError):
         | 
| 131 | 
            +
                """
         | 
| 132 | 
            +
                Custom exception raised when there is a runtime issue with Orionis processing.
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                Parameters
         | 
| 135 | 
            +
                ----------
         | 
| 136 | 
            +
                message : str
         | 
| 137 | 
            +
                    The response message associated with the exception.
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                Attributes
         | 
| 140 | 
            +
                ----------
         | 
| 141 | 
            +
                message : str
         | 
| 142 | 
            +
                    Stores the response message passed during initialization.
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                Methods
         | 
| 145 | 
            +
                -------
         | 
| 146 | 
            +
                __str__()
         | 
| 147 | 
            +
                    Returns a string representation of the exception, including the response message.
         | 
| 148 | 
            +
                """
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                def __init__(self, message: str):
         | 
| 151 | 
            +
                    """
         | 
| 152 | 
            +
                    Initializes the CLIOrionisRuntimeError with the given response message.
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                    Parameters
         | 
| 155 | 
            +
                    ----------
         | 
| 156 | 
            +
                    message : str
         | 
| 157 | 
            +
                        The response message associated with the exception.
         | 
| 158 | 
            +
                    """
         | 
| 159 | 
            +
                    super().__init__(message)
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                def __str__(self):
         | 
| 162 | 
            +
                    """
         | 
| 163 | 
            +
                    Returns a string representation of the exception, including the response message.
         | 
| 164 | 
            +
             | 
| 165 | 
            +
                    Returns
         | 
| 166 | 
            +
                    -------
         | 
| 167 | 
            +
                    str
         | 
| 168 | 
            +
                        A string containing the exception name and the response message.
         | 
| 169 | 
            +
                    """
         | 
| 170 | 
            +
                    return f"[CLIOrionisRuntimeError]: {self.args[0]}"
         | 
| @@ -3,7 +3,7 @@ import sys | |
| 3 3 | 
             
            import getpass
         | 
| 4 4 | 
             
            import datetime
         | 
| 5 5 | 
             
            from orionis.luminate.console.output.styles import ANSIColors
         | 
| 6 | 
            -
            from orionis.luminate.contracts.console.console_interface import IConsole
         | 
| 6 | 
            +
            from orionis.luminate.contracts.console.output.console_interface import IConsole
         | 
| 7 7 |  | 
| 8 8 | 
             
            class Console(IConsole):
         | 
| 9 9 | 
             
                """
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            from datetime import datetime
         | 
| 2 2 | 
             
            from orionis.luminate.console.output.styles import ANSIColors
         | 
| 3 | 
            -
            from orionis.luminate.contracts.console.executor_interface import IExecutor
         | 
| 3 | 
            +
            from orionis.luminate.contracts.console.output.executor_interface import IExecutor
         | 
| 4 4 |  | 
| 5 5 | 
             
            class Executor(IExecutor):
         | 
| 6 6 | 
             
                """
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            from orionis.luminate.installer.setup import Setup
         | 
| 2 2 | 
             
            from orionis.luminate.installer.output import Output
         | 
| 3 3 | 
             
            from orionis.luminate.installer.upgrade import Upgrade
         | 
| 4 | 
            -
            from orionis.luminate.contracts.console.management_interface import IManagement
         | 
| 4 | 
            +
            from orionis.luminate.contracts.console.scripts.management_interface import IManagement
         | 
| 5 5 |  | 
| 6 6 | 
             
            class Management(IManagement):
         | 
| 7 7 | 
             
                """
         | 
| @@ -8,7 +8,7 @@ from apscheduler.triggers.cron import CronTrigger | |
| 8 8 | 
             
            from orionis.luminate.console.command import Command
         | 
| 9 9 | 
             
            from apscheduler.triggers.interval import IntervalTrigger
         | 
| 10 10 | 
             
            from apscheduler.schedulers.background import BackgroundScheduler
         | 
| 11 | 
            -
            from orionis.luminate.contracts.console.schedule_interface import ISchedule
         | 
| 11 | 
            +
            from orionis.luminate.contracts.console.tasks.schedule_interface import ISchedule
         | 
| 12 12 | 
             
            from orionis.luminate.console.exceptions.cli_exception import CLIOrionisScheduleException
         | 
| 13 13 |  | 
| 14 14 | 
             
            class Schedule(ISchedule):
         | 
| @@ -64,10 +64,7 @@ class Container(IContainer): | |
| 64 64 | 
             
                        If the class is defined in the main module.
         | 
| 65 65 | 
             
                    """
         | 
| 66 66 | 
             
                    if concrete.__module__ == "__main__":
         | 
| 67 | 
            -
                        raise OrionisContainerValueError(
         | 
| 68 | 
            -
                            "Cannot register a class from the main module in the container."
         | 
| 69 | 
            -
                        )
         | 
| 70 | 
            -
                    return f"{concrete.__module__}.{concrete.__name__}"
         | 
| 67 | 
            +
                        raise OrionisContainerValueError("Cannot register a class from the main module in the container.")
         | 
| 71 68 |  | 
| 72 69 | 
             
                def _ensureUniqueService(self, obj: Any) -> None:
         | 
| 73 70 | 
             
                    """
         | 
| @@ -101,9 +98,7 @@ class Container(IContainer): | |
| 101 98 | 
             
                        If the implementation is not callable.
         | 
| 102 99 | 
             
                    """
         | 
| 103 100 | 
             
                    if not callable(concrete):
         | 
| 104 | 
            -
                        raise OrionisContainerTypeError(
         | 
| 105 | 
            -
                            f"The implementation '{str(concrete)}' must be callable or an instantiable class."
         | 
| 106 | 
            -
                        )
         | 
| 101 | 
            +
                        raise OrionisContainerTypeError(f"The implementation '{str(concrete)}' must be callable or an instantiable class.")
         | 
| 107 102 |  | 
| 108 103 | 
             
                def _ensureIsInstance(self, instance: Any) -> None:
         | 
| 109 104 | 
             
                    """
         | 
| @@ -120,9 +115,7 @@ class Container(IContainer): | |
| 120 115 | 
             
                        If the instance is not a valid object.
         | 
| 121 116 | 
             
                    """
         | 
| 122 117 | 
             
                    if not isinstance(instance, object) or instance.__class__.__module__ in ['builtins', 'abc']:
         | 
| 123 | 
            -
                        raise OrionisContainerValueError(
         | 
| 124 | 
            -
                            f"The instance '{str(instance)}' must be a valid object."
         | 
| 125 | 
            -
                        )
         | 
| 118 | 
            +
                        raise OrionisContainerValueError(f"The instance '{str(instance)}' must be a valid object.")
         | 
| 126 119 |  | 
| 127 120 | 
             
                def bind(self, concrete: Callable[..., Any]) -> str:
         | 
| 128 121 | 
             
                    """
         | 
| @@ -142,7 +135,7 @@ class Container(IContainer): | |
| 142 135 |  | 
| 143 136 | 
             
                    key = f"{concrete.__module__}.{concrete.__name__}"
         | 
| 144 137 | 
             
                    self._bindings[key] = {
         | 
| 145 | 
            -
                        ' | 
| 138 | 
            +
                        'concrete': concrete,
         | 
| 146 139 | 
             
                        'module': concrete.__module__,
         | 
| 147 140 | 
             
                        'name': concrete.__name__,
         | 
| 148 141 | 
             
                        'type': BINDING
         | 
| @@ -165,7 +158,7 @@ class Container(IContainer): | |
| 165 158 |  | 
| 166 159 | 
             
                    key = f"{concrete.__module__}.{concrete.__name__}"
         | 
| 167 160 | 
             
                    self._transients[key] = {
         | 
| 168 | 
            -
                        ' | 
| 161 | 
            +
                        'concrete': concrete,
         | 
| 169 162 | 
             
                        'module': concrete.__module__,
         | 
| 170 163 | 
             
                        'name': concrete.__name__,
         | 
| 171 164 | 
             
                        'type': TRANSIENT
         | 
| @@ -190,7 +183,7 @@ class Container(IContainer): | |
| 190 183 |  | 
| 191 184 | 
             
                    key = f"{concrete.__module__}.{concrete.__name__}"
         | 
| 192 185 | 
             
                    self._singletons[key] = {
         | 
| 193 | 
            -
                        ' | 
| 186 | 
            +
                        'concrete': concrete,
         | 
| 194 187 | 
             
                        'module': concrete.__module__,
         | 
| 195 188 | 
             
                        'name': concrete.__name__,
         | 
| 196 189 | 
             
                        'type': SINGLETON
         | 
| @@ -215,7 +208,7 @@ class Container(IContainer): | |
| 215 208 |  | 
| 216 209 | 
             
                    key = f"{concrete.__module__}.{concrete.__name__}"
         | 
| 217 210 | 
             
                    self._scoped_services[key] = {
         | 
| 218 | 
            -
                        ' | 
| 211 | 
            +
                        'concrete': concrete,
         | 
| 219 212 | 
             
                        'module': concrete.__module__,
         | 
| 220 213 | 
             
                        'name': concrete.__name__,
         | 
| 221 214 | 
             
                        'type': SCOPED
         | 
| @@ -325,19 +318,19 @@ class Container(IContainer): | |
| 325 318 | 
             
                        return self._instances[key]['instance']
         | 
| 326 319 |  | 
| 327 320 | 
             
                    if key in self._singletons:
         | 
| 328 | 
            -
                        self._instances[key] = {'instance': self._resolve(self._singletons[key][' | 
| 321 | 
            +
                        self._instances[key] = {'instance': self._resolve(self._singletons[key]['concrete'])}
         | 
| 329 322 | 
             
                        return self._instances[key]['instance']
         | 
| 330 323 |  | 
| 331 324 | 
             
                    if key in self._scoped_services:
         | 
| 332 325 | 
             
                        if key not in self._scoped_instances:
         | 
| 333 | 
            -
                            self._scoped_instances[key] = self._resolve(self._scoped_services[key][' | 
| 326 | 
            +
                            self._scoped_instances[key] = self._resolve(self._scoped_services[key]['concrete'])
         | 
| 334 327 | 
             
                        return self._scoped_instances[key]
         | 
| 335 328 |  | 
| 336 329 | 
             
                    if key in self._transients:
         | 
| 337 | 
            -
                        return self._resolve(self._transients[key][' | 
| 330 | 
            +
                        return self._resolve(self._transients[key]['concrete'])
         | 
| 338 331 |  | 
| 339 332 | 
             
                    if key in self._bindings:
         | 
| 340 | 
            -
                        return self._resolve(self._bindings[key][' | 
| 333 | 
            +
                        return self._resolve(self._bindings[key]['concrete'])
         | 
| 341 334 |  | 
| 342 335 | 
             
                    raise OrionisContainerException(f"Service '{abstract}' is not registered in the container.")
         | 
| 343 336 |  | 
| @@ -362,8 +355,9 @@ class Container(IContainer): | |
| 362 355 |  | 
| 363 356 | 
             
                    # Step 3: Iterate through the parameters of the constructor.
         | 
| 364 357 | 
             
                    for param_name, param in signature.parameters.items():
         | 
| 358 | 
            +
             | 
| 359 | 
            +
                        # Skip 'self' in methods
         | 
| 365 360 | 
             
                        if param_name == 'self':
         | 
| 366 | 
            -
                            # Skip 'self' in methods
         | 
| 367 361 | 
             
                            continue
         | 
| 368 362 |  | 
| 369 363 | 
             
                        # If parameter has no annotation and no default value, it's unresolved
         | 
| @@ -374,15 +368,19 @@ class Container(IContainer): | |
| 374 368 | 
             
                        # Resolve dependencies based on annotations (excluding primitive types)
         | 
| 375 369 | 
             
                        if param.annotation is not param.empty:
         | 
| 376 370 | 
             
                            param_type = param.annotation
         | 
| 371 | 
            +
             | 
| 377 372 | 
             
                            # Check if it's a registered service, if so, resolve it through the container
         | 
| 378 373 | 
             
                            if isinstance(param_type, type) and not isinstance(param_type, (int, str, bool, float)) and not issubclass(param_type, (int, str, bool, float)):
         | 
| 374 | 
            +
             | 
| 379 375 | 
             
                                # Check if the service is registered in the container
         | 
| 380 376 | 
             
                                if self.has(param_type):
         | 
| 381 377 | 
             
                                    resolved_dependencies[param_name] = self.make(f"{param_type.__module__}.{param_type.__name__}")
         | 
| 382 378 | 
             
                                else:
         | 
| 383 379 | 
             
                                    resolved_dependencies[param_name] = self._resolve_dependency(param_type)
         | 
| 384 380 | 
             
                            else:
         | 
| 385 | 
            -
             | 
| 381 | 
            +
             | 
| 382 | 
            +
                                # It's a primitive, use as-is
         | 
| 383 | 
            +
                                resolved_dependencies[param_name] = param_type
         | 
| 386 384 |  | 
| 387 385 | 
             
                        # Resolve parameters with default values (without annotations)
         | 
| 388 386 | 
             
                        elif param.default is not param.empty:
         | 
| @@ -407,8 +405,7 @@ class Container(IContainer): | |
| 407 405 | 
             
                    This method looks for the type in the container and returns the instance,
         | 
| 408 406 | 
             
                    respecting the lifecycle of the service (transient, singleton, etc.).
         | 
| 409 407 | 
             
                    """
         | 
| 410 | 
            -
                    # Check if the dependency exists in the container or create it if necessary
         | 
| 411 | 
            -
                    # If it's a class type
         | 
| 408 | 
            +
                    # Check if the dependency exists in the container or create it if necessary, If it's a class type
         | 
| 412 409 | 
             
                    if isinstance(dep_type, type):
         | 
| 413 410 | 
             
                        if self.has(dep_type):
         | 
| 414 411 | 
             
                            # Resolves the service through the container
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            from abc import ABC, abstractmethod
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class IBootstrapper(ABC):
         | 
| 4 | 
            +
                """
         | 
| 5 | 
            +
                Manages the automatic loading and registration of command classes
         | 
| 6 | 
            +
                from Python files located in predefined directories.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                The `Bootstrapper` class scans specific directories for Python files, dynamically
         | 
| 9 | 
            +
                imports them, and registers classes that inherit from `BaseCommand`.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                Attributes
         | 
| 12 | 
            +
                ----------
         | 
| 13 | 
            +
                register : Register
         | 
| 14 | 
            +
                    An instance of the `Register` class used to register command classes.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                Methods
         | 
| 17 | 
            +
                -------
         | 
| 18 | 
            +
                __init__(register: Register) -> None
         | 
| 19 | 
            +
                    Initializes the `Bootstrapper` with a `Register` instance and triggers autoloading.
         | 
| 20 | 
            +
                _autoload() -> None
         | 
| 21 | 
            +
                    Scans predefined directories for Python files, dynamically imports modules,
         | 
| 22 | 
            +
                    and registers classes that extend `BaseCommand`.
         | 
| 23 | 
            +
                """
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                @abstractmethod
         | 
| 26 | 
            +
                def _autoload(self) -> None:
         | 
| 27 | 
            +
                    """
         | 
| 28 | 
            +
                    Autoloads command modules from specified directories and registers command classes.
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    This method searches for Python files in the predefined command directories,
         | 
| 31 | 
            +
                    dynamically imports the modules, and registers classes that inherit from `BaseCommand`.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    The command directories searched are:
         | 
| 34 | 
            +
                    - `app/console/commands` relative to the current working directory.
         | 
| 35 | 
            +
                    - `console/commands` relative to the parent directory of the current file.
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    It skips `__init__.py` files and ignores directories that do not exist.
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    Raises
         | 
| 40 | 
            +
                    ------
         | 
| 41 | 
            +
                    BootstrapRuntimeError
         | 
| 42 | 
            +
                        If an error occurs while loading a module.
         | 
| 43 | 
            +
                    """
         | 
| 44 | 
            +
                    pass
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            from abc import ABC, abstractmethod
         | 
| 2 | 
            +
            from typing import Any, Callable
         | 
| 2 3 |  | 
| 3 4 | 
             
            class IRegister(ABC):
         | 
| 4 5 | 
             
                """
         | 
| @@ -6,7 +7,7 @@ class IRegister(ABC): | |
| 6 7 | 
             
                """
         | 
| 7 8 |  | 
| 8 9 | 
             
                @abstractmethod
         | 
| 9 | 
            -
                def command(self, command_class):
         | 
| 10 | 
            +
                def command(self, command_class: Callable[..., Any]) -> None:
         | 
| 10 11 | 
             
                    """
         | 
| 11 12 | 
             
                    Registers a command class after validating its structure.
         | 
| 12 13 |  | 
| @@ -0,0 +1,76 @@ | |
| 1 | 
            +
            from abc import ABC, abstractmethod
         | 
| 2 | 
            +
            from typing import Dict, Any
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class ICacheConfig(ABC):
         | 
| 5 | 
            +
                """
         | 
| 6 | 
            +
                CacheConfig is a class that manages the registration, unregistration, and retrieval of configuration sections.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                Methods
         | 
| 9 | 
            +
                -------
         | 
| 10 | 
            +
                __init__()
         | 
| 11 | 
            +
                    Initializes a new instance of the class with an empty configuration dictionary.
         | 
| 12 | 
            +
                register(section: str, data: Dict[str, Any])
         | 
| 13 | 
            +
                    Registers a configuration section with its associated data.
         | 
| 14 | 
            +
                unregister(section: str)
         | 
| 15 | 
            +
                    Unregisters a previously registered configuration section.
         | 
| 16 | 
            +
                get(section: str)
         | 
| 17 | 
            +
                    Retrieves the configuration data for a specific section.
         | 
| 18 | 
            +
                """
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                @abstractmethod
         | 
| 21 | 
            +
                def register(self, section: str, data: Dict[str, Any]) -> None:
         | 
| 22 | 
            +
                    """
         | 
| 23 | 
            +
                    Registers a configuration section.
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    Parameters
         | 
| 26 | 
            +
                    ----------
         | 
| 27 | 
            +
                    section : str
         | 
| 28 | 
            +
                        The name of the configuration section to register.
         | 
| 29 | 
            +
                    data : dict
         | 
| 30 | 
            +
                        The configuration data associated with the section.
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    Raises
         | 
| 33 | 
            +
                    ------
         | 
| 34 | 
            +
                    ValueError
         | 
| 35 | 
            +
                        If the section is already registered.
         | 
| 36 | 
            +
                    """
         | 
| 37 | 
            +
                    pass
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                @abstractmethod
         | 
| 40 | 
            +
                def unregister(self, section: str) -> None:
         | 
| 41 | 
            +
                    """
         | 
| 42 | 
            +
                    Unregisters a previously registered configuration section.
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    Parameters
         | 
| 45 | 
            +
                    ----------
         | 
| 46 | 
            +
                    section : str
         | 
| 47 | 
            +
                        The name of the configuration section to remove.
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    Raises
         | 
| 50 | 
            +
                    ------
         | 
| 51 | 
            +
                    KeyError
         | 
| 52 | 
            +
                        If the section is not found in the registered configurations.
         | 
| 53 | 
            +
                    """
         | 
| 54 | 
            +
                    pass
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                @abstractmethod
         | 
| 57 | 
            +
                def get(self, section: str) -> Dict[str, Any]:
         | 
| 58 | 
            +
                    """
         | 
| 59 | 
            +
                    Retrieves the configuration for a specific section.
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    Parameters
         | 
| 62 | 
            +
                    ----------
         | 
| 63 | 
            +
                    section : str
         | 
| 64 | 
            +
                        The name of the configuration section to retrieve.
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    Returns
         | 
| 67 | 
            +
                    -------
         | 
| 68 | 
            +
                    dict
         | 
| 69 | 
            +
                        The configuration data for the specified section.
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    Raises
         | 
| 72 | 
            +
                    ------
         | 
| 73 | 
            +
                    KeyError
         | 
| 74 | 
            +
                        If the requested section is not found.
         | 
| 75 | 
            +
                    """
         | 
| 76 | 
            +
                    pass
         | 
    
        orionis/luminate/contracts/cache/{cache_commands_interface.py → console/commands_interface.py}
    RENAMED
    
    | @@ -1,15 +1,24 @@ | |
| 1 1 | 
             
            from abc import ABC, abstractmethod
         | 
| 2 | 
            +
            from typing import Any, Callable
         | 
| 2 3 |  | 
| 3 4 | 
             
            class ICacheCommands(ABC):
         | 
| 4 5 | 
             
                """
         | 
| 5 | 
            -
                 | 
| 6 | 
            +
                CacheCommands is a class that manages the registration, unregistration, and retrieval of command instances.
         | 
| 6 7 |  | 
| 7 | 
            -
                 | 
| 8 | 
            -
                 | 
| 8 | 
            +
                Methods
         | 
| 9 | 
            +
                -------
         | 
| 10 | 
            +
                __init__()
         | 
| 11 | 
            +
                    Initializes the command cache with an empty dictionary.
         | 
| 12 | 
            +
                register(signature: str, description: str, arguments: list, concrete: Callable[..., Any])
         | 
| 13 | 
            +
                    Register a new command with its signature, description, and class instance.
         | 
| 14 | 
            +
                unregister(signature: str)
         | 
| 15 | 
            +
                    Unregister an existing command by its signature.
         | 
| 16 | 
            +
                get(signature: str)
         | 
| 17 | 
            +
                    Retrieve the information of a registered command by its signature.
         | 
| 9 18 | 
             
                """
         | 
| 10 19 |  | 
| 11 20 | 
             
                @abstractmethod
         | 
| 12 | 
            -
                def register(self, signature: str, description: str,  | 
| 21 | 
            +
                def register(self, signature: str, description: str, arguments: list, concrete: Callable[..., Any]):
         | 
| 13 22 | 
             
                    """
         | 
| 14 23 | 
             
                    Register a new command with its signature, description, and class instance.
         | 
| 15 24 |  | 
| @@ -19,7 +28,7 @@ class ICacheCommands(ABC): | |
| 19 28 | 
             
                        The unique identifier (signature) for the command.
         | 
| 20 29 | 
             
                    description : str
         | 
| 21 30 | 
             
                        A brief description of what the command does.
         | 
| 22 | 
            -
                     | 
| 31 | 
            +
                    concrete : class
         | 
| 23 32 | 
             
                        The class or callable instance that defines the command behavior.
         | 
| 24 33 |  | 
| 25 34 | 
             
                    Raises
         | 
| @@ -1,18 +1,21 @@ | |
| 1 1 | 
             
            orionis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 2 2 | 
             
            orionis/cli_manager.py,sha256=9wNVJxB0HyqUbNesUvkwlsqTyUbZwK6R46iVLE5WVBQ,1715
         | 
| 3 | 
            -
            orionis/framework.py,sha256= | 
| 3 | 
            +
            orionis/framework.py,sha256=YAVaj0HKJgo1NVBMFlLifezZIIm_9SwPXeiVeTOL2Cg,1386
         | 
| 4 4 | 
             
            orionis/luminate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 5 5 | 
             
            orionis/luminate/app.py,sha256=fh5p0w5VBb0zJ6qKNHOCs2vxIix6AborENZFW_GCvrw,152
         | 
| 6 6 | 
             
            orionis/luminate/bootstrap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 7 | 
            +
            orionis/luminate/bootstrap/cli_exception.py,sha256=wDKfEW295c7-bavr7YUHK2CLYcTSZgjT9ZRSBne6GOE,1356
         | 
| 8 | 
            +
            orionis/luminate/bootstrap/commands/bootstrapper.py,sha256=0TtExkxyokfMSooR5-RieOQKiIt8dY_iodT_WA_Ncpc,3874
         | 
| 9 | 
            +
            orionis/luminate/bootstrap/commands/register.py,sha256=YonMvfe1TQBVPLxqM7o7_mYaXPKoXvZNRSsW365uVtM,3734
         | 
| 7 10 | 
             
            orionis/luminate/bootstrap/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 8 | 
            -
            orionis/luminate/bootstrap/config/bootstrapper.py,sha256= | 
| 11 | 
            +
            orionis/luminate/bootstrap/config/bootstrapper.py,sha256=PtmZJIH8sHVOdGIogLlqTuPD0XZvR2DgOnPZDgSng9o,2971
         | 
| 9 12 | 
             
            orionis/luminate/bootstrap/config/parser.py,sha256=Ay8dh3aax9xhVgeLSHT71ubtZJiKAJAP85dLFF7djyA,1950
         | 
| 10 13 | 
             
            orionis/luminate/bootstrap/config/register.py,sha256=uX0XGEWdo3iJou5B96vxvhZEjliTGC1HBaT8w9enMmk,2760
         | 
| 11 14 | 
             
            orionis/luminate/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 12 15 | 
             
            orionis/luminate/cache/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 13 | 
            -
            orionis/luminate/cache/app/config.py,sha256= | 
| 16 | 
            +
            orionis/luminate/cache/app/config.py,sha256=nhw9p7NUAC76Cl7secT5qWT5btRWSWBGHNctS4jxqok,2830
         | 
| 14 17 | 
             
            orionis/luminate/cache/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 15 | 
            -
            orionis/luminate/cache/console/commands.py,sha256= | 
| 18 | 
            +
            orionis/luminate/cache/console/commands.py,sha256=NG-QWcOEC0iWuxwifKt5AeONljQ0JShmQhJhtrWDl_8,3237
         | 
| 16 19 | 
             
            orionis/luminate/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 17 20 | 
             
            orionis/luminate/config/environment.py,sha256=QhiyZNnngh9Ol-SPIHIep4D3YCzVMxoMgCXeJjxV9FU,3301
         | 
| 18 21 | 
             
            orionis/luminate/config/dataclass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| @@ -27,59 +30,59 @@ orionis/luminate/config/dataclass/mail.py,sha256=3iYXG72bXiVns4sEPZ_A3-cGcFjGEGD | |
| 27 30 | 
             
            orionis/luminate/config/dataclass/queue.py,sha256=DYjP5zD09ISsIX117wtOfjiG_iQrcrPoQVeeftmuO3c,1739
         | 
| 28 31 | 
             
            orionis/luminate/config/dataclass/session.py,sha256=7mOC_DfGIBDqAClSiewHoTA9Kht_zdHApvALcZc7cfY,1861
         | 
| 29 32 | 
             
            orionis/luminate/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 30 | 
            -
            orionis/luminate/console/cache.py,sha256= | 
| 33 | 
            +
            orionis/luminate/console/cache.py,sha256=K6imeTG0sWjBHjIt3Zs1O6j9xEN2KUtcqymfUo7OuJA,3316
         | 
| 31 34 | 
             
            orionis/luminate/console/command.py,sha256=bSFFniZds1L_GKPcotfQZlt8m-GKByvfZR1deTMLPb8,1381
         | 
| 32 35 | 
             
            orionis/luminate/console/command_filter.py,sha256=kSyIn2WMKsHdXfOS4EfUVO_sn0LSSU75YXeoIGgI3uk,1352
         | 
| 33 | 
            -
            orionis/luminate/console/kernel.py,sha256= | 
| 36 | 
            +
            orionis/luminate/console/kernel.py,sha256=6WeCLB42dN_vHmvJxX_XdUWPj2tD23oSXJh5DzdivDo,994
         | 
| 34 37 | 
             
            orionis/luminate/console/parser.py,sha256=WXdmaNQElF5revyzPXaKYSQfF6coS7PJ9jE-3SXX7PQ,5596
         | 
| 35 | 
            -
            orionis/luminate/console/register.py,sha256=VXehiDD7nxvDl-XIYzquummeuhz0gQebKi1sGG-QiOU,3793
         | 
| 36 38 | 
             
            orionis/luminate/console/runner.py,sha256=M3S1gtiOldR8TlUCP2ocgeixyahtAieaXegBezG2CF0,4626
         | 
| 37 39 | 
             
            orionis/luminate/console/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 38 | 
            -
            orionis/luminate/console/base/command.py,sha256= | 
| 40 | 
            +
            orionis/luminate/console/base/command.py,sha256=M8mMzH-7CZWOqcLehVVOxAyh6YN5cddc-QbIYjOFjcU,12726
         | 
| 39 41 | 
             
            orionis/luminate/console/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 40 | 
            -
            orionis/luminate/console/commands/cache_clear.py,sha256= | 
| 41 | 
            -
            orionis/luminate/console/commands/help.py,sha256= | 
| 42 | 
            -
            orionis/luminate/console/commands/schedule_work.py,sha256= | 
| 43 | 
            -
            orionis/luminate/console/commands/tests.py,sha256= | 
| 44 | 
            -
            orionis/luminate/console/commands/version.py,sha256= | 
| 42 | 
            +
            orionis/luminate/console/commands/cache_clear.py,sha256=3Hapq-xY85uUkr5gVCmWvkVry5UFDBqIsuXTdG8ehw4,2246
         | 
| 43 | 
            +
            orionis/luminate/console/commands/help.py,sha256=MKPhaQMFSkcBvwtkRguQ9b2ieH02kvCrV0CcSqHLPSE,2058
         | 
| 44 | 
            +
            orionis/luminate/console/commands/schedule_work.py,sha256=OtU1FzvBxITGWr0PvSGrm4QSinnBNwkgRVnN_PpEBs8,1861
         | 
| 45 | 
            +
            orionis/luminate/console/commands/tests.py,sha256=PtXxMmk3380yFVnQqPL13Og_3L6PsEueW4vxqtzKSJA,1424
         | 
| 46 | 
            +
            orionis/luminate/console/commands/version.py,sha256=oM5Vr_2Xc7Eaq6VHbcMaTeteY0cDvdvC_hUoRyzEVMc,1259
         | 
| 45 47 | 
             
            orionis/luminate/console/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 46 | 
            -
            orionis/luminate/console/exceptions/cli_exception.py,sha256= | 
| 48 | 
            +
            orionis/luminate/console/exceptions/cli_exception.py,sha256=QM7tRdPBoo7WdmAb3Zasj8d3429zskftUGYHAvhcnSU,4631
         | 
| 47 49 | 
             
            orionis/luminate/console/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 48 | 
            -
            orionis/luminate/console/output/console.py,sha256= | 
| 49 | 
            -
            orionis/luminate/console/output/executor.py,sha256= | 
| 50 | 
            -
            orionis/luminate/console/output/progress_bar.py,sha256= | 
| 50 | 
            +
            orionis/luminate/console/output/console.py,sha256=KTQKMpVVOdCsGUxrKRSQzlqmz42wwWV-8b14q_mfrYI,14481
         | 
| 51 | 
            +
            orionis/luminate/console/output/executor.py,sha256=J4lmWMRCXW2b5L8PbX31q1fGnnjYZOO93O4rtPyA_0A,3379
         | 
| 52 | 
            +
            orionis/luminate/console/output/progress_bar.py,sha256=YT8Gl-_Zfc3E6foU-Dw7aAndZm4m-xY36G3MpPi3Aj4,3106
         | 
| 51 53 | 
             
            orionis/luminate/console/output/styles.py,sha256=fF_B1kw95lkiLUzq4cjYPppF-sLsx9_qmyhKqoeZrJ0,3604
         | 
| 52 54 | 
             
            orionis/luminate/console/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 53 | 
            -
            orionis/luminate/console/scripts/management.py,sha256= | 
| 55 | 
            +
            orionis/luminate/console/scripts/management.py,sha256=J5gLXtvX8I1zdNk6sa23njR18D5s4LJXZK7ElK0sFzI,2868
         | 
| 54 56 | 
             
            orionis/luminate/console/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 55 | 
            -
            orionis/luminate/console/tasks/scheduler.py,sha256= | 
| 56 | 
            -
            orionis/luminate/container/container.py,sha256= | 
| 57 | 
            +
            orionis/luminate/console/tasks/scheduler.py,sha256=CUmv9ap7zq3IWVTPtpPBZ-x166jsj1e0lTvw3didUQM,22692
         | 
| 58 | 
            +
            orionis/luminate/container/container.py,sha256=GMUsyKmlqzmsjJeMTYlwOzleEBWzTqlEyX-jLtZu9M8,16069
         | 
| 57 59 | 
             
            orionis/luminate/container/exception.py,sha256=ap1SqYEjQEEHXJJTNmL7V1jrmRjgT5_7geZ95MYkhMA,1691
         | 
| 58 60 | 
             
            orionis/luminate/container/types.py,sha256=PbPNOJ8e4SGzCmu-zOmCQmDzt1b9I73v3fw_xzLq9RU,932
         | 
| 59 61 | 
             
            orionis/luminate/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 62 | 
            +
            orionis/luminate/contracts/bootstrap/commands/bootstrapper_interface.py,sha256=z9x6yW205hta-OT1u_CHF0VWHIe0T6M0EWZ5RHHpXLU,1632
         | 
| 63 | 
            +
            orionis/luminate/contracts/bootstrap/commands/register_interface.py,sha256=witwBVJtDPpNRxOWhz1OeDjOnDzp1D_EJSIXa_AcjTg,881
         | 
| 60 64 | 
             
            orionis/luminate/contracts/bootstrap/config/bootstrapper_interface.py,sha256=NQgPgm_vlZna1nPvOaEWWeJC1uzUvoGM8fjVHVE8EtY,1480
         | 
| 61 65 | 
             
            orionis/luminate/contracts/bootstrap/config/parser_interface.py,sha256=7DLnp7yB7edayVkSm-piTi8JSf0QKaYYI82qDZudgM0,1641
         | 
| 62 66 | 
             
            orionis/luminate/contracts/bootstrap/config/register_interface.py,sha256=7kMW04ptvQ51PnprtCIR-iLHljVSGiH58GN493igeuw,1506
         | 
| 63 67 | 
             
            orionis/luminate/contracts/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 64 | 
            -
            orionis/luminate/contracts/cache/ | 
| 68 | 
            +
            orionis/luminate/contracts/cache/app/config_interface.py,sha256=jOD-h6b41GYmIAZ6DO-2MIG4BM8RVoK_kQRPCJPaFjg,2118
         | 
| 69 | 
            +
            orionis/luminate/contracts/cache/console/commands_interface.py,sha256=pmPe22OiWguu-b9s0VcS_e1ryr4I4Dz6H7-mdfnQN40,2407
         | 
| 65 70 | 
             
            orionis/luminate/contracts/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 66 71 | 
             
            orionis/luminate/contracts/config/config_interface.py,sha256=rbeojO2gm8XhSXIPY8EnUt4e0wO633OKF9Nx_tN5y60,785
         | 
| 67 72 | 
             
            orionis/luminate/contracts/config/environment_interface.py,sha256=a59CXhwEzQDnyhmPhsnWGranqFYJV8c5JpA6o6FIya4,1672
         | 
| 68 73 | 
             
            orionis/luminate/contracts/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 69 | 
            -
            orionis/luminate/contracts/console/base_command_interface.py,sha256=Lz0ktEjeXcqU5803BVIDT8H3fhbvfkd3Ngsa561lrZY,12241
         | 
| 70 | 
            -
            orionis/luminate/contracts/console/cli_cache_interface.py,sha256=U39BOuEpneOnBGxrvCCyCy-lYGaCOMiMOTCYzh1xMhg,1160
         | 
| 71 74 | 
             
            orionis/luminate/contracts/console/command_filter_interface.py,sha256=g66AlKNjTyQfdarO23r27nFqwiCnrP6kjaZ7tUGql-c,937
         | 
| 72 75 | 
             
            orionis/luminate/contracts/console/command_interface.py,sha256=B5ete_yox0pcprdL0VmCPgOu3QW9y8vEd2UMOFy8_10,1208
         | 
| 73 | 
            -
            orionis/luminate/contracts/console/console_interface.py,sha256=NL6GsbJy286y0wcWhAhqavC6G2EW_WZJYQdH9wMO8Vc,8517
         | 
| 74 | 
            -
            orionis/luminate/contracts/console/executor_interface.py,sha256=MGMTTPSwF8dgCjHD3A4CKtYDaCcD-KU28dorC61Q04k,1411
         | 
| 75 76 | 
             
            orionis/luminate/contracts/console/kernel_interface.py,sha256=GtiGlWe7EQ9aeChHpQ-GlIJlJ5tEqpZYYkjNcrwXI94,945
         | 
| 76 | 
            -
            orionis/luminate/contracts/console/management_interface.py,sha256=4Zc8da5iz3kHZju61A0krArKVZ5K39B0Imk1GmgTMks,1586
         | 
| 77 77 | 
             
            orionis/luminate/contracts/console/parser_interface.py,sha256=vMmTK0wMfTjt7H-tRf-WRLI8R-ghUzJauctwtgj0jFU,2082
         | 
| 78 | 
            -
            orionis/luminate/contracts/console/progress_bar_interface.py,sha256=sOkQzQsliFemqZHMyzs4fWhNJfXDTk5KH3aExReetSE,1760
         | 
| 79 | 
            -
            orionis/luminate/contracts/console/register_interface.py,sha256=rhHI_as_3yNWtdgQvwJb0NyNUfzAZDCJrqgPgpzjoAQ,819
         | 
| 80 78 | 
             
            orionis/luminate/contracts/console/runner_interface.py,sha256=vWLtMhl0m1T6rfCUHZbxGQJl9ZWTXlp3HjcTfCAztGk,1644
         | 
| 81 | 
            -
            orionis/luminate/contracts/console/schedule_interface.py,sha256=_dsR0gCvJ7_67lwPUAzBwQFHNvWM6jVjcg1EdPqDIIo,10117
         | 
| 82 79 | 
             
            orionis/luminate/contracts/console/task_manager_interface.py,sha256=sOmeifoncpWCG2WYh4q3QZ7M7w7P9Onb3Jxw9X2lpXE,1197
         | 
| 80 | 
            +
            orionis/luminate/contracts/console/base/base_command_interface.py,sha256=Lz0ktEjeXcqU5803BVIDT8H3fhbvfkd3Ngsa561lrZY,12241
         | 
| 81 | 
            +
            orionis/luminate/contracts/console/output/console_interface.py,sha256=NL6GsbJy286y0wcWhAhqavC6G2EW_WZJYQdH9wMO8Vc,8517
         | 
| 82 | 
            +
            orionis/luminate/contracts/console/output/executor_interface.py,sha256=MGMTTPSwF8dgCjHD3A4CKtYDaCcD-KU28dorC61Q04k,1411
         | 
| 83 | 
            +
            orionis/luminate/contracts/console/output/progress_bar_interface.py,sha256=sOkQzQsliFemqZHMyzs4fWhNJfXDTk5KH3aExReetSE,1760
         | 
| 84 | 
            +
            orionis/luminate/contracts/console/scripts/management_interface.py,sha256=4Zc8da5iz3kHZju61A0krArKVZ5K39B0Imk1GmgTMks,1586
         | 
| 85 | 
            +
            orionis/luminate/contracts/console/tasks/schedule_interface.py,sha256=_dsR0gCvJ7_67lwPUAzBwQFHNvWM6jVjcg1EdPqDIIo,10117
         | 
| 83 86 | 
             
            orionis/luminate/contracts/container/container_interface.py,sha256=c_QRQHXGIujiDnYXyt--3J2LKXngVtoB3O-qchPmFDQ,6899
         | 
| 84 87 | 
             
            orionis/luminate/contracts/container/types_interface.py,sha256=GCH7x3PjpXKPET3l84GcXbcM8cpne8AGrmTw-uFaT24,526
         | 
| 85 88 | 
             
            orionis/luminate/contracts/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| @@ -140,9 +143,9 @@ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 | |
| 140 143 | 
             
            tests/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 141 144 | 
             
            tests/tools/class_example.py,sha256=dIPD997Y15n6WmKhWoOFSwEldRm9MdOHTZZ49eF1p3c,1056
         | 
| 142 145 | 
             
            tests/tools/test_reflection.py,sha256=dNN5p_xAosyEf0ddAElmmmTfhcTtBd4zBNl7qzgnsc0,5242
         | 
| 143 | 
            -
            orionis-0. | 
| 144 | 
            -
            orionis-0. | 
| 145 | 
            -
            orionis-0. | 
| 146 | 
            -
            orionis-0. | 
| 147 | 
            -
            orionis-0. | 
| 148 | 
            -
            orionis-0. | 
| 146 | 
            +
            orionis-0.27.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
         | 
| 147 | 
            +
            orionis-0.27.0.dist-info/METADATA,sha256=DwS_1R60RwWhZk4NtiMg9I7rfxNxrAyuk7XhL-Dm0Qo,2978
         | 
| 148 | 
            +
            orionis-0.27.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
         | 
| 149 | 
            +
            orionis-0.27.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
         | 
| 150 | 
            +
            orionis-0.27.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
         | 
| 151 | 
            +
            orionis-0.27.0.dist-info/RECORD,,
         | 
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            from abc import ABC, abstractmethod
         | 
| 2 | 
            -
            from orionis.luminate.cache.console.commands import CacheCommands
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            class ICLICache(ABC):
         | 
| 5 | 
            -
                """
         | 
| 6 | 
            -
                Interface for CLICache, defining the required methods for managing command caching.
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                This interface enforces a contract for any class that implements caching functionality
         | 
| 9 | 
            -
                for command execution within the framework.
         | 
| 10 | 
            -
                """
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                @abstractmethod
         | 
| 13 | 
            -
                def _load_commands(self) -> None:
         | 
| 14 | 
            -
                    """
         | 
| 15 | 
            -
                    Loads command modules from predefined directories.
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                    This method should traverse specified directories, locate Python files, and import them dynamically.
         | 
| 18 | 
            -
                    Implementations should ensure that only relevant directories are processed.
         | 
| 19 | 
            -
                    """
         | 
| 20 | 
            -
                    pass
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                @abstractmethod
         | 
| 23 | 
            -
                def getCommands(self) -> CacheCommands:
         | 
| 24 | 
            -
                    """
         | 
| 25 | 
            -
                    Returns the instance of CacheCommands containing the command cache.
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    This method provides access to the CacheCommands instance, which holds the cached commands.
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                    Returns
         | 
| 30 | 
            -
                    -------
         | 
| 31 | 
            -
                    CacheCommands
         | 
| 32 | 
            -
                        The instance of CacheCommands that holds the cached commands.
         | 
| 33 | 
            -
                    """
         | 
| 34 | 
            -
                    pass
         | 
    
        /orionis/luminate/contracts/console/{base_command_interface.py → base/base_command_interface.py}
    RENAMED
    
    | 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        /orionis/luminate/contracts/console/{progress_bar_interface.py → output/progress_bar_interface.py}
    RENAMED
    
    | 
            File without changes
         | 
    
        /orionis/luminate/contracts/console/{management_interface.py → scripts/management_interface.py}
    RENAMED
    
    | 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |