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
|