orionis 0.497.0__py3-none-any.whl → 0.499.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.
@@ -65,7 +65,7 @@ class BaseExceptionHandler(IBaseExceptionHandler):
65
65
  # Check if the exception type is in the list of exceptions to ignore
66
66
  return hasattr(self, 'dont_cathc') and throwable.classtype in self.dont_cathc
67
67
 
68
- def report (self, exception: BaseException, log: ILogger) -> Any:
68
+ def report(self, exception: BaseException, log: ILogger) -> Any:
69
69
  """
70
70
  Report or log an exception.
71
71
 
@@ -193,6 +193,7 @@ class Application(Container, IApplication):
193
193
  from orionis.foundation.providers.performance_counter_provider import PerformanceCounterProvider
194
194
  from orionis.foundation.providers.scheduler_provider import ScheduleProvider
195
195
  from orionis.foundation.providers.catch_provider import CathcProvider
196
+ from orionis.foundation.providers.directory_provider import DirectoryProvider
196
197
 
197
198
  # Core framework providers
198
199
  core_providers = [
@@ -207,7 +208,8 @@ class Application(Container, IApplication):
207
208
  ReactorProvider,
208
209
  PerformanceCounterProvider,
209
210
  ScheduleProvider,
210
- CathcProvider
211
+ CathcProvider,
212
+ DirectoryProvider
211
213
  ]
212
214
 
213
215
  # Register each core provider
@@ -1401,6 +1403,7 @@ class Application(Container, IApplication):
1401
1403
  sessions: str | Path = (Path.cwd() / 'storage' / 'framework' / 'sessions').resolve(),
1402
1404
  cache: str | Path = (Path.cwd() / 'storage' / 'framework' / 'cache').resolve(),
1403
1405
  testing: str | Path = (Path.cwd() / 'storage' / 'framework' / 'testing').resolve(),
1406
+ storage: str | Path = (Path.cwd() / 'storage').resolve()
1404
1407
  ) -> 'Application':
1405
1408
  """
1406
1409
  Set and resolve application directory paths using keyword arguments.
@@ -1505,7 +1508,8 @@ class Application(Container, IApplication):
1505
1508
  'logs' : str(logs),
1506
1509
  'sessions' : str(sessions),
1507
1510
  'cache' : str(cache),
1508
- 'testing' : str(testing)
1511
+ 'testing' : str(testing),
1512
+ 'storage' : str(storage)
1509
1513
  }
1510
1514
 
1511
1515
  # Return self instance for method chaining
@@ -230,6 +230,14 @@ class Paths(BaseEntity):
230
230
  }
231
231
  )
232
232
 
233
+ storage: str = field(
234
+ default_factory = lambda: str((Path.cwd() / 'storage').resolve()),
235
+ metadata = {
236
+ 'description': 'Directory for application storage files.',
237
+ 'default': lambda: str((Path.cwd() / 'storage').resolve())
238
+ }
239
+ )
240
+
233
241
  def __post_init__(self) -> None:
234
242
  """
235
243
  Post-initialization hook to validate path attributes.
@@ -0,0 +1,55 @@
1
+ from orionis.container.providers.service_provider import ServiceProvider
2
+ from orionis.services.file.contracts.directory import IDirectory
3
+ from orionis.services.file.directory import Directory
4
+
5
+ class DirectoryProvider(ServiceProvider):
6
+ """
7
+ Service provider for registering the directory service in the application container.
8
+
9
+ This provider binds the `IDirectory` interface to its concrete implementation (`Directory`)
10
+ as a singleton. This ensures that a single shared instance of the directory service is
11
+ available for dependency injection throughout the application.
12
+
13
+ Attributes
14
+ ----------
15
+ app : Application
16
+ The application container instance where services are registered.
17
+
18
+ Methods
19
+ -------
20
+ register()
21
+ Registers the directory service as a singleton in the application container.
22
+ boot()
23
+ Performs post-registration actions if necessary.
24
+ """
25
+
26
+ def register(self) -> None:
27
+ """
28
+ Register the directory service as a singleton in the application container.
29
+
30
+ This method binds the `IDirectory` interface to the `Directory` implementation with
31
+ a specific alias. Only one instance of `Directory` will be created and shared
32
+ throughout the application's lifecycle.
33
+
34
+ Returns
35
+ -------
36
+ None
37
+ This method does not return any value.
38
+ """
39
+ # Bind IDirectory to Directory as a singleton with a specific alias
40
+ self.app.singleton(IDirectory, Directory, alias="x-orionis.services.file.contracts.directory")
41
+
42
+ def boot(self) -> None:
43
+ """
44
+ Perform actions required after all providers have been registered.
45
+
46
+ This method is called after the `register` phase. It can be used for additional
47
+ initialization if needed. No additional boot logic is required for this provider.
48
+
49
+ Returns
50
+ -------
51
+ None
52
+ This method does not return any value.
53
+ """
54
+ # No additional boot logic required for this provider
55
+ pass
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.497.0"
8
+ VERSION = "0.499.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
File without changes
@@ -0,0 +1,329 @@
1
+ from abc import ABC, abstractmethod
2
+ from pathlib import Path
3
+ from orionis.foundation.contracts.application import IApplication
4
+
5
+ class IDirectory(ABC):
6
+
7
+ @abstractmethod
8
+ def root(self) -> Path:
9
+ """
10
+ Get the root directory path of the application.
11
+
12
+ Returns
13
+ -------
14
+ Path
15
+ The path to the application's root directory.
16
+ """
17
+ pass
18
+
19
+ @abstractmethod
20
+ def commands(self) -> Path:
21
+ """
22
+ Get the commands directory path.
23
+
24
+ Returns
25
+ -------
26
+ Path
27
+ The path to the commands directory.
28
+ """
29
+ pass
30
+
31
+ @abstractmethod
32
+ def controllers(self) -> Path:
33
+ """
34
+ Get the controllers directory path.
35
+
36
+ Returns
37
+ -------
38
+ Path
39
+ The path to the controllers directory.
40
+ """
41
+ pass
42
+
43
+ @abstractmethod
44
+ def middleware(self) -> Path:
45
+ """
46
+ Get the middleware directory path.
47
+
48
+ Returns
49
+ -------
50
+ Path
51
+ The path to the middleware directory.
52
+ """
53
+ pass
54
+
55
+ @abstractmethod
56
+ def requests(self) -> Path:
57
+ """
58
+ Get the requests directory path.
59
+
60
+ Returns
61
+ -------
62
+ Path
63
+ The path to the requests directory.
64
+ """
65
+ pass
66
+
67
+ @abstractmethod
68
+ def models(self) -> Path:
69
+ """
70
+ Get the models directory path.
71
+
72
+ Returns
73
+ -------
74
+ Path
75
+ The path to the models directory.
76
+ """
77
+ pass
78
+
79
+ @abstractmethod
80
+ def providers(self) -> Path:
81
+ """
82
+ Get the providers directory path.
83
+
84
+ Returns
85
+ -------
86
+ Path
87
+ The path to the providers directory.
88
+ """
89
+ pass
90
+
91
+ @abstractmethod
92
+ def events(self) -> Path:
93
+ """
94
+ Get the events directory path.
95
+
96
+ Returns
97
+ -------
98
+ Path
99
+ The path to the events directory.
100
+ """
101
+ pass
102
+
103
+ @abstractmethod
104
+ def listeners(self) -> Path:
105
+ """
106
+ Get the listeners directory path.
107
+
108
+ Returns
109
+ -------
110
+ Path
111
+ The path to the listeners directory.
112
+ """
113
+ pass
114
+
115
+ @abstractmethod
116
+ def notifications(self) -> Path:
117
+ """
118
+ Get the notifications directory path.
119
+
120
+ Returns
121
+ -------
122
+ Path
123
+ The path to the notifications directory.
124
+ """
125
+ pass
126
+
127
+ @abstractmethod
128
+ def jobs(self) -> Path:
129
+ """
130
+ Get the jobs directory path.
131
+
132
+ Returns
133
+ -------
134
+ Path
135
+ The path to the jobs directory.
136
+ """
137
+ pass
138
+
139
+ @abstractmethod
140
+ def policies(self) -> Path:
141
+ """
142
+ Get the policies directory path.
143
+
144
+ Returns
145
+ -------
146
+ Path
147
+ The path to the policies directory.
148
+ """
149
+ pass
150
+
151
+ @abstractmethod
152
+ def exceptions(self) -> Path:
153
+ """
154
+ Get the exceptions directory path.
155
+
156
+ Returns
157
+ -------
158
+ Path
159
+ The path to the exceptions directory.
160
+ """
161
+ pass
162
+
163
+ @abstractmethod
164
+ def services(self) -> Path:
165
+ """
166
+ Get the services directory path.
167
+
168
+ Returns
169
+ -------
170
+ Path
171
+ The path to the services directory.
172
+ """
173
+ pass
174
+
175
+ @abstractmethod
176
+ def views(self) -> Path:
177
+ """
178
+ Get the views directory path.
179
+
180
+ Returns
181
+ -------
182
+ Path
183
+ The path to the views directory.
184
+ """
185
+ pass
186
+
187
+ @abstractmethod
188
+ def lang(self) -> Path:
189
+ """
190
+ Get the language files directory path.
191
+
192
+ Returns
193
+ -------
194
+ Path
195
+ The path to the language files directory.
196
+ """
197
+ pass
198
+
199
+ @abstractmethod
200
+ def assets(self) -> Path:
201
+ """
202
+ Get the assets directory path.
203
+
204
+ Returns
205
+ -------
206
+ Path
207
+ The path to the assets directory.
208
+ """
209
+ pass
210
+
211
+ @abstractmethod
212
+ def routes(self) -> Path:
213
+ """
214
+ Get the routes directory path.
215
+
216
+ Returns
217
+ -------
218
+ Path
219
+ The path to the routes directory.
220
+ """
221
+ pass
222
+
223
+ @abstractmethod
224
+ def config(self) -> Path:
225
+ """
226
+ Get the configuration directory path.
227
+
228
+ Returns
229
+ -------
230
+ Path
231
+ The path to the configuration directory.
232
+ """
233
+ pass
234
+
235
+ @abstractmethod
236
+ def migrations(self) -> Path:
237
+ """
238
+ Get the migrations directory path.
239
+
240
+ Returns
241
+ -------
242
+ Path
243
+ The path to the migrations directory.
244
+ """
245
+ pass
246
+
247
+ @abstractmethod
248
+ def seeders(self) -> Path:
249
+ """
250
+ Get the seeders directory path.
251
+
252
+ Returns
253
+ -------
254
+ Path
255
+ The path to the seeders directory.
256
+ """
257
+ pass
258
+
259
+ @abstractmethod
260
+ def factories(self) -> Path:
261
+ """
262
+ Get the factories directory path.
263
+
264
+ Returns
265
+ -------
266
+ Path
267
+ The path to the factories directory.
268
+ """
269
+ pass
270
+
271
+ @abstractmethod
272
+ def logs(self) -> Path:
273
+ """
274
+ Get the logs directory path.
275
+
276
+ Returns
277
+ -------
278
+ Path
279
+ The path to the logs directory.
280
+ """
281
+ pass
282
+
283
+ @abstractmethod
284
+ def sessions(self) -> Path:
285
+ """
286
+ Get the sessions directory path.
287
+
288
+ Returns
289
+ -------
290
+ Path
291
+ The path to the sessions directory.
292
+ """
293
+ pass
294
+
295
+ @abstractmethod
296
+ def cache(self) -> Path:
297
+ """
298
+ Get the cache directory path.
299
+
300
+ Returns
301
+ -------
302
+ Path
303
+ The path to the cache directory.
304
+ """
305
+ pass
306
+
307
+ @abstractmethod
308
+ def testing(self) -> Path:
309
+ """
310
+ Get the testing directory path.
311
+
312
+ Returns
313
+ -------
314
+ Path
315
+ The path to the testing directory.
316
+ """
317
+ pass
318
+
319
+ @abstractmethod
320
+ def storage(self) -> Path:
321
+ """
322
+ Get the storage directory path.
323
+
324
+ Returns
325
+ -------
326
+ Path
327
+ The path to the storage directory.
328
+ """
329
+ pass
@@ -1,7 +1,8 @@
1
1
  from pathlib import Path
2
2
  from orionis.foundation.contracts.application import IApplication
3
+ from orionis.services.file.contracts.directory import IDirectory
3
4
 
4
- class Directory:
5
+ class Directory(IDirectory):
5
6
  """
6
7
  Provides convenient access to various application directories.
7
8
 
@@ -309,4 +310,15 @@ class Directory:
309
310
  Path
310
311
  The path to the testing directory.
311
312
  """
312
- return Path(self.__app.path('testing'))
313
+ return Path(self.__app.path('testing'))
314
+
315
+ def storage(self) -> Path:
316
+ """
317
+ Get the storage directory path.
318
+
319
+ Returns
320
+ -------
321
+ Path
322
+ The path to the storage directory.
323
+ """
324
+ return Path(self.__app.path('storage'))
orionis/test/kernel.py CHANGED
@@ -68,9 +68,6 @@ class TestKernel(ITestKernel):
68
68
  tags=config.tags # Tags to filter tests during discovery
69
69
  )
70
70
 
71
- # Resolve the console service from the application container
72
- self.__console: IConsole = app.make('x-orionis.console.output.console')
73
-
74
71
  # Initialize the logger service for logging command execution details
75
72
  self.__logger: ILogger = app.make('x-orionis.services.log.log_service')
76
73
 
@@ -88,47 +85,28 @@ class TestKernel(ITestKernel):
88
85
  IUnitTest
89
86
  The unit test service instance after successful test execution. This allows
90
87
  for potential chaining of operations or access to test results.
91
-
92
- Raises
93
- ------
94
- SystemExit
95
- Indirectly raised through console.exitError() when test failures or
96
- unexpected errors occur during test execution.
97
88
  """
98
89
 
99
- # Execute the unit test suite through the injected unit test service
100
- try:
101
-
102
- # Log the start of test execution
103
- ouput = self.__unit_test.run()
104
-
105
- # Extract report details from output
106
- total_tests = ouput.get("total_tests")
107
- passed = ouput.get("passed")
108
- failed = ouput.get("failed")
109
- errors = ouput.get("errors")
110
- skipped = ouput.get("skipped")
111
- total_time = ouput.get("total_time")
112
- success_rate = ouput.get("success_rate")
113
- timestamp = ouput.get("timestamp")
114
-
115
- # Log test execution completion with detailed summary
116
- self.__logger.info(
117
- f"Test execution completed at {timestamp} | "
118
- f"Total: {total_tests}, Passed: {passed}, Failed: {failed}, "
119
- f"Errors: {errors}, Skipped: {skipped}, "
120
- f"Time: {total_time:.2f}s, Success rate: {success_rate:.2f}%"
121
- )
122
-
123
- # Report the test results to the console
124
- return ouput
125
-
126
- # Handle expected test failures with a descriptive error message
127
- except OrionisTestFailureException as e:
128
- self.__logger.error(f"Test execution failed: {e}")
129
- self.__console.exitError(f"Test execution failed: {e}")
90
+ # Log the start of test execution
91
+ ouput = self.__unit_test.run()
92
+
93
+ # Extract report details from output
94
+ total_tests = ouput.get("total_tests")
95
+ passed = ouput.get("passed")
96
+ failed = ouput.get("failed")
97
+ errors = ouput.get("errors")
98
+ skipped = ouput.get("skipped")
99
+ total_time = ouput.get("total_time")
100
+ success_rate = ouput.get("success_rate")
101
+ timestamp = ouput.get("timestamp")
102
+
103
+ # Log test execution completion with detailed summary
104
+ self.__logger.info(
105
+ f"Test execution completed at {timestamp} | "
106
+ f"Total: {total_tests}, Passed: {passed}, Failed: {failed}, "
107
+ f"Errors: {errors}, Skipped: {skipped}, "
108
+ f"Time: {total_time:.2f}s, Success rate: {success_rate:.2f}%"
109
+ )
130
110
 
131
- # Handle any unexpected errors that occur during test execution
132
- except Exception as e:
133
- self.__logger.error(f"An unexpected error occurred while executing tests: {e}")
134
- self.__console.exitError(f"An unexpected error occurred: {e}")
111
+ # Report the test results to the console
112
+ return ouput
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.497.0
3
+ Version: 0.499.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
@@ -95,14 +95,14 @@ orionis/container/validators/lifetime.py,sha256=IQ43fDNrxYHMlZH2zlYDJnlkLO_eS4U7
95
95
  orionis/failure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
96
  orionis/failure/catch.py,sha256=LCr2Fy7mMwhAILx9VVb0KUZTRPg7UyE_8Ai_hJP0NMQ,3627
97
97
  orionis/failure/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- orionis/failure/base/handler.py,sha256=c_OymSrlR83rwHrZUuMcoyA_q9hhguNNxY_phaguMPg,4465
98
+ orionis/failure/base/handler.py,sha256=vA4u9UqKzzRXIafLTxi3beeCxPGco_0BMhazASahNqs,4464
99
99
  orionis/failure/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
100
  orionis/failure/contracts/catch.py,sha256=e2wM1p6VxbvAjgWm-MwoM9p2ystSsyBu8Qnt6Ehr6Vc,1179
101
101
  orionis/failure/contracts/handler.py,sha256=1WyFx7D9h5chNnOXDQhg6o-RqNfhTHblm_xWzCDu4SM,2161
102
102
  orionis/failure/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
103
  orionis/failure/entities/throwable.py,sha256=ogys062uhim5QMYU62ezlnumRAnYQlUf_vZvQY47S3U,1227
104
104
  orionis/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- orionis/foundation/application.py,sha256=wiaVt7Y7iDmeZkqs6jK1lgD9C46aqDohmzIMxoFjKZo,81976
105
+ orionis/foundation/application.py,sha256=tcOqqw49TNIKh7CJGWT2wghPeRPmYcY20KtOSMX89LU,82200
106
106
  orionis/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  orionis/foundation/config/startup.py,sha256=vbzduprRCNyYeR2nnMaqc1uKXw6PTzAY2jVfXNQKN8I,9691
108
108
  orionis/foundation/config/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -180,7 +180,7 @@ orionis/foundation/config/queue/entities/queue.py,sha256=YiWPeEg5e0fd_DJM2ogska6
180
180
  orionis/foundation/config/queue/enums/__init__.py,sha256=oWY8GWwr5mex7szs_bLVqAS1jbyuIAvKl7XFGSlU9A0,64
181
181
  orionis/foundation/config/queue/enums/strategy.py,sha256=S_kw7KZtoCk5FTOkbuXepdy_fOl9Eav4uT2K0OyzBa0,602
182
182
  orionis/foundation/config/roots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- orionis/foundation/config/roots/paths.py,sha256=etI-rnXARmH_75BqLQGnmjFVpdHZQfEDz2-Qfx6BbsY,10284
183
+ orionis/foundation/config/roots/paths.py,sha256=qQpghBFyF6hdtrt88sLX-4uqrq0frvaQrcDl0fmsTGU,10565
184
184
  orionis/foundation/config/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
185
  orionis/foundation/config/session/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  orionis/foundation/config/session/entities/session.py,sha256=sJoD-_CiwUR88tva-rO22bagG3RTcHXrQGWbq4B5joM,5998
@@ -206,6 +206,7 @@ orionis/foundation/exceptions/value.py,sha256=hQhXybXEnaa59ba7JxG65jceHt3mnql9My
206
206
  orionis/foundation/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
207
  orionis/foundation/providers/catch_provider.py,sha256=jLEFyHeyqCWgIJfqSfXrbRm9h6M6M5IkW8M_9o_NvCQ,1701
208
208
  orionis/foundation/providers/console_provider.py,sha256=9oDHOGm79O8OtwTFPCYl4hNQgxAskqGdG1mIYyEg6qQ,2970
209
+ orionis/foundation/providers/directory_provider.py,sha256=17Euot2Eahe8DjK0zK2uC3c8gPua4eux3q-MKcomDYU,2091
209
210
  orionis/foundation/providers/dumper_provider.py,sha256=nKHjLDClCo-KnPloh6EYVySjgzf6SYSvoxVD6IwJt8M,3355
210
211
  orionis/foundation/providers/executor_provider.py,sha256=kwkH8YWEXoEoP51akJXQJ0U25rhlOLxnfE0s9fALr0I,3478
211
212
  orionis/foundation/providers/inspirational_provider.py,sha256=uq2o0uLd5p6PR99uH4cJAcc6NnU6nIOwe0ZIdzZcF4Q,3726
@@ -217,7 +218,7 @@ orionis/foundation/providers/scheduler_provider.py,sha256=72SoixFog9IOE9Ve9Xcfw6
217
218
  orionis/foundation/providers/testing_provider.py,sha256=SrJRpdvcblx9WvX7x9Y3zc7OQfiTf7la0HAJrm2ESlE,3725
218
219
  orionis/foundation/providers/workers_provider.py,sha256=oa_2NIDH6UxZrtuGkkoo_zEoNIMGgJ46vg5CCgAm7wI,3926
219
220
  orionis/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
- orionis/metadata/framework.py,sha256=0h-07j43h9mUWYjM-W5rmknYMud0bGfSYAJUibiQH0o,4109
221
+ orionis/metadata/framework.py,sha256=w7r_buzaoWjvBu95waTLa08iamd9l0yUqhUWlL2Ik08,4109
221
222
  orionis/metadata/package.py,sha256=k7Yriyp5aUcR-iR8SK2ec_lf0_Cyc-C7JczgXa-I67w,16039
222
223
  orionis/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
224
  orionis/services/asynchrony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -248,7 +249,9 @@ orionis/services/environment/validators/__init__.py,sha256=S0Us4_BtKPuOMQZf4uFFq
248
249
  orionis/services/environment/validators/key_name.py,sha256=TSwVhQCbBYPZ_4zZ-o16yT_2pOe3WRWl9d8KzfDzWyg,1660
249
250
  orionis/services/environment/validators/types.py,sha256=hiTszo7hS_1zQLclUIDOFUTGy2Kg2n3dZe7jU8Pmf1I,2839
250
251
  orionis/services/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- orionis/services/file/directory.py,sha256=MdIc3hQXAcUaMFYujexScJ6-UIFgHCRN-TbGNr651Hg,7326
252
+ orionis/services/file/directory.py,sha256=mEwuY3uAK3rAR9RutSBSey_rhNSaiO6cDo6Og3VzHK0,7652
253
+ orionis/services/file/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
+ orionis/services/file/contracts/directory.py,sha256=Y6UlsldY2aUhcyeEsp-3L21z7VY2STl7WKH95lcTA4c,6566
252
255
  orionis/services/inspirational/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
256
  orionis/services/inspirational/inspire.py,sha256=dUxwkNLjKC4jdi06cVB1gfyB2zHjfgdhYhwKtsOTf0Q,4090
254
257
  orionis/services/inspirational/quotes.py,sha256=9hCIEFE0DdfXLaGq_SzFpXlC2AbGSnuFLzyec4Rd1H0,53455
@@ -344,7 +347,7 @@ orionis/support/standard/exceptions/value.py,sha256=rsyWFQweImaJGTJa7Id7RhPlwWJ4
344
347
  orionis/support/wrapper/__init__.py,sha256=jGoWoIGYuRYqMYQKlrX7Dpcbg-AGkHoB_aM2xhu73yc,62
345
348
  orionis/support/wrapper/dot_dict.py,sha256=T8xWwwOhBZHNeXRwE_CxvOwG9UFxsLqNmOJjV2CNIrc,7284
346
349
  orionis/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
347
- orionis/test/kernel.py,sha256=qVEWboHxLdEaAIr9a_8qgWEVMqCEGq8VYNQP-dfEowc,6357
350
+ orionis/test/kernel.py,sha256=0LiEftvk5ehjDbXUjbcfLzrtXAYfo-cU7GXWzUF5Myo,5300
348
351
  orionis/test/cases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
352
  orionis/test/cases/asynchronous.py,sha256=3e1Y3qzIxVU7i7lbLFEVyJ89IA74JsB7famx71W-p2E,1974
350
353
  orionis/test/cases/synchronous.py,sha256=S5jhuDEZ5I9wosrTFaCtowkD5r5HzJH6mKPOdEJcDJE,1734
@@ -391,7 +394,7 @@ orionis/test/validators/web_report.py,sha256=n9BfzOZz6aEiNTypXcwuWbFRG0OdHNSmCNu
391
394
  orionis/test/validators/workers.py,sha256=rWcdRexINNEmGaO7mnc1MKUxkHKxrTsVuHgbnIfJYgc,1206
392
395
  orionis/test/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
396
  orionis/test/view/render.py,sha256=f-zNhtKSg9R5Njqujbg2l2amAs2-mRVESneLIkWOZjU,4082
394
- orionis-0.497.0.dist-info/licenses/LICENCE,sha256=JhC-z_9mbpUrCfPjcl3DhDA8trNDMzb57cvRSam1avc,1463
397
+ orionis-0.499.0.dist-info/licenses/LICENCE,sha256=JhC-z_9mbpUrCfPjcl3DhDA8trNDMzb57cvRSam1avc,1463
395
398
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
399
  tests/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
397
400
  tests/container/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -538,8 +541,8 @@ tests/testing/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
538
541
  tests/testing/validators/test_testing_validators.py,sha256=WPo5GxTP6xE-Dw3X1vZoqOMpb6HhokjNSbgDsDRDvy4,16588
539
542
  tests/testing/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
540
543
  tests/testing/view/test_render.py,sha256=tnnMBwS0iKUIbogLvu-7Rii50G6Koddp3XT4wgdFEYM,1050
541
- orionis-0.497.0.dist-info/METADATA,sha256=peE-acpasxNqsneyMNyz8ArpeeZcAXIJNpS0OrdDzNI,4801
542
- orionis-0.497.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
543
- orionis-0.497.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
544
- orionis-0.497.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
545
- orionis-0.497.0.dist-info/RECORD,,
544
+ orionis-0.499.0.dist-info/METADATA,sha256=-RDql0Z6iy50KdTmKWf5iP7VJ65mOeZfCtkT1lUiDsQ,4801
545
+ orionis-0.499.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
546
+ orionis-0.499.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
547
+ orionis-0.499.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
548
+ orionis-0.499.0.dist-info/RECORD,,