orionis 0.617.0__tar.gz → 0.619.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 (418) hide show
  1. {orionis-0.617.0/orionis.egg-info → orionis-0.619.0}/PKG-INFO +1 -1
  2. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/base/command.py +103 -36
  3. orionis-0.619.0/orionis/console/contracts/base_command.py +188 -0
  4. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/core/reactor.py +64 -49
  5. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/application.py +3 -5
  6. {orionis-0.617.0 → orionis-0.619.0}/orionis/metadata/framework.py +1 -1
  7. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/core/unit_test.py +12 -13
  8. {orionis-0.617.0 → orionis-0.619.0/orionis.egg-info}/PKG-INFO +1 -1
  9. orionis-0.617.0/orionis/console/contracts/base_command.py +0 -123
  10. {orionis-0.617.0 → orionis-0.619.0}/LICENCE +0 -0
  11. {orionis-0.617.0 → orionis-0.619.0}/MANIFEST.in +0 -0
  12. {orionis-0.617.0 → orionis-0.619.0}/README.md +0 -0
  13. {orionis-0.617.0 → orionis-0.619.0}/orionis/__init__.py +0 -0
  14. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/__init__.py +0 -0
  15. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/args/__init__.py +0 -0
  16. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/args/argument.py +0 -0
  17. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/base/__init__.py +0 -0
  18. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/base/scheduler.py +0 -0
  19. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/base/scheduler_event_listener.py +0 -0
  20. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/__init__.py +0 -0
  21. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/cache.py +0 -0
  22. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/help.py +0 -0
  23. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/make_listener.py +0 -0
  24. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/publisher.py +0 -0
  25. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/scheduler_list.py +0 -0
  26. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/scheduler_work.py +0 -0
  27. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/test.py +0 -0
  28. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/version.py +0 -0
  29. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/commands/workflow.py +0 -0
  30. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/__init__.py +0 -0
  31. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/base_scheduler.py +0 -0
  32. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/cli_request.py +0 -0
  33. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/command.py +0 -0
  34. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/console.py +0 -0
  35. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/debug.py +0 -0
  36. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/event.py +0 -0
  37. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/executor.py +0 -0
  38. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/kernel.py +0 -0
  39. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/progress_bar.py +0 -0
  40. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/reactor.py +0 -0
  41. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/schedule.py +0 -0
  42. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
  43. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/core/__init__.py +0 -0
  44. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/dumper/__init__.py +0 -0
  45. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/dumper/debug.py +0 -0
  46. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/dynamic/__init__.py +0 -0
  47. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/dynamic/progress_bar.py +0 -0
  48. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/__init__.py +0 -0
  49. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/command.py +0 -0
  50. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/event.py +0 -0
  51. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/event_job.py +0 -0
  52. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_error.py +0 -0
  53. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_event_data.py +0 -0
  54. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_paused.py +0 -0
  55. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_resumed.py +0 -0
  56. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
  57. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/entities/scheduler_started.py +0 -0
  58. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/enums/__init__.py +0 -0
  59. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/enums/actions.py +0 -0
  60. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/enums/listener.py +0 -0
  61. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/enums/styles.py +0 -0
  62. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/exceptions/__init__.py +0 -0
  63. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/exceptions/cli_exceptions.py +0 -0
  64. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/fluent/__init__.py +0 -0
  65. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/fluent/command.py +0 -0
  66. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/fluent/event.py +0 -0
  67. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/kernel.py +0 -0
  68. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/output/__init__.py +0 -0
  69. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/output/console.py +0 -0
  70. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/output/executor.py +0 -0
  71. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/request/__init__.py +0 -0
  72. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/request/cli_request.py +0 -0
  73. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/stub/command.stub +0 -0
  74. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/stub/listener.stub +0 -0
  75. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/tasks/__init__.py +0 -0
  76. {orionis-0.617.0 → orionis-0.619.0}/orionis/console/tasks/schedule.py +0 -0
  77. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/__init__.py +0 -0
  78. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/container.py +0 -0
  79. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/context/__init__.py +0 -0
  80. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/context/manager.py +0 -0
  81. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/context/scope.py +0 -0
  82. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/contracts/__init__.py +0 -0
  83. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/contracts/container.py +0 -0
  84. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/contracts/service_provider.py +0 -0
  85. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/entities/__init__.py +0 -0
  86. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/entities/binding.py +0 -0
  87. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/enums/__init__.py +0 -0
  88. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/enums/lifetimes.py +0 -0
  89. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/exceptions/__init__.py +0 -0
  90. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/exceptions/container.py +0 -0
  91. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/facades/__init__.py +0 -0
  92. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/facades/facade.py +0 -0
  93. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/providers/__init__.py +0 -0
  94. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/providers/service_provider.py +0 -0
  95. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/__init__.py +0 -0
  96. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/implements.py +0 -0
  97. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_abstract_class.py +0 -0
  98. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_callable.py +0 -0
  99. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_concrete_class.py +0 -0
  100. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_instance.py +0 -0
  101. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_not_subclass.py +0 -0
  102. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_subclass.py +0 -0
  103. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/is_valid_alias.py +0 -0
  104. {orionis-0.617.0 → orionis-0.619.0}/orionis/container/validators/lifetime.py +0 -0
  105. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/__init__.py +0 -0
  106. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/base/__init__.py +0 -0
  107. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/base/handler.py +0 -0
  108. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/catch.py +0 -0
  109. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/contracts/__init__.py +0 -0
  110. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/contracts/catch.py +0 -0
  111. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/contracts/handler.py +0 -0
  112. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/entities/__init__.py +0 -0
  113. {orionis-0.617.0 → orionis-0.619.0}/orionis/failure/entities/throwable.py +0 -0
  114. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/__init__.py +0 -0
  115. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/__init__.py +0 -0
  116. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/__init__.py +0 -0
  117. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  118. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/entities/app.py +0 -0
  119. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  120. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  121. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  122. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/auth/__init__.py +0 -0
  123. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  124. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  125. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/__init__.py +0 -0
  126. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  127. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  128. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  129. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  130. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  131. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  132. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cors/__init__.py +0 -0
  133. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  134. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  135. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/__init__.py +0 -0
  136. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  137. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  138. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/database.py +0 -0
  139. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  140. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  141. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  142. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  143. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  144. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  145. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  146. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  147. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  148. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  149. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  150. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  151. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  152. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  153. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  154. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  155. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  156. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  157. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  158. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  159. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  160. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  161. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  162. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/__init__.py +0 -0
  163. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  164. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  165. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  166. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  167. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  168. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  169. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  170. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  171. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  172. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  173. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  174. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  175. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  176. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  177. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/__init__.py +0 -0
  178. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  179. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  180. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  181. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  182. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  183. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/__init__.py +0 -0
  184. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  185. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  186. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  187. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  188. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  189. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  190. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/roots/__init__.py +0 -0
  191. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/roots/paths.py +0 -0
  192. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/__init__.py +0 -0
  193. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  194. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/entities/session.py +0 -0
  195. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  196. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  197. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  198. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  199. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/startup.py +0 -0
  200. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/__init__.py +0 -0
  201. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  202. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  203. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  204. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  205. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  206. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  207. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/contracts/__init__.py +0 -0
  208. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/contracts/application.py +0 -0
  209. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/exceptions/__init__.py +0 -0
  210. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/exceptions/application.py +0 -0
  211. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/__init__.py +0 -0
  212. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/catch_provider.py +0 -0
  213. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/cli_request_provider.py +0 -0
  214. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/console_provider.py +0 -0
  215. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/directory_provider.py +0 -0
  216. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  217. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/executor_provider.py +0 -0
  218. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  219. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/logger_provider.py +0 -0
  220. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
  221. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  222. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/reactor_provider.py +0 -0
  223. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
  224. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/testing_provider.py +0 -0
  225. {orionis-0.617.0 → orionis-0.619.0}/orionis/foundation/providers/workers_provider.py +0 -0
  226. {orionis-0.617.0 → orionis-0.619.0}/orionis/metadata/__init__.py +0 -0
  227. {orionis-0.617.0 → orionis-0.619.0}/orionis/metadata/package.py +0 -0
  228. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/__init__.py +0 -0
  229. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/__init__.py +0 -0
  230. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  231. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  232. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/coroutines.py +0 -0
  233. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  234. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/asynchrony/exceptions/asynchrony.py +0 -0
  235. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/encrypter/encrypter.py +0 -0
  236. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/__init__.py +0 -0
  237. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/contracts/__init__.py +0 -0
  238. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/contracts/caster.py +0 -0
  239. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/contracts/env.py +0 -0
  240. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/core/__init__.py +0 -0
  241. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/core/dot_env.py +0 -0
  242. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  243. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/dynamic/caster.py +0 -0
  244. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/enums/__init__.py +0 -0
  245. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/enums/value_type.py +0 -0
  246. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/env.py +0 -0
  247. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  248. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/exceptions/environment.py +0 -0
  249. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/helpers/__init__.py +0 -0
  250. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/helpers/functions.py +0 -0
  251. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/key/__init__.py +0 -0
  252. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/key/key_generator.py +0 -0
  253. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/validators/__init__.py +0 -0
  254. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/validators/key_name.py +0 -0
  255. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/environment/validators/types.py +0 -0
  256. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/file/__init__.py +0 -0
  257. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/file/contracts/__init__.py +0 -0
  258. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/file/contracts/directory.py +0 -0
  259. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/file/directory.py +0 -0
  260. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/inspirational/__init__.py +0 -0
  261. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
  262. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  263. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/inspirational/inspire.py +0 -0
  264. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/inspirational/quotes.py +0 -0
  265. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/__init__.py +0 -0
  266. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  267. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  268. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  269. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  270. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/callables/__init__.py +0 -0
  271. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  272. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  273. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/callables/reflection.py +0 -0
  274. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  275. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  276. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  277. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  278. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  279. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  280. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  281. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  282. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  283. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  284. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  285. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  286. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/exceptions/introspection.py +0 -0
  287. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/instances/__init__.py +0 -0
  288. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  289. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  290. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/instances/reflection.py +0 -0
  291. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/modules/__init__.py +0 -0
  292. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  293. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  294. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/modules/reflection.py +0 -0
  295. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/objects/__init__.py +0 -0
  296. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/objects/types.py +0 -0
  297. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/introspection/reflection.py +0 -0
  298. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/__init__.py +0 -0
  299. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/contracts/__init__.py +0 -0
  300. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/contracts/log_service.py +0 -0
  301. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/exceptions/__init__.py +0 -0
  302. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/exceptions/log.py +0 -0
  303. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/handlers/__init__.py +0 -0
  304. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/handlers/filename.py +0 -0
  305. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  306. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  307. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/log/log_service.py +0 -0
  308. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/__init__.py +0 -0
  309. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/contracts/__init__.py +0 -0
  310. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/contracts/imports.py +0 -0
  311. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/contracts/workers.py +0 -0
  312. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/imports.py +0 -0
  313. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/runtime/__init__.py +0 -0
  314. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/runtime/imports.py +0 -0
  315. {orionis-0.617.0 → orionis-0.619.0}/orionis/services/system/workers.py +0 -0
  316. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/__init__.py +0 -0
  317. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/entities/__init__.py +0 -0
  318. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/entities/base.py +0 -0
  319. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/__init__.py +0 -0
  320. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/application.py +0 -0
  321. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/application.pyi +0 -0
  322. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/console.py +0 -0
  323. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/console.pyi +0 -0
  324. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/directory.py +0 -0
  325. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/directory.pyi +0 -0
  326. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/dumper.py +0 -0
  327. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/dumper.pyi +0 -0
  328. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/executor.py +0 -0
  329. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/executor.pyi +0 -0
  330. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/inspire.py +0 -0
  331. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/inspire.pyi +0 -0
  332. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/logger.py +0 -0
  333. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/logger.pyi +0 -0
  334. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/performance_counter.py +0 -0
  335. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/performance_counter.pyi +0 -0
  336. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/progress_bar.py +0 -0
  337. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/progress_bar.pyi +0 -0
  338. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/reactor.py +0 -0
  339. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/reactor.pyi +0 -0
  340. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/testing.py +0 -0
  341. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/testing.pyi +0 -0
  342. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/workers.py +0 -0
  343. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/facades/workers.pyi +0 -0
  344. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/__init__.py +0 -0
  345. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  346. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  347. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  348. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  349. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/formatter/serializer.py +0 -0
  350. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/patterns/__init__.py +0 -0
  351. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  352. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/patterns/singleton/meta.py +0 -0
  353. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/performance/__init__.py +0 -0
  354. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/performance/contracts/__init__.py +0 -0
  355. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/performance/contracts/counter.py +0 -0
  356. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/performance/counter.py +0 -0
  357. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/__init__.py +0 -0
  358. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/contracts/__init__.py +0 -0
  359. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/contracts/std.py +0 -0
  360. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  361. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/exceptions/standard.py +0 -0
  362. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/standard/std.py +0 -0
  363. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/wrapper/__init__.py +0 -0
  364. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/wrapper/dataclass.py +0 -0
  365. {orionis-0.617.0 → orionis-0.619.0}/orionis/support/wrapper/dot_dict.py +0 -0
  366. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/__init__.py +0 -0
  367. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/cases/__init__.py +0 -0
  368. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/cases/asynchronous.py +0 -0
  369. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/cases/synchronous.py +0 -0
  370. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/__init__.py +0 -0
  371. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/dumper.py +0 -0
  372. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/kernel.py +0 -0
  373. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/logs.py +0 -0
  374. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/printer.py +0 -0
  375. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/render.py +0 -0
  376. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/test_result.py +0 -0
  377. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/contracts/unit_test.py +0 -0
  378. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/core/__init__.py +0 -0
  379. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/entities/__init__.py +0 -0
  380. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/entities/result.py +0 -0
  381. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/enums/__init__.py +0 -0
  382. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/enums/status.py +0 -0
  383. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/__init__.py +0 -0
  384. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/config.py +0 -0
  385. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/failure.py +0 -0
  386. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/persistence.py +0 -0
  387. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/runtime.py +0 -0
  388. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/exceptions/value.py +0 -0
  389. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/kernel.py +0 -0
  390. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/output/__init__.py +0 -0
  391. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/output/dumper.py +0 -0
  392. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/output/printer.py +0 -0
  393. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/records/__init__.py +0 -0
  394. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/records/logs.py +0 -0
  395. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/__init__.py +0 -0
  396. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/base_path.py +0 -0
  397. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/execution_mode.py +0 -0
  398. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/fail_fast.py +0 -0
  399. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/folder_path.py +0 -0
  400. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/module_name.py +0 -0
  401. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/name_pattern.py +0 -0
  402. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/pattern.py +0 -0
  403. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/persistent.py +0 -0
  404. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/persistent_driver.py +0 -0
  405. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/throw_exception.py +0 -0
  406. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/verbosity.py +0 -0
  407. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/web_report.py +0 -0
  408. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/validators/workers.py +0 -0
  409. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/view/__init__.py +0 -0
  410. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/view/render.py +0 -0
  411. {orionis-0.617.0 → orionis-0.619.0}/orionis/test/view/report.stub +0 -0
  412. {orionis-0.617.0 → orionis-0.619.0}/orionis.egg-info/SOURCES.txt +0 -0
  413. {orionis-0.617.0 → orionis-0.619.0}/orionis.egg-info/dependency_links.txt +0 -0
  414. {orionis-0.617.0 → orionis-0.619.0}/orionis.egg-info/not-zip-safe +0 -0
  415. {orionis-0.617.0 → orionis-0.619.0}/orionis.egg-info/requires.txt +0 -0
  416. {orionis-0.617.0 → orionis-0.619.0}/orionis.egg-info/top_level.txt +0 -0
  417. {orionis-0.617.0 → orionis-0.619.0}/setup.cfg +0 -0
  418. {orionis-0.617.0 → orionis-0.619.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.617.0
3
+ Version: 0.619.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
@@ -24,34 +24,6 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
24
24
 
25
25
  The class integrates with the framework's console and progress bar systems,
26
26
  allowing commands to provide rich user feedback during execution.
27
-
28
- Attributes
29
- ----------
30
- timestamps : bool, default True
31
- Controls whether timestamps are included in console output messages.
32
- When True, all console output will be prefixed with timestamp information.
33
- signature : str
34
- Defines the command signature string used for command registration and
35
- automatic help text generation. This should follow the framework's
36
- signature format conventions.
37
- description : str
38
- Human-readable description of the command's purpose and functionality.
39
- Used in help documentation and command listing interfaces.
40
- _args : Dict[str, Any], default {}
41
- Dictionary containing parsed command-line arguments and options.
42
- Populated automatically by the command parser before handle() execution.
43
- arguments : List[CLIArgument], default []
44
- List of CLIArgument instances defining the command's accepted arguments
45
- and options. Used for argument parsing and validation.
46
-
47
- Methods
48
- -------
49
- handle()
50
- Abstract method that must be implemented by subclasses to define the
51
- main command execution logic.
52
- argument(key: str)
53
- Safely retrieves argument values from the parsed arguments dictionary
54
- with type validation and error handling.
55
27
  """
56
28
 
57
29
  # Enable timestamps in console output by default
@@ -64,12 +36,43 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
64
36
  description: str
65
37
 
66
38
  # Dictionary to store parsed command-line arguments and options
67
- _args: Dict[str, Any] = {}
39
+ __args: Dict[str, Any] = {}
40
+
41
+ async def options(self) -> List[CLIArgument]:
42
+ """
43
+ Defines the command-line arguments and options accepted by the command.
44
+
45
+ This asynchronous method should be overridden by subclasses to specify the list of
46
+ command-line arguments and options that the command supports. Each argument or option
47
+ should be represented as a CLIArgument object, which encapsulates details such as the
48
+ argument's name, type, default value, and help description.
49
+
50
+ This method enables the framework to automatically parse, validate, and document
51
+ the available arguments for each command, ensuring consistent user experience
52
+ across all commands.
53
+
54
+ Parameters
55
+ ----------
56
+ None
57
+
58
+ Returns
59
+ -------
60
+ List
61
+ A list of CLIArgument objects, where each object describes a single
62
+ command-line argument or option accepted by the command. If the command
63
+ does not accept any arguments or options, an empty list is returned.
68
64
 
69
- # List of CLIArgument instances defining command arguments
70
- arguments: List[CLIArgument] = []
65
+ Notes
66
+ -----
67
+ Subclasses should override this method to declare their specific arguments.
68
+ The returned list is used by the framework for argument parsing and help
69
+ text generation.
70
+ """
71
71
 
72
- def handle(self):
72
+ # Return an empty list by default; subclasses should override to provide arguments
73
+ return []
74
+
75
+ async def handle(self):
73
76
  """
74
77
  Execute the main command logic.
75
78
 
@@ -99,6 +102,70 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
99
102
  # Raise an error to enforce implementation in subclasses
100
103
  raise NotImplementedError("The 'handle' method must be implemented in the subclass.")
101
104
 
105
+ def setArguments(self, args: Dict[str, Any]) -> None:
106
+ """
107
+ Populate the internal arguments dictionary with parsed command-line arguments and options.
108
+
109
+ This method is intended for internal use by the command parsing mechanism to initialize
110
+ the internal arguments state before command execution. It assigns the provided dictionary
111
+ of arguments and options to the internal storage, making them accessible via the
112
+ `argument()` and `arguments()` methods.
113
+
114
+ Parameters
115
+ ----------
116
+ args : Dict[str, Any]
117
+ Dictionary containing parsed command-line arguments and options, where each key
118
+ represents an argument name and each value is the corresponding argument value.
119
+
120
+ Returns
121
+ -------
122
+ None
123
+ This method does not return any value. It updates the internal state of the command
124
+ instance to reflect the provided arguments.
125
+
126
+ Raises
127
+ ------
128
+ ValueError
129
+ If the provided `args` parameter is not a dictionary.
130
+
131
+ Notes
132
+ -----
133
+ This method is automatically invoked by the command framework prior to the execution
134
+ of the `handle()` method. It should not be called directly by command implementations.
135
+ """
136
+
137
+ # Ensure the provided arguments are in dictionary form
138
+ if not isinstance(args, dict):
139
+ raise ValueError(f"Arguments must be a dictionary, got '{type(args).__name__}' instead.")
140
+
141
+ # Store the parsed arguments internally for later retrieval
142
+ self.__args = args
143
+
144
+ def arguments(self) -> Dict[str, Any]:
145
+ """
146
+ Retrieve the entire dictionary of parsed command-line arguments and options.
147
+
148
+ This method provides access to all arguments and options that have been parsed
149
+ and stored internally for the current command execution. It is useful for
150
+ scenarios where bulk access to all argument values is required, such as
151
+ dynamic processing or debugging.
152
+
153
+ Returns
154
+ -------
155
+ Dict[str, Any]
156
+ A dictionary containing all parsed command-line arguments and options,
157
+ where each key is the argument name and each value is the corresponding
158
+ argument value.
159
+
160
+ Notes
161
+ -----
162
+ The returned dictionary reflects the current state of the command's arguments.
163
+ Modifying the returned dictionary will affect the internal state of the command.
164
+ """
165
+
166
+ # Return the internal dictionary containing all parsed arguments and options
167
+ return self.__args
168
+
102
169
  def argument(self, key: str, default: Any = None) -> Any:
103
170
  """
104
171
  Retrieve the value of a specific command-line argument by key with optional default fallback.
@@ -131,7 +198,7 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
131
198
  ValueError
132
199
  If the provided key parameter is not of string type.
133
200
  ValueError
134
- If the internal _args attribute is not of dictionary type, indicating
201
+ If the internal __args attribute is not of dictionary type, indicating
135
202
  a corrupted or improperly initialized command state.
136
203
  """
137
204
 
@@ -140,8 +207,8 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
140
207
  raise ValueError(f"Argument key must be a string, got '{type(key).__name__}' instead.")
141
208
 
142
209
  # Ensure the internal args attribute is a valid dictionary
143
- if not isinstance(self._args, dict):
144
- raise ValueError(f"Arguments must be a dictionary, got '{type(self._args).__name__}' instead.")
210
+ if not isinstance(self.__args, dict):
211
+ raise ValueError(f"Arguments must be a dictionary, got '{type(self.__args).__name__}' instead.")
145
212
 
146
213
  # Safely retrieve the argument value with optional default fallback
147
- return self._args.get(key, default)
214
+ return self.__args.get(key, default)
@@ -0,0 +1,188 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Any, Dict, List
3
+ from orionis.console.args.argument import CLIArgument
4
+
5
+ class IBaseCommand(ABC):
6
+ """
7
+ Abstract base contract for console commands in Orionis framework.
8
+
9
+ This abstract base class defines the standardized interface that all console
10
+ commands must implement within the Orionis framework. It provides a consistent
11
+ contract for command execution, argument handling, metadata storage, and console
12
+ output management.
13
+
14
+ The class establishes the foundation for command-line interface functionality,
15
+ ensuring all commands follow a uniform pattern for registration, execution,
16
+ and user interaction while maintaining flexibility for specific command logic
17
+ implementation.
18
+ """
19
+
20
+ # Enable timestamps in console output by default
21
+ timestamps: bool = True
22
+
23
+ # Command signature string for registration and help text generation
24
+ signature: str
25
+
26
+ # Human-readable description for documentation and help display
27
+ description: str
28
+
29
+ # Dictionary to store parsed command-line arguments and options
30
+ __args: Dict[str, Any] = {}
31
+
32
+ @abstractmethod
33
+ async def options(self) -> List[CLIArgument]:
34
+ """
35
+ Defines the command-line arguments and options accepted by the command.
36
+
37
+ This asynchronous method should be overridden by subclasses to specify the list of
38
+ command-line arguments and options that the command supports. Each argument or option
39
+ should be represented as a CLIArgument object, which encapsulates details such as the
40
+ argument's name, type, default value, and help description.
41
+
42
+ This method enables the framework to automatically parse, validate, and document
43
+ the available arguments for each command, ensuring consistent user experience
44
+ across all commands.
45
+
46
+ Parameters
47
+ ----------
48
+ None
49
+
50
+ Returns
51
+ -------
52
+ List
53
+ A list of CLIArgument objects, where each object describes a single
54
+ command-line argument or option accepted by the command. If the command
55
+ does not accept any arguments or options, an empty list is returned.
56
+
57
+ Notes
58
+ -----
59
+ Subclasses should override this method to declare their specific arguments.
60
+ The returned list is used by the framework for argument parsing and help
61
+ text generation.
62
+ """
63
+ pass
64
+
65
+ @abstractmethod
66
+ async def handle(self):
67
+ """
68
+ Execute the main command logic.
69
+
70
+ This abstract method defines the entry point for command execution and must be
71
+ implemented by all concrete command subclasses. It serves as the primary interface
72
+ for running the command's core functionality after argument parsing and validation.
73
+
74
+ Returns
75
+ -------
76
+ None
77
+ This method does not return any value. All command output should be handled
78
+ through the inherited console methods or other side effects.
79
+
80
+ Raises
81
+ ------
82
+ NotImplementedError
83
+ Always raised when called on the base class, indicating that subclasses
84
+ must provide their own implementation of this method.
85
+
86
+ Notes
87
+ -----
88
+ Subclasses should override this method to implement their specific command
89
+ behavior. The method will be called after all command-line arguments have
90
+ been parsed and stored in the _args dictionary.
91
+ """
92
+ pass
93
+
94
+ @abstractmethod
95
+ def setArguments(self, args: Dict[str, Any]) -> None:
96
+ """
97
+ Populate the internal arguments dictionary with parsed command-line arguments and options.
98
+
99
+ This method is intended for internal use by the command parsing mechanism to initialize
100
+ the internal arguments state before command execution. It assigns the provided dictionary
101
+ of arguments and options to the internal storage, making them accessible via the
102
+ `argument()` and `arguments()` methods.
103
+
104
+ Parameters
105
+ ----------
106
+ args : Dict[str, Any]
107
+ Dictionary containing parsed command-line arguments and options, where each key
108
+ represents an argument name and each value is the corresponding argument value.
109
+
110
+ Returns
111
+ -------
112
+ None
113
+ This method does not return any value. It updates the internal state of the command
114
+ instance to reflect the provided arguments.
115
+
116
+ Raises
117
+ ------
118
+ ValueError
119
+ If the provided `args` parameter is not a dictionary.
120
+
121
+ Notes
122
+ -----
123
+ This method is automatically invoked by the command framework prior to the execution
124
+ of the `handle()` method. It should not be called directly by command implementations.
125
+ """
126
+ pass
127
+
128
+ @abstractmethod
129
+ def arguments(self) -> Dict[str, Any]:
130
+ """
131
+ Retrieve the entire dictionary of parsed command-line arguments and options.
132
+
133
+ This method provides access to all arguments and options that have been parsed
134
+ and stored internally for the current command execution. It is useful for
135
+ scenarios where bulk access to all argument values is required, such as
136
+ dynamic processing or debugging.
137
+
138
+ Returns
139
+ -------
140
+ Dict[str, Any]
141
+ A dictionary containing all parsed command-line arguments and options,
142
+ where each key is the argument name and each value is the corresponding
143
+ argument value.
144
+
145
+ Notes
146
+ -----
147
+ The returned dictionary reflects the current state of the command's arguments.
148
+ Modifying the returned dictionary will affect the internal state of the command.
149
+ """
150
+ pass
151
+
152
+ @abstractmethod
153
+ def argument(self, key: str, default: Any = None) -> Any:
154
+ """
155
+ Retrieve the value of a specific command-line argument by key with optional default fallback.
156
+
157
+ This method provides safe and validated access to command-line arguments stored in the
158
+ internal arguments dictionary. It performs type checking on both the key parameter and
159
+ the internal _args attribute to ensure data integrity before attempting retrieval.
160
+
161
+ The method follows a fail-safe approach by returning a default value when the requested
162
+ argument key is not found, preventing KeyError exceptions during command execution.
163
+
164
+ Parameters
165
+ ----------
166
+ key : str
167
+ The string identifier used to locate the desired argument in the arguments
168
+ dictionary. Must be a non-empty string that corresponds to a valid argument name.
169
+ default : Any, optional
170
+ The fallback value to return if the specified key is not found in the arguments
171
+ dictionary. Defaults to None if not provided.
172
+
173
+ Returns
174
+ -------
175
+ Any
176
+ The value associated with the specified key if it exists in the arguments
177
+ dictionary. If the key is not found, returns the provided default value
178
+ or None if no default was specified.
179
+
180
+ Raises
181
+ ------
182
+ ValueError
183
+ If the provided key parameter is not of string type.
184
+ ValueError
185
+ If the internal __args attribute is not of dictionary type, indicating
186
+ a corrupted or improperly initialized command state.
187
+ """
188
+ pass
@@ -15,6 +15,8 @@ from orionis.console.contracts.executor import IExecutor
15
15
  from orionis.console.exceptions import CLIOrionisTypeError
16
16
  from orionis.console.request.cli_request import CLIRequest
17
17
  from orionis.foundation.contracts.application import IApplication
18
+ from orionis.services.introspection.concretes.reflection import ReflectionConcrete
19
+ from orionis.services.introspection.instances.reflection import ReflectionInstance
18
20
  from orionis.services.introspection.modules.reflection import ReflectionModule
19
21
  from orionis.services.log.contracts.log_service import ILogger
20
22
  from orionis.support.performance.contracts.counter import IPerformanceCounter
@@ -75,18 +77,6 @@ class Reactor(IReactor):
75
77
  # List to hold fluent command definitions
76
78
  self.__fluent_commands: List[ICommand] = []
77
79
 
78
- # Load core commands immediately upon initialization
79
- self.__loadCoreCommands()
80
- self.__load__core_commands: bool = True
81
-
82
- # Load custom user-defined commands from the project's commands directory
83
- self.__loadCustomCommands()
84
- self.__load__custom_commands: bool = True
85
-
86
- # Flag to track if fluent commands have been loaded
87
- self.__loadFluentCommands()
88
- self.__load_fluent_commands: bool = True
89
-
90
80
  def __loadCommands(self) -> None:
91
81
  """
92
82
  Loads all available commands into the reactor's internal registry.
@@ -123,17 +113,17 @@ class Reactor(IReactor):
123
113
  """
124
114
 
125
115
  # Load core commands if they have not been loaded yet
126
- if not self.__load__core_commands:
116
+ if not hasattr(self, '_Reactor__load__core_commands') or not self.__load__core_commands:
127
117
  self.__loadCoreCommands()
128
118
  self.__load__core_commands = True
129
119
 
130
120
  # Load custom user-defined commands if they have not been loaded yet
131
- if not self.__load__custom_commands:
121
+ if not hasattr(self, '_Reactor__load__custom_commands') or not self.__load__custom_commands:
132
122
  self.__loadCustomCommands()
133
123
  self.__load__custom_commands = True
134
124
 
135
125
  # Load fluent interface commands if they have not been loaded yet
136
- if not self.__load_fluent_commands:
126
+ if not hasattr(self, '_Reactor__load_fluent_commands') or not self.__load_fluent_commands:
137
127
  self.__loadFluentCommands()
138
128
  self.__load_fluent_commands = True
139
129
 
@@ -317,7 +307,7 @@ class Reactor(IReactor):
317
307
  for obj in core_commands:
318
308
 
319
309
  # Get the signature attribute from the command class
320
- signature = getattr(obj, 'signature', None)
310
+ signature = ReflectionConcrete(obj).getAttribute('signature')
321
311
 
322
312
  # Skip if signature is not defined
323
313
  if signature is None:
@@ -501,7 +491,9 @@ class Reactor(IReactor):
501
491
 
502
492
  # Validate the signature against the required pattern
503
493
  if not re.match(pattern, obj.signature):
504
- raise CLIOrionisValueError(f"Command class {obj.__name__} 'signature' must contain only alphanumeric characters, underscores (_) and colons (:), cannot start or end with underscore or colon, and cannot start with a number.")
494
+ raise CLIOrionisValueError(
495
+ f"Command class {obj.__name__} 'signature' must contain only alphanumeric characters, underscores (_) and colons (:), cannot start or end with underscore or colon, and cannot start with a number."
496
+ )
505
497
 
506
498
  # Return signature
507
499
  return obj.signature.strip()
@@ -553,8 +545,8 @@ class Reactor(IReactor):
553
545
  """
554
546
  Validates and processes command arguments for a command class.
555
547
 
556
- This method ensures that the command class has properly formatted arguments
557
- and creates an ArgumentParser instance configured with those arguments.
548
+ Ensures the command class provides a valid list of CLIArgument instances via its 'options' method,
549
+ and constructs an ArgumentParser accordingly.
558
550
 
559
551
  Parameters
560
552
  ----------
@@ -570,43 +562,53 @@ class Reactor(IReactor):
570
562
  Raises
571
563
  ------
572
564
  CLIOrionisTypeError
573
- If the 'arguments' attribute is not a list or contains non-CLIArgument instances.
565
+ If the 'options' method does not return a list or contains non-CLIArgument instances.
574
566
  """
575
567
 
576
- # Check if the command class has an arguments attribute
577
- if not hasattr(obj, 'arguments'):
578
- return None
568
+ # Instantiate the command and retrieve its options
569
+ instance = self.__app.make(obj)
570
+ options: List[CLIArgument] = self.__app.call(instance, 'options')
579
571
 
580
- # Ensure the arguments attribute is a list type
581
- if not isinstance(obj.arguments, list):
582
- raise CLIOrionisTypeError(f"Command class {obj.__name__} 'arguments' must be a list.")
572
+ # Validate that options is a list
573
+ if not isinstance(options, list):
574
+ raise CLIOrionisTypeError(
575
+ f"Command class {obj.__name__} 'options' must return a list."
576
+ )
583
577
 
584
- # If arguments is empty, return None
585
- if len(obj.arguments) == 0:
578
+ # Return None if there are no arguments
579
+ if not options:
586
580
  return None
587
581
 
588
- # Validate that all items in the arguments list are CLIArgument instances
589
- for index, value in enumerate(obj.arguments):
590
- if not isinstance(value, CLIArgument):
591
- raise CLIOrionisTypeError(f"Command class {obj.__name__} 'arguments' must contain only CLIArgument instances, found '{type(value).__name__}' at index {index}.")
582
+ # Validate all items are CLIArgument instances
583
+ for idx, arg in enumerate(options):
584
+ if not isinstance(arg, CLIArgument):
585
+ raise CLIOrionisTypeError(
586
+ f"Command class {obj.__name__} 'options' must contain only CLIArgument instances, "
587
+ f"found '{type(arg).__name__}' at index {idx}."
588
+ )
589
+
592
590
 
593
- # Build the arguments dictionary from the CLIArgument instances
594
- required_args: List[CLIArgument] = obj.arguments
591
+ # Get the Signature attribute from the command class
592
+ rf_concrete = ReflectionConcrete(obj)
593
+ signature = rf_concrete.getAttribute('signature', '<unknown>')
594
+ description = rf_concrete.getAttribute('description', '')
595
595
 
596
- # Create an ArgumentParser instance to handle the command arguments
596
+ # Build the ArgumentParser
597
597
  arg_parser = argparse.ArgumentParser(
598
- usage=f"python -B reactor {obj.signature} [options]",
599
- description=f"Command [{obj.signature}] : {obj.description}",
598
+ usage=f"python -B reactor {signature} [options]",
599
+ description=f"Command [{signature}] : {description}",
600
600
  formatter_class=argparse.RawTextHelpFormatter,
601
601
  add_help=True,
602
602
  allow_abbrev=False,
603
603
  exit_on_error=True,
604
- prog=obj.signature
604
+ prog=signature
605
605
  )
606
- for arg in required_args:
606
+
607
+ # Add each CLIArgument to the ArgumentParser
608
+ for arg in options:
607
609
  arg.addToParser(arg_parser)
608
610
 
609
- # Return the configured ArgumentParser
611
+ # Return the constructed ArgumentParser
610
612
  return arg_parser
611
613
 
612
614
  def __parseArgs(
@@ -646,13 +648,17 @@ class Reactor(IReactor):
646
648
 
647
649
  # If the command expects arguments, parse them using its ArgumentParser
648
650
  if command.args is not None and isinstance(command.args, argparse.ArgumentParser):
651
+
652
+ # If no args provided, use an empty list
649
653
  if args is None:
650
654
  args = []
655
+
656
+ # Parse the provided arguments using the command's ArgumentParser
651
657
  try:
652
- # Parse the provided arguments using the command's ArgumentParser
653
658
  parsed_args = command.args.parse_args(args)
659
+
660
+ # Raise a CLIOrionisRuntimeError with the help message included in the exception
654
661
  except SystemExit:
655
- # Raise a CLIOrionisRuntimeError with the help message included in the exception
656
662
  raise CLIOrionisRuntimeError(
657
663
  f"Failed to parse arguments for command '{command.signature}'.\n"
658
664
  f"{command.args.format_help()}\n"
@@ -662,10 +668,13 @@ class Reactor(IReactor):
662
668
  # Convert the parsed arguments to a dictionary and return
663
669
  if isinstance(parsed_args, argparse.Namespace):
664
670
  return vars(parsed_args)
671
+
672
+ # If parsed_args is already a dictionary, return it directly
665
673
  elif isinstance(parsed_args, dict):
666
674
  return parsed_args
675
+
676
+ # Return an empty dictionary if no arguments were parsed
667
677
  else:
668
- # Return an empty dictionary if no arguments were parsed
669
678
  return {}
670
679
 
671
680
  def command(
@@ -837,13 +846,16 @@ class Reactor(IReactor):
837
846
  command_instance: IBaseCommand = self.__app.make(command.obj)
838
847
 
839
848
  # Inject parsed arguments into the command instance
840
- _args = self.__parseArgs(command, args)
841
- command_instance._args = _args.copy()
849
+ dict_args = self.__parseArgs(command, args)
850
+
851
+ # Only set arguments if the command instance has a setArguments method
852
+ if ReflectionInstance(command_instance).hasMethod('setArguments'):
853
+ command_instance.setArguments(dict_args.copy())
842
854
 
843
855
  # Inject a scoped CLIRequest instance into the application container for the command's context
844
856
  self.__app.scopedInstance(ICLIRequest, CLIRequest(
845
857
  command=signature,
846
- args=_args.copy()
858
+ args=dict_args.copy()
847
859
  ))
848
860
 
849
861
  # Execute the command's handle method and capture its output
@@ -940,13 +952,16 @@ class Reactor(IReactor):
940
952
  command_instance: IBaseCommand = self.__app.make(command.obj)
941
953
 
942
954
  # Inject parsed arguments into the command instance
943
- _args = self.__parseArgs(command, args)
944
- command_instance._args = _args.copy()
955
+ dict_args = self.__parseArgs(command, args)
956
+
957
+ # Only set arguments if the command instance has a setArguments method
958
+ if ReflectionInstance(command_instance).hasMethod('setArguments'):
959
+ command_instance.setArguments(dict_args.copy())
945
960
 
946
961
  # Inject a scoped CLIRequest instance into the application container for the command's context
947
962
  self.__app.scopedInstance(ICLIRequest, CLIRequest(
948
963
  command=signature,
949
- args=_args.copy()
964
+ args=dict_args.copy()
950
965
  ))
951
966
 
952
967
  # Execute the command's handle method asynchronously and capture its output
@@ -2118,6 +2118,7 @@ class Application(Container, IApplication):
2118
2118
  duplicate initialization. The startup time is calculated and logged
2119
2119
  for performance monitoring purposes.
2120
2120
  """
2121
+
2121
2122
  # Check if already booted
2122
2123
  if not self.__booted:
2123
2124
 
@@ -2125,7 +2126,7 @@ class Application(Container, IApplication):
2125
2126
  self.instance(
2126
2127
  IApplication,
2127
2128
  self,
2128
- alias=f"x-{IApplication.__module__}.{IApplication.__name__}",
2129
+ alias=f"x-orionis.foundation.contracts.application.IApplication",
2129
2130
  enforce_decoupling=None
2130
2131
  )
2131
2132
 
@@ -2149,11 +2150,8 @@ class Application(Container, IApplication):
2149
2150
  # Calculate elapsed time in milliseconds since application start
2150
2151
  elapsed_ms = (time.time_ns() - self.startAt) // 1_000_000
2151
2152
 
2152
- # Compose the boot message
2153
- boot_message = f"Orionis Framework has been successfully booted. Startup time: {elapsed_ms} ms. Started at: {self.startAt} ns"
2154
-
2155
2153
  # Log message to the logger
2156
- logger.info(boot_message)
2154
+ logger.info(f"Orionis Framework has been successfully booted. Startup time: {elapsed_ms} ms. Started at: {self.startAt} ns")
2157
2155
 
2158
2156
  # Return the application instance for method chaining
2159
2157
  return self
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.617.0"
8
+ VERSION = "0.619.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,4 +1,3 @@
1
- import inspect
2
1
  import io
3
2
  import json
4
3
  import logging
@@ -118,18 +117,6 @@ class UnitTest(IUnitTest):
118
117
  # Use live console output during test execution
119
118
  self.__live_console: bool = True
120
119
 
121
- # Load and set internal paths for test discovery and result storage
122
- self.__loadPaths()
123
-
124
- # Load and validate the testing configuration from the application
125
- self.__loadConfig()
126
-
127
- # Discover and import test modules based on the configuration
128
- self.__loadModules()
129
-
130
- # Discover and load all test cases from the imported modules into the suite
131
- self.__loadTests()
132
-
133
120
  def __loadPaths(
134
121
  self
135
122
  ) -> None:
@@ -737,6 +724,18 @@ class UnitTest(IUnitTest):
737
724
  # Record the start time in seconds
738
725
  performance_counter.start()
739
726
 
727
+ # Load and set internal paths for test discovery and result storage
728
+ self.__loadPaths()
729
+
730
+ # Load and validate the testing configuration from the application
731
+ self.__loadConfig()
732
+
733
+ # Discover and import test modules based on the configuration
734
+ self.__loadModules()
735
+
736
+ # Discover and load all test cases from the imported modules into the suite
737
+ self.__loadTests()
738
+
740
739
  # Length of all tests in the suite
741
740
  total_tests = self.getTestCount()
742
741