orionis 0.102.0__py3-none-any.whl → 0.105.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/contracts/container/i_container.py +17 -0
- orionis/contracts/foundation/config/__init__.py +0 -0
- orionis/contracts/foundation/console/__init__.py +0 -0
- orionis/contracts/foundation/environment/__init__.py +0 -0
- orionis/contracts/foundation/i_bootstraper.py +41 -0
- orionis/contracts/foundation/providers/__init__.py +0 -0
- orionis/contracts/foundation/providers/i_service_providers_bootstrapper.py +59 -0
- orionis/framework.py +1 -1
- orionis/luminate/app.py +106 -76
- orionis/luminate/container/container.py +16 -0
- orionis/luminate/foundation/__init__.py +0 -0
- orionis/luminate/foundation/config/__init__.py +0 -0
- orionis/luminate/{bootstrap → foundation/config}/config_bootstrapper.py +2 -2
- orionis/luminate/foundation/console/__init__.py +0 -0
- orionis/luminate/{bootstrap → foundation/console}/command_bootstrapper.py +3 -3
- orionis/luminate/foundation/environment/__init__.py +0 -0
- orionis/luminate/{bootstrap → foundation/environment}/environment_bootstrapper.py +1 -1
- orionis/luminate/foundation/exceptions/__init__.py +0 -0
- orionis/luminate/foundation/providers/__init__.py +0 -0
- orionis/luminate/foundation/providers/service_providers_bootstrapper.py +98 -0
- orionis/luminate/providers/environment/environment__service_provider.py +6 -0
- orionis/luminate/providers/files/__init__.py +0 -0
- orionis/luminate/providers/files/paths_provider.py +21 -0
- orionis/luminate/providers/service_provider.py +4 -0
- orionis/luminate/services/commands/reactor_commands_service.py +1 -1
- orionis/luminate/services/config/config_service.py +1 -1
- orionis/luminate/services/files/path_resolver_service.py +7 -15
- orionis/luminate/services/log/log_service.py +7 -2
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/METADATA +1 -1
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/RECORD +39 -25
- orionis/luminate/bootstrap/service_providers_bootstrapper.py +0 -10
- /orionis/{luminate/bootstrap → contracts/foundation}/__init__.py +0 -0
- /orionis/contracts/{bootstrap → foundation/config}/i_config_bootstrapper.py +0 -0
- /orionis/contracts/{bootstrap → foundation/console}/i_command_bootstrapper.py +0 -0
- /orionis/contracts/{bootstrap → foundation/environment}/i_environment_bootstrapper.py +0 -0
- /orionis/luminate/{bootstrap → foundation/exceptions}/exception_bootstrapper.py +0 -0
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/LICENCE +0 -0
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/WHEEL +0 -0
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/entry_points.txt +0 -0
- {orionis-0.102.0.dist-info → orionis-0.105.0.dist-info}/top_level.txt +0 -0
@@ -178,6 +178,23 @@ class IContainer(ABC):
|
|
178
178
|
"""
|
179
179
|
pass
|
180
180
|
|
181
|
+
@abstractmethod
|
182
|
+
def bound(self, abstract: Any) -> bool:
|
183
|
+
"""
|
184
|
+
Checks if a service is bound in the container.
|
185
|
+
|
186
|
+
Parameters
|
187
|
+
----------
|
188
|
+
abstract : Any
|
189
|
+
The service class or alias to check.
|
190
|
+
|
191
|
+
Returns
|
192
|
+
-------
|
193
|
+
bool
|
194
|
+
True if the service is bound, False otherwise.
|
195
|
+
"""
|
196
|
+
pass
|
197
|
+
|
181
198
|
@abstractmethod
|
182
199
|
def make(self, abstract: Any) -> Any:
|
183
200
|
"""
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,41 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
class IBootstrapper(ABC):
|
5
|
+
|
6
|
+
@abstractmethod
|
7
|
+
def _autoload(self) -> None:
|
8
|
+
"""
|
9
|
+
Loads environment variables from the `.env` file or creates the file if it does not exist.
|
10
|
+
|
11
|
+
This method checks if the `.env` file exists in the current working directory.
|
12
|
+
If the file does not exist, it creates an empty `.env` file. If the file exists,
|
13
|
+
it loads the environment variables into the `_environment_vars` dictionary.
|
14
|
+
|
15
|
+
Raises
|
16
|
+
------
|
17
|
+
PermissionError
|
18
|
+
If the `.env` file cannot be created or read due to insufficient permissions.
|
19
|
+
"""
|
20
|
+
pass
|
21
|
+
|
22
|
+
def get(self, *args, **kwargs) -> Any:
|
23
|
+
"""
|
24
|
+
Retrieves the value of an environment variable.
|
25
|
+
|
26
|
+
Parameters
|
27
|
+
----------
|
28
|
+
key : str
|
29
|
+
The name of the environment variable.
|
30
|
+
|
31
|
+
Returns
|
32
|
+
-------
|
33
|
+
str
|
34
|
+
The value of the environment variable.
|
35
|
+
|
36
|
+
Raises
|
37
|
+
------
|
38
|
+
KeyError
|
39
|
+
If the environment variable does not exist.
|
40
|
+
"""
|
41
|
+
pass
|
File without changes
|
@@ -0,0 +1,59 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from orionis.luminate.providers.service_provider import ServiceProvider
|
3
|
+
|
4
|
+
class IServiceProvidersBootstrapper(ABC):
|
5
|
+
|
6
|
+
@abstractmethod
|
7
|
+
def _autoload(self) -> None:
|
8
|
+
"""
|
9
|
+
Scans the provider directories and loads provider classes.
|
10
|
+
|
11
|
+
This method searches for Python files in the specified directories, imports them,
|
12
|
+
and registers any class that inherits from `ServiceProvider`.
|
13
|
+
|
14
|
+
Raises
|
15
|
+
------
|
16
|
+
BootstrapRuntimeError
|
17
|
+
If there is an error loading a module.
|
18
|
+
"""
|
19
|
+
pass
|
20
|
+
|
21
|
+
@abstractmethod
|
22
|
+
def _register(self, concrete: ServiceProvider) -> None:
|
23
|
+
"""
|
24
|
+
Validates and registers a service provider class.
|
25
|
+
|
26
|
+
This method ensures that the provided class is valid (inherits from `ServiceProvider`,
|
27
|
+
has a `register` and `boot` method) and registers it in the
|
28
|
+
`_service_providers` dictionary.
|
29
|
+
|
30
|
+
Parameters
|
31
|
+
----------
|
32
|
+
concrete : ServiceProvider
|
33
|
+
The service provider class to register
|
34
|
+
"""
|
35
|
+
pass
|
36
|
+
|
37
|
+
@abstractmethod
|
38
|
+
def getBeforeServiceProviders(self) -> list:
|
39
|
+
"""
|
40
|
+
Retrieve the registered service providers.
|
41
|
+
|
42
|
+
Returns
|
43
|
+
-------
|
44
|
+
list
|
45
|
+
A list of registered service providers
|
46
|
+
"""
|
47
|
+
pass
|
48
|
+
|
49
|
+
@abstractmethod
|
50
|
+
def getAfterServiceProviders(self) -> list:
|
51
|
+
"""
|
52
|
+
Retrieve the registered service providers.
|
53
|
+
|
54
|
+
Returns
|
55
|
+
-------
|
56
|
+
list
|
57
|
+
A list of registered service providers
|
58
|
+
"""
|
59
|
+
pass
|
orionis/framework.py
CHANGED
orionis/luminate/app.py
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
from typing import Any, Callable
|
2
|
+
from orionis.contracts.foundation.i_bootstraper import IBootstrapper
|
3
|
+
from orionis.luminate.console.base.command import BaseCommand
|
2
4
|
from orionis.luminate.container.container import Container
|
3
|
-
from orionis.luminate.
|
4
|
-
from orionis.luminate.
|
5
|
-
from orionis.luminate.
|
5
|
+
from orionis.luminate.foundation.config.config_bootstrapper import ConfigBootstrapper
|
6
|
+
from orionis.luminate.foundation.console.command_bootstrapper import CommandsBootstrapper
|
7
|
+
from orionis.luminate.foundation.environment.environment_bootstrapper import EnvironmentBootstrapper
|
8
|
+
from orionis.luminate.foundation.providers.service_providers_bootstrapper import ServiceProvidersBootstrapper
|
6
9
|
from orionis.luminate.patterns.singleton import SingletonMeta
|
7
10
|
from orionis.luminate.providers.commands.reactor_commands_service_provider import ReactorCommandsServiceProvider
|
8
11
|
from orionis.luminate.providers.commands.scheduler_provider import ScheduleServiceProvider
|
9
12
|
from orionis.luminate.providers.environment.environment__service_provider import EnvironmentServiceProvider
|
10
13
|
from orionis.luminate.providers.config.config_service_provider import ConfigServiceProvider
|
14
|
+
from orionis.luminate.providers.files.paths_provider import PathResolverProvider
|
11
15
|
from orionis.luminate.providers.log.log_service_provider import LogServiceProvider
|
16
|
+
from orionis.luminate.providers.service_provider import ServiceProvider
|
12
17
|
|
13
18
|
class Application(metaclass=SingletonMeta):
|
14
19
|
"""
|
@@ -49,6 +54,8 @@ class Application(metaclass=SingletonMeta):
|
|
49
54
|
The dependency injection container for the application.
|
50
55
|
"""
|
51
56
|
# Class attributes
|
57
|
+
self._before_boot_service_providers: list = []
|
58
|
+
self._after_boot_service_providers: list = []
|
52
59
|
self._config: dict = {}
|
53
60
|
self._commands: dict = {}
|
54
61
|
self._environment_vars: dict = {}
|
@@ -57,7 +64,7 @@ class Application(metaclass=SingletonMeta):
|
|
57
64
|
# Initialize the application container
|
58
65
|
self.container = container
|
59
66
|
self.container.instance(container)
|
60
|
-
self.
|
67
|
+
self._boot()
|
61
68
|
|
62
69
|
def isBooted(self) -> bool:
|
63
70
|
"""
|
@@ -185,95 +192,118 @@ class Application(metaclass=SingletonMeta):
|
|
185
192
|
"""
|
186
193
|
return self.container.forgetScopedInstances()
|
187
194
|
|
188
|
-
def
|
195
|
+
def _boot(self):
|
189
196
|
"""
|
190
|
-
Bootstraps the application.
|
191
|
-
|
192
|
-
|
193
|
-
|
197
|
+
Bootstraps the application by loading environment configuration and core providers.
|
198
|
+
Notes
|
199
|
+
-----
|
200
|
+
The bootstrapping process involves several steps:
|
201
|
+
1. Loading essential services.
|
202
|
+
2. Executing pre-bootstrap provider hooks.
|
203
|
+
3. Initializing core components.
|
204
|
+
4. Executing post-bootstrap provider hooks.
|
205
|
+
5. Loading command-line interface commands.
|
206
|
+
After these steps, the application is marked as booted.
|
194
207
|
"""
|
195
|
-
|
208
|
+
self._bootServices()
|
196
209
|
self._beforeBootstrapProviders()
|
197
|
-
|
198
|
-
# Dynamically load application configuration
|
199
210
|
self._bootstraping()
|
200
|
-
|
201
|
-
# Load core providers
|
202
211
|
self._afterBootstrapProviders()
|
203
|
-
|
204
|
-
# Set the booted flag to True
|
212
|
+
self._loadCommands()
|
205
213
|
self._booted = True
|
206
214
|
|
215
|
+
def _bootServices(self):
|
216
|
+
"""
|
217
|
+
Bootstraps the application services.
|
218
|
+
|
219
|
+
This method is responsible for loading the application's services. It reads all the
|
220
|
+
ServiceProviders from the Core and those defined by the developer. Then, it stores
|
221
|
+
in class dictionaries the services that need to be loaded before and after the Bootstrap.
|
222
|
+
|
223
|
+
Parameters
|
224
|
+
----------
|
225
|
+
None
|
226
|
+
|
227
|
+
Returns
|
228
|
+
-------
|
229
|
+
None
|
230
|
+
"""
|
231
|
+
services_bootstrapper_key = self.singleton(ServiceProvidersBootstrapper)
|
232
|
+
services_bootstrapper: ServiceProvidersBootstrapper = self.make(services_bootstrapper_key)
|
233
|
+
self._before_boot_service_providers = services_bootstrapper.getBeforeServiceProviders()
|
234
|
+
self._after_boot_service_providers = services_bootstrapper.getAfterServiceProviders()
|
235
|
+
|
207
236
|
def _beforeBootstrapProviders(self):
|
208
237
|
"""
|
209
|
-
|
238
|
+
Loads and registers essential services before bootstrapping.
|
210
239
|
|
211
|
-
This method
|
212
|
-
|
240
|
+
This method is responsible for loading and registering the services that are
|
241
|
+
required before the main bootstrapping process. It iterates through the list
|
242
|
+
of service providers that need to be initialized early, registers them, and
|
243
|
+
then boots them to make sure they are ready for use.
|
213
244
|
"""
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
_environment_provider.register()
|
219
|
-
_environment_provider.boot()
|
245
|
+
for service in self._before_boot_service_providers:
|
246
|
+
_environment_provider : ServiceProvider = service(app=self.container)
|
247
|
+
_environment_provider.register()
|
248
|
+
_environment_provider.boot()
|
220
249
|
|
221
250
|
def _bootstraping(self):
|
222
251
|
"""
|
223
|
-
Loads
|
252
|
+
Loads configuration, commands, environment variables, and other bootstrappers.
|
224
253
|
|
225
|
-
This method initializes the
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
254
|
+
This method initializes and updates the class dictionaries with the results
|
255
|
+
from various bootstrappers. It ensures that the application has the necessary
|
256
|
+
configuration, commands, and environment variables loaded before proceeding
|
257
|
+
with the rest of the bootstrapping process.
|
258
|
+
"""
|
259
|
+
singletons_bootstrappers = [
|
260
|
+
(self._config, ConfigBootstrapper),
|
261
|
+
(self._commands, CommandsBootstrapper),
|
262
|
+
(self._environment_vars, EnvironmentBootstrapper)
|
263
|
+
]
|
264
|
+
for bootstrapper in singletons_bootstrappers:
|
265
|
+
property_cls, bootstrapper_class = bootstrapper
|
266
|
+
bootstrapper_key = self.singleton(bootstrapper_class)
|
267
|
+
bootstrapper_instance : IBootstrapper = self.make(bootstrapper_key)
|
268
|
+
property_cls.update(bootstrapper_instance.get())
|
269
|
+
|
270
|
+
def _loadCommands(self):
|
271
|
+
"""
|
272
|
+
Loads CLI commands, including both core system commands and those defined by the developer.
|
273
|
+
|
274
|
+
This method iterates over the commands stored in the `_commands` attribute, binds each command
|
275
|
+
to its corresponding concrete implementation, and registers the command alias.
|
276
|
+
|
277
|
+
Parameters
|
278
|
+
----------
|
279
|
+
None
|
243
280
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
281
|
+
Returns
|
282
|
+
-------
|
283
|
+
None
|
284
|
+
"""
|
285
|
+
for command in self._commands.keys():
|
286
|
+
data_command:dict = self._commands[command]
|
287
|
+
id_container_concrete = self.bind(data_command.get('concrete'))
|
288
|
+
self.alias(alias=command, concrete=id_container_concrete)
|
249
289
|
|
250
290
|
def _afterBootstrapProviders(self):
|
251
291
|
"""
|
252
|
-
|
292
|
+
Loads services into the container that depend on the Bootstrap process being completed.
|
293
|
+
|
294
|
+
This method iterates over the list of service providers that need to be loaded after the
|
295
|
+
Bootstrap process. For each service provider, it creates an instance, registers it, and
|
296
|
+
then boots it.
|
297
|
+
|
298
|
+
Parameters
|
299
|
+
----------
|
300
|
+
None
|
253
301
|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
# Load the log provider based on the application configuration defined by the developer.
|
264
|
-
# Developers can interact with it through the facade "orionis.luminate.facades.log.log_facade.Log".
|
265
|
-
_log_provider = LogServiceProvider(app=self.container)
|
266
|
-
_log_provider.register()
|
267
|
-
_log_provider.boot()
|
268
|
-
|
269
|
-
# Load the scheduler provider, which is responsible for managing scheduled tasks.
|
270
|
-
# Developers can interact with it through the facade "orionis.luminate.facades.scheduler.scheduler_facade.Schedule".
|
271
|
-
_schedule_provider = ScheduleServiceProvider(app=self.container)
|
272
|
-
_schedule_provider.register()
|
273
|
-
_schedule_provider.boot()
|
274
|
-
|
275
|
-
# Load the commands provider, which is responsible for executing and managing CLI commands.
|
276
|
-
# Developers can interact with it through the facade "orionis.luminate.facades.commands.commands_facade.Commands".
|
277
|
-
_commands_provider = ReactorCommandsServiceProvider(app=self.container)
|
278
|
-
_commands_provider.register()
|
279
|
-
_commands_provider.boot()
|
302
|
+
Returns
|
303
|
+
-------
|
304
|
+
None
|
305
|
+
"""
|
306
|
+
for service in self._after_boot_service_providers:
|
307
|
+
_environment_provider : ServiceProvider = service(app=self.container)
|
308
|
+
_environment_provider.register()
|
309
|
+
_environment_provider.boot()
|
@@ -296,6 +296,22 @@ class Container(IContainer):
|
|
296
296
|
|
297
297
|
return False
|
298
298
|
|
299
|
+
def bound(self, abstract: Any) -> bool:
|
300
|
+
"""
|
301
|
+
Checks if a service is bound in the container.
|
302
|
+
|
303
|
+
Parameters
|
304
|
+
----------
|
305
|
+
abstract : Any
|
306
|
+
The service class or alias to check.
|
307
|
+
|
308
|
+
Returns
|
309
|
+
-------
|
310
|
+
bool
|
311
|
+
True if the service is bound, False otherwise.
|
312
|
+
"""
|
313
|
+
return self.has(abstract)
|
314
|
+
|
299
315
|
def make(self, abstract: Any) -> Any:
|
300
316
|
"""
|
301
317
|
Create and return an instance of a registered service.
|
File without changes
|
File without changes
|
@@ -2,9 +2,9 @@ import importlib
|
|
2
2
|
import pathlib
|
3
3
|
from dataclasses import asdict
|
4
4
|
from typing import Any, Dict
|
5
|
-
from orionis.contracts.
|
5
|
+
from orionis.contracts.foundation.config.i_config_bootstrapper import IConfigBootstrapper
|
6
6
|
from orionis.contracts.config.i_config import IConfig
|
7
|
-
from orionis.luminate.
|
7
|
+
from orionis.luminate.foundation.exceptions.exception_bootstrapper import BootstrapRuntimeError
|
8
8
|
|
9
9
|
class ConfigBootstrapper(IConfigBootstrapper):
|
10
10
|
"""
|
File without changes
|
@@ -2,8 +2,8 @@ import pathlib
|
|
2
2
|
import importlib
|
3
3
|
import inspect
|
4
4
|
from typing import Any, Callable, Dict, List
|
5
|
-
from orionis.contracts.
|
6
|
-
from orionis.luminate.
|
5
|
+
from orionis.contracts.foundation.console.i_command_bootstrapper import ICommandsBootstrapper
|
6
|
+
from orionis.luminate.foundation.exceptions.exception_bootstrapper import BootstrapRuntimeError
|
7
7
|
from orionis.luminate.console.base.command import BaseCommand
|
8
8
|
|
9
9
|
class CommandsBootstrapper(ICommandsBootstrapper):
|
@@ -58,7 +58,7 @@ class CommandsBootstrapper(ICommandsBootstrapper):
|
|
58
58
|
# Define the directories to scan for commands
|
59
59
|
command_dirs = [
|
60
60
|
base_path / "app" / "console" / "commands", # Developer-defined commands
|
61
|
-
pathlib.Path(__file__).resolve().parent.parent / "console" / "commands" # Core commands
|
61
|
+
pathlib.Path(__file__).resolve().parent.parent.parent / "console" / "commands" # Core commands
|
62
62
|
]
|
63
63
|
|
64
64
|
for cmd_dir in command_dirs:
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from typing import Dict
|
2
|
-
from orionis.contracts.
|
2
|
+
from orionis.contracts.foundation.environment.i_environment_bootstrapper import IEnvironmentBootstrapper
|
3
3
|
from orionis.luminate.facades.app import app
|
4
4
|
from orionis.luminate.services.environment.environment_service import EnvironmentService
|
5
5
|
|
File without changes
|
File without changes
|
@@ -0,0 +1,98 @@
|
|
1
|
+
import importlib
|
2
|
+
import inspect
|
3
|
+
import pathlib
|
4
|
+
from orionis.contracts.foundation.providers.i_service_providers_bootstrapper import IServiceProvidersBootstrapper
|
5
|
+
from orionis.luminate.container.container import Container
|
6
|
+
from orionis.luminate.foundation.exceptions.exception_bootstrapper import BootstrapRuntimeError
|
7
|
+
from orionis.luminate.providers.service_provider import ServiceProvider
|
8
|
+
|
9
|
+
class ServiceProvidersBootstrapper(IServiceProvidersBootstrapper):
|
10
|
+
|
11
|
+
def __init__(self, container : Container) -> None:
|
12
|
+
self._container = container
|
13
|
+
self._before_providers = []
|
14
|
+
self._after_providers = []
|
15
|
+
self._autoload()
|
16
|
+
|
17
|
+
def _autoload(self) -> None:
|
18
|
+
"""
|
19
|
+
Scans the provider directories and loads provider classes.
|
20
|
+
|
21
|
+
This method searches for Python files in the specified directories, imports them,
|
22
|
+
and registers any class that inherits from `ServiceProvider`.
|
23
|
+
|
24
|
+
Raises
|
25
|
+
------
|
26
|
+
BootstrapRuntimeError
|
27
|
+
If there is an error loading a module.
|
28
|
+
"""
|
29
|
+
|
30
|
+
base_path = pathlib.Path.cwd()
|
31
|
+
|
32
|
+
command_dirs = [
|
33
|
+
pathlib.Path(__file__).resolve().parent.parent.parent / "providers"
|
34
|
+
]
|
35
|
+
|
36
|
+
for cmd_dir in command_dirs:
|
37
|
+
if not cmd_dir.is_dir():
|
38
|
+
continue
|
39
|
+
|
40
|
+
for file_path in cmd_dir.rglob("*.py"):
|
41
|
+
if file_path.name == "__init__.py":
|
42
|
+
continue
|
43
|
+
|
44
|
+
module_path = ".".join(file_path.relative_to(base_path).with_suffix("").parts)
|
45
|
+
|
46
|
+
# Remove 'site-packages.' prefix if present
|
47
|
+
if 'site-packages.' in module_path:
|
48
|
+
module_path = module_path.split('site-packages.')[1]
|
49
|
+
|
50
|
+
try:
|
51
|
+
module = importlib.import_module(module_path.strip())
|
52
|
+
|
53
|
+
# Find and register command classes
|
54
|
+
for name, concrete in inspect.getmembers(module, inspect.isclass):
|
55
|
+
if issubclass(concrete, ServiceProvider) and concrete is not ServiceProvider:
|
56
|
+
self._register(concrete)
|
57
|
+
except Exception as e:
|
58
|
+
raise BootstrapRuntimeError(f"Error loading {module_path}") from e
|
59
|
+
|
60
|
+
def _register(self, concrete: ServiceProvider) -> None:
|
61
|
+
"""
|
62
|
+
Validates and registers a service provider class.
|
63
|
+
|
64
|
+
This method ensures that the provided class is valid (inherits from `ServiceProvider`,
|
65
|
+
has a `register` and `boot` method) and registers it in the
|
66
|
+
`_service_providers` dictionary.
|
67
|
+
|
68
|
+
Parameters
|
69
|
+
----------
|
70
|
+
concrete : ServiceProvider
|
71
|
+
The service provider class to register
|
72
|
+
"""
|
73
|
+
if concrete.beferoBootstrapping:
|
74
|
+
self._before_providers.append(concrete)
|
75
|
+
else:
|
76
|
+
self._after_providers.append(concrete)
|
77
|
+
|
78
|
+
def getBeforeServiceProviders(self) -> list:
|
79
|
+
"""
|
80
|
+
Retrieve the registered service providers.
|
81
|
+
|
82
|
+
Returns
|
83
|
+
-------
|
84
|
+
list
|
85
|
+
A list of registered service providers
|
86
|
+
"""
|
87
|
+
return self._before_providers
|
88
|
+
|
89
|
+
def getAfterServiceProviders(self) -> list:
|
90
|
+
"""
|
91
|
+
Retrieve the registered service providers.
|
92
|
+
|
93
|
+
Returns
|
94
|
+
-------
|
95
|
+
list
|
96
|
+
A list of registered service providers
|
97
|
+
"""
|
98
|
+
return self._after_providers
|
@@ -1,12 +1,18 @@
|
|
1
1
|
from orionis.luminate.providers.service_provider import ServiceProvider
|
2
2
|
from orionis.luminate.services.environment.environment_service import EnvironmentService
|
3
|
+
from orionis.luminate.services.files.path_resolver_service import PathResolverService
|
3
4
|
|
4
5
|
class EnvironmentServiceProvider(ServiceProvider):
|
5
6
|
|
7
|
+
beferoBootstrapping = True
|
8
|
+
|
6
9
|
def register(self) -> None:
|
7
10
|
"""
|
8
11
|
Registers services or bindings into the given container.
|
9
12
|
"""
|
13
|
+
if not self.app.bound(PathResolverService):
|
14
|
+
self.app.singleton(PathResolverService)
|
15
|
+
|
10
16
|
self._container_id = self.app.singleton(EnvironmentService)
|
11
17
|
|
12
18
|
def boot(self) -> None:
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
from orionis.luminate.providers.service_provider import ServiceProvider
|
2
|
+
from orionis.luminate.services.files.path_resolver_service import PathResolverService
|
3
|
+
|
4
|
+
class PathResolverProvider(ServiceProvider):
|
5
|
+
|
6
|
+
beferoBootstrapping = True
|
7
|
+
|
8
|
+
def register(self) -> None:
|
9
|
+
"""
|
10
|
+
Registers services or bindings into the given container.
|
11
|
+
"""
|
12
|
+
self._container_id = self.app.singleton(PathResolverService)
|
13
|
+
|
14
|
+
def boot(self) -> None:
|
15
|
+
"""
|
16
|
+
Boot the service provider.
|
17
|
+
|
18
|
+
This method is intended to be overridden by subclasses to perform
|
19
|
+
any necessary bootstrapping or initialization tasks.
|
20
|
+
"""
|
21
|
+
self.app.make(self._container_id)
|
@@ -11,6 +11,10 @@ class ServiceProvider(IServiceProvider):
|
|
11
11
|
The container instance to be used by the service provider.
|
12
12
|
"""
|
13
13
|
|
14
|
+
# Indicates whether the service provider is a bootstrapper.
|
15
|
+
beferoBootstrapping = False
|
16
|
+
|
17
|
+
|
14
18
|
def __init__(self, app : Container) -> None:
|
15
19
|
"""
|
16
20
|
Initialize the service provider with the given container.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import time
|
2
2
|
from typing import Any, Dict, Optional
|
3
3
|
from orionis.contracts.services.commands.i_reactor_commands_service import IReactorCommandsService
|
4
|
-
from orionis.luminate.
|
4
|
+
from orionis.luminate.foundation.console.command_bootstrapper import CommandsBootstrapper
|
5
5
|
from orionis.luminate.console.base.command import BaseCommand
|
6
6
|
from orionis.luminate.console.command_filter import CommandFilter
|
7
7
|
from orionis.luminate.console.exceptions.cli_exception import CLIOrionisException
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import copy
|
2
2
|
from typing import Any, Optional
|
3
3
|
from orionis.contracts.services.config.i_config_service import IConfigService
|
4
|
-
from orionis.luminate.
|
4
|
+
from orionis.luminate.foundation.config.config_bootstrapper import ConfigBootstrapper
|
5
5
|
|
6
6
|
class ConfigService(IConfigService):
|
7
7
|
|
@@ -1,14 +1,10 @@
|
|
1
1
|
import os
|
2
|
-
import threading
|
3
2
|
from pathlib import Path
|
4
3
|
from orionis.contracts.services.files.i_path_resolver_service import IPathResolverService
|
5
4
|
|
6
5
|
class PathResolverService(IPathResolverService):
|
7
6
|
|
8
|
-
|
9
|
-
_instance = None
|
10
|
-
|
11
|
-
def __new__(cls):
|
7
|
+
def __init__(self):
|
12
8
|
"""
|
13
9
|
Override the __new__ method to ensure only one instance of the class is created.
|
14
10
|
|
@@ -17,12 +13,7 @@ class PathResolverService(IPathResolverService):
|
|
17
13
|
PathResolverService
|
18
14
|
The singleton instance of the PathResolverService class.
|
19
15
|
"""
|
20
|
-
|
21
|
-
with cls._lock:
|
22
|
-
if cls._instance is None:
|
23
|
-
cls._instance = super().__new__(cls)
|
24
|
-
cls._instance.base_path = Path(os.getcwd())
|
25
|
-
return cls._instance
|
16
|
+
self.base_path = Path(os.getcwd())
|
26
17
|
|
27
18
|
def resolve(self, route: str) -> str:
|
28
19
|
"""
|
@@ -51,9 +42,10 @@ class PathResolverService(IPathResolverService):
|
|
51
42
|
real_path = (self.base_path / route).resolve()
|
52
43
|
|
53
44
|
# Validate that the path exists and is either a directory or a file
|
54
|
-
if not real_path.
|
55
|
-
|
56
|
-
|
57
|
-
|
45
|
+
if not str(real_path).endswith('.log'):
|
46
|
+
if not real_path.exists():
|
47
|
+
raise Exception(f"The requested path does not exist or is invalid: {real_path}")
|
48
|
+
if not (real_path.is_dir() or real_path.is_file()):
|
49
|
+
raise Exception(f"The requested path does not exist or is invalid: {real_path}")
|
58
50
|
|
59
51
|
return str(real_path)
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import logging
|
2
2
|
import os
|
3
|
+
from pathlib import Path
|
3
4
|
import re
|
4
5
|
from datetime import datetime
|
5
6
|
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
|
6
|
-
from pathlib import Path
|
7
7
|
from orionis.contracts.services.log.i_log_service import ILogguerService
|
8
8
|
from orionis.luminate.services.config.config_service import ConfigService
|
9
9
|
|
@@ -69,11 +69,16 @@ class LogguerService(ILogguerService):
|
|
69
69
|
"""
|
70
70
|
try:
|
71
71
|
|
72
|
+
base = Path(self.config_service.get("logging.base_path", os.getcwd()))
|
73
|
+
default_path = base / "storage" / "logs"
|
74
|
+
default_path.mkdir(parents=True, exist_ok=True)
|
75
|
+
default_path = default_path / "orionis.log"
|
76
|
+
|
72
77
|
handlers = []
|
73
78
|
|
74
79
|
channel : str = self.config_service.get("logging.default")
|
75
80
|
config : dict = self.config_service.get(f"logging.channels.{channel}", {})
|
76
|
-
path : str = config.get("path",
|
81
|
+
path : str = config.get("path", default_path)
|
77
82
|
app_timezone : str = self.config_service.get("app.timezone", "UTC")
|
78
83
|
|
79
84
|
if channel == "stack":
|
@@ -1,10 +1,7 @@
|
|
1
1
|
orionis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
orionis/cli_manager.py,sha256=0bM-hABXJSoPGuvEgnqeaj9qcLP8VjTQ3z9Mb0TSEUI,1381
|
3
|
-
orionis/framework.py,sha256=
|
3
|
+
orionis/framework.py,sha256=bk-HxUFwZ8MRaZjsxSEi-aWil4sP52EFlHTRKODFQ30,1387
|
4
4
|
orionis/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
orionis/contracts/bootstrap/i_command_bootstrapper.py,sha256=cfpYWSlNhOY1q_C9o0H7F381OoM0Oh0qaeqP-c85nzk,2457
|
6
|
-
orionis/contracts/bootstrap/i_config_bootstrapper.py,sha256=d2TXT74H2fCBbzWgrt9-ZG11S_H_YPQOEcJoIOrsgb0,4462
|
7
|
-
orionis/contracts/bootstrap/i_environment_bootstrapper.py,sha256=MEeZmh0XWvzvWHFB5ZOp5SKY89F1IHsIXJvdjmEncJU,1076
|
8
5
|
orionis/contracts/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
6
|
orionis/contracts/config/i_config.py,sha256=rbeojO2gm8XhSXIPY8EnUt4e0wO633OKF9Nx_tN5y60,785
|
10
7
|
orionis/contracts/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -18,7 +15,7 @@ orionis/contracts/console/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
18
15
|
orionis/contracts/console/output/i_console.py,sha256=bkYTT5oIK3NP-p7XONgi1z_SO50ZvJu31Nv7cjs4t7s,8902
|
19
16
|
orionis/contracts/console/output/i_executor.py,sha256=MGMTTPSwF8dgCjHD3A4CKtYDaCcD-KU28dorC61Q04k,1411
|
20
17
|
orionis/contracts/console/output/i_progress_bar.py,sha256=sOkQzQsliFemqZHMyzs4fWhNJfXDTk5KH3aExReetSE,1760
|
21
|
-
orionis/contracts/container/i_container.py,sha256=
|
18
|
+
orionis/contracts/container/i_container.py,sha256=B2gsvuHU8IyeVkAOVUlY2T_1VPzBb3uWRQUfdP4ak_c,7322
|
22
19
|
orionis/contracts/container/i_types.py,sha256=GCH7x3PjpXKPET3l84GcXbcM8cpne8AGrmTw-uFaT24,526
|
23
20
|
orionis/contracts/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
21
|
orionis/contracts/facades/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -34,6 +31,16 @@ orionis/contracts/facades/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
|
|
34
31
|
orionis/contracts/facades/log/i_log_facade.py,sha256=xkdR6nMAENv9NLOFUAnk1WRh9bYuisSAhnlkdlD5O7g,1894
|
35
32
|
orionis/contracts/facades/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
33
|
orionis/contracts/facades/tests/i_tests_facade.py,sha256=GM6d9skPZwynx1lu_abfuJ_L5GvG9b12vI-KX7phYJc,890
|
34
|
+
orionis/contracts/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
+
orionis/contracts/foundation/i_bootstraper.py,sha256=9IFxjUW5akHTUb_BLwxiy88OIJkl0bptUOBVdfnk2PU,1165
|
36
|
+
orionis/contracts/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
+
orionis/contracts/foundation/config/i_config_bootstrapper.py,sha256=d2TXT74H2fCBbzWgrt9-ZG11S_H_YPQOEcJoIOrsgb0,4462
|
38
|
+
orionis/contracts/foundation/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
+
orionis/contracts/foundation/console/i_command_bootstrapper.py,sha256=cfpYWSlNhOY1q_C9o0H7F381OoM0Oh0qaeqP-c85nzk,2457
|
40
|
+
orionis/contracts/foundation/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
+
orionis/contracts/foundation/environment/i_environment_bootstrapper.py,sha256=MEeZmh0XWvzvWHFB5ZOp5SKY89F1IHsIXJvdjmEncJU,1076
|
42
|
+
orionis/contracts/foundation/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
+
orionis/contracts/foundation/providers/i_service_providers_bootstrapper.py,sha256=iwILmTiDQBENOjJprCeAnZb-1YNeW_5PQUXDU_P6vog,1654
|
37
44
|
orionis/contracts/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
45
|
orionis/contracts/installer/i_installer_manager.py,sha256=Zfndhuyu0JaTKo3PsGsKmVsvotQMw8Pmt4KQp97elY8,1567
|
39
46
|
orionis/contracts/installer/i_installer_output.py,sha256=SQZeXg5HRu-x1697HCdoU1-RVJWEqCWY-zNboWnc_vs,2897
|
@@ -60,14 +67,8 @@ orionis/installer/installer_manager.py,sha256=Hb6T0bmSl39T30maY-nUWkrLhG77JdrKe4
|
|
60
67
|
orionis/installer/installer_output.py,sha256=LeKxzuXpnHOKbKpUtx3tMGkCi2bGcPV1VNnfBxwfxUU,7161
|
61
68
|
orionis/installer/installer_setup.py,sha256=c2HtVklSa-2_-YVonc7fwtoK-RTDqBS2Ybvbekgfqtc,6970
|
62
69
|
orionis/luminate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
|
-
orionis/luminate/app.py,sha256=
|
70
|
+
orionis/luminate/app.py,sha256=iLTVHV0NYHLKgpttka4I4pGclCnlKPFjAiyP6zFqk8I,12517
|
64
71
|
orionis/luminate/app_context.py,sha256=se2xpsGoy_drcuOROC7OHaIAN5Yd0kbm5V1zzsxxyQc,996
|
65
|
-
orionis/luminate/bootstrap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
|
-
orionis/luminate/bootstrap/command_bootstrapper.py,sha256=lWlrgE7rWYRS7w6TlTHd0lrXDJxwHKqXH06vL7-sDvw,7029
|
67
|
-
orionis/luminate/bootstrap/config_bootstrapper.py,sha256=Gw83UtPAOggwzqmz062JfJcpIfmZvmIQyZJfgVFiIcQ,7474
|
68
|
-
orionis/luminate/bootstrap/environment_bootstrapper.py,sha256=GTZ-mBumoNlxYcqsQksw4XyH3TRfPkWAU62mB3wFKLk,2777
|
69
|
-
orionis/luminate/bootstrap/exception_bootstrapper.py,sha256=wDKfEW295c7-bavr7YUHK2CLYcTSZgjT9ZRSBne6GOE,1356
|
70
|
-
orionis/luminate/bootstrap/service_providers_bootstrapper.py,sha256=bQK1yDLP9dqks3TQhTaJDnrnla_79Tw8wTOY2AsLuDQ,268
|
71
72
|
orionis/luminate/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
72
73
|
orionis/luminate/config/app.py,sha256=7teuVPuaV2ao0M5Bv-jhSgjEwb9DtVwde2saTRmYru4,1737
|
73
74
|
orionis/luminate/config/auth.py,sha256=CG8F0pfVjKz4DY3d1Wi7gscdhnp4TT-Q8SJ2sdsHh18,523
|
@@ -98,7 +99,7 @@ orionis/luminate/console/output/console.py,sha256=khlnCmhGW3Iu2YYO8GG7YLtnLeqysy
|
|
98
99
|
orionis/luminate/console/output/executor.py,sha256=0_6AGM1vE5umdpVVogQUE5eW9cu5UUQwc-ZvuccTI8E,3362
|
99
100
|
orionis/luminate/console/output/progress_bar.py,sha256=ssi8Drryr-shl7OxweTgGOhvRvAlCVxjBGm1L1qyO84,3089
|
100
101
|
orionis/luminate/console/output/styles.py,sha256=2e1_FJdNpKaVqmdlCx-udzTleH_6uEFE9_TjH7T1ZUk,3696
|
101
|
-
orionis/luminate/container/container.py,sha256=
|
102
|
+
orionis/luminate/container/container.py,sha256=FFviW62whQwXVsvFCGnA6KJ1ynYckZUw3MGrizxYXLI,16992
|
102
103
|
orionis/luminate/container/exception.py,sha256=ap1SqYEjQEEHXJJTNmL7V1jrmRjgT5_7geZ95MYkhMA,1691
|
103
104
|
orionis/luminate/container/types.py,sha256=BDcXN0__voRNHZ5Gr5dF0sWIYAQyNk4TxAwILBWyDAA,1735
|
104
105
|
orionis/luminate/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -116,31 +117,44 @@ orionis/luminate/facades/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
116
117
|
orionis/luminate/facades/log/log_facade.py,sha256=_F5-Vnon6hZKefrTwurvraW8lfoG99VmLql_prMdKm8,2482
|
117
118
|
orionis/luminate/facades/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
118
119
|
orionis/luminate/facades/tests/tests_facade.py,sha256=eH_fyXjzEVw8aqEwxAgSujFUItz2woau6hc2Mf4VlkE,1660
|
120
|
+
orionis/luminate/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
121
|
+
orionis/luminate/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
|
+
orionis/luminate/foundation/config/config_bootstrapper.py,sha256=42OIgBLX0R2hW0wSkDqqKmZl4aKBjYCcH52nuEBgy9M,7494
|
123
|
+
orionis/luminate/foundation/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
|
+
orionis/luminate/foundation/console/command_bootstrapper.py,sha256=7m_lME1qou9fpy3U7OGArO6KhU448qA-oTB4tVxosTs,7057
|
125
|
+
orionis/luminate/foundation/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
126
|
+
orionis/luminate/foundation/environment/environment_bootstrapper.py,sha256=15xpmzUjnFfFlo-zg7w-WbJiQPlEjVr-i2VufMsnZhs,2790
|
127
|
+
orionis/luminate/foundation/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
128
|
+
orionis/luminate/foundation/exceptions/exception_bootstrapper.py,sha256=wDKfEW295c7-bavr7YUHK2CLYcTSZgjT9ZRSBne6GOE,1356
|
129
|
+
orionis/luminate/foundation/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
130
|
+
orionis/luminate/foundation/providers/service_providers_bootstrapper.py,sha256=YS_fBrwc-2qcVq_W1Y5sblOHpFuz67xLXmhhhPNrHNI,3480
|
119
131
|
orionis/luminate/patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
132
|
orionis/luminate/patterns/singleton.py,sha256=b3U0nubKSQWyal5wTXADVPtOztkaTk-M8Zwy-bje1L0,1425
|
121
133
|
orionis/luminate/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
|
-
orionis/luminate/providers/service_provider.py,sha256=
|
134
|
+
orionis/luminate/providers/service_provider.py,sha256=7Hz33bMmSZ11H_4x8-h4IAVqlTByPr_l8tfZEYe8gIM,1639
|
123
135
|
orionis/luminate/providers/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
136
|
orionis/luminate/providers/commands/reactor_commands_service_provider.py,sha256=3HX3wwPCH_Y9OsoTyfC4_LrNlPW_-UaffDcz3Wehuvk,701
|
125
137
|
orionis/luminate/providers/commands/scheduler_provider.py,sha256=owOzdGIZmkeTFJQ3yyG8Hk2Kb8l-jXmaJHAo7v3_uAk,670
|
126
138
|
orionis/luminate/providers/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
127
139
|
orionis/luminate/providers/config/config_service_provider.py,sha256=NLKB3Vcu4kqZ0WyeImMG3CsclSu_P4aWs6yXitcv474,659
|
128
140
|
orionis/luminate/providers/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
129
|
-
orionis/luminate/providers/environment/environment__service_provider.py,sha256
|
141
|
+
orionis/luminate/providers/environment/environment__service_provider.py,sha256=-A9QlyD-mlQJsRfDr0IEudOVp0CgTgir9y1Dw8ERY6I,915
|
142
|
+
orionis/luminate/providers/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
143
|
+
orionis/luminate/providers/files/paths_provider.py,sha256=bZVuOVn44ysE_NPupxe9xZPP0D3ay5Ztdnsbi-Fv43o,712
|
130
144
|
orionis/luminate/providers/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
145
|
orionis/luminate/providers/log/log_service_provider.py,sha256=tcWDEI-fubi1mWSS-IKiRReuc0pRMHpxvbvuDgs2Uy0,654
|
132
146
|
orionis/luminate/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
133
147
|
orionis/luminate/services/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
134
|
-
orionis/luminate/services/commands/reactor_commands_service.py,sha256=
|
148
|
+
orionis/luminate/services/commands/reactor_commands_service.py,sha256=7rWGrBmg7JL8WexJjLhKXXZgfWAnghENBm9Tp5yqY8w,6450
|
135
149
|
orionis/luminate/services/commands/scheduler_service.py,sha256=JB0f-yOyb7Uz6NLVM4QH2q9_wC-81Mhek-OSKpfOS0o,22577
|
136
150
|
orionis/luminate/services/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
|
-
orionis/luminate/services/config/config_service.py,sha256=
|
151
|
+
orionis/luminate/services/config/config_service.py,sha256=X6ExWZfMlG6TJ2j6vWR1YnxQhnbm8TfY6vyFP2tIHzU,2231
|
138
152
|
orionis/luminate/services/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
139
153
|
orionis/luminate/services/environment/environment_service.py,sha256=IgrfzLELNhnEuz9rn2lYBvv3JQrgiNCGLA34pQ__nxY,4136
|
140
154
|
orionis/luminate/services/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
141
|
-
orionis/luminate/services/files/path_resolver_service.py,sha256=
|
155
|
+
orionis/luminate/services/files/path_resolver_service.py,sha256=Xsxrp-WIQLwKldW98p1dggb_BvDV9MDo-9MWNxiWCD0,1811
|
142
156
|
orionis/luminate/services/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
143
|
-
orionis/luminate/services/log/log_service.py,sha256=
|
157
|
+
orionis/luminate/services/log/log_service.py,sha256=vaGw2VXCIiaUcPD90BFNtmB2O2pKm9MZdUs5xg9rxEE,8382
|
144
158
|
orionis/luminate/support/dot_dict.py,sha256=FVHfBuAGTTVMjNG01Fix645fRNKKUMmNx61pYkxPL5c,1253
|
145
159
|
orionis/luminate/support/exception_to_dict.py,sha256=jpQ-c7ud1JLm8dTWbvMT1dI-rL3yTB2P8VxNscAX71k,2098
|
146
160
|
orionis/luminate/support/reflection.py,sha256=VYpluTQJ0W_m6jYQ9_L02sYFrk2wlLYtLY2yp9rZMKA,11944
|
@@ -161,9 +175,9 @@ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
161
175
|
tests/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
162
176
|
tests/tools/class_example.py,sha256=dIPD997Y15n6WmKhWoOFSwEldRm9MdOHTZZ49eF1p3c,1056
|
163
177
|
tests/tools/test_reflection.py,sha256=bhLQ7VGVod4B8sv-rW9AjnOumvaBVsoxieA3sdoM2yM,5244
|
164
|
-
orionis-0.
|
165
|
-
orionis-0.
|
166
|
-
orionis-0.
|
167
|
-
orionis-0.
|
168
|
-
orionis-0.
|
169
|
-
orionis-0.
|
178
|
+
orionis-0.105.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
|
179
|
+
orionis-0.105.0.dist-info/METADATA,sha256=_QXOAmotcAZJFwT9Kvie4EQhymh1ja8S_bCrzfZS2wg,2979
|
180
|
+
orionis-0.105.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
181
|
+
orionis-0.105.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
|
182
|
+
orionis-0.105.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
|
183
|
+
orionis-0.105.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|