orionis 0.41.0__py3-none-any.whl → 0.43.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
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