orionis 0.401.0__tar.gz → 0.403.0__tar.gz

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.
Files changed (522) hide show
  1. {orionis-0.401.0/orionis.egg-info → orionis-0.403.0}/PKG-INFO +1 -1
  2. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/providers/service_provider.py +4 -4
  3. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/application.py +4 -2
  4. orionis-0.403.0/orionis/foundation/config/base.py +112 -0
  5. orionis-0.403.0/orionis/foundation/config/logging/entities/channels.py +155 -0
  6. orionis-0.403.0/orionis/foundation/config/logging/entities/chunked.py +95 -0
  7. orionis-0.403.0/orionis/foundation/config/logging/entities/daily.py +97 -0
  8. orionis-0.403.0/orionis/foundation/config/logging/entities/hourly.py +67 -0
  9. orionis-0.403.0/orionis/foundation/config/logging/entities/logging.py +72 -0
  10. orionis-0.403.0/orionis/foundation/config/logging/entities/monthly.py +66 -0
  11. orionis-0.403.0/orionis/foundation/config/logging/entities/stack.py +40 -0
  12. orionis-0.403.0/orionis/foundation/config/logging/entities/weekly.py +68 -0
  13. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/logging/enums/levels.py +6 -7
  14. orionis-0.403.0/orionis/foundation/config/logging/validators/__init__.py +7 -0
  15. orionis-0.403.0/orionis/foundation/config/logging/validators/level.py +54 -0
  16. orionis-0.403.0/orionis/foundation/config/logging/validators/path.py +34 -0
  17. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/console_provider.py +0 -4
  18. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/dumper_provider.py +0 -4
  19. orionis-0.403.0/orionis/foundation/providers/logger_provider.py +17 -0
  20. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/path_resolver_provider.py +0 -4
  21. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/progress_bar_provider.py +0 -4
  22. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/workers_provider.py +0 -4
  23. {orionis-0.401.0 → orionis-0.403.0}/orionis/metadata/framework.py +1 -1
  24. orionis-0.403.0/orionis/services/log/contracts/log_service.py +23 -0
  25. orionis-0.403.0/orionis/services/log/exceptions/__init__.py +5 -0
  26. orionis-0.403.0/orionis/services/log/exceptions/runtime.py +19 -0
  27. orionis-0.403.0/orionis/services/log/handlers/size_rotating.py +52 -0
  28. orionis-0.403.0/orionis/services/log/handlers/timed_rotating.py +53 -0
  29. orionis-0.403.0/orionis/services/log/log_service.py +289 -0
  30. orionis-0.403.0/orionis/support/facades/logger.py +15 -0
  31. {orionis-0.401.0 → orionis-0.403.0/orionis.egg-info}/PKG-INFO +1 -1
  32. {orionis-0.401.0 → orionis-0.403.0}/orionis.egg-info/SOURCES.txt +13 -0
  33. orionis-0.403.0/tests/support/wrapper/__init__.py +0 -0
  34. orionis-0.403.0/tests/testing/__init__.py +0 -0
  35. orionis-0.401.0/orionis/foundation/config/logging/entities/channels.py +0 -137
  36. orionis-0.401.0/orionis/foundation/config/logging/entities/chunked.py +0 -150
  37. orionis-0.401.0/orionis/foundation/config/logging/entities/daily.py +0 -135
  38. orionis-0.401.0/orionis/foundation/config/logging/entities/hourly.py +0 -122
  39. orionis-0.401.0/orionis/foundation/config/logging/entities/logging.py +0 -73
  40. orionis-0.401.0/orionis/foundation/config/logging/entities/monthly.py +0 -122
  41. orionis-0.401.0/orionis/foundation/config/logging/entities/stack.py +0 -96
  42. orionis-0.401.0/orionis/foundation/config/logging/entities/weekly.py +0 -124
  43. orionis-0.401.0/orionis/services/log/log_service.py +0 -244
  44. {orionis-0.401.0 → orionis-0.403.0}/LICENCE +0 -0
  45. {orionis-0.401.0 → orionis-0.403.0}/MANIFEST.in +0 -0
  46. {orionis-0.401.0 → orionis-0.403.0}/README.md +0 -0
  47. {orionis-0.401.0 → orionis-0.403.0}/orionis/__init__.py +0 -0
  48. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/__init__.py +0 -0
  49. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/base/__init__.py +0 -0
  50. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/base/command.py +0 -0
  51. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/command_filter.py +0 -0
  52. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/commands/__init__.py +0 -0
  53. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/commands/cache_clear.py +0 -0
  54. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/commands/help.py +0 -0
  55. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/commands/schedule_work.py +0 -0
  56. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/commands/version.py +0 -0
  57. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/dumper/__init__.py +0 -0
  58. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/dumper/dump_die.py +0 -0
  59. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/exceptions/__init__.py +0 -0
  60. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/exceptions/cli-orionis-value-error.py +0 -0
  61. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/exceptions/cli_exception.py +0 -0
  62. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/exceptions/cli_runtime_error.py +0 -0
  63. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/exceptions/cli_schedule_exception.py +0 -0
  64. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/kernel.py +0 -0
  65. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/output/__init__.py +0 -0
  66. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/output/console.py +0 -0
  67. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/output/executor.py +0 -0
  68. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/output/progress_bar.py +0 -0
  69. {orionis-0.401.0 → orionis-0.403.0}/orionis/_console/parser.py +0 -0
  70. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/__init__.py +0 -0
  71. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/application.py +0 -0
  72. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/config/__init__.py +0 -0
  73. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/config/config.py +0 -0
  74. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/__init__.py +0 -0
  75. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/base/__init__.py +0 -0
  76. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/base/command.py +0 -0
  77. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/command_filter.py +0 -0
  78. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/kernel.py +0 -0
  79. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/output/__init__.py +0 -0
  80. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/output/console.py +0 -0
  81. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/output/executor.py +0 -0
  82. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/parser.py +0 -0
  83. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/console/task_manager.py +0 -0
  84. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/__init__.py +0 -0
  85. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  86. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  87. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  88. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  89. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  90. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  91. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  92. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/facade.py +0 -0
  93. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  94. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  95. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  96. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  97. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  98. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  99. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/__init__.py +0 -0
  100. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  101. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  102. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  103. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  104. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  105. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  106. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  107. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  108. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  109. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/providers/__init__.py +0 -0
  110. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/providers/service_provider.py +0 -0
  111. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/__init__.py +0 -0
  112. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  113. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  114. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  115. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/config/__init__.py +0 -0
  116. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/config/config_service.py +0 -0
  117. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  118. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  119. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/files/__init__.py +0 -0
  120. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  121. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/log/__init__.py +0 -0
  122. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/services/log/log_service.py +0 -0
  123. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/support/exception_parse.py +0 -0
  124. {orionis-0.401.0 → orionis-0.403.0}/orionis/_contracts/support/reflection.py +0 -0
  125. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/__init__.py +0 -0
  126. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/console/__init__.py +0 -0
  127. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  128. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/environment/__init__.py +0 -0
  129. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  130. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  131. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  132. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  133. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  134. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  135. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/providers/__init__.py +0 -0
  136. {orionis-0.401.0 → orionis-0.403.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  137. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/__init__.py +0 -0
  138. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/commands/__init__.py +0 -0
  139. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  140. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/commands/scheduler_service.py +0 -0
  141. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/config/__init__.py +0 -0
  142. {orionis-0.401.0 → orionis-0.403.0}/orionis/_services/config/config_service.py +0 -0
  143. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/__init__.py +0 -0
  144. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/base/__init__.py +0 -0
  145. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/base/command.py +0 -0
  146. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dumper/__init__.py +0 -0
  147. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  148. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dumper/contracts/dump.py +0 -0
  149. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dumper/dump.py +0 -0
  150. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dynamic/__init__.py +0 -0
  151. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  152. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  153. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/dynamic/progress_bar.py +0 -0
  154. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/__init__.py +0 -0
  155. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/console.py +0 -0
  156. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/contracts/__init__.py +0 -0
  157. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/contracts/console.py +0 -0
  158. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/enums/__init__.py +0 -0
  159. {orionis-0.401.0 → orionis-0.403.0}/orionis/console/output/enums/styles.py +0 -0
  160. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/__init__.py +0 -0
  161. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/container.py +0 -0
  162. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/context/__init__.py +0 -0
  163. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/context/manager.py +0 -0
  164. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/context/scope.py +0 -0
  165. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/contracts/__init__.py +0 -0
  166. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/contracts/container.py +0 -0
  167. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/contracts/resolver.py +0 -0
  168. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/contracts/service_provider.py +0 -0
  169. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/entities/__init__.py +0 -0
  170. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/entities/binding.py +0 -0
  171. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/enums/__init__.py +0 -0
  172. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/enums/lifetimes.py +0 -0
  173. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/exceptions/__init__.py +0 -0
  174. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/exceptions/attribute.py +0 -0
  175. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/exceptions/exception.py +0 -0
  176. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/exceptions/type.py +0 -0
  177. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/exceptions/value.py +0 -0
  178. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/facades/__init__.py +0 -0
  179. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/facades/facade.py +0 -0
  180. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/providers/__init__.py +0 -0
  181. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/resolver/__init__.py +0 -0
  182. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/resolver/resolver.py +0 -0
  183. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/__init__.py +0 -0
  184. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/implements.py +0 -0
  185. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_abstract_class.py +0 -0
  186. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_callable.py +0 -0
  187. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_concrete_class.py +0 -0
  188. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_instance.py +0 -0
  189. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_not_subclass.py +0 -0
  190. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_subclass.py +0 -0
  191. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/is_valid_alias.py +0 -0
  192. {orionis-0.401.0 → orionis-0.403.0}/orionis/container/validators/lifetime.py +0 -0
  193. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/__init__.py +0 -0
  194. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/__init__.py +0 -0
  195. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/__init__.py +0 -0
  196. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  197. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/entities/app.py +0 -0
  198. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  199. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  200. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  201. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/auth/__init__.py +0 -0
  202. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  203. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  204. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/__init__.py +0 -0
  205. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  206. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  207. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  208. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  209. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  210. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  211. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cors/__init__.py +0 -0
  212. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  213. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  214. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/__init__.py +0 -0
  215. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  216. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  217. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/database.py +0 -0
  218. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  219. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  220. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  221. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  222. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  223. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  224. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  225. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  226. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  227. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  228. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  229. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  230. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  231. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  232. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  233. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  234. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  235. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  236. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  237. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  238. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  239. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  240. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  241. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/logging/__init__.py +0 -0
  242. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  243. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  244. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/__init__.py +0 -0
  245. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  246. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  247. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  248. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  249. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  250. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/__init__.py +0 -0
  251. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  252. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  253. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  254. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  255. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  256. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  257. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/roots/__init__.py +0 -0
  258. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/roots/paths.py +0 -0
  259. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/__init__.py +0 -0
  260. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  261. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/entities/session.py +0 -0
  262. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  263. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  264. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  265. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  266. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/startup.py +0 -0
  267. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/testing/__init__.py +0 -0
  268. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  269. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  270. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  271. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  272. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/contracts/__init__.py +0 -0
  273. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/contracts/application.py +0 -0
  274. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/contracts/config.py +0 -0
  275. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/exceptions/__init__.py +0 -0
  276. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/exceptions/integrity.py +0 -0
  277. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/exceptions/runtime.py +0 -0
  278. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/exceptions/type.py +0 -0
  279. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/exceptions/value.py +0 -0
  280. {orionis-0.401.0 → orionis-0.403.0}/orionis/foundation/providers/__init__.py +0 -0
  281. {orionis-0.401.0 → orionis-0.403.0}/orionis/metadata/__init__.py +0 -0
  282. {orionis-0.401.0 → orionis-0.403.0}/orionis/metadata/package.py +0 -0
  283. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/__init__.py +0 -0
  284. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/__init__.py +0 -0
  285. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  286. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  287. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/coroutines.py +0 -0
  288. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  289. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  290. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/__init__.py +0 -0
  291. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/contracts/__init__.py +0 -0
  292. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/contracts/env.py +0 -0
  293. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/contracts/types.py +0 -0
  294. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/core/__init__.py +0 -0
  295. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/core/dot_env.py +0 -0
  296. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  297. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/dynamic/types.py +0 -0
  298. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/env.py +0 -0
  299. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  300. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/exceptions/exception.py +0 -0
  301. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/exceptions/value.py +0 -0
  302. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/helpers/__init__.py +0 -0
  303. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/environment/helpers/functions.py +0 -0
  304. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/__init__.py +0 -0
  305. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  306. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  307. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  308. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  309. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/callables/__init__.py +0 -0
  310. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  311. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  312. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/callables/reflection.py +0 -0
  313. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  314. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  315. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/concretes/contracts/concrete.py +0 -0
  316. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  317. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  318. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  319. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  320. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  321. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  322. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  323. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  324. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  325. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  326. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  327. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  328. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/exceptions/type.py +0 -0
  329. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/exceptions/value.py +0 -0
  330. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/instances/__init__.py +0 -0
  331. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  332. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  333. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/instances/reflection.py +0 -0
  334. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/modules/__init__.py +0 -0
  335. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  336. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  337. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/modules/reflection.py +0 -0
  338. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/objects/__init__.py +0 -0
  339. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/objects/types.py +0 -0
  340. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/introspection/reflection.py +0 -0
  341. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/log/__init__.py +0 -0
  342. {orionis-0.401.0/orionis/services/paths → orionis-0.403.0/orionis/services/log/contracts}/__init__.py +0 -0
  343. {orionis-0.401.0/orionis/services/paths/contracts → orionis-0.403.0/orionis/services/log/handlers}/__init__.py +0 -0
  344. {orionis-0.401.0/orionis/services/system → orionis-0.403.0/orionis/services/paths}/__init__.py +0 -0
  345. {orionis-0.401.0/orionis/services/system → orionis-0.403.0/orionis/services/paths}/contracts/__init__.py +0 -0
  346. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/paths/contracts/resolver.py +0 -0
  347. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  348. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/paths/exceptions/exception.py +0 -0
  349. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/paths/exceptions/file.py +0 -0
  350. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/paths/resolver.py +0 -0
  351. {orionis-0.401.0/orionis/services/system/runtime → orionis-0.403.0/orionis/services/system}/__init__.py +0 -0
  352. {orionis-0.401.0/orionis/support → orionis-0.403.0/orionis/services/system/contracts}/__init__.py +0 -0
  353. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/system/contracts/imports.py +0 -0
  354. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/system/contracts/workers.py +0 -0
  355. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/system/imports.py +0 -0
  356. {orionis-0.401.0/orionis/support/facades → orionis-0.403.0/orionis/services/system/runtime}/__init__.py +0 -0
  357. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/system/runtime/imports.py +0 -0
  358. {orionis-0.401.0 → orionis-0.403.0}/orionis/services/system/workers.py +0 -0
  359. {orionis-0.401.0/orionis/support/formatter → orionis-0.403.0/orionis/support}/__init__.py +0 -0
  360. {orionis-0.401.0/orionis/support/formatter/exceptions → orionis-0.403.0/orionis/support/facades}/__init__.py +0 -0
  361. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/facades/console.py +0 -0
  362. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/facades/dumper.py +0 -0
  363. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/facades/path_resolver.py +0 -0
  364. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/facades/progress_bar.py +0 -0
  365. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/facades/workers.py +0 -0
  366. {orionis-0.401.0/orionis/support/formatter/exceptions/contracts → orionis-0.403.0/orionis/support/formatter}/__init__.py +0 -0
  367. {orionis-0.401.0/orionis/support/patterns → orionis-0.403.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
  368. {orionis-0.401.0/orionis/support/standard → orionis-0.403.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
  369. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  370. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  371. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/formatter/serializer.py +0 -0
  372. {orionis-0.401.0/orionis/support/standard/contracts → orionis-0.403.0/orionis/support/patterns}/__init__.py +0 -0
  373. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  374. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/patterns/singleton/meta.py +0 -0
  375. {orionis-0.401.0/orionis/test → orionis-0.403.0/orionis/support/standard}/__init__.py +0 -0
  376. {orionis-0.401.0/orionis/test/arguments → orionis-0.403.0/orionis/support/standard/contracts}/__init__.py +0 -0
  377. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/standard/contracts/std.py +0 -0
  378. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  379. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/standard/exceptions/value.py +0 -0
  380. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/standard/std.py +0 -0
  381. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/wrapper/__init__.py +0 -0
  382. {orionis-0.401.0 → orionis-0.403.0}/orionis/support/wrapper/dot_dict.py +0 -0
  383. {orionis-0.401.0/orionis/test/cases → orionis-0.403.0/orionis/test}/__init__.py +0 -0
  384. {orionis-0.401.0/orionis/test/contracts → orionis-0.403.0/orionis/test/arguments}/__init__.py +0 -0
  385. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/arguments/parser.py +0 -0
  386. {orionis-0.401.0/orionis/test/core → orionis-0.403.0/orionis/test/cases}/__init__.py +0 -0
  387. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/cases/asynchronous.py +0 -0
  388. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/cases/synchronous.py +0 -0
  389. {orionis-0.401.0/orionis/test/entities → orionis-0.403.0/orionis/test/contracts}/__init__.py +0 -0
  390. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/dumper.py +0 -0
  391. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/kernel.py +0 -0
  392. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/logs.py +0 -0
  393. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/parser.py +0 -0
  394. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/printer.py +0 -0
  395. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/render.py +0 -0
  396. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/contracts/unit_test.py +0 -0
  397. {orionis-0.401.0/orionis/test/output → orionis-0.403.0/orionis/test/core}/__init__.py +0 -0
  398. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/core/unit_test.py +0 -0
  399. {orionis-0.401.0/orionis/test/records → orionis-0.403.0/orionis/test/entities}/__init__.py +0 -0
  400. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/entities/arguments.py +0 -0
  401. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/entities/result.py +0 -0
  402. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/enums/__init__.py +0 -0
  403. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/enums/execution_mode.py +0 -0
  404. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/enums/status.py +0 -0
  405. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/__init__.py +0 -0
  406. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/config.py +0 -0
  407. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/failure.py +0 -0
  408. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/persistence.py +0 -0
  409. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/runtime.py +0 -0
  410. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/exceptions/value.py +0 -0
  411. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/kernel.py +0 -0
  412. {orionis-0.401.0/orionis/test/view → orionis-0.403.0/orionis/test/output}/__init__.py +0 -0
  413. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/output/dumper.py +0 -0
  414. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/output/printer.py +0 -0
  415. {orionis-0.401.0/tests → orionis-0.403.0/orionis/test/records}/__init__.py +0 -0
  416. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/records/logs.py +0 -0
  417. {orionis-0.401.0/tests/example → orionis-0.403.0/orionis/test/view}/__init__.py +0 -0
  418. {orionis-0.401.0 → orionis-0.403.0}/orionis/test/view/render.py +0 -0
  419. {orionis-0.401.0 → orionis-0.403.0}/orionis.egg-info/dependency_links.txt +0 -0
  420. {orionis-0.401.0 → orionis-0.403.0}/orionis.egg-info/requires.txt +0 -0
  421. {orionis-0.401.0 → orionis-0.403.0}/orionis.egg-info/top_level.txt +0 -0
  422. {orionis-0.401.0 → orionis-0.403.0}/orionis.egg-info/zip-safe +0 -0
  423. {orionis-0.401.0 → orionis-0.403.0}/setup.cfg +0 -0
  424. {orionis-0.401.0 → orionis-0.403.0}/setup.py +0 -0
  425. {orionis-0.401.0/tests/foundation → orionis-0.403.0/tests}/__init__.py +0 -0
  426. {orionis-0.401.0/tests/foundation/config → orionis-0.403.0/tests/example}/__init__.py +0 -0
  427. {orionis-0.401.0 → orionis-0.403.0}/tests/example/test_example.py +0 -0
  428. {orionis-0.401.0/tests/foundation/config/app → orionis-0.403.0/tests/foundation}/__init__.py +0 -0
  429. {orionis-0.401.0/tests/foundation/config/auth → orionis-0.403.0/tests/foundation/config}/__init__.py +0 -0
  430. {orionis-0.401.0/tests/foundation/config/cache → orionis-0.403.0/tests/foundation/config/app}/__init__.py +0 -0
  431. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  432. {orionis-0.401.0/tests/foundation/config/cors → orionis-0.403.0/tests/foundation/config/auth}/__init__.py +0 -0
  433. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  434. {orionis-0.401.0/tests/foundation/config/database → orionis-0.403.0/tests/foundation/config/cache}/__init__.py +0 -0
  435. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  436. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  437. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  438. {orionis-0.401.0/tests/foundation/config/filesystems → orionis-0.403.0/tests/foundation/config/cors}/__init__.py +0 -0
  439. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  440. {orionis-0.401.0/tests/foundation/config/logging → orionis-0.403.0/tests/foundation/config/database}/__init__.py +0 -0
  441. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  442. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  443. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  444. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  445. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  446. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  447. {orionis-0.401.0/tests/foundation/config/mail → orionis-0.403.0/tests/foundation/config/filesystems}/__init__.py +0 -0
  448. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  449. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  450. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  451. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  452. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  453. {orionis-0.401.0/tests/foundation/config/queue → orionis-0.403.0/tests/foundation/config/logging}/__init__.py +0 -0
  454. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  455. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  456. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  457. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  458. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  459. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  460. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  461. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  462. {orionis-0.401.0/tests/foundation/config/root → orionis-0.403.0/tests/foundation/config/mail}/__init__.py +0 -0
  463. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  464. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  465. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  466. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  467. {orionis-0.401.0/tests/foundation/config/session → orionis-0.403.0/tests/foundation/config/queue}/__init__.py +0 -0
  468. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  469. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  470. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  471. {orionis-0.401.0/tests/foundation/config/startup → orionis-0.403.0/tests/foundation/config/root}/__init__.py +0 -0
  472. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  473. {orionis-0.401.0/tests/foundation/config/testing → orionis-0.403.0/tests/foundation/config/session}/__init__.py +0 -0
  474. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  475. {orionis-0.401.0/tests/foundation/exceptions → orionis-0.403.0/tests/foundation/config/startup}/__init__.py +0 -0
  476. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  477. {orionis-0.401.0/tests/metadata → orionis-0.403.0/tests/foundation/config/testing}/__init__.py +0 -0
  478. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  479. {orionis-0.401.0/tests/services → orionis-0.403.0/tests/foundation/exceptions}/__init__.py +0 -0
  480. {orionis-0.401.0 → orionis-0.403.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
  481. {orionis-0.401.0/tests/services/asynchrony → orionis-0.403.0/tests/metadata}/__init__.py +0 -0
  482. {orionis-0.401.0 → orionis-0.403.0}/tests/metadata/test_metadata_framework.py +0 -0
  483. {orionis-0.401.0 → orionis-0.403.0}/tests/metadata/test_metadata_package.py +0 -0
  484. {orionis-0.401.0/tests/services/environment → orionis-0.403.0/tests/services}/__init__.py +0 -0
  485. {orionis-0.401.0/tests/services/inspection → orionis-0.403.0/tests/services/asynchrony}/__init__.py +0 -0
  486. {orionis-0.401.0 → orionis-0.403.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  487. {orionis-0.401.0/tests/services/inspection/dependencies → orionis-0.403.0/tests/services/environment}/__init__.py +0 -0
  488. {orionis-0.401.0 → orionis-0.403.0}/tests/services/environment/test_services_environment.py +0 -0
  489. {orionis-0.401.0/tests/services/inspection/dependencies/mocks → orionis-0.403.0/tests/services/inspection}/__init__.py +0 -0
  490. {orionis-0.401.0/tests/services/inspection/reflection → orionis-0.403.0/tests/services/inspection/dependencies}/__init__.py +0 -0
  491. {orionis-0.401.0/tests/services/inspection/reflection/mock → orionis-0.403.0/tests/services/inspection/dependencies/mocks}/__init__.py +0 -0
  492. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  493. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  494. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  495. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  496. {orionis-0.401.0/tests/services/path → orionis-0.403.0/tests/services/inspection/reflection}/__init__.py +0 -0
  497. {orionis-0.401.0/tests/services/system → orionis-0.403.0/tests/services/inspection/reflection/mock}/__init__.py +0 -0
  498. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
  499. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
  500. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
  501. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
  502. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
  503. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
  504. {orionis-0.401.0 → orionis-0.403.0}/tests/services/inspection/test_reflection.py +0 -0
  505. {orionis-0.401.0/tests/support → orionis-0.403.0/tests/services/path}/__init__.py +0 -0
  506. {orionis-0.401.0 → orionis-0.403.0}/tests/services/path/test_services_resolver.py +0 -0
  507. {orionis-0.401.0/tests/support/parsers → orionis-0.403.0/tests/services/system}/__init__.py +0 -0
  508. {orionis-0.401.0 → orionis-0.403.0}/tests/services/system/test_services_system_imports.py +0 -0
  509. {orionis-0.401.0 → orionis-0.403.0}/tests/services/system/test_services_system_workers.py +0 -0
  510. {orionis-0.401.0/tests/support/parsers/mocks → orionis-0.403.0/tests/support}/__init__.py +0 -0
  511. {orionis-0.401.0/tests/support/patterns → orionis-0.403.0/tests/support/parsers}/__init__.py +0 -0
  512. {orionis-0.401.0/tests/support/patterns/singleton → orionis-0.403.0/tests/support/parsers/mocks}/__init__.py +0 -0
  513. {orionis-0.401.0 → orionis-0.403.0}/tests/support/parsers/mocks/mock_custom_error.py +0 -0
  514. {orionis-0.401.0 → orionis-0.403.0}/tests/support/parsers/test_services_parser_exceptions.py +0 -0
  515. {orionis-0.401.0/tests/support/standard → orionis-0.403.0/tests/support/patterns}/__init__.py +0 -0
  516. {orionis-0.401.0/tests/support/wrapper → orionis-0.403.0/tests/support/patterns/singleton}/__init__.py +0 -0
  517. {orionis-0.401.0 → orionis-0.403.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  518. {orionis-0.401.0/tests/testing → orionis-0.403.0/tests/support/standard}/__init__.py +0 -0
  519. {orionis-0.401.0 → orionis-0.403.0}/tests/support/standard/test_services_std.py +0 -0
  520. {orionis-0.401.0 → orionis-0.403.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  521. {orionis-0.401.0 → orionis-0.403.0}/tests/testing/test_testing_result.py +0 -0
  522. {orionis-0.401.0 → orionis-0.403.0}/tests/testing/test_testing_unit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.401.0
3
+ Version: 0.403.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,5 +1,5 @@
1
- from orionis.container.contracts.container import IContainer
2
1
  from orionis.container.contracts.service_provider import IServiceProvider
2
+ from orionis.foundation.contracts.application import IApplication
3
3
 
4
4
  class ServiceProvider(IServiceProvider):
5
5
  """
@@ -11,7 +11,7 @@ class ServiceProvider(IServiceProvider):
11
11
 
12
12
  Parameters
13
13
  ----------
14
- app : IContainer
14
+ app : IApplication
15
15
  The application container instance to which services will be registered.
16
16
 
17
17
  Notes
@@ -20,13 +20,13 @@ class ServiceProvider(IServiceProvider):
20
20
  the `register` method at minimum.
21
21
  """
22
22
 
23
- def __init__(self, app: IContainer) -> None:
23
+ def __init__(self, app: IApplication) -> None:
24
24
  """
25
25
  Initialize the service provider with the application container.
26
26
 
27
27
  Parameters
28
28
  ----------
29
- app : IContainer
29
+ app : IApplication
30
30
  The application container instance.
31
31
  """
32
32
  self.app = app
@@ -18,6 +18,7 @@ from orionis.foundation.config.testing.entities.testing import Testing
18
18
  from orionis.foundation.contracts.application import IApplication
19
19
  from orionis.foundation.contracts.config import IConfig
20
20
  from orionis.foundation.exceptions import OrionisTypeError, OrionisRuntimeError
21
+ from orionis.foundation.providers.logger_provider import LoggerProvider
21
22
 
22
23
  class Application(Container, IApplication):
23
24
  """
@@ -116,7 +117,8 @@ class Application(Container, IApplication):
116
117
  DumperProvider,
117
118
  PathResolverProvider,
118
119
  ProgressBarProvider,
119
- WorkersProvider
120
+ WorkersProvider,
121
+ LoggerProvider
120
122
  ]
121
123
 
122
124
  # Register each core provider
@@ -1031,7 +1033,7 @@ class Application(Container, IApplication):
1031
1033
  """
1032
1034
 
1033
1035
  # Ensure the application is booted before accessing configuration
1034
- if not self.__booted:
1036
+ if not self.__config:
1035
1037
  raise RuntimeError("Application must be booted before accessing configuration. Call create() first.")
1036
1038
 
1037
1039
  # If key is None, raise an error to prevent ambiguity
@@ -0,0 +1,112 @@
1
+ from dataclasses import asdict, fields
2
+ from dataclasses import MISSING
3
+
4
+ class BaseConfigEntity:
5
+
6
+ def toDict(self) -> dict:
7
+ """
8
+ Converts the current instance into a dictionary representation.
9
+
10
+ Returns
11
+ -------
12
+ dict
13
+ Dictionary representation of the current instance.
14
+ """
15
+ return asdict(self)
16
+
17
+ def getFields(self):
18
+ """
19
+ Retrieves a list of field information for the current dataclass instance.
20
+
21
+ Returns
22
+ -------
23
+ list
24
+ A list of dictionaries, each containing details about a field:
25
+ - name (str): The name of the field.
26
+ - type (type): The type of the field.
27
+ - default: The default value of the field, if specified; otherwise, the value from metadata or None.
28
+ - metadata (mapping): The metadata associated with the field.
29
+ """
30
+ # Dictionary to hold field information
31
+ __fields = []
32
+
33
+ # Iterate over the fields of the dataclass
34
+ # and extract relevant information
35
+ for field in fields(self):
36
+
37
+ # Get the field name
38
+ __name = field.name
39
+
40
+ # Get the field type with better handling for complex types
41
+ __type = getattr(field.type, '__name__', None)
42
+
43
+ # If the type is None, handle it
44
+ if __type is None:
45
+
46
+ # Handle generic types, unions, and other complex annotations
47
+ type_str = str(field.type)
48
+
49
+ # Clean up typing module references
50
+ type_str = type_str.replace('typing.', '')
51
+
52
+ # Handle Union types (e.g., "Channels | dict" or "Union[Channels, dict]")
53
+ if '|' in type_str or 'Union[' in type_str:
54
+
55
+ # Extract individual types from Union
56
+ if 'Union[' in type_str:
57
+
58
+ # Handle typing.Union format
59
+ inner = type_str.replace('Union[', '').replace(']', '')
60
+ types = [t.strip() for t in inner.split(',')]
61
+
62
+ else:
63
+ # Handle | format (Python 3.10+)
64
+ types = [t.strip() for t in type_str.split('|')]
65
+
66
+ # Get class names for custom types
67
+ clean_types = []
68
+ for t in types:
69
+ if '.' in t:
70
+ clean_types.append(t.split('.')[-1])
71
+ else:
72
+ clean_types.append(t)
73
+
74
+ # Join cleaned types with ' | '
75
+ __type = ' | '.join(clean_types)
76
+
77
+ else:
78
+
79
+ # Handle other complex types
80
+ if '.' in type_str:
81
+ __type = type_str.split('.')[-1]
82
+ else:
83
+ __type = type_str
84
+
85
+ # Extract metadata, default value, and type
86
+ __metadata = dict(field.metadata) or {}
87
+
88
+ # Extract the default value, if specified
89
+ __default = None
90
+
91
+ # Field has a direct default value
92
+ if field.default is not MISSING:
93
+ __default = field.default
94
+
95
+ # Field has a default factory (like list, dict, etc.)
96
+ elif field.default_factory is not MISSING:
97
+ __default = f"<factory: {field.default_factory.__name__}>"
98
+
99
+ # No default found, check metadata for custom default
100
+ else:
101
+ __default = __metadata.get('default', None)
102
+
103
+ # Append the field information to the list
104
+ __fields.append({
105
+ "name": __name,
106
+ "type": __type,
107
+ "default": __default,
108
+ "metadata": __metadata
109
+ })
110
+
111
+ # Return the list of field information
112
+ return __fields
@@ -0,0 +1,155 @@
1
+ from dataclasses import dataclass, field
2
+ from orionis.foundation.config.base import BaseConfigEntity
3
+ from orionis.foundation.config.logging.entities.monthly import Monthly
4
+ from orionis.foundation.config.logging.entities.chunked import Chunked
5
+ from orionis.foundation.config.logging.entities.daily import Daily
6
+ from orionis.foundation.config.logging.entities.hourly import Hourly
7
+ from orionis.foundation.config.logging.entities.stack import Stack
8
+ from orionis.foundation.config.logging.entities.weekly import Weekly
9
+ from orionis.foundation.exceptions import OrionisIntegrityException
10
+
11
+ @dataclass(unsafe_hash=True, kw_only=True)
12
+ class Channels(BaseConfigEntity):
13
+ """
14
+ Represents the different logging channels available.
15
+ """
16
+
17
+ stack: Stack | dict = field(
18
+ default_factory = lambda: Stack(),
19
+ metadata={
20
+ "description": "Configuration for stack log channel.",
21
+ "default": lambda : Stack().toDict()
22
+ }
23
+ )
24
+
25
+ hourly: Hourly | dict = field(
26
+ default_factory = lambda: Hourly(),
27
+ metadata={
28
+ "description": "Configuration for hourly log rotation.",
29
+ "default": lambda: Hourly().toDict()
30
+ }
31
+ )
32
+
33
+ daily: Daily | dict = field(
34
+ default_factory = lambda: Daily(),
35
+ metadata={
36
+ "description": "Configuration for daily log rotation.",
37
+ "default": lambda: Daily().toDict()
38
+ }
39
+ )
40
+
41
+ weekly: Weekly | dict = field(
42
+ default_factory = lambda: Weekly(),
43
+ metadata={
44
+ "description": "Configuration for weekly log rotation.",
45
+ "default": lambda: Weekly().toDict()
46
+ }
47
+ )
48
+
49
+ monthly: Monthly | dict= field(
50
+ default_factory = lambda: Monthly(),
51
+ metadata={
52
+ "description": "Configuration for monthly log rotation.",
53
+ "default": lambda: Monthly().toDict()
54
+ }
55
+ )
56
+
57
+ chunked: Chunked | dict = field(
58
+ default_factory = lambda: Chunked(),
59
+ metadata={
60
+ "description": "Configuration for chunked log file storage.",
61
+ "default": lambda: Chunked().toDict()
62
+ }
63
+ )
64
+
65
+ def __post_init__(self):
66
+ """
67
+ Post-initialization method to validate the types of log rotation properties.
68
+ Ensures that the following instance attributes are of the correct types:
69
+ - `stack` must be an instance of `Stack`
70
+ - `hourly` must be an instance of `Hourly`
71
+ - `daily` must be an instance of `Daily`
72
+ - `weekly` must be an instance of `Weekly`
73
+ - `monthly` must be an instance of `Monthly`
74
+ - `chunked` must be an instance of `Chunked`
75
+ Raises:
76
+ OrionisIntegrityException: If any of the properties are not instances of their expected classes.
77
+ """
78
+
79
+ if not isinstance(self.stack, Stack):
80
+ if isinstance(self.stack, dict):
81
+ try:
82
+ self.stack = Stack(**self.stack)
83
+ except TypeError as e:
84
+ raise OrionisIntegrityException(
85
+ f"Invalid stack configuration: {e}"
86
+ )
87
+ else:
88
+ raise OrionisIntegrityException(
89
+ "The 'stack' property must be an instance of Stack or a dictionary."
90
+ )
91
+
92
+ if not isinstance(self.hourly, Hourly):
93
+ if isinstance(self.hourly, dict):
94
+ try:
95
+ self.hourly = Hourly(**self.hourly)
96
+ except TypeError as e:
97
+ raise OrionisIntegrityException(
98
+ f"Invalid hourly configuration: {e}"
99
+ )
100
+ else:
101
+ raise OrionisIntegrityException(
102
+ "The 'hourly' property must be an instance of Hourly or a dictionary."
103
+ )
104
+
105
+ if not isinstance(self.daily, Daily):
106
+ if isinstance(self.daily, dict):
107
+ try:
108
+ self.daily = Daily(**self.daily)
109
+ except TypeError as e:
110
+ raise OrionisIntegrityException(
111
+ f"Invalid daily configuration: {e}"
112
+ )
113
+ else:
114
+ raise OrionisIntegrityException(
115
+ "The 'daily' property must be an instance of Daily or a dictionary."
116
+ )
117
+
118
+ if not isinstance(self.weekly, Weekly):
119
+ if isinstance(self.weekly, dict):
120
+ try:
121
+ self.weekly = Weekly(**self.weekly)
122
+ except TypeError as e:
123
+ raise OrionisIntegrityException(
124
+ f"Invalid weekly configuration: {e}"
125
+ )
126
+ else:
127
+ raise OrionisIntegrityException(
128
+ "The 'weekly' property must be an instance of Weekly or a dictionary."
129
+ )
130
+
131
+ if not isinstance(self.monthly, Monthly):
132
+ if isinstance(self.monthly, dict):
133
+ try:
134
+ self.monthly = Monthly(**self.monthly)
135
+ except TypeError as e:
136
+ raise OrionisIntegrityException(
137
+ f"Invalid monthly configuration: {e}"
138
+ )
139
+ else:
140
+ raise OrionisIntegrityException(
141
+ "The 'monthly' property must be an instance of Monthly or a dictionary."
142
+ )
143
+
144
+ if not isinstance(self.chunked, Chunked):
145
+ if isinstance(self.chunked, dict):
146
+ try:
147
+ self.chunked = Chunked(**self.chunked)
148
+ except TypeError as e:
149
+ raise OrionisIntegrityException(
150
+ f"Invalid chunked configuration: {e}"
151
+ )
152
+ else:
153
+ raise OrionisIntegrityException(
154
+ "The 'chunked' property must be an instance of Chunked or a dictionary."
155
+ )
@@ -0,0 +1,95 @@
1
+ from dataclasses import dataclass, field
2
+ from orionis.foundation.config.base import BaseConfigEntity
3
+ from orionis.foundation.config.logging.validators import IsValidPath, IsValidLevel
4
+ from orionis.foundation.exceptions import OrionisIntegrityException
5
+ from orionis.foundation.config.logging.enums import Level
6
+
7
+ @dataclass(unsafe_hash=True, kw_only=True)
8
+ class Chunked(BaseConfigEntity):
9
+ """
10
+ Configuration for chunked log file rotation.
11
+
12
+ This class defines the configuration for managing log files by splitting them into chunks
13
+ based on file size and limiting the number of retained log files. This prevents log files
14
+ from growing indefinitely and helps manage disk usage.
15
+
16
+ Attributes
17
+ ----------
18
+ path : str
19
+ Filesystem path where chunked log files are stored.
20
+ level : int | str | Level
21
+ Logging level for the log file. Accepts an integer, string, or Level enum.
22
+ mb_size : int
23
+ Maximum size (in megabytes) of a single log file before a new chunk is created.
24
+ files : int
25
+ Maximum number of log files to retain. Older files are deleted when this limit is exceeded.
26
+ """
27
+
28
+ path: str = field(
29
+ default = 'storage/log/application.log',
30
+ metadata = {
31
+ "description": "The file path where the log is stored.",
32
+ "default": "storage/log/application.log",
33
+ },
34
+ )
35
+
36
+ level: int | str | Level = field(
37
+ default = Level.INFO,
38
+ metadata = {
39
+ "description": "The logging level (e.g., DEBUG, INFO, WARNING, ERROR, CRITICAL).",
40
+ "default": Level.INFO,
41
+ },
42
+ )
43
+
44
+ mb_size: int = field(
45
+ default = 10,
46
+ metadata={
47
+ "description": "Maximum size (in MB) of a log file before chunking.",
48
+ "default": 10,
49
+ },
50
+ )
51
+
52
+ files: int = field(
53
+ default = 5,
54
+ metadata={
55
+ "description": "Maximum number of log files to retain.",
56
+ "default": 5,
57
+ },
58
+ )
59
+
60
+ def __post_init__(self):
61
+ """
62
+ Performs validation and normalization of configuration fields.
63
+
64
+ - path: Validates that the path is correct using the IsValidPath validator.
65
+ - level: Validates that the log level is correct using the IsValidLevel validator.
66
+ - mb_size: Checks that it is an integer between 1 and 1000 (MB).
67
+ - files: Checks that it is a positive integer greater than 0.
68
+
69
+ Raises
70
+ ------
71
+ OrionisIntegrityException
72
+ If any of the configuration values are invalid.
73
+ """
74
+
75
+ # Validate 'path' using the IsValidPath validator
76
+ IsValidPath(self.path)
77
+
78
+ # Validate 'level' using the IsValidLevel validator
79
+ IsValidLevel(self.level)
80
+
81
+ # Validate 'mb_size'
82
+ if not isinstance(self.mb_size, int):
83
+ raise OrionisIntegrityException(
84
+ f"'mb_size' must be an integer in MB, got {type(self.mb_size).__name__}."
85
+ )
86
+ if self.mb_size < 1 or self.mb_size > 1000:
87
+ raise OrionisIntegrityException(
88
+ f"'mb_size' must be between 1 and 1000 MB, got {self.mb_size}."
89
+ )
90
+
91
+ # Validate 'files'
92
+ if not isinstance(self.files, int) or self.files < 1:
93
+ raise OrionisIntegrityException(
94
+ f"'files' must be a positive integer greater than 0, got {self.files} ({type(self.files).__name__})."
95
+ )
@@ -0,0 +1,97 @@
1
+ from dataclasses import dataclass, field
2
+ from datetime import datetime, time
3
+ from orionis.foundation.config.base import BaseConfigEntity
4
+ from orionis.foundation.config.logging.validators import IsValidPath, IsValidLevel
5
+ from orionis.foundation.exceptions import OrionisIntegrityException
6
+ from orionis.foundation.config.logging.enums import Level
7
+
8
+ @dataclass(unsafe_hash=True, kw_only=True)
9
+ class Daily(BaseConfigEntity):
10
+ """
11
+ Represents the configuration for daily log file rotation.
12
+
13
+ Attributes:
14
+ path (str): The file path where the log is stored.
15
+ level (int | str | Level): The logging level (e.g., 'info', 'error', 'debug').
16
+ retention_days (int): The number of days to retain log files before deletion.
17
+ at (time): The time of day when the log rotation should occur.
18
+ """
19
+
20
+ path: str = field(
21
+ default = 'storage/log/application.log',
22
+ metadata = {
23
+ "description": "The file path where the log is stored.",
24
+ "default": "storage/log/application.log",
25
+ },
26
+ )
27
+
28
+ level: int | str | Level = field(
29
+ default = Level.INFO,
30
+ metadata = {
31
+ "description": "The logging level (e.g., DEBUG, INFO, WARNING, ERROR, CRITICAL).",
32
+ "default": Level.INFO,
33
+ },
34
+ )
35
+
36
+ retention_days: int = field(
37
+ default = 7,
38
+ metadata = {
39
+ "description": "The number of days to retain log files before deletion.",
40
+ "default": 7,
41
+ },
42
+ )
43
+
44
+ at: time | str = field(
45
+ default = time(0, 0).strftime("%H:%M"),
46
+ metadata={
47
+ "description": "The time of day when the log rotation should occur.",
48
+ "default": time(0, 0).strftime("%H:%M"),
49
+ },
50
+ )
51
+
52
+ def __post_init__(self):
53
+ """
54
+ Validates and normalizes the attributes after dataclass initialization.
55
+
56
+ Raises:
57
+ OrionisIntegrityException: If any attribute is invalid.
58
+ """
59
+
60
+ # Validate 'path' using the IsValidPath validator
61
+ IsValidPath(self.path)
62
+
63
+ # Validate 'level' using the IsValidLevel validator
64
+ IsValidLevel(self.level)
65
+
66
+ # Validate 'retention_days'
67
+ if not isinstance(self.retention_days, int):
68
+ raise OrionisIntegrityException(
69
+ f"'retention_days' must be an integer, got {type(self.retention_days).__name__}."
70
+ )
71
+ if not (1 <= self.retention_days <= 90):
72
+ raise OrionisIntegrityException(
73
+ f"'retention_days' must be between 1 and 90, got {self.retention_days}."
74
+ )
75
+
76
+ # Validate 'at' must be a time instance or a valid "HH:MM" string
77
+ if not isinstance(self.at, (time, str)):
78
+ raise OrionisIntegrityException(
79
+ f"'at' must be a datetime.time instance or a 'HH:MM' string, got {type(self.at).__name__}."
80
+ )
81
+
82
+ # Validate and normalize 'at'
83
+ if isinstance(self.at, str):
84
+ try:
85
+ parsed_time = datetime.strptime(self.at, "%H:%M").time()
86
+ self.at = parsed_time
87
+ except ValueError:
88
+ raise OrionisIntegrityException(
89
+ f"'at' must be a valid time string in 'HH:MM' format, got '{self.at}'."
90
+ )
91
+ elif not isinstance(self.at, time):
92
+ raise OrionisIntegrityException(
93
+ f"'at' must be a datetime.time instance or a 'HH:MM' string, got {type(self.at).__name__}."
94
+ )
95
+
96
+ # Normalize 'at' to "HH:MM" format
97
+ self.at = self.at.strftime("%H:%M")
@@ -0,0 +1,67 @@
1
+ from dataclasses import dataclass, field
2
+ from orionis.foundation.config.base import BaseConfigEntity
3
+ from orionis.foundation.config.logging.validators import IsValidLevel, IsValidPath
4
+ from orionis.foundation.exceptions import OrionisIntegrityException
5
+ from orionis.foundation.config.logging.enums import Level
6
+
7
+ @dataclass(unsafe_hash=True, kw_only=True)
8
+ class Hourly(BaseConfigEntity):
9
+ """
10
+ Represents the configuration for hourly log file management.
11
+
12
+ Attributes:
13
+ path (str): The file path where the log is stored.
14
+ level (int | str | Level): The logging level (e.g., 'info', 'error', 'debug').
15
+ retention_hours (int): The number of hours to retain log files before deletion.
16
+ """
17
+
18
+ path: str = field(
19
+ default = 'storage/log/application.log',
20
+ metadata = {
21
+ "description": "The file path where the log is stored.",
22
+ "default": "storage/log/application.log",
23
+ },
24
+ )
25
+
26
+ level: int | str | Level = field(
27
+ default = Level.INFO,
28
+ metadata = {
29
+ "description": "The logging level (e.g., DEBUG, INFO, WARNING, ERROR, CRITICAL).",
30
+ "default": Level.INFO,
31
+ },
32
+ )
33
+
34
+ retention_hours: int = field(
35
+ default = 24,
36
+ metadata = {
37
+ "description": "The number of hours to retain log files before deletion.",
38
+ "default": 24,
39
+ },
40
+ )
41
+
42
+ def __post_init__(self):
43
+ """
44
+ Validates the attributes after dataclass initialization.
45
+
46
+ Raises:
47
+ OrionisIntegrityException: If any attribute is invalid.
48
+ - 'path' must be a non-empty string.
49
+ - 'level' must be an int, str, or Level enum, and a valid value.
50
+ - 'retention_hours' must be an integer between 1 and 168.
51
+ """
52
+
53
+ # Validate 'path' using the IsValidPath validator
54
+ IsValidPath(self.path)
55
+
56
+ # Validate 'level' using the IsValidLevel validator
57
+ IsValidLevel(self.level)
58
+
59
+ # Validate 'retention_hours'
60
+ if not isinstance(self.retention_hours, int) or self.retention_hours < 0:
61
+ raise OrionisIntegrityException(
62
+ f"File cache configuration error: 'retention_hours' must be a non-negative integer, got {self.retention_hours}."
63
+ )
64
+ if self.retention_hours < 1 or self.retention_hours > 168:
65
+ raise OrionisIntegrityException(
66
+ f"File cache configuration error: 'retention_hours' must be between 1 and 168, got {self.retention_hours}."
67
+ )
@@ -0,0 +1,72 @@
1
+ from dataclasses import dataclass, field, fields
2
+ from orionis.foundation.config.base import BaseConfigEntity
3
+ from orionis.foundation.config.logging.entities.channels import Channels
4
+ from orionis.foundation.exceptions import OrionisIntegrityException
5
+
6
+ @dataclass(unsafe_hash=True, kw_only=True)
7
+ class Logging(BaseConfigEntity):
8
+ """
9
+ Represents the logging system configuration.
10
+
11
+ Attributes
12
+ ----------
13
+ default : str
14
+ The default logging channel to use.
15
+ channels : Channels
16
+ A collection of available logging channels.
17
+ """
18
+ default: str = field(
19
+ default="stack",
20
+ metadata={
21
+ "description": "The default logging channel to use.",
22
+ "default": "stack"
23
+ }
24
+ )
25
+
26
+ channels: Channels | dict = field(
27
+ default_factory = lambda: Channels(),
28
+ metadata={
29
+ "description": "A collection of available logging channels.",
30
+ "default": lambda: Channels().toDict()
31
+ }
32
+ )
33
+
34
+ def __post_init__(self):
35
+ """
36
+ Validates the logging configuration after dataclass initialization by ensuring
37
+ the default channel and channels configuration are properly formatted and valid.
38
+ Parameters
39
+ ----------
40
+ None
41
+ Raises
42
+ ------
43
+ OrionisIntegrityException
44
+ If the default channel is not a string or doesn't match available channel options.
45
+ OrionisIntegrityException
46
+ If the channels configuration is malformed or cannot be converted to a Channels instance.
47
+ OrionisIntegrityException
48
+ If the channels property is not a Channels instance or a dictionary.
49
+ Notes
50
+ -----
51
+ This method performs the following validations:
52
+ - Ensures 'default' is a string matching available channel options from Channels fields
53
+ """
54
+
55
+ options = [field.name for field in fields(Channels)]
56
+ if not isinstance(self.default, str) or self.default not in options:
57
+ raise OrionisIntegrityException(
58
+ f"The 'default' property must be a string and match one of the available options ({options})."
59
+ )
60
+
61
+ if not isinstance(self.channels, Channels):
62
+ if isinstance(self.channels, dict):
63
+ try:
64
+ self.channels = Channels(**self.channels)
65
+ except TypeError as e:
66
+ raise OrionisIntegrityException(
67
+ f"Invalid channels configuration: {e}"
68
+ )
69
+ else:
70
+ raise OrionisIntegrityException(
71
+ "The 'channels' property must be an instance of Channels or a dictionary."
72
+ )