orionis 0.281.0__tar.gz → 0.283.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 (441) hide show
  1. orionis-0.283.0/MANIFEST.in +3 -0
  2. {orionis-0.281.0/orionis.egg-info → orionis-0.283.0}/PKG-INFO +1 -1
  3. orionis-0.283.0/orionis/application.py +10 -0
  4. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/testing/entities/testing.py +9 -0
  5. {orionis-0.281.0 → orionis-0.283.0}/orionis/metadata/framework.py +1 -1
  6. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/environment/dot_env.py +36 -6
  7. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/environment/env.py +4 -4
  8. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/entities/test_result.py +7 -0
  9. orionis-0.283.0/orionis/test/logs/contracts/history.py +81 -0
  10. orionis-0.283.0/orionis/test/logs/history.py +251 -0
  11. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/suites/test_suite.py +17 -5
  12. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/suites/test_unit.py +63 -15
  13. orionis-0.283.0/orionis/test/view/index.html +127 -0
  14. {orionis-0.281.0 → orionis-0.283.0}/orionis/unittesting.py +5 -1
  15. {orionis-0.281.0 → orionis-0.283.0/orionis.egg-info}/PKG-INFO +1 -1
  16. {orionis-0.281.0 → orionis-0.283.0}/orionis.egg-info/SOURCES.txt +6 -0
  17. {orionis-0.281.0 → orionis-0.283.0}/tests/services/environment/test_env.py +3 -3
  18. orionis-0.283.0/tests/support/inspection/__init__.py +0 -0
  19. orionis-0.283.0/tests/support/inspection/fakes/__init__.py +0 -0
  20. orionis-0.283.0/tests/testing/__init__.py +0 -0
  21. orionis-0.281.0/MANIFEST.in +0 -3
  22. orionis-0.281.0/orionis/application.py +0 -15
  23. {orionis-0.281.0 → orionis-0.283.0}/LICENCE +0 -0
  24. {orionis-0.281.0 → orionis-0.283.0}/README.md +0 -0
  25. {orionis-0.281.0 → orionis-0.283.0}/orionis/__init__.py +0 -0
  26. {orionis-0.281.0 → orionis-0.283.0}/orionis/_application.py +0 -0
  27. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/__init__.py +0 -0
  28. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/container.py +0 -0
  29. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/container_integrity.py +0 -0
  30. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/exception.py +0 -0
  31. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/lifetimes.py +0 -0
  32. {orionis-0.281.0 → orionis-0.283.0}/orionis/_container/resolve.py +0 -0
  33. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/__init__.py +0 -0
  34. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/application.py +0 -0
  35. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/config/__init__.py +0 -0
  36. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/config/config.py +0 -0
  37. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/__init__.py +0 -0
  38. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/base/__init__.py +0 -0
  39. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/base/command.py +0 -0
  40. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/command_filter.py +0 -0
  41. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/kernel.py +0 -0
  42. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/output/__init__.py +0 -0
  43. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/output/console.py +0 -0
  44. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/output/executor.py +0 -0
  45. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
  46. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/parser.py +0 -0
  47. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/console/task_manager.py +0 -0
  48. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/container/container.py +0 -0
  49. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/container/container_integrity.py +0 -0
  50. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/__init__.py +0 -0
  51. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  52. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  53. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  54. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  55. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  56. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  57. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  58. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/facade.py +0 -0
  59. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  60. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  61. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  62. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  63. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  64. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  65. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/__init__.py +0 -0
  66. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  67. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  68. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  69. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  70. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  71. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  72. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  73. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  74. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  75. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/providers/__init__.py +0 -0
  76. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/providers/service_provider.py +0 -0
  77. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/__init__.py +0 -0
  78. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  79. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  80. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  81. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/config/__init__.py +0 -0
  82. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/config/config_service.py +0 -0
  83. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  84. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  85. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/files/__init__.py +0 -0
  86. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  87. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/log/__init__.py +0 -0
  88. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/services/log/log_service.py +0 -0
  89. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/support/exception_parse.py +0 -0
  90. {orionis-0.281.0 → orionis-0.283.0}/orionis/_contracts/support/reflection.py +0 -0
  91. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/__init__.py +0 -0
  92. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/app_facade.py +0 -0
  93. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/commands/__init__.py +0 -0
  94. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/commands/commands_facade.py +0 -0
  95. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
  96. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/config/__init__.py +0 -0
  97. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/config/config_facade.py +0 -0
  98. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/environment/__init__.py +0 -0
  99. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/environment/environment_facade.py +0 -0
  100. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/files/__init__.py +0 -0
  101. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/files/path_facade.py +0 -0
  102. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/log/__init__.py +0 -0
  103. {orionis-0.281.0 → orionis-0.283.0}/orionis/_facades/log/log_facade.py +0 -0
  104. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/__init__.py +0 -0
  105. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/console/__init__.py +0 -0
  106. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  107. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/environment/__init__.py +0 -0
  108. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  109. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  110. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  111. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  112. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  113. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  114. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/providers/__init__.py +0 -0
  115. {orionis-0.281.0 → orionis-0.283.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  116. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/__init__.py +0 -0
  117. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/commands/__init__.py +0 -0
  118. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
  119. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
  120. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/config/__init__.py +0 -0
  121. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/config/config_service_provider.py +0 -0
  122. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/environment/__init__.py +0 -0
  123. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
  124. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/files/__init__.py +0 -0
  125. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/files/paths_provider.py +0 -0
  126. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/log/__init__.py +0 -0
  127. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/log/log_service_provider.py +0 -0
  128. {orionis-0.281.0 → orionis-0.283.0}/orionis/_providers/service_provider.py +0 -0
  129. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/__init__.py +0 -0
  130. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/commands/__init__.py +0 -0
  131. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  132. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/commands/scheduler_service.py +0 -0
  133. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/config/__init__.py +0 -0
  134. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/config/config_service.py +0 -0
  135. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/log/__init__.py +0 -0
  136. {orionis-0.281.0 → orionis-0.283.0}/orionis/_services/log/log_service.py +0 -0
  137. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/__init__.py +0 -0
  138. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/base/__init__.py +0 -0
  139. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/base/command.py +0 -0
  140. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/command_filter.py +0 -0
  141. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/commands/__init__.py +0 -0
  142. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/commands/cache_clear.py +0 -0
  143. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/commands/help.py +0 -0
  144. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/commands/schedule_work.py +0 -0
  145. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/commands/version.py +0 -0
  146. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/dumper/__init__.py +0 -0
  147. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/dumper/dump_die.py +0 -0
  148. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/exceptions/__init__.py +0 -0
  149. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
  150. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/exceptions/cli_exception.py +0 -0
  151. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  152. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  153. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/kernel.py +0 -0
  154. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/output/__init__.py +0 -0
  155. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/output/console.py +0 -0
  156. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/output/executor.py +0 -0
  157. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/output/progress_bar.py +0 -0
  158. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/output/styles.py +0 -0
  159. {orionis-0.281.0 → orionis-0.283.0}/orionis/console/parser.py +0 -0
  160. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/__init__.py +0 -0
  161. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/__init__.py +0 -0
  162. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/__init__.py +0 -0
  163. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  164. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/entities/app.py +0 -0
  165. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  166. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  167. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  168. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/auth/__init__.py +0 -0
  169. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  170. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  171. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/__init__.py +0 -0
  172. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  173. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  174. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  175. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  176. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  177. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  178. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/contracts/__init__.py +0 -0
  179. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/contracts/config.py +0 -0
  180. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cors/__init__.py +0 -0
  181. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  182. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  183. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/__init__.py +0 -0
  184. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  185. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  186. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/database.py +0 -0
  187. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  188. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  189. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  190. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  191. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  192. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  193. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  194. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  195. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  196. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  197. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  198. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  199. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  200. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  201. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  202. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  203. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/exceptions/__init__.py +0 -0
  204. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/exceptions/integrity.py +0 -0
  205. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  206. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  207. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  208. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  209. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  210. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  211. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  212. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/__init__.py +0 -0
  213. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  214. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  215. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  216. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  217. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  218. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  219. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  220. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  221. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  222. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  223. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  224. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/__init__.py +0 -0
  225. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  226. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  227. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  228. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  229. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  230. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/__init__.py +0 -0
  231. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  232. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  233. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  234. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  235. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  236. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/roots/__init__.py +0 -0
  237. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/roots/paths.py +0 -0
  238. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/__init__.py +0 -0
  239. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  240. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/entities/session.py +0 -0
  241. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  242. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  243. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  244. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/startup.py +0 -0
  245. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/testing/__init__.py +0 -0
  246. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  247. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  248. {orionis-0.281.0 → orionis-0.283.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  249. {orionis-0.281.0 → orionis-0.283.0}/orionis/metadata/__init__.py +0 -0
  250. {orionis-0.281.0 → orionis-0.283.0}/orionis/metadata/package.py +0 -0
  251. {orionis-0.281.0 → orionis-0.283.0}/orionis/patterns/__init__.py +0 -0
  252. {orionis-0.281.0 → orionis-0.283.0}/orionis/patterns/singleton/__init__.py +0 -0
  253. {orionis-0.281.0 → orionis-0.283.0}/orionis/patterns/singleton/meta_class.py +0 -0
  254. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/__init__.py +0 -0
  255. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/asynchrony/__init__.py +0 -0
  256. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/asynchrony/async_io.py +0 -0
  257. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/environment/__init__.py +0 -0
  258. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/environment/contracts/__init__.py +0 -0
  259. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/environment/contracts/env.py +0 -0
  260. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/__init__.py +0 -0
  261. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/abstracts/__init__.py +0 -0
  262. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/abstracts/entities/__init__.py +0 -0
  263. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/abstracts/entities/abstract_class_attributes.py +0 -0
  264. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/abstracts/reflect_abstract.py +0 -0
  265. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  266. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  267. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/contracts/reflect_dependencies.py +0 -0
  268. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  269. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  270. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  271. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
  272. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
  273. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/parsers/__init__.py +0 -0
  274. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/parsers/contracts/__init__.py +0 -0
  275. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
  276. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/parsers/exception.py +0 -0
  277. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/parsers/serializer.py +0 -0
  278. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/paths/__init__.py +0 -0
  279. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/paths/contracts/__init__.py +0 -0
  280. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/paths/contracts/resolver.py +0 -0
  281. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/paths/resolver.py +0 -0
  282. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/standard/__init__.py +0 -0
  283. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/standard/contracts/__init__.py +0 -0
  284. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/standard/contracts/std.py +0 -0
  285. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/standard/std.py +0 -0
  286. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/__init__.py +0 -0
  287. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/contracts/__init__.py +0 -0
  288. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/contracts/imports.py +0 -0
  289. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/contracts/workers.py +0 -0
  290. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/imports.py +0 -0
  291. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/runtime_imports.py +0 -0
  292. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/system/workers.py +0 -0
  293. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/wrapper/__init__.py +0 -0
  294. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/wrapper/dicts/__init__.py +0 -0
  295. {orionis-0.281.0 → orionis-0.283.0}/orionis/services/wrapper/dicts/dot_dict.py +0 -0
  296. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/__init__.py +0 -0
  297. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/__init__.py +0 -0
  298. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/container_integrity.py +0 -0
  299. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/contracts/__init__.py +0 -0
  300. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/contracts/reflection.py +0 -0
  301. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/contracts/reflexion_abstract.py +0 -0
  302. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/helpers/__init__.py +0 -0
  303. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/helpers/functions.py +0 -0
  304. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/__init__.py +0 -0
  305. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/contracts/__init__.py +0 -0
  306. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/contracts/reflection_instance.py +0 -0
  307. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/entities/__init__.py +0 -0
  308. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/entities/class_attributes.py +0 -0
  309. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/entities/class_method.py +0 -0
  310. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/entities/class_parsed.py +0 -0
  311. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/entities/class_property.py +0 -0
  312. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/instances/reflection_instance.py +0 -0
  313. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflect_decorators.py +0 -0
  314. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflection.py +0 -0
  315. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflexion_concrete.py +0 -0
  316. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflexion_concrete_with_abstract.py +0 -0
  317. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflexion_instance_with_abstract.py +0 -0
  318. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflexion_module.py +0 -0
  319. {orionis-0.281.0 → orionis-0.283.0}/orionis/support/introspection/reflexion_module_with_classname.py +0 -0
  320. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/__init__.py +0 -0
  321. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/cases/__init__.py +0 -0
  322. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/cases/test_async.py +0 -0
  323. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/cases/test_case.py +0 -0
  324. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/cases/test_sync.py +0 -0
  325. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/entities/__init__.py +0 -0
  326. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/enums/__init__.py +0 -0
  327. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/enums/test_mode.py +0 -0
  328. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/enums/test_status.py +0 -0
  329. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/exceptions/__init__.py +0 -0
  330. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/exceptions/test_config_exception.py +0 -0
  331. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
  332. {orionis-0.281.0/orionis/test/output → orionis-0.283.0/orionis/test/logs}/__init__.py +0 -0
  333. {orionis-0.281.0/orionis/test/output → orionis-0.283.0/orionis/test/logs}/contracts/__init__.py +0 -0
  334. {orionis-0.281.0/orionis/test/suites → orionis-0.283.0/orionis/test/output}/__init__.py +0 -0
  335. {orionis-0.281.0/orionis/test/suites → orionis-0.283.0/orionis/test/output}/contracts/__init__.py +0 -0
  336. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/output/contracts/dumper.py +0 -0
  337. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/output/dumper.py +0 -0
  338. {orionis-0.281.0/tests → orionis-0.283.0/orionis/test/suites}/__init__.py +0 -0
  339. {orionis-0.281.0/tests/example → orionis-0.283.0/orionis/test/suites/contracts}/__init__.py +0 -0
  340. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/suites/contracts/test_suite.py +0 -0
  341. {orionis-0.281.0 → orionis-0.283.0}/orionis/test/suites/contracts/test_unit.py +0 -0
  342. {orionis-0.281.0/tests/foundation → orionis-0.283.0/orionis/test/view}/__init__.py +0 -0
  343. {orionis-0.281.0 → orionis-0.283.0}/orionis.egg-info/dependency_links.txt +0 -0
  344. {orionis-0.281.0 → orionis-0.283.0}/orionis.egg-info/requires.txt +0 -0
  345. {orionis-0.281.0 → orionis-0.283.0}/orionis.egg-info/top_level.txt +0 -0
  346. {orionis-0.281.0 → orionis-0.283.0}/orionis.egg-info/zip-safe +0 -0
  347. {orionis-0.281.0 → orionis-0.283.0}/setup.cfg +0 -0
  348. {orionis-0.281.0 → orionis-0.283.0}/setup.py +0 -0
  349. {orionis-0.281.0/tests/foundation/config → orionis-0.283.0/tests}/__init__.py +0 -0
  350. {orionis-0.281.0/tests/foundation/config/app → orionis-0.283.0/tests/example}/__init__.py +0 -0
  351. {orionis-0.281.0 → orionis-0.283.0}/tests/example/test_example.py +0 -0
  352. {orionis-0.281.0/tests/foundation/config/auth → orionis-0.283.0/tests/foundation}/__init__.py +0 -0
  353. {orionis-0.281.0/tests/foundation/config/cache → orionis-0.283.0/tests/foundation/config}/__init__.py +0 -0
  354. {orionis-0.281.0/tests/foundation/config/cors → orionis-0.283.0/tests/foundation/config/app}/__init__.py +0 -0
  355. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/app/test_app.py +0 -0
  356. {orionis-0.281.0/tests/foundation/config/database → orionis-0.283.0/tests/foundation/config/auth}/__init__.py +0 -0
  357. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/auth/test_auth.py +0 -0
  358. {orionis-0.281.0/tests/foundation/config/exceptions → orionis-0.283.0/tests/foundation/config/cache}/__init__.py +0 -0
  359. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/cache/test_cache.py +0 -0
  360. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/cache/test_cache_file.py +0 -0
  361. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/cache/test_cache_stores.py +0 -0
  362. {orionis-0.281.0/tests/foundation/config/filesystems → orionis-0.283.0/tests/foundation/config/cors}/__init__.py +0 -0
  363. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/cors/test_cors.py +0 -0
  364. {orionis-0.281.0/tests/foundation/config/logging → orionis-0.283.0/tests/foundation/config/database}/__init__.py +0 -0
  365. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database.py +0 -0
  366. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database_connections.py +0 -0
  367. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database_mysql.py +0 -0
  368. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database_oracle.py +0 -0
  369. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database_pgsql.py +0 -0
  370. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/database/test_database_sqlite.py +0 -0
  371. {orionis-0.281.0/tests/foundation/config/mail → orionis-0.283.0/tests/foundation/config/exceptions}/__init__.py +0 -0
  372. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/exceptions/test_exceptions_integrity.py +0 -0
  373. {orionis-0.281.0/tests/foundation/config/queue → orionis-0.283.0/tests/foundation/config/filesystems}/__init__.py +0 -0
  374. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/filesystems/test_filesystems.py +0 -0
  375. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/filesystems/test_filesystems_aws.py +0 -0
  376. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/filesystems/test_filesystems_disks.py +0 -0
  377. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/filesystems/test_filesystems_local.py +0 -0
  378. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/filesystems/test_filesystems_public.py +0 -0
  379. {orionis-0.281.0/tests/foundation/config/root → orionis-0.283.0/tests/foundation/config/logging}/__init__.py +0 -0
  380. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging.py +0 -0
  381. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_channels.py +0 -0
  382. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_chunked.py +0 -0
  383. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_daily.py +0 -0
  384. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_hourly.py +0 -0
  385. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_monthly.py +0 -0
  386. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_stack.py +0 -0
  387. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/logging/test_logging_weekly.py +0 -0
  388. {orionis-0.281.0/tests/foundation/config/session → orionis-0.283.0/tests/foundation/config/mail}/__init__.py +0 -0
  389. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/mail/test_mail.py +0 -0
  390. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/mail/test_mail_file.py +0 -0
  391. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/mail/test_mail_mailers.py +0 -0
  392. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/mail/test_mail_smtp.py +0 -0
  393. {orionis-0.281.0/tests/foundation/config/startup → orionis-0.283.0/tests/foundation/config/queue}/__init__.py +0 -0
  394. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/queue/test_queue.py +0 -0
  395. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/queue/test_queue_brokers.py +0 -0
  396. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/queue/test_queue_database.py +0 -0
  397. {orionis-0.281.0/tests/foundation/config/testing → orionis-0.283.0/tests/foundation/config/root}/__init__.py +0 -0
  398. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/root/test_root_paths.py +0 -0
  399. {orionis-0.281.0/tests/patterns → orionis-0.283.0/tests/foundation/config/session}/__init__.py +0 -0
  400. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/session/test_session.py +0 -0
  401. {orionis-0.281.0/tests/patterns/singleton → orionis-0.283.0/tests/foundation/config/startup}/__init__.py +0 -0
  402. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/startup/test_config_startup.py +0 -0
  403. {orionis-0.281.0/tests/services → orionis-0.283.0/tests/foundation/config/testing}/__init__.py +0 -0
  404. {orionis-0.281.0 → orionis-0.283.0}/tests/foundation/config/testing/test_testing.py +0 -0
  405. {orionis-0.281.0/tests/services/asynchrony → orionis-0.283.0/tests/patterns}/__init__.py +0 -0
  406. {orionis-0.281.0/tests/services/environment → orionis-0.283.0/tests/patterns/singleton}/__init__.py +0 -0
  407. {orionis-0.281.0 → orionis-0.283.0}/tests/patterns/singleton/test_singleton.py +0 -0
  408. {orionis-0.281.0/tests/services/inspection → orionis-0.283.0/tests/services}/__init__.py +0 -0
  409. {orionis-0.281.0/tests/services/inspection/dependencies → orionis-0.283.0/tests/services/asynchrony}/__init__.py +0 -0
  410. {orionis-0.281.0 → orionis-0.283.0}/tests/services/asynchrony/test_async_io.py +0 -0
  411. {orionis-0.281.0/tests/services/inspection/dependencies/mocks → orionis-0.283.0/tests/services/environment}/__init__.py +0 -0
  412. {orionis-0.281.0/tests/services/parsers → orionis-0.283.0/tests/services/inspection}/__init__.py +0 -0
  413. {orionis-0.281.0/tests/services/parsers/mocks → orionis-0.283.0/tests/services/inspection/dependencies}/__init__.py +0 -0
  414. {orionis-0.281.0/tests/services/path → orionis-0.283.0/tests/services/inspection/dependencies/mocks}/__init__.py +0 -0
  415. {orionis-0.281.0 → orionis-0.283.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  416. {orionis-0.281.0 → orionis-0.283.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  417. {orionis-0.281.0 → orionis-0.283.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  418. {orionis-0.281.0 → orionis-0.283.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  419. {orionis-0.281.0/tests/services/standard → orionis-0.283.0/tests/services/parsers}/__init__.py +0 -0
  420. {orionis-0.281.0/tests/services/wrapper → orionis-0.283.0/tests/services/parsers/mocks}/__init__.py +0 -0
  421. {orionis-0.281.0 → orionis-0.283.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
  422. {orionis-0.281.0 → orionis-0.283.0}/tests/services/parsers/test_exception_parser.py +0 -0
  423. {orionis-0.281.0/tests/support → orionis-0.283.0/tests/services/path}/__init__.py +0 -0
  424. {orionis-0.281.0 → orionis-0.283.0}/tests/services/path/test_resolver.py +0 -0
  425. {orionis-0.281.0/tests/support/inspection → orionis-0.283.0/tests/services/standard}/__init__.py +0 -0
  426. {orionis-0.281.0 → orionis-0.283.0}/tests/services/standard/test_std.py +0 -0
  427. {orionis-0.281.0/tests/support/inspection/fakes → orionis-0.283.0/tests/services/wrapper}/__init__.py +0 -0
  428. {orionis-0.281.0 → orionis-0.283.0}/tests/services/wrapper/test_wrapper_doc_dict.py +0 -0
  429. {orionis-0.281.0/tests/testing → orionis-0.283.0/tests/support}/__init__.py +0 -0
  430. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/fakes/fake_reflect_abstract.py +0 -0
  431. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/fakes/fake_reflect_instance.py +0 -0
  432. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
  433. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
  434. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
  435. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/test_reflect_abstract.py +0 -0
  436. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/test_reflect_instance.py +0 -0
  437. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/test_reflection_concrete.py +0 -0
  438. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +0 -0
  439. {orionis-0.281.0 → orionis-0.283.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +0 -0
  440. {orionis-0.281.0 → orionis-0.283.0}/tests/testing/test_testing_result.py +0 -0
  441. {orionis-0.281.0 → orionis-0.283.0}/tests/testing/test_testing_unit.py +0 -0
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ include LICENSE
3
+ recursive-include orionis *.py *.html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.281.0
3
+ Version: 0.283.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -0,0 +1,10 @@
1
+ from orionis.foundation.config.startup import Configuration
2
+ from orionis.patterns.singleton.meta_class import Singleton
3
+
4
+ class Orionis(metaclass=Singleton):
5
+
6
+ def __init__(
7
+ self,
8
+ config: Configuration = None
9
+ ):
10
+ self.__config = config or Configuration()
@@ -127,6 +127,15 @@ class Testing:
127
127
  }
128
128
  )
129
129
 
130
+ persistent: bool = field(
131
+ default=False,
132
+ metadata={
133
+ "description": "Whether to keep the test results persistent. Default is False.",
134
+ "required": True,
135
+ "default": False
136
+ }
137
+ )
138
+
130
139
  def __post_init__(self):
131
140
  """
132
141
  Post-initialization validation for the testing configuration entity.
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.281.0"
8
+ VERSION = "0.283.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -39,7 +39,7 @@ class DotEnv(metaclass=Singleton):
39
39
 
40
40
  load_dotenv(self._resolved_path)
41
41
 
42
- def get(self, key: str, default: Optional[Any] = None) -> Any:
42
+ def get(self, key: str, default: Optional[Any] = None, is_path:bool=False) -> Any:
43
43
  """
44
44
  Retrieve the value of an environment variable by key.
45
45
 
@@ -54,6 +54,8 @@ class DotEnv(metaclass=Singleton):
54
54
  key (str): The name of the environment variable to retrieve.
55
55
  default (Optional[Any], optional): The value to return if the key is not found.
56
56
  Defaults to None.
57
+ is_path (bool, optional): If True, the value is treated as a file path and backslashes are replaced with forward slashes.
58
+ This is useful for Windows paths. Defaults to False.
57
59
 
58
60
  Returns:
59
61
  Any: The parsed value of the environment variable, or the default if not found.
@@ -62,9 +64,9 @@ class DotEnv(metaclass=Singleton):
62
64
  value = dotenv_values(self._resolved_path).get(key)
63
65
  if value is None:
64
66
  value = os.getenv(key)
65
- return self.__parseValue(value) if value is not None else default
67
+ return self.__parseValue(value, is_path) if value is not None else default
66
68
 
67
- def set(self, key: str, value: Union[str, int, float, bool, list, dict]) -> bool:
69
+ def set(self, key: str, value: Union[str, int, float, bool, list, dict], is_path:bool=False) -> bool:
68
70
  """
69
71
  Sets an environment variable with the specified key and value.
70
72
 
@@ -73,12 +75,15 @@ class DotEnv(metaclass=Singleton):
73
75
  Args:
74
76
  key (str): The name of the environment variable to set.
75
77
  value (Union[str, int, float, bool, list, dict]): The value to assign to the environment variable. Supported types include string, integer, float, boolean, list, and dictionary.
78
+ is_path (bool, optional): If True, the value is treated as a file path and backslashes are replaced with forward slashes.
79
+ This is useful for Windows paths. Defaults to False.
76
80
 
77
81
  Returns:
78
82
  bool: True if the environment variable was successfully set.
79
83
  """
84
+
80
85
  with self._lock:
81
- serialized_value = self.__serializeValue(value)
86
+ serialized_value = self.__serializeValue(value, is_path)
82
87
  set_key(str(self._resolved_path), key, serialized_value)
83
88
  os.environ[key] = str(value)
84
89
  return True
@@ -133,7 +138,7 @@ class DotEnv(metaclass=Singleton):
133
138
  with self._lock:
134
139
  return base64.b64encode(json.dumps(self.all()).encode()).decode()
135
140
 
136
- def __parseValue(self, value: Any) -> Any:
141
+ def __parseValue(self, value: Any, is_path:bool=False) -> Any:
137
142
  """
138
143
  Parses and converts the input value to an appropriate Python data type.
139
144
 
@@ -151,38 +156,51 @@ class DotEnv(metaclass=Singleton):
151
156
  """
152
157
  if value is None:
153
158
  return None
159
+
154
160
  if isinstance(value, (bool, int, float)):
155
161
  return value
162
+
156
163
  value_str = str(value).strip()
157
164
  if not value_str or value_str.lower() in {'none', 'null', 'nan'}:
158
165
  return None
166
+
159
167
  if value_str.lower() == 'true':
160
168
  return True
169
+
161
170
  if value_str.lower() == 'false':
162
171
  return False
172
+
173
+ if is_path:
174
+ return value_str.replace("\\", "/")
175
+
163
176
  try:
164
177
  if value_str.isdigit() or (value_str.startswith('-') and value_str[1:].isdigit()):
165
178
  return int(value_str)
166
179
  except Exception:
167
180
  pass
181
+
168
182
  try:
169
183
  float_val = float(value_str)
170
184
  if '.' in value_str or 'e' in value_str.lower():
171
185
  return float_val
172
186
  except Exception:
173
187
  pass
188
+
174
189
  try:
175
190
  return ast.literal_eval(value_str)
176
191
  except Exception:
177
192
  pass
193
+
178
194
  return value_str
179
195
 
180
- def __serializeValue(self, value: Any) -> str:
196
+ def __serializeValue(self, value: Any, is_path:bool=False) -> str:
181
197
  """
182
198
  Serializes a given value to a string suitable for storage in a .env file.
183
199
 
184
200
  Parameters:
185
201
  value (Any): The value to serialize. Supported types are None, str, bool, int, float, list, and dict.
202
+ is_path (bool): If True, the value is treated as a file path and backslashes are replaced with forward slashes.
203
+ This is useful for Windows paths.
186
204
 
187
205
  Returns:
188
206
  str: The serialized string representation of the value.
@@ -191,27 +209,39 @@ class DotEnv(metaclass=Singleton):
191
209
  ValueError: If a float value is in scientific notation.
192
210
  TypeError: If the value's type is not serializable for .env files.
193
211
  """
212
+ if is_path:
213
+ return str(value).replace("\\", "/")
214
+
194
215
  if value is None:
195
216
  return "None"
217
+
196
218
  if isinstance(value, str):
197
219
  return value
220
+
198
221
  if isinstance(value, bool):
199
222
  return str(value).lower()
223
+
200
224
  if isinstance(value, int):
201
225
  return str(value)
226
+
202
227
  if isinstance(value, float):
203
228
  value = str(value)
204
229
  if 'e' in value or 'E' in value:
205
230
  raise ValueError('scientific notation is not supported, use a string instead')
206
231
  return value
232
+
207
233
  if isinstance(value, (list, dict)):
208
234
  return repr(value)
235
+
209
236
  if hasattr(value, '__dict__'):
210
237
  raise TypeError(f"Type {type(value).__name__} is not serializable for .env")
238
+
211
239
  if not isinstance(value, (list, dict, bool, int, float, str)):
212
240
  raise TypeError(f"Type {type(value).__name__} is not serializable for .env")
241
+
213
242
  if isinstance(value, (list, dict, bool, int, float, str)):
214
243
  if type(value).__module__ != "builtins" and not isinstance(value, str):
215
244
  raise TypeError(f"Type {type(value).__name__} is not serializable for .env")
216
245
  return repr(value) if not isinstance(value, str) else value
246
+
217
247
  raise TypeError(f"Type {type(value).__name__} is not serializable for .env")
@@ -24,18 +24,18 @@ class Env(IEnv):
24
24
  return cls._dotenv_instance
25
25
 
26
26
  @staticmethod
27
- def get(key: str, default: Any = None) -> Any:
27
+ def get(key: str, default: Any = None, is_path: bool = False) -> Any:
28
28
  """
29
29
  Retrieve the value of an environment variable by key.
30
30
  """
31
- return Env._dotenv().get(key, default)
31
+ return Env._dotenv().get(key, default, is_path)
32
32
 
33
33
  @staticmethod
34
- def set(key: str, value: str) -> bool:
34
+ def set(key: str, value: str, is_path: bool = False) -> bool:
35
35
  """
36
36
  Sets the value of an environment variable.
37
37
  """
38
- return Env._dotenv().set(key, value)
38
+ return Env._dotenv().set(key, value, is_path)
39
39
 
40
40
  @staticmethod
41
41
  def unset(key: str) -> bool:
@@ -73,3 +73,10 @@ class TestResult:
73
73
  "description": "Path to the file containing the test, if applicable."
74
74
  }
75
75
  )
76
+
77
+ doc_string: Optional[str] = field(
78
+ default=None,
79
+ metadata={
80
+ "description": "Docstring of the test, if applicable."
81
+ }
82
+ )
@@ -0,0 +1,81 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Dict, List, Tuple
3
+
4
+ class ITestHistory(ABC):
5
+
6
+ @abstractmethod
7
+ def createTableIfNotExists(self) -> None:
8
+ """
9
+ Create the 'reportes' table if it does not already exist.
10
+
11
+ The table includes fields for the full JSON report and individual
12
+ statistics for querying and filtering.
13
+
14
+ Raises
15
+ ------
16
+ RuntimeError
17
+ If table creation fails due to a database error.
18
+ """
19
+ pass
20
+
21
+ @abstractmethod
22
+ def insertReport(self, report: Dict) -> None:
23
+ """
24
+ Insert a test report into the database.
25
+
26
+ Parameters
27
+ ----------
28
+ report : dict
29
+ Dictionary containing test statistics and metadata.
30
+
31
+ Required keys:
32
+ - total_tests : int
33
+ - passed : int
34
+ - failed : int
35
+ - errors : int
36
+ - skipped : int
37
+ - total_time : float
38
+ - success_rate : float
39
+ - timestamp : str (ISO format)
40
+
41
+ Raises
42
+ ------
43
+ ValueError
44
+ If required keys are missing from the report.
45
+ RuntimeError
46
+ If insertion into the database fails.
47
+ """
48
+ pass
49
+
50
+ def getReports(self) -> List[Tuple]:
51
+ """
52
+ Retrieve all test reports from the database.
53
+
54
+ Returns
55
+ -------
56
+ List[Tuple]
57
+ A list of tuples representing each row in the `reportes` table.
58
+
59
+ Raises
60
+ ------
61
+ RuntimeError
62
+ If retrieval fails due to a database error.
63
+ """
64
+ pass
65
+
66
+ def resetDatabase(self) -> None:
67
+ """
68
+ Drop the `reportes` table, effectively clearing the report history.
69
+
70
+ Raises
71
+ ------
72
+ RuntimeError
73
+ If table deletion fails.
74
+ """
75
+ pass
76
+
77
+ def close(self) -> None:
78
+ """
79
+ Close the SQLite database connection gracefully.
80
+ """
81
+ pass
@@ -0,0 +1,251 @@
1
+ import json
2
+ import sqlite3
3
+ from pathlib import Path
4
+ from typing import Dict, List, Tuple, Optional
5
+ from contextlib import closing
6
+ from orionis.services.environment.env import Env
7
+ from orionis.test.logs.contracts.history import ITestHistory
8
+
9
+ class TestHistory(ITestHistory):
10
+ """
11
+ A utility class for managing test execution reports using a local SQLite database.
12
+
13
+ Attributes
14
+ ----------
15
+ TABLE_NAME : str
16
+ The name of the database table where reports are stored.
17
+ DB_NAME : str
18
+ The filename of the SQLite database.
19
+ FIELDS : List[str]
20
+ List of expected keys in the report dictionary.
21
+ _conn : sqlite3.Connection or None
22
+ SQLite database connection instance.
23
+ """
24
+
25
+ TABLE_NAME = "reportes"
26
+ DB_NAME = "tests.sqlite"
27
+ FIELDS = [
28
+ "json", "total_tests", "passed", "failed", "errors",
29
+ "skipped", "total_time", "success_rate", "timestamp"
30
+ ]
31
+
32
+ def __init__(self, test_db_path: Optional[str] = None) -> None:
33
+ """
34
+ Initializes the class instance, setting up the path to the test database.
35
+ Parameters:
36
+ test_db_path (Optional[str]): Optional path to the test database file or directory. If a directory is provided, the database file name is appended. If not provided, the method checks the 'TEST_DB_PATH' environment variable, or defaults to a database file in the current file's directory.
37
+ Behavior:
38
+ - Resolves the database path to an absolute path.
39
+ - Ensures the parent directory for the database exists.
40
+ - Stores the resolved database path in the 'TEST_DB_PATH' environment variable.
41
+ - Prepares the instance for database connection initialization.
42
+ """
43
+
44
+ if test_db_path:
45
+
46
+ # Resolve the provided test_db_path to an absolute path
47
+ db_path = Path(test_db_path).resolve()
48
+
49
+ # If the provided path is a directory, append the database name
50
+ if db_path.is_dir():
51
+ db_path = db_path / self.DB_NAME
52
+
53
+ else:
54
+
55
+ # Check if the TEST_DB_PATH environment variable is set
56
+ env_path = Env.get(
57
+ key="TEST_DB_PATH",
58
+ default=None,
59
+ is_path=True
60
+ )
61
+
62
+ # If the environment variable is set, resolve it to an absolute path
63
+ if env_path:
64
+ db_path = Path(env_path).resolve()
65
+ if db_path.is_dir():
66
+ db_path = db_path / self.DB_NAME
67
+ else:
68
+ db_path = Path(__file__).parent / self.DB_NAME
69
+
70
+ # Ensure directory exists
71
+ db_path.parent.mkdir(parents=True, exist_ok=True)
72
+
73
+ # Store the absolute string path in the environment
74
+ Env.set(
75
+ key="TEST_DB_PATH",
76
+ value=str(db_path),
77
+ is_path=True
78
+ )
79
+
80
+ # Initialize the database connection.
81
+ self._conn: Optional[sqlite3.Connection] = None
82
+
83
+ def __connect(self) -> None:
84
+ """
85
+ Establishes a connection to the SQLite database using the path specified in the
86
+ 'TEST_DB_PATH' environment variable. If the environment variable is not set,
87
+ raises a ConnectionError. If a connection error occurs during the attempt to
88
+ connect, raises a ConnectionError with the error details.
89
+ Raises:
90
+ ConnectionError: If the database path is not set or if a connection error occurs.
91
+ """
92
+
93
+ if self._conn is None:
94
+
95
+ # Check if the TEST_DB_PATH environment variable is set
96
+ db_path = Env.get(
97
+ key="TEST_DB_PATH",
98
+ default=None,
99
+ is_path=True
100
+ )
101
+
102
+ # If not set, raise an error
103
+ if not db_path:
104
+ raise ConnectionError("Database path is not set in environment variables.")
105
+
106
+ # Try to connect to the SQLite database
107
+ try:
108
+ self._conn = sqlite3.connect(db_path)
109
+ except sqlite3.Error as e:
110
+ raise ConnectionError(f"Database connection error: {e}")
111
+
112
+ def createTableIfNotExists(self) -> None:
113
+ """
114
+ Creates the history table in the database if it does not already exist.
115
+ This method establishes a connection to the database and attempts to create a table
116
+ with the schema defined by `self.TABLE_NAME`. The table includes columns for test
117
+ results and metadata such as total tests, passed, failed, errors, skipped, total time,
118
+ success rate, and timestamp. If the table already exists, no changes are made.
119
+ Raises a RuntimeError if the table creation fails due to a database error.
120
+ """
121
+
122
+ self.__connect()
123
+ try:
124
+ with closing(self._conn.cursor()) as cursor:
125
+ cursor.execute(f'''
126
+ CREATE TABLE IF NOT EXISTS {self.TABLE_NAME} (
127
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
128
+ json TEXT NOT NULL,
129
+ total_tests INTEGER,
130
+ passed INTEGER,
131
+ failed INTEGER,
132
+ errors INTEGER,
133
+ skipped INTEGER,
134
+ total_time REAL,
135
+ success_rate REAL,
136
+ timestamp TEXT
137
+ )
138
+ ''')
139
+ self._conn.commit()
140
+ except sqlite3.Error as e:
141
+ raise RuntimeError(f"Failed to create table: {e}")
142
+
143
+ def insertReport(self, report: Dict) -> None:
144
+ """
145
+ Inserts a test report into the database.
146
+ Args:
147
+ report (Dict): A dictionary containing the report data. Must include the following keys:
148
+ - total_tests
149
+ - passed
150
+ - failed
151
+ - errors
152
+ - skipped
153
+ - total_time
154
+ - success_rate
155
+ - timestamp
156
+ Raises:
157
+ ValueError: If any required report fields are missing.
158
+ RuntimeError: If there is an error inserting the report into the database.
159
+ """
160
+
161
+ self.__connect()
162
+ missing = [key for key in self.FIELDS if key != "json" and key not in report]
163
+ if missing:
164
+ raise ValueError(f"Missing report fields: {missing}")
165
+
166
+ try:
167
+ with closing(self._conn.cursor()) as cursor:
168
+ cursor.execute(f'''
169
+ INSERT INTO {self.TABLE_NAME} (
170
+ json, total_tests, passed, failed, errors,
171
+ skipped, total_time, success_rate, timestamp
172
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
173
+ ''', (
174
+ json.dumps(report),
175
+ report["total_tests"],
176
+ report["passed"],
177
+ report["failed"],
178
+ report["errors"],
179
+ report["skipped"],
180
+ report["total_time"],
181
+ report["success_rate"],
182
+ report["timestamp"]
183
+ ))
184
+ self._conn.commit()
185
+ except sqlite3.Error as e:
186
+ raise RuntimeError(f"Failed to insert report: {e}")
187
+
188
+ def getReportsWhere(self, where: Optional[str] = None, params: Optional[Tuple] = None) -> List[Tuple]:
189
+ """
190
+ Retrieves reports from the database table with optional WHERE conditions.
191
+ Args:
192
+ where (Optional[str]): SQL WHERE clause (without the 'WHERE' keyword).
193
+ params (Optional[Tuple]): Parameters to substitute in the WHERE clause.
194
+ Returns:
195
+ List[Tuple]: A list of tuples, each representing a row from the reports table.
196
+ Raises:
197
+ RuntimeError: If there is an error retrieving the reports from the database.
198
+ """
199
+ self.__connect()
200
+ try:
201
+ with closing(self._conn.cursor()) as cursor:
202
+ query = f'SELECT * FROM {self.TABLE_NAME}'
203
+ if where:
204
+ query += f' WHERE {where}'
205
+ cursor.execute(query, params or ())
206
+ return cursor.fetchall()
207
+ except sqlite3.Error as e:
208
+ raise RuntimeError(f"Failed to retrieve reports: {e}")
209
+
210
+ def getReports(self) -> List[Tuple]:
211
+ """
212
+ Retrieves all reports from the database table.
213
+ Returns:
214
+ List[Tuple]: A list of tuples, each representing a row from the reports table.
215
+ Raises:
216
+ RuntimeError: If there is an error retrieving the reports from the database.
217
+ """
218
+
219
+ self.__connect()
220
+ try:
221
+ with closing(self._conn.cursor()) as cursor:
222
+ cursor.execute(f'SELECT * FROM {self.TABLE_NAME}')
223
+ return cursor.fetchall()
224
+ except sqlite3.Error as e:
225
+ raise RuntimeError(f"Failed to retrieve reports: {e}")
226
+
227
+ def resetDatabase(self) -> None:
228
+ """
229
+ Resets the database by dropping the table specified by TABLE_NAME if it exists.
230
+ This method establishes a connection to the database, attempts to drop the table,
231
+ and commits the changes. If an error occurs during the process, a RuntimeError is raised.
232
+ Raises:
233
+ RuntimeError: If the database reset operation fails.
234
+ """
235
+
236
+ self.__connect()
237
+ try:
238
+ with closing(self._conn.cursor()) as cursor:
239
+ cursor.execute(f'DROP TABLE IF EXISTS {self.TABLE_NAME}')
240
+ self._conn.commit()
241
+ except sqlite3.Error as e:
242
+ raise RuntimeError(f"Failed to reset database: {e}")
243
+
244
+ def close(self) -> None:
245
+ """
246
+ Closes the current database connection if it exists and sets the connection attribute to None.
247
+ """
248
+
249
+ if self._conn:
250
+ self._conn.close()
251
+ self._conn = None
@@ -1,9 +1,9 @@
1
1
  import re
2
2
  from os import walk
3
3
  from orionis.foundation.config.testing.entities.testing import Testing as Configuration
4
+ from orionis.test.exceptions.test_config_exception import OrionisTestConfigException
4
5
  from orionis.test.suites.contracts.test_suite import ITestSuite
5
6
  from orionis.test.suites.test_unit import UnitTest
6
- from orionis.test.exceptions.test_config_exception import OrionisTestConfigException
7
7
 
8
8
  class TestSuite(ITestSuite):
9
9
  """
@@ -27,7 +27,8 @@ class TestSuite(ITestSuite):
27
27
  Attributes:
28
28
  _config (Configuration): The configuration used by the object. If no configuration is provided, a new Configuration instance is created.
29
29
  """
30
- self._config = config or Configuration()
30
+ self.__config = config or Configuration()
31
+ self.__result = None
31
32
 
32
33
  def run(self) -> UnitTest:
33
34
  """
@@ -42,7 +43,7 @@ class TestSuite(ITestSuite):
42
43
  """
43
44
 
44
45
  # Check if the config is provided
45
- config = self._config
46
+ config = self.__config
46
47
 
47
48
  # Check if the config is an instance of Configuration
48
49
  if not isinstance(config, Configuration):
@@ -58,7 +59,8 @@ class TestSuite(ITestSuite):
58
59
  max_workers=config.max_workers,
59
60
  fail_fast=config.fail_fast,
60
61
  print_result=config.print_result,
61
- throw_exception=config.throw_exception
62
+ throw_exception=config.throw_exception,
63
+ persistent=config.persistent,
62
64
  )
63
65
 
64
66
  # Extract configuration values
@@ -98,4 +100,14 @@ class TestSuite(ITestSuite):
98
100
  )
99
101
 
100
102
  # Return the initialized test suite
101
- return tests.run()
103
+ self.__result = tests.run()
104
+ return self.__result
105
+
106
+ def getResult(self) -> UnitTest:
107
+ """
108
+ Returns the results of the executed test suite.
109
+
110
+ Returns:
111
+ UnitTest: The result of the executed test suite.
112
+ """
113
+ return self.__result