orionis 0.403.0__tar.gz → 0.405.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 (516) hide show
  1. {orionis-0.403.0/orionis.egg-info → orionis-0.405.0}/PKG-INFO +1 -1
  2. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/chunked.py +10 -2
  3. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/daily.py +10 -2
  4. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/hourly.py +10 -2
  5. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/monthly.py +10 -2
  6. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/stack.py +11 -3
  7. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/weekly.py +10 -2
  8. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/validators/path.py +6 -0
  9. {orionis-0.403.0 → orionis-0.405.0}/orionis/metadata/framework.py +1 -1
  10. orionis-0.405.0/orionis/services/log/handlers/filename.py +64 -0
  11. orionis-0.405.0/orionis/services/log/handlers/size_rotating.py +21 -0
  12. orionis-0.405.0/orionis/services/log/handlers/timed_rotating.py +21 -0
  13. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/log_service.py +9 -52
  14. {orionis-0.403.0 → orionis-0.405.0/orionis.egg-info}/PKG-INFO +1 -1
  15. {orionis-0.403.0 → orionis-0.405.0}/orionis.egg-info/SOURCES.txt +1 -0
  16. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +12 -34
  17. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +11 -11
  18. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +7 -8
  19. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +7 -10
  20. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +6 -11
  21. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +6 -5
  22. orionis-0.403.0/orionis/services/log/handlers/size_rotating.py +0 -52
  23. orionis-0.403.0/orionis/services/log/handlers/timed_rotating.py +0 -53
  24. {orionis-0.403.0 → orionis-0.405.0}/LICENCE +0 -0
  25. {orionis-0.403.0 → orionis-0.405.0}/MANIFEST.in +0 -0
  26. {orionis-0.403.0 → orionis-0.405.0}/README.md +0 -0
  27. {orionis-0.403.0 → orionis-0.405.0}/orionis/__init__.py +0 -0
  28. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/__init__.py +0 -0
  29. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/base/__init__.py +0 -0
  30. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/base/command.py +0 -0
  31. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/command_filter.py +0 -0
  32. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/commands/__init__.py +0 -0
  33. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/commands/cache_clear.py +0 -0
  34. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/commands/help.py +0 -0
  35. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/commands/schedule_work.py +0 -0
  36. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/commands/version.py +0 -0
  37. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/dumper/__init__.py +0 -0
  38. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/dumper/dump_die.py +0 -0
  39. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/exceptions/__init__.py +0 -0
  40. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/exceptions/cli-orionis-value-error.py +0 -0
  41. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/exceptions/cli_exception.py +0 -0
  42. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/exceptions/cli_runtime_error.py +0 -0
  43. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/exceptions/cli_schedule_exception.py +0 -0
  44. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/kernel.py +0 -0
  45. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/output/__init__.py +0 -0
  46. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/output/console.py +0 -0
  47. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/output/executor.py +0 -0
  48. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/output/progress_bar.py +0 -0
  49. {orionis-0.403.0 → orionis-0.405.0}/orionis/_console/parser.py +0 -0
  50. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/__init__.py +0 -0
  51. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/application.py +0 -0
  52. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/config/__init__.py +0 -0
  53. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/config/config.py +0 -0
  54. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/__init__.py +0 -0
  55. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/base/__init__.py +0 -0
  56. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/base/command.py +0 -0
  57. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/command_filter.py +0 -0
  58. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/kernel.py +0 -0
  59. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/output/__init__.py +0 -0
  60. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/output/console.py +0 -0
  61. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/output/executor.py +0 -0
  62. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/parser.py +0 -0
  63. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/console/task_manager.py +0 -0
  64. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/__init__.py +0 -0
  65. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  66. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  67. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  68. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  69. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  70. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  71. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  72. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/facade.py +0 -0
  73. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  74. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  75. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  76. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  77. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  78. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  79. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/__init__.py +0 -0
  80. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  81. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  82. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  83. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  84. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  85. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  86. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  87. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  88. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  89. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/providers/__init__.py +0 -0
  90. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/providers/service_provider.py +0 -0
  91. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/__init__.py +0 -0
  92. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  93. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  94. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  95. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/config/__init__.py +0 -0
  96. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/config/config_service.py +0 -0
  97. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  98. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  99. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/files/__init__.py +0 -0
  100. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  101. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/log/__init__.py +0 -0
  102. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/services/log/log_service.py +0 -0
  103. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/support/exception_parse.py +0 -0
  104. {orionis-0.403.0 → orionis-0.405.0}/orionis/_contracts/support/reflection.py +0 -0
  105. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/__init__.py +0 -0
  106. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/console/__init__.py +0 -0
  107. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  108. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/environment/__init__.py +0 -0
  109. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  110. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  111. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  112. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  113. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  114. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  115. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/providers/__init__.py +0 -0
  116. {orionis-0.403.0 → orionis-0.405.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  117. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/__init__.py +0 -0
  118. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/commands/__init__.py +0 -0
  119. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  120. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/commands/scheduler_service.py +0 -0
  121. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/config/__init__.py +0 -0
  122. {orionis-0.403.0 → orionis-0.405.0}/orionis/_services/config/config_service.py +0 -0
  123. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/__init__.py +0 -0
  124. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/base/__init__.py +0 -0
  125. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/base/command.py +0 -0
  126. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dumper/__init__.py +0 -0
  127. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  128. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dumper/contracts/dump.py +0 -0
  129. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dumper/dump.py +0 -0
  130. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dynamic/__init__.py +0 -0
  131. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  132. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  133. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/dynamic/progress_bar.py +0 -0
  134. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/__init__.py +0 -0
  135. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/console.py +0 -0
  136. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/contracts/__init__.py +0 -0
  137. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/contracts/console.py +0 -0
  138. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/enums/__init__.py +0 -0
  139. {orionis-0.403.0 → orionis-0.405.0}/orionis/console/output/enums/styles.py +0 -0
  140. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/__init__.py +0 -0
  141. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/container.py +0 -0
  142. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/context/__init__.py +0 -0
  143. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/context/manager.py +0 -0
  144. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/context/scope.py +0 -0
  145. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/contracts/__init__.py +0 -0
  146. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/contracts/container.py +0 -0
  147. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/contracts/resolver.py +0 -0
  148. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/contracts/service_provider.py +0 -0
  149. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/entities/__init__.py +0 -0
  150. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/entities/binding.py +0 -0
  151. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/enums/__init__.py +0 -0
  152. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/enums/lifetimes.py +0 -0
  153. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/exceptions/__init__.py +0 -0
  154. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/exceptions/attribute.py +0 -0
  155. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/exceptions/exception.py +0 -0
  156. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/exceptions/type.py +0 -0
  157. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/exceptions/value.py +0 -0
  158. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/facades/__init__.py +0 -0
  159. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/facades/facade.py +0 -0
  160. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/providers/__init__.py +0 -0
  161. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/providers/service_provider.py +0 -0
  162. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/resolver/__init__.py +0 -0
  163. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/resolver/resolver.py +0 -0
  164. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/__init__.py +0 -0
  165. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/implements.py +0 -0
  166. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_abstract_class.py +0 -0
  167. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_callable.py +0 -0
  168. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_concrete_class.py +0 -0
  169. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_instance.py +0 -0
  170. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_not_subclass.py +0 -0
  171. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_subclass.py +0 -0
  172. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/is_valid_alias.py +0 -0
  173. {orionis-0.403.0 → orionis-0.405.0}/orionis/container/validators/lifetime.py +0 -0
  174. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/__init__.py +0 -0
  175. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/application.py +0 -0
  176. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/__init__.py +0 -0
  177. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/__init__.py +0 -0
  178. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  179. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/entities/app.py +0 -0
  180. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  181. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  182. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  183. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/auth/__init__.py +0 -0
  184. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  185. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  186. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/base.py +0 -0
  187. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/__init__.py +0 -0
  188. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  189. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  190. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  191. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  192. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  193. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  194. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cors/__init__.py +0 -0
  195. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  196. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  197. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/__init__.py +0 -0
  198. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  199. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  200. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/database.py +0 -0
  201. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  202. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  203. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  204. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  205. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  206. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  207. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  208. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  209. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  210. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  211. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  212. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  213. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  214. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  215. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  216. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  217. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  218. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  219. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  220. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  221. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  222. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  223. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  224. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/__init__.py +0 -0
  225. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  226. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  227. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  228. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  229. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  230. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  231. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  232. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/__init__.py +0 -0
  233. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  234. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  235. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  236. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  237. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  238. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/__init__.py +0 -0
  239. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  240. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  241. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  242. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  243. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  244. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  245. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/roots/__init__.py +0 -0
  246. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/roots/paths.py +0 -0
  247. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/__init__.py +0 -0
  248. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  249. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/entities/session.py +0 -0
  250. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  251. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  252. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  253. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  254. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/startup.py +0 -0
  255. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/testing/__init__.py +0 -0
  256. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  257. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  258. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  259. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  260. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/contracts/__init__.py +0 -0
  261. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/contracts/application.py +0 -0
  262. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/contracts/config.py +0 -0
  263. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/exceptions/__init__.py +0 -0
  264. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/exceptions/integrity.py +0 -0
  265. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/exceptions/runtime.py +0 -0
  266. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/exceptions/type.py +0 -0
  267. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/exceptions/value.py +0 -0
  268. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/__init__.py +0 -0
  269. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/console_provider.py +0 -0
  270. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  271. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/logger_provider.py +0 -0
  272. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/path_resolver_provider.py +0 -0
  273. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  274. {orionis-0.403.0 → orionis-0.405.0}/orionis/foundation/providers/workers_provider.py +0 -0
  275. {orionis-0.403.0 → orionis-0.405.0}/orionis/metadata/__init__.py +0 -0
  276. {orionis-0.403.0 → orionis-0.405.0}/orionis/metadata/package.py +0 -0
  277. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/__init__.py +0 -0
  278. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/__init__.py +0 -0
  279. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  280. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  281. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/coroutines.py +0 -0
  282. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  283. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  284. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/__init__.py +0 -0
  285. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/contracts/__init__.py +0 -0
  286. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/contracts/env.py +0 -0
  287. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/contracts/types.py +0 -0
  288. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/core/__init__.py +0 -0
  289. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/core/dot_env.py +0 -0
  290. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  291. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/dynamic/types.py +0 -0
  292. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/env.py +0 -0
  293. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  294. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/exceptions/exception.py +0 -0
  295. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/exceptions/value.py +0 -0
  296. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/helpers/__init__.py +0 -0
  297. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/environment/helpers/functions.py +0 -0
  298. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/__init__.py +0 -0
  299. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  300. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  301. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  302. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  303. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/callables/__init__.py +0 -0
  304. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  305. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  306. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/callables/reflection.py +0 -0
  307. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  308. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  309. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/concretes/contracts/concrete.py +0 -0
  310. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  311. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  312. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  313. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  314. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  315. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  316. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  317. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  318. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  319. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  320. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  321. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  322. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/exceptions/type.py +0 -0
  323. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/exceptions/value.py +0 -0
  324. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/instances/__init__.py +0 -0
  325. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  326. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  327. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/instances/reflection.py +0 -0
  328. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/modules/__init__.py +0 -0
  329. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  330. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  331. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/modules/reflection.py +0 -0
  332. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/objects/__init__.py +0 -0
  333. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/objects/types.py +0 -0
  334. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/introspection/reflection.py +0 -0
  335. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/__init__.py +0 -0
  336. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/contracts/__init__.py +0 -0
  337. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/contracts/log_service.py +0 -0
  338. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/exceptions/__init__.py +0 -0
  339. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/exceptions/runtime.py +0 -0
  340. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/log/handlers/__init__.py +0 -0
  341. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/__init__.py +0 -0
  342. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/contracts/__init__.py +0 -0
  343. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/contracts/resolver.py +0 -0
  344. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  345. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/exceptions/exception.py +0 -0
  346. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/exceptions/file.py +0 -0
  347. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/paths/resolver.py +0 -0
  348. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/__init__.py +0 -0
  349. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/contracts/__init__.py +0 -0
  350. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/contracts/imports.py +0 -0
  351. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/contracts/workers.py +0 -0
  352. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/imports.py +0 -0
  353. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/runtime/__init__.py +0 -0
  354. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/runtime/imports.py +0 -0
  355. {orionis-0.403.0 → orionis-0.405.0}/orionis/services/system/workers.py +0 -0
  356. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/__init__.py +0 -0
  357. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/__init__.py +0 -0
  358. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/console.py +0 -0
  359. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/dumper.py +0 -0
  360. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/logger.py +0 -0
  361. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/path_resolver.py +0 -0
  362. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/progress_bar.py +0 -0
  363. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/facades/workers.py +0 -0
  364. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/__init__.py +0 -0
  365. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  366. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  367. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  368. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  369. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/formatter/serializer.py +0 -0
  370. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/patterns/__init__.py +0 -0
  371. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  372. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/patterns/singleton/meta.py +0 -0
  373. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/__init__.py +0 -0
  374. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/contracts/__init__.py +0 -0
  375. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/contracts/std.py +0 -0
  376. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  377. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/exceptions/value.py +0 -0
  378. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/standard/std.py +0 -0
  379. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/wrapper/__init__.py +0 -0
  380. {orionis-0.403.0 → orionis-0.405.0}/orionis/support/wrapper/dot_dict.py +0 -0
  381. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/__init__.py +0 -0
  382. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/arguments/__init__.py +0 -0
  383. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/arguments/parser.py +0 -0
  384. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/cases/__init__.py +0 -0
  385. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/cases/asynchronous.py +0 -0
  386. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/cases/synchronous.py +0 -0
  387. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/__init__.py +0 -0
  388. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/dumper.py +0 -0
  389. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/kernel.py +0 -0
  390. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/logs.py +0 -0
  391. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/parser.py +0 -0
  392. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/printer.py +0 -0
  393. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/render.py +0 -0
  394. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/contracts/unit_test.py +0 -0
  395. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/core/__init__.py +0 -0
  396. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/core/unit_test.py +0 -0
  397. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/entities/__init__.py +0 -0
  398. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/entities/arguments.py +0 -0
  399. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/entities/result.py +0 -0
  400. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/enums/__init__.py +0 -0
  401. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/enums/execution_mode.py +0 -0
  402. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/enums/status.py +0 -0
  403. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/__init__.py +0 -0
  404. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/config.py +0 -0
  405. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/failure.py +0 -0
  406. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/persistence.py +0 -0
  407. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/runtime.py +0 -0
  408. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/exceptions/value.py +0 -0
  409. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/kernel.py +0 -0
  410. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/output/__init__.py +0 -0
  411. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/output/dumper.py +0 -0
  412. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/output/printer.py +0 -0
  413. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/records/__init__.py +0 -0
  414. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/records/logs.py +0 -0
  415. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/view/__init__.py +0 -0
  416. {orionis-0.403.0 → orionis-0.405.0}/orionis/test/view/render.py +0 -0
  417. {orionis-0.403.0 → orionis-0.405.0}/orionis.egg-info/dependency_links.txt +0 -0
  418. {orionis-0.403.0 → orionis-0.405.0}/orionis.egg-info/requires.txt +0 -0
  419. {orionis-0.403.0 → orionis-0.405.0}/orionis.egg-info/top_level.txt +0 -0
  420. {orionis-0.403.0 → orionis-0.405.0}/orionis.egg-info/zip-safe +0 -0
  421. {orionis-0.403.0 → orionis-0.405.0}/setup.cfg +0 -0
  422. {orionis-0.403.0 → orionis-0.405.0}/setup.py +0 -0
  423. {orionis-0.403.0 → orionis-0.405.0}/tests/__init__.py +0 -0
  424. {orionis-0.403.0 → orionis-0.405.0}/tests/example/__init__.py +0 -0
  425. {orionis-0.403.0 → orionis-0.405.0}/tests/example/test_example.py +0 -0
  426. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/__init__.py +0 -0
  427. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/__init__.py +0 -0
  428. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/app/__init__.py +0 -0
  429. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  430. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/auth/__init__.py +0 -0
  431. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  432. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cache/__init__.py +0 -0
  433. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  434. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  435. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  436. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cors/__init__.py +0 -0
  437. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  438. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/__init__.py +0 -0
  439. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  440. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  441. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  442. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  443. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  444. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  445. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  446. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  447. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  448. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  449. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  450. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  451. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/__init__.py +0 -0
  452. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  453. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  454. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/mail/__init__.py +0 -0
  455. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  456. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  457. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  458. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  459. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/queue/__init__.py +0 -0
  460. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  461. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  462. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  463. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/root/__init__.py +0 -0
  464. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  465. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/session/__init__.py +0 -0
  466. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  467. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/startup/__init__.py +0 -0
  468. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  469. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/testing/__init__.py +0 -0
  470. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  471. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/exceptions/__init__.py +0 -0
  472. {orionis-0.403.0 → orionis-0.405.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
  473. {orionis-0.403.0 → orionis-0.405.0}/tests/metadata/__init__.py +0 -0
  474. {orionis-0.403.0 → orionis-0.405.0}/tests/metadata/test_metadata_framework.py +0 -0
  475. {orionis-0.403.0 → orionis-0.405.0}/tests/metadata/test_metadata_package.py +0 -0
  476. {orionis-0.403.0 → orionis-0.405.0}/tests/services/__init__.py +0 -0
  477. {orionis-0.403.0 → orionis-0.405.0}/tests/services/asynchrony/__init__.py +0 -0
  478. {orionis-0.403.0 → orionis-0.405.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  479. {orionis-0.403.0 → orionis-0.405.0}/tests/services/environment/__init__.py +0 -0
  480. {orionis-0.403.0 → orionis-0.405.0}/tests/services/environment/test_services_environment.py +0 -0
  481. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/__init__.py +0 -0
  482. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/__init__.py +0 -0
  483. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  484. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  485. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  486. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  487. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  488. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/__init__.py +0 -0
  489. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/mock/__init__.py +0 -0
  490. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
  491. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
  492. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
  493. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
  494. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
  495. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
  496. {orionis-0.403.0 → orionis-0.405.0}/tests/services/inspection/test_reflection.py +0 -0
  497. {orionis-0.403.0 → orionis-0.405.0}/tests/services/path/__init__.py +0 -0
  498. {orionis-0.403.0 → orionis-0.405.0}/tests/services/path/test_services_resolver.py +0 -0
  499. {orionis-0.403.0 → orionis-0.405.0}/tests/services/system/__init__.py +0 -0
  500. {orionis-0.403.0 → orionis-0.405.0}/tests/services/system/test_services_system_imports.py +0 -0
  501. {orionis-0.403.0 → orionis-0.405.0}/tests/services/system/test_services_system_workers.py +0 -0
  502. {orionis-0.403.0 → orionis-0.405.0}/tests/support/__init__.py +0 -0
  503. {orionis-0.403.0 → orionis-0.405.0}/tests/support/parsers/__init__.py +0 -0
  504. {orionis-0.403.0 → orionis-0.405.0}/tests/support/parsers/mocks/__init__.py +0 -0
  505. {orionis-0.403.0 → orionis-0.405.0}/tests/support/parsers/mocks/mock_custom_error.py +0 -0
  506. {orionis-0.403.0 → orionis-0.405.0}/tests/support/parsers/test_services_parser_exceptions.py +0 -0
  507. {orionis-0.403.0 → orionis-0.405.0}/tests/support/patterns/__init__.py +0 -0
  508. {orionis-0.403.0 → orionis-0.405.0}/tests/support/patterns/singleton/__init__.py +0 -0
  509. {orionis-0.403.0 → orionis-0.405.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  510. {orionis-0.403.0 → orionis-0.405.0}/tests/support/standard/__init__.py +0 -0
  511. {orionis-0.403.0 → orionis-0.405.0}/tests/support/standard/test_services_std.py +0 -0
  512. {orionis-0.403.0 → orionis-0.405.0}/tests/support/wrapper/__init__.py +0 -0
  513. {orionis-0.403.0 → orionis-0.405.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  514. {orionis-0.403.0 → orionis-0.405.0}/tests/testing/__init__.py +0 -0
  515. {orionis-0.403.0 → orionis-0.405.0}/tests/testing/test_testing_result.py +0 -0
  516. {orionis-0.403.0 → orionis-0.405.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.403.0
3
+ Version: 0.405.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
@@ -26,10 +26,10 @@ class Chunked(BaseConfigEntity):
26
26
  """
27
27
 
28
28
  path: str = field(
29
- default = 'storage/log/application.log',
29
+ default = 'storage/log/chunked.log',
30
30
  metadata = {
31
31
  "description": "The file path where the log is stored.",
32
- "default": "storage/log/application.log",
32
+ "default": "storage/log/chunked.log",
33
33
  },
34
34
  )
35
35
 
@@ -78,6 +78,14 @@ class Chunked(BaseConfigEntity):
78
78
  # Validate 'level' using the IsValidLevel validator
79
79
  IsValidLevel(self.level)
80
80
 
81
+ # Assign the level value.
82
+ if isinstance(self.level, Level):
83
+ self.level = self.level.value
84
+ elif isinstance(self.level, str):
85
+ self.level = Level[self.level.strip().upper()].value
86
+ elif isinstance(self.level, int):
87
+ self.level = self.level
88
+
81
89
  # Validate 'mb_size'
82
90
  if not isinstance(self.mb_size, int):
83
91
  raise OrionisIntegrityException(
@@ -18,10 +18,10 @@ class Daily(BaseConfigEntity):
18
18
  """
19
19
 
20
20
  path: str = field(
21
- default = 'storage/log/application.log',
21
+ default = 'storage/log/daily.log',
22
22
  metadata = {
23
23
  "description": "The file path where the log is stored.",
24
- "default": "storage/log/application.log",
24
+ "default": "storage/log/daily.log",
25
25
  },
26
26
  )
27
27
 
@@ -63,6 +63,14 @@ class Daily(BaseConfigEntity):
63
63
  # Validate 'level' using the IsValidLevel validator
64
64
  IsValidLevel(self.level)
65
65
 
66
+ # Assign the level value.
67
+ if isinstance(self.level, Level):
68
+ self.level = self.level.value
69
+ elif isinstance(self.level, str):
70
+ self.level = Level[self.level.strip().upper()].value
71
+ elif isinstance(self.level, int):
72
+ self.level = self.level
73
+
66
74
  # Validate 'retention_days'
67
75
  if not isinstance(self.retention_days, int):
68
76
  raise OrionisIntegrityException(
@@ -16,10 +16,10 @@ class Hourly(BaseConfigEntity):
16
16
  """
17
17
 
18
18
  path: str = field(
19
- default = 'storage/log/application.log',
19
+ default = 'storage/log/hourly.log',
20
20
  metadata = {
21
21
  "description": "The file path where the log is stored.",
22
- "default": "storage/log/application.log",
22
+ "default": "storage/log/hourly.log",
23
23
  },
24
24
  )
25
25
 
@@ -56,6 +56,14 @@ class Hourly(BaseConfigEntity):
56
56
  # Validate 'level' using the IsValidLevel validator
57
57
  IsValidLevel(self.level)
58
58
 
59
+ # Assign the level value.
60
+ if isinstance(self.level, Level):
61
+ self.level = self.level.value
62
+ elif isinstance(self.level, str):
63
+ self.level = Level[self.level.strip().upper()].value
64
+ elif isinstance(self.level, int):
65
+ self.level = self.level
66
+
59
67
  # Validate 'retention_hours'
60
68
  if not isinstance(self.retention_hours, int) or self.retention_hours < 0:
61
69
  raise OrionisIntegrityException(
@@ -16,10 +16,10 @@ class Monthly(BaseConfigEntity):
16
16
  """
17
17
 
18
18
  path: str = field(
19
- default = 'storage/log/application.log',
19
+ default = 'storage/log/monthly.log',
20
20
  metadata = {
21
21
  "description": "The file path where the log is stored.",
22
- "default": "storage/log/application.log",
22
+ "default": "storage/log/monthly.log",
23
23
  },
24
24
  )
25
25
 
@@ -55,6 +55,14 @@ class Monthly(BaseConfigEntity):
55
55
  # Validate 'level' using the IsValidLevel validator
56
56
  IsValidLevel(self.level)
57
57
 
58
+ # Assign the level value.
59
+ if isinstance(self.level, Level):
60
+ self.level = self.level.value
61
+ elif isinstance(self.level, str):
62
+ self.level = Level[self.level.strip().upper()].value
63
+ elif isinstance(self.level, int):
64
+ self.level = self.level
65
+
58
66
  # Validate 'retention_months'
59
67
  if not isinstance(self.retention_months, int):
60
68
  raise OrionisIntegrityException(
@@ -10,10 +10,10 @@ class Stack(BaseConfigEntity):
10
10
  """
11
11
 
12
12
  path: str = field(
13
- default = 'storage/log/application.log',
13
+ default = 'storage/log/stack.log',
14
14
  metadata = {
15
15
  "description": "The file path where the log is stored.",
16
- "default": "storage/log/application.log",
16
+ "default": "storage/log/stack.log",
17
17
  },
18
18
  )
19
19
 
@@ -37,4 +37,12 @@ class Stack(BaseConfigEntity):
37
37
  IsValidPath(self.path)
38
38
 
39
39
  # Validate 'level' using the IsValidLevel validator
40
- IsValidLevel(self.level)
40
+ IsValidLevel(self.level)
41
+
42
+ # Assign the level value.
43
+ if isinstance(self.level, Level):
44
+ self.level = self.level.value
45
+ elif isinstance(self.level, str):
46
+ self.level = Level[self.level.strip().upper()].value
47
+ elif isinstance(self.level, int):
48
+ self.level = self.level
@@ -16,10 +16,10 @@ class Weekly(BaseConfigEntity):
16
16
  """
17
17
 
18
18
  path: str = field(
19
- default = 'storage/log/application.log',
19
+ default = 'storage/log/weekly.log',
20
20
  metadata = {
21
21
  "description": "The file path where the log is stored.",
22
- "default": "storage/log/application.log",
22
+ "default": "storage/log/weekly.log",
23
23
  },
24
24
  )
25
25
 
@@ -57,6 +57,14 @@ class Weekly(BaseConfigEntity):
57
57
  # Validate 'level' using the IsValidLevel validator
58
58
  IsValidLevel(self.level)
59
59
 
60
+ # Assign the level value.
61
+ if isinstance(self.level, Level):
62
+ self.level = self.level.value
63
+ elif isinstance(self.level, str):
64
+ self.level = Level[self.level.strip().upper()].value
65
+ elif isinstance(self.level, int):
66
+ self.level = self.level
67
+
60
68
  # Validate 'retention_weeks'
61
69
  if not isinstance(self.retention_weeks, int):
62
70
  raise OrionisIntegrityException(
@@ -18,6 +18,8 @@ class __IsValidPath:
18
18
  def __call__(self, value: Any) -> None:
19
19
  """
20
20
  Validates that the provided value is a non-empty string representing a file path.
21
+ This method checks if the value is a string and not empty. It also ensures that the string ends with '.log',
22
+ indicating that it is a log file path.
21
23
 
22
24
  Args:
23
25
  value (Any): The value to validate as a file path.
@@ -29,6 +31,10 @@ class __IsValidPath:
29
31
  raise OrionisIntegrityException(
30
32
  f"File cache configuration error: 'path' must be a non-empty string, got {repr(value)}."
31
33
  )
34
+ if not value.endswith('.log'):
35
+ raise OrionisIntegrityException(
36
+ f"File cache configuration error: 'path' must end with '.log', got {repr(value)}."
37
+ )
32
38
 
33
39
  # Exported singleton instance
34
40
  IsValidPath = __IsValidPath()
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.403.0"
8
+ VERSION = "0.405.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -0,0 +1,64 @@
1
+ import os
2
+ from datetime import datetime
3
+ from pathlib import Path
4
+
5
+ class FileNameLogger:
6
+
7
+ def __init__(self, path: str) -> None:
8
+ """
9
+ Initialize the FileNameLogger.
10
+
11
+ Parameters
12
+ ----------
13
+ path : str
14
+ The original file path for the log file.
15
+ """
16
+
17
+ # If the path is not a string or is empty, raise a ValueError
18
+ if not isinstance(path, str) or not path:
19
+ raise ValueError("The 'path' parameter must be a non-empty string.")
20
+
21
+ # Set the instance variable __path to the stripped path
22
+ self.__path = path.strip()
23
+
24
+ def generate(self) -> str:
25
+ """
26
+ Generate a new log file path with a timestamp prefix.
27
+
28
+ Returns
29
+ -------
30
+ str
31
+ The full path to the log file with a timestamped file name.
32
+
33
+ Notes
34
+ -----
35
+ The method ensures that the directory for the log file exists.
36
+ """
37
+
38
+ # Split the original path to extract the base name and extension
39
+ if '/' in self.__path:
40
+ parts = self.__path.split('/')
41
+ elif '\\' in self.__path:
42
+ parts = self.__path.split('\\')
43
+ else:
44
+ parts = self.__path.split(os.sep)
45
+
46
+ # Get the base name and extension
47
+ filename, ext = os.path.splitext(parts[-1])
48
+
49
+ # Create the path without the last part
50
+ path = os.path.join(*parts[:-1]) if len(parts) > 1 else ''
51
+
52
+ # Prefix the base name with a timestamp
53
+ prefix = datetime.now().strftime("%Y%m%d_%H%M%S")
54
+
55
+ # Join the path, prefix, and filename to create the full path
56
+ full_path = os.path.join(path, f"{prefix}_{filename}{ext}")
57
+
58
+ # Ensure the log directory exists
59
+ log_dir = Path(full_path).parent
60
+ if not log_dir.exists():
61
+ log_dir.mkdir(parents=True, exist_ok=True)
62
+
63
+ # Return the full path as a string
64
+ return full_path
@@ -0,0 +1,21 @@
1
+ from logging.handlers import RotatingFileHandler
2
+ from orionis.services.log.handlers.filename import FileNameLogger
3
+
4
+ class PrefixedSizeRotatingFileHandler(RotatingFileHandler):
5
+
6
+ def rotation_filename(self, default_name) -> str:
7
+ """
8
+ Generate a rotated log filename by prefixing the original filename with a timestamp.
9
+
10
+ Parameters
11
+ ----------
12
+ default_name : str
13
+ The original file path to be rotated.
14
+
15
+ Returns
16
+ -------
17
+ str
18
+ The new file path with the base name prefixed by a timestamp in the format 'YYYYMMDD_HHMMSS'.
19
+ """
20
+
21
+ return FileNameLogger(default_name).generate()
@@ -0,0 +1,21 @@
1
+ from logging.handlers import TimedRotatingFileHandler
2
+ from orionis.services.log.handlers.filename import FileNameLogger
3
+
4
+ class PrefixedTimedRotatingFileHandler(TimedRotatingFileHandler):
5
+
6
+ def rotation_filename(self, default_name) -> str:
7
+ """
8
+ Generate a rotated log filename by prefixing the original filename with a timestamp.
9
+
10
+ Parameters
11
+ ----------
12
+ default_name : str
13
+ The original file path to be rotated.
14
+
15
+ Returns
16
+ -------
17
+ str
18
+ The new file path with the base name prefixed by a timestamp in the format 'YYYYMMDD_HHMMSS'.
19
+ """
20
+
21
+ return FileNameLogger(default_name).generate()
@@ -2,6 +2,7 @@ from orionis.foundation.config.logging.entities.logging import Logging
2
2
  from orionis.foundation.config.logging.enums import Level
3
3
  from orionis.services.log.contracts.log_service import ILoggerService
4
4
  from orionis.services.log.exceptions import LoggerRuntimeError
5
+ from orionis.services.log.handlers.filename import FileNameLogger
5
6
  from orionis.services.log.handlers.size_rotating import PrefixedSizeRotatingFileHandler
6
7
  from orionis.services.log.handlers.timed_rotating import PrefixedTimedRotatingFileHandler
7
8
 
@@ -40,7 +41,13 @@ class LoggerService(ILoggerService):
40
41
  try:
41
42
  self.__config = Logging(**kwargs)
42
43
  except Exception as e:
43
- raise LoggerRuntimeError(f"Failed to initialize logger configuration: {e}")
44
+ raise LoggerRuntimeError(
45
+ f"Error initializing logger configuration: {e}. "
46
+ "Please check the provided parameters. "
47
+ f"Expected a Logging dataclass or a configuration dictionary. "
48
+ f"Type received: {type(config).__module__}.{type(config).__name__}. "
49
+ f"Expected: {Logging.__module__}.{Logging.__name__} or dict."
50
+ )
44
51
 
45
52
  # If config is a dictionary, convert it to Logging
46
53
  elif isinstance(config, dict):
@@ -53,56 +60,6 @@ class LoggerService(ILoggerService):
53
60
  # Initialize LoggerService
54
61
  self.__initLogger()
55
62
 
56
- def __filename(self, original_path:str) -> str:
57
- """
58
- Generates a rotated log filename by prefixing the original filename with a timestamp.
59
- This method takes an original file path, extracts its directory, base name, and extension,
60
- and returns a new file path where the base name is prefixed with the current timestamp
61
- in the format 'YYYYMMDD_HHMMSS'. If the target directory does not exist, it is created.
62
- The original file path to be rotated.
63
- The new file path with a timestamp prefix added to the base name.
64
- Notes
65
- -----
66
- - The timestamp is based on the current local time.
67
- - The method ensures that the parent directory for the new file exists.
68
-
69
- Returns
70
- -------
71
- str
72
- The new filename with a timestamp prefix in the format 'YYYYMMDD_HHMMSS'.
73
- """
74
- import os
75
- from datetime import datetime
76
- from pathlib import Path
77
-
78
- # Split the original path to extract the base name and extension
79
- if '/' in original_path:
80
- parts = original_path.split('/')
81
- elif '\\' in original_path:
82
- parts = original_path.split('\\')
83
- else:
84
- parts = original_path.split(os.sep)
85
-
86
- # Get the base name and extension
87
- filename, ext = os.path.splitext(parts[-1])
88
-
89
- # Create the path without the last part
90
- path = os.path.join(*parts[:-1]) if len(parts) > 1 else ''
91
-
92
- # Prefix the base name with a timestamp
93
- prefix = datetime.now().strftime("%Y%m%d_%H%M%S")
94
-
95
- # Join the path, prefix, and filename to create the full path
96
- full_path = os.path.join(path, f"{prefix}_{filename}{ext}")
97
-
98
- # Ensure the log directory exists
99
- log_dir = Path(full_path).parent
100
- if not log_dir.exists():
101
- log_dir.mkdir(parents=True, exist_ok=True)
102
-
103
- # Return the full path as a string
104
- return full_path
105
-
106
63
  def __initLogger(self):
107
64
  """
108
65
  Configures the logger with the specified settings.
@@ -131,7 +88,7 @@ class LoggerService(ILoggerService):
131
88
  config_channels = getattr(self.__config.channels, channel)
132
89
 
133
90
  # Get the path from the channel configuration
134
- path: str = self.__filename(getattr(config_channels, 'path'))
91
+ path: str = FileNameLogger(getattr(config_channels, 'path')).generate()
135
92
 
136
93
  # Get Level from the channel configuration, defaulting to 10 (DEBUG)
137
94
  level: Level | int = getattr(config_channels, 'level', 10)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.403.0
3
+ Version: 0.405.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
@@ -331,6 +331,7 @@ orionis/services/log/contracts/log_service.py
331
331
  orionis/services/log/exceptions/__init__.py
332
332
  orionis/services/log/exceptions/runtime.py
333
333
  orionis/services/log/handlers/__init__.py
334
+ orionis/services/log/handlers/filename.py
334
335
  orionis/services/log/handlers/size_rotating.py
335
336
  orionis/services/log/handlers/timed_rotating.py
336
337
  orionis/services/paths/__init__.py
@@ -25,7 +25,7 @@ class TestFoundationConfigLoggingChunked(AsyncTestCase):
25
25
  None
26
26
  """
27
27
  chunked = Chunked()
28
- self.assertEqual(chunked.path, "storage/log/application.log")
28
+ self.assertEqual(chunked.path, "storage/log/chunked.log")
29
29
  self.assertEqual(chunked.level, Level.INFO.value)
30
30
  self.assertEqual(chunked.mb_size, 10)
31
31
  self.assertEqual(chunked.files, 5)
@@ -85,39 +85,19 @@ class TestFoundationConfigLoggingChunked(AsyncTestCase):
85
85
  """
86
86
  Test validation of the `mb_size` attribute.
87
87
 
88
- Ensures that valid integer and string formats are accepted, and invalid
89
- values raise `OrionisIntegrityException`.
90
-
91
88
  Returns
92
89
  -------
93
90
  None
94
91
  """
95
- # Test valid integer values
96
- try:
97
- Chunked(mb_size=1)
98
- Chunked(mb_size=100)
99
- except OrionisIntegrityException:
100
- self.fail("Valid mb_size should not raise exception")
101
-
102
- # Test string formats
103
- chunked = Chunked(mb_size="10MB")
92
+ chunked = Chunked(mb_size=10)
104
93
  self.assertEqual(chunked.mb_size, 10)
105
94
 
106
- chunked = Chunked(mb_size="10240KB")
107
- self.assertEqual(chunked.mb_size, 10)
108
-
109
- chunked = Chunked(mb_size="10485760B")
110
- self.assertEqual(chunked.mb_size, 10)
95
+ chunked = Chunked(mb_size=1000)
96
+ self.assertEqual(chunked.mb_size, 1000)
111
97
 
112
- # Test invalid cases
113
- with self.assertRaises(OrionisIntegrityException):
114
- Chunked(mb_size=0)
115
- with self.assertRaises(OrionisIntegrityException):
116
- Chunked(mb_size=-1)
117
- with self.assertRaises(OrionisIntegrityException):
118
- Chunked(mb_size="invalid")
119
98
  with self.assertRaises(OrionisIntegrityException):
120
- Chunked(mb_size="10GB")
99
+ chunked = Chunked(mb_size=2048)
100
+ self.assertEqual(chunked.mb_size, 2048)
121
101
 
122
102
  async def testFilesValidation(self):
123
103
  """
@@ -149,16 +129,14 @@ class TestFoundationConfigLoggingChunked(AsyncTestCase):
149
129
  """
150
130
  Test handling of whitespace in `path` and `level` attributes.
151
131
 
152
- Ensures that leading and trailing whitespace in `path` and `level` are
153
- handled as expected.
154
-
155
132
  Returns
156
133
  -------
157
134
  None
158
135
  """
159
- chunked = Chunked(path=" logs/app.log ", level=" debug ")
160
- self.assertEqual(chunked.path, " logs/app.log ")
161
- self.assertEqual(chunked.level, Level.DEBUG.value)
136
+ with self.assertRaises(OrionisIntegrityException):
137
+ chunked = Chunked(path=" logs/app.log ", level=" debug ")
138
+ self.assertEqual(chunked.path, " logs/app.log ")
139
+ self.assertEqual(chunked.level, Level.DEBUG.value)
162
140
 
163
141
  async def testToDictMethod(self):
164
142
  """
@@ -175,7 +153,7 @@ class TestFoundationConfigLoggingChunked(AsyncTestCase):
175
153
  chunked_dict = chunked.toDict()
176
154
 
177
155
  self.assertIsInstance(chunked_dict, dict)
178
- self.assertEqual(chunked_dict['path'], "storage/log/application.log")
156
+ self.assertEqual(chunked_dict['path'], "storage/log/chunked.log")
179
157
  self.assertEqual(chunked_dict['level'], Level.INFO.value)
180
158
  self.assertEqual(chunked_dict['mb_size'], 10)
181
159
  self.assertEqual(chunked_dict['files'], 5)
@@ -199,7 +177,7 @@ class TestFoundationConfigLoggingChunked(AsyncTestCase):
199
177
  )
200
178
  chunked_dict = custom_chunked.toDict()
201
179
  self.assertEqual(chunked_dict['path'], "custom/logs/app.log")
202
- self.assertEqual(chunked_dict['level'], Level.WARNING.value)
180
+ self.assertEqual(chunked_dict['level'], 30)
203
181
  self.assertEqual(chunked_dict['mb_size'], 20)
204
182
  self.assertEqual(chunked_dict['files'], 10)
205
183
 
@@ -25,10 +25,10 @@ class TestFoundationConfigLoggingDaily(AsyncTestCase):
25
25
  None
26
26
  """
27
27
  daily = Daily()
28
- self.assertEqual(daily.path, "storage/log/application.log")
28
+ self.assertEqual(daily.path, "storage/log/daily.log")
29
29
  self.assertEqual(daily.level, Level.INFO.value)
30
30
  self.assertEqual(daily.retention_days, 7)
31
- self.assertEqual(daily.at, "00:00:00")
31
+ self.assertEqual(daily.at, "00:00")
32
32
 
33
33
  async def testPathValidation(self):
34
34
  """
@@ -122,7 +122,7 @@ class TestFoundationConfigLoggingDaily(AsyncTestCase):
122
122
  """
123
123
  # Test time object
124
124
  daily = Daily(at=time(12, 30))
125
- self.assertEqual(daily.at, "12:30:00")
125
+ self.assertEqual(daily.at, "12:30")
126
126
 
127
127
  # Test invalid type
128
128
  with self.assertRaises(OrionisIntegrityException):
@@ -134,15 +134,15 @@ class TestFoundationConfigLoggingDaily(AsyncTestCase):
134
134
  """
135
135
  Test handling of whitespace in path and level attributes.
136
136
 
137
- Ensures that whitespace in path and level is preserved or handled as expected.
138
-
139
137
  Returns
140
138
  -------
141
139
  None
142
140
  """
143
- daily = Daily(path=" logs/app.log ", level=" debug ")
144
- self.assertEqual(daily.path, " logs/app.log ")
145
- self.assertEqual(daily.level, Level.DEBUG.value)
141
+
142
+ with self.assertRaises(OrionisIntegrityException):
143
+ daily = Daily(path=" logs/app.log ", level=" debug ")
144
+ self.assertEqual(daily.path, " logs/app.log ")
145
+ self.assertEqual(daily.level, Level.DEBUG.value)
146
146
 
147
147
  async def testToDictMethod(self):
148
148
  """
@@ -159,10 +159,10 @@ class TestFoundationConfigLoggingDaily(AsyncTestCase):
159
159
  daily_dict = daily.toDict()
160
160
 
161
161
  self.assertIsInstance(daily_dict, dict)
162
- self.assertEqual(daily_dict['path'], "storage/log/application.log")
162
+ self.assertEqual(daily_dict['path'], "storage/log/daily.log")
163
163
  self.assertEqual(daily_dict['level'], Level.INFO.value)
164
164
  self.assertEqual(daily_dict['retention_days'], 7)
165
- self.assertEqual(daily_dict['at'], "00:00:00")
165
+ self.assertEqual(daily_dict['at'], "00:00")
166
166
 
167
167
  async def testCustomValuesToDict(self):
168
168
  """
@@ -184,7 +184,7 @@ class TestFoundationConfigLoggingDaily(AsyncTestCase):
184
184
  self.assertEqual(daily_dict['path'], "custom/logs/app.log")
185
185
  self.assertEqual(daily_dict['level'], Level.WARNING.value)
186
186
  self.assertEqual(daily_dict['retention_days'], 14)
187
- self.assertEqual(daily_dict['at'], "23:59:00")
187
+ self.assertEqual(daily_dict['at'], "23:59")
188
188
 
189
189
  async def testHashability(self):
190
190
  """
@@ -24,7 +24,7 @@ class TestFoundationConfigLoggingHourly(AsyncTestCase):
24
24
  None
25
25
  """
26
26
  hourly = Hourly()
27
- self.assertEqual(hourly.path, "storage/log/application.log")
27
+ self.assertEqual(hourly.path, "storage/log/hourly.log")
28
28
  self.assertEqual(hourly.level, Level.INFO.value)
29
29
  self.assertEqual(hourly.retention_hours, 24)
30
30
 
@@ -113,16 +113,15 @@ class TestFoundationConfigLoggingHourly(AsyncTestCase):
113
113
  """
114
114
  Test whitespace handling in path and level attributes.
115
115
 
116
- Verifies that leading and trailing whitespace in the `path` and `level`
117
- attributes are handled as expected.
118
-
119
116
  Returns
120
117
  -------
121
118
  None
122
119
  """
123
- hourly = Hourly(path=" logs/app.log ", level=" debug ")
124
- self.assertEqual(hourly.path, " logs/app.log ")
125
- self.assertEqual(hourly.level, Level.DEBUG.value)
120
+
121
+ with self.assertRaises(OrionisIntegrityException):
122
+ hourly = Hourly(path=" logs/app.log ", level=" debug ")
123
+ self.assertEqual(hourly.path, " logs/app.log ")
124
+ self.assertEqual(hourly.level, Level.DEBUG.value)
126
125
 
127
126
  async def testToDictMethod(self):
128
127
  """
@@ -138,7 +137,7 @@ class TestFoundationConfigLoggingHourly(AsyncTestCase):
138
137
  hourly = Hourly()
139
138
  hourly_dict = hourly.toDict()
140
139
  self.assertIsInstance(hourly_dict, dict)
141
- self.assertEqual(hourly_dict['path'], "storage/log/application.log")
140
+ self.assertEqual(hourly_dict['path'], "storage/log/hourly.log")
142
141
  self.assertEqual(hourly_dict['level'], Level.INFO.value)
143
142
  self.assertEqual(hourly_dict['retention_hours'], 24)
144
143
 
@@ -25,7 +25,7 @@ class TestFoundationConfigLoggingMonthly(AsyncTestCase):
25
25
  - Default retention_months is 4.
26
26
  """
27
27
  monthly = Monthly()
28
- self.assertEqual(monthly.path, "storage/log/application.log")
28
+ self.assertEqual(monthly.path, "storage/log/monthly.log")
29
29
  self.assertEqual(monthly.level, Level.INFO.value)
30
30
  self.assertEqual(monthly.retention_months, 4)
31
31
 
@@ -106,15 +106,12 @@ class TestFoundationConfigLoggingMonthly(AsyncTestCase):
106
106
  async def testWhitespaceHandling(self):
107
107
  """
108
108
  Test whitespace handling in path and level attributes.
109
-
110
- Verifies
111
- --------
112
- - Whitespace in path is preserved.
113
- - Whitespace in level is handled correctly.
114
109
  """
115
- monthly = Monthly(path=" logs/app.log ", level=" debug ")
116
- self.assertEqual(monthly.path, " logs/app.log ")
117
- self.assertEqual(monthly.level, Level.DEBUG.value)
110
+
111
+ with self.assertRaises(OrionisIntegrityException):
112
+ monthly = Monthly(path=" logs/app.log ", level=" debug ")
113
+ self.assertEqual(monthly.path, " logs/app.log ")
114
+ self.assertEqual(monthly.level, Level.DEBUG.value)
118
115
 
119
116
  async def testToDictMethod(self):
120
117
  """
@@ -127,7 +124,7 @@ class TestFoundationConfigLoggingMonthly(AsyncTestCase):
127
124
  monthly = Monthly()
128
125
  monthly_dict = monthly.toDict()
129
126
  self.assertIsInstance(monthly_dict, dict)
130
- self.assertEqual(monthly_dict['path'], "storage/log/application.log")
127
+ self.assertEqual(monthly_dict['path'], "storage/log/monthly.log")
131
128
  self.assertEqual(monthly_dict['level'], Level.INFO.value)
132
129
  self.assertEqual(monthly_dict['retention_months'], 4)
133
130