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.
Files changed (39) hide show
  1. orionis/framework.py +1 -1
  2. orionis/luminate/bootstrap/cli_exception.py +54 -0
  3. orionis/luminate/bootstrap/commands/bootstrapper.py +99 -0
  4. orionis/luminate/{console → bootstrap/commands}/register.py +7 -13
  5. orionis/luminate/bootstrap/config/bootstrapper.py +2 -1
  6. orionis/luminate/cache/app/config.py +14 -7
  7. orionis/luminate/cache/console/commands.py +20 -21
  8. orionis/luminate/console/base/command.py +1 -1
  9. orionis/luminate/console/cache.py +12 -57
  10. orionis/luminate/console/commands/cache_clear.py +3 -4
  11. orionis/luminate/console/commands/help.py +3 -4
  12. orionis/luminate/console/commands/schedule_work.py +3 -4
  13. orionis/luminate/console/commands/tests.py +3 -4
  14. orionis/luminate/console/commands/version.py +3 -4
  15. orionis/luminate/console/exceptions/cli_exception.py +43 -0
  16. orionis/luminate/console/kernel.py +1 -1
  17. orionis/luminate/console/output/console.py +1 -1
  18. orionis/luminate/console/output/executor.py +1 -1
  19. orionis/luminate/console/output/progress_bar.py +1 -1
  20. orionis/luminate/console/scripts/management.py +1 -1
  21. orionis/luminate/console/tasks/scheduler.py +1 -1
  22. orionis/luminate/container/container.py +19 -22
  23. orionis/luminate/contracts/bootstrap/commands/bootstrapper_interface.py +44 -0
  24. orionis/luminate/contracts/{console → bootstrap/commands}/register_interface.py +2 -1
  25. orionis/luminate/contracts/cache/app/config_interface.py +76 -0
  26. orionis/luminate/contracts/cache/{cache_commands_interface.py → console/commands_interface.py} +14 -5
  27. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/METADATA +1 -1
  28. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/RECORD +38 -35
  29. orionis/luminate/contracts/console/cli_cache_interface.py +0 -34
  30. /orionis/luminate/contracts/console/{base_command_interface.py → base/base_command_interface.py} +0 -0
  31. /orionis/luminate/contracts/console/{console_interface.py → output/console_interface.py} +0 -0
  32. /orionis/luminate/contracts/console/{executor_interface.py → output/executor_interface.py} +0 -0
  33. /orionis/luminate/contracts/console/{progress_bar_interface.py → output/progress_bar_interface.py} +0 -0
  34. /orionis/luminate/contracts/console/{management_interface.py → scripts/management_interface.py} +0 -0
  35. /orionis/luminate/contracts/console/{schedule_interface.py → tasks/schedule_interface.py} +0 -0
  36. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/LICENCE +0 -0
  37. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/WHEEL +0 -0
  38. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/entry_points.txt +0 -0
  39. {orionis-0.25.0.dist-info → orionis-0.27.0.dist-info}/top_level.txt +0 -0
orionis/framework.py CHANGED
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.25.0"
8
+ VERSION = "0.27.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -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.console.register_interface import IRegister
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 = None):
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 or CacheCommands()
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
- instance=command_class,
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 RuntimeError(f"Error loading module {module_path}") from e
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
- This class ensures that configuration sections are registered only once
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
- Attributes
9
- ----------
10
- config : dict
11
- A dictionary storing registered configuration sections.
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 orionis.luminate.contracts.cache.cache_commands_interface import ICacheCommands
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
- Singleton class for managing a cache of commands.
6
+ CacheCommands is a class that manages the registration, unregistration, and retrieval of command instances.
6
7
 
7
- This class ensures that only one instance of the command cache exists
8
- and provides methods for registering, unregistering, and retrieving commands.
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
- _instance = None
20
+ def __init__(self):
12
21
 
13
- def __new__(cls, *args, **kwargs):
14
22
  """
15
- Create or return the singleton instance of the CacheCommands class.
23
+ Initializes the command cache.
16
24
 
17
- Ensures that only one instance of the CacheCommands class exists
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
- if cls._instance is None:
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, instance):
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
- instance : class
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
- 'instance':instance,
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(ICLICache):
4
+ class CLICache:
8
5
  """
9
- Singleton class responsible for managing the loading and execution of commands within the framework.
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. It is designed to follow
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
- # Use Reflection to load the module dynamically
118
- Reflection(module=module_path)
76
+ # Remove the '.py' extension
77
+ module_name = file[:-3]
119
78
 
120
- def getCommands(self):
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
- This method provides access to the CacheCommands instance, which holds the loaded commands cache
125
- and makes it available for use.
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
- Returns
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.', timestamp=True)
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 RuntimeError(f"An unexpected error occurred while clearing the cache: {e}") from e
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
- # Raise a ValueError if an unexpected error occurs.
59
- raise ValueError(f"An unexpected error occurred: {e}") from e
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
- # Raise a RuntimeError if an unexpected error occurs.
50
- raise RuntimeError(f"An unexpected error occurred: {e}") from e
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
- # Raise a ValueError if an unexpected error occurs.
40
- raise ValueError(f"An unexpected error occurred: {e}") from e
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
- # Raise a ValueError if an unexpected error occurs.
39
- raise ValueError(f"An unexpected error occurred: {e}") from e
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]}"
@@ -1,4 +1,4 @@
1
- from typing import Any, Tuple
1
+ from typing import Any
2
2
  from orionis.luminate.console.runner import CLIRunner
3
3
  from orionis.luminate.contracts.console.kernel_interface import ICLIKernel
4
4
 
@@ -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,5 +1,5 @@
1
1
  import sys
2
- from orionis.luminate.contracts.console.progress_bar_interface import IProgressBar
2
+ from orionis.luminate.contracts.console.output.progress_bar_interface import IProgressBar
3
3
 
4
4
  class ProgressBar(IProgressBar):
5
5
  """
@@ -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
- 'callback': concrete,
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
- 'callback': concrete,
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
- 'callback': concrete,
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
- 'callback': concrete,
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]['callback'])}
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]['callback'])
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]['callback'])
330
+ return self._resolve(self._transients[key]['concrete'])
338
331
 
339
332
  if key in self._bindings:
340
- return self._resolve(self._bindings[key]['callback'])
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
- resolved_dependencies[param_name] = param_type # It's a primitive, use as-is
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
@@ -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
- Interface for managing a cache of commands.
6
+ CacheCommands is a class that manages the registration, unregistration, and retrieval of command instances.
6
7
 
7
- This interface ensures that any class implementing it will provide methods
8
- for registering, unregistering, and retrieving commands.
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, instance):
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
- instance : class
31
+ concrete : class
23
32
  The class or callable instance that defines the command behavior.
24
33
 
25
34
  Raises
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.25.0
3
+ Version: 0.27.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -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=JL7FniIVyW5QSVrlB6akv6ab_R3Dg9VMrjitULOWw1U,1386
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=LKLBAKkawuJq7r0dGvhuox0PxicEuLVA0tvlDjf9lL8,2886
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=NhZ_unGGDA7xpng317325uUVGTGL5ya_m7Mu6xZIPXg,2454
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=hDwGT4DhMnV4LM35CX7L-E5c_cCHn4TLVkgdXvJ3wFg,3181
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=GuiCYaiU8fHTcPZauSOJJeXbRM6aau2PmDuJ00uD8kA,5125
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=czK_4PuBfVjkpauKlJf6CiuoFixOlbFbp7vPG9hdZN4,1001
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=erOKO2HdsTNS8AbLIw7fc9UulB73hZL82p3QZp4RzD8,12721
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=AgtLFR1uegmTQz5s2Qcd3ZkIDYL5K0B-P_YuwJw9_Uc,2241
41
- orionis/luminate/console/commands/help.py,sha256=r0vmNVLycAk7s5Q3xAlIhhqrKzkwtGYTEqhTFZCHYfQ,2027
42
- orionis/luminate/console/commands/schedule_work.py,sha256=J-2SsG2wyN3_F_d5ZzK7Ysdz2UrGaOE_qkxhZ9OuaKU,1834
43
- orionis/luminate/console/commands/tests.py,sha256=eRP5fXIqvn2a7saZI_eHOJRbnG6dgDCJVdNz92Gmmxs,1393
44
- orionis/luminate/console/commands/version.py,sha256=Do9_eHxSlegkeUv-uquxd3JcGTTx3tAoNv1lTUZCmPw,1228
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=I0brj4041CCgqtu4knH5NSHZVN3BPg0pxtbUx5cbTdA,3469
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=zPZJkRCv1cOn1OYNoGrEW6chMVUhkrZ_qTg2MkD2vTA,14474
49
- orionis/luminate/console/output/executor.py,sha256=YkgRNGVnSPI5oPrJ2WbFU_1433BMt0PrrjlbppsnqHg,3372
50
- orionis/luminate/console/output/progress_bar.py,sha256=E1ULCKB6GmnIuVN6atsrCwZ9ClRsG6-xFlp8yoczmaQ,3099
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=KT6Bg8kyuUw63SNAtZo6tLH6syOEkxM9J70tCpKgrUw,2860
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=h3fRVTx6TuZVcY7zZ6oOzGDnlDAWaRwkj92pFTGUm6E,22686
56
- orionis/luminate/container/container.py,sha256=O4AKaRQK2XfN0es70lIxUGkP0mxxemSsHOOuvtJVcUU,16212
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/cache_commands_interface.py,sha256=NhJAh2OZHXKMwbJ8nOU4IFJRZpuJNmfN9rtnpbCnuOo,1936
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.25.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
144
- orionis-0.25.0.dist-info/METADATA,sha256=s7HOpnk0ZRCx-o1hYhXR3FMsACDTJIWTev4Wm6A12cM,2978
145
- orionis-0.25.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
146
- orionis-0.25.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
147
- orionis-0.25.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
148
- orionis-0.25.0.dist-info/RECORD,,
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