orionis 0.408.0__tar.gz → 0.410.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 (578) hide show
  1. {orionis-0.408.0/orionis.egg-info → orionis-0.410.0}/PKG-INFO +1 -1
  2. {orionis-0.408.0 → orionis-0.410.0}/orionis/metadata/framework.py +1 -1
  3. orionis-0.410.0/orionis/services/log/contracts/log_service.py +75 -0
  4. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/handlers/filename.py +20 -12
  5. orionis-0.410.0/orionis/services/log/handlers/size_rotating.py +29 -0
  6. orionis-0.410.0/orionis/services/log/handlers/timed_rotating.py +29 -0
  7. orionis-0.410.0/orionis/services/log/log_service.py +296 -0
  8. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/contracts/resolver.py +0 -1
  9. {orionis-0.408.0 → orionis-0.410.0/orionis.egg-info}/PKG-INFO +1 -1
  10. {orionis-0.408.0 → orionis-0.410.0}/orionis.egg-info/SOURCES.txt +2 -0
  11. orionis-0.410.0/tests/services/log/test_log.py +97 -0
  12. orionis-0.410.0/tests/testing/__init__.py +0 -0
  13. orionis-0.408.0/orionis/services/log/contracts/log_service.py +0 -23
  14. orionis-0.408.0/orionis/services/log/handlers/size_rotating.py +0 -21
  15. orionis-0.408.0/orionis/services/log/handlers/timed_rotating.py +0 -21
  16. orionis-0.408.0/orionis/services/log/log_service.py +0 -246
  17. {orionis-0.408.0 → orionis-0.410.0}/LICENCE +0 -0
  18. {orionis-0.408.0 → orionis-0.410.0}/MANIFEST.in +0 -0
  19. {orionis-0.408.0 → orionis-0.410.0}/README.md +0 -0
  20. {orionis-0.408.0 → orionis-0.410.0}/orionis/__init__.py +0 -0
  21. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/__init__.py +0 -0
  22. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/base/__init__.py +0 -0
  23. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/base/command.py +0 -0
  24. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/command_filter.py +0 -0
  25. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/commands/__init__.py +0 -0
  26. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/commands/cache_clear.py +0 -0
  27. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/commands/help.py +0 -0
  28. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/commands/schedule_work.py +0 -0
  29. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/commands/version.py +0 -0
  30. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/dumper/__init__.py +0 -0
  31. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/dumper/dump_die.py +0 -0
  32. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/exceptions/__init__.py +0 -0
  33. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/exceptions/cli-orionis-value-error.py +0 -0
  34. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/exceptions/cli_exception.py +0 -0
  35. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/exceptions/cli_runtime_error.py +0 -0
  36. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/exceptions/cli_schedule_exception.py +0 -0
  37. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/kernel.py +0 -0
  38. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/output/__init__.py +0 -0
  39. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/output/console.py +0 -0
  40. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/output/executor.py +0 -0
  41. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/output/progress_bar.py +0 -0
  42. {orionis-0.408.0 → orionis-0.410.0}/orionis/_console/parser.py +0 -0
  43. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/__init__.py +0 -0
  44. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/application.py +0 -0
  45. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/config/__init__.py +0 -0
  46. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/config/config.py +0 -0
  47. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/__init__.py +0 -0
  48. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/base/__init__.py +0 -0
  49. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/base/command.py +0 -0
  50. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/command_filter.py +0 -0
  51. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/kernel.py +0 -0
  52. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/output/__init__.py +0 -0
  53. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/output/console.py +0 -0
  54. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/output/executor.py +0 -0
  55. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/parser.py +0 -0
  56. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/console/task_manager.py +0 -0
  57. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/__init__.py +0 -0
  58. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  59. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  60. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  61. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  62. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  63. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  64. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  65. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/facade.py +0 -0
  66. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  67. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  68. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  69. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  70. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  71. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  72. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/__init__.py +0 -0
  73. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  74. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  75. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  76. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  77. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  78. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  79. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  80. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  81. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  82. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/providers/__init__.py +0 -0
  83. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/providers/service_provider.py +0 -0
  84. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/__init__.py +0 -0
  85. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  86. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  87. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  88. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/config/__init__.py +0 -0
  89. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/config/config_service.py +0 -0
  90. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  91. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  92. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/files/__init__.py +0 -0
  93. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  94. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/log/__init__.py +0 -0
  95. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/services/log/log_service.py +0 -0
  96. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/support/exception_parse.py +0 -0
  97. {orionis-0.408.0 → orionis-0.410.0}/orionis/_contracts/support/reflection.py +0 -0
  98. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/__init__.py +0 -0
  99. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/console/__init__.py +0 -0
  100. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  101. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/environment/__init__.py +0 -0
  102. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  103. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  104. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  105. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  106. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  107. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  108. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/providers/__init__.py +0 -0
  109. {orionis-0.408.0 → orionis-0.410.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  110. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/__init__.py +0 -0
  111. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/commands/__init__.py +0 -0
  112. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  113. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/commands/scheduler_service.py +0 -0
  114. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/config/__init__.py +0 -0
  115. {orionis-0.408.0 → orionis-0.410.0}/orionis/_services/config/config_service.py +0 -0
  116. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/__init__.py +0 -0
  117. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/base/__init__.py +0 -0
  118. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/base/command.py +0 -0
  119. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/base/contracts/__init__.py +0 -0
  120. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/base/contracts/command.py +0 -0
  121. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dumper/__init__.py +0 -0
  122. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  123. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dumper/contracts/dump.py +0 -0
  124. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dumper/dump.py +0 -0
  125. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dynamic/__init__.py +0 -0
  126. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  127. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  128. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/dynamic/progress_bar.py +0 -0
  129. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/__init__.py +0 -0
  130. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/console.py +0 -0
  131. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/contracts/__init__.py +0 -0
  132. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/contracts/console.py +0 -0
  133. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/enums/__init__.py +0 -0
  134. {orionis-0.408.0 → orionis-0.410.0}/orionis/console/output/enums/styles.py +0 -0
  135. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/__init__.py +0 -0
  136. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/container.py +0 -0
  137. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/context/__init__.py +0 -0
  138. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/context/manager.py +0 -0
  139. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/context/scope.py +0 -0
  140. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/contracts/__init__.py +0 -0
  141. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/contracts/container.py +0 -0
  142. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/contracts/resolver.py +0 -0
  143. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/contracts/service_provider.py +0 -0
  144. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/entities/__init__.py +0 -0
  145. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/entities/binding.py +0 -0
  146. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/enums/__init__.py +0 -0
  147. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/enums/lifetimes.py +0 -0
  148. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/exceptions/__init__.py +0 -0
  149. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/exceptions/attribute.py +0 -0
  150. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/exceptions/exception.py +0 -0
  151. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/exceptions/type.py +0 -0
  152. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/exceptions/value.py +0 -0
  153. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/facades/__init__.py +0 -0
  154. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/facades/facade.py +0 -0
  155. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/providers/__init__.py +0 -0
  156. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/providers/service_provider.py +0 -0
  157. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/resolver/__init__.py +0 -0
  158. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/resolver/resolver.py +0 -0
  159. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/__init__.py +0 -0
  160. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/implements.py +0 -0
  161. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_abstract_class.py +0 -0
  162. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_callable.py +0 -0
  163. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_concrete_class.py +0 -0
  164. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_instance.py +0 -0
  165. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_not_subclass.py +0 -0
  166. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_subclass.py +0 -0
  167. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/is_valid_alias.py +0 -0
  168. {orionis-0.408.0 → orionis-0.410.0}/orionis/container/validators/lifetime.py +0 -0
  169. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/__init__.py +0 -0
  170. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/application.py +0 -0
  171. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/__init__.py +0 -0
  172. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/__init__.py +0 -0
  173. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  174. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/entities/app.py +0 -0
  175. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  176. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  177. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  178. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/auth/__init__.py +0 -0
  179. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  180. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  181. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/__init__.py +0 -0
  182. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  183. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  184. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  185. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  186. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  187. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  188. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cors/__init__.py +0 -0
  189. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  190. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  191. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/__init__.py +0 -0
  192. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  193. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  194. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/database.py +0 -0
  195. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  196. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  197. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  198. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  199. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  200. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  201. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  202. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  203. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  204. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  205. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  206. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  207. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  208. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  209. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  210. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  211. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  212. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  213. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  214. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  215. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  216. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  217. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  218. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/__init__.py +0 -0
  219. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  220. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  221. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  222. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  223. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  224. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  225. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  226. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  227. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  228. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  229. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  230. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  231. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  232. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  233. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/__init__.py +0 -0
  234. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  235. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  236. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  237. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  238. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  239. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/__init__.py +0 -0
  240. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  241. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  242. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  243. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  244. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  245. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  246. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/roots/__init__.py +0 -0
  247. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/roots/paths.py +0 -0
  248. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/__init__.py +0 -0
  249. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  250. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/entities/session.py +0 -0
  251. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  252. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  253. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  254. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  255. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/startup.py +0 -0
  256. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/__init__.py +0 -0
  257. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  258. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  259. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  260. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  261. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  262. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  263. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/contracts/__init__.py +0 -0
  264. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/contracts/application.py +0 -0
  265. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/contracts/config.py +0 -0
  266. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/exceptions/__init__.py +0 -0
  267. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/exceptions/integrity.py +0 -0
  268. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/exceptions/runtime.py +0 -0
  269. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/exceptions/type.py +0 -0
  270. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/exceptions/value.py +0 -0
  271. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/__init__.py +0 -0
  272. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/console_provider.py +0 -0
  273. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  274. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/logger_provider.py +0 -0
  275. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/path_resolver_provider.py +0 -0
  276. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  277. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/testing_provider.py +0 -0
  278. {orionis-0.408.0 → orionis-0.410.0}/orionis/foundation/providers/workers_provider.py +0 -0
  279. {orionis-0.408.0 → orionis-0.410.0}/orionis/metadata/__init__.py +0 -0
  280. {orionis-0.408.0 → orionis-0.410.0}/orionis/metadata/package.py +0 -0
  281. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/__init__.py +0 -0
  282. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/__init__.py +0 -0
  283. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  284. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  285. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/coroutines.py +0 -0
  286. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  287. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  288. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/__init__.py +0 -0
  289. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/contracts/__init__.py +0 -0
  290. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/contracts/env.py +0 -0
  291. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/contracts/types.py +0 -0
  292. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/core/__init__.py +0 -0
  293. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/core/dot_env.py +0 -0
  294. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  295. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/dynamic/types.py +0 -0
  296. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/enums/__init__.py +0 -0
  297. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/enums/cast_type.py +0 -0
  298. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/env.py +0 -0
  299. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  300. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/exceptions/exception.py +0 -0
  301. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/exceptions/value.py +0 -0
  302. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/helpers/__init__.py +0 -0
  303. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/helpers/functions.py +0 -0
  304. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/key/__init__.py +0 -0
  305. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/key/key_generator.py +0 -0
  306. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/serializer/__init__.py +0 -0
  307. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/serializer/values.py +0 -0
  308. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/validators/__init__.py +0 -0
  309. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/validators/key_name.py +0 -0
  310. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/environment/validators/types.py +0 -0
  311. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/__init__.py +0 -0
  312. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  313. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  314. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  315. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  316. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/callables/__init__.py +0 -0
  317. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  318. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  319. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/callables/reflection.py +0 -0
  320. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  321. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  322. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/concretes/contracts/concrete.py +0 -0
  323. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  324. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  325. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  326. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  327. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  328. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  329. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  330. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  331. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  332. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  333. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  334. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  335. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/exceptions/type.py +0 -0
  336. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/exceptions/value.py +0 -0
  337. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/instances/__init__.py +0 -0
  338. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  339. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  340. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/instances/reflection.py +0 -0
  341. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/modules/__init__.py +0 -0
  342. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  343. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  344. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/modules/reflection.py +0 -0
  345. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/objects/__init__.py +0 -0
  346. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/objects/types.py +0 -0
  347. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/introspection/reflection.py +0 -0
  348. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/__init__.py +0 -0
  349. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/contracts/__init__.py +0 -0
  350. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/exceptions/__init__.py +0 -0
  351. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/exceptions/runtime.py +0 -0
  352. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/log/handlers/__init__.py +0 -0
  353. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/__init__.py +0 -0
  354. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/contracts/__init__.py +0 -0
  355. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  356. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/exceptions/exception.py +0 -0
  357. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/exceptions/file.py +0 -0
  358. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/paths/resolver.py +0 -0
  359. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/__init__.py +0 -0
  360. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/contracts/__init__.py +0 -0
  361. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/contracts/imports.py +0 -0
  362. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/contracts/workers.py +0 -0
  363. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/imports.py +0 -0
  364. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/runtime/__init__.py +0 -0
  365. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/runtime/imports.py +0 -0
  366. {orionis-0.408.0 → orionis-0.410.0}/orionis/services/system/workers.py +0 -0
  367. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/__init__.py +0 -0
  368. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/entities/__init__.py +0 -0
  369. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/entities/base.py +0 -0
  370. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/__init__.py +0 -0
  371. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/console.py +0 -0
  372. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/dumper.py +0 -0
  373. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/logger.py +0 -0
  374. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/path_resolver.py +0 -0
  375. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/progress_bar.py +0 -0
  376. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/testing.py +0 -0
  377. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/facades/workers.py +0 -0
  378. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/__init__.py +0 -0
  379. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  380. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  381. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  382. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  383. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/formatter/serializer.py +0 -0
  384. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/patterns/__init__.py +0 -0
  385. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  386. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/patterns/singleton/meta.py +0 -0
  387. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/__init__.py +0 -0
  388. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/contracts/__init__.py +0 -0
  389. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/contracts/std.py +0 -0
  390. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  391. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/exceptions/value.py +0 -0
  392. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/standard/std.py +0 -0
  393. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/wrapper/__init__.py +0 -0
  394. {orionis-0.408.0 → orionis-0.410.0}/orionis/support/wrapper/dot_dict.py +0 -0
  395. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/__init__.py +0 -0
  396. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/cases/__init__.py +0 -0
  397. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/cases/asynchronous.py +0 -0
  398. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/cases/synchronous.py +0 -0
  399. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/__init__.py +0 -0
  400. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/dumper.py +0 -0
  401. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/kernel.py +0 -0
  402. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/logs.py +0 -0
  403. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/printer.py +0 -0
  404. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/render.py +0 -0
  405. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/test_result.py +0 -0
  406. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/contracts/unit_test.py +0 -0
  407. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/core/__init__.py +0 -0
  408. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/core/unit_test.py +0 -0
  409. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/entities/__init__.py +0 -0
  410. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/entities/result.py +0 -0
  411. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/enums/__init__.py +0 -0
  412. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/enums/status.py +0 -0
  413. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/__init__.py +0 -0
  414. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/config.py +0 -0
  415. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/failure.py +0 -0
  416. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/persistence.py +0 -0
  417. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/runtime.py +0 -0
  418. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/exceptions/value.py +0 -0
  419. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/kernel.py +0 -0
  420. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/output/__init__.py +0 -0
  421. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/output/dumper.py +0 -0
  422. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/output/printer.py +0 -0
  423. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/records/__init__.py +0 -0
  424. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/records/logs.py +0 -0
  425. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/__init__.py +0 -0
  426. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/base_path.py +0 -0
  427. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/execution_mode.py +0 -0
  428. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/fail_fast.py +0 -0
  429. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/folder_path.py +0 -0
  430. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/module_name.py +0 -0
  431. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/name_pattern.py +0 -0
  432. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/pattern.py +0 -0
  433. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/persistent.py +0 -0
  434. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/persistent_driver.py +0 -0
  435. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/print_result.py +0 -0
  436. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/tags.py +0 -0
  437. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/throw_exception.py +0 -0
  438. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/verbosity.py +0 -0
  439. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/web_report.py +0 -0
  440. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/validators/workers.py +0 -0
  441. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/view/__init__.py +0 -0
  442. {orionis-0.408.0 → orionis-0.410.0}/orionis/test/view/render.py +0 -0
  443. {orionis-0.408.0 → orionis-0.410.0}/orionis.egg-info/dependency_links.txt +0 -0
  444. {orionis-0.408.0 → orionis-0.410.0}/orionis.egg-info/requires.txt +0 -0
  445. {orionis-0.408.0 → orionis-0.410.0}/orionis.egg-info/top_level.txt +0 -0
  446. {orionis-0.408.0 → orionis-0.410.0}/orionis.egg-info/zip-safe +0 -0
  447. {orionis-0.408.0 → orionis-0.410.0}/setup.cfg +0 -0
  448. {orionis-0.408.0 → orionis-0.410.0}/setup.py +0 -0
  449. {orionis-0.408.0 → orionis-0.410.0}/tests/__init__.py +0 -0
  450. {orionis-0.408.0 → orionis-0.410.0}/tests/container/__init__.py +0 -0
  451. {orionis-0.408.0 → orionis-0.410.0}/tests/container/context/__init__.py +0 -0
  452. {orionis-0.408.0 → orionis-0.410.0}/tests/container/context/test_manager.py +0 -0
  453. {orionis-0.408.0 → orionis-0.410.0}/tests/container/context/test_scope.py +0 -0
  454. {orionis-0.408.0 → orionis-0.410.0}/tests/container/entities/__init__.py +0 -0
  455. {orionis-0.408.0 → orionis-0.410.0}/tests/container/entities/test_binding.py +0 -0
  456. {orionis-0.408.0 → orionis-0.410.0}/tests/container/enums/__init__.py +0 -0
  457. {orionis-0.408.0 → orionis-0.410.0}/tests/container/enums/test_lifetimes.py +0 -0
  458. {orionis-0.408.0 → orionis-0.410.0}/tests/container/facades/__init__.py +0 -0
  459. {orionis-0.408.0 → orionis-0.410.0}/tests/container/facades/test_facade.py +0 -0
  460. {orionis-0.408.0 → orionis-0.410.0}/tests/container/mocks/__init__.py +0 -0
  461. {orionis-0.408.0 → orionis-0.410.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  462. {orionis-0.408.0 → orionis-0.410.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  463. {orionis-0.408.0 → orionis-0.410.0}/tests/container/providers/__init__.py +0 -0
  464. {orionis-0.408.0 → orionis-0.410.0}/tests/container/providers/test_providers.py +0 -0
  465. {orionis-0.408.0 → orionis-0.410.0}/tests/container/resolver/__init__.py +0 -0
  466. {orionis-0.408.0 → orionis-0.410.0}/tests/container/resolver/test_resolver.py +0 -0
  467. {orionis-0.408.0 → orionis-0.410.0}/tests/container/test_container.py +0 -0
  468. {orionis-0.408.0 → orionis-0.410.0}/tests/container/test_singleton.py +0 -0
  469. {orionis-0.408.0 → orionis-0.410.0}/tests/container/test_thread_safety.py +0 -0
  470. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/__init__.py +0 -0
  471. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_implements.py +0 -0
  472. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  473. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_callable.py +0 -0
  474. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  475. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_instance.py +0 -0
  476. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  477. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_subclass.py +0 -0
  478. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  479. {orionis-0.408.0 → orionis-0.410.0}/tests/container/validators/test_lifetime.py +0 -0
  480. {orionis-0.408.0 → orionis-0.410.0}/tests/example/__init__.py +0 -0
  481. {orionis-0.408.0 → orionis-0.410.0}/tests/example/test_example.py +0 -0
  482. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/__init__.py +0 -0
  483. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/__init__.py +0 -0
  484. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/app/__init__.py +0 -0
  485. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  486. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/auth/__init__.py +0 -0
  487. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  488. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cache/__init__.py +0 -0
  489. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  490. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  491. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  492. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cors/__init__.py +0 -0
  493. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  494. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/__init__.py +0 -0
  495. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  496. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  497. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  498. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  499. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  500. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  501. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  502. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  503. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  504. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  505. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  506. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  507. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/__init__.py +0 -0
  508. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  509. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  510. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  511. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  512. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  513. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  514. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  515. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  516. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/mail/__init__.py +0 -0
  517. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  518. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  519. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  520. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  521. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/queue/__init__.py +0 -0
  522. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  523. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  524. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  525. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/root/__init__.py +0 -0
  526. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  527. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/session/__init__.py +0 -0
  528. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  529. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/startup/__init__.py +0 -0
  530. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  531. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/testing/__init__.py +0 -0
  532. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  533. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/exceptions/__init__.py +0 -0
  534. {orionis-0.408.0 → orionis-0.410.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
  535. {orionis-0.408.0 → orionis-0.410.0}/tests/metadata/__init__.py +0 -0
  536. {orionis-0.408.0 → orionis-0.410.0}/tests/metadata/test_metadata_framework.py +0 -0
  537. {orionis-0.408.0 → orionis-0.410.0}/tests/metadata/test_metadata_package.py +0 -0
  538. {orionis-0.408.0 → orionis-0.410.0}/tests/services/__init__.py +0 -0
  539. {orionis-0.408.0 → orionis-0.410.0}/tests/services/asynchrony/__init__.py +0 -0
  540. {orionis-0.408.0 → orionis-0.410.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  541. {orionis-0.408.0 → orionis-0.410.0}/tests/services/environment/__init__.py +0 -0
  542. {orionis-0.408.0 → orionis-0.410.0}/tests/services/environment/test_services_environment.py +0 -0
  543. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/__init__.py +0 -0
  544. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/__init__.py +0 -0
  545. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  546. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  547. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  548. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  549. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  550. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/__init__.py +0 -0
  551. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/mock/__init__.py +0 -0
  552. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
  553. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
  554. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
  555. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
  556. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
  557. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
  558. {orionis-0.408.0 → orionis-0.410.0}/tests/services/inspection/test_reflection.py +0 -0
  559. {orionis-0.408.0/tests/services/path → orionis-0.410.0/tests/services/log}/__init__.py +0 -0
  560. {orionis-0.408.0/tests/services/system → orionis-0.410.0/tests/services/path}/__init__.py +0 -0
  561. {orionis-0.408.0 → orionis-0.410.0}/tests/services/path/test_services_resolver.py +0 -0
  562. {orionis-0.408.0/tests/support → orionis-0.410.0/tests/services/system}/__init__.py +0 -0
  563. {orionis-0.408.0 → orionis-0.410.0}/tests/services/system/test_services_system_imports.py +0 -0
  564. {orionis-0.408.0 → orionis-0.410.0}/tests/services/system/test_services_system_workers.py +0 -0
  565. {orionis-0.408.0/tests/support/parsers → orionis-0.410.0/tests/support}/__init__.py +0 -0
  566. {orionis-0.408.0/tests/support/parsers/mocks → orionis-0.410.0/tests/support/parsers}/__init__.py +0 -0
  567. {orionis-0.408.0/tests/support/patterns → orionis-0.410.0/tests/support/parsers/mocks}/__init__.py +0 -0
  568. {orionis-0.408.0 → orionis-0.410.0}/tests/support/parsers/mocks/mock_custom_error.py +0 -0
  569. {orionis-0.408.0 → orionis-0.410.0}/tests/support/parsers/test_services_parser_exceptions.py +0 -0
  570. {orionis-0.408.0/tests/support/patterns/singleton → orionis-0.410.0/tests/support/patterns}/__init__.py +0 -0
  571. {orionis-0.408.0/tests/support/standard → orionis-0.410.0/tests/support/patterns/singleton}/__init__.py +0 -0
  572. {orionis-0.408.0 → orionis-0.410.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  573. {orionis-0.408.0/tests/support/wrapper → orionis-0.410.0/tests/support/standard}/__init__.py +0 -0
  574. {orionis-0.408.0 → orionis-0.410.0}/tests/support/standard/test_services_std.py +0 -0
  575. {orionis-0.408.0/tests/testing → orionis-0.410.0/tests/support/wrapper}/__init__.py +0 -0
  576. {orionis-0.408.0 → orionis-0.410.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  577. {orionis-0.408.0 → orionis-0.410.0}/tests/testing/test_testing_result.py +0 -0
  578. {orionis-0.408.0 → orionis-0.410.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.408.0
3
+ Version: 0.410.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.408.0"
8
+ VERSION = "0.410.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,75 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ class ILoggerService(ABC):
4
+
5
+ @abstractmethod
6
+ def info(self, message: str) -> None:
7
+ """
8
+ Logs an informational message.
9
+
10
+ Parameters
11
+ ----------
12
+ message : str
13
+ The message to be logged as informational.
14
+
15
+ Returns
16
+ -------
17
+ None
18
+ This method does not return any value.
19
+ """
20
+ # To be implemented by subclasses
21
+ pass
22
+
23
+ @abstractmethod
24
+ def error(self, message: str) -> None:
25
+ """
26
+ Logs an error message.
27
+
28
+ Parameters
29
+ ----------
30
+ message : str
31
+ The message to be logged as an error.
32
+
33
+ Returns
34
+ -------
35
+ None
36
+ This method does not return any value.
37
+ """
38
+ # To be implemented by subclasses
39
+ pass
40
+
41
+ @abstractmethod
42
+ def warning(self, message: str) -> None:
43
+ """
44
+ Logs a warning message.
45
+
46
+ Parameters
47
+ ----------
48
+ message : str
49
+ The message to be logged as a warning.
50
+
51
+ Returns
52
+ -------
53
+ None
54
+ This method does not return any value.
55
+ """
56
+ # To be implemented by subclasses
57
+ pass
58
+
59
+ @abstractmethod
60
+ def debug(self, message: str) -> None:
61
+ """
62
+ Logs a debug message.
63
+
64
+ Parameters
65
+ ----------
66
+ message : str
67
+ The message to be logged for debugging purposes.
68
+
69
+ Returns
70
+ -------
71
+ None
72
+ This method does not return any value.
73
+ """
74
+ # To be implemented by subclasses
75
+ pass
@@ -12,19 +12,27 @@ class FileNameLogger:
12
12
  ----------
13
13
  path : str
14
14
  The original file path for the log file.
15
- """
16
15
 
17
- # If the path is not a string or is empty, raise a ValueError
16
+ Raises
17
+ ------
18
+ ValueError
19
+ If the provided path is not a non-empty string.
20
+ """
21
+ # Validate that the path is a non-empty string
18
22
  if not isinstance(path, str) or not path:
19
23
  raise ValueError("The 'path' parameter must be a non-empty string.")
20
24
 
21
- # Set the instance variable __path to the stripped path
25
+ # Store the stripped path as a private instance variable
22
26
  self.__path = path.strip()
23
27
 
24
28
  def generate(self) -> str:
25
29
  """
26
30
  Generate a new log file path with a timestamp prefix.
27
31
 
32
+ The method constructs a new file path by prefixing the original file name
33
+ with a timestamp in the format 'YYYYMMDD_HHMMSS'. It also ensures that the
34
+ directory for the log file exists, creating it if necessary.
35
+
28
36
  Returns
29
37
  -------
30
38
  str
@@ -32,10 +40,10 @@ class FileNameLogger:
32
40
 
33
41
  Notes
34
42
  -----
35
- The method ensures that the directory for the log file exists.
43
+ - The timestamp is generated using the current date and time.
44
+ - The directory for the log file is created if it does not exist.
36
45
  """
37
-
38
- # Split the original path to extract the base name and extension
46
+ # Split the original path into components based on the separator
39
47
  if '/' in self.__path:
40
48
  parts = self.__path.split('/')
41
49
  elif '\\' in self.__path:
@@ -43,22 +51,22 @@ class FileNameLogger:
43
51
  else:
44
52
  parts = self.__path.split(os.sep)
45
53
 
46
- # Get the base name and extension
54
+ # Extract the base file name and its extension
47
55
  filename, ext = os.path.splitext(parts[-1])
48
56
 
49
- # Create the path without the last part
57
+ # Reconstruct the directory path (excluding the file name)
50
58
  path = os.path.join(*parts[:-1]) if len(parts) > 1 else ''
51
59
 
52
- # Prefix the base name with a timestamp
60
+ # Generate a timestamp prefix for the file name
53
61
  prefix = datetime.now().strftime("%Y%m%d_%H%M%S")
54
62
 
55
- # Join the path, prefix, and filename to create the full path
63
+ # Build the full file path with the timestamped file name
56
64
  full_path = os.path.join(path, f"{prefix}_{filename}{ext}")
57
65
 
58
- # Ensure the log directory exists
66
+ # Ensure the log directory exists; create it if it does not
59
67
  log_dir = Path(full_path).parent
60
68
  if not log_dir.exists():
61
69
  log_dir.mkdir(parents=True, exist_ok=True)
62
70
 
63
- # Return the full path as a string
71
+ # Return the full path to the timestamped log file
64
72
  return full_path
@@ -0,0 +1,29 @@
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
+ Generates 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 that is subject to rotation.
14
+
15
+ Returns
16
+ -------
17
+ str
18
+ The new file path as a string, where the base name is prefixed with a timestamp
19
+ in the format 'YYYYMMDD_HHMMSS'. This ensures uniqueness and chronological ordering
20
+ of rotated log files.
21
+
22
+ Notes
23
+ -----
24
+ This method utilizes the FileNameLogger class to construct the prefixed filename.
25
+ The timestamp prefix helps in identifying the creation time of each rotated log file.
26
+ """
27
+
28
+ # Generate the new filename using FileNameLogger, which adds a timestamp prefix.
29
+ return FileNameLogger(default_name).generate()
@@ -0,0 +1,29 @@
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
+ Generates 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 that is subject to rotation.
14
+
15
+ Returns
16
+ -------
17
+ str
18
+ The new file path as a string, where the base name is prefixed with a timestamp
19
+ in the format 'YYYYMMDD_HHMMSS'. This ensures each rotated log file is uniquely
20
+ identified by its creation time.
21
+
22
+ Notes
23
+ -----
24
+ This method utilizes the FileNameLogger class to construct the new filename.
25
+ The timestamp prefix helps in organizing and distinguishing rotated log files.
26
+ """
27
+
28
+ # Use FileNameLogger to generate a new filename with a timestamp prefix
29
+ return FileNameLogger(default_name).generate()
@@ -0,0 +1,296 @@
1
+ from orionis.foundation.config.logging.entities.logging import Logging
2
+ from orionis.foundation.config.logging.enums import Level
3
+ from orionis.services.log.contracts.log_service import ILoggerService
4
+ from orionis.services.log.exceptions import LoggerRuntimeError
5
+ from orionis.services.log.handlers.filename import FileNameLogger
6
+ from orionis.services.log.handlers.size_rotating import PrefixedSizeRotatingFileHandler
7
+ from orionis.services.log.handlers.timed_rotating import PrefixedTimedRotatingFileHandler
8
+
9
+ class LoggerService(ILoggerService):
10
+
11
+ def __init__(
12
+ self,
13
+ config: Logging | dict = None,
14
+ **kwargs
15
+ ):
16
+ """
17
+ Initializes the LoggerService instance with the provided logging configuration.
18
+
19
+ This constructor sets up the logger configuration using either a `Logging` object,
20
+ a configuration dictionary, or keyword arguments. It validates the input and
21
+ ensures that the configuration is properly instantiated before initializing
22
+ the logger. If no configuration is provided, it attempts to create one using
23
+ the supplied keyword arguments.
24
+
25
+ Parameters
26
+ ----------
27
+ config : Logging or dict, optional
28
+ The logging configuration. Can be an instance of the `Logging` class,
29
+ a dictionary containing configuration parameters, or None. If None,
30
+ configuration is initialized using `kwargs`.
31
+ **kwargs
32
+ Additional keyword arguments used to initialize the `Logging` configuration
33
+ if `config` is None.
34
+
35
+ Returns
36
+ -------
37
+ None
38
+ This method does not return any value. It sets up the logger service instance.
39
+
40
+ Raises
41
+ ------
42
+ LoggerRuntimeError
43
+ If the logger configuration cannot be initialized from the provided arguments,
44
+ such as invalid types or missing required parameters.
45
+ """
46
+
47
+ # Initialize private attributes for logger and configuration
48
+ self.__logger = None
49
+ self.__config = None
50
+
51
+ # If no configuration is provided, attempt to create one using kwargs
52
+ if config is None:
53
+ try:
54
+ self.__config = Logging(**kwargs)
55
+ except Exception as e:
56
+ # Raise a runtime error if configuration initialization fails
57
+ raise LoggerRuntimeError(
58
+ f"Error initializing logger configuration: {e}. "
59
+ "Please check the provided parameters. "
60
+ f"Expected a Logging dataclass or a configuration dictionary. "
61
+ f"Type received: {type(config).__module__}.{type(config).__name__}. "
62
+ f"Expected: {Logging.__module__}.{Logging.__name__} or dict."
63
+ )
64
+
65
+ # If config is a dictionary, convert it to a Logging instance
66
+ elif isinstance(config, dict):
67
+ self.__config = Logging(**config)
68
+
69
+ # If config is already a Logging instance, use it directly
70
+ elif isinstance(config, Logging):
71
+ self.__config = config
72
+
73
+ # Initialize the logger using the validated configuration
74
+ self.__initLogger()
75
+
76
+ def __initLogger(self):
77
+ """
78
+ Initializes and configures the logger instance based on the provided settings.
79
+
80
+ This method sets up the logger to write logs to a file, using different handlers
81
+ depending on the logging channel type (e.g., stack, hourly, daily, weekly, monthly, chunked).
82
+ It ensures the log format includes a timestamp, log level, and message. If the specified
83
+ log directory does not exist, it is created automatically. The logger's level and retention
84
+ policies are determined by the configuration.
85
+
86
+ Parameters
87
+ ----------
88
+ None
89
+
90
+ Returns
91
+ -------
92
+ None
93
+ This method does not return any value. It sets up the logger instance as an attribute.
94
+
95
+ Raises
96
+ ------
97
+ LoggerRuntimeError
98
+ If the logger cannot be initialized due to an error in configuration or handler setup.
99
+ """
100
+ import logging
101
+ from datetime import datetime
102
+
103
+ try:
104
+ # List to hold the logging handlers
105
+ handlers = []
106
+
107
+ # Retrieve the default logging channel from configuration
108
+ channel: str = self.__config.default
109
+
110
+ # Get the configuration object for the selected channel
111
+ config_channels = getattr(self.__config.channels, channel)
112
+
113
+ # Generate the log file path using the FileNameLogger utility
114
+ path: str = FileNameLogger(getattr(config_channels, 'path')).generate()
115
+
116
+ # Determine the logging level (default to DEBUG if not specified)
117
+ level: Level | int = getattr(config_channels, 'level', 10)
118
+ level = level if isinstance(level, int) else level.value
119
+
120
+ # Select and configure the appropriate handler based on the channel type
121
+ if channel == "stack":
122
+ # Simple file handler for stack channel
123
+ handlers = [
124
+ logging.FileHandler(
125
+ filename=path,
126
+ encoding="utf-8"
127
+ )
128
+ ]
129
+
130
+ elif channel == "hourly":
131
+ # Rotating file handler for hourly logs
132
+ handlers = [
133
+ PrefixedTimedRotatingFileHandler(
134
+ filename=path,
135
+ when="h",
136
+ interval=1,
137
+ backupCount=getattr(config_channels, 'retention_hours', 24),
138
+ encoding="utf-8",
139
+ utc=False
140
+ )
141
+ ]
142
+
143
+ elif channel == "daily":
144
+ # Rotating file handler for daily logs
145
+ handlers = [
146
+ PrefixedTimedRotatingFileHandler(
147
+ filename=path,
148
+ when="d",
149
+ interval=1,
150
+ backupCount=getattr(config_channels, 'retention_days', 7),
151
+ encoding="utf-8",
152
+ atTime=datetime.strptime(getattr(config_channels, 'at', "00:00"), "%H:%M").time(),
153
+ utc=False
154
+ )
155
+ ]
156
+
157
+ elif channel == "weekly":
158
+ # Rotating file handler for weekly logs
159
+ handlers = [
160
+ PrefixedTimedRotatingFileHandler(
161
+ filename=path,
162
+ when="w0",
163
+ interval=1,
164
+ backupCount=getattr(config_channels, 'retention_weeks', 4),
165
+ encoding="utf-8",
166
+ utc=False
167
+ )
168
+ ]
169
+
170
+ elif channel == "monthly":
171
+ # Rotating file handler for monthly logs
172
+ handlers = [
173
+ PrefixedTimedRotatingFileHandler(
174
+ filename=path,
175
+ when="midnight",
176
+ interval=30,
177
+ backupCount=getattr(config_channels, 'retention_months', 4),
178
+ encoding="utf-8",
179
+ utc=False
180
+ )
181
+ ]
182
+
183
+ elif channel == "chunked":
184
+ # Size-based rotating file handler for chunked logs
185
+ handlers = [
186
+ PrefixedSizeRotatingFileHandler(
187
+ filename=path,
188
+ maxBytes=getattr(config_channels, 'mb_size', 10) * 1024 * 1024,
189
+ backupCount=getattr(config_channels, 'files', 5),
190
+ encoding="utf-8"
191
+ )
192
+ ]
193
+
194
+ # Configure the logger with the selected handlers and formatting
195
+ logging.basicConfig(
196
+ level=level,
197
+ format="%(asctime)s [%(levelname)s] - %(message)s",
198
+ datefmt="%Y-%m-%d %H:%M:%S",
199
+ encoding="utf-8",
200
+ handlers=handlers
201
+ )
202
+
203
+ # Store the logger instance as a private attribute
204
+ self.__logger = logging.getLogger(__name__)
205
+
206
+ except Exception as e:
207
+ # Raise a runtime error if logger initialization fails
208
+ raise LoggerRuntimeError(f"Failed to initialize logger: {e}")
209
+
210
+ def info(self, message: str) -> None:
211
+ """
212
+ Logs an informational message to the configured logger.
213
+
214
+ This method records informational messages that highlight the progress or state
215
+ of the application at a coarse-grained level. The message is stripped of leading
216
+ and trailing whitespace before being logged.
217
+
218
+ Parameters
219
+ ----------
220
+ message : str
221
+ The informational message to log.
222
+
223
+ Returns
224
+ -------
225
+ None
226
+ This method does not return any value.
227
+ """
228
+
229
+ # Log the informational message after stripping whitespace
230
+ self.__logger.info(message.strip())
231
+
232
+ def error(self, message: str) -> None:
233
+ """
234
+ Logs an error-level message to the configured logger.
235
+
236
+ This method records error messages that indicate serious issues or failures
237
+ within the application. The message is stripped of leading and trailing
238
+ whitespace before being logged.
239
+
240
+ Parameters
241
+ ----------
242
+ message : str
243
+ The error message to log.
244
+
245
+ Returns
246
+ -------
247
+ None
248
+ This method does not return any value.
249
+ """
250
+
251
+ # Log the error message after stripping whitespace
252
+ self.__logger.error(message.strip())
253
+
254
+ def warning(self, message: str) -> None:
255
+ """
256
+ Log a warning-level message to the configured logger.
257
+
258
+ This method records warning messages that indicate potential issues or
259
+ unexpected situations in the application. The message is stripped of
260
+ leading and trailing whitespace before being logged.
261
+
262
+ Parameters
263
+ ----------
264
+ message : str
265
+ The warning message to log.
266
+
267
+ Returns
268
+ -------
269
+ None
270
+ This method does not return any value.
271
+ """
272
+
273
+ # Log the warning message after stripping whitespace
274
+ self.__logger.warning(message.strip())
275
+
276
+ def debug(self, message: str) -> None:
277
+ """
278
+ Logs a debug-level message to the configured logger.
279
+
280
+ This method records diagnostic messages that are useful for debugging
281
+ and development purposes. The message is stripped of leading and trailing
282
+ whitespace before being logged.
283
+
284
+ Parameters
285
+ ----------
286
+ message : str
287
+ The debug message to be logged.
288
+
289
+ Returns
290
+ -------
291
+ None
292
+ This method does not return any value.
293
+ """
294
+
295
+ # Log the debug message after stripping whitespace
296
+ self.__logger.debug(message.strip())
@@ -1,5 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import Optional
3
2
 
4
3
  class IResolver(ABC):
5
4
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.408.0
3
+ Version: 0.410.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
@@ -548,6 +548,8 @@ tests/services/inspection/reflection/test_reflection_instance.py
548
548
  tests/services/inspection/reflection/test_reflection_module.py
549
549
  tests/services/inspection/reflection/mock/__init__.py
550
550
  tests/services/inspection/reflection/mock/fake_reflect_instance.py
551
+ tests/services/log/__init__.py
552
+ tests/services/log/test_log.py
551
553
  tests/services/path/__init__.py
552
554
  tests/services/path/test_services_resolver.py
553
555
  tests/services/system/__init__.py
@@ -0,0 +1,97 @@
1
+ from orionis.services.log.log_service import LoggerService
2
+ from orionis.support.facades.logger import Log
3
+ from orionis.test.cases.asynchronous import AsyncTestCase
4
+
5
+ class TestLoggerService(AsyncTestCase):
6
+
7
+ async def testHasInfoMethod(self):
8
+ """
9
+ Checks if the LoggerService class has an 'info' method.
10
+
11
+ Returns
12
+ -------
13
+ None
14
+ This test passes if the 'info' method exists, otherwise it fails.
15
+ """
16
+ self.assertTrue(hasattr(LoggerService, "info"))
17
+
18
+ async def testHasErrorMethod(self):
19
+ """
20
+ Checks if the LoggerService class has an 'error' method.
21
+
22
+ Returns
23
+ -------
24
+ None
25
+ This test passes if the 'error' method exists, otherwise it fails.
26
+ """
27
+ self.assertTrue(hasattr(LoggerService, "error"))
28
+
29
+ async def testHasWarningMethod(self):
30
+ """
31
+ Checks if the LoggerService class has a 'warning' method.
32
+
33
+ Returns
34
+ -------
35
+ None
36
+ This test passes if the 'warning' method exists, otherwise it fails.
37
+ """
38
+ self.assertTrue(hasattr(LoggerService, "warning"))
39
+
40
+ async def testHasDebugMethod(self):
41
+ """
42
+ Checks if the LoggerService class has a 'debug' method.
43
+
44
+ Returns
45
+ -------
46
+ None
47
+ This test passes if the 'debug' method exists, otherwise it fails.
48
+ """
49
+ self.assertTrue(hasattr(LoggerService, "debug"))
50
+
51
+ async def testLoggerWritesInfo(self):
52
+ """
53
+ Tests that the logger writes an info-level message.
54
+
55
+ Returns
56
+ -------
57
+ None
58
+ This test passes if the info message is processed without error.
59
+ """
60
+ # Log an info message
61
+ Log.info("Mensaje de prueba info")
62
+
63
+ async def testLoggerWritesError(self):
64
+ """
65
+ Tests that the logger writes an error-level message.
66
+
67
+ Returns
68
+ -------
69
+ None
70
+ This test passes if the error message is processed without error.
71
+ """
72
+ # Log an error message
73
+ Log.error("Mensaje de prueba error")
74
+
75
+ async def testLoggerWritesWarning(self):
76
+ """
77
+ Tests that the logger writes a warning-level message.
78
+
79
+ Returns
80
+ -------
81
+ None
82
+ This test passes if the warning message is processed without error.
83
+ """
84
+ # Log a warning message
85
+ Log.warning("Mensaje de prueba warning")
86
+
87
+ async def testLoggerWritesDebug(self):
88
+ """
89
+ Tests that the logger writes a debug-level message.
90
+
91
+ Returns
92
+ -------
93
+ None
94
+ This test passes if the debug message is processed without error.
95
+ """
96
+ # Log a debug message
97
+ Log.debug("Mensaje de prueba debug")
File without changes
@@ -1,23 +0,0 @@
1
- from abc import ABC, abstractmethod
2
-
3
- class ILoggerService(ABC):
4
-
5
- @abstractmethod
6
- def info(self, message: str) -> None:
7
- """Log an informational message."""
8
- pass
9
-
10
- @abstractmethod
11
- def error(self, message: str) -> None:
12
- """Log an error message."""
13
- pass
14
-
15
- @abstractmethod
16
- def warning(self, message: str) -> None:
17
- """Log a warning message."""
18
- pass
19
-
20
- @abstractmethod
21
- def debug(self, message: str) -> None:
22
- """Log a debug message."""
23
- pass