orionis 0.40.0__tar.gz → 0.42.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. {orionis-0.40.0/orionis.egg-info → orionis-0.42.0}/PKG-INFO +1 -1
  2. {orionis-0.40.0 → orionis-0.42.0}/orionis/framework.py +1 -1
  3. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/config.py +1 -1
  4. orionis-0.42.0/orionis/luminate/orionis.py +109 -0
  5. {orionis-0.40.0 → orionis-0.42.0/orionis.egg-info}/PKG-INFO +1 -1
  6. orionis-0.40.0/orionis/luminate/orionis.py +0 -141
  7. {orionis-0.40.0 → orionis-0.42.0}/LICENCE +0 -0
  8. {orionis-0.40.0 → orionis-0.42.0}/MANIFEST.in +0 -0
  9. {orionis-0.40.0 → orionis-0.42.0}/README.md +0 -0
  10. {orionis-0.40.0 → orionis-0.42.0}/orionis/__init__.py +0 -0
  11. {orionis-0.40.0 → orionis-0.42.0}/orionis/cli_manager.py +0 -0
  12. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/__init__.py +0 -0
  13. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/__init__.py +0 -0
  14. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/cli_exception.py +0 -0
  15. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/commands/bootstrapper.py +0 -0
  16. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/commands/register.py +0 -0
  17. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/config/__init__.py +0 -0
  18. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/config/bootstrapper.py +0 -0
  19. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/config/parser.py +0 -0
  20. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/bootstrap/config/register.py +0 -0
  21. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/cache/__init__.py +0 -0
  22. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/cache/app/__init__.py +0 -0
  23. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/cache/app/config.py +0 -0
  24. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/cache/console/__init__.py +0 -0
  25. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/cache/console/commands.py +0 -0
  26. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/__init__.py +0 -0
  27. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/__init__.py +0 -0
  28. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/app.py +0 -0
  29. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/auth.py +0 -0
  30. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/cache.py +0 -0
  31. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/cors.py +0 -0
  32. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/database.py +0 -0
  33. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/filesystems.py +0 -0
  34. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/logging.py +0 -0
  35. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/mail.py +0 -0
  36. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/queue.py +0 -0
  37. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/dataclass/session.py +0 -0
  38. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/config/environment.py +0 -0
  39. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/__init__.py +0 -0
  40. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/base/__init__.py +0 -0
  41. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/base/command.py +0 -0
  42. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/cache.py +0 -0
  43. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/command.py +0 -0
  44. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/command_filter.py +0 -0
  45. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/__init__.py +0 -0
  46. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/cache_clear.py +0 -0
  47. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/help.py +0 -0
  48. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/schedule_work.py +0 -0
  49. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/tests.py +0 -0
  50. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/commands/version.py +0 -0
  51. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/exceptions/__init__.py +0 -0
  52. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/exceptions/cli_exception.py +0 -0
  53. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/kernel.py +0 -0
  54. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/output/__init__.py +0 -0
  55. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/output/console.py +0 -0
  56. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/output/executor.py +0 -0
  57. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/output/progress_bar.py +0 -0
  58. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/output/styles.py +0 -0
  59. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/parser.py +0 -0
  60. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/runner.py +0 -0
  61. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/scripts/__init__.py +0 -0
  62. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/scripts/management.py +0 -0
  63. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/tasks/__init__.py +0 -0
  64. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/console/tasks/scheduler.py +0 -0
  65. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/container/container.py +0 -0
  66. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/container/exception.py +0 -0
  67. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/container/types.py +0 -0
  68. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/__init__.py +0 -0
  69. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/bootstrap/commands/bootstrapper_interface.py +0 -0
  70. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/bootstrap/commands/register_interface.py +0 -0
  71. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/bootstrap/config/bootstrapper_interface.py +0 -0
  72. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/bootstrap/config/parser_interface.py +0 -0
  73. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/bootstrap/config/register_interface.py +0 -0
  74. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/cache/__init__.py +0 -0
  75. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/cache/app/config_interface.py +0 -0
  76. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/cache/console/commands_interface.py +0 -0
  77. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/config/__init__.py +0 -0
  78. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/config/config_interface.py +0 -0
  79. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/config/environment_interface.py +0 -0
  80. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/__init__.py +0 -0
  81. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/base/base_command_interface.py +0 -0
  82. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/command_filter_interface.py +0 -0
  83. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/command_interface.py +0 -0
  84. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/kernel_interface.py +0 -0
  85. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/output/console_interface.py +0 -0
  86. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/output/executor_interface.py +0 -0
  87. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/output/progress_bar_interface.py +0 -0
  88. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/parser_interface.py +0 -0
  89. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/runner_interface.py +0 -0
  90. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/scripts/management_interface.py +0 -0
  91. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/task_manager_interface.py +0 -0
  92. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/console/tasks/schedule_interface.py +0 -0
  93. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/container/container_interface.py +0 -0
  94. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/container/types_interface.py +0 -0
  95. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/facades/__init__.py +0 -0
  96. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/facades/env_interface.py +0 -0
  97. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/facades/log_interface.py +0 -0
  98. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/facades/paths_interface.py +0 -0
  99. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/facades/tests_interface.py +0 -0
  100. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/files/__init__.py +0 -0
  101. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/files/paths_interface.py +0 -0
  102. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/installer/__init__.py +0 -0
  103. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/installer/output_interface.py +0 -0
  104. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/installer/setup_interface.py +0 -0
  105. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/installer/upgrade_interface.py +0 -0
  106. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/log/__init__.py +0 -0
  107. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/log/logger_interface.py +0 -0
  108. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/pipelines/cli_pipeline_interface.py +0 -0
  109. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/publisher/__init__.py +0 -0
  110. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/publisher/pypi_publisher_interface.py +0 -0
  111. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/test/__init__.py +0 -0
  112. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/test/unit_test_interface.py +0 -0
  113. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/tools/__init__.py +0 -0
  114. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/tools/exception_to_dict_interface.py +0 -0
  115. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/tools/reflection_interface.py +0 -0
  116. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/contracts/tools/std_interface.py +0 -0
  117. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/__init__.py +0 -0
  118. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/environment.py +0 -0
  119. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/log.py +0 -0
  120. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/paths.py +0 -0
  121. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/facades/tests.py +0 -0
  122. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/files/__init__.py +0 -0
  123. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/files/paths.py +0 -0
  124. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/__init__.py +0 -0
  125. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/icon.ascii +0 -0
  126. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/info.ascii +0 -0
  127. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/output.py +0 -0
  128. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/setup.py +0 -0
  129. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/installer/upgrade.py +0 -0
  130. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/log/__init__.py +0 -0
  131. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/log/logger.py +0 -0
  132. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/patterns/singleton.py +0 -0
  133. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/pipelines/__init__.py +0 -0
  134. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/pipelines/cli_pipeline.py +0 -0
  135. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/publisher/__init__.py +0 -0
  136. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/publisher/pypi.py +0 -0
  137. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/bg/galaxy.jpg +0 -0
  138. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/favicon/OrionisFrameworkFavicon.png +0 -0
  139. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/logos/OrionisFramework.jpg +0 -0
  140. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/logos/OrionisFramework.png +0 -0
  141. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/logos/OrionisFramework.psd +0 -0
  142. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/logos/OrionisFramework2.png +0 -0
  143. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/static/logos/OrionisFramework3.png +0 -0
  144. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/test/__init__.py +0 -0
  145. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/test/exception.py +0 -0
  146. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/test/unit_test.py +0 -0
  147. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/tools/__init__.py +0 -0
  148. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/tools/dot_dict.py +0 -0
  149. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/tools/exception_to_dict.py +0 -0
  150. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/tools/reflection.py +0 -0
  151. {orionis-0.40.0 → orionis-0.42.0}/orionis/luminate/tools/std.py +0 -0
  152. {orionis-0.40.0 → orionis-0.42.0}/orionis.egg-info/SOURCES.txt +0 -0
  153. {orionis-0.40.0 → orionis-0.42.0}/orionis.egg-info/dependency_links.txt +0 -0
  154. {orionis-0.40.0 → orionis-0.42.0}/orionis.egg-info/entry_points.txt +0 -0
  155. {orionis-0.40.0 → orionis-0.42.0}/orionis.egg-info/requires.txt +0 -0
  156. {orionis-0.40.0 → orionis-0.42.0}/orionis.egg-info/top_level.txt +0 -0
  157. {orionis-0.40.0 → orionis-0.42.0}/setup.cfg +0 -0
  158. {orionis-0.40.0 → orionis-0.42.0}/setup.py +0 -0
  159. {orionis-0.40.0 → orionis-0.42.0}/tests/__init__.py +0 -0
  160. {orionis-0.40.0 → orionis-0.42.0}/tests/tools/__init__.py +0 -0
  161. {orionis-0.40.0 → orionis-0.42.0}/tests/tools/class_example.py +0 -0
  162. {orionis-0.40.0 → orionis-0.42.0}/tests/tools/test_reflection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.40.0
3
+ Version: 0.42.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
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.40.0"
8
+ VERSION = "0.42.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -7,4 +7,4 @@ class Config:
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
@@ -0,0 +1,109 @@
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
+ Manages the Orionis application lifecycle, ensuring proper initialization
11
+ and cleanup while handling exceptions.
12
+ """
13
+
14
+ def __init__(self):
15
+ """Initialize Orionis with a container and setup state tracking."""
16
+ self.container = None
17
+ self.is_started = False
18
+ self.error_info = None
19
+
20
+ def __enter__(self):
21
+ """
22
+ Starts the Orionis application and registers required dependencies.
23
+
24
+ Returns
25
+ -------
26
+ Orionis
27
+ The initialized Orionis instance.
28
+
29
+ Raises
30
+ ------
31
+ Exception
32
+ If an error occurs during startup.
33
+ """
34
+ try:
35
+ if self.is_started:
36
+ return self
37
+
38
+ self.container = Container()
39
+
40
+ self.container.singleton(CacheConfig)
41
+ self.container.singleton(Register)
42
+ self.container.singleton(Bootstrapper)
43
+
44
+ self.container.make(Register)
45
+ self.container.make(Bootstrapper)
46
+
47
+ self.is_started = True
48
+ return self
49
+
50
+ except Exception as e:
51
+ self.error_info = (e, traceback.format_exc())
52
+ raise
53
+
54
+ def __exit__(self, exc_type, exc_val, exc_tb):
55
+ """
56
+ Cleans up resources and ensures proper shutdown.
57
+
58
+ Returns
59
+ -------
60
+ bool
61
+ False to propagate exceptions.
62
+ """
63
+ self.container = None
64
+ self.is_started = False
65
+
66
+ if exc_type:
67
+ self.error_info = (exc_val, traceback.format_exc())
68
+ return False
69
+
70
+ def isStarted(self):
71
+ """Check if Orionis is currently active."""
72
+ return self.is_started
73
+
74
+ def getError(self):
75
+ """Retrieve stored error information."""
76
+ return self.error_info
77
+
78
+
79
+ class OrionisContext:
80
+ """
81
+ Ensures that Orionis is running within a valid context before allowing access
82
+ to the dependency container.
83
+ """
84
+
85
+ def __enter__(self):
86
+ """
87
+ Validates that Orionis is active and provides access to its container.
88
+
89
+ Returns
90
+ -------
91
+ Container
92
+ The Orionis container instance.
93
+
94
+ Raises
95
+ ------
96
+ RuntimeError
97
+ If Orionis is not running.
98
+ """
99
+ orionis = Orionis()
100
+ if not orionis.isStarted():
101
+ raise RuntimeError(
102
+ "Error: Not running within a valid Orionis Framework context. "
103
+ "Ensure that the Orionis application is correctly initialized."
104
+ )
105
+ return orionis
106
+
107
+ def __exit__(self, exc_type, exc_val, exc_tb):
108
+ """Ensures exceptions propagate naturally."""
109
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.40.0
3
+ Version: 0.42.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,141 +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
-
66
- return self
67
-
68
- except Exception as e:
69
-
70
- self.error_info = (e, traceback.format_exc())
71
- raise
72
-
73
- def __exit__(self, exc_type, exc_val, exc_tb):
74
- """
75
- Exit the runtime context and finish the application.
76
-
77
- Calls the application's finish method to perform cleanup regardless of whether
78
- an exception occurred. If an exception occurred, captures its information and
79
- returns False to indicate that the exception should not be suppressed.
80
-
81
- Parameters
82
- ----------
83
- exc_type : type
84
- The type of the exception raised (if any).
85
- exc_val : Exception
86
- The exception instance raised (if any).
87
- exc_tb : traceback
88
- The traceback associated with the exception (if any).
89
-
90
- Returns
91
- -------
92
- bool
93
- Always returns False so that any exception is propagated.
94
- """
95
- try:
96
- self.container = None
97
- finally:
98
- self.is_started = False
99
-
100
- if exc_type:
101
- self.error_info = (exc_val, traceback.format_exc())
102
- return False
103
-
104
- def isStarted(self):
105
- """
106
- Check if the application is currently active.
107
-
108
- Returns
109
- -------
110
- bool
111
- True if the application has been started and is active, False otherwise.
112
- """
113
- return self.is_started
114
-
115
- def getError(self):
116
- """
117
- Retrieve the stored error information.
118
-
119
- Returns
120
- -------
121
- tuple or None
122
- A tuple containing the exception and its formatted traceback if an error occurred;
123
- otherwise, None.
124
- """
125
- return self.error_info
126
-
127
- class OrionisContext(metaclass=SingletonMeta):
128
-
129
- def __init__(self):
130
- self.orionis = Orionis()
131
-
132
- def __enter__(self):
133
- if self.orionis.isStarted():
134
- return self.orionis.container
135
- raise Exception(
136
- "Error: Not running within a valid Orionis Framework context. "
137
- "Please ensure that you are using the proper context manager."
138
- )
139
-
140
- def __exit__(self, exc_type, exc_val, exc_tb):
141
- pass
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes