orionis 0.399.0__py3-none-any.whl → 0.401.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.
@@ -25,7 +25,7 @@ class Console(IConsole):
25
25
  """
26
26
  return f"{ANSIColors.TEXT_MUTED.value}{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}{ANSIColors.DEFAULT.value}"
27
27
 
28
- def __printWithBackground(self, label: str, bg_color: ANSIColors, message: str, timestamp: bool):
28
+ def __printWithBackground(self, label: str, bg_color: ANSIColors, message: str, timestamp: bool) -> None:
29
29
  """
30
30
  Prints a formatted message with a background color.
31
31
 
@@ -43,7 +43,7 @@ class Console(IConsole):
43
43
  str_time = self.__getTimestamp() if timestamp else ''
44
44
  print(f"{bg_color.value}{ANSIColors.TEXT_WHITE.value} {label} {ANSIColors.DEFAULT.value} {str_time} {message}{ANSIColors.DEFAULT.value}")
45
45
 
46
- def __printColored(self, message: str, text_color: ANSIColors):
46
+ def __printColored(self, message: str, text_color: ANSIColors) -> None:
47
47
  """
48
48
  Prints a message with a specified text color.
49
49
 
@@ -56,7 +56,7 @@ class Console(IConsole):
56
56
  """
57
57
  print(f"{text_color.value}{message}{ANSIColors.DEFAULT.value}")
58
58
 
59
- def success(self, message: str, timestamp: bool = True):
59
+ def success(self, message: str, timestamp: bool = True) -> None:
60
60
  """
61
61
  Prints a success message with a green background.
62
62
 
@@ -69,7 +69,7 @@ class Console(IConsole):
69
69
  """
70
70
  self.__printWithBackground("SUCCESS", ANSIColors.BG_SUCCESS, message, timestamp)
71
71
 
72
- def textSuccess(self, message: str):
72
+ def textSuccess(self, message: str) -> None:
73
73
  """
74
74
  Prints a success message in green.
75
75
 
@@ -80,7 +80,7 @@ class Console(IConsole):
80
80
  """
81
81
  self.__printColored(message, ANSIColors.TEXT_SUCCESS)
82
82
 
83
- def textSuccessBold(self, message: str):
83
+ def textSuccessBold(self, message: str) -> None:
84
84
  """
85
85
  Prints a bold success message in green.
86
86
 
@@ -91,7 +91,7 @@ class Console(IConsole):
91
91
  """
92
92
  self.__printColored(message, ANSIColors.TEXT_BOLD_SUCCESS)
93
93
 
94
- def info(self, message: str, timestamp: bool = True):
94
+ def info(self, message: str, timestamp: bool = True) -> None:
95
95
  """
96
96
  Prints an informational message with a blue background.
97
97
 
@@ -104,7 +104,7 @@ class Console(IConsole):
104
104
  """
105
105
  self.__printWithBackground("INFO", ANSIColors.BG_INFO, message, timestamp)
106
106
 
107
- def textInfo(self, message: str):
107
+ def textInfo(self, message: str) -> None:
108
108
  """
109
109
  Prints an informational message in blue.
110
110
 
@@ -115,7 +115,7 @@ class Console(IConsole):
115
115
  """
116
116
  self.__printColored(message, ANSIColors.TEXT_INFO)
117
117
 
118
- def textInfoBold(self, message: str):
118
+ def textInfoBold(self, message: str) -> None:
119
119
  """
120
120
  Prints a bold informational message in blue.
121
121
 
@@ -126,7 +126,7 @@ class Console(IConsole):
126
126
  """
127
127
  self.__printColored(message, ANSIColors.TEXT_BOLD_INFO)
128
128
 
129
- def warning(self, message: str, timestamp: bool = True):
129
+ def warning(self, message: str, timestamp: bool = True) -> None:
130
130
  """
131
131
  Prints a warning message with a yellow background.
132
132
 
@@ -139,7 +139,7 @@ class Console(IConsole):
139
139
  """
140
140
  self.__printWithBackground("WARNING", ANSIColors.BG_WARNING, message, timestamp)
141
141
 
142
- def textWarning(self, message: str):
142
+ def textWarning(self, message: str) -> None:
143
143
  """
144
144
  Prints a warning message in yellow.
145
145
 
@@ -150,7 +150,7 @@ class Console(IConsole):
150
150
  """
151
151
  self.__printColored(message, ANSIColors.TEXT_WARNING)
152
152
 
153
- def textWarningBold(self, message: str):
153
+ def textWarningBold(self, message: str) -> None:
154
154
  """
155
155
  Prints a bold warning message in yellow.
156
156
 
@@ -161,7 +161,7 @@ class Console(IConsole):
161
161
  """
162
162
  self.__printColored(message, ANSIColors.TEXT_BOLD_WARNING)
163
163
 
164
- def fail(self, message: str, timestamp: bool = True):
164
+ def fail(self, message: str, timestamp: bool = True) -> None:
165
165
  """
166
166
  Prints a failure message with a red background.
167
167
 
@@ -174,7 +174,7 @@ class Console(IConsole):
174
174
  """
175
175
  self.__printWithBackground("FAIL", ANSIColors.BG_FAIL, message, timestamp)
176
176
 
177
- def error(self, message: str, timestamp: bool = True):
177
+ def error(self, message: str, timestamp: bool = True) -> None:
178
178
  """
179
179
  Prints an error message with a red background.
180
180
 
@@ -187,7 +187,7 @@ class Console(IConsole):
187
187
  """
188
188
  self.__printWithBackground("ERROR", ANSIColors.BG_ERROR, message, timestamp)
189
189
 
190
- def textError(self, message: str):
190
+ def textError(self, message: str) -> None:
191
191
  """
192
192
  Prints an error message in red.
193
193
 
@@ -198,7 +198,7 @@ class Console(IConsole):
198
198
  """
199
199
  self.__printColored(message, ANSIColors.TEXT_ERROR)
200
200
 
201
- def textErrorBold(self, message: str):
201
+ def textErrorBold(self, message: str) -> None:
202
202
  """
203
203
  Prints a bold error message in red.
204
204
 
@@ -209,7 +209,7 @@ class Console(IConsole):
209
209
  """
210
210
  self.__printColored(message, ANSIColors.TEXT_BOLD_ERROR)
211
211
 
212
- def textMuted(self, message: str):
212
+ def textMuted(self, message: str) -> None:
213
213
  """
214
214
  Prints a muted (gray) message.
215
215
 
@@ -220,7 +220,7 @@ class Console(IConsole):
220
220
  """
221
221
  self.__printColored(message, ANSIColors.TEXT_MUTED)
222
222
 
223
- def textMutedBold(self, message: str):
223
+ def textMutedBold(self, message: str) -> None:
224
224
  """
225
225
  Prints a bold muted (gray) message.
226
226
 
@@ -231,7 +231,7 @@ class Console(IConsole):
231
231
  """
232
232
  self.__printColored(message, ANSIColors.TEXT_BOLD_MUTED)
233
233
 
234
- def textUnderline(self, message: str):
234
+ def textUnderline(self, message: str) -> None:
235
235
  """
236
236
  Prints an underlined message.
237
237
 
@@ -242,26 +242,26 @@ class Console(IConsole):
242
242
  """
243
243
  print(f"{ANSIColors.TEXT_STYLE_UNDERLINE.value}{message}{ANSIColors.DEFAULT.value}")
244
244
 
245
- def clear(self):
245
+ def clear(self) -> None:
246
246
  """
247
247
  Clears the console screen.
248
248
  """
249
249
  os.system('cls' if os.name == 'nt' else 'clear')
250
250
 
251
- def clearLine(self):
251
+ def clearLine(self) -> None:
252
252
  """
253
253
  Clears the current line in the console.
254
254
  """
255
255
  sys.stdout.write("\r \r")
256
256
  sys.stdout.flush()
257
257
 
258
- def line(self):
258
+ def line(self) -> None:
259
259
  """
260
260
  Prints a horizontal line in the console.
261
261
  """
262
262
  print("\n", end="")
263
263
 
264
- def newLine(self, count: int = 1):
264
+ def newLine(self, count: int = 1) -> None:
265
265
  """
266
266
  Prints multiple new lines.
267
267
 
@@ -279,7 +279,7 @@ class Console(IConsole):
279
279
  raise ValueError(f"Unsupported Value '{count}'")
280
280
  print("\n" * count, end="")
281
281
 
282
- def write(self, message: str):
282
+ def write(self, message: str) -> None:
283
283
  """
284
284
  Prints a message without moving to the next line.
285
285
 
@@ -291,7 +291,7 @@ class Console(IConsole):
291
291
  sys.stdout.write(f"{message}")
292
292
  sys.stdout.flush()
293
293
 
294
- def writeLine(self, message: str):
294
+ def writeLine(self, message: str) -> None:
295
295
  """
296
296
  Prints a message and moves to the next line.
297
297
 
@@ -355,7 +355,7 @@ class Console(IConsole):
355
355
  """
356
356
  return getpass.getpass(f"{ANSIColors.TEXT_INFO.value}{str(question).strip()}{ANSIColors.DEFAULT.value} ")
357
357
 
358
- def table(self, headers: list, rows: list):
358
+ def table(self, headers: list, rows: list) -> None:
359
359
  """
360
360
  Prints a table in the console with the given headers and rows, with bold headers.
361
361
 
@@ -402,7 +402,7 @@ class Console(IConsole):
402
402
 
403
403
  print(bottom_border)
404
404
 
405
- def anticipate(self, question: str, options: list, default=None):
405
+ def anticipate(self, question: str, options: list, default=None) -> str:
406
406
  """
407
407
  Provides autocomplete suggestions based on user input.
408
408
 
@@ -1,3 +1,4 @@
1
+ import time
1
2
  from pathlib import Path
2
3
  from typing import Any, List, Type
3
4
  from orionis.container.container import Container
@@ -16,6 +17,7 @@ from orionis.foundation.config.startup import Configuration
16
17
  from orionis.foundation.config.testing.entities.testing import Testing
17
18
  from orionis.foundation.contracts.application import IApplication
18
19
  from orionis.foundation.contracts.config import IConfig
20
+ from orionis.foundation.exceptions import OrionisTypeError, OrionisRuntimeError
19
21
 
20
22
  class Application(Container, IApplication):
21
23
  """
@@ -59,24 +61,47 @@ class Application(Container, IApplication):
59
61
 
60
62
  # Singleton pattern - prevent multiple initializations
61
63
  if not hasattr(self, '_Application__initialized'):
62
- self.__providers: List[IServiceProvider] = []
64
+ self.__providers: List[IServiceProvider, Any] = []
63
65
  self.__configurators : dict = {}
64
66
  self.__config: dict = {}
65
67
  self.__booted: bool = False
68
+ self.__startAt = time.time_ns()
69
+
70
+ # Flag to prevent re-initialization
66
71
  self.__initialized = True
67
72
 
73
+ # << Frameworks Kernel >>
74
+
75
+ def __loadFrameworksKernel(
76
+ self
77
+ ) -> None:
78
+ """
79
+ Load and register core framework kernels.
80
+
81
+ Instantiates and registers kernel components:
82
+ - TestKernel: Testing framework kernel
83
+ """
84
+ # Import core framework kernels
85
+ from orionis.test.kernel import TestKernel, ITestKernel
86
+
87
+ # Core framework kernels
88
+ core_kernels = {
89
+ ITestKernel: TestKernel
90
+ }
91
+
92
+ # Register each kernel instance
93
+ for kernel_name, kernel_cls in core_kernels.items():
94
+ self.instance(kernel_name, kernel_cls(self))
95
+
96
+ # << Service Providers >>
97
+
68
98
  def __loadFrameworkProviders(
69
99
  self
70
100
  ) -> None:
71
101
  """
72
102
  Load core framework service providers.
73
103
 
74
- Registers essential providers required for framework operation:
75
- - ConsoleProvider: Console output management
76
- - DumperProvider: Data dumping utilities
77
- - PathResolverProvider: Path resolution services
78
- - ProgressBarProvider: Progress bar functionality
79
- - WorkersProvider: Worker management
104
+ Registers essential providers required for framework operation
80
105
  """
81
106
  # Import core framework providers
82
107
  from orionis.foundation.providers.console_provider import ConsoleProvider
@@ -98,27 +123,6 @@ class Application(Container, IApplication):
98
123
  for provider_cls in core_providers:
99
124
  self.addProvider(provider_cls)
100
125
 
101
- def __loadFrameworksKernel(
102
- self
103
- ) -> None:
104
- """
105
- Load and register core framework kernels.
106
-
107
- Instantiates and registers kernel components:
108
- - TestKernel: Testing framework kernel
109
- """
110
- # Import core framework kernels
111
- from orionis.test.kernel import TestKernel, ITestKernel
112
-
113
- # Core framework kernels
114
- core_kernels = {
115
- ITestKernel: TestKernel
116
- }
117
-
118
- # Register each kernel instance
119
- for kernel_name, kernel_cls in core_kernels.items():
120
- self.instance(kernel_name, kernel_cls(self))
121
-
122
126
  def __registerProviders(
123
127
  self
124
128
  ) -> None:
@@ -128,8 +132,24 @@ class Application(Container, IApplication):
128
132
  Calls the register method on each provider to bind services
129
133
  into the container.
130
134
  """
135
+
136
+ # Ensure providers list is empty before registration
137
+ initialized_providers = []
138
+
139
+ # Iterate over each provider and register it
131
140
  for provider in self.__providers:
132
- provider.register()
141
+
142
+ # Initialize the provider
143
+ class_provider: IServiceProvider = provider(self)
144
+
145
+ # Register the provider in the container
146
+ class_provider.register()
147
+
148
+ # Add the initialized provider to the list
149
+ initialized_providers.append(class_provider)
150
+
151
+ # Update the providers list with initialized providers
152
+ self.__providers = initialized_providers
133
153
 
134
154
  def __bootProviders(
135
155
  self
@@ -140,8 +160,12 @@ class Application(Container, IApplication):
140
160
  Calls the boot method on each provider to initialize services
141
161
  after all providers have been registered.
142
162
  """
163
+ # Iterate over each provider and boot it
143
164
  for provider in self.__providers:
144
- provider.boot()
165
+
166
+ # Ensure provider is initialized before calling boot
167
+ if hasattr(provider, 'boot') and callable(getattr(provider, 'boot')):
168
+ provider.boot()
145
169
 
146
170
  def withProviders(
147
171
  self,
@@ -187,20 +211,58 @@ class Application(Container, IApplication):
187
211
 
188
212
  Raises
189
213
  ------
190
- TypeError
214
+ OrionisTypeError
191
215
  If provider is not a subclass of IServiceProvider
192
216
  """
193
217
 
194
218
  # Validate provider type
195
219
  if not isinstance(provider, type) or not issubclass(provider, IServiceProvider):
196
- raise TypeError(f"Expected IServiceProvider class, got {type(provider).__name__}")
220
+ raise OrionisTypeError(f"Expected IServiceProvider class, got {type(provider).__name__}")
221
+
222
+ # Add the provider to the list
223
+ if provider not in self.__providers:
224
+ self.__providers.append(provider)
197
225
 
198
- # Instantiate and add provider
199
- self.__providers.append(provider(self))
226
+ # If already added, raise an error
227
+ else:
228
+ raise OrionisTypeError(f"Provider {provider.__name__} is already registered.")
200
229
 
201
230
  # Return self instance.
202
231
  return self
203
232
 
233
+ # << Configuration >>
234
+
235
+ def __loadConfig(
236
+ self,
237
+ ) -> None:
238
+ """
239
+ Retrieve a configuration value by key.
240
+
241
+ Returns
242
+ -------
243
+ None
244
+ Initializes the application configuration if not already set.
245
+ """
246
+
247
+ # Try to load the configuration
248
+ try:
249
+
250
+ # Check if configuration is a dictionary
251
+ if not self.__config:
252
+
253
+ # Initialize with default configuration
254
+ if not self.__configurators:
255
+ self.__config = Configuration().toDict()
256
+
257
+ # If configurators are provided, use them to create the configuration
258
+ else:
259
+ self.__config = Configuration(**self.__configurators).toDict()
260
+
261
+ except Exception as e:
262
+
263
+ # Handle any exceptions during configuration loading
264
+ raise OrionisRuntimeError(f"Failed to load application configuration: {str(e)}")
265
+
204
266
  def withConfigurators(
205
267
  self,
206
268
  *,
@@ -354,7 +416,7 @@ class Application(Container, IApplication):
354
416
 
355
417
  # Validate config type
356
418
  if not isinstance(app, App):
357
- raise TypeError(f"Expected App instance, got {type(app).__name__}")
419
+ raise OrionisTypeError(f"Expected App instance, got {type(app).__name__}")
358
420
 
359
421
  # Store the configuration
360
422
  self.__configurators['app'] = app
@@ -407,7 +469,7 @@ class Application(Container, IApplication):
407
469
 
408
470
  # Validate auth type
409
471
  if not isinstance(auth, Auth):
410
- raise TypeError(f"Expected Auth instance, got {type(auth).__name__}")
472
+ raise OrionisTypeError(f"Expected Auth instance, got {type(auth).__name__}")
411
473
 
412
474
  # Store the configuration
413
475
  self.__configurators['auth'] = auth
@@ -460,7 +522,7 @@ class Application(Container, IApplication):
460
522
 
461
523
  # Validate cache type
462
524
  if not isinstance(cache, Cache):
463
- raise TypeError(f"Expected Cache instance, got {type(cache).__name__}")
525
+ raise OrionisTypeError(f"Expected Cache instance, got {type(cache).__name__}")
464
526
 
465
527
  # Store the configuration
466
528
  self.__configurators['cache'] = cache
@@ -513,7 +575,7 @@ class Application(Container, IApplication):
513
575
 
514
576
  # Validate cors type
515
577
  if not isinstance(cors, Cors):
516
- raise TypeError(f"Expected Cors instance, got {type(cors).__name__}")
578
+ raise OrionisTypeError(f"Expected Cors instance, got {type(cors).__name__}")
517
579
 
518
580
  # Store the configuration
519
581
  self.__configurators['cors'] = cors
@@ -569,7 +631,7 @@ class Application(Container, IApplication):
569
631
 
570
632
  # Validate database type
571
633
  if not isinstance(database, Database):
572
- raise TypeError(f"Expected Database instance, got {type(database).__name__}")
634
+ raise OrionisTypeError(f"Expected Database instance, got {type(database).__name__}")
573
635
 
574
636
  # Store the configuration
575
637
  self.__configurators['database'] = database
@@ -625,7 +687,7 @@ class Application(Container, IApplication):
625
687
 
626
688
  # Validate filesystems type
627
689
  if not isinstance(filesystems, Filesystems):
628
- raise TypeError(f"Expected Filesystems instance, got {type(filesystems).__name__}")
690
+ raise OrionisTypeError(f"Expected Filesystems instance, got {type(filesystems).__name__}")
629
691
 
630
692
  # Store the configuration
631
693
  self.__configurators['filesystems'] = filesystems
@@ -681,7 +743,7 @@ class Application(Container, IApplication):
681
743
 
682
744
  # Validate logging type
683
745
  if not isinstance(logging, Logging):
684
- raise TypeError(f"Expected Logging instance, got {type(logging).__name__}")
746
+ raise OrionisTypeError(f"Expected Logging instance, got {type(logging).__name__}")
685
747
 
686
748
  # Store the configuration
687
749
  self.__configurators['logging'] = logging
@@ -737,7 +799,7 @@ class Application(Container, IApplication):
737
799
 
738
800
  # Validate mail type
739
801
  if not isinstance(mail, Mail):
740
- raise TypeError(f"Expected Mail instance, got {type(mail).__name__}")
802
+ raise OrionisTypeError(f"Expected Mail instance, got {type(mail).__name__}")
741
803
 
742
804
  # Store the configuration
743
805
  self.__configurators['mail'] = mail
@@ -793,7 +855,7 @@ class Application(Container, IApplication):
793
855
 
794
856
  # Validate queue type
795
857
  if not isinstance(queue, Queue):
796
- raise TypeError(f"Expected Queue instance, got {type(queue).__name__}")
858
+ raise OrionisTypeError(f"Expected Queue instance, got {type(queue).__name__}")
797
859
 
798
860
  # Store the configuration
799
861
  self.__configurators['queue'] = queue
@@ -849,7 +911,7 @@ class Application(Container, IApplication):
849
911
 
850
912
  # Validate session type
851
913
  if not isinstance(session, Session):
852
- raise TypeError(f"Expected Session instance, got {type(session).__name__}")
914
+ raise OrionisTypeError(f"Expected Session instance, got {type(session).__name__}")
853
915
 
854
916
  # Store the configuration
855
917
  self.__configurators['session'] = session
@@ -905,7 +967,7 @@ class Application(Container, IApplication):
905
967
 
906
968
  # Validate testing type
907
969
  if not isinstance(testing, Testing):
908
- raise TypeError(f"Expected Testing instance, got {type(testing).__name__}")
970
+ raise OrionisTypeError(f"Expected Testing instance, got {type(testing).__name__}")
909
971
 
910
972
  # Store the configuration
911
973
  self.__configurators['testing'] = testing
@@ -913,36 +975,7 @@ class Application(Container, IApplication):
913
975
  # Return the application instance for method chaining
914
976
  return self
915
977
 
916
- def __loadConfig(
917
- self,
918
- ) -> None:
919
- """
920
- Retrieve a configuration value by key.
921
-
922
- Returns
923
- -------
924
- None
925
- Initializes the application configuration if not already set.
926
- """
927
-
928
- # Try to load the configuration
929
- try:
930
-
931
- # Check if configuration is a dictionary
932
- if not self.__config:
933
-
934
- # Initialize with default configuration
935
- if not self.__configurators:
936
- self.__config = Configuration().toDict()
937
-
938
- # If configurators are provided, use them to create the configuration
939
- else:
940
- self.__config = Configuration(**self.__configurators).toDict()
941
-
942
- except Exception as e:
943
-
944
- # Handle any exceptions during configuration loading
945
- raise RuntimeError(f"Failed to load application configuration: {str(e)}")
978
+ # << Application Lifecycle >>
946
979
 
947
980
  def create(
948
981
  self
@@ -958,22 +991,24 @@ class Application(Container, IApplication):
958
991
  # Check if already booted
959
992
  if not self.__booted:
960
993
 
961
- # Load core framework components
962
- self.__loadFrameworkProviders()
963
- self.__loadFrameworksKernel()
994
+ # Load configuration if not already set
995
+ self.__loadConfig()
964
996
 
965
- # Register and boot all providers
997
+ # Load framework providers and register them
998
+ self.__loadFrameworkProviders()
966
999
  self.__registerProviders()
967
1000
  self.__bootProviders()
968
1001
 
969
- # Load configuration if not already set
970
- self.__loadConfig()
1002
+ # Load core framework kernels
1003
+ self.__loadFrameworksKernel()
971
1004
 
972
1005
  # Mark as booted
973
1006
  self.__booted = True
974
1007
 
975
1008
  return self
976
1009
 
1010
+ # << Configuration Access >>
1011
+
977
1012
  def config(
978
1013
  self,
979
1014
  key: str,
@@ -1023,6 +1058,8 @@ class Application(Container, IApplication):
1023
1058
  # Return the final configuration value
1024
1059
  return config_value
1025
1060
 
1061
+ # << Path Configuration Access >>
1062
+
1026
1063
  def path(
1027
1064
  self,
1028
1065
  key: str,
@@ -1,7 +1,11 @@
1
1
  from .integrity import OrionisIntegrityException
2
2
  from .value import OrionisValueError
3
+ from .type import OrionisTypeError
4
+ from .runtime import OrionisRuntimeError
3
5
 
4
6
  __all__ = [
5
7
  "OrionisIntegrityException",
6
- "OrionisValueError"
8
+ "OrionisValueError",
9
+ "OrionisTypeError",
10
+ "OrionisRuntimeError"
7
11
  ]
@@ -0,0 +1,19 @@
1
+ class OrionisRuntimeError(RuntimeError):
2
+
3
+ def __init__(self, msg: str):
4
+ """
5
+ Parameters
6
+ ----------
7
+ msg : str
8
+ Descriptive error message explaining the cause of the exception.
9
+ """
10
+ super().__init__(msg)
11
+
12
+ def __str__(self) -> str:
13
+ """
14
+ Returns
15
+ -------
16
+ str
17
+ Formatted string describing the exception.
18
+ """
19
+ return str(self.args[0])
@@ -0,0 +1,19 @@
1
+ class OrionisTypeError(TypeError):
2
+
3
+ def __init__(self, msg: str):
4
+ """
5
+ Parameters
6
+ ----------
7
+ msg : str
8
+ Descriptive error message explaining the cause of the exception.
9
+ """
10
+ super().__init__(msg)
11
+
12
+ def __str__(self) -> str:
13
+ """
14
+ Returns
15
+ -------
16
+ str
17
+ Formatted string describing the exception.
18
+ """
19
+ return str(self.args[0])
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.399.0"
8
+ VERSION = "0.401.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.399.0
3
+ Version: 0.401.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
@@ -106,7 +106,7 @@ orionis/console/dynamic/progress_bar.py,sha256=ZoBTpKa-3kef5dD58XF89dq4fjChOWUuJ
106
106
  orionis/console/dynamic/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  orionis/console/dynamic/contracts/progress_bar.py,sha256=sOkQzQsliFemqZHMyzs4fWhNJfXDTk5KH3aExReetSE,1760
108
108
  orionis/console/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- orionis/console/output/console.py,sha256=HO_s-3z0nEglp0euodYJ4-p5FpSHZoMGJnfwwbo-Xhs,18376
109
+ orionis/console/output/console.py,sha256=QYV4M2NCGMb2GBUmle5_iAJSXkfbBjfj9gfygiMCCrI,18583
110
110
  orionis/console/output/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  orionis/console/output/contracts/console.py,sha256=F2c1jC_O61o7jDiXwAeZAOEodEhuCppMbx_yDJvm6rU,11915
112
112
  orionis/console/output/enums/__init__.py,sha256=LAaAxg-DpArCjf_jqZ0_9s3p8899gntDYkSU_ppTdC8,66
@@ -146,7 +146,7 @@ orionis/container/validators/is_subclass.py,sha256=4sBaGLoRs8nUhuWjlP0VJqyTwVHYq
146
146
  orionis/container/validators/is_valid_alias.py,sha256=4uAYcq8xov7jZbXnpKpjNkxcZtlTNnL5RRctVPMwJes,1424
147
147
  orionis/container/validators/lifetime.py,sha256=IQ43fDNrxYHMlZH2zlYDJnlkLO_eS4U7Fs3UJgQBidI,1844
148
148
  orionis/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- orionis/foundation/application.py,sha256=Nxv_0nfBec8mOlEFVED0UY7PFgWw_e5uBoM4e-0T2w8,33794
149
+ orionis/foundation/application.py,sha256=iR8wCicowPy4Rfn-teOlLgN3ILWCPC9TuiCPX7dvyCM,34992
150
150
  orionis/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  orionis/foundation/config/startup.py,sha256=zutF-34DkW68bpiTxH9xrmIe1iJdXCF9Y6wueXS6qys,8265
152
152
  orionis/foundation/config/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -237,8 +237,10 @@ orionis/foundation/config/testing/enums/test_mode.py,sha256=IbFpauu7J-iSAfmC8jDb
237
237
  orionis/foundation/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  orionis/foundation/contracts/application.py,sha256=iFUGJBnA3Aqab9x4axqRiuzyORpwj37JL--Npjn1e1w,16739
239
239
  orionis/foundation/contracts/config.py,sha256=Rpz6U6t8OXHO9JJKSTnCimytXE-tfCB-1ithP2nG8MQ,628
240
- orionis/foundation/exceptions/__init__.py,sha256=XtG3MJ_MFNY_dU5mmTyz_N_4QG1jYrcv5RegBso7wuY,163
240
+ orionis/foundation/exceptions/__init__.py,sha256=q6we1N8kcd6j6GjUJY30WQhhHnqF9RXA0c6-ksEztlc,294
241
241
  orionis/foundation/exceptions/integrity.py,sha256=mc4pL1UMoYRHEmphnpW2oGk5URhu7DJRREyzHaV-cs8,472
242
+ orionis/foundation/exceptions/runtime.py,sha256=QS9Wjy79UFoM_lA-JR907p4l4Z8ae5E810HAHAnmIq8,469
243
+ orionis/foundation/exceptions/type.py,sha256=Ug51YdaUKUlbngR0KeWnJNqIwS9StP4ScVobFY1eI18,463
242
244
  orionis/foundation/exceptions/value.py,sha256=hQhXybXEnaa59ba7JxG65jceHt3mnql9MyekF-TChpM,465
243
245
  orionis/foundation/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
246
  orionis/foundation/providers/console_provider.py,sha256=pAIklY1QKx2HKjTp7YyJT6KbJPlEEyzWSr79RTFkEK0,700
@@ -247,7 +249,7 @@ orionis/foundation/providers/path_resolver_provider.py,sha256=rXvaVc5sSqmDgRzWJo
247
249
  orionis/foundation/providers/progress_bar_provider.py,sha256=75Jr4iEgUOUGl8Di1DioeP5_HRQlR-1lVzPmS96sWjA,737
248
250
  orionis/foundation/providers/workers_provider.py,sha256=WWlji3C69_-Y0c42aZDbR_bmcE_qZEh2SaA_cNkCivI,702
249
251
  orionis/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
- orionis/metadata/framework.py,sha256=K8scP1C_3ceCS2Knn8YTyYMxbmUHtFWI98zWSnaLpns,4960
252
+ orionis/metadata/framework.py,sha256=MLtGTsXjWHcB5c3RgU7UBQwFK4J8P7LcyvlGs6KMKkc,4960
251
253
  orionis/metadata/package.py,sha256=tqLfBRo-w1j_GN4xvzUNFyweWYFS-qhSgAEc-AmCH1M,5452
252
254
  orionis/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
255
  orionis/services/asynchrony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -384,7 +386,7 @@ orionis/test/records/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
384
386
  orionis/test/records/logs.py,sha256=EOQcloMVdhlNl2lU9igQz8H4b-OtKtiwh2pgr_QZWOI,13186
385
387
  orionis/test/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
388
  orionis/test/view/render.py,sha256=zd7xDvVfmQ2HxZamDTzL2-z2PpyL99EaolbbM7wTah4,5014
387
- orionis-0.399.0.dist-info/licenses/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
389
+ orionis-0.401.0.dist-info/licenses/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
388
390
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
389
391
  tests/example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
390
392
  tests/example/test_example.py,sha256=yctjQT5ocYEu__kNvJxmQJ-l5yxRMkohwcfYWSjWDVo,25566
@@ -485,8 +487,8 @@ tests/support/wrapper/test_services_wrapper_docdict.py,sha256=nTNrvJkMSPx_aopEQ9
485
487
  tests/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
486
488
  tests/testing/test_testing_result.py,sha256=fnH7hjumNSErAFGITJgq2LHxSzvPF2tdtmHL9kyAv-Y,4409
487
489
  tests/testing/test_testing_unit.py,sha256=d3CRGo6608fMzYcZKIKapjx_af2aigqWiKSiuK9euIY,7600
488
- orionis-0.399.0.dist-info/METADATA,sha256=W1dRShLunXjACwe2Xjv3LK4FEiBPaa8b9gMMN1oEQL4,4772
489
- orionis-0.399.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
490
- orionis-0.399.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
491
- orionis-0.399.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
492
- orionis-0.399.0.dist-info/RECORD,,
490
+ orionis-0.401.0.dist-info/METADATA,sha256=zemxSu70wMLycOtdjYYtp5aW6MjkdPBBhBEkC8yWLg4,4772
491
+ orionis-0.401.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
492
+ orionis-0.401.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
493
+ orionis-0.401.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
494
+ orionis-0.401.0.dist-info/RECORD,,