orionis 0.41.0__py3-none-any.whl → 0.43.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 CHANGED
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.41.0"
8
+ VERSION = "0.43.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -0,0 +1,99 @@
1
+ import traceback
2
+ from orionis.luminate.container.container import Container
3
+ from orionis.luminate.cache.app.config import CacheConfig
4
+ from orionis.luminate.bootstrap.config.register import Register
5
+ from orionis.luminate.bootstrap.config.bootstrapper import Bootstrapper
6
+ from orionis.luminate.patterns.singleton import SingletonMeta
7
+
8
+ class Application(metaclass=SingletonMeta):
9
+ """
10
+ The main service container for the Orionis Framework, ensuring persistent dependency resolution.
11
+
12
+ This class acts as a singleton service container, similar to Laravel's Application class.
13
+ It maintains service bindings, ensures proper initialization, and prevents unnecessary re-instantiation.
14
+
15
+ Attributes
16
+ ----------
17
+ container : Container
18
+ The IoC container that holds all service bindings.
19
+ booted : bool
20
+ Indicates whether the application has been initialized.
21
+ error_info : tuple or None
22
+ Stores error information if an exception occurs during boot.
23
+
24
+ Methods
25
+ -------
26
+ boot()
27
+ Initializes the application and registers all necessary dependencies.
28
+ isBooted()
29
+ Checks if the application is currently running.
30
+ getError()
31
+ Retrieves stored error information, if any.
32
+ """
33
+
34
+ def __init__(self):
35
+ """Initializes the application with an empty dependency container."""
36
+ self.container = Container()
37
+ self.booted = False
38
+ self.error_info = None
39
+
40
+ def boot(self):
41
+ """
42
+ Boots the application and registers necessary dependencies.
43
+
44
+ This method ensures that all required services are bound to the container and instantiated.
45
+ If the application is already booted, it returns immediately.
46
+
47
+ Returns
48
+ -------
49
+ Application
50
+ The current instance of the application.
51
+
52
+ Raises
53
+ ------
54
+ Exception
55
+ If an error occurs during the boot process.
56
+ """
57
+ if self.booted:
58
+ return self
59
+
60
+ try:
61
+ # Register core services as singletons
62
+ self.container.singleton(CacheConfig)
63
+ self.container.singleton(Register)
64
+ self.container.singleton(Bootstrapper)
65
+
66
+ # Resolve the registered dependencies
67
+ self.container.make(Register)
68
+ self.container.make(Bootstrapper)
69
+
70
+ self.booted = True
71
+ return self
72
+
73
+ except Exception as e:
74
+ # Capture and store exception details
75
+ self.error_info = (e, traceback.format_exc())
76
+ raise
77
+
78
+ def isBooted(self):
79
+ """
80
+ Checks if the application has been successfully initialized.
81
+
82
+ Returns
83
+ -------
84
+ bool
85
+ True if the application has been booted, False otherwise.
86
+ """
87
+ return self.booted
88
+
89
+ def getError(self):
90
+ """
91
+ Retrieves the last stored error details.
92
+
93
+ Returns
94
+ -------
95
+ tuple or None
96
+ A tuple containing the exception instance and its formatted traceback if an error occurred;
97
+ otherwise, None.
98
+ """
99
+ return self.error_info
@@ -0,0 +1,58 @@
1
+ from orionis.luminate.app import Application
2
+
3
+ class AppContext:
4
+ """
5
+ Context manager for resolving dependencies within a valid Orionis application context.
6
+
7
+ This class ensures that Orionis is properly initialized before resolving dependencies,
8
+ similar to how Laravel’s `app()` helper works.
9
+
10
+ Methods
11
+ -------
12
+ __enter__()
13
+ Validates the application state and provides access to the service container.
14
+ __exit__(exc_type, exc_val, exc_tb)
15
+ Ensures exceptions propagate naturally.
16
+ """
17
+
18
+ def __enter__(self):
19
+ """
20
+ Validates that the Orionis application is booted before allowing access to the container.
21
+
22
+ Returns
23
+ -------
24
+ Container
25
+ The application’s IoC container instance.
26
+
27
+ Raises
28
+ ------
29
+ RuntimeError
30
+ If the application has not been properly initialized.
31
+ """
32
+ app = Application()
33
+ if not app.isBooted():
34
+ raise RuntimeError(
35
+ "Error: Not running within a valid Orionis Framework context. "
36
+ "Ensure that the Orionis application is correctly initialized."
37
+ )
38
+ return app.container
39
+
40
+ def __exit__(self, exc_type, exc_val, exc_tb):
41
+ """
42
+ Allows exceptions to propagate naturally.
43
+
44
+ Parameters
45
+ ----------
46
+ exc_type : type
47
+ The exception type, if an error occurred.
48
+ exc_val : Exception
49
+ The exception instance, if an error occurred.
50
+ exc_tb : traceback
51
+ The traceback object associated with the exception, if an error occurred.
52
+
53
+ Returns
54
+ -------
55
+ bool
56
+ Always returns False to ensure exceptions are not suppressed.
57
+ """
58
+ return False
@@ -1,10 +1,10 @@
1
1
  from orionis.luminate.container.container import Container
2
2
  from orionis.luminate.cache.app.config import CacheConfig
3
- from orionis.luminate.orionis import OrionisContext
3
+ from orionis.luminate.app import OrionisContext
4
4
 
5
5
  class Config:
6
6
 
7
7
  @staticmethod
8
8
  def get():
9
9
  with OrionisContext() as ctx:
10
- return ctx.make(CacheConfig).config
10
+ return ctx.container.make(CacheConfig).config
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.41.0
3
+ Version: 0.43.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -1,8 +1,9 @@
1
1
  orionis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  orionis/cli_manager.py,sha256=9wNVJxB0HyqUbNesUvkwlsqTyUbZwK6R46iVLE5WVBQ,1715
3
- orionis/framework.py,sha256=QNUxBn1Jbt-I_q5oRxU6SFR2XUkJIi_wkUbotEZfiU8,1386
3
+ orionis/framework.py,sha256=w-skVjle56yYri7y4-JudXFEnPxgzqAFQ-jKgobFre4,1386
4
4
  orionis/luminate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- orionis/luminate/orionis.py,sha256=ZIvcgUotEzBJ3XyCOb99U_t6-sj0eMFguICIOjWdrZ8,4553
5
+ orionis/luminate/app.py,sha256=w7uUYbbLiGcpf_dOao6t0k0BJzXEJ2KC2zbfBHO3tvo,3231
6
+ orionis/luminate/app_context.py,sha256=MikUzwxyVC_ni-EWSNkVblrcM3SJTYwBjk4VoaC66x4,1837
6
7
  orionis/luminate/bootstrap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
8
  orionis/luminate/bootstrap/cli_exception.py,sha256=wDKfEW295c7-bavr7YUHK2CLYcTSZgjT9ZRSBne6GOE,1356
8
9
  orionis/luminate/bootstrap/commands/bootstrapper.py,sha256=TuXuQUzeaiDL8sJyZNdqnFl2h2MfxcnSU045IeIKVQE,4016
@@ -108,7 +109,7 @@ orionis/luminate/contracts/tools/exception_to_dict_interface.py,sha256=rCuhx2tmU
108
109
  orionis/luminate/contracts/tools/reflection_interface.py,sha256=k9y7So3Z-_QFBBaCl-4t50ZRixt1pcxPtpwlo1NrSGk,8140
109
110
  orionis/luminate/contracts/tools/std_interface.py,sha256=VtOlmz7c1llBRVzKnEBA4aJE5m0Y0w7pFJ_1TgG1-G0,1408
110
111
  orionis/luminate/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- orionis/luminate/facades/config.py,sha256=Wa8WDE6NmKVwwFO-MuLK_mhA7jLiZsEDz8f7Yo3myAA,314
112
+ orionis/luminate/facades/config.py,sha256=Yiy9rhxsnRZYutXt0pyvgtTUzIJCI89ZhyafPFmT1qY,320
112
113
  orionis/luminate/facades/environment.py,sha256=HFnePQKzbBuJxKuL2bv3-6Fwm2xXeJdqDIpGTeY2HUM,2225
113
114
  orionis/luminate/facades/log.py,sha256=yHht-ok-eseVmwZgsAiHuFOS3MRLJ-YJrbG7VmHguMU,1643
114
115
  orionis/luminate/facades/paths.py,sha256=qXU9KvgNw54IsNc82_S66o198CA9bMZqO8wuCMW1Rnk,7300
@@ -147,9 +148,9 @@ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
148
  tests/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
149
  tests/tools/class_example.py,sha256=dIPD997Y15n6WmKhWoOFSwEldRm9MdOHTZZ49eF1p3c,1056
149
150
  tests/tools/test_reflection.py,sha256=dNN5p_xAosyEf0ddAElmmmTfhcTtBd4zBNl7qzgnsc0,5242
150
- orionis-0.41.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
151
- orionis-0.41.0.dist-info/METADATA,sha256=WY13y9zN_a8QUXtxurKKCk09yjsYHrkBUaLUhuDOfWU,2978
152
- orionis-0.41.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
153
- orionis-0.41.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
154
- orionis-0.41.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
155
- orionis-0.41.0.dist-info/RECORD,,
151
+ orionis-0.43.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
152
+ orionis-0.43.0.dist-info/METADATA,sha256=wANx3owLTDihMBZ9BxkZbJ3lKwc1IW_AonBcTFXvWEw,2978
153
+ orionis-0.43.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
154
+ orionis-0.43.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
155
+ orionis-0.43.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
156
+ orionis-0.43.0.dist-info/RECORD,,
@@ -1,142 +0,0 @@
1
- import traceback
2
- from orionis.luminate.container.container import Container
3
- from orionis.luminate.cache.app.config import CacheConfig
4
- from orionis.luminate.bootstrap.config.register import Register
5
- from orionis.luminate.bootstrap.config.bootstrapper import Bootstrapper
6
- from orionis.luminate.patterns.singleton import SingletonMeta
7
-
8
- class Orionis(metaclass=SingletonMeta):
9
- """
10
- Context manager for the Orionis application that handles startup and cleanup.
11
-
12
- This class manages the lifecycle of an Orionis application instance.
13
- It starts the application when entering the context and ensures that the
14
- application is properly finished when exiting, capturing any exceptions that occur.
15
-
16
- Attributes
17
- ----------
18
- is_started : bool
19
- Flag indicating whether the application has been successfully started.
20
- app : App
21
- Instance of the Orionis application.
22
- error_info : tuple or None
23
- Tuple containing the exception instance and its formatted traceback if an error occurs;
24
- otherwise, None.
25
- """
26
-
27
- def __init__(self):
28
- """
29
- Initialize the OrionisContext.
30
-
31
- Sets up the application instance and initializes state variables.
32
- """
33
- self.container = Container()
34
- self.is_started = False
35
- self.error_info = None
36
-
37
- def __enter__(self):
38
- """
39
- Enter the runtime context and start the application.
40
-
41
- Attempts to start the Orionis application. If successful, sets the active flag
42
- and returns the context instance. If an exception is raised during startup,
43
- captures the exception and its traceback before re-raising it.
44
-
45
- Returns
46
- -------
47
- OrionisContext
48
- The current context instance with the application started.
49
-
50
- Raises
51
- ------
52
- Exception
53
- Re-raises any exception that occurs during the application startup.
54
- """
55
- try:
56
-
57
- self.container.singleton(CacheConfig)
58
- self.container.singleton(Register)
59
- self.container.singleton(Bootstrapper)
60
-
61
- self.container.make(Register)
62
- self.container.make(Bootstrapper)
63
-
64
- self.is_started = True
65
- OrionisContext().is_started = True
66
-
67
- return self
68
-
69
- except Exception as e:
70
-
71
- self.error_info = (e, traceback.format_exc())
72
- raise
73
-
74
- def __exit__(self, exc_type, exc_val, exc_tb):
75
- """
76
- Exit the runtime context and finish the application.
77
-
78
- Calls the application's finish method to perform cleanup regardless of whether
79
- an exception occurred. If an exception occurred, captures its information and
80
- returns False to indicate that the exception should not be suppressed.
81
-
82
- Parameters
83
- ----------
84
- exc_type : type
85
- The type of the exception raised (if any).
86
- exc_val : Exception
87
- The exception instance raised (if any).
88
- exc_tb : traceback
89
- The traceback associated with the exception (if any).
90
-
91
- Returns
92
- -------
93
- bool
94
- Always returns False so that any exception is propagated.
95
- """
96
- try:
97
- self.container = None
98
- finally:
99
- self.is_started = False
100
-
101
- if exc_type:
102
- self.error_info = (exc_val, traceback.format_exc())
103
- return False
104
-
105
- def isStarted(self):
106
- """
107
- Check if the application is currently active.
108
-
109
- Returns
110
- -------
111
- bool
112
- True if the application has been started and is active, False otherwise.
113
- """
114
- return self.is_started
115
-
116
- def getError(self):
117
- """
118
- Retrieve the stored error information.
119
-
120
- Returns
121
- -------
122
- tuple or None
123
- A tuple containing the exception and its formatted traceback if an error occurred;
124
- otherwise, None.
125
- """
126
- return self.error_info
127
-
128
- class OrionisContext(metaclass=SingletonMeta):
129
-
130
- def __init__(self):
131
- self.is_started = False
132
-
133
- def __enter__(self):
134
- if self.is_started:
135
- return Orionis()
136
- raise Exception(
137
- "Error: Not running within a valid Orionis Framework context. "
138
- "Please ensure that you are using the proper context manager."
139
- )
140
-
141
- def __exit__(self, exc_type, exc_val, exc_tb):
142
- pass