orionis 0.520.0__tar.gz → 0.521.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 (574) hide show
  1. {orionis-0.520.0/orionis.egg-info → orionis-0.521.0}/PKG-INFO +1 -1
  2. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/tasks/schedule.py +149 -68
  3. {orionis-0.520.0 → orionis-0.521.0}/orionis/metadata/framework.py +1 -1
  4. {orionis-0.520.0 → orionis-0.521.0/orionis.egg-info}/PKG-INFO +1 -1
  5. {orionis-0.520.0 → orionis-0.521.0}/LICENCE +0 -0
  6. {orionis-0.520.0 → orionis-0.521.0}/MANIFEST.in +0 -0
  7. {orionis-0.520.0 → orionis-0.521.0}/README.md +0 -0
  8. {orionis-0.520.0 → orionis-0.521.0}/orionis/__init__.py +0 -0
  9. {orionis-0.520.0 → orionis-0.521.0}/orionis/app.py +0 -0
  10. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/__init__.py +0 -0
  11. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/args/__init__.py +0 -0
  12. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/args/argument.py +0 -0
  13. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/args/enums/__init__.py +0 -0
  14. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/args/enums/actions.py +0 -0
  15. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/base/__init__.py +0 -0
  16. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/base/command.py +0 -0
  17. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/base/scheduler.py +0 -0
  18. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/base/scheduler_event_listener.py +0 -0
  19. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/__init__.py +0 -0
  20. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/cache.py +0 -0
  21. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/help.py +0 -0
  22. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/publisher.py +0 -0
  23. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/scheduler_list.py +0 -0
  24. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/scheduler_work.py +0 -0
  25. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/test.py +0 -0
  26. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/version.py +0 -0
  27. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/commands/workflow.py +0 -0
  28. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/__init__.py +0 -0
  29. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/command.py +0 -0
  30. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/event.py +0 -0
  31. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/kernel.py +0 -0
  32. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/reactor.py +0 -0
  33. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/schedule.py +0 -0
  34. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
  35. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/contracts/scheduler.py +0 -0
  36. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/core/__init__.py +0 -0
  37. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/core/reactor.py +0 -0
  38. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dumper/__init__.py +0 -0
  39. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  40. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dumper/contracts/dump.py +0 -0
  41. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dumper/dump.py +0 -0
  42. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dynamic/__init__.py +0 -0
  43. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  44. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  45. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/dynamic/progress_bar.py +0 -0
  46. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/__init__.py +0 -0
  47. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/all_jobs_removed.py +0 -0
  48. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/executor_added.py +0 -0
  49. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/executor_removed.py +0 -0
  50. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_added.py +0 -0
  51. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_error.py +0 -0
  52. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_event_data.py +0 -0
  53. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_executed.py +0 -0
  54. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_max_instances.py +0 -0
  55. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_missed.py +0 -0
  56. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_modified.py +0 -0
  57. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_pause.py +0 -0
  58. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_removed.py +0 -0
  59. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_resume.py +0 -0
  60. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_store_added.py +0 -0
  61. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_store_removed.py +0 -0
  62. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/job_submitted.py +0 -0
  63. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/request.py +0 -0
  64. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/scheduler_event_data.py +0 -0
  65. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/scheduler_paused.py +0 -0
  66. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/scheduler_resumed.py +0 -0
  67. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
  68. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/entities/scheduler_started.py +0 -0
  69. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/enums/__init__.py +0 -0
  70. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/enums/command.py +0 -0
  71. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/enums/event.py +0 -0
  72. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/enums/listener.py +0 -0
  73. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/exceptions/__init__.py +0 -0
  74. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/exceptions/cli_exception.py +0 -0
  75. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  76. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  77. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  78. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/kernel.py +0 -0
  79. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/__init__.py +0 -0
  80. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/console.py +0 -0
  81. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/contracts/__init__.py +0 -0
  82. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/contracts/console.py +0 -0
  83. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/contracts/executor.py +0 -0
  84. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/enums/__init__.py +0 -0
  85. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/enums/styles.py +0 -0
  86. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/output/executor.py +0 -0
  87. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/request/cli_request.py +0 -0
  88. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/tasks/__init__.py +0 -0
  89. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/tasks/event.py +0 -0
  90. {orionis-0.520.0 → orionis-0.521.0}/orionis/console/tasks/listener.py +0 -0
  91. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/__init__.py +0 -0
  92. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/container.py +0 -0
  93. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/context/__init__.py +0 -0
  94. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/context/manager.py +0 -0
  95. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/context/scope.py +0 -0
  96. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/contracts/__init__.py +0 -0
  97. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/contracts/container.py +0 -0
  98. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/contracts/service_provider.py +0 -0
  99. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/entities/__init__.py +0 -0
  100. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/entities/binding.py +0 -0
  101. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/enums/__init__.py +0 -0
  102. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/enums/lifetimes.py +0 -0
  103. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/exceptions/__init__.py +0 -0
  104. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/exceptions/attribute.py +0 -0
  105. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/exceptions/exception.py +0 -0
  106. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/exceptions/type.py +0 -0
  107. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/exceptions/value.py +0 -0
  108. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/facades/__init__.py +0 -0
  109. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/facades/facade.py +0 -0
  110. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/providers/__init__.py +0 -0
  111. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/providers/service_provider.py +0 -0
  112. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/__init__.py +0 -0
  113. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/implements.py +0 -0
  114. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_abstract_class.py +0 -0
  115. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_callable.py +0 -0
  116. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_concrete_class.py +0 -0
  117. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_instance.py +0 -0
  118. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_not_subclass.py +0 -0
  119. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_subclass.py +0 -0
  120. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/is_valid_alias.py +0 -0
  121. {orionis-0.520.0 → orionis-0.521.0}/orionis/container/validators/lifetime.py +0 -0
  122. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/__init__.py +0 -0
  123. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/base/__init__.py +0 -0
  124. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/base/handler.py +0 -0
  125. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/catch.py +0 -0
  126. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/contracts/__init__.py +0 -0
  127. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/contracts/catch.py +0 -0
  128. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/contracts/handler.py +0 -0
  129. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/entities/__init__.py +0 -0
  130. {orionis-0.520.0 → orionis-0.521.0}/orionis/failure/entities/throwable.py +0 -0
  131. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/__init__.py +0 -0
  132. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/application.py +0 -0
  133. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/__init__.py +0 -0
  134. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/__init__.py +0 -0
  135. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  136. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/entities/app.py +0 -0
  137. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  138. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  139. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  140. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/auth/__init__.py +0 -0
  141. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  142. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  143. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/__init__.py +0 -0
  144. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  145. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  146. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  147. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  148. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  149. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  150. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cors/__init__.py +0 -0
  151. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  152. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  153. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/__init__.py +0 -0
  154. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  155. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  156. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/database.py +0 -0
  157. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  158. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  159. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  160. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  161. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  162. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  163. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  164. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  165. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  166. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  167. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  168. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  169. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  170. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  171. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  172. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  173. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  174. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  175. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  176. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  177. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  178. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  179. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  180. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/__init__.py +0 -0
  181. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  182. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  183. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  184. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  185. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  186. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  187. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  188. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  189. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  190. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  191. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  192. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  193. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  194. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  195. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/__init__.py +0 -0
  196. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  197. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  198. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  199. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  200. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  201. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/__init__.py +0 -0
  202. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  203. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  204. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  205. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  206. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  207. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  208. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/roots/__init__.py +0 -0
  209. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/roots/paths.py +0 -0
  210. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/__init__.py +0 -0
  211. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  212. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/entities/session.py +0 -0
  213. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  214. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  215. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  216. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  217. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/startup.py +0 -0
  218. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/__init__.py +0 -0
  219. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  220. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  221. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  222. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  223. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  224. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  225. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/contracts/__init__.py +0 -0
  226. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/contracts/application.py +0 -0
  227. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/contracts/config.py +0 -0
  228. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/exceptions/__init__.py +0 -0
  229. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/exceptions/integrity.py +0 -0
  230. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/exceptions/runtime.py +0 -0
  231. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/exceptions/type.py +0 -0
  232. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/exceptions/value.py +0 -0
  233. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/__init__.py +0 -0
  234. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/catch_provider.py +0 -0
  235. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/console_provider.py +0 -0
  236. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/directory_provider.py +0 -0
  237. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  238. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/executor_provider.py +0 -0
  239. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  240. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/logger_provider.py +0 -0
  241. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
  242. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  243. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/reactor_provider.py +0 -0
  244. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
  245. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/testing_provider.py +0 -0
  246. {orionis-0.520.0 → orionis-0.521.0}/orionis/foundation/providers/workers_provider.py +0 -0
  247. {orionis-0.520.0 → orionis-0.521.0}/orionis/metadata/__init__.py +0 -0
  248. {orionis-0.520.0 → orionis-0.521.0}/orionis/metadata/package.py +0 -0
  249. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/__init__.py +0 -0
  250. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/__init__.py +0 -0
  251. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  252. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  253. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/coroutines.py +0 -0
  254. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  255. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  256. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/__init__.py +0 -0
  257. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/contracts/__init__.py +0 -0
  258. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/contracts/caster.py +0 -0
  259. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/contracts/env.py +0 -0
  260. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/core/__init__.py +0 -0
  261. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/core/dot_env.py +0 -0
  262. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  263. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/dynamic/caster.py +0 -0
  264. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/enums/__init__.py +0 -0
  265. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/enums/value_type.py +0 -0
  266. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/env.py +0 -0
  267. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  268. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/exceptions/exception.py +0 -0
  269. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/exceptions/value.py +0 -0
  270. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/helpers/__init__.py +0 -0
  271. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/helpers/functions.py +0 -0
  272. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/key/__init__.py +0 -0
  273. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/key/key_generator.py +0 -0
  274. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/validators/__init__.py +0 -0
  275. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/validators/key_name.py +0 -0
  276. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/environment/validators/types.py +0 -0
  277. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/file/__init__.py +0 -0
  278. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/file/contracts/__init__.py +0 -0
  279. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/file/contracts/directory.py +0 -0
  280. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/file/directory.py +0 -0
  281. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/inspirational/__init__.py +0 -0
  282. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
  283. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  284. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/inspirational/inspire.py +0 -0
  285. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/inspirational/quotes.py +0 -0
  286. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/__init__.py +0 -0
  287. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  288. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  289. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  290. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  291. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/callables/__init__.py +0 -0
  292. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  293. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  294. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/callables/reflection.py +0 -0
  295. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  296. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  297. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  298. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  299. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  300. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  301. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  302. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  303. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  304. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  305. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  306. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  307. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  308. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/exceptions/type.py +0 -0
  309. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/exceptions/value.py +0 -0
  310. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/instances/__init__.py +0 -0
  311. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  312. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  313. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/instances/reflection.py +0 -0
  314. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/modules/__init__.py +0 -0
  315. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  316. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  317. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/modules/reflection.py +0 -0
  318. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/objects/__init__.py +0 -0
  319. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/objects/types.py +0 -0
  320. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/introspection/reflection.py +0 -0
  321. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/__init__.py +0 -0
  322. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/contracts/__init__.py +0 -0
  323. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/contracts/log_service.py +0 -0
  324. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/exceptions/__init__.py +0 -0
  325. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/exceptions/runtime.py +0 -0
  326. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/handlers/__init__.py +0 -0
  327. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/handlers/filename.py +0 -0
  328. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  329. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  330. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/log/log_service.py +0 -0
  331. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/__init__.py +0 -0
  332. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/contracts/__init__.py +0 -0
  333. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/contracts/imports.py +0 -0
  334. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/contracts/workers.py +0 -0
  335. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/imports.py +0 -0
  336. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/runtime/__init__.py +0 -0
  337. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/runtime/imports.py +0 -0
  338. {orionis-0.520.0 → orionis-0.521.0}/orionis/services/system/workers.py +0 -0
  339. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/__init__.py +0 -0
  340. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/entities/__init__.py +0 -0
  341. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/entities/base.py +0 -0
  342. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/__init__.py +0 -0
  343. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/application.py +0 -0
  344. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/console.py +0 -0
  345. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/dumper.py +0 -0
  346. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/executor.py +0 -0
  347. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/inspire.py +0 -0
  348. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/logger.py +0 -0
  349. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/performance_counter.py +0 -0
  350. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/progress_bar.py +0 -0
  351. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/reactor.py +0 -0
  352. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/testing.py +0 -0
  353. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/facades/workers.py +0 -0
  354. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/__init__.py +0 -0
  355. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  356. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  357. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  358. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  359. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/formatter/serializer.py +0 -0
  360. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/patterns/__init__.py +0 -0
  361. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  362. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/patterns/singleton/meta.py +0 -0
  363. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/performance/__init__.py +0 -0
  364. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/performance/contracts/__init__.py +0 -0
  365. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/performance/contracts/counter.py +0 -0
  366. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/performance/counter.py +0 -0
  367. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/__init__.py +0 -0
  368. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/contracts/__init__.py +0 -0
  369. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/contracts/std.py +0 -0
  370. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  371. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/exceptions/value.py +0 -0
  372. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/standard/std.py +0 -0
  373. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/wrapper/__init__.py +0 -0
  374. {orionis-0.520.0 → orionis-0.521.0}/orionis/support/wrapper/dot_dict.py +0 -0
  375. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/__init__.py +0 -0
  376. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/cases/__init__.py +0 -0
  377. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/cases/asynchronous.py +0 -0
  378. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/cases/synchronous.py +0 -0
  379. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/__init__.py +0 -0
  380. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/dumper.py +0 -0
  381. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/kernel.py +0 -0
  382. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/logs.py +0 -0
  383. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/printer.py +0 -0
  384. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/render.py +0 -0
  385. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/test_result.py +0 -0
  386. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/contracts/unit_test.py +0 -0
  387. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/core/__init__.py +0 -0
  388. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/core/unit_test.py +0 -0
  389. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/entities/__init__.py +0 -0
  390. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/entities/result.py +0 -0
  391. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/enums/__init__.py +0 -0
  392. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/enums/status.py +0 -0
  393. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/__init__.py +0 -0
  394. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/config.py +0 -0
  395. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/failure.py +0 -0
  396. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/persistence.py +0 -0
  397. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/runtime.py +0 -0
  398. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/exceptions/value.py +0 -0
  399. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/kernel.py +0 -0
  400. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/output/__init__.py +0 -0
  401. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/output/dumper.py +0 -0
  402. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/output/printer.py +0 -0
  403. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/records/__init__.py +0 -0
  404. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/records/logs.py +0 -0
  405. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/__init__.py +0 -0
  406. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/base_path.py +0 -0
  407. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/execution_mode.py +0 -0
  408. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/fail_fast.py +0 -0
  409. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/folder_path.py +0 -0
  410. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/module_name.py +0 -0
  411. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/name_pattern.py +0 -0
  412. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/pattern.py +0 -0
  413. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/persistent.py +0 -0
  414. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/persistent_driver.py +0 -0
  415. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/print_result.py +0 -0
  416. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/tags.py +0 -0
  417. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/throw_exception.py +0 -0
  418. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/verbosity.py +0 -0
  419. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/web_report.py +0 -0
  420. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/validators/workers.py +0 -0
  421. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/view/__init__.py +0 -0
  422. {orionis-0.520.0 → orionis-0.521.0}/orionis/test/view/render.py +0 -0
  423. {orionis-0.520.0 → orionis-0.521.0}/orionis.egg-info/SOURCES.txt +0 -0
  424. {orionis-0.520.0 → orionis-0.521.0}/orionis.egg-info/dependency_links.txt +0 -0
  425. {orionis-0.520.0 → orionis-0.521.0}/orionis.egg-info/requires.txt +0 -0
  426. {orionis-0.520.0 → orionis-0.521.0}/orionis.egg-info/top_level.txt +0 -0
  427. {orionis-0.520.0 → orionis-0.521.0}/orionis.egg-info/zip-safe +0 -0
  428. {orionis-0.520.0 → orionis-0.521.0}/setup.cfg +0 -0
  429. {orionis-0.520.0 → orionis-0.521.0}/setup.py +0 -0
  430. {orionis-0.520.0 → orionis-0.521.0}/tests/container/__init__.py +0 -0
  431. {orionis-0.520.0 → orionis-0.521.0}/tests/container/context/__init__.py +0 -0
  432. {orionis-0.520.0 → orionis-0.521.0}/tests/container/context/test_manager.py +0 -0
  433. {orionis-0.520.0 → orionis-0.521.0}/tests/container/context/test_scope.py +0 -0
  434. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/__init__.py +0 -0
  435. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/test_advanced_async.py +0 -0
  436. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/test_async_optimizations.py +0 -0
  437. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/test_container.py +0 -0
  438. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/test_singleton.py +0 -0
  439. {orionis-0.520.0 → orionis-0.521.0}/tests/container/core/test_thread_safety.py +0 -0
  440. {orionis-0.520.0 → orionis-0.521.0}/tests/container/entities/__init__.py +0 -0
  441. {orionis-0.520.0 → orionis-0.521.0}/tests/container/entities/test_binding.py +0 -0
  442. {orionis-0.520.0 → orionis-0.521.0}/tests/container/enums/__init__.py +0 -0
  443. {orionis-0.520.0 → orionis-0.521.0}/tests/container/enums/test_lifetimes.py +0 -0
  444. {orionis-0.520.0 → orionis-0.521.0}/tests/container/facades/__init__.py +0 -0
  445. {orionis-0.520.0 → orionis-0.521.0}/tests/container/facades/test_facade.py +0 -0
  446. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/__init__.py +0 -0
  447. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/mock_advanced_async.py +0 -0
  448. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
  449. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
  450. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  451. {orionis-0.520.0 → orionis-0.521.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  452. {orionis-0.520.0 → orionis-0.521.0}/tests/container/providers/__init__.py +0 -0
  453. {orionis-0.520.0 → orionis-0.521.0}/tests/container/providers/test_providers.py +0 -0
  454. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/__init__.py +0 -0
  455. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_implements.py +0 -0
  456. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  457. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_callable.py +0 -0
  458. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  459. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_instance.py +0 -0
  460. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  461. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_subclass.py +0 -0
  462. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  463. {orionis-0.520.0 → orionis-0.521.0}/tests/container/validators/test_lifetime.py +0 -0
  464. {orionis-0.520.0 → orionis-0.521.0}/tests/example/__init__.py +0 -0
  465. {orionis-0.520.0 → orionis-0.521.0}/tests/example/test_example.py +0 -0
  466. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/__init__.py +0 -0
  467. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/__init__.py +0 -0
  468. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/app/__init__.py +0 -0
  469. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  470. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/auth/__init__.py +0 -0
  471. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  472. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cache/__init__.py +0 -0
  473. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  474. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  475. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  476. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cors/__init__.py +0 -0
  477. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  478. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/__init__.py +0 -0
  479. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  480. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  481. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  482. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  483. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  484. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  485. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  486. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  487. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  488. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  489. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  490. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  491. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/__init__.py +0 -0
  492. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  493. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  494. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  495. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  496. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  497. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  498. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  499. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  500. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/mail/__init__.py +0 -0
  501. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  502. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  503. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  504. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  505. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/queue/__init__.py +0 -0
  506. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  507. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  508. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  509. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/root/__init__.py +0 -0
  510. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  511. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/session/__init__.py +0 -0
  512. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  513. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/startup/__init__.py +0 -0
  514. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  515. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/testing/__init__.py +0 -0
  516. {orionis-0.520.0 → orionis-0.521.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  517. {orionis-0.520.0 → orionis-0.521.0}/tests/metadata/__init__.py +0 -0
  518. {orionis-0.520.0 → orionis-0.521.0}/tests/metadata/test_metadata_framework.py +0 -0
  519. {orionis-0.520.0 → orionis-0.521.0}/tests/metadata/test_metadata_package.py +0 -0
  520. {orionis-0.520.0 → orionis-0.521.0}/tests/services/__init__.py +0 -0
  521. {orionis-0.520.0 → orionis-0.521.0}/tests/services/asynchrony/__init__.py +0 -0
  522. {orionis-0.520.0 → orionis-0.521.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  523. {orionis-0.520.0 → orionis-0.521.0}/tests/services/environment/__init__.py +0 -0
  524. {orionis-0.520.0 → orionis-0.521.0}/tests/services/environment/test_services_environment.py +0 -0
  525. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/__init__.py +0 -0
  526. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/__init__.py +0 -0
  527. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
  528. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  529. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  530. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  531. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
  532. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/__init__.py +0 -0
  533. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
  534. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  535. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
  536. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  537. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
  538. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
  539. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  540. {orionis-0.520.0 → orionis-0.521.0}/tests/services/introspection/test_reflection.py +0 -0
  541. {orionis-0.520.0 → orionis-0.521.0}/tests/services/log/__init__.py +0 -0
  542. {orionis-0.520.0 → orionis-0.521.0}/tests/services/log/test_log.py +0 -0
  543. {orionis-0.520.0 → orionis-0.521.0}/tests/services/system/__init__.py +0 -0
  544. {orionis-0.520.0 → orionis-0.521.0}/tests/services/system/test_services_system_imports.py +0 -0
  545. {orionis-0.520.0 → orionis-0.521.0}/tests/services/system/test_services_system_workers.py +0 -0
  546. {orionis-0.520.0 → orionis-0.521.0}/tests/support/__init__.py +0 -0
  547. {orionis-0.520.0 → orionis-0.521.0}/tests/support/entities/__init__.py +0 -0
  548. {orionis-0.520.0 → orionis-0.521.0}/tests/support/entities/mock_dataclass.py +0 -0
  549. {orionis-0.520.0 → orionis-0.521.0}/tests/support/entities/test_base.py +0 -0
  550. {orionis-0.520.0 → orionis-0.521.0}/tests/support/patterns/__init__.py +0 -0
  551. {orionis-0.520.0 → orionis-0.521.0}/tests/support/patterns/singleton/__init__.py +0 -0
  552. {orionis-0.520.0 → orionis-0.521.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  553. {orionis-0.520.0 → orionis-0.521.0}/tests/support/standard/__init__.py +0 -0
  554. {orionis-0.520.0 → orionis-0.521.0}/tests/support/standard/test_services_std.py +0 -0
  555. {orionis-0.520.0 → orionis-0.521.0}/tests/support/wrapper/__init__.py +0 -0
  556. {orionis-0.520.0 → orionis-0.521.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  557. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/__init__.py +0 -0
  558. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/cases/__init__.py +0 -0
  559. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  560. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  561. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/entities/__init__.py +0 -0
  562. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/entities/test_testing_result.py +0 -0
  563. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/enums/__init__.py +0 -0
  564. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/enums/test_testing_status.py +0 -0
  565. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/output/__init__.py +0 -0
  566. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/output/test_testing_dumper.py +0 -0
  567. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/output/test_testing_printer.py +0 -0
  568. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/records/__init__.py +0 -0
  569. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/records/test_testing_records.py +0 -0
  570. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/test_testing_unit.py +0 -0
  571. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/validators/__init__.py +0 -0
  572. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/validators/test_testing_validators.py +0 -0
  573. {orionis-0.520.0 → orionis-0.521.0}/tests/testing/view/__init__.py +0 -0
  574. {orionis-0.520.0 → orionis-0.521.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.520.0
3
+ Version: 0.521.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
@@ -113,6 +113,10 @@ class Scheduler(ISchedule):
113
113
  # Initialize the listeners dictionary to manage event listeners.
114
114
  self.__listeners: Dict[str, callable] = {}
115
115
 
116
+ # Add this line to the existing __init__ method
117
+ self._stop_event: Optional[asyncio.Event] = None
118
+
119
+
116
120
  def __getCurrentTime(
117
121
  self
118
122
  ) -> str:
@@ -978,9 +982,9 @@ class Scheduler(ISchedule):
978
982
  """
979
983
  Schedule the scheduler to pause all operations at a specific datetime.
980
984
 
981
- This method allows you to schedule a job that will pause the AsyncIOScheduler
982
- at the specified datetime. The job is added to the scheduler with a 'date'
983
- trigger, ensuring it executes exactly at the given time.
985
+ This method schedules a job that pauses the AsyncIOScheduler at the specified datetime.
986
+ The job is added to the scheduler with a 'date' trigger, ensuring it executes exactly
987
+ at the given time. If a pause job already exists, it is replaced to avoid conflicts.
984
988
 
985
989
  Parameters
986
990
  ----------
@@ -998,20 +1002,37 @@ class Scheduler(ISchedule):
998
1002
  ------
999
1003
  ValueError
1000
1004
  If the 'at' parameter is not a valid datetime object.
1005
+ CLIOrionisRuntimeError
1006
+ If the scheduler is not running or if an error occurs during job scheduling.
1001
1007
  """
1002
1008
 
1003
1009
  # Validate that the 'at' parameter is a datetime object
1004
1010
  if not isinstance(at, datetime):
1005
1011
  raise ValueError("The 'at' parameter must be a datetime object.")
1006
1012
 
1007
- # Add a job to the scheduler to pause it at the specified datetime
1008
- self.__scheduler.add_job(
1009
- func=self.__scheduler.pause, # Function to pause the scheduler
1010
- trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1011
- id=ListeningEvent.SCHEDULER_PAUSED.value, # Unique job ID for pausing the scheduler
1012
- name=ListeningEvent.SCHEDULER_PAUSED.value, # Descriptive name for the job
1013
- replace_existing=True # Replace any existing job with the same ID
1014
- )
1013
+ # Ensure the scheduler is running before scheduling a pause operation
1014
+ if not self.__scheduler.running:
1015
+ raise CLIOrionisRuntimeError("Cannot schedule pause operation: scheduler is not running.")
1016
+
1017
+ try:
1018
+ # Remove any existing pause job to avoid conflicts
1019
+ try:
1020
+ self.__scheduler.remove_job(ListeningEvent.SCHEDULER_PAUSED.value)
1021
+ except:
1022
+ pass # If the job doesn't exist, it's fine to proceed
1023
+
1024
+ # Add a job to the scheduler to pause it at the specified datetime
1025
+ self.__scheduler.add_job(
1026
+ func=self.__scheduler.pause, # Function to pause the scheduler
1027
+ trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1028
+ id=ListeningEvent.SCHEDULER_PAUSED.value, # Unique job ID for pausing the scheduler
1029
+ name="Pause Scheduler", # Descriptive name for the job
1030
+ replace_existing=True # Replace any existing job with the same ID
1031
+ )
1032
+
1033
+ except Exception as e:
1034
+ # Handle exceptions that may occur during job scheduling
1035
+ raise CLIOrionisRuntimeError(f"Failed to schedule scheduler pause: {str(e)}") from e
1015
1036
 
1016
1037
  def resumeEverythingAt(
1017
1038
  self,
@@ -1020,9 +1041,9 @@ class Scheduler(ISchedule):
1020
1041
  """
1021
1042
  Schedule the scheduler to resume all operations at a specific datetime.
1022
1043
 
1023
- This method allows you to schedule a job that will resume the AsyncIOScheduler
1024
- at the specified datetime. The job is added to the scheduler with a 'date'
1025
- trigger, ensuring it executes exactly at the given time.
1044
+ This method schedules a job that resumes the AsyncIOScheduler at the specified datetime.
1045
+ The job is added to the scheduler with a 'date' trigger, ensuring it executes exactly
1046
+ at the given time. If a resume job already exists, it is replaced to avoid conflicts.
1026
1047
 
1027
1048
  Parameters
1028
1049
  ----------
@@ -1040,20 +1061,37 @@ class Scheduler(ISchedule):
1040
1061
  ------
1041
1062
  ValueError
1042
1063
  If the 'at' parameter is not a valid datetime object.
1064
+ CLIOrionisRuntimeError
1065
+ If the scheduler is not running or if an error occurs during job scheduling.
1043
1066
  """
1044
1067
 
1045
1068
  # Validate that the 'at' parameter is a datetime object
1046
1069
  if not isinstance(at, datetime):
1047
1070
  raise ValueError("The 'at' parameter must be a datetime object.")
1048
1071
 
1049
- # Add a job to the scheduler to resume it at the specified datetime
1050
- self.__scheduler.add_job(
1051
- func=self.__scheduler.resume, # Function to resume the scheduler
1052
- trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1053
- id=ListeningEvent.SCHEDULER_RESUMED.value, # Unique job ID for resuming the scheduler
1054
- name=ListeningEvent.SCHEDULER_RESUMED.value, # Descriptive name for the job
1055
- replace_existing=True # Replace any existing job with the same ID
1056
- )
1072
+ # Ensure the scheduler is running before scheduling a resume operation
1073
+ if not self.__scheduler.running:
1074
+ raise CLIOrionisRuntimeError("Cannot schedule resume operation: scheduler is not running.")
1075
+
1076
+ try:
1077
+ # Remove any existing resume job to avoid conflicts
1078
+ try:
1079
+ self.__scheduler.remove_job(ListeningEvent.SCHEDULER_RESUMED.value)
1080
+ except:
1081
+ pass # If the job doesn't exist, it's fine to proceed
1082
+
1083
+ # Add a job to the scheduler to resume it at the specified datetime
1084
+ self.__scheduler.add_job(
1085
+ func=self.__scheduler.resume, # Function to resume the scheduler
1086
+ trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1087
+ id=ListeningEvent.SCHEDULER_RESUMED.value, # Unique job ID for resuming the scheduler
1088
+ name="Resume Scheduler", # Descriptive name for the job
1089
+ replace_existing=True # Replace any existing job with the same ID
1090
+ )
1091
+
1092
+ except Exception as e:
1093
+ # Handle exceptions that may occur during job scheduling
1094
+ raise CLIOrionisRuntimeError(f"Failed to schedule scheduler resume: {str(e)}") from e
1057
1095
 
1058
1096
  def shutdownEverythingAt(
1059
1097
  self,
@@ -1062,9 +1100,9 @@ class Scheduler(ISchedule):
1062
1100
  """
1063
1101
  Schedule the scheduler to shut down all operations at a specific datetime.
1064
1102
 
1065
- This method allows you to schedule a job that will shut down the AsyncIOScheduler
1066
- at the specified datetime. The job is added to the scheduler with a 'date'
1067
- trigger, ensuring it executes exactly at the given time.
1103
+ This method schedules a job that shuts down the AsyncIOScheduler at the specified datetime.
1104
+ The job is added to the scheduler with a 'date' trigger, ensuring it executes exactly
1105
+ at the given time. If a shutdown job already exists, it is replaced to avoid conflicts.
1068
1106
 
1069
1107
  Parameters
1070
1108
  ----------
@@ -1082,87 +1120,123 @@ class Scheduler(ISchedule):
1082
1120
  ------
1083
1121
  ValueError
1084
1122
  If the 'at' parameter is not a valid datetime object.
1123
+ CLIOrionisRuntimeError
1124
+ If the scheduler is not running or if an error occurs during job scheduling.
1085
1125
  """
1086
1126
 
1087
1127
  # Validate that the 'at' parameter is a datetime object
1088
1128
  if not isinstance(at, datetime):
1089
1129
  raise ValueError("The 'at' parameter must be a datetime object.")
1090
1130
 
1091
- # Add a job to the scheduler to shut it down at the specified datetime
1092
- self.__scheduler.add_job(
1093
- func=self.__scheduler.shutdown, # Function to shut down the scheduler
1094
- trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1095
- id=ListeningEvent.SCHEDULER_SHUTDOWN.value, # Unique job ID for shutting down the scheduler
1096
- name=ListeningEvent.SCHEDULER_SHUTDOWN.value, # Descriptive name for the job
1097
- replace_existing=True # Replace any existing job with the same ID
1098
- )
1131
+ # Ensure the scheduler is running before scheduling a shutdown operation
1132
+ if not self.__scheduler.running:
1133
+ raise CLIOrionisRuntimeError("Cannot schedule shutdown operation: scheduler is not running.")
1134
+
1135
+ try:
1136
+ # Remove any existing shutdown job to avoid conflicts
1137
+ try:
1138
+ self.__scheduler.remove_job(ListeningEvent.SCHEDULER_SHUTDOWN.value)
1139
+ except:
1140
+ pass # If the job doesn't exist, it's fine to proceed
1141
+
1142
+ # Add a job to the scheduler to shut it down at the specified datetime
1143
+ self.__scheduler.add_job(
1144
+ func=self.__scheduler.shutdown, # Function to shut down the scheduler
1145
+ trigger=DateTrigger(run_date=at), # Trigger type is 'date' for one-time execution
1146
+ id=ListeningEvent.SCHEDULER_SHUTDOWN.value, # Unique job ID for shutting down the scheduler
1147
+ name="Shutdown Scheduler", # Descriptive name for the job
1148
+ replace_existing=True # Replace any existing job with the same ID
1149
+ )
1150
+
1151
+ except Exception as e:
1152
+ # Handle exceptions that may occur during job scheduling
1153
+ raise CLIOrionisRuntimeError(f"Failed to schedule scheduler shutdown: {str(e)}") from e
1099
1154
 
1100
1155
  async def start(self) -> None:
1101
1156
  """
1102
1157
  Start the AsyncIO scheduler instance and keep it running.
1103
1158
 
1104
- This method initiates the AsyncIOScheduler which integrates with asyncio event loops
1105
- for asynchronous job execution. It ensures the scheduler starts properly within
1106
- an asyncio context and maintains the event loop active to process scheduled jobs.
1159
+ This method initializes and starts the AsyncIOScheduler, which integrates with the asyncio event loop
1160
+ to manage asynchronous job execution. It ensures that all scheduled events are loaded, listeners are
1161
+ subscribed, and the scheduler is started within an asyncio context. The method keeps the scheduler
1162
+ running until a stop signal is received, handling graceful shutdowns and interruptions.
1107
1163
 
1108
1164
  Returns
1109
1165
  -------
1110
1166
  None
1111
- This method does not return any value. It starts the AsyncIO scheduler and keeps it running.
1112
- """
1167
+ This method does not return any value. It starts the AsyncIO scheduler, keeps it running, and
1168
+ ensures proper cleanup during shutdown.
1113
1169
 
1114
- # Start the AsyncIOScheduler to handle asynchronous jobs.
1170
+ Raises
1171
+ ------
1172
+ CLIOrionisRuntimeError
1173
+ If the scheduler fails to start due to missing an asyncio event loop or other runtime issues.
1174
+ """
1115
1175
  try:
1176
+ # Ensure the method is called within an asyncio event loop
1177
+ loop = asyncio.get_running_loop()
1116
1178
 
1117
- # Ensure we're in an asyncio context
1118
- asyncio.get_running_loop()
1179
+ # Create an asyncio event to manage clean shutdowns
1180
+ self._stop_event = asyncio.Event()
1119
1181
 
1120
- # Ensure all events are loaded into the internal jobs list
1182
+ # Load all scheduled events into the internal jobs list
1121
1183
  self.__loadEvents()
1122
1184
 
1123
- # Subscribe to scheduler events
1185
+ # Subscribe to scheduler events for monitoring and handling
1124
1186
  self.__subscribeListeners()
1125
1187
 
1126
- # Start the scheduler
1188
+ # Start the scheduler if it is not already running
1127
1189
  if not self.__scheduler.running:
1128
1190
  self.__scheduler.start()
1129
1191
 
1130
- # Keep the event loop alive to process scheduled jobs
1131
- try:
1192
+ # Log that the scheduler is now active and waiting for events
1193
+ self.__logger.info("Scheduler is now active and waiting for events...")
1132
1194
 
1133
- # Run indefinitely until interrupted
1134
- while self.__scheduler.running:
1135
- await asyncio.sleep(1)
1195
+ try:
1196
+ # Wait for the stop event to be set, which signals a shutdown
1197
+ # This avoids using a busy loop and is more efficient
1198
+ await self._stop_event.wait()
1136
1199
 
1137
1200
  except (KeyboardInterrupt, asyncio.CancelledError):
1138
- await self.shutdown()
1201
+ # Handle graceful shutdown when an interruption signal is received
1202
+ self.__logger.info("Received shutdown signal, stopping scheduler...")
1203
+ await self.shutdown(wait=True)
1204
+
1139
1205
  except Exception as e:
1140
- raise CLIOrionisRuntimeError(f"Failed to start the scheduler: {str(e)}") from e
1206
+ # Log and raise any unexpected exceptions during scheduler operation
1207
+ self.__logger.error(f"Error during scheduler operation: {str(e)}")
1208
+ raise CLIOrionisRuntimeError(f"Scheduler operation failed: {str(e)}") from e
1141
1209
 
1210
+ finally:
1211
+ # Ensure the scheduler is shut down properly, even if an error occurs
1212
+ if self.__scheduler.running:
1213
+ await self.shutdown(wait=False)
1142
1214
 
1143
- except Exception as e:
1215
+ except RuntimeError as e:
1216
+ # Handle the case where no asyncio event loop is running
1217
+ if "no running event loop" in str(e):
1218
+ raise CLIOrionisRuntimeError("Scheduler must be started within an asyncio event loop") from e
1219
+ raise CLIOrionisRuntimeError(f"Failed to start the scheduler: {str(e)}") from e
1144
1220
 
1145
- # Handle exceptions that may occur during scheduler startup
1146
- raise CLIOrionisRuntimeError(f"Failed to start the scheduler: {str(e)}")
1221
+ except Exception as e:
1222
+ # Raise a runtime error for any other issues during startup
1223
+ raise CLIOrionisRuntimeError(f"Failed to start the scheduler: {str(e)}") from e
1147
1224
 
1148
- async def shutdown(self, wait=True) -> None:
1225
+ async def shutdown(self, wait: bool = True) -> None:
1149
1226
  """
1150
1227
  Shut down the AsyncIO scheduler instance asynchronously.
1151
1228
 
1152
- This method gracefully stops the AsyncIOScheduler that manages asynchronous job execution.
1153
- It ensures proper cleanup in asyncio environments and allows for an optional wait period
1154
- to complete currently executing jobs before shutting down.
1229
+ This method gracefully stops the AsyncIOScheduler and signals the main event loop
1230
+ to stop waiting, allowing for clean application shutdown.
1155
1231
 
1156
1232
  Parameters
1157
1233
  ----------
1158
1234
  wait : bool, optional
1159
- If True, the method waits until all currently executing jobs are completed before shutting down the scheduler.
1160
- If False, the scheduler shuts down immediately without waiting for running jobs to finish. Default is True.
1235
+ If True, waits for currently executing jobs to complete. Default is True.
1161
1236
 
1162
1237
  Returns
1163
1238
  -------
1164
1239
  None
1165
- This method does not return any value. It performs the shutdown operation for the AsyncIO scheduler.
1166
1240
 
1167
1241
  Raises
1168
1242
  ------
@@ -1172,25 +1246,32 @@ class Scheduler(ISchedule):
1172
1246
  If an error occurs during the shutdown process.
1173
1247
  """
1174
1248
 
1175
- # Ensure the 'wait' parameter is a boolean value.
1249
+ # Validate the wait parameter
1176
1250
  if not isinstance(wait, bool):
1177
1251
  raise ValueError("The 'wait' parameter must be a boolean value.")
1178
1252
 
1179
- # If the scheduler is not running, there is nothing to shut down.
1253
+ # If the scheduler is not running, there's nothing to shut down
1180
1254
  if not self.__scheduler.running:
1181
1255
  return
1182
1256
 
1183
1257
  try:
1184
- # Shut down the AsyncIOScheduler. If 'wait' is True, it waits for currently executing jobs to finish.
1258
+ # Log the shutdown process
1259
+ self.__logger.info(f"Shutting down scheduler (wait={wait})...")
1260
+
1261
+ # Shut down the AsyncIOScheduler
1185
1262
  self.__scheduler.shutdown(wait=wait)
1186
1263
 
1187
- # If 'wait' is True, allow a small delay to ensure proper cleanup of resources.
1264
+ # Signal the stop event to break the wait in start()
1265
+ if self._stop_event and not self._stop_event.is_set():
1266
+ self._stop_event.set()
1267
+
1268
+ # Allow time for cleanup if waiting
1188
1269
  if wait:
1189
- await asyncio.sleep(0)
1270
+ await asyncio.sleep(0.1)
1190
1271
 
1191
- except Exception as e:
1272
+ self.__logger.info("Scheduler shutdown completed successfully.")
1192
1273
 
1193
- # Raise a runtime error if the shutdown process fails.
1274
+ except Exception as e:
1194
1275
  raise CLIOrionisRuntimeError(f"Failed to shut down the scheduler: {str(e)}") from e
1195
1276
 
1196
1277
  def pause(self, signature: str) -> bool:
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.520.0"
8
+ VERSION = "0.521.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.520.0
3
+ Version: 0.521.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
File without changes
File without changes
File without changes
File without changes
File without changes