orionis 0.454.0__tar.gz → 0.456.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 (506) hide show
  1. {orionis-0.454.0/orionis.egg-info → orionis-0.456.0}/PKG-INFO +1 -1
  2. orionis-0.456.0/orionis/console/commands/help.py +36 -0
  3. orionis-0.456.0/orionis/console/contracts/reactor.py +39 -0
  4. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/core/reactor.py +7 -2
  5. orionis-0.456.0/orionis/console/kernel.py +99 -0
  6. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/application.py +3 -1
  7. orionis-0.456.0/orionis/foundation/providers/reactor_provider.py +93 -0
  8. orionis-0.456.0/orionis/foundation/providers/testing_provider.py +77 -0
  9. {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/framework.py +1 -1
  10. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/unit_test.py +54 -0
  11. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/kernel.py +27 -1
  12. {orionis-0.454.0 → orionis-0.456.0/orionis.egg-info}/PKG-INFO +1 -1
  13. {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/SOURCES.txt +3 -0
  14. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +7 -3
  15. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_abstract.py +2 -11
  16. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_concrete.py +2 -11
  17. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_instance.py +2 -11
  18. orionis-0.454.0/orionis/console/kernel.py +0 -25
  19. orionis-0.454.0/orionis/foundation/providers/testing_provider.py +0 -125
  20. {orionis-0.454.0 → orionis-0.456.0}/LICENCE +0 -0
  21. {orionis-0.454.0 → orionis-0.456.0}/MANIFEST.in +0 -0
  22. {orionis-0.454.0 → orionis-0.456.0}/README.md +0 -0
  23. {orionis-0.454.0 → orionis-0.456.0}/orionis/__init__.py +0 -0
  24. {orionis-0.454.0 → orionis-0.456.0}/orionis/app.py +0 -0
  25. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/__init__.py +0 -0
  26. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/__init__.py +0 -0
  27. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/argument.py +0 -0
  28. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/enums/__init__.py +0 -0
  29. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/enums/actions.py +0 -0
  30. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/__init__.py +0 -0
  31. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/command.py +0 -0
  32. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/contracts/__init__.py +0 -0
  33. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/contracts/command.py +0 -0
  34. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/commands/__init__.py +0 -0
  35. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/commands/version.py +0 -0
  36. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/contracts/__init__.py +0 -0
  37. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/contracts/kernel.py +0 -0
  38. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/core/__init__.py +0 -0
  39. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/__init__.py +0 -0
  40. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  41. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/contracts/dump.py +0 -0
  42. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/dump.py +0 -0
  43. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/__init__.py +0 -0
  44. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  45. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  46. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/progress_bar.py +0 -0
  47. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/__init__.py +0 -0
  48. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_exception.py +0 -0
  49. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  50. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  51. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  52. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/__init__.py +0 -0
  53. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/console.py +0 -0
  54. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/__init__.py +0 -0
  55. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/console.py +0 -0
  56. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/executor.py +0 -0
  57. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/enums/__init__.py +0 -0
  58. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/enums/styles.py +0 -0
  59. {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/executor.py +0 -0
  60. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/__init__.py +0 -0
  61. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/container.py +0 -0
  62. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/__init__.py +0 -0
  63. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/manager.py +0 -0
  64. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/scope.py +0 -0
  65. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/__init__.py +0 -0
  66. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/container.py +0 -0
  67. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/service_provider.py +0 -0
  68. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/entities/__init__.py +0 -0
  69. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/entities/binding.py +0 -0
  70. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/enums/__init__.py +0 -0
  71. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/enums/lifetimes.py +0 -0
  72. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/__init__.py +0 -0
  73. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/attribute.py +0 -0
  74. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/exception.py +0 -0
  75. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/type.py +0 -0
  76. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/value.py +0 -0
  77. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/facades/__init__.py +0 -0
  78. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/facades/facade.py +0 -0
  79. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/providers/__init__.py +0 -0
  80. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/providers/service_provider.py +0 -0
  81. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/__init__.py +0 -0
  82. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/implements.py +0 -0
  83. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_abstract_class.py +0 -0
  84. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_callable.py +0 -0
  85. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_concrete_class.py +0 -0
  86. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_instance.py +0 -0
  87. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_not_subclass.py +0 -0
  88. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_subclass.py +0 -0
  89. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_valid_alias.py +0 -0
  90. {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/lifetime.py +0 -0
  91. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/__init__.py +0 -0
  92. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/__init__.py +0 -0
  93. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/__init__.py +0 -0
  94. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  95. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/entities/app.py +0 -0
  96. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  97. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  98. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  99. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/__init__.py +0 -0
  100. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  101. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  102. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/__init__.py +0 -0
  103. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  104. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  105. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  106. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  107. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  108. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  109. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/__init__.py +0 -0
  110. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  111. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  112. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/__init__.py +0 -0
  113. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  114. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  115. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/database.py +0 -0
  116. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  117. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  118. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  119. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  120. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  121. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  122. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  123. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  124. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  125. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  126. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  127. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  128. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  129. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  130. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  131. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  132. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  133. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  134. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  135. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  136. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  137. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  138. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  139. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/__init__.py +0 -0
  140. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  141. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  142. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  143. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  144. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  145. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  146. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  147. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  148. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  149. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  150. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  151. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  152. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  153. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  154. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/__init__.py +0 -0
  155. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  156. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  157. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  158. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  159. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  160. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/__init__.py +0 -0
  161. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  162. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  163. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  164. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  165. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  166. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  167. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/roots/__init__.py +0 -0
  168. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/roots/paths.py +0 -0
  169. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/__init__.py +0 -0
  170. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  171. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/entities/session.py +0 -0
  172. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  173. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  174. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  175. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  176. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/startup.py +0 -0
  177. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/__init__.py +0 -0
  178. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  179. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  180. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  181. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  182. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  183. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  184. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/__init__.py +0 -0
  185. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/application.py +0 -0
  186. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/config.py +0 -0
  187. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/__init__.py +0 -0
  188. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/integrity.py +0 -0
  189. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/runtime.py +0 -0
  190. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/type.py +0 -0
  191. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/value.py +0 -0
  192. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/__init__.py +0 -0
  193. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/console_provider.py +0 -0
  194. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  195. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/executor_provider.py +0 -0
  196. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  197. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/logger_provider.py +0 -0
  198. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  199. {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/workers_provider.py +0 -0
  200. {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/__init__.py +0 -0
  201. {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/package.py +0 -0
  202. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/__init__.py +0 -0
  203. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/__init__.py +0 -0
  204. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  205. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  206. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/coroutines.py +0 -0
  207. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  208. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  209. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/__init__.py +0 -0
  210. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/__init__.py +0 -0
  211. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/caster.py +0 -0
  212. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/env.py +0 -0
  213. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/core/__init__.py +0 -0
  214. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/core/dot_env.py +0 -0
  215. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  216. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/dynamic/caster.py +0 -0
  217. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/enums/__init__.py +0 -0
  218. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/enums/value_type.py +0 -0
  219. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/env.py +0 -0
  220. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  221. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/exception.py +0 -0
  222. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/value.py +0 -0
  223. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/helpers/__init__.py +0 -0
  224. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/helpers/functions.py +0 -0
  225. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/key/__init__.py +0 -0
  226. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/key/key_generator.py +0 -0
  227. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/__init__.py +0 -0
  228. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/key_name.py +0 -0
  229. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/types.py +0 -0
  230. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/__init__.py +0 -0
  231. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
  232. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  233. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/inspire.py +0 -0
  234. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/quotes.py +0 -0
  235. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/__init__.py +0 -0
  236. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  237. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  238. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  239. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  240. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/__init__.py +0 -0
  241. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  242. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  243. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/reflection.py +0 -0
  244. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  245. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  246. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  247. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  248. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  249. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  250. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  251. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  252. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  253. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  254. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  255. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  256. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  257. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/type.py +0 -0
  258. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/value.py +0 -0
  259. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/__init__.py +0 -0
  260. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  261. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  262. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/reflection.py +0 -0
  263. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/__init__.py +0 -0
  264. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  265. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  266. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/reflection.py +0 -0
  267. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/objects/__init__.py +0 -0
  268. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/objects/types.py +0 -0
  269. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/reflection.py +0 -0
  270. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/__init__.py +0 -0
  271. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/contracts/__init__.py +0 -0
  272. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/contracts/log_service.py +0 -0
  273. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/exceptions/__init__.py +0 -0
  274. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/exceptions/runtime.py +0 -0
  275. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/__init__.py +0 -0
  276. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/filename.py +0 -0
  277. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  278. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  279. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/log_service.py +0 -0
  280. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/__init__.py +0 -0
  281. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/__init__.py +0 -0
  282. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/imports.py +0 -0
  283. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/workers.py +0 -0
  284. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/imports.py +0 -0
  285. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/runtime/__init__.py +0 -0
  286. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/runtime/imports.py +0 -0
  287. {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/workers.py +0 -0
  288. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/__init__.py +0 -0
  289. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/entities/__init__.py +0 -0
  290. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/entities/base.py +0 -0
  291. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/__init__.py +0 -0
  292. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/console.py +0 -0
  293. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/dumper.py +0 -0
  294. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/executor.py +0 -0
  295. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/inspire.py +0 -0
  296. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/logger.py +0 -0
  297. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/progress_bar.py +0 -0
  298. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/testing.py +0 -0
  299. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/workers.py +0 -0
  300. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/__init__.py +0 -0
  301. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  302. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  303. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  304. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  305. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/serializer.py +0 -0
  306. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/__init__.py +0 -0
  307. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  308. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/singleton/meta.py +0 -0
  309. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/__init__.py +0 -0
  310. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/contracts/__init__.py +0 -0
  311. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/contracts/std.py +0 -0
  312. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  313. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/exceptions/value.py +0 -0
  314. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/std.py +0 -0
  315. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/wrapper/__init__.py +0 -0
  316. {orionis-0.454.0 → orionis-0.456.0}/orionis/support/wrapper/dot_dict.py +0 -0
  317. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/__init__.py +0 -0
  318. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/__init__.py +0 -0
  319. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/asynchronous.py +0 -0
  320. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/synchronous.py +0 -0
  321. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/__init__.py +0 -0
  322. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/dumper.py +0 -0
  323. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/kernel.py +0 -0
  324. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/logs.py +0 -0
  325. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/printer.py +0 -0
  326. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/render.py +0 -0
  327. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/test_result.py +0 -0
  328. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/core/__init__.py +0 -0
  329. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/core/unit_test.py +0 -0
  330. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/entities/__init__.py +0 -0
  331. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/entities/result.py +0 -0
  332. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/enums/__init__.py +0 -0
  333. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/enums/status.py +0 -0
  334. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/__init__.py +0 -0
  335. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/config.py +0 -0
  336. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/failure.py +0 -0
  337. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/persistence.py +0 -0
  338. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/runtime.py +0 -0
  339. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/value.py +0 -0
  340. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/__init__.py +0 -0
  341. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/dumper.py +0 -0
  342. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/printer.py +0 -0
  343. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/records/__init__.py +0 -0
  344. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/records/logs.py +0 -0
  345. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/__init__.py +0 -0
  346. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/base_path.py +0 -0
  347. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/execution_mode.py +0 -0
  348. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/fail_fast.py +0 -0
  349. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/folder_path.py +0 -0
  350. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/module_name.py +0 -0
  351. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/name_pattern.py +0 -0
  352. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/pattern.py +0 -0
  353. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/persistent.py +0 -0
  354. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/persistent_driver.py +0 -0
  355. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/print_result.py +0 -0
  356. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/tags.py +0 -0
  357. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/throw_exception.py +0 -0
  358. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/verbosity.py +0 -0
  359. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/web_report.py +0 -0
  360. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/workers.py +0 -0
  361. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/view/__init__.py +0 -0
  362. {orionis-0.454.0 → orionis-0.456.0}/orionis/test/view/render.py +0 -0
  363. {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/dependency_links.txt +0 -0
  364. {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/requires.txt +0 -0
  365. {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/top_level.txt +0 -0
  366. {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/zip-safe +0 -0
  367. {orionis-0.454.0 → orionis-0.456.0}/setup.cfg +0 -0
  368. {orionis-0.454.0 → orionis-0.456.0}/setup.py +0 -0
  369. {orionis-0.454.0 → orionis-0.456.0}/tests/__init__.py +0 -0
  370. {orionis-0.454.0 → orionis-0.456.0}/tests/container/__init__.py +0 -0
  371. {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/__init__.py +0 -0
  372. {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/test_manager.py +0 -0
  373. {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/test_scope.py +0 -0
  374. {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/__init__.py +0 -0
  375. {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_container.py +0 -0
  376. {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_singleton.py +0 -0
  377. {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_thread_safety.py +0 -0
  378. {orionis-0.454.0 → orionis-0.456.0}/tests/container/entities/__init__.py +0 -0
  379. {orionis-0.454.0 → orionis-0.456.0}/tests/container/entities/test_binding.py +0 -0
  380. {orionis-0.454.0 → orionis-0.456.0}/tests/container/enums/__init__.py +0 -0
  381. {orionis-0.454.0 → orionis-0.456.0}/tests/container/enums/test_lifetimes.py +0 -0
  382. {orionis-0.454.0 → orionis-0.456.0}/tests/container/facades/__init__.py +0 -0
  383. {orionis-0.454.0 → orionis-0.456.0}/tests/container/facades/test_facade.py +0 -0
  384. {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/__init__.py +0 -0
  385. {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
  386. {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  387. {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  388. {orionis-0.454.0 → orionis-0.456.0}/tests/container/providers/__init__.py +0 -0
  389. {orionis-0.454.0 → orionis-0.456.0}/tests/container/providers/test_providers.py +0 -0
  390. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/__init__.py +0 -0
  391. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_implements.py +0 -0
  392. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  393. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_callable.py +0 -0
  394. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  395. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_instance.py +0 -0
  396. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  397. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_subclass.py +0 -0
  398. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  399. {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_lifetime.py +0 -0
  400. {orionis-0.454.0 → orionis-0.456.0}/tests/example/__init__.py +0 -0
  401. {orionis-0.454.0 → orionis-0.456.0}/tests/example/test_example.py +0 -0
  402. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/__init__.py +0 -0
  403. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/__init__.py +0 -0
  404. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/app/__init__.py +0 -0
  405. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  406. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/auth/__init__.py +0 -0
  407. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  408. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/__init__.py +0 -0
  409. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  410. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  411. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  412. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cors/__init__.py +0 -0
  413. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  414. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/__init__.py +0 -0
  415. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  416. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  417. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  418. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  419. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  420. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  421. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  422. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  423. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  424. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  425. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  426. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  427. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/__init__.py +0 -0
  428. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  429. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  430. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  431. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  432. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  433. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  434. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  435. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  436. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/__init__.py +0 -0
  437. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  438. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  439. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  440. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  441. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/__init__.py +0 -0
  442. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  443. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  444. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  445. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/root/__init__.py +0 -0
  446. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  447. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/session/__init__.py +0 -0
  448. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  449. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/startup/__init__.py +0 -0
  450. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  451. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/testing/__init__.py +0 -0
  452. {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  453. {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/__init__.py +0 -0
  454. {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/test_metadata_framework.py +0 -0
  455. {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/test_metadata_package.py +0 -0
  456. {orionis-0.454.0 → orionis-0.456.0}/tests/services/__init__.py +0 -0
  457. {orionis-0.454.0 → orionis-0.456.0}/tests/services/asynchrony/__init__.py +0 -0
  458. {orionis-0.454.0 → orionis-0.456.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  459. {orionis-0.454.0 → orionis-0.456.0}/tests/services/environment/__init__.py +0 -0
  460. {orionis-0.454.0 → orionis-0.456.0}/tests/services/environment/test_services_environment.py +0 -0
  461. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/__init__.py +0 -0
  462. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/__init__.py +0 -0
  463. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
  464. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  465. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  466. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  467. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/__init__.py +0 -0
  468. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
  469. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  470. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  471. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  472. {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/test_reflection.py +0 -0
  473. {orionis-0.454.0 → orionis-0.456.0}/tests/services/log/__init__.py +0 -0
  474. {orionis-0.454.0 → orionis-0.456.0}/tests/services/log/test_log.py +0 -0
  475. {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/__init__.py +0 -0
  476. {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/test_services_system_imports.py +0 -0
  477. {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/test_services_system_workers.py +0 -0
  478. {orionis-0.454.0 → orionis-0.456.0}/tests/support/__init__.py +0 -0
  479. {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/__init__.py +0 -0
  480. {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/mock_dataclass.py +0 -0
  481. {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/test_base.py +0 -0
  482. {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/__init__.py +0 -0
  483. {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/singleton/__init__.py +0 -0
  484. {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  485. {orionis-0.454.0 → orionis-0.456.0}/tests/support/standard/__init__.py +0 -0
  486. {orionis-0.454.0 → orionis-0.456.0}/tests/support/standard/test_services_std.py +0 -0
  487. {orionis-0.454.0 → orionis-0.456.0}/tests/support/wrapper/__init__.py +0 -0
  488. {orionis-0.454.0 → orionis-0.456.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  489. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/__init__.py +0 -0
  490. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/__init__.py +0 -0
  491. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  492. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  493. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/entities/__init__.py +0 -0
  494. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/entities/test_testing_result.py +0 -0
  495. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/enums/__init__.py +0 -0
  496. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/enums/test_testing_status.py +0 -0
  497. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/__init__.py +0 -0
  498. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/test_testing_dumper.py +0 -0
  499. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/test_testing_printer.py +0 -0
  500. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/records/__init__.py +0 -0
  501. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/records/test_testing_records.py +0 -0
  502. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/test_testing_unit.py +0 -0
  503. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/validators/__init__.py +0 -0
  504. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/validators/test_testing_validators.py +0 -0
  505. {orionis-0.454.0 → orionis-0.456.0}/tests/testing/view/__init__.py +0 -0
  506. {orionis-0.454.0 → orionis-0.456.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.454.0
3
+ Version: 0.456.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,36 @@
1
+ from orionis.console.base.command import BaseCommand
2
+ from orionis.console.exceptions import CLIOrionisRuntimeError
3
+ from rich.console import Console
4
+ from rich.panel import Panel
5
+
6
+ class HelpCommand(BaseCommand):
7
+ """
8
+ Command class to display usage information for the Orionis CLI.
9
+ """
10
+
11
+ timestamps: bool = False
12
+ signature: str = "help"
13
+ description: str = "Prints help information for the Orionis CLI commands."
14
+
15
+ def handle(self) -> None:
16
+ """
17
+ Executes the command to display usage information for the Orionis CLI.
18
+ """
19
+ try:
20
+ console = Console()
21
+ usage = (
22
+ "[bold cyan]Usage:[/]\n"
23
+ " orionis <command> [options]\n\n"
24
+ "[bold cyan]Available Commands:[/]\n"
25
+ " help Show this help message\n"
26
+ " run Run the application\n"
27
+ " make Generate code scaffolding\n"
28
+ " migrate Run database migrations\n"
29
+ " ... Other available commands\n\n"
30
+ "[bold cyan]Options:[/]\n"
31
+ " -h, --help Show this help message and exit\n"
32
+ )
33
+ panel = Panel(usage, title="[bold green]Orionis CLI Help[/]", expand=False, border_style="bright_blue")
34
+ console.print(panel)
35
+ except Exception as e:
36
+ raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
@@ -0,0 +1,39 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import List, Optional
3
+
4
+ class IReactor(ABC):
5
+
6
+ @abstractmethod
7
+ def call(
8
+ self,
9
+ signature: str,
10
+ args: Optional[List[str]] = None
11
+ ):
12
+ """
13
+ Executes a command by its signature with optional command-line arguments.
14
+
15
+ This method retrieves a registered command by its signature, validates any provided
16
+ arguments against the command's argument parser, and executes the command's handle
17
+ method with the parsed arguments and application context.
18
+
19
+ Parameters
20
+ ----------
21
+ signature : str
22
+ The unique signature identifier of the command to execute.
23
+ args : Optional[List[str]], default None
24
+ Command-line arguments to pass to the command. If None, no arguments are provided.
25
+
26
+ Returns
27
+ -------
28
+ None
29
+ This method does not return any value. The command's handle method is called
30
+ directly for execution.
31
+
32
+ Raises
33
+ ------
34
+ ValueError
35
+ If the command with the specified signature is not found in the registry.
36
+ SystemExit
37
+ If argument parsing fails due to invalid arguments provided.
38
+ """
39
+ pass
@@ -8,13 +8,14 @@ from orionis.app import Orionis
8
8
  from orionis.console.args.argument import CLIArgument
9
9
  from orionis.console.base.command import BaseCommand
10
10
  from orionis.console.base.contracts.command import IBaseCommand
11
+ from orionis.console.contracts.reactor import IReactor
11
12
  from orionis.console.output.contracts.console import IConsole
12
13
  from orionis.console.output.contracts.executor import IExecutor
13
14
  from orionis.foundation.contracts.application import IApplication
14
15
  from orionis.services.introspection.modules.reflection import ReflectionModule
15
16
  from orionis.services.log.contracts.log_service import ILogger
16
17
 
17
- class Reactor:
18
+ class Reactor(IReactor):
18
19
 
19
20
  def __init__(
20
21
  self,
@@ -100,9 +101,13 @@ class Reactor:
100
101
 
101
102
  # Import the core command class for version
102
103
  from orionis.console.commands.version import VersionCommand
104
+ from orionis.console.commands.help import HelpCommand
103
105
 
104
106
  # List of core command classes to load (extend this list as more core commands are added)
105
- core_commands = [VersionCommand]
107
+ core_commands = [
108
+ VersionCommand,
109
+ HelpCommand
110
+ ]
106
111
 
107
112
  # Iterate through the core command classes and register them
108
113
  for obj in core_commands:
@@ -0,0 +1,99 @@
1
+ from orionis.console.contracts.kernel import IKernelCLI
2
+ from orionis.console.contracts.reactor import IReactor
3
+ from orionis.console.output.contracts.console import IConsole
4
+ from orionis.foundation.contracts.application import IApplication
5
+ from orionis.console.exceptions import CLIOrionisValueError
6
+
7
+ class KernelCLI(IKernelCLI):
8
+
9
+ def __init__(
10
+ self,
11
+ app: IApplication
12
+ ) -> None:
13
+ """
14
+ Initializes the KernelCLI instance with the provided application container.
15
+
16
+ Parameters
17
+ ----------
18
+ app : IApplication
19
+ The application container instance that provides access to services and dependencies.
20
+
21
+ Returns
22
+ -------
23
+ None
24
+ This constructor does not return a value. It initializes internal dependencies required for CLI operations.
25
+
26
+ Raises
27
+ ------
28
+ CLIOrionisValueError
29
+ If the provided `app` argument is not an instance of `IApplication`.
30
+ """
31
+
32
+ # Validate that the app is an instance of IApplication
33
+ if not isinstance(app, IApplication):
34
+ raise CLIOrionisValueError(
35
+ f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
36
+ )
37
+
38
+ # Retrieve and initialize the reactor instance from the application container.
39
+ # The reactor is responsible for dispatching CLI commands.
40
+ self.__reactor: IReactor = app.make('x-orionis.console.core.reactor', app)
41
+
42
+ # Retrieve and initialize the console instance for command output and error handling.
43
+ self.__console: IConsole = app.make('x-orionis.console.output.console')
44
+
45
+ def handle(self, args: list) -> None:
46
+ """
47
+ Processes and dispatches command line arguments to the appropriate command handler.
48
+
49
+ Parameters
50
+ ----------
51
+ args : list
52
+ The list of command line arguments, typically `sys.argv`.
53
+
54
+ Returns
55
+ -------
56
+ None
57
+ This method does not return a value. It may terminate the process or delegate execution to command handlers.
58
+
59
+ Raises
60
+ ------
61
+ SystemExit
62
+ If invalid arguments are provided or no command is specified, this method may terminate the process with an error message.
63
+ """
64
+
65
+ try:
66
+
67
+ # Ensure the arguments are provided as a list
68
+ if not isinstance(args, list):
69
+ raise CLIOrionisValueError(
70
+ f"Failed to handle command line arguments: expected list, got {type(args).__module__}.{type(args).__name__}."
71
+ )
72
+
73
+ # If no arguments or only the script name is provided, show the default help command
74
+ if not args or len(args) <= 1:
75
+ return self.__reactor.call('help')
76
+
77
+ # Remove the first argument (script name) to process only the command and its parameters
78
+ args = args[1:]
79
+
80
+ # If no command is provided after removing the script name, exit with an error
81
+ if len(args) == 0:
82
+ raise CLIOrionisValueError("No command provided to execute.")
83
+
84
+ # If only the command is provided, call it without additional arguments
85
+ if len(args) == 1:
86
+ return self.__reactor.call(args[0])
87
+
88
+ # If command and arguments are provided, call the command with its arguments
89
+ return self.__reactor.call(args[0], args[1:])
90
+
91
+ except SystemExit as e:
92
+
93
+ # Handle SystemExit exceptions gracefully, allowing for clean exits with error messages
94
+ self.__console.exitError(str(e))
95
+
96
+ except Exception as e:
97
+
98
+ # Handle any other exceptions that may occur during command processing
99
+ self.__console.exitError(f"An unexpected error occurred: {str(e)}")
@@ -179,6 +179,7 @@ class Application(Container, IApplication):
179
179
  from orionis.foundation.providers.testing_provider import TestingProvider
180
180
  from orionis.foundation.providers.inspirational_provider import InspirationalProvider
181
181
  from orionis.foundation.providers.executor_provider import ConsoleExecuteProvider
182
+ from orionis.foundation.providers.reactor_provider import ReactorProvider
182
183
 
183
184
  # Core framework providers
184
185
  core_providers = [
@@ -189,7 +190,8 @@ class Application(Container, IApplication):
189
190
  LoggerProvider,
190
191
  TestingProvider,
191
192
  InspirationalProvider,
192
- ConsoleExecuteProvider
193
+ ConsoleExecuteProvider,
194
+ ReactorProvider
193
195
  ]
194
196
 
195
197
  # Register each core provider
@@ -0,0 +1,93 @@
1
+ from orionis.console.contracts.reactor import IReactor
2
+ from orionis.console.core.reactor import Reactor
3
+ from orionis.container.providers.service_provider import ServiceProvider
4
+
5
+ class ReactorProvider(ServiceProvider):
6
+ """
7
+ Service provider for worker management functionality within the Orionis framework.
8
+
9
+ This provider is responsible for registering and configuring the worker management
10
+ service implementation in the application's dependency injection container. It
11
+ establishes the binding between the IReactor interface contract and its concrete
12
+ Reactor implementation, enabling consistent reactor operations throughout the
13
+ application lifecycle.
14
+
15
+ The provider follows the standard service provider pattern, offering both
16
+ registration and boot phases for complete service lifecycle management.
17
+
18
+ Attributes
19
+ ----------
20
+ app : Application
21
+ The main application container instance used for service registration
22
+ and dependency injection management.
23
+
24
+ Notes
25
+ -----
26
+ This provider registers the reactor service with a transient lifetime, ensuring
27
+ that each request for reactor functionality receives a fresh instance. This
28
+ approach is optimal for operations that may maintain temporary state or require
29
+ isolation between different execution contexts.
30
+ """
31
+
32
+ def register(self) -> None:
33
+ """
34
+ Register the reactor management service in the application container.
35
+
36
+ This method binds the IReactor interface to a new instance of the Reactor
37
+ implementation within the application's dependency injection container. The
38
+ service is registered with a transient lifetime, ensuring that each resolution
39
+ yields a new Reactor instance. An alias is provided for convenient retrieval.
40
+
41
+ Parameters
42
+ ----------
43
+ None
44
+
45
+ Returns
46
+ -------
47
+ None
48
+ This method does not return any value. It performs registration
49
+ as a side effect on the application container.
50
+
51
+ Notes
52
+ -----
53
+ - Each call to resolve IReactor will produce a new Reactor instance.
54
+ - No singleton or caching behavior is applied.
55
+ - The alias "x-orionis.console.core.reactor" can be used for explicit lookups.
56
+ """
57
+
58
+ # Register the Reactor service with the application container
59
+ # as a singleton, allowing it to be resolved throughout the application lifecycle
60
+ self.app.singleton(
61
+ IReactor,
62
+ Reactor,
63
+ alias="x-orionis.console.core.reactor"
64
+ )
65
+
66
+ def boot(self) -> None:
67
+ """
68
+ Perform post-registration initialization for the reactor management service.
69
+
70
+ This method is invoked after all services have been registered in the container.
71
+ It provides an opportunity for additional setup, configuration, or initialization
72
+ logic that may depend on other services being available. Currently, this method
73
+ does not perform any actions but serves as a placeholder for future enhancements.
74
+
75
+ Parameters
76
+ ----------
77
+ None
78
+
79
+ Returns
80
+ -------
81
+ None
82
+ This method does not return any value. It only performs initialization
83
+ side effects if required.
84
+
85
+ Notes
86
+ -----
87
+ - Called automatically during the application boot sequence.
88
+ - Intended for cross-service configuration or runtime setup.
89
+ - No initialization is currently required for the reactor service.
90
+ """
91
+
92
+ # No additional initialization required at this time
93
+ pass
@@ -0,0 +1,77 @@
1
+ from orionis.container.providers.service_provider import ServiceProvider
2
+ from orionis.test.contracts.unit_test import IUnitTest
3
+ from orionis.test.core.unit_test import UnitTest
4
+
5
+ class TestingProvider(ServiceProvider):
6
+ """
7
+ Provides comprehensive unit testing environment services for the Orionis framework.
8
+
9
+ This service provider integrates a native unit testing framework into the Orionis
10
+ application ecosystem, enabling advanced testing capabilities with configurable
11
+ execution modes, parallel processing, and persistent result storage. The provider
12
+ registers the testing service as a singleton within the application's dependency
13
+ injection container, making it available throughout the application lifecycle.
14
+
15
+ The TestingProvider handles the complete lifecycle of testing services, from
16
+ initial configuration and test discovery to storage preparation and service
17
+ registration. It supports various testing patterns, execution strategies, and
18
+ reporting mechanisms to accommodate different testing scenarios and requirements.
19
+
20
+ Attributes
21
+ ----------
22
+ app : Application
23
+ The Orionis application container instance that manages service registration,
24
+ configuration access, and dependency injection throughout the framework.
25
+
26
+ Notes
27
+ -----
28
+ This provider follows the Orionis service provider pattern, implementing both
29
+ register() and boot() methods to ensure proper service initialization and
30
+ post-registration setup. The testing service is registered with the interface
31
+ binding IUnitTest and can be resolved using the alias "x-orionis.test.core.unit_test".
32
+
33
+ The provider requires a valid testing configuration section in the application
34
+ configuration, which should include settings for verbosity, execution mode,
35
+ worker configuration, and storage paths.
36
+ """
37
+
38
+ def register(self) -> None:
39
+ """
40
+ Register and configure the unit testing service in the application container.
41
+
42
+ This method loads the testing configuration from the application, instantiates
43
+ and configures a UnitTest service, and registers it as a singleton in the
44
+ dependency injection container. The service is bound to the IUnitTest interface
45
+ and is accessible via the alias "x-orionis.test.core.unit_test".
46
+
47
+ The registration process includes:
48
+ - Retrieving testing configuration from the application settings.
49
+ - Instantiating the UnitTest service with the appropriate configuration.
50
+ - Registering the UnitTest service as a singleton in the container.
51
+ - Binding the service to the IUnitTest interface and alias.
52
+
53
+ Returns
54
+ -------
55
+ None
56
+ This method does not return any value. It performs side effects by
57
+ registering and binding the testing service in the application container.
58
+ """
59
+
60
+ # Register the UnitTest service as a singleton in the application container.
61
+ # The service is bound to the IUnitTest interface and can be resolved using the alias.
62
+ self.app.singleton(IUnitTest, UnitTest, alias="x-orionis.test.core.unit_test")
63
+
64
+ def boot(self) -> None:
65
+ """
66
+ Finalize initialization for the testing provider after service registration.
67
+
68
+ This method is called after the registration phase to allow for any additional
69
+ setup required for the testing environment. In this implementation, no further
70
+ actions are performed during the boot phase.
71
+
72
+ Returns
73
+ -------
74
+ None
75
+ This method does not return any value.
76
+ """
77
+ pass
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.454.0"
8
+ VERSION = "0.456.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -52,6 +52,60 @@ class IUnitTest(ABC):
52
52
  """
53
53
  pass
54
54
 
55
+ @abstractmethod
56
+ def discoverTests(
57
+ self,
58
+ base_path: str | Path,
59
+ folder_path: str | List[str],
60
+ pattern: str,
61
+ test_name_pattern: Optional[str] = None,
62
+ tags: Optional[List[str]] = None
63
+ ) -> 'IUnitTest':
64
+ """
65
+ Discover test cases from specified folders using flexible path discovery.
66
+
67
+ This method provides a convenient way to discover and load test cases from multiple folders
68
+ based on various path specifications. It supports wildcard discovery, single folder loading,
69
+ and multiple folder loading. The method automatically resolves paths relative to the base
70
+ directory and discovers all folders containing files matching the specified pattern.
71
+
72
+ Parameters
73
+ ----------
74
+ base_path : str or Path
75
+ Base directory path for resolving relative folder paths. This serves as the root
76
+ directory from which all folder searches are conducted.
77
+ folder_path : str or list of str
78
+ Specification of folders to search for test cases. Can be:
79
+ - '*' : Discover all folders containing matching files within base_path
80
+ - str : Single folder path relative to base_path
81
+ - list of str : Multiple folder paths relative to base_path
82
+ pattern : str
83
+ File name pattern to match test files, supporting wildcards (* and ?).
84
+ Examples: 'test_*.py', '*_test.py', 'test*.py'
85
+ test_name_pattern : str, optional
86
+ Regular expression pattern to filter test method names. Only tests whose
87
+ names match this pattern will be included. Default is None (no filtering).
88
+ tags : list of str, optional
89
+ List of tags to filter tests. Only tests decorated with matching tags
90
+ will be included. Default is None (no tag filtering).
91
+
92
+ Returns
93
+ -------
94
+ UnitTest
95
+ The current UnitTest instance with discovered tests added to the suite,
96
+ enabling method chaining.
97
+
98
+ Notes
99
+ -----
100
+ - All paths are resolved as absolute paths relative to the base_path
101
+ - When folder_path is '*', the method searches recursively through all subdirectories
102
+ - The method uses the existing discoverTestsInFolder method for actual test discovery
103
+ - Duplicate folders are automatically eliminated using a set data structure
104
+ - The method does not validate the existence of specified folders; validation
105
+ occurs during the actual test discovery process
106
+ """
107
+ pass
108
+
55
109
  @abstractmethod
56
110
  def discoverTestsInFolder(
57
111
  self,
@@ -2,6 +2,7 @@ from orionis.console.output.contracts.console import IConsole
2
2
  from orionis.foundation.contracts.application import IApplication
3
3
  from orionis.test.contracts.kernel import ITestKernel
4
4
  from orionis.test.contracts.unit_test import IUnitTest
5
+ from orionis.foundation.config.testing.entities.testing import Testing
5
6
  from orionis.test.exceptions import OrionisTestConfigException, OrionisTestFailureException
6
7
 
7
8
  class TestKernel(ITestKernel):
@@ -38,8 +39,33 @@ class TestKernel(ITestKernel):
38
39
  f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
39
40
  )
40
41
 
42
+ # Load testing configuration from application config and create Testing instance
43
+ config = Testing(**app.config('testing'))
44
+
41
45
  # Resolve the unit test service from the application container
42
- self.__unit_test: IUnitTest = app.make('x-orionis.test.core.unit_test')
46
+ self.__unit_test: IUnitTest = app.make('x-orionis.test.core.unit_test', app)
47
+
48
+ # Apply configuration settings to the UnitTest instance
49
+ self.__unit_test.configure(
50
+ verbosity=config.verbosity, # Set output verbosity level
51
+ execution_mode=config.execution_mode, # Configure test execution mode
52
+ max_workers=config.max_workers, # Set maximum worker threads for parallel execution
53
+ fail_fast=config.fail_fast, # Enable/disable fail-fast behavior
54
+ print_result=config.print_result, # Control result output printing
55
+ throw_exception=config.throw_exception, # Configure exception throwing behavior
56
+ persistent=config.persistent, # Enable/disable persistent test results
57
+ persistent_driver=config.persistent_driver, # Set persistent storage driver
58
+ web_report=config.web_report # Enable/disable web-based reporting
59
+ )
60
+
61
+ # Discover and load test files based on configuration criteria
62
+ self.__unit_test.discoverTests(
63
+ base_path=config.base_path, # Root directory for test discovery
64
+ folder_path=config.folder_path, # Specific folder path within base_path
65
+ pattern=config.pattern, # File name pattern for test files
66
+ test_name_pattern=config.test_name_pattern, # Pattern for test method names
67
+ tags=config.tags # Tags to filter tests during discovery
68
+ )
43
69
 
44
70
  # Resolve the console service from the application container
45
71
  self.__console: IConsole = app.make('x-orionis.console.output.console')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.454.0
3
+ Version: 0.456.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
@@ -21,9 +21,11 @@ orionis/console/base/command.py
21
21
  orionis/console/base/contracts/__init__.py
22
22
  orionis/console/base/contracts/command.py
23
23
  orionis/console/commands/__init__.py
24
+ orionis/console/commands/help.py
24
25
  orionis/console/commands/version.py
25
26
  orionis/console/contracts/__init__.py
26
27
  orionis/console/contracts/kernel.py
28
+ orionis/console/contracts/reactor.py
27
29
  orionis/console/core/__init__.py
28
30
  orionis/console/core/reactor.py
29
31
  orionis/console/dumper/__init__.py
@@ -187,6 +189,7 @@ orionis/foundation/providers/executor_provider.py
187
189
  orionis/foundation/providers/inspirational_provider.py
188
190
  orionis/foundation/providers/logger_provider.py
189
191
  orionis/foundation/providers/progress_bar_provider.py
192
+ orionis/foundation/providers/reactor_provider.py
190
193
  orionis/foundation/providers/testing_provider.py
191
194
  orionis/foundation/providers/workers_provider.py
192
195
  orionis/metadata/__init__.py
@@ -170,7 +170,7 @@ class TestReflectDependencies(AsyncTestCase):
170
170
  self.assertEqual(dep_user_permissions.type, FakeUserWithPermissions)
171
171
 
172
172
  # Extract and validate the 'permissions' dependency (built-in generic type)
173
- dep_permissions: Argument = method_dependencies.resolved.get('permissions')
173
+ dep_permissions: Argument = method_dependencies.unresolved.get('permissions')
174
174
 
175
175
  # Ensure the built-in type dependency is properly resolved as an Argument instance
176
176
  self.assertIsInstance(dep_permissions, Argument)
@@ -248,10 +248,14 @@ class TestReflectDependencies(AsyncTestCase):
248
248
  dep_x: Argument = callable_dependencies.resolved.get('x')
249
249
 
250
250
  # Verify that the 'x' parameter resolves to its default value of 3
251
- self.assertEqual(dep_x, 3)
251
+ self.assertIsInstance(dep_x, Argument)
252
+ self.assertTrue(dep_x.resolved)
253
+ self.assertEqual(dep_x.default, 3)
252
254
 
253
255
  # Extract and validate the 'y' parameter dependency from resolved dependencies
254
256
  dep_y: Argument = callable_dependencies.resolved.get('y')
255
257
 
256
258
  # Verify that the 'y' parameter resolves to its default value of 4
257
- self.assertEqual(dep_y, 4)
259
+ self.assertIsInstance(dep_y, Argument)
260
+ self.assertTrue(dep_y.resolved)
261
+ self.assertEqual(dep_y.default, 4)
@@ -1007,14 +1007,5 @@ class TestServiceReflectionAbstract(AsyncTestCase):
1007
1007
  """
1008
1008
  reflect = ReflectionAbstract(AbstractFakeClass)
1009
1009
  method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
1010
- self.assertIn('x', method_deps.resolved)
1011
- self.assertIn('y', method_deps.resolved)
1012
- self.assertEqual(method_deps.resolved['x'].class_name, 'int')
1013
- self.assertEqual(method_deps.resolved['y'].class_name, 'int')
1014
- self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
1015
- self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
1016
- self.assertEqual(method_deps.resolved['x'].type, int)
1017
- self.assertEqual(method_deps.resolved['y'].type, int)
1018
- self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
1019
- self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
1020
- self.assertEqual(method_deps.unresolved, [])
1010
+ self.assertIn('x', method_deps.unresolved)
1011
+ self.assertIn('y', method_deps.unresolved)
@@ -948,14 +948,5 @@ class TestServiceReflectionConcrete(AsyncTestCase):
948
948
  """
949
949
  reflect = ReflectionConcrete(FakeClass)
950
950
  method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
951
- self.assertIn('x', method_deps.resolved)
952
- self.assertIn('y', method_deps.resolved)
953
- self.assertEqual(method_deps.resolved['x'].class_name, 'int')
954
- self.assertEqual(method_deps.resolved['y'].class_name, 'int')
955
- self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
956
- self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
957
- self.assertEqual(method_deps.resolved['x'].type, int)
958
- self.assertEqual(method_deps.resolved['y'].type, int)
959
- self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
960
- self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
961
- self.assertEqual(method_deps.unresolved, [])
951
+ self.assertIn('x', method_deps.unresolved)
952
+ self.assertIn('y', method_deps.unresolved)
@@ -1229,14 +1229,5 @@ class TestServiceReflectionInstance(AsyncTestCase):
1229
1229
  """
1230
1230
  reflect = ReflectionInstance(FakeClass())
1231
1231
  method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
1232
- self.assertIn('x', method_deps.resolved)
1233
- self.assertIn('y', method_deps.resolved)
1234
- self.assertEqual(method_deps.resolved['x'].class_name, 'int')
1235
- self.assertEqual(method_deps.resolved['y'].class_name, 'int')
1236
- self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
1237
- self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
1238
- self.assertEqual(method_deps.resolved['x'].type, int)
1239
- self.assertEqual(method_deps.resolved['y'].type, int)
1240
- self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
1241
- self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
1242
- self.assertEqual(method_deps.unresolved, [])
1232
+ self.assertIn('x', method_deps.unresolved)
1233
+ self.assertIn('y', method_deps.unresolved)
@@ -1,25 +0,0 @@
1
- from orionis.console.contracts.kernel import IKernelCLI
2
- from orionis.foundation.contracts.application import IApplication
3
- from orionis.console.exceptions import CLIOrionisValueError
4
-
5
- class KernelCLI(IKernelCLI):
6
-
7
- def __init__(
8
- self,
9
- app: IApplication
10
- ) -> None:
11
-
12
- # Validate that the app is an instance of IApplication
13
- if not isinstance(app, IApplication):
14
- raise CLIOrionisValueError(
15
- f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
16
- )
17
-
18
- def handle(self, args: list) -> None:
19
- """
20
- Handle the command line arguments.
21
-
22
- :param args: List of command line arguments (e.g., sys.argv).
23
- """
24
- # This method should be implemented in subclasses
25
- print(args)