orionis 0.475.0__tar.gz → 0.476.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 (525) hide show
  1. {orionis-0.475.0/orionis.egg-info → orionis-0.476.0}/PKG-INFO +1 -1
  2. orionis-0.476.0/orionis/console/contracts/reactor.py +110 -0
  3. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/core/reactor.py +213 -77
  4. orionis-0.476.0/orionis/console/enums/command.py +43 -0
  5. orionis-0.476.0/orionis/console/enums/task.py +42 -0
  6. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/tasks/schedule.py +77 -8
  7. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/contracts/container.py +30 -1
  8. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/application.py +3 -1
  9. orionis-0.476.0/orionis/foundation/providers/performance_counter_provider.py +64 -0
  10. {orionis-0.475.0 → orionis-0.476.0}/orionis/metadata/framework.py +1 -1
  11. orionis-0.476.0/orionis/support/performance/contracts/counter.py +40 -0
  12. orionis-0.476.0/orionis/support/performance/counter.py +87 -0
  13. {orionis-0.475.0 → orionis-0.476.0/orionis.egg-info}/PKG-INFO +1 -1
  14. {orionis-0.475.0 → orionis-0.476.0}/orionis.egg-info/SOURCES.txt +8 -0
  15. orionis-0.476.0/tests/testing/records/__init__.py +0 -0
  16. orionis-0.476.0/tests/testing/validators/__init__.py +0 -0
  17. orionis-0.476.0/tests/testing/view/__init__.py +0 -0
  18. orionis-0.475.0/orionis/console/contracts/reactor.py +0 -57
  19. {orionis-0.475.0 → orionis-0.476.0}/LICENCE +0 -0
  20. {orionis-0.475.0 → orionis-0.476.0}/MANIFEST.in +0 -0
  21. {orionis-0.475.0 → orionis-0.476.0}/README.md +0 -0
  22. {orionis-0.475.0 → orionis-0.476.0}/orionis/__init__.py +0 -0
  23. {orionis-0.475.0 → orionis-0.476.0}/orionis/app.py +0 -0
  24. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/__init__.py +0 -0
  25. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/args/__init__.py +0 -0
  26. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/args/argument.py +0 -0
  27. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/args/enums/__init__.py +0 -0
  28. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/args/enums/actions.py +0 -0
  29. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/base/__init__.py +0 -0
  30. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/base/command.py +0 -0
  31. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/base/contracts/__init__.py +0 -0
  32. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/base/contracts/command.py +0 -0
  33. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/__init__.py +0 -0
  34. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/cache.py +0 -0
  35. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/help.py +0 -0
  36. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/publisher.py +0 -0
  37. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/test.py +0 -0
  38. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/version.py +0 -0
  39. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/commands/workflow.py +0 -0
  40. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/contracts/__init__.py +0 -0
  41. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/contracts/kernel.py +0 -0
  42. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/contracts/schedule.py +0 -0
  43. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/core/__init__.py +0 -0
  44. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dumper/__init__.py +0 -0
  45. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  46. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dumper/contracts/dump.py +0 -0
  47. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dumper/dump.py +0 -0
  48. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dynamic/__init__.py +0 -0
  49. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  50. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  51. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/dynamic/progress_bar.py +0 -0
  52. {orionis-0.475.0/orionis/console/output → orionis-0.476.0/orionis/console/enums}/__init__.py +0 -0
  53. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/exceptions/__init__.py +0 -0
  54. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/exceptions/cli_exception.py +0 -0
  55. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  56. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  57. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  58. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/kernel.py +0 -0
  59. {orionis-0.475.0/orionis/console/output/contracts → orionis-0.476.0/orionis/console/output}/__init__.py +0 -0
  60. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/console.py +0 -0
  61. {orionis-0.475.0/orionis/console/tasks → orionis-0.476.0/orionis/console/output/contracts}/__init__.py +0 -0
  62. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/contracts/console.py +0 -0
  63. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/contracts/executor.py +0 -0
  64. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/enums/__init__.py +0 -0
  65. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/enums/styles.py +0 -0
  66. {orionis-0.475.0 → orionis-0.476.0}/orionis/console/output/executor.py +0 -0
  67. {orionis-0.475.0/orionis/container → orionis-0.476.0/orionis/console/tasks}/__init__.py +0 -0
  68. {orionis-0.475.0/orionis/container/context → orionis-0.476.0/orionis/container}/__init__.py +0 -0
  69. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/container.py +0 -0
  70. {orionis-0.475.0/orionis/container/contracts → orionis-0.476.0/orionis/container/context}/__init__.py +0 -0
  71. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/context/manager.py +0 -0
  72. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/context/scope.py +0 -0
  73. {orionis-0.475.0/orionis/container/entities → orionis-0.476.0/orionis/container/contracts}/__init__.py +0 -0
  74. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/contracts/service_provider.py +0 -0
  75. {orionis-0.475.0/orionis/container/facades → orionis-0.476.0/orionis/container/entities}/__init__.py +0 -0
  76. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/entities/binding.py +0 -0
  77. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/enums/__init__.py +0 -0
  78. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/enums/lifetimes.py +0 -0
  79. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/exceptions/__init__.py +0 -0
  80. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/exceptions/attribute.py +0 -0
  81. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/exceptions/exception.py +0 -0
  82. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/exceptions/type.py +0 -0
  83. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/exceptions/value.py +0 -0
  84. {orionis-0.475.0/orionis/container/providers → orionis-0.476.0/orionis/container/facades}/__init__.py +0 -0
  85. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/facades/facade.py +0 -0
  86. {orionis-0.475.0/orionis/foundation → orionis-0.476.0/orionis/container/providers}/__init__.py +0 -0
  87. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/providers/service_provider.py +0 -0
  88. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/__init__.py +0 -0
  89. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/implements.py +0 -0
  90. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_abstract_class.py +0 -0
  91. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_callable.py +0 -0
  92. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_concrete_class.py +0 -0
  93. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_instance.py +0 -0
  94. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_not_subclass.py +0 -0
  95. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_subclass.py +0 -0
  96. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/is_valid_alias.py +0 -0
  97. {orionis-0.475.0 → orionis-0.476.0}/orionis/container/validators/lifetime.py +0 -0
  98. {orionis-0.475.0/orionis/foundation/config → orionis-0.476.0/orionis/foundation}/__init__.py +0 -0
  99. {orionis-0.475.0/orionis/foundation/config/app → orionis-0.476.0/orionis/foundation/config}/__init__.py +0 -0
  100. {orionis-0.475.0/orionis/foundation/config/app/entities → orionis-0.476.0/orionis/foundation/config/app}/__init__.py +0 -0
  101. {orionis-0.475.0/orionis/foundation/config/auth → orionis-0.476.0/orionis/foundation/config/app/entities}/__init__.py +0 -0
  102. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/app/entities/app.py +0 -0
  103. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  104. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  105. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  106. {orionis-0.475.0/orionis/foundation/config/auth/entities → orionis-0.476.0/orionis/foundation/config/auth}/__init__.py +0 -0
  107. {orionis-0.475.0/orionis/foundation/config/cache → orionis-0.476.0/orionis/foundation/config/auth/entities}/__init__.py +0 -0
  108. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  109. {orionis-0.475.0/orionis/foundation/config/cache/entities → orionis-0.476.0/orionis/foundation/config/cache}/__init__.py +0 -0
  110. {orionis-0.475.0/orionis/foundation/config/cors → orionis-0.476.0/orionis/foundation/config/cache/entities}/__init__.py +0 -0
  111. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  112. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  113. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  114. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  115. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  116. {orionis-0.475.0/orionis/foundation/config/cors/entities → orionis-0.476.0/orionis/foundation/config/cors}/__init__.py +0 -0
  117. {orionis-0.475.0/orionis/foundation/config/database → orionis-0.476.0/orionis/foundation/config/cors/entities}/__init__.py +0 -0
  118. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  119. {orionis-0.475.0/orionis/foundation/config/database/entities → orionis-0.476.0/orionis/foundation/config/database}/__init__.py +0 -0
  120. {orionis-0.475.0/orionis/foundation/config/filesystems → orionis-0.476.0/orionis/foundation/config/database/entities}/__init__.py +0 -0
  121. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  122. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/database.py +0 -0
  123. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  124. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  125. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  126. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  127. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  128. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  129. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  130. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  131. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  132. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  133. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  134. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  135. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  136. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  137. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  138. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  139. {orionis-0.475.0/orionis/foundation/config/filesystems/entitites → orionis-0.476.0/orionis/foundation/config/filesystems}/__init__.py +0 -0
  140. {orionis-0.475.0/orionis/foundation/config/logging → orionis-0.476.0/orionis/foundation/config/filesystems/entitites}/__init__.py +0 -0
  141. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  142. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  143. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  144. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  145. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  146. {orionis-0.475.0/orionis/foundation/config/logging/entities → orionis-0.476.0/orionis/foundation/config/logging}/__init__.py +0 -0
  147. {orionis-0.475.0/orionis/foundation/config/mail → orionis-0.476.0/orionis/foundation/config/logging/entities}/__init__.py +0 -0
  148. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  149. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  150. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  151. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  152. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  153. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  154. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  155. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  156. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  157. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  158. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  159. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  160. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  161. {orionis-0.475.0/orionis/foundation/config/mail/entities → orionis-0.476.0/orionis/foundation/config/mail}/__init__.py +0 -0
  162. {orionis-0.475.0/orionis/foundation/config/queue → orionis-0.476.0/orionis/foundation/config/mail/entities}/__init__.py +0 -0
  163. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  164. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  165. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  166. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  167. {orionis-0.475.0/orionis/foundation/config/queue/entities → orionis-0.476.0/orionis/foundation/config/queue}/__init__.py +0 -0
  168. {orionis-0.475.0/orionis/foundation/config/roots → orionis-0.476.0/orionis/foundation/config/queue/entities}/__init__.py +0 -0
  169. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  170. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  171. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  172. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  173. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  174. {orionis-0.475.0/orionis/foundation/config/session → orionis-0.476.0/orionis/foundation/config/roots}/__init__.py +0 -0
  175. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/roots/paths.py +0 -0
  176. {orionis-0.475.0/orionis/foundation/config/session/entities → orionis-0.476.0/orionis/foundation/config/session}/__init__.py +0 -0
  177. {orionis-0.475.0/orionis/foundation/config/session/helpers → orionis-0.476.0/orionis/foundation/config/session/entities}/__init__.py +0 -0
  178. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/session/entities/session.py +0 -0
  179. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  180. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  181. {orionis-0.475.0/orionis/foundation/config/testing → orionis-0.476.0/orionis/foundation/config/session/helpers}/__init__.py +0 -0
  182. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  183. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/startup.py +0 -0
  184. {orionis-0.475.0/orionis/foundation/config/testing/entities → orionis-0.476.0/orionis/foundation/config/testing}/__init__.py +0 -0
  185. {orionis-0.475.0/orionis/foundation/contracts → orionis-0.476.0/orionis/foundation/config/testing/entities}/__init__.py +0 -0
  186. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  187. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  188. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  189. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  190. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  191. {orionis-0.475.0/orionis/foundation/providers → orionis-0.476.0/orionis/foundation/contracts}/__init__.py +0 -0
  192. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/contracts/application.py +0 -0
  193. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/contracts/config.py +0 -0
  194. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/exceptions/__init__.py +0 -0
  195. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/exceptions/integrity.py +0 -0
  196. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/exceptions/runtime.py +0 -0
  197. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/exceptions/type.py +0 -0
  198. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/exceptions/value.py +0 -0
  199. {orionis-0.475.0/orionis/metadata → orionis-0.476.0/orionis/foundation/providers}/__init__.py +0 -0
  200. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/console_provider.py +0 -0
  201. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  202. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/executor_provider.py +0 -0
  203. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  204. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/logger_provider.py +0 -0
  205. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  206. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/reactor_provider.py +0 -0
  207. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/testing_provider.py +0 -0
  208. {orionis-0.475.0 → orionis-0.476.0}/orionis/foundation/providers/workers_provider.py +0 -0
  209. {orionis-0.475.0/orionis/services → orionis-0.476.0/orionis/metadata}/__init__.py +0 -0
  210. {orionis-0.475.0 → orionis-0.476.0}/orionis/metadata/package.py +0 -0
  211. {orionis-0.475.0/orionis/services/asynchrony → orionis-0.476.0/orionis/services}/__init__.py +0 -0
  212. {orionis-0.475.0/orionis/services/asynchrony/contracts → orionis-0.476.0/orionis/services/asynchrony}/__init__.py +0 -0
  213. {orionis-0.475.0/orionis/services/environment → orionis-0.476.0/orionis/services/asynchrony/contracts}/__init__.py +0 -0
  214. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  215. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/asynchrony/coroutines.py +0 -0
  216. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  217. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  218. {orionis-0.475.0/orionis/services/environment/contracts → orionis-0.476.0/orionis/services/environment}/__init__.py +0 -0
  219. {orionis-0.475.0/orionis/services/environment/core → orionis-0.476.0/orionis/services/environment/contracts}/__init__.py +0 -0
  220. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/contracts/caster.py +0 -0
  221. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/contracts/env.py +0 -0
  222. {orionis-0.475.0/orionis/services/environment/dynamic → orionis-0.476.0/orionis/services/environment/core}/__init__.py +0 -0
  223. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/core/dot_env.py +0 -0
  224. {orionis-0.475.0/orionis/services/environment/helpers → orionis-0.476.0/orionis/services/environment/dynamic}/__init__.py +0 -0
  225. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/dynamic/caster.py +0 -0
  226. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/enums/__init__.py +0 -0
  227. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/enums/value_type.py +0 -0
  228. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/env.py +0 -0
  229. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  230. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/exceptions/exception.py +0 -0
  231. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/exceptions/value.py +0 -0
  232. {orionis-0.475.0/orionis/services/environment/key → orionis-0.476.0/orionis/services/environment/helpers}/__init__.py +0 -0
  233. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/helpers/functions.py +0 -0
  234. {orionis-0.475.0/orionis/services/inspirational → orionis-0.476.0/orionis/services/environment/key}/__init__.py +0 -0
  235. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/key/key_generator.py +0 -0
  236. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/validators/__init__.py +0 -0
  237. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/validators/key_name.py +0 -0
  238. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/environment/validators/types.py +0 -0
  239. {orionis-0.475.0/orionis/services/inspirational/contracts → orionis-0.476.0/orionis/services/inspirational}/__init__.py +0 -0
  240. {orionis-0.475.0/orionis/services/introspection → orionis-0.476.0/orionis/services/inspirational/contracts}/__init__.py +0 -0
  241. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  242. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/inspirational/inspire.py +0 -0
  243. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/inspirational/quotes.py +0 -0
  244. {orionis-0.475.0/orionis/services/introspection/abstract → orionis-0.476.0/orionis/services/introspection}/__init__.py +0 -0
  245. {orionis-0.475.0/orionis/services/introspection/abstract/contracts → orionis-0.476.0/orionis/services/introspection/abstract}/__init__.py +0 -0
  246. {orionis-0.475.0/orionis/services/introspection/callables → orionis-0.476.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
  247. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  248. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  249. {orionis-0.475.0/orionis/services/introspection/callables/contracts → orionis-0.476.0/orionis/services/introspection/callables}/__init__.py +0 -0
  250. {orionis-0.475.0/orionis/services/introspection/concretes → orionis-0.476.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
  251. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  252. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/callables/reflection.py +0 -0
  253. {orionis-0.475.0/orionis/services/introspection/concretes/contracts → orionis-0.476.0/orionis/services/introspection/concretes}/__init__.py +0 -0
  254. {orionis-0.475.0/orionis/services/introspection/dependencies → orionis-0.476.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
  255. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  256. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  257. {orionis-0.475.0/orionis/services/introspection/dependencies/contracts → orionis-0.476.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
  258. {orionis-0.475.0/orionis/services/introspection/dependencies/entities → orionis-0.476.0/orionis/services/introspection/dependencies/contracts}/__init__.py +0 -0
  259. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  260. {orionis-0.475.0/orionis/services/introspection/instances → orionis-0.476.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
  261. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  262. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  263. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  264. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  265. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  266. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/type.py +0 -0
  267. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/value.py +0 -0
  268. {orionis-0.475.0/orionis/services/introspection/instances/contracts → orionis-0.476.0/orionis/services/introspection/instances}/__init__.py +0 -0
  269. {orionis-0.475.0/orionis/services/introspection/modules → orionis-0.476.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
  270. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  271. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/instances/reflection.py +0 -0
  272. {orionis-0.475.0/orionis/services/introspection/modules/contracts → orionis-0.476.0/orionis/services/introspection/modules}/__init__.py +0 -0
  273. {orionis-0.475.0/orionis/services/introspection/objects → orionis-0.476.0/orionis/services/introspection/modules/contracts}/__init__.py +0 -0
  274. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  275. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/modules/reflection.py +0 -0
  276. {orionis-0.475.0/orionis/services/log → orionis-0.476.0/orionis/services/introspection/objects}/__init__.py +0 -0
  277. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/objects/types.py +0 -0
  278. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/introspection/reflection.py +0 -0
  279. {orionis-0.475.0/orionis/services/log/contracts → orionis-0.476.0/orionis/services/log}/__init__.py +0 -0
  280. {orionis-0.475.0/orionis/services/log/handlers → orionis-0.476.0/orionis/services/log/contracts}/__init__.py +0 -0
  281. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/contracts/log_service.py +0 -0
  282. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/exceptions/__init__.py +0 -0
  283. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/exceptions/runtime.py +0 -0
  284. {orionis-0.475.0/orionis/services/system → orionis-0.476.0/orionis/services/log/handlers}/__init__.py +0 -0
  285. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/handlers/filename.py +0 -0
  286. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  287. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  288. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/log/log_service.py +0 -0
  289. {orionis-0.475.0/orionis/services/system/contracts → orionis-0.476.0/orionis/services/system}/__init__.py +0 -0
  290. {orionis-0.475.0/orionis/services/system/runtime → orionis-0.476.0/orionis/services/system/contracts}/__init__.py +0 -0
  291. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/system/contracts/imports.py +0 -0
  292. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/system/contracts/workers.py +0 -0
  293. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/system/imports.py +0 -0
  294. {orionis-0.475.0/orionis/support → orionis-0.476.0/orionis/services/system/runtime}/__init__.py +0 -0
  295. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/system/runtime/imports.py +0 -0
  296. {orionis-0.475.0 → orionis-0.476.0}/orionis/services/system/workers.py +0 -0
  297. {orionis-0.475.0/orionis/support/entities → orionis-0.476.0/orionis/support}/__init__.py +0 -0
  298. {orionis-0.475.0/orionis/support/facades → orionis-0.476.0/orionis/support/entities}/__init__.py +0 -0
  299. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/entities/base.py +0 -0
  300. {orionis-0.475.0/orionis/support/formatter → orionis-0.476.0/orionis/support/facades}/__init__.py +0 -0
  301. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/console.py +0 -0
  302. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/dumper.py +0 -0
  303. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/executor.py +0 -0
  304. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/inspire.py +0 -0
  305. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/logger.py +0 -0
  306. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/progress_bar.py +0 -0
  307. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/reactor.py +0 -0
  308. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/testing.py +0 -0
  309. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/facades/workers.py +0 -0
  310. {orionis-0.475.0/orionis/support/formatter/exceptions → orionis-0.476.0/orionis/support/formatter}/__init__.py +0 -0
  311. {orionis-0.475.0/orionis/support/formatter/exceptions/contracts → orionis-0.476.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
  312. {orionis-0.475.0/orionis/support/patterns → orionis-0.476.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
  313. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  314. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  315. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/formatter/serializer.py +0 -0
  316. {orionis-0.475.0/orionis/support/standard → orionis-0.476.0/orionis/support/patterns}/__init__.py +0 -0
  317. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  318. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/patterns/singleton/meta.py +0 -0
  319. {orionis-0.475.0/orionis/support/standard/contracts → orionis-0.476.0/orionis/support/performance}/__init__.py +0 -0
  320. {orionis-0.475.0/orionis/test → orionis-0.476.0/orionis/support/performance/contracts}/__init__.py +0 -0
  321. {orionis-0.475.0/orionis/test/cases → orionis-0.476.0/orionis/support/standard}/__init__.py +0 -0
  322. {orionis-0.475.0/orionis/test → orionis-0.476.0/orionis/support/standard}/contracts/__init__.py +0 -0
  323. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/standard/contracts/std.py +0 -0
  324. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  325. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/standard/exceptions/value.py +0 -0
  326. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/standard/std.py +0 -0
  327. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/wrapper/__init__.py +0 -0
  328. {orionis-0.475.0 → orionis-0.476.0}/orionis/support/wrapper/dot_dict.py +0 -0
  329. {orionis-0.475.0/orionis/test/core → orionis-0.476.0/orionis/test}/__init__.py +0 -0
  330. {orionis-0.475.0/orionis/test/entities → orionis-0.476.0/orionis/test/cases}/__init__.py +0 -0
  331. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/cases/asynchronous.py +0 -0
  332. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/cases/synchronous.py +0 -0
  333. {orionis-0.475.0/orionis/test/output → orionis-0.476.0/orionis/test/contracts}/__init__.py +0 -0
  334. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/dumper.py +0 -0
  335. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/kernel.py +0 -0
  336. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/logs.py +0 -0
  337. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/printer.py +0 -0
  338. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/render.py +0 -0
  339. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/test_result.py +0 -0
  340. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/contracts/unit_test.py +0 -0
  341. {orionis-0.475.0/orionis/test/records → orionis-0.476.0/orionis/test/core}/__init__.py +0 -0
  342. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/core/unit_test.py +0 -0
  343. {orionis-0.475.0/orionis/test/view → orionis-0.476.0/orionis/test/entities}/__init__.py +0 -0
  344. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/entities/result.py +0 -0
  345. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/enums/__init__.py +0 -0
  346. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/enums/status.py +0 -0
  347. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/__init__.py +0 -0
  348. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/config.py +0 -0
  349. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/failure.py +0 -0
  350. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/persistence.py +0 -0
  351. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/runtime.py +0 -0
  352. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/exceptions/value.py +0 -0
  353. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/kernel.py +0 -0
  354. {orionis-0.475.0/tests → orionis-0.476.0/orionis/test/output}/__init__.py +0 -0
  355. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/output/dumper.py +0 -0
  356. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/output/printer.py +0 -0
  357. {orionis-0.475.0/tests/container → orionis-0.476.0/orionis/test/records}/__init__.py +0 -0
  358. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/records/logs.py +0 -0
  359. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/__init__.py +0 -0
  360. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/base_path.py +0 -0
  361. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/execution_mode.py +0 -0
  362. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/fail_fast.py +0 -0
  363. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/folder_path.py +0 -0
  364. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/module_name.py +0 -0
  365. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/name_pattern.py +0 -0
  366. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/pattern.py +0 -0
  367. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/persistent.py +0 -0
  368. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/persistent_driver.py +0 -0
  369. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/print_result.py +0 -0
  370. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/tags.py +0 -0
  371. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/throw_exception.py +0 -0
  372. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/verbosity.py +0 -0
  373. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/web_report.py +0 -0
  374. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/validators/workers.py +0 -0
  375. {orionis-0.475.0/tests/container/context → orionis-0.476.0/orionis/test/view}/__init__.py +0 -0
  376. {orionis-0.475.0 → orionis-0.476.0}/orionis/test/view/render.py +0 -0
  377. {orionis-0.475.0 → orionis-0.476.0}/orionis.egg-info/dependency_links.txt +0 -0
  378. {orionis-0.475.0 → orionis-0.476.0}/orionis.egg-info/requires.txt +0 -0
  379. {orionis-0.475.0 → orionis-0.476.0}/orionis.egg-info/top_level.txt +0 -0
  380. {orionis-0.475.0 → orionis-0.476.0}/orionis.egg-info/zip-safe +0 -0
  381. {orionis-0.475.0 → orionis-0.476.0}/setup.cfg +0 -0
  382. {orionis-0.475.0 → orionis-0.476.0}/setup.py +0 -0
  383. {orionis-0.475.0/tests/container/core → orionis-0.476.0/tests}/__init__.py +0 -0
  384. {orionis-0.475.0/tests/container/entities → orionis-0.476.0/tests/container}/__init__.py +0 -0
  385. {orionis-0.475.0/tests/container/enums → orionis-0.476.0/tests/container/context}/__init__.py +0 -0
  386. {orionis-0.475.0 → orionis-0.476.0}/tests/container/context/test_manager.py +0 -0
  387. {orionis-0.475.0 → orionis-0.476.0}/tests/container/context/test_scope.py +0 -0
  388. {orionis-0.475.0/tests/container/facades → orionis-0.476.0/tests/container/core}/__init__.py +0 -0
  389. {orionis-0.475.0 → orionis-0.476.0}/tests/container/core/test_advanced_async.py +0 -0
  390. {orionis-0.475.0 → orionis-0.476.0}/tests/container/core/test_async_optimizations.py +0 -0
  391. {orionis-0.475.0 → orionis-0.476.0}/tests/container/core/test_container.py +0 -0
  392. {orionis-0.475.0 → orionis-0.476.0}/tests/container/core/test_singleton.py +0 -0
  393. {orionis-0.475.0 → orionis-0.476.0}/tests/container/core/test_thread_safety.py +0 -0
  394. {orionis-0.475.0/tests/container/mocks → orionis-0.476.0/tests/container/entities}/__init__.py +0 -0
  395. {orionis-0.475.0 → orionis-0.476.0}/tests/container/entities/test_binding.py +0 -0
  396. {orionis-0.475.0/tests/container/providers → orionis-0.476.0/tests/container/enums}/__init__.py +0 -0
  397. {orionis-0.475.0 → orionis-0.476.0}/tests/container/enums/test_lifetimes.py +0 -0
  398. {orionis-0.475.0/tests/container/validators → orionis-0.476.0/tests/container/facades}/__init__.py +0 -0
  399. {orionis-0.475.0 → orionis-0.476.0}/tests/container/facades/test_facade.py +0 -0
  400. {orionis-0.475.0/tests/example → orionis-0.476.0/tests/container/mocks}/__init__.py +0 -0
  401. {orionis-0.475.0 → orionis-0.476.0}/tests/container/mocks/mock_advanced_async.py +0 -0
  402. {orionis-0.475.0 → orionis-0.476.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
  403. {orionis-0.475.0 → orionis-0.476.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
  404. {orionis-0.475.0 → orionis-0.476.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  405. {orionis-0.475.0 → orionis-0.476.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  406. {orionis-0.475.0/tests/foundation → orionis-0.476.0/tests/container/providers}/__init__.py +0 -0
  407. {orionis-0.475.0 → orionis-0.476.0}/tests/container/providers/test_providers.py +0 -0
  408. {orionis-0.475.0/tests/foundation/config → orionis-0.476.0/tests/container/validators}/__init__.py +0 -0
  409. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_implements.py +0 -0
  410. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  411. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_callable.py +0 -0
  412. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  413. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_instance.py +0 -0
  414. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  415. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_subclass.py +0 -0
  416. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  417. {orionis-0.475.0 → orionis-0.476.0}/tests/container/validators/test_lifetime.py +0 -0
  418. {orionis-0.475.0/tests/foundation/config/app → orionis-0.476.0/tests/example}/__init__.py +0 -0
  419. {orionis-0.475.0 → orionis-0.476.0}/tests/example/test_example.py +0 -0
  420. {orionis-0.475.0/tests/foundation/config/auth → orionis-0.476.0/tests/foundation}/__init__.py +0 -0
  421. {orionis-0.475.0/tests/foundation/config/cache → orionis-0.476.0/tests/foundation/config}/__init__.py +0 -0
  422. {orionis-0.475.0/tests/foundation/config/cors → orionis-0.476.0/tests/foundation/config/app}/__init__.py +0 -0
  423. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  424. {orionis-0.475.0/tests/foundation/config/database → orionis-0.476.0/tests/foundation/config/auth}/__init__.py +0 -0
  425. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  426. {orionis-0.475.0/tests/foundation/config/filesystems → orionis-0.476.0/tests/foundation/config/cache}/__init__.py +0 -0
  427. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  428. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  429. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  430. {orionis-0.475.0/tests/foundation/config/logging → orionis-0.476.0/tests/foundation/config/cors}/__init__.py +0 -0
  431. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  432. {orionis-0.475.0/tests/foundation/config/mail → orionis-0.476.0/tests/foundation/config/database}/__init__.py +0 -0
  433. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  434. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  435. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  436. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  437. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  438. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  439. {orionis-0.475.0/tests/foundation/config/queue → orionis-0.476.0/tests/foundation/config/filesystems}/__init__.py +0 -0
  440. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  441. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  442. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  443. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  444. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  445. {orionis-0.475.0/tests/foundation/config/root → orionis-0.476.0/tests/foundation/config/logging}/__init__.py +0 -0
  446. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  447. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  448. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  449. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  450. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  451. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  452. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  453. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  454. {orionis-0.475.0/tests/foundation/config/session → orionis-0.476.0/tests/foundation/config/mail}/__init__.py +0 -0
  455. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  456. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  457. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  458. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  459. {orionis-0.475.0/tests/foundation/config/startup → orionis-0.476.0/tests/foundation/config/queue}/__init__.py +0 -0
  460. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  461. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  462. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  463. {orionis-0.475.0/tests/foundation/config/testing → orionis-0.476.0/tests/foundation/config/root}/__init__.py +0 -0
  464. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  465. {orionis-0.475.0/tests/metadata → orionis-0.476.0/tests/foundation/config/session}/__init__.py +0 -0
  466. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  467. {orionis-0.475.0/tests/services → orionis-0.476.0/tests/foundation/config/startup}/__init__.py +0 -0
  468. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  469. {orionis-0.475.0/tests/services/asynchrony → orionis-0.476.0/tests/foundation/config/testing}/__init__.py +0 -0
  470. {orionis-0.475.0 → orionis-0.476.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  471. {orionis-0.475.0/tests/services/environment → orionis-0.476.0/tests/metadata}/__init__.py +0 -0
  472. {orionis-0.475.0 → orionis-0.476.0}/tests/metadata/test_metadata_framework.py +0 -0
  473. {orionis-0.475.0 → orionis-0.476.0}/tests/metadata/test_metadata_package.py +0 -0
  474. {orionis-0.475.0/tests/services/introspection → orionis-0.476.0/tests/services}/__init__.py +0 -0
  475. {orionis-0.475.0/tests/services/introspection/dependencies → orionis-0.476.0/tests/services/asynchrony}/__init__.py +0 -0
  476. {orionis-0.475.0 → orionis-0.476.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  477. {orionis-0.475.0/tests/services/introspection/dependencies/mocks → orionis-0.476.0/tests/services/environment}/__init__.py +0 -0
  478. {orionis-0.475.0 → orionis-0.476.0}/tests/services/environment/test_services_environment.py +0 -0
  479. {orionis-0.475.0/tests/services/introspection/reflection → orionis-0.476.0/tests/services/introspection}/__init__.py +0 -0
  480. {orionis-0.475.0/tests/services/introspection/reflection/mock → orionis-0.476.0/tests/services/introspection/dependencies}/__init__.py +0 -0
  481. {orionis-0.475.0/tests/services/log → orionis-0.476.0/tests/services/introspection/dependencies/mocks}/__init__.py +0 -0
  482. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  483. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  484. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  485. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
  486. {orionis-0.475.0/tests/services/system → orionis-0.476.0/tests/services/introspection/reflection}/__init__.py +0 -0
  487. {orionis-0.475.0/tests/support → orionis-0.476.0/tests/services/introspection/reflection/mock}/__init__.py +0 -0
  488. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  489. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
  490. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  491. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
  492. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
  493. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  494. {orionis-0.475.0 → orionis-0.476.0}/tests/services/introspection/test_reflection.py +0 -0
  495. {orionis-0.475.0/tests/support/entities → orionis-0.476.0/tests/services/log}/__init__.py +0 -0
  496. {orionis-0.475.0 → orionis-0.476.0}/tests/services/log/test_log.py +0 -0
  497. {orionis-0.475.0/tests/support/patterns → orionis-0.476.0/tests/services/system}/__init__.py +0 -0
  498. {orionis-0.475.0 → orionis-0.476.0}/tests/services/system/test_services_system_imports.py +0 -0
  499. {orionis-0.475.0 → orionis-0.476.0}/tests/services/system/test_services_system_workers.py +0 -0
  500. {orionis-0.475.0/tests/support/patterns/singleton → orionis-0.476.0/tests/support}/__init__.py +0 -0
  501. {orionis-0.475.0/tests/support/standard → orionis-0.476.0/tests/support/entities}/__init__.py +0 -0
  502. {orionis-0.475.0 → orionis-0.476.0}/tests/support/entities/mock_dataclass.py +0 -0
  503. {orionis-0.475.0 → orionis-0.476.0}/tests/support/entities/test_base.py +0 -0
  504. {orionis-0.475.0/tests/support/wrapper → orionis-0.476.0/tests/support/patterns}/__init__.py +0 -0
  505. {orionis-0.475.0/tests/testing → orionis-0.476.0/tests/support/patterns/singleton}/__init__.py +0 -0
  506. {orionis-0.475.0 → orionis-0.476.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  507. {orionis-0.475.0/tests/testing/cases → orionis-0.476.0/tests/support/standard}/__init__.py +0 -0
  508. {orionis-0.475.0 → orionis-0.476.0}/tests/support/standard/test_services_std.py +0 -0
  509. {orionis-0.475.0/tests/testing/entities → orionis-0.476.0/tests/support/wrapper}/__init__.py +0 -0
  510. {orionis-0.475.0 → orionis-0.476.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  511. {orionis-0.475.0/tests/testing/enums → orionis-0.476.0/tests/testing}/__init__.py +0 -0
  512. {orionis-0.475.0/tests/testing/output → orionis-0.476.0/tests/testing/cases}/__init__.py +0 -0
  513. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  514. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  515. {orionis-0.475.0/tests/testing/records → orionis-0.476.0/tests/testing/entities}/__init__.py +0 -0
  516. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/entities/test_testing_result.py +0 -0
  517. {orionis-0.475.0/tests/testing/validators → orionis-0.476.0/tests/testing/enums}/__init__.py +0 -0
  518. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/enums/test_testing_status.py +0 -0
  519. {orionis-0.475.0/tests/testing/view → orionis-0.476.0/tests/testing/output}/__init__.py +0 -0
  520. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/output/test_testing_dumper.py +0 -0
  521. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/output/test_testing_printer.py +0 -0
  522. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/records/test_testing_records.py +0 -0
  523. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/test_testing_unit.py +0 -0
  524. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/validators/test_testing_validators.py +0 -0
  525. {orionis-0.475.0 → orionis-0.476.0}/tests/testing/view/test_render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.475.0
3
+ Version: 0.476.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
@@ -0,0 +1,110 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Any, List, Optional
3
+
4
+ class IReactor(ABC):
5
+
6
+ @abstractmethod
7
+ def info(self) -> List[dict]:
8
+ """
9
+ Retrieves a list of all registered commands with their metadata.
10
+
11
+ This method returns a list of dictionaries, each containing information about
12
+ a registered command, including its signature, description, and whether it has
13
+ timestamps enabled. This is useful for introspection and displaying available
14
+ commands to the user.
15
+
16
+ Returns
17
+ -------
18
+ List[dict]
19
+ A list of dictionaries representing the registered commands, where each dictionary
20
+ contains the command's signature, description, and timestamps status.
21
+ """
22
+ pass
23
+
24
+ @abstractmethod
25
+ def call(
26
+ self,
27
+ signature: str,
28
+ args: Optional[List[str]] = None
29
+ ) -> Optional[Any]:
30
+ """
31
+ Executes a registered command synchronously by its signature, optionally passing command-line arguments.
32
+
33
+ This method retrieves a command from the internal registry using its unique signature,
34
+ validates and parses any provided arguments using the command's argument parser,
35
+ and then executes the command's `handle` method synchronously. It manages execution timing,
36
+ logging, and error handling, and returns any output produced by the command.
37
+
38
+ Parameters
39
+ ----------
40
+ signature : str
41
+ The unique signature identifier of the command to execute.
42
+ args : Optional[List[str]], default None
43
+ List of command-line arguments to pass to the command. If None, no arguments are provided.
44
+
45
+ Returns
46
+ -------
47
+ Optional[Any]
48
+ The output produced by the command's `handle` method if execution is successful.
49
+ Returns None if the command does not produce a result or if an error occurs.
50
+
51
+ Raises
52
+ ------
53
+ CLIOrionisValueError
54
+ If the command with the specified signature is not found in the registry.
55
+ SystemExit
56
+ If argument parsing fails due to invalid arguments provided (raised by argparse).
57
+ Exception
58
+ Propagates any exception raised during command execution after logging and error output.
59
+
60
+ Notes
61
+ -----
62
+ - Logs execution start, completion, and errors with timestamps if enabled.
63
+ - Handles argument parsing and injects parsed arguments into the command instance.
64
+ - All exceptions are logged and displayed in the console.
65
+ """
66
+ pass
67
+
68
+ @abstractmethod
69
+ async def callAsync(
70
+ self,
71
+ signature: str,
72
+ args: Optional[List[str]] = None
73
+ ) -> Optional[Any]:
74
+ """
75
+ Executes a registered command asynchronously by its signature, optionally passing command-line arguments.
76
+
77
+ This method locates a command in the internal registry using its unique signature,
78
+ validates and parses any provided arguments using the command's argument parser,
79
+ and then executes the command's `handle` method asynchronously. It manages execution timing,
80
+ logging, and error handling, and returns any output produced by the command.
81
+
82
+ Parameters
83
+ ----------
84
+ signature : str
85
+ The unique signature identifier of the command to execute.
86
+ args : Optional[List[str]], default None
87
+ List of command-line arguments to pass to the command. If None, no arguments are provided.
88
+
89
+ Returns
90
+ -------
91
+ Optional[Any]
92
+ The output produced by the command's `handle` method if execution is successful.
93
+ Returns None if the command does not produce a result or if an error occurs.
94
+
95
+ Raises
96
+ ------
97
+ CLIOrionisValueError
98
+ If the command with the specified signature is not found in the registry.
99
+ SystemExit
100
+ If argument parsing fails due to invalid arguments provided (raised by argparse).
101
+ Exception
102
+ Propagates any exception raised during command execution after logging and error output.
103
+
104
+ Notes
105
+ -----
106
+ - Logs execution start, completion, and errors with timestamps if enabled.
107
+ - Handles argument parsing and injects parsed arguments into the command instance.
108
+ - All exceptions are logged and displayed in the console.
109
+ """
110
+ pass
@@ -1,19 +1,21 @@
1
1
  import argparse
2
2
  import os
3
3
  import re
4
- import time
5
4
  from pathlib import Path
6
- from typing import List, Optional
5
+ from typing import Any, List, Optional
7
6
  from orionis.app import Orionis
8
7
  from orionis.console.args.argument import CLIArgument
9
8
  from orionis.console.base.command import BaseCommand
10
9
  from orionis.console.base.contracts.command import IBaseCommand
11
10
  from orionis.console.contracts.reactor import IReactor
11
+ from orionis.console.enums.command import Command
12
+ from orionis.console.exceptions import CLIOrionisValueError
12
13
  from orionis.console.output.contracts.console import IConsole
13
14
  from orionis.console.output.contracts.executor import IExecutor
14
15
  from orionis.foundation.contracts.application import IApplication
15
16
  from orionis.services.introspection.modules.reflection import ReflectionModule
16
17
  from orionis.services.log.contracts.log_service import ILogger
18
+ from orionis.support.performance.contracts.counter import IPerformanceCounter
17
19
 
18
20
  class Reactor(IReactor):
19
21
 
@@ -60,7 +62,7 @@ class Reactor(IReactor):
60
62
  self.__root: str = str(Path.cwd())
61
63
 
62
64
  # Initialize the internal command registry as an empty dictionary
63
- self.__commands: dict = {}
65
+ self.__commands: dict[str, Command] = {}
64
66
 
65
67
  # Automatically discover and load command classes from the console commands directory
66
68
  self.__loadCommands(str(self.__app.path('console_commands')), self.__root)
@@ -77,6 +79,9 @@ class Reactor(IReactor):
77
79
  # Initialize the logger service for logging command execution details
78
80
  self.__logger: ILogger = self.__app.make('x-orionis.services.log.log_service')
79
81
 
82
+ # Initialize the performance counter for measuring command execution time
83
+ self.__performance_counter: IPerformanceCounter = self.__app.make('x-orionis.support.performance.counter')
84
+
80
85
  def __loadCoreCommands(self) -> None:
81
86
  """
82
87
  Loads and registers core command classes provided by the Orionis framework.
@@ -127,13 +132,13 @@ class Reactor(IReactor):
127
132
  args = self.__ensureArguments(obj)
128
133
 
129
134
  # Register the command in the internal registry with all its metadata
130
- self.__commands[signature] = {
131
- "class": obj,
132
- "timestamps": timestamp,
133
- "signature": signature,
134
- "description": description,
135
- "args": args
136
- }
135
+ self.__commands[signature] = Command(
136
+ obj=obj,
137
+ timestamps=timestamp,
138
+ signature=signature,
139
+ description=description,
140
+ args=args
141
+ )
137
142
 
138
143
  def __loadCommands(self, commands_path: str, root_path: str) -> None:
139
144
  """
@@ -208,13 +213,13 @@ class Reactor(IReactor):
208
213
  args = self.__ensureArguments(obj)
209
214
 
210
215
  # Add the command to the internal registry
211
- self.__commands[signature] = {
212
- "class": obj,
213
- "timestamps": timestamp,
214
- "signature": signature,
215
- "description": description,
216
- "args": args
217
- }
216
+ self.__commands[signature] = Command(
217
+ obj=obj,
218
+ timestamps=timestamp,
219
+ signature=signature,
220
+ description=description,
221
+ args=args
222
+ )
218
223
 
219
224
  def __ensureTimestamps(self, obj: IBaseCommand) -> bool:
220
225
  """
@@ -403,6 +408,61 @@ class Reactor(IReactor):
403
408
  # Return the configured ArgumentParser
404
409
  return arg_parser
405
410
 
411
+ def __parseArgs(
412
+ self,
413
+ command: Command,
414
+ args: Optional[List[str]] = None
415
+ ) -> dict:
416
+ """
417
+ Parses command-line arguments for a given command using its internal ArgumentParser.
418
+
419
+ This method takes a command object and an optional list of command-line arguments,
420
+ and parses them into a dictionary of argument names and values. If the command
421
+ defines an ArgumentParser (i.e., expects arguments), the arguments are parsed
422
+ accordingly. If no arguments are expected or provided, an empty dictionary is returned.
423
+
424
+ Parameters
425
+ ----------
426
+ command : Command
427
+ The command object containing the argument parser and metadata.
428
+ args : Optional[List[str]], default None
429
+ A list of command-line arguments to parse. If None, an empty list is used.
430
+
431
+ Returns
432
+ -------
433
+ dict
434
+ A dictionary containing the parsed argument names and their corresponding values.
435
+ Returns an empty dictionary if no arguments are expected or provided.
436
+
437
+ Raises
438
+ ------
439
+ SystemExit
440
+ Raised by argparse if argument parsing fails or if help is requested.
441
+ """
442
+
443
+ # Initialize parsed_args to None
444
+ parsed_args = None
445
+
446
+ # If the command expects arguments, parse them using its ArgumentParser
447
+ if command.args is not None and isinstance(command.args, argparse.ArgumentParser):
448
+ if args is None:
449
+ args = []
450
+ try:
451
+ # Parse the provided arguments using the command's ArgumentParser
452
+ parsed_args = command.args.parse_args(args)
453
+ except SystemExit:
454
+ # Allow argparse to handle help/error messages and exit
455
+ raise
456
+
457
+ # Convert the parsed arguments to a dictionary and return
458
+ if isinstance(parsed_args, argparse.Namespace):
459
+ return vars(parsed_args)
460
+ elif isinstance(parsed_args, dict):
461
+ return parsed_args
462
+ else:
463
+ # Return an empty dictionary if no arguments were parsed
464
+ return {}
465
+
406
466
  def info(self) -> List[dict]:
407
467
  """
408
468
  Retrieves a list of all registered commands with their metadata.
@@ -426,8 +486,8 @@ class Reactor(IReactor):
426
486
  for command in self.__commands.values():
427
487
 
428
488
  # Extract command metadata
429
- signature:str = command.get("signature")
430
- description:str = command.get("description", "")
489
+ signature:str = command.signature
490
+ description:str = command.description
431
491
 
432
492
  # Skip internal commands (those with double underscores)
433
493
  if signature.startswith('__') and signature.endswith('__'):
@@ -446,103 +506,179 @@ class Reactor(IReactor):
446
506
  self,
447
507
  signature: str,
448
508
  args: Optional[List[str]] = None
449
- ):
509
+ ) -> Optional[Any]:
450
510
  """
451
- Executes a command by its signature with optional command-line arguments.
511
+ Executes a registered command synchronously by its signature, optionally passing command-line arguments.
452
512
 
453
- This method retrieves a registered command by its signature, validates any provided
454
- arguments against the command's argument parser, and executes the command's handle
455
- method with the parsed arguments and application context.
513
+ This method retrieves a command from the internal registry using its unique signature,
514
+ validates and parses any provided arguments using the command's argument parser,
515
+ and then executes the command's `handle` method synchronously. It manages execution timing,
516
+ logging, and error handling, and returns any output produced by the command.
456
517
 
457
518
  Parameters
458
519
  ----------
459
520
  signature : str
460
521
  The unique signature identifier of the command to execute.
461
522
  args : Optional[List[str]], default None
462
- Command-line arguments to pass to the command. If None, no arguments are provided.
523
+ List of command-line arguments to pass to the command. If None, no arguments are provided.
463
524
 
464
525
  Returns
465
526
  -------
466
- None
467
- This method does not return any value. The command's handle method is called
468
- directly for execution.
527
+ Optional[Any]
528
+ The output produced by the command's `handle` method if execution is successful.
529
+ Returns None if the command does not produce a result or if an error occurs.
469
530
 
470
531
  Raises
471
532
  ------
472
- ValueError
533
+ CLIOrionisValueError
473
534
  If the command with the specified signature is not found in the registry.
474
535
  SystemExit
475
- If argument parsing fails due to invalid arguments provided.
536
+ If argument parsing fails due to invalid arguments provided (raised by argparse).
537
+ Exception
538
+ Propagates any exception raised during command execution after logging and error output.
539
+
540
+ Notes
541
+ -----
542
+ - Logs execution start, completion, and errors with timestamps if enabled.
543
+ - Handles argument parsing and injects parsed arguments into the command instance.
544
+ - All exceptions are logged and displayed in the console.
476
545
  """
477
546
 
478
- # Retrieve the command from the registry
479
- command: dict = self.__commands.get(signature)
547
+ # Retrieve the command from the registry by its signature
548
+ command: Command = self.__commands.get(signature)
480
549
  if command is None:
481
- raise ValueError(f"Command '{signature}' not found.")
550
+ raise CLIOrionisValueError(f"Command '{signature}' not found.")
482
551
 
483
- # Start execution timer
484
- start_time = time.perf_counter()
552
+ # Start execution timer for performance measurement
553
+ self.__performance_counter.start()
485
554
 
486
- # Get command details
487
- command_class = command.get("class")
488
- arg_parser: Optional[argparse.ArgumentParser] = command.get("args")
489
- timestamps: bool = command.get("timestamps")
555
+ # Log the command execution start with RUNNING state if timestamps are enabled
556
+ if command.timestamps:
557
+ self.__executer.running(program=signature)
490
558
 
491
- # Initialize parsed arguments
492
- parsed_args = None
559
+ try:
560
+ # Instantiate the command class using the application container
561
+ command_instance: IBaseCommand = self.__app.make(command.obj)
493
562
 
494
- # If the command has arguments and args were provided, validate them
495
- if arg_parser is not None and isinstance(arg_parser, argparse.ArgumentParser):
496
- if args is None:
497
- args = []
498
- try:
499
- # Parse the provided arguments using the command's ArgumentParser
500
- parsed_args = arg_parser.parse_args(args)
501
- except SystemExit:
502
- # Re-raise SystemExit to allow argparse to handle help/error messages
503
- raise
563
+ # Inject parsed arguments into the command instance
564
+ command_instance._args = self.__parseArgs(command, args)
504
565
 
505
- # Log the command execution start with RUNNING state
506
- if timestamps:
566
+ # Execute the command's handle method and capture its output
567
+ output = self.__app.call(command_instance, 'handle')
568
+
569
+ # Calculate elapsed time and log completion with DONE state if command.timestamps are enabled
570
+ elapsed_time = round(self.__performance_counter.stop(), 2)
571
+ if command.timestamps:
572
+ self.__executer.done(program=signature, time=f"{elapsed_time}s")
573
+
574
+ # Log successful execution in the logger service
575
+ self.__logger.info(f"Command '{signature}' executed successfully in ({elapsed_time}) seconds.")
576
+
577
+ # Return the output produced by the command, if any
578
+ return output
579
+
580
+ except Exception as e:
581
+ # Display the error message in the console (without timestamp)
582
+ self.__console.error(f"An error occurred while executing command '{signature}': {e}", timestamp=False)
583
+
584
+ # Log the error in the logger service
585
+ self.__logger.error(f"Command '{signature}' execution failed: {e}")
586
+
587
+ # Calculate elapsed time and log failure with ERROR state if command.timestamps are enabled
588
+ elapsed_time = round(self.__performance_counter.stop(), 2)
589
+ if command.timestamps:
590
+ self.__executer.fail(program=signature, time=f"{elapsed_time}s")
591
+
592
+ # Propagate the exception after logging
593
+ raise
594
+
595
+ async def callAsync(
596
+ self,
597
+ signature: str,
598
+ args: Optional[List[str]] = None
599
+ ) -> Optional[Any]:
600
+ """
601
+ Executes a registered command asynchronously by its signature, optionally passing command-line arguments.
602
+
603
+ This method locates a command in the internal registry using its unique signature,
604
+ validates and parses any provided arguments using the command's argument parser,
605
+ and then executes the command's `handle` method asynchronously. It manages execution timing,
606
+ logging, and error handling, and returns any output produced by the command.
607
+
608
+ Parameters
609
+ ----------
610
+ signature : str
611
+ The unique signature identifier of the command to execute.
612
+ args : Optional[List[str]], default None
613
+ List of command-line arguments to pass to the command. If None, no arguments are provided.
614
+
615
+ Returns
616
+ -------
617
+ Optional[Any]
618
+ The output produced by the command's `handle` method if execution is successful.
619
+ Returns None if the command does not produce a result or if an error occurs.
620
+
621
+ Raises
622
+ ------
623
+ CLIOrionisValueError
624
+ If the command with the specified signature is not found in the registry.
625
+ SystemExit
626
+ If argument parsing fails due to invalid arguments provided (raised by argparse).
627
+ Exception
628
+ Propagates any exception raised during command execution after logging and error output.
629
+
630
+ Notes
631
+ -----
632
+ - Logs execution start, completion, and errors with timestamps if enabled.
633
+ - Handles argument parsing and injects parsed arguments into the command instance.
634
+ - All exceptions are logged and displayed in the console.
635
+ """
636
+
637
+ # Retrieve the command from the registry by its signature
638
+ command: Command = self.__commands.get(signature)
639
+ if command is None:
640
+ raise CLIOrionisValueError(f"Command '{signature}' not found.")
641
+
642
+ # Start execution timer for performance measurement
643
+ self.__performance_counter.start()
644
+
645
+ # Log the command execution start with RUNNING state if timestamps are enabled
646
+ if command.timestamps:
507
647
  self.__executer.running(program=signature)
508
648
 
509
649
  try:
650
+ # Instantiate the command class using the application container
651
+ command_instance: IBaseCommand = self.__app.make(command.obj)
510
652
 
511
- # Create an instance of the command class and execute it
512
- command_instance: IBaseCommand = self.__app.make(command_class)
653
+ # Inject parsed arguments into the command instance
654
+ command_instance._args = self.__parseArgs(command, args)
513
655
 
514
- # If arguments were parsed, set them on the command instance
515
- if isinstance(parsed_args, argparse.Namespace):
516
- command_instance._args = vars(parsed_args)
517
- elif isinstance(parsed_args, dict):
518
- command_instance._args = parsed_args
519
- else:
520
- command_instance._args = {}
656
+ # Execute the command's handle method asynchronously and capture its output
657
+ output = await self.__app.callAsync(command_instance, 'handle')
521
658
 
522
- # Call the handle method of the command instance
523
- output = self.__app.call(command_instance, 'handle')
524
-
525
- # Log the command execution completion with DONE state
526
- elapsed_time = round(time.perf_counter() - start_time, 2)
527
- if timestamps:
659
+ # Calculate elapsed time and log completion with DONE state if command.timestamps are enabled
660
+ elapsed_time = round(self.__performance_counter.stop(), 2)
661
+ if command.timestamps:
528
662
  self.__executer.done(program=signature, time=f"{elapsed_time}s")
529
663
 
530
- # Log the command execution success
664
+ # Log successful execution in the logger service
531
665
  self.__logger.info(f"Command '{signature}' executed successfully in ({elapsed_time}) seconds.")
532
666
 
533
- # If the command has a return value or output, return it
534
- if output is not None:
535
- return output
667
+ # Return the output produced by the command, if any
668
+ return output
536
669
 
537
670
  except Exception as e:
538
671
 
539
- # Display the error message in the console
672
+ # Display the error message in the console (without timestamp)
540
673
  self.__console.error(f"An error occurred while executing command '{signature}': {e}", timestamp=False)
541
674
 
542
675
  # Log the error in the logger service
543
676
  self.__logger.error(f"Command '{signature}' execution failed: {e}")
544
677
 
545
- # Log the command execution failure with ERROR state
546
- elapsed_time = round(time.perf_counter() - start_time, 2)
547
- if timestamps:
548
- self.__executer.fail(program=signature, time=f"{elapsed_time}s")
678
+ # Calculate elapsed time and log failure with ERROR state if command.timestamps are enabled
679
+ elapsed_time = round(self.__performance_counter.stop(), 2)
680
+ if command.timestamps:
681
+ self.__executer.fail(program=signature, time=f"{elapsed_time}s")
682
+
683
+ # Propagate the exception after logging
684
+ raise
@@ -0,0 +1,43 @@
1
+ import argparse
2
+ from dataclasses import dataclass
3
+ from typing import Type, Optional
4
+ from orionis.support.entities.base import BaseEntity
5
+
6
+ @dataclass(kw_only=True)
7
+ class Command(BaseEntity):
8
+ """
9
+ Represents a console command and its associated metadata.
10
+
11
+ Parameters
12
+ ----------
13
+ obj : Type
14
+ The type or class associated with the command.
15
+ timestamps : bool
16
+ Whether timestamps are enabled for this command.
17
+ signature : str
18
+ The signature string representing the command usage.
19
+ description : str
20
+ A brief description of what the command does.
21
+ args : Optional[argparse.ArgumentParser], optional
22
+ Optional argument parser for command-line arguments.
23
+
24
+ Returns
25
+ -------
26
+ Command
27
+ An instance of the Command class containing metadata and configuration for a console command.
28
+ """
29
+
30
+ # The type or class associated with the command
31
+ obj: Type
32
+
33
+ # Indicates if timestamps are enabled for this command
34
+ timestamps: bool
35
+
36
+ # The command usage signature
37
+ signature: str
38
+
39
+ # Description of the command's purpose
40
+ description: str
41
+
42
+ # Optional argument parser for command-line arguments
43
+ args: Optional[argparse.ArgumentParser] = None
@@ -0,0 +1,42 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Optional
3
+ from orionis.support.entities.base import BaseEntity
4
+
5
+ @dataclass(kw_only=True)
6
+ class Task(BaseEntity):
7
+ """
8
+ Represents a task entity containing metadata for execution and description.
9
+
10
+ Parameters
11
+ ----------
12
+ signature : str
13
+ The unique identifier or signature of the task.
14
+ args : Optional[List[str]], optional
15
+ List of arguments required by the task, by default None.
16
+ purpose : str, optional
17
+ Brief description of the task's purpose, by default None.
18
+ trigger : str, optional
19
+ Event or condition that triggers the task, by default None.
20
+ details : str, optional
21
+ Additional details or information about the task, by default None.
22
+
23
+ Returns
24
+ -------
25
+ Task
26
+ An instance of the Task class with the specified metadata.
27
+ """
28
+
29
+ # Unique identifier for the task
30
+ signature: str
31
+
32
+ # List of arguments required by the task (optional)
33
+ args: Optional[List[str]] = None
34
+
35
+ # Brief description of the task's purpose (optional)
36
+ purpose: str = None
37
+
38
+ # Event or condition that triggers the task (optional)
39
+ trigger: str = None
40
+
41
+ # Additional details or information about the task (optional)
42
+ details: str = None