orionis 0.533.0__tar.gz → 0.535.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 (581) hide show
  1. {orionis-0.533.0/orionis.egg-info → orionis-0.535.0}/PKG-INFO +1 -1
  2. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/tasks/schedule.py +79 -93
  3. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/catch.py +5 -3
  4. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/application.py +3 -2
  5. {orionis-0.533.0 → orionis-0.535.0}/orionis/metadata/framework.py +1 -1
  6. orionis-0.535.0/orionis/services/asynchrony/contracts/coroutines.py +76 -0
  7. orionis-0.535.0/orionis/services/asynchrony/coroutines.py +175 -0
  8. {orionis-0.533.0 → orionis-0.535.0/orionis.egg-info}/PKG-INFO +1 -1
  9. {orionis-0.533.0 → orionis-0.535.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +1 -1
  10. orionis-0.533.0/orionis/services/asynchrony/contracts/coroutines.py +0 -28
  11. orionis-0.533.0/orionis/services/asynchrony/coroutines.py +0 -70
  12. {orionis-0.533.0 → orionis-0.535.0}/LICENCE +0 -0
  13. {orionis-0.533.0 → orionis-0.535.0}/MANIFEST.in +0 -0
  14. {orionis-0.533.0 → orionis-0.535.0}/README.md +0 -0
  15. {orionis-0.533.0 → orionis-0.535.0}/orionis/__init__.py +0 -0
  16. {orionis-0.533.0 → orionis-0.535.0}/orionis/app.py +0 -0
  17. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/__init__.py +0 -0
  18. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/args/__init__.py +0 -0
  19. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/args/argument.py +0 -0
  20. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/args/enums/__init__.py +0 -0
  21. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/args/enums/actions.py +0 -0
  22. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/base/__init__.py +0 -0
  23. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/base/command.py +0 -0
  24. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/base/scheduler.py +0 -0
  25. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/base/scheduler_event_listener.py +0 -0
  26. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/__init__.py +0 -0
  27. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/cache.py +0 -0
  28. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/help.py +0 -0
  29. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/make_listener.py +0 -0
  30. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/publisher.py +0 -0
  31. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/scheduler_list.py +0 -0
  32. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/scheduler_work.py +0 -0
  33. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/test.py +0 -0
  34. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/version.py +0 -0
  35. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/commands/workflow.py +0 -0
  36. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/__init__.py +0 -0
  37. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/command.py +0 -0
  38. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/event.py +0 -0
  39. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/kernel.py +0 -0
  40. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/reactor.py +0 -0
  41. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/schedule.py +0 -0
  42. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
  43. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/contracts/scheduler.py +0 -0
  44. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/core/__init__.py +0 -0
  45. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/core/reactor.py +0 -0
  46. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dumper/__init__.py +0 -0
  47. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  48. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dumper/contracts/dump.py +0 -0
  49. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dumper/dump.py +0 -0
  50. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dynamic/__init__.py +0 -0
  51. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  52. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  53. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/dynamic/progress_bar.py +0 -0
  54. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/__init__.py +0 -0
  55. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/all_jobs_removed.py +0 -0
  56. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/event_job.py +0 -0
  57. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/executor_added.py +0 -0
  58. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/executor_removed.py +0 -0
  59. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_added.py +0 -0
  60. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_error.py +0 -0
  61. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_event_data.py +0 -0
  62. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_executed.py +0 -0
  63. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_max_instances.py +0 -0
  64. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_missed.py +0 -0
  65. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_modified.py +0 -0
  66. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_pause.py +0 -0
  67. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_removed.py +0 -0
  68. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_resume.py +0 -0
  69. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_store_added.py +0 -0
  70. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_store_removed.py +0 -0
  71. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/job_submitted.py +0 -0
  72. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/request.py +0 -0
  73. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_error.py +0 -0
  74. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_event_data.py +0 -0
  75. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_paused.py +0 -0
  76. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_resumed.py +0 -0
  77. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
  78. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/entities/scheduler_started.py +0 -0
  79. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/enums/__init__.py +0 -0
  80. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/enums/command.py +0 -0
  81. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/enums/event.py +0 -0
  82. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/enums/listener.py +0 -0
  83. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/exceptions/__init__.py +0 -0
  84. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/exceptions/cli_exception.py +0 -0
  85. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  86. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  87. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  88. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/kernel.py +0 -0
  89. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/__init__.py +0 -0
  90. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/console.py +0 -0
  91. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/contracts/__init__.py +0 -0
  92. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/contracts/console.py +0 -0
  93. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/contracts/executor.py +0 -0
  94. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/enums/__init__.py +0 -0
  95. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/enums/styles.py +0 -0
  96. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/output/executor.py +0 -0
  97. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/request/cli_request.py +0 -0
  98. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/tasks/__init__.py +0 -0
  99. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/tasks/event.py +0 -0
  100. {orionis-0.533.0 → orionis-0.535.0}/orionis/console/tasks/listener.py +0 -0
  101. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/__init__.py +0 -0
  102. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/container.py +0 -0
  103. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/context/__init__.py +0 -0
  104. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/context/manager.py +0 -0
  105. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/context/scope.py +0 -0
  106. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/contracts/__init__.py +0 -0
  107. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/contracts/container.py +0 -0
  108. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/contracts/service_provider.py +0 -0
  109. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/entities/__init__.py +0 -0
  110. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/entities/binding.py +0 -0
  111. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/enums/__init__.py +0 -0
  112. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/enums/lifetimes.py +0 -0
  113. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/exceptions/__init__.py +0 -0
  114. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/exceptions/attribute.py +0 -0
  115. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/exceptions/exception.py +0 -0
  116. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/exceptions/type.py +0 -0
  117. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/exceptions/value.py +0 -0
  118. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/facades/__init__.py +0 -0
  119. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/facades/facade.py +0 -0
  120. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/providers/__init__.py +0 -0
  121. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/providers/service_provider.py +0 -0
  122. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/__init__.py +0 -0
  123. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/implements.py +0 -0
  124. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_abstract_class.py +0 -0
  125. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_callable.py +0 -0
  126. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_concrete_class.py +0 -0
  127. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_instance.py +0 -0
  128. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_not_subclass.py +0 -0
  129. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_subclass.py +0 -0
  130. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/is_valid_alias.py +0 -0
  131. {orionis-0.533.0 → orionis-0.535.0}/orionis/container/validators/lifetime.py +0 -0
  132. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/__init__.py +0 -0
  133. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/base/__init__.py +0 -0
  134. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/base/handler.py +0 -0
  135. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/contracts/__init__.py +0 -0
  136. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/contracts/catch.py +0 -0
  137. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/contracts/handler.py +0 -0
  138. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/entities/__init__.py +0 -0
  139. {orionis-0.533.0 → orionis-0.535.0}/orionis/failure/entities/throwable.py +0 -0
  140. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/__init__.py +0 -0
  141. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/__init__.py +0 -0
  142. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/__init__.py +0 -0
  143. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  144. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/entities/app.py +0 -0
  145. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  146. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  147. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  148. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/auth/__init__.py +0 -0
  149. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  150. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  151. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/__init__.py +0 -0
  152. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  153. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  154. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  155. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  156. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  157. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  158. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cors/__init__.py +0 -0
  159. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  160. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  161. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/__init__.py +0 -0
  162. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  163. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  164. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/database.py +0 -0
  165. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  166. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  167. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  168. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  169. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  170. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  171. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  172. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  173. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  174. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  175. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  176. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  177. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  178. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  179. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  180. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  181. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  182. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  183. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  184. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  185. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  186. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  187. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  188. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/__init__.py +0 -0
  189. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  190. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  191. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  192. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  193. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  194. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  195. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  196. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  197. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  198. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  199. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  200. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  201. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  202. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  203. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/__init__.py +0 -0
  204. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  205. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  206. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  207. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  208. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  209. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/__init__.py +0 -0
  210. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  211. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  212. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  213. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  214. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  215. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  216. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/roots/__init__.py +0 -0
  217. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/roots/paths.py +0 -0
  218. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/__init__.py +0 -0
  219. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  220. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/entities/session.py +0 -0
  221. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  222. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  223. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  224. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  225. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/startup.py +0 -0
  226. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/__init__.py +0 -0
  227. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  228. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  229. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  230. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  231. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  232. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  233. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/contracts/__init__.py +0 -0
  234. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/contracts/application.py +0 -0
  235. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/contracts/config.py +0 -0
  236. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/exceptions/__init__.py +0 -0
  237. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/exceptions/integrity.py +0 -0
  238. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/exceptions/runtime.py +0 -0
  239. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/exceptions/type.py +0 -0
  240. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/exceptions/value.py +0 -0
  241. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/__init__.py +0 -0
  242. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/catch_provider.py +0 -0
  243. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/console_provider.py +0 -0
  244. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/directory_provider.py +0 -0
  245. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  246. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/executor_provider.py +0 -0
  247. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  248. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/logger_provider.py +0 -0
  249. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
  250. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  251. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/reactor_provider.py +0 -0
  252. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
  253. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/testing_provider.py +0 -0
  254. {orionis-0.533.0 → orionis-0.535.0}/orionis/foundation/providers/workers_provider.py +0 -0
  255. {orionis-0.533.0 → orionis-0.535.0}/orionis/metadata/__init__.py +0 -0
  256. {orionis-0.533.0 → orionis-0.535.0}/orionis/metadata/package.py +0 -0
  257. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/__init__.py +0 -0
  258. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/asynchrony/__init__.py +0 -0
  259. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  260. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  261. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  262. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/__init__.py +0 -0
  263. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/contracts/__init__.py +0 -0
  264. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/contracts/caster.py +0 -0
  265. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/contracts/env.py +0 -0
  266. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/core/__init__.py +0 -0
  267. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/core/dot_env.py +0 -0
  268. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  269. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/dynamic/caster.py +0 -0
  270. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/enums/__init__.py +0 -0
  271. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/enums/value_type.py +0 -0
  272. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/env.py +0 -0
  273. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  274. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/exceptions/exception.py +0 -0
  275. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/exceptions/value.py +0 -0
  276. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/helpers/__init__.py +0 -0
  277. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/helpers/functions.py +0 -0
  278. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/key/__init__.py +0 -0
  279. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/key/key_generator.py +0 -0
  280. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/validators/__init__.py +0 -0
  281. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/validators/key_name.py +0 -0
  282. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/environment/validators/types.py +0 -0
  283. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/file/__init__.py +0 -0
  284. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/file/contracts/__init__.py +0 -0
  285. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/file/contracts/directory.py +0 -0
  286. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/file/directory.py +0 -0
  287. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/inspirational/__init__.py +0 -0
  288. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
  289. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  290. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/inspirational/inspire.py +0 -0
  291. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/inspirational/quotes.py +0 -0
  292. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/__init__.py +0 -0
  293. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  294. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  295. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  296. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  297. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/callables/__init__.py +0 -0
  298. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  299. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  300. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/callables/reflection.py +0 -0
  301. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  302. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  303. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  304. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  305. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dataclass/__init__.py +0 -0
  306. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dataclass/attributes.py +0 -0
  307. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  308. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  309. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  310. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  311. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  312. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  313. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  314. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  315. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  316. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/exceptions/type.py +0 -0
  317. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/exceptions/value.py +0 -0
  318. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/instances/__init__.py +0 -0
  319. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  320. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  321. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/instances/reflection.py +0 -0
  322. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/modules/__init__.py +0 -0
  323. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  324. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  325. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/modules/reflection.py +0 -0
  326. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/objects/__init__.py +0 -0
  327. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/objects/types.py +0 -0
  328. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/introspection/reflection.py +0 -0
  329. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/__init__.py +0 -0
  330. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/contracts/__init__.py +0 -0
  331. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/contracts/log_service.py +0 -0
  332. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/exceptions/__init__.py +0 -0
  333. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/exceptions/runtime.py +0 -0
  334. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/handlers/__init__.py +0 -0
  335. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/handlers/filename.py +0 -0
  336. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  337. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  338. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/log/log_service.py +0 -0
  339. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/__init__.py +0 -0
  340. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/contracts/__init__.py +0 -0
  341. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/contracts/imports.py +0 -0
  342. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/contracts/workers.py +0 -0
  343. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/imports.py +0 -0
  344. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/runtime/__init__.py +0 -0
  345. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/runtime/imports.py +0 -0
  346. {orionis-0.533.0 → orionis-0.535.0}/orionis/services/system/workers.py +0 -0
  347. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/__init__.py +0 -0
  348. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/entities/__init__.py +0 -0
  349. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/entities/base.py +0 -0
  350. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/__init__.py +0 -0
  351. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/application.py +0 -0
  352. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/console.py +0 -0
  353. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/dumper.py +0 -0
  354. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/executor.py +0 -0
  355. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/inspire.py +0 -0
  356. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/logger.py +0 -0
  357. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/performance_counter.py +0 -0
  358. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/progress_bar.py +0 -0
  359. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/reactor.py +0 -0
  360. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/testing.py +0 -0
  361. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/facades/workers.py +0 -0
  362. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/__init__.py +0 -0
  363. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  364. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  365. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  366. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  367. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/formatter/serializer.py +0 -0
  368. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/patterns/__init__.py +0 -0
  369. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  370. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/patterns/singleton/meta.py +0 -0
  371. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/performance/__init__.py +0 -0
  372. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/performance/contracts/__init__.py +0 -0
  373. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/performance/contracts/counter.py +0 -0
  374. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/performance/counter.py +0 -0
  375. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/__init__.py +0 -0
  376. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/contracts/__init__.py +0 -0
  377. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/contracts/std.py +0 -0
  378. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  379. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/exceptions/value.py +0 -0
  380. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/standard/std.py +0 -0
  381. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/wrapper/__init__.py +0 -0
  382. {orionis-0.533.0 → orionis-0.535.0}/orionis/support/wrapper/dot_dict.py +0 -0
  383. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/__init__.py +0 -0
  384. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/cases/__init__.py +0 -0
  385. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/cases/asynchronous.py +0 -0
  386. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/cases/synchronous.py +0 -0
  387. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/__init__.py +0 -0
  388. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/dumper.py +0 -0
  389. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/kernel.py +0 -0
  390. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/logs.py +0 -0
  391. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/printer.py +0 -0
  392. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/render.py +0 -0
  393. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/test_result.py +0 -0
  394. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/contracts/unit_test.py +0 -0
  395. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/core/__init__.py +0 -0
  396. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/core/unit_test.py +0 -0
  397. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/entities/__init__.py +0 -0
  398. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/entities/result.py +0 -0
  399. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/enums/__init__.py +0 -0
  400. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/enums/status.py +0 -0
  401. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/__init__.py +0 -0
  402. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/config.py +0 -0
  403. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/failure.py +0 -0
  404. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/persistence.py +0 -0
  405. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/runtime.py +0 -0
  406. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/exceptions/value.py +0 -0
  407. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/kernel.py +0 -0
  408. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/output/__init__.py +0 -0
  409. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/output/dumper.py +0 -0
  410. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/output/printer.py +0 -0
  411. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/records/__init__.py +0 -0
  412. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/records/logs.py +0 -0
  413. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/__init__.py +0 -0
  414. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/base_path.py +0 -0
  415. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/execution_mode.py +0 -0
  416. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/fail_fast.py +0 -0
  417. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/folder_path.py +0 -0
  418. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/module_name.py +0 -0
  419. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/name_pattern.py +0 -0
  420. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/pattern.py +0 -0
  421. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/persistent.py +0 -0
  422. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/persistent_driver.py +0 -0
  423. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/print_result.py +0 -0
  424. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/tags.py +0 -0
  425. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/throw_exception.py +0 -0
  426. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/verbosity.py +0 -0
  427. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/web_report.py +0 -0
  428. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/validators/workers.py +0 -0
  429. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/view/__init__.py +0 -0
  430. {orionis-0.533.0 → orionis-0.535.0}/orionis/test/view/render.py +0 -0
  431. {orionis-0.533.0 → orionis-0.535.0}/orionis.egg-info/SOURCES.txt +0 -0
  432. {orionis-0.533.0 → orionis-0.535.0}/orionis.egg-info/dependency_links.txt +0 -0
  433. {orionis-0.533.0 → orionis-0.535.0}/orionis.egg-info/requires.txt +0 -0
  434. {orionis-0.533.0 → orionis-0.535.0}/orionis.egg-info/top_level.txt +0 -0
  435. {orionis-0.533.0 → orionis-0.535.0}/orionis.egg-info/zip-safe +0 -0
  436. {orionis-0.533.0 → orionis-0.535.0}/setup.cfg +0 -0
  437. {orionis-0.533.0 → orionis-0.535.0}/setup.py +0 -0
  438. {orionis-0.533.0 → orionis-0.535.0}/tests/container/__init__.py +0 -0
  439. {orionis-0.533.0 → orionis-0.535.0}/tests/container/context/__init__.py +0 -0
  440. {orionis-0.533.0 → orionis-0.535.0}/tests/container/context/test_manager.py +0 -0
  441. {orionis-0.533.0 → orionis-0.535.0}/tests/container/context/test_scope.py +0 -0
  442. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/__init__.py +0 -0
  443. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/test_advanced_async.py +0 -0
  444. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/test_async_optimizations.py +0 -0
  445. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/test_container.py +0 -0
  446. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/test_singleton.py +0 -0
  447. {orionis-0.533.0 → orionis-0.535.0}/tests/container/core/test_thread_safety.py +0 -0
  448. {orionis-0.533.0 → orionis-0.535.0}/tests/container/entities/__init__.py +0 -0
  449. {orionis-0.533.0 → orionis-0.535.0}/tests/container/entities/test_binding.py +0 -0
  450. {orionis-0.533.0 → orionis-0.535.0}/tests/container/enums/__init__.py +0 -0
  451. {orionis-0.533.0 → orionis-0.535.0}/tests/container/enums/test_lifetimes.py +0 -0
  452. {orionis-0.533.0 → orionis-0.535.0}/tests/container/facades/__init__.py +0 -0
  453. {orionis-0.533.0 → orionis-0.535.0}/tests/container/facades/test_facade.py +0 -0
  454. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/__init__.py +0 -0
  455. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/mock_advanced_async.py +0 -0
  456. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
  457. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
  458. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  459. {orionis-0.533.0 → orionis-0.535.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  460. {orionis-0.533.0 → orionis-0.535.0}/tests/container/providers/__init__.py +0 -0
  461. {orionis-0.533.0 → orionis-0.535.0}/tests/container/providers/test_providers.py +0 -0
  462. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/__init__.py +0 -0
  463. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_implements.py +0 -0
  464. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  465. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_callable.py +0 -0
  466. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  467. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_instance.py +0 -0
  468. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  469. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_subclass.py +0 -0
  470. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  471. {orionis-0.533.0 → orionis-0.535.0}/tests/container/validators/test_lifetime.py +0 -0
  472. {orionis-0.533.0 → orionis-0.535.0}/tests/example/__init__.py +0 -0
  473. {orionis-0.533.0 → orionis-0.535.0}/tests/example/test_example.py +0 -0
  474. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/__init__.py +0 -0
  475. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/__init__.py +0 -0
  476. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/app/__init__.py +0 -0
  477. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  478. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/auth/__init__.py +0 -0
  479. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  480. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cache/__init__.py +0 -0
  481. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  482. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  483. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  484. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cors/__init__.py +0 -0
  485. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  486. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/__init__.py +0 -0
  487. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  488. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  489. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  490. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  491. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  492. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  493. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  494. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  495. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  496. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  497. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  498. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  499. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/__init__.py +0 -0
  500. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  501. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  502. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  503. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  504. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  505. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  506. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  507. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  508. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/mail/__init__.py +0 -0
  509. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  510. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  511. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  512. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  513. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/queue/__init__.py +0 -0
  514. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  515. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  516. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  517. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/root/__init__.py +0 -0
  518. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  519. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/session/__init__.py +0 -0
  520. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  521. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/startup/__init__.py +0 -0
  522. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  523. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/testing/__init__.py +0 -0
  524. {orionis-0.533.0 → orionis-0.535.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  525. {orionis-0.533.0 → orionis-0.535.0}/tests/metadata/__init__.py +0 -0
  526. {orionis-0.533.0 → orionis-0.535.0}/tests/metadata/test_metadata_framework.py +0 -0
  527. {orionis-0.533.0 → orionis-0.535.0}/tests/metadata/test_metadata_package.py +0 -0
  528. {orionis-0.533.0 → orionis-0.535.0}/tests/services/__init__.py +0 -0
  529. {orionis-0.533.0 → orionis-0.535.0}/tests/services/asynchrony/__init__.py +0 -0
  530. {orionis-0.533.0 → orionis-0.535.0}/tests/services/environment/__init__.py +0 -0
  531. {orionis-0.533.0 → orionis-0.535.0}/tests/services/environment/test_services_environment.py +0 -0
  532. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/__init__.py +0 -0
  533. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/__init__.py +0 -0
  534. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
  535. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  536. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  537. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  538. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
  539. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/__init__.py +0 -0
  540. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
  541. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  542. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
  543. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  544. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
  545. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
  546. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  547. {orionis-0.533.0 → orionis-0.535.0}/tests/services/introspection/test_reflection.py +0 -0
  548. {orionis-0.533.0 → orionis-0.535.0}/tests/services/log/__init__.py +0 -0
  549. {orionis-0.533.0 → orionis-0.535.0}/tests/services/log/test_log.py +0 -0
  550. {orionis-0.533.0 → orionis-0.535.0}/tests/services/system/__init__.py +0 -0
  551. {orionis-0.533.0 → orionis-0.535.0}/tests/services/system/test_services_system_imports.py +0 -0
  552. {orionis-0.533.0 → orionis-0.535.0}/tests/services/system/test_services_system_workers.py +0 -0
  553. {orionis-0.533.0 → orionis-0.535.0}/tests/support/__init__.py +0 -0
  554. {orionis-0.533.0 → orionis-0.535.0}/tests/support/entities/__init__.py +0 -0
  555. {orionis-0.533.0 → orionis-0.535.0}/tests/support/entities/mock_dataclass.py +0 -0
  556. {orionis-0.533.0 → orionis-0.535.0}/tests/support/entities/test_base.py +0 -0
  557. {orionis-0.533.0 → orionis-0.535.0}/tests/support/patterns/__init__.py +0 -0
  558. {orionis-0.533.0 → orionis-0.535.0}/tests/support/patterns/singleton/__init__.py +0 -0
  559. {orionis-0.533.0 → orionis-0.535.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  560. {orionis-0.533.0 → orionis-0.535.0}/tests/support/standard/__init__.py +0 -0
  561. {orionis-0.533.0 → orionis-0.535.0}/tests/support/standard/test_services_std.py +0 -0
  562. {orionis-0.533.0 → orionis-0.535.0}/tests/support/wrapper/__init__.py +0 -0
  563. {orionis-0.533.0 → orionis-0.535.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  564. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/__init__.py +0 -0
  565. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/cases/__init__.py +0 -0
  566. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  567. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  568. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/entities/__init__.py +0 -0
  569. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/entities/test_testing_result.py +0 -0
  570. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/enums/__init__.py +0 -0
  571. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/enums/test_testing_status.py +0 -0
  572. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/output/__init__.py +0 -0
  573. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/output/test_testing_dumper.py +0 -0
  574. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/output/test_testing_printer.py +0 -0
  575. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/records/__init__.py +0 -0
  576. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/records/test_testing_records.py +0 -0
  577. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/test_testing_unit.py +0 -0
  578. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/validators/__init__.py +0 -0
  579. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/validators/test_testing_validators.py +0 -0
  580. {orionis-0.533.0 → orionis-0.535.0}/tests/testing/view/__init__.py +0 -0
  581. {orionis-0.533.0 → orionis-0.535.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.533.0
3
+ Version: 0.535.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
@@ -37,6 +37,7 @@ from orionis.console.exceptions import CLIOrionisRuntimeError
37
37
  from orionis.console.exceptions.cli_orionis_value_error import CLIOrionisValueError
38
38
  from orionis.failure.contracts.catch import ICatch
39
39
  from orionis.foundation.contracts.application import IApplication
40
+ from orionis.services.asynchrony.coroutines import Coroutine
40
41
  from orionis.services.log.contracts.log_service import ILogger
41
42
 
42
43
  class Schedule(ISchedule):
@@ -478,44 +479,13 @@ class Schedule(ISchedule):
478
479
  # If is Callable
479
480
  if callable(listener):
480
481
 
482
+ # Invoke the listener, handling both coroutine and regular functions
481
483
  try:
482
484
 
483
- # If the listener is a coroutine, handle it properly
484
- if asyncio.iscoroutinefunction(listener):
485
+ # Use Coroutine to handle both sync and async listeners
486
+ Coroutine(listener).invoke(event_data, self)
485
487
 
486
- try:
487
-
488
- # Try to get the current running event loop
489
- loop = asyncio.get_running_loop()
490
-
491
- # Schedule the coroutine as a task in the current loop
492
- loop.create_task(listener(event_data, self))
493
-
494
- except RuntimeError:
495
-
496
- # No running event loop, create a new one
497
- try:
498
-
499
- # Create and run the coroutine in a new event loop
500
- asyncio.run(listener(event_data, self))
501
-
502
- except Exception as e:
503
-
504
- # Handle exceptions during coroutine execution
505
- error_msg = f"Failed to run async listener for '{scheduler_event}': {str(e)}"
506
- self.__logger.error(error_msg)
507
- raise CLIOrionisRuntimeError(error_msg) from e
508
-
509
- else:
510
-
511
- # Call the regular listener function directly
512
- listener(event_data, self)
513
-
514
- except Exception as e:
515
-
516
- # Re-raise CLIOrionisRuntimeError exceptions
517
- if isinstance(e, CLIOrionisRuntimeError):
518
- raise e
488
+ except BaseException as e:
519
489
 
520
490
  # Construct and log error message
521
491
  error_msg = f"An error occurred while invoking the listener for event '{scheduler_event}': {str(e)}"
@@ -588,45 +558,14 @@ class Schedule(ISchedule):
588
558
  # Retrieve the method from the listener
589
559
  listener_method = getattr(listener, scheduler_event)
590
560
 
561
+ # Invoke the listener method, handling both coroutine and regular functions
591
562
  try:
592
563
 
593
- # If the listener_method is a coroutine, handle it properly
594
- if asyncio.iscoroutinefunction(listener_method):
595
-
596
- try:
597
-
598
- # Try to get the current running event loop
599
- loop = asyncio.get_running_loop()
600
-
601
- # Schedule the coroutine as a task in the current loop
602
- loop.create_task(listener_method(event_data, self))
603
-
604
- except RuntimeError:
605
-
606
- # No running event loop, create a new one
607
- try:
608
-
609
- # Create and run the coroutine in a new event loop
610
- asyncio.run(listener_method(event_data, self))
611
-
612
- except Exception as e:
613
-
614
- # Handle exceptions during coroutine execution
615
- error_msg = f"Failed to run async listener_method for '{scheduler_event}': {str(e)}"
616
- self.__logger.error(error_msg)
617
- raise CLIOrionisRuntimeError(error_msg) from e
618
-
619
- else:
620
-
621
- # Call the regular listener_method function directly
622
- listener_method(event_data, self)
564
+ # Use Coroutine to handle both sync and async listener methods
565
+ Coroutine(listener_method).invoke(event_data, self)
623
566
 
624
567
  except Exception as e:
625
568
 
626
- # Re-raise CLIOrionisRuntimeError exceptions
627
- if isinstance(e, CLIOrionisRuntimeError):
628
- raise e
629
-
630
569
  # Construct and log error message
631
570
  error_msg = f"An error occurred while invoking the listener_method for event '{scheduler_event}': {str(e)}"
632
571
  self.__logger.error(error_msg)
@@ -1081,52 +1020,99 @@ class Schedule(ISchedule):
1081
1020
  func: Callable[..., Awaitable[Any]]
1082
1021
  ) -> Callable[..., Any]:
1083
1022
  """
1084
- Wrap an asynchronous function to be called in a synchronous context.
1023
+ Wrap an asynchronous function to be executed in a synchronous context.
1085
1024
 
1086
- This method takes an asynchronous function (a coroutine) and returns a synchronous
1087
- wrapper function that can be called in a non-async context. The wrapper function
1088
- ensures that the asynchronous function is executed within the appropriate event loop.
1025
+ This method creates a synchronous wrapper around an asynchronous function (coroutine)
1026
+ that enables its execution within non-async contexts. The wrapper leverages the
1027
+ Coroutine utility class to handle the complexities of asyncio event loop management
1028
+ and provides proper error handling with detailed logging and custom exception
1029
+ propagation.
1030
+
1031
+ The wrapper is particularly useful when integrating asynchronous functions with
1032
+ synchronous APIs or frameworks that do not natively support async operations,
1033
+ such as the APScheduler job execution environment.
1089
1034
 
1090
1035
  Parameters
1091
1036
  ----------
1092
1037
  func : Callable[..., Awaitable[Any]]
1093
- The asynchronous function (coroutine) to be wrapped. This function should be
1094
- defined using the `async def` syntax and return an awaitable object.
1038
+ The asynchronous function (coroutine) to be wrapped. This function must be
1039
+ defined using the `async def` syntax and return an awaitable object. The
1040
+ function can accept any number of positional and keyword arguments.
1095
1041
 
1096
1042
  Returns
1097
1043
  -------
1098
1044
  Callable[..., Any]
1099
- A synchronous wrapper function that can be called in a non-async context.
1100
- When invoked, this wrapper will execute the original asynchronous function
1101
- within the appropriate event loop.
1045
+ A synchronous wrapper function that executes the original asynchronous
1046
+ function and returns its result. The wrapper function accepts the same
1047
+ arguments as the original async function and forwards them appropriately.
1048
+ The return type depends on what the wrapped asynchronous function returns.
1102
1049
 
1103
1050
  Raises
1104
1051
  ------
1105
1052
  CLIOrionisRuntimeError
1106
- If the provided `func` is not an asynchronous function or execution fails.
1053
+ If the asynchronous function execution fails or if the provided `func`
1054
+ parameter is not a valid asynchronous function. The original exception
1055
+ is wrapped to provide additional context for debugging.
1056
+
1057
+ Notes
1058
+ -----
1059
+ This method relies on the Coroutine utility class from the orionis.services.asynchrony
1060
+ module to handle the execution of the wrapped asynchronous function. The wrapper
1061
+ uses the instance logger for comprehensive error reporting and debugging information.
1107
1062
  """
1108
1063
 
1109
1064
  def sync_wrapper(*args, **kwargs) -> Any:
1065
+ """
1066
+ Synchronous wrapper function that executes asynchronous functions in a thread-safe manner.
1067
+
1068
+ This wrapper provides a uniform interface for executing asynchronous functions within
1069
+ synchronous contexts by leveraging the Coroutine utility class. It handles the complexity
1070
+ of managing async/await patterns and provides proper error handling with detailed logging
1071
+ and custom exception propagation.
1072
+
1073
+ The wrapper is particularly useful when integrating asynchronous functions with
1074
+ synchronous APIs or frameworks that do not natively support async operations.
1075
+
1076
+ Parameters
1077
+ ----------
1078
+ *args : tuple
1079
+ Variable length argument list to pass to the wrapped asynchronous function.
1080
+ These arguments are forwarded directly to the original function.
1081
+ **kwargs : dict
1082
+ Arbitrary keyword arguments to pass to the wrapped asynchronous function.
1083
+ These keyword arguments are forwarded directly to the original function.
1084
+
1085
+ Returns
1086
+ -------
1087
+ Any
1088
+ The return value from the executed asynchronous function. The type depends
1089
+ on what the wrapped function returns and can be any Python object.
1090
+
1091
+ Raises
1092
+ ------
1093
+ CLIOrionisRuntimeError
1094
+ When the asynchronous function execution fails, wrapping the original
1095
+ exception with additional context and error details for better debugging.
1096
+
1097
+ Notes
1098
+ -----
1099
+ This function relies on the Coroutine utility class to handle the execution
1100
+ of the wrapped asynchronous function and uses the instance logger for comprehensive
1101
+ error reporting and debugging information.
1102
+ """
1110
1103
 
1111
1104
  try:
1112
-
1113
- # Try to get the current event loop
1114
- try:
1115
-
1116
- # If we're already in an event loop, create a task
1117
- loop = asyncio.get_running_loop()
1118
- task = loop.create_task(func(*args, **kwargs))
1119
- return task
1120
-
1121
- except RuntimeError:
1122
-
1123
- # No running loop, so we can run the coroutine directly
1124
- return asyncio.run(func(*args, **kwargs))
1105
+ # Execute the asynchronous function using the Coroutine utility class
1106
+ # The Coroutine class handles the event loop management and async execution
1107
+ return Coroutine(func).invoke(*args, **kwargs)
1125
1108
 
1126
1109
  except Exception as e:
1127
1110
 
1128
- # Log the error and re-raise
1111
+ # Log the error with detailed information for debugging purposes
1129
1112
  self.__logger.error(f"Error executing async function: {str(e)}")
1113
+
1114
+ # Re-raise the exception wrapped in a custom exception type
1115
+ # This provides better error context and maintains the original stack trace
1130
1116
  raise CLIOrionisRuntimeError(f"Failed to execute async function: {str(e)}") from e
1131
1117
 
1132
1118
  # Return the synchronous wrapper function
@@ -1,9 +1,11 @@
1
1
  from typing import Any
2
2
  from orionis.console.kernel import KernelCLI
3
3
  from orionis.console.output.contracts.console import IConsole
4
+ from orionis.console.tasks.schedule import Schedule
4
5
  from orionis.failure.contracts.catch import ICatch
5
6
  from orionis.failure.contracts.handler import IBaseExceptionHandler
6
7
  from orionis.foundation.contracts.application import IApplication
8
+ from orionis.services.asynchrony.coroutines import Coroutine
7
9
  from orionis.services.log.contracts.log_service import ILogger
8
10
  import asyncio
9
11
 
@@ -135,7 +137,7 @@ class Catch(ICatch):
135
137
  )
136
138
 
137
139
  # Check if the kernel is of type `KernelCLI` or `Any`
138
- if isinstance(kernel, KernelCLI) or isinstance(kernel, Any):
140
+ if isinstance(kernel, KernelCLI) or isinstance(kernel, Schedule):
139
141
 
140
142
  # Check if the `renderCLI` method is a coroutine function
141
143
  if asyncio.iscoroutinefunction(self.__exception_handler.renderCLI):
@@ -158,5 +160,5 @@ class Catch(ICatch):
158
160
  console=self.__console
159
161
  )
160
162
 
161
- # Run the handler
162
- asyncio.run(handle())
163
+ # Execute the exception handling logic using the Coroutine wrapper
164
+ Coroutine(handle()).run()
@@ -24,6 +24,7 @@ from orionis.foundation.config.testing.entities.testing import Testing
24
24
  from orionis.foundation.contracts.application import IApplication
25
25
  from orionis.foundation.exceptions import OrionisTypeError, OrionisRuntimeError, OrionisValueError
26
26
  from orionis.foundation.providers.logger_provider import LoggerProvider
27
+ from orionis.services.asynchrony.coroutines import Coroutine
27
28
  from orionis.services.log.contracts.log_service import ILogger
28
29
 
29
30
  class Application(Container, IApplication):
@@ -342,7 +343,7 @@ class Application(Container, IApplication):
342
343
  # Register the provider in the container
343
344
  # Check if register is a coroutine function
344
345
  if asyncio.iscoroutinefunction(class_provider.register):
345
- asyncio.run(class_provider.register())
346
+ Coroutine(class_provider.register).run()
346
347
  else:
347
348
  class_provider.register()
348
349
 
@@ -379,7 +380,7 @@ class Application(Container, IApplication):
379
380
  if hasattr(provider, 'boot') and callable(getattr(provider, 'boot')):
380
381
  # Check if boot is a coroutine function
381
382
  if asyncio.iscoroutinefunction(provider.boot):
382
- asyncio.run(provider.boot())
383
+ Coroutine(provider.boot).run()
383
384
  else:
384
385
  provider.boot()
385
386
 
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.533.0"
8
+ VERSION = "0.535.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -0,0 +1,76 @@
1
+ from abc import ABC, abstractmethod
2
+ import asyncio
3
+ from typing import TypeVar, Union
4
+
5
+ T = TypeVar("T")
6
+
7
+ class ICoroutine(ABC):
8
+
9
+ @abstractmethod
10
+ def invoke(self, *args, **kwargs) -> Union[T, asyncio.Task, None]:
11
+ """
12
+ Invoke the callable coroutine function with the provided arguments.
13
+
14
+ This method executes a callable coroutine function or regular function with the given
15
+ arguments and keyword arguments. It automatically detects the execution context and
16
+ handles both synchronous and asynchronous execution appropriately.
17
+
18
+ Parameters
19
+ ----------
20
+ *args : tuple
21
+ Positional arguments to pass to the callable function.
22
+ **kwargs : dict
23
+ Keyword arguments to pass to the callable function.
24
+
25
+ Returns
26
+ -------
27
+ Union[T, asyncio.Task, None]
28
+ - T: The result of the coroutine if executed synchronously
29
+ - asyncio.Task: A task object if scheduled for asynchronous execution
30
+ - None: If the callable is not a coroutine function
31
+
32
+ Raises
33
+ ------
34
+ OrionisCoroutineException
35
+ If an error occurs during coroutine execution.
36
+ RuntimeError
37
+ If an error occurs during callable execution that is not coroutine-related.
38
+
39
+ Notes
40
+ -----
41
+ - Only callable objects can be invoked with this method
42
+ - For coroutine functions, execution context is automatically detected
43
+ - Non-coroutine callables are executed directly and return None
44
+ - Exceptions are wrapped with appropriate context information
45
+
46
+ Examples
47
+ --------
48
+ >>> async def my_coro(x, y):
49
+ ... return x + y
50
+ >>> coro = Coroutine(my_coro)
51
+ >>> result = coro.invoke(1, 2) # Returns Task or result depending on context
52
+ """
53
+ pass
54
+
55
+ @abstractmethod
56
+ def run(self) -> Union[T, asyncio.Future]:
57
+ """
58
+ Executes the wrapped coroutine, adapting to the current event loop context.
59
+
60
+ Returns
61
+ -------
62
+ T or asyncio.Future
63
+ The result of the coroutine if executed synchronously, or an asyncio.Future if scheduled asynchronously.
64
+
65
+ Raises
66
+ ------
67
+ RuntimeError
68
+ If the coroutine cannot be executed due to event loop issues.
69
+
70
+ Notes
71
+ -----
72
+ - If called outside an active event loop, the coroutine is executed synchronously and its result is returned.
73
+ - If called within an active event loop, the coroutine is scheduled for asynchronous execution and a Future is returned.
74
+ - The method automatically detects the execution context and chooses the appropriate execution strategy.
75
+ """
76
+ pass
@@ -0,0 +1,175 @@
1
+ import asyncio
2
+ from typing import Any, Callable, Coroutine as TypingCoroutine, TypeVar, Union
3
+ from orionis.services.asynchrony.contracts.coroutines import ICoroutine
4
+ from orionis.services.asynchrony.exceptions import OrionisCoroutineException
5
+ from orionis.services.introspection.objects.types import Type
6
+
7
+ T = TypeVar("T")
8
+
9
+ class Coroutine(ICoroutine):
10
+
11
+ def __init__(self, func: Union[TypingCoroutine[Any, Any, T], Callable[..., TypingCoroutine[Any, Any, T]]]) -> None:
12
+ """
13
+ Initialize a Coroutine wrapper for managing and executing coroutine objects.
14
+
15
+ This constructor accepts either a coroutine object directly or a callable that
16
+ returns a coroutine when invoked. The wrapped coroutine can later be executed
17
+ using the run() method with automatic context detection.
18
+
19
+ Parameters
20
+ ----------
21
+ func : Union[TypingCoroutine[Any, Any, T], Callable[..., TypingCoroutine[Any, Any, T]]]
22
+ The coroutine object to be wrapped and managed, or a callable that returns
23
+ a coroutine. This will be stored internally for later execution.
24
+
25
+ Returns
26
+ -------
27
+ None
28
+ This is a constructor method and does not return any value.
29
+
30
+ Notes
31
+ -----
32
+ - The coroutine type validation is performed during execution in the run() method,
33
+ not during initialization.
34
+ - Both coroutine objects and coroutine functions are accepted as valid input.
35
+ """
36
+
37
+ # Store the coroutine object or callable for later execution
38
+ self.__func = func
39
+
40
+ def invoke(self, *args, **kwargs) -> Union[T, asyncio.Task, None]:
41
+ """
42
+ Invoke the callable coroutine function with the provided arguments.
43
+
44
+ This method executes a callable coroutine function or regular function with the given
45
+ arguments and keyword arguments. It automatically detects the execution context and
46
+ handles both synchronous and asynchronous execution appropriately.
47
+
48
+ Parameters
49
+ ----------
50
+ *args : tuple
51
+ Positional arguments to pass to the callable function.
52
+ **kwargs : dict
53
+ Keyword arguments to pass to the callable function.
54
+
55
+ Returns
56
+ -------
57
+ Union[T, asyncio.Task, None]
58
+ - T: The result of the coroutine if executed synchronously
59
+ - asyncio.Task: A task object if scheduled for asynchronous execution
60
+ - None: If the callable is not a coroutine function
61
+
62
+ Raises
63
+ ------
64
+ OrionisCoroutineException
65
+ If an error occurs during coroutine execution.
66
+ RuntimeError
67
+ If an error occurs during callable execution that is not coroutine-related.
68
+
69
+ Notes
70
+ -----
71
+ - Only callable objects can be invoked with this method
72
+ - For coroutine functions, execution context is automatically detected
73
+ - Non-coroutine callables are executed directly and return None
74
+ - Exceptions are wrapped with appropriate context information
75
+
76
+ Examples
77
+ --------
78
+ >>> async def my_coro(x, y):
79
+ ... return x + y
80
+ >>> coro = Coroutine(my_coro)
81
+ >>> result = coro.invoke(1, 2) # Returns Task or result depending on context
82
+ """
83
+ if not callable(self.__func):
84
+ raise OrionisCoroutineException(
85
+ f"Cannot invoke non-callable object of type {type(self.__func).__name__}"
86
+ )
87
+
88
+ try:
89
+
90
+ # Check if the callable is a coroutine function
91
+ if asyncio.iscoroutinefunction(self.__func):
92
+
93
+ # Create the coroutine object
94
+ coroutine_obj = self.__func(*args, **kwargs)
95
+
96
+ try:
97
+
98
+ # Check if we're inside a running event loop
99
+ loop = asyncio.get_running_loop()
100
+ return loop.create_task(coroutine_obj)
101
+
102
+ except RuntimeError:
103
+
104
+ # No running event loop, execute synchronously
105
+ try:
106
+
107
+ # Use asyncio.run to execute the coroutine and return its result
108
+ return asyncio.run(coroutine_obj)
109
+
110
+ except Exception as e:
111
+
112
+ # Wrap and raise any exceptions that occur during execution
113
+ raise OrionisCoroutineException(
114
+ f"Failed to execute coroutine synchronously: {str(e)}"
115
+ ) from e
116
+
117
+ else:
118
+
119
+ # Execute regular callable directly
120
+ return self.__func(*args, **kwargs)
121
+
122
+ except OrionisCoroutineException:
123
+
124
+ # Re-raise our custom exceptions as-is
125
+ raise
126
+
127
+ except Exception as e:
128
+
129
+ # Wrap and raise any other exceptions that occur during invocation
130
+ raise RuntimeError(
131
+ f"Unexpected error during callable invocation: {str(e)}"
132
+ ) from e
133
+
134
+ def run(self) -> Union[T, asyncio.Future]:
135
+ """
136
+ Executes the wrapped coroutine, adapting to the current event loop context.
137
+
138
+ Returns
139
+ -------
140
+ T or asyncio.Future
141
+ The result of the coroutine if executed synchronously, or an asyncio.Future if scheduled asynchronously.
142
+
143
+ Raises
144
+ ------
145
+ RuntimeError
146
+ If the coroutine cannot be executed due to event loop issues.
147
+
148
+ Notes
149
+ -----
150
+ - If called outside an active event loop, the coroutine is executed synchronously and its result is returned.
151
+ - If called within an active event loop, the coroutine is scheduled for asynchronous execution and a Future is returned.
152
+ - The method automatically detects the execution context and chooses the appropriate execution strategy.
153
+ """
154
+
155
+ # Validate that the provided object is a coroutine
156
+ if not Type(self.__func).isCoroutine():
157
+ raise OrionisCoroutineException(
158
+ f"Expected a coroutine object, but got {type(self.__func).__name__}."
159
+ )
160
+
161
+ # Attempt to get the currently running event loop
162
+ try:
163
+ loop = asyncio.get_running_loop()
164
+
165
+ # No running event loop; execute the coroutine synchronously and return its result
166
+ except RuntimeError:
167
+ return asyncio.run(self.__func)
168
+
169
+ # If inside an active event loop, schedule the coroutine and return a Future
170
+ if loop.is_running():
171
+ return asyncio.ensure_future(self.__func)
172
+
173
+ # If no event loop is running, execute the coroutine synchronously using the loop
174
+ else:
175
+ return loop.run_until_complete(self.__func)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.533.0
3
+ Version: 0.535.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
@@ -82,4 +82,4 @@ class TestServicesAsynchronyCoroutine(AsyncTestCase):
82
82
 
83
83
  # Assert that passing a non-coroutine raises OrionisCoroutineException
84
84
  with self.assertRaises(OrionisCoroutineException):
85
- Coroutine(sample_no_coroutine())
85
+ Coroutine(sample_no_coroutine()).run()
@@ -1,28 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- import asyncio
3
- from typing import TypeVar, Union
4
-
5
- T = TypeVar("T")
6
-
7
- class ICoroutine(ABC):
8
-
9
- @abstractmethod
10
- def run(self) -> Union[T, asyncio.Future]:
11
- """
12
- Execute the wrapped coroutine either synchronously or asynchronously, depending on the execution context.
13
-
14
- Returns
15
- -------
16
- T or asyncio.Future
17
- If called outside of an event loop, returns the result of the coroutine execution (type T).
18
- If called within an event loop, returns an asyncio.Future representing the scheduled coroutine.
19
-
20
- Notes
21
- -----
22
- - Executes the coroutine synchronously and returns its result when called outside an event loop.
23
- - Schedules the coroutine for asynchronous execution and returns a Future when called inside an event loop.
24
- - The caller is responsible for awaiting the Future if asynchronous execution is used.
25
- """
26
-
27
- # This method should be implemented by subclasses to handle coroutine execution.
28
- pass
@@ -1,70 +0,0 @@
1
- import asyncio
2
- from typing import Any, Coroutine as TypingCoroutine, TypeVar, Union
3
- from orionis.services.asynchrony.contracts.coroutines import ICoroutine
4
- from orionis.services.asynchrony.exceptions import OrionisCoroutineException
5
- from orionis.services.introspection.objects.types import Type
6
-
7
- T = TypeVar("T")
8
-
9
- class Coroutine(ICoroutine):
10
-
11
- def __init__(self, func: TypingCoroutine[Any, Any, T]) -> None:
12
- """
13
- Wraps a coroutine object and validates its type.
14
-
15
- Parameters
16
- ----------
17
- func : Coroutine
18
- The coroutine object to be wrapped and managed.
19
-
20
- Raises
21
- ------
22
- OrionisCoroutineException
23
- If the provided object is not a coroutine.
24
- """
25
-
26
- # Validate that the provided object is a coroutine
27
- if not Type(func).isCoroutine():
28
- raise OrionisCoroutineException(
29
- f"Expected a coroutine object, but got {type(func).__name__}."
30
- )
31
-
32
- # Store the coroutine object for later execution
33
- self.__func = func
34
-
35
- def run(self) -> Union[T, asyncio.Future]:
36
- """
37
- Executes the wrapped coroutine, adapting to the current event loop context.
38
-
39
- Returns
40
- -------
41
- T or asyncio.Future
42
- The result of the coroutine if executed synchronously, or an asyncio.Future if scheduled asynchronously.
43
-
44
- Raises
45
- ------
46
- RuntimeError
47
- If the coroutine cannot be executed due to event loop issues.
48
-
49
- Notes
50
- -----
51
- - If called outside an active event loop, the coroutine is executed synchronously and its result is returned.
52
- - If called within an active event loop, the coroutine is scheduled for asynchronous execution and a Future is returned.
53
- - The method automatically detects the execution context and chooses the appropriate execution strategy.
54
- """
55
-
56
- # Attempt to get the currently running event loop
57
- try:
58
- loop = asyncio.get_running_loop()
59
-
60
- # No running event loop; execute the coroutine synchronously and return its result
61
- except RuntimeError:
62
- return asyncio.run(self.__func)
63
-
64
- # If inside an active event loop, schedule the coroutine and return a Future
65
- if loop.is_running():
66
- return asyncio.ensure_future(self.__func)
67
-
68
- # If no event loop is running, execute the coroutine synchronously using the loop
69
- else:
70
- return loop.run_until_complete(self.__func)
File without changes
File without changes