orionis 0.290.0__tar.gz → 0.292.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 (469) hide show
  1. {orionis-0.290.0/orionis.egg-info → orionis-0.292.0}/PKG-INFO +1 -1
  2. {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/framework.py +1 -1
  3. orionis-0.292.0/orionis/test/view/index.html +533 -0
  4. {orionis-0.290.0 → orionis-0.292.0/orionis.egg-info}/PKG-INFO +1 -1
  5. {orionis-0.290.0 → orionis-0.292.0}/tests/example/test_example.py +1 -1
  6. {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/test_metadata_package.py +61 -3
  7. orionis-0.290.0/orionis/test/view/index.html +0 -127
  8. {orionis-0.290.0 → orionis-0.292.0}/LICENCE +0 -0
  9. {orionis-0.290.0 → orionis-0.292.0}/MANIFEST.in +0 -0
  10. {orionis-0.290.0 → orionis-0.292.0}/README.md +0 -0
  11. {orionis-0.290.0 → orionis-0.292.0}/orionis/__init__.py +0 -0
  12. {orionis-0.290.0 → orionis-0.292.0}/orionis/_application.py +0 -0
  13. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/__init__.py +0 -0
  14. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/container.py +0 -0
  15. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/container_integrity.py +0 -0
  16. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/exception.py +0 -0
  17. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/lifetimes.py +0 -0
  18. {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/resolve.py +0 -0
  19. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/__init__.py +0 -0
  20. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/application.py +0 -0
  21. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/config/__init__.py +0 -0
  22. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/config/config.py +0 -0
  23. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/__init__.py +0 -0
  24. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/base/__init__.py +0 -0
  25. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/base/command.py +0 -0
  26. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/command_filter.py +0 -0
  27. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/kernel.py +0 -0
  28. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/__init__.py +0 -0
  29. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/console.py +0 -0
  30. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/executor.py +0 -0
  31. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
  32. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/parser.py +0 -0
  33. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/task_manager.py +0 -0
  34. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/container/container.py +0 -0
  35. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/container/container_integrity.py +0 -0
  36. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/__init__.py +0 -0
  37. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  38. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  39. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  40. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  41. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  42. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  43. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  44. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/facade.py +0 -0
  45. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  46. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  47. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  48. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  49. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  50. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  51. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/__init__.py +0 -0
  52. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  53. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  54. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  55. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  56. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  57. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  58. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  59. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  60. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  61. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/providers/__init__.py +0 -0
  62. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/providers/service_provider.py +0 -0
  63. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/__init__.py +0 -0
  64. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  65. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  66. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  67. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/config/__init__.py +0 -0
  68. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/config/config_service.py +0 -0
  69. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  70. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  71. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/files/__init__.py +0 -0
  72. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  73. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/log/__init__.py +0 -0
  74. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/log/log_service.py +0 -0
  75. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/support/exception_parse.py +0 -0
  76. {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/support/reflection.py +0 -0
  77. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/__init__.py +0 -0
  78. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/app_facade.py +0 -0
  79. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/__init__.py +0 -0
  80. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/commands_facade.py +0 -0
  81. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
  82. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/config/__init__.py +0 -0
  83. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/config/config_facade.py +0 -0
  84. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/environment/__init__.py +0 -0
  85. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/environment/environment_facade.py +0 -0
  86. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/files/__init__.py +0 -0
  87. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/files/path_facade.py +0 -0
  88. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/log/__init__.py +0 -0
  89. {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/log/log_facade.py +0 -0
  90. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/__init__.py +0 -0
  91. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/console/__init__.py +0 -0
  92. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  93. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/environment/__init__.py +0 -0
  94. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  95. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  96. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  97. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  98. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  99. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  100. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/providers/__init__.py +0 -0
  101. {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  102. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/__init__.py +0 -0
  103. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/__init__.py +0 -0
  104. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
  105. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
  106. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/config/__init__.py +0 -0
  107. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/config/config_service_provider.py +0 -0
  108. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/environment/__init__.py +0 -0
  109. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
  110. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/files/__init__.py +0 -0
  111. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/files/paths_provider.py +0 -0
  112. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/log/__init__.py +0 -0
  113. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/log/log_service_provider.py +0 -0
  114. {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/service_provider.py +0 -0
  115. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/__init__.py +0 -0
  116. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/__init__.py +0 -0
  117. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  118. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/scheduler_service.py +0 -0
  119. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/config/__init__.py +0 -0
  120. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/config/config_service.py +0 -0
  121. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/log/__init__.py +0 -0
  122. {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/log/log_service.py +0 -0
  123. {orionis-0.290.0 → orionis-0.292.0}/orionis/application.py +0 -0
  124. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/__init__.py +0 -0
  125. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/base/__init__.py +0 -0
  126. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/base/command.py +0 -0
  127. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/command_filter.py +0 -0
  128. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/__init__.py +0 -0
  129. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/cache_clear.py +0 -0
  130. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/help.py +0 -0
  131. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/schedule_work.py +0 -0
  132. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/version.py +0 -0
  133. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/dumper/__init__.py +0 -0
  134. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/dumper/dump_die.py +0 -0
  135. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/__init__.py +0 -0
  136. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
  137. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_exception.py +0 -0
  138. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  139. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  140. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/kernel.py +0 -0
  141. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/__init__.py +0 -0
  142. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/console.py +0 -0
  143. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/executor.py +0 -0
  144. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/progress_bar.py +0 -0
  145. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/styles.py +0 -0
  146. {orionis-0.290.0 → orionis-0.292.0}/orionis/console/parser.py +0 -0
  147. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/__init__.py +0 -0
  148. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/__init__.py +0 -0
  149. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/__init__.py +0 -0
  150. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  151. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/entities/app.py +0 -0
  152. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  153. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  154. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  155. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/__init__.py +0 -0
  156. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  157. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  158. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/__init__.py +0 -0
  159. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  160. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  161. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  162. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  163. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  164. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  165. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/contracts/__init__.py +0 -0
  166. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/contracts/config.py +0 -0
  167. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/__init__.py +0 -0
  168. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  169. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  170. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/__init__.py +0 -0
  171. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  172. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  173. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/database.py +0 -0
  174. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  175. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  176. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  177. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  178. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  179. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  180. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  181. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  182. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  183. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  184. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  185. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  186. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  187. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  188. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  189. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  190. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/exceptions/__init__.py +0 -0
  191. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/exceptions/integrity.py +0 -0
  192. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  193. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  194. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  195. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  196. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  197. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  198. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  199. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/__init__.py +0 -0
  200. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  201. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  202. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  203. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  204. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  205. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  206. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  207. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  208. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  209. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  210. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  211. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/__init__.py +0 -0
  212. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  213. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  214. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  215. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  216. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  217. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/__init__.py +0 -0
  218. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  219. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  220. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  221. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  222. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  223. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/roots/__init__.py +0 -0
  224. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/roots/paths.py +0 -0
  225. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/__init__.py +0 -0
  226. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  227. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/entities/session.py +0 -0
  228. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  229. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  230. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  231. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/startup.py +0 -0
  232. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/__init__.py +0 -0
  233. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  234. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  235. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  236. {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  237. {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/__init__.py +0 -0
  238. {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/package.py +0 -0
  239. {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/__init__.py +0 -0
  240. {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/singleton/__init__.py +0 -0
  241. {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/singleton/meta_class.py +0 -0
  242. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/__init__.py +0 -0
  243. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/__init__.py +0 -0
  244. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  245. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  246. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/coroutines.py +0 -0
  247. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  248. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
  249. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/__init__.py +0 -0
  250. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/__init__.py +0 -0
  251. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/env.py +0 -0
  252. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/types.py +0 -0
  253. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/dot_env.py +0 -0
  254. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/env.py +0 -0
  255. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  256. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
  257. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
  258. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/types.py +0 -0
  259. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/__init__.py +0 -0
  260. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/__init__.py +0 -0
  261. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/entities/__init__.py +0 -0
  262. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/entities/abstract_class_attributes.py +0 -0
  263. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/reflect_abstract.py +0 -0
  264. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  265. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  266. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/contracts/reflect_dependencies.py +0 -0
  267. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  268. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  269. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  270. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
  271. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
  272. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  273. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/exceptions/types.py +0 -0
  274. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/helpers/__init__.py +0 -0
  275. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/helpers/functions.py +0 -0
  276. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/reflection.py +0 -0
  277. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/__init__.py +0 -0
  278. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/contracts/__init__.py +0 -0
  279. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
  280. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
  281. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
  282. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/serializer.py +0 -0
  283. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/__init__.py +0 -0
  284. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/contracts/__init__.py +0 -0
  285. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/contracts/resolver.py +0 -0
  286. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  287. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
  288. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
  289. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/resolver.py +0 -0
  290. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/__init__.py +0 -0
  291. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/contracts/__init__.py +0 -0
  292. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/contracts/std.py +0 -0
  293. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/exceptions/__init__.py +0 -0
  294. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/exceptions/std_value_exception.py +0 -0
  295. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/std.py +0 -0
  296. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/__init__.py +0 -0
  297. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/__init__.py +0 -0
  298. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/imports.py +0 -0
  299. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/workers.py +0 -0
  300. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/imports.py +0 -0
  301. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/runtime_imports.py +0 -0
  302. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/workers.py +0 -0
  303. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/__init__.py +0 -0
  304. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/dicts/__init__.py +0 -0
  305. {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/dicts/dot_dict.py +0 -0
  306. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/__init__.py +0 -0
  307. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/__init__.py +0 -0
  308. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/container_integrity.py +0 -0
  309. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/__init__.py +0 -0
  310. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/reflection.py +0 -0
  311. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/reflexion_abstract.py +0 -0
  312. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/helpers/__init__.py +0 -0
  313. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/helpers/functions.py +0 -0
  314. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/__init__.py +0 -0
  315. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/contracts/__init__.py +0 -0
  316. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/contracts/reflection_instance.py +0 -0
  317. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/__init__.py +0 -0
  318. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_attributes.py +0 -0
  319. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_method.py +0 -0
  320. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_parsed.py +0 -0
  321. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_property.py +0 -0
  322. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/reflection_instance.py +0 -0
  323. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflect_decorators.py +0 -0
  324. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflection.py +0 -0
  325. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_concrete.py +0 -0
  326. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_concrete_with_abstract.py +0 -0
  327. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_instance_with_abstract.py +0 -0
  328. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_module.py +0 -0
  329. {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_module_with_classname.py +0 -0
  330. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/__init__.py +0 -0
  331. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/__init__.py +0 -0
  332. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_async.py +0 -0
  333. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_case.py +0 -0
  334. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_sync.py +0 -0
  335. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/entities/__init__.py +0 -0
  336. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/entities/test_result.py +0 -0
  337. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/__init__.py +0 -0
  338. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/test_mode.py +0 -0
  339. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/test_status.py +0 -0
  340. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/__init__.py +0 -0
  341. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_config_exception.py +0 -0
  342. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
  343. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
  344. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
  345. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_value_error.py +0 -0
  346. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/__init__.py +0 -0
  347. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/contracts/__init__.py +0 -0
  348. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/contracts/history.py +0 -0
  349. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/history.py +0 -0
  350. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/__init__.py +0 -0
  351. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/contracts/__init__.py +0 -0
  352. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/contracts/dumper.py +0 -0
  353. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/dumper.py +0 -0
  354. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/__init__.py +0 -0
  355. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/__init__.py +0 -0
  356. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/test_suite.py +0 -0
  357. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/test_unit.py +0 -0
  358. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/test_suite.py +0 -0
  359. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/test_unit.py +0 -0
  360. {orionis-0.290.0 → orionis-0.292.0}/orionis/test/view/__init__.py +0 -0
  361. {orionis-0.290.0 → orionis-0.292.0}/orionis/unittesting.py +0 -0
  362. {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/SOURCES.txt +0 -0
  363. {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/dependency_links.txt +0 -0
  364. {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/requires.txt +0 -0
  365. {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/top_level.txt +0 -0
  366. {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/zip-safe +0 -0
  367. {orionis-0.290.0 → orionis-0.292.0}/setup.cfg +0 -0
  368. {orionis-0.290.0 → orionis-0.292.0}/setup.py +0 -0
  369. {orionis-0.290.0 → orionis-0.292.0}/tests/__init__.py +0 -0
  370. {orionis-0.290.0 → orionis-0.292.0}/tests/example/__init__.py +0 -0
  371. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/__init__.py +0 -0
  372. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/__init__.py +0 -0
  373. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/app/__init__.py +0 -0
  374. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  375. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/auth/__init__.py +0 -0
  376. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  377. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/__init__.py +0 -0
  378. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  379. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  380. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  381. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cors/__init__.py +0 -0
  382. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  383. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/__init__.py +0 -0
  384. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  385. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  386. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  387. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  388. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  389. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  390. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/exceptions/__init__.py +0 -0
  391. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/exceptions/test_foundation_config_exceptions.py +0 -0
  392. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  393. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  394. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  395. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  396. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  397. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  398. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/__init__.py +0 -0
  399. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  400. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  401. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  402. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  403. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  404. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  405. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  406. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  407. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/__init__.py +0 -0
  408. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  409. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  410. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  411. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  412. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/__init__.py +0 -0
  413. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  414. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  415. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  416. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/root/__init__.py +0 -0
  417. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  418. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/session/__init__.py +0 -0
  419. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  420. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/startup/__init__.py +0 -0
  421. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  422. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/testing/__init__.py +0 -0
  423. {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  424. {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/__init__.py +0 -0
  425. {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/test_metadata_framework.py +0 -0
  426. {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/__init__.py +0 -0
  427. {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/singleton/__init__.py +0 -0
  428. {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
  429. {orionis-0.290.0 → orionis-0.292.0}/tests/services/__init__.py +0 -0
  430. {orionis-0.290.0 → orionis-0.292.0}/tests/services/asynchrony/__init__.py +0 -0
  431. {orionis-0.290.0 → orionis-0.292.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  432. {orionis-0.290.0 → orionis-0.292.0}/tests/services/environment/__init__.py +0 -0
  433. {orionis-0.290.0 → orionis-0.292.0}/tests/services/environment/test_services_environment.py +0 -0
  434. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/__init__.py +0 -0
  435. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/__init__.py +0 -0
  436. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  437. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  438. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  439. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  440. {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  441. {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/__init__.py +0 -0
  442. {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/mocks/__init__.py +0 -0
  443. {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
  444. {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
  445. {orionis-0.290.0 → orionis-0.292.0}/tests/services/path/__init__.py +0 -0
  446. {orionis-0.290.0 → orionis-0.292.0}/tests/services/path/test_services_resolver.py +0 -0
  447. {orionis-0.290.0 → orionis-0.292.0}/tests/services/standard/__init__.py +0 -0
  448. {orionis-0.290.0 → orionis-0.292.0}/tests/services/standard/test_services_std.py +0 -0
  449. {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/__init__.py +0 -0
  450. {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/test_services_system_imports.py +0 -0
  451. {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/test_services_system_workers.py +0 -0
  452. {orionis-0.290.0 → orionis-0.292.0}/tests/services/wrapper/__init__.py +0 -0
  453. {orionis-0.290.0 → orionis-0.292.0}/tests/services/wrapper/test_services_wrapper_docdict.py +0 -0
  454. {orionis-0.290.0 → orionis-0.292.0}/tests/support/__init__.py +0 -0
  455. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/__init__.py +0 -0
  456. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/__init__.py +0 -0
  457. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflect_abstract.py +0 -0
  458. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflect_instance.py +0 -0
  459. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
  460. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
  461. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
  462. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflect_abstract.py +0 -0
  463. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflect_instance.py +0 -0
  464. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_concrete.py +0 -0
  465. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +0 -0
  466. {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +0 -0
  467. {orionis-0.290.0 → orionis-0.292.0}/tests/testing/__init__.py +0 -0
  468. {orionis-0.290.0 → orionis-0.292.0}/tests/testing/test_testing_result.py +0 -0
  469. {orionis-0.290.0 → orionis-0.292.0}/tests/testing/test_testing_unit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.290.0
3
+ Version: 0.292.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
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.290.0"
8
+ VERSION = "0.292.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -0,0 +1,533 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Orionis Test Dashboard</title>
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <link rel="icon" href="https://orionis-framework.com/svg/logo.svg" />
10
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
11
+ <link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />
12
+ <link href="https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;500;700&display=swap" rel="stylesheet">
13
+ </head>
14
+
15
+ <style>
16
+ /* Use a monospaced font for the table */
17
+ #test-table,
18
+ #test-table .gridjs-td,
19
+ #test-table .gridjs-th {
20
+ font-family: 'Fira Mono', 'Consolas', 'Menlo', 'Monaco', 'Liberation Mono', monospace !important;
21
+ }
22
+
23
+ #test-table .gridjs-td,
24
+ #test-table .gridjs-th {
25
+ max-width: 220px;
26
+ white-space: normal;
27
+ overflow-wrap: anywhere;
28
+ text-overflow: initial;
29
+ vertical-align: middle;
30
+ font-size: 0.85rem; /* más pequeño */
31
+ line-height: 1.28;
32
+ }
33
+
34
+ #test-table .gridjs-th {
35
+ font-size: 0.82rem !important; /* aún más pequeño para los títulos */
36
+ font-weight: 600;
37
+ letter-spacing: 0.01em;
38
+ }
39
+
40
+ #test-table .gridjs-td.status-cell {
41
+ max-width: 90px;
42
+ text-align: center;
43
+ font-weight: 600;
44
+ letter-spacing: 0.02em;
45
+ white-space: nowrap;
46
+ font-size: 0.75em;
47
+ padding-top: 0.2em;
48
+ padding-bottom: 0.2em;
49
+ }
50
+
51
+ #test-table .gridjs-td.doc-cell {
52
+ max-width: 60px;
53
+ text-align: center;
54
+ white-space: nowrap;
55
+ }
56
+
57
+ #test-table {
58
+ overflow-x: auto;
59
+ }
60
+
61
+ .badge-status {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ gap: 0.3em;
65
+ padding: 0.13em 0.6em;
66
+ border-radius: 9999px;
67
+ font-size: 0.78em;
68
+ font-weight: 600;
69
+ letter-spacing: 0.01em;
70
+ }
71
+
72
+ .badge-passed {
73
+ background: #d1fae5;
74
+ color: #059669;
75
+ }
76
+
77
+ .badge-failed {
78
+ background: #fee2e2;
79
+ color: #dc2626;
80
+ }
81
+
82
+ .badge-errors {
83
+ background: #fef9c3;
84
+ color: #ca8a04;
85
+ }
86
+
87
+ .badge-skipped {
88
+ background: #e0e7ff;
89
+ color: #3730a3;
90
+ }
91
+
92
+ .doc-btn {
93
+ background: #eef2ff;
94
+ color: #3730a3;
95
+ border: none;
96
+ border-radius: 0.5em;
97
+ padding: 0.2em 0.8em;
98
+ font-size: 0.92em;
99
+ font-weight: 500;
100
+ cursor: pointer;
101
+ transition: background 0.15s;
102
+ font-family: inherit;
103
+ }
104
+
105
+ .doc-btn:hover {
106
+ background: #c7d2fe;
107
+ }
108
+
109
+ /* Modal styles */
110
+ .orionis-modal {
111
+ position: fixed;
112
+ left: 0;
113
+ top: 0;
114
+ width: 100vw;
115
+ height: 100vh;
116
+ background: rgba(30, 41, 59, 0.45);
117
+ display: flex !important;
118
+ align-items: center;
119
+ justify-content: center;
120
+ z-index: 10000;
121
+ }
122
+
123
+ .orionis-modal-content {
124
+ background: white;
125
+ max-width: 70vw;
126
+ width: 70vw;
127
+ padding: 2em 1.5em 1.2em 1.5em;
128
+ border-radius: 1.2em;
129
+ box-shadow: 0 8px 32px 0 rgba(31, 41, 55, 0.18);
130
+ position: relative;
131
+ }
132
+
133
+ .orionis-modal-close {
134
+ position: absolute;
135
+ top: 0.7em;
136
+ right: 1em;
137
+ font-size: 1.3em;
138
+ color: #64748b;
139
+ background: none;
140
+ border: none;
141
+ cursor: pointer;
142
+ }
143
+
144
+ .orionis-modal-title {
145
+ font-size: 0.98em; /* reducido de 1.08em */
146
+ font-weight: 600;
147
+ margin-bottom: 0.7em;
148
+ color: #3730a3;
149
+ display: flex;
150
+ align-items: center;
151
+ gap: 0.5em;
152
+ font-family: inherit;
153
+ }
154
+
155
+ .orionis-modal-pre {
156
+ white-space: pre-wrap;
157
+ font-size: 0.92em;
158
+ color: #334155;
159
+ background: #f1f5f9;
160
+ padding: 1em;
161
+ border-radius: 0.7em;
162
+ max-height: 320px;
163
+ overflow: auto;
164
+ font-family: 'Fira Mono', 'Consolas', 'Menlo', 'Monaco', 'Liberation Mono', monospace;
165
+ }
166
+ </style>
167
+
168
+ <body class="bg-gray-100 text-gray-800 font-sans">
169
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 py-8">
170
+
171
+ <!-- Header -->
172
+ <header class="bg-gradient-to-r from-blue-900 to-cyan-400 text-white rounded-2xl shadow-xl p-6 mb-10">
173
+ <div class="flex flex-col md:flex-row justify-between items-center gap-4">
174
+ <div class="flex items-center gap-4">
175
+ <img src="https://orionis-framework.com/svg/logo.svg" alt="Orionis Logo"
176
+ class="h-10 brightness-0 invert" />
177
+ <h1 class="text-2xl font-light tracking-wider">Orionis Testing Results Dashboard</h1>
178
+ </div>
179
+ <div id="timestamp" class="text-sm text-white/90"></div>
180
+ </header>
181
+
182
+ <!-- Execution Summary Card -->
183
+ <div class="w-full mb-10">
184
+ <div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-indigo-500 flex flex-col sm:flex-row items-center justify-between gap-4">
185
+ <div>
186
+ <div class="text-xs font-semibold text-gray-500 uppercase">Resumen de Ejecución</div>
187
+ <div class="text-lg font-bold text-gray-800 mt-2" id="execution-summary-title">Select an execution</div>
188
+ <div class="text-sm text-gray-600 mt-1" id="execution-summary-desc">Select an execution to view the summary.</div>
189
+ </div>
190
+ <div class="flex items-center gap-4">
191
+ <div class="flex items-center gap-1 text-gray-700">
192
+ <span id="execution-time">Duration: --:--:--</span>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <!-- Summary Cards -->
199
+ <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6 mb-10">
200
+
201
+ <div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-green-500">
202
+ <div class="text-xs font-semibold text-gray-500 uppercase">Passed</div>
203
+ <div class="text-4xl font-bold text-gray-800 mt-2" id="passed">0</div>
204
+ <div class="mt-4 bg-gray-200 rounded-full h-2">
205
+ <div class="bg-green-500 h-2 rounded-full" id="passed-progress" style="width: 0%"></div>
206
+ </div>
207
+ </div>
208
+
209
+ <div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-red-500">
210
+ <div class="text-xs font-semibold text-gray-500 uppercase">Failed</div>
211
+ <div class="text-4xl font-bold text-gray-800 mt-2" id="failed">0</div>
212
+ </div>
213
+
214
+ <div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-yellow-500">
215
+ <div class="text-xs font-semibold text-gray-500 uppercase">Errors</div>
216
+ <div class="text-4xl font-bold text-gray-800 mt-2" id="errors">0</div>
217
+ </div>
218
+
219
+ <div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-blue-500">
220
+ <div class="text-xs font-semibold text-gray-500 uppercase">Skipped</div>
221
+ <div class="text-4xl font-bold text-gray-800 mt-2" id="skipped">0</div>
222
+ </div>
223
+
224
+ </div>
225
+
226
+ <!-- Download Buttons & Select -->
227
+ <div class="flex flex-wrap justify-between items-center mb-10 gap-4">
228
+ <!-- Buttons to the left -->
229
+ <div class="flex flex-wrap gap-4">
230
+ <button disabled id="download-json" class="flex items-center gap-2 bg-blue-300 text-white px-4 py-2 rounded shadow cursor-not-allowed opacity-60">
231
+ <i class="bi bi-file-earmark-code-fill text-lg"></i>
232
+ <span>Download JSON</span>
233
+ </button>
234
+ </div>
235
+ <!-- Elegant Select to the right -->
236
+ <div>
237
+ <select class="appearance-none bg-white border border-gray-300 text-gray-700 py-2 px-4 pr-10 rounded-lg shadow focus:outline-none focus:ring-2 focus:ring-blue-400 focus:border-blue-400 transition text-base font-medium" id="test-select">
238
+ </select>
239
+ </div>
240
+ </div>
241
+
242
+ <!-- Table Summary View with Grid.js -->
243
+ <div class="bg-white rounded-xl shadow-md p-5 border border-indigo-100">
244
+ <div class="flex items-center gap-2 mb-3">
245
+ <i class="bi bi-table text-lg text-indigo-500"></i>
246
+ <h2 class="text-lg font-semibold text-indigo-900">Execution Details</h2>
247
+ </div>
248
+ <div class="text-gray-500 mb-4 text-sm">
249
+ See all test cases for the selected execution.<br>Click
250
+ <span class="inline-flex items-center gap-1 px-1.5 py-0.5 bg-blue-50 text-blue-700 rounded text-xs font-mono">
251
+ <i class="bi bi-journal-text"></i> View
252
+ </span>
253
+ to show the docstring.
254
+ </div>
255
+ <div id="test-table"></div>
256
+ </div>
257
+
258
+ <!-- Footer -->
259
+ <footer class="mt-12 text-center text-gray-500 text-sm py-6">
260
+ Developed with the power of
261
+ <a href="https://orionis-framework.com/" target="_blank" rel="noopener"
262
+ class="font-semibold text-blue-700 hover:underline">
263
+ Orionis Framework
264
+ </a>
265
+ <i class="bi bi-stars text-yellow-400 align-middle ml-1"></i>
266
+ </footer>
267
+
268
+ <script src="https://unpkg.com/gridjs/dist/gridjs.umd.js"></script>
269
+ <script>
270
+
271
+ const data = $data;
272
+
273
+ // Live Clock (Header Timestamp)
274
+ function updateClock() {
275
+ const now = new Date();
276
+ const formatted = now.toLocaleString('en-US', {
277
+ year: 'numeric',
278
+ month: '2-digit',
279
+ day: '2-digit',
280
+ hour: '2-digit',
281
+ minute: '2-digit',
282
+ second: '2-digit',
283
+ hour12: false
284
+ });
285
+ document.getElementById("timestamp").textContent = `Current time: ${formatted}`;
286
+ }
287
+ updateClock();
288
+ setInterval(updateClock, 1000);
289
+
290
+ // Populate Dropdown in English
291
+ let html = '<option selected disabled>Select an execution</option>';
292
+ data.forEach((item, i) => {
293
+ const date = new Date(item.timestamp);
294
+ const formattedDate = `${date.getFullYear()}-${(date.getMonth() + 1)
295
+ .toString()
296
+ .padStart(2, '0')}-${date.getDate()
297
+ .toString()
298
+ .padStart(2, '0')} ${date.getHours()
299
+ .toString()
300
+ .padStart(2, '0')}:${date.getMinutes()
301
+ .toString()
302
+ .padStart(2, '0')}:${date.getSeconds()
303
+ .toString()
304
+ .padStart(2, '0')}`;
305
+ html += `<option value="${i}">Execution ${i + 1} - ${formattedDate}</option>`;
306
+ });
307
+ document.getElementById("test-select").innerHTML = html;
308
+
309
+ // Event Listener for the dropdown
310
+ document.getElementById("test-select").addEventListener("change", function () {
311
+ const selectedIndex = this.value;
312
+ const selectedData = data[selectedIndex];
313
+
314
+ // Animate Counters
315
+ function animateValue(id, start, end, duration) {
316
+ const obj = document.getElementById(id);
317
+ let startTimestamp = null;
318
+ const step = (timestamp) => {
319
+ if (!startTimestamp) startTimestamp = timestamp;
320
+ const progress = Math.min((timestamp - startTimestamp) / duration, 1);
321
+ obj.textContent = Math.floor(progress * (end - start) + start);
322
+ if (progress < 1) {
323
+ window.requestAnimationFrame(step);
324
+ } else {
325
+ obj.textContent = end;
326
+ }
327
+ };
328
+ window.requestAnimationFrame(step);
329
+ }
330
+ animateValue("passed", Number(document.getElementById("passed").textContent), selectedData.passed, 500);
331
+ animateValue("failed", Number(document.getElementById("failed").textContent), selectedData.failed, 500);
332
+ animateValue("errors", Number(document.getElementById("errors").textContent), selectedData.errors, 500);
333
+ animateValue("skipped", Number(document.getElementById("skipped").textContent), selectedData.skipped, 500);
334
+
335
+ // Animate Progress Bar
336
+ const passedBar = document.getElementById("passed-progress");
337
+ passedBar.style.transition = "width 0.6s cubic-bezier(0.4,0,0.2,1)";
338
+ const passedPercentage = (selectedData.passed / selectedData.total_tests) * 100;
339
+ passedBar.style.width = `${passedPercentage}%`;
340
+
341
+ // Update Execution Summary
342
+ const date = new Date(selectedData.timestamp);
343
+ const formattedDate = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`;
344
+ document.getElementById("execution-summary-title").innerHTML = `<span class="inline-flex items-center gap-2"><i class="bi bi-activity text-indigo-500"></i> Execution - <span class="font-mono">${formattedDate}</span></span>`;
345
+ document.getElementById("execution-summary-desc").innerHTML =
346
+ `<span class="inline-flex gap-2 flex-wrap">
347
+ <span class="bg-green-100 text-green-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-check-circle-fill"></i> Passed: ${selectedData.passed}</span>
348
+ <span class="bg-red-100 text-red-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-x-circle-fill"></i> Failed: ${selectedData.failed}</span>
349
+ <span class="bg-yellow-100 text-yellow-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-exclamation-triangle-fill"></i> Errors: ${selectedData.errors}</span>
350
+ <span class="bg-blue-100 text-blue-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-skip-forward-fill"></i> Skipped: ${selectedData.skipped}</span>
351
+ <span class="bg-gray-100 text-gray-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-list-ol"></i> Total: ${selectedData.total_tests}</span>
352
+ <span class="bg-indigo-100 text-indigo-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-bar-chart-fill"></i> Success: ${selectedData.success_rate.toFixed(2)}%</span>
353
+ </span>`;
354
+
355
+ // Update Duration
356
+ function formatTime(seconds) {
357
+ const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
358
+ const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
359
+ const s = Math.floor(seconds % 60).toString().padStart(2, '0');
360
+ return `${h}:${m}:${s}`;
361
+ }
362
+ document.getElementById("execution-time").innerHTML = `<i class="bi bi-clock-history text-indigo-500"></i> Duration: <span class="font-mono">${formatTime(selectedData.total_time)}</span>`;
363
+
364
+ // Enable Download Button
365
+ document.getElementById("download-json").disabled = false;
366
+ document.getElementById("download-json").classList.remove("bg-blue-300", "cursor-not-allowed", "opacity-60");
367
+ document.getElementById("download-json").classList.add("bg-blue-600", "hover:bg-blue-700", "cursor-pointer", "opacity-100");
368
+ });
369
+
370
+ // Download JSON report with execution date and time in filename
371
+ document.getElementById("download-json").addEventListener("click", function () {
372
+ const select = document.getElementById("test-select");
373
+ const selectedIndex = select.value;
374
+ if (selectedIndex === "" || selectedIndex === null || isNaN(selectedIndex)) return;
375
+ const selectedData = data[selectedIndex];
376
+ const jsonString = JSON.stringify(selectedData, null, 2);
377
+ const date = new Date(selectedData.timestamp);
378
+ // Format: YYYYMMDD_HHMMSS
379
+ const formattedDate = `${date.getFullYear()}${(date.getMonth()+1).toString().padStart(2,'0')}${date.getDate().toString().padStart(2,'0')}_${date.getHours().toString().padStart(2,'0')}${date.getMinutes().toString().padStart(2,'0')}${date.getSeconds().toString().padStart(2,'0')}`;
380
+ const filename = `test_report_${formattedDate}.json`;
381
+ const blob = new Blob([jsonString], { type: "application/json" });
382
+ const url = URL.createObjectURL(blob);
383
+ const a = document.createElement("a");
384
+ a.href = url;
385
+ a.download = filename;
386
+ document.body.appendChild(a);
387
+ a.click();
388
+ document.body.removeChild(a);
389
+ URL.revokeObjectURL(url);
390
+ });
391
+
392
+ // Show doc string in a modal dialog (event delegation)
393
+ function showDocString(doc) {
394
+ // Remove any existing modal
395
+ const oldModal = document.querySelector('.orionis-modal');
396
+ if (oldModal) oldModal.remove();
397
+
398
+ // Create modal element
399
+ const modal = document.createElement('div');
400
+ modal.className = 'orionis-modal';
401
+ modal.style.display = 'flex'; // Ensure modal is visible
402
+
403
+ modal.innerHTML = `
404
+ <div class="orionis-modal-content">
405
+ <button class="orionis-modal-close" aria-label="Cerrar" type="button">&times;</button>
406
+ <div class="orionis-modal-title">
407
+ <i class="bi bi-journal-text"></i> Docstring
408
+ </div>
409
+ <pre class="orionis-modal-pre">${doc ? String(doc).replace(/</g, "&lt;").replace(/>/g, "&gt;") : 'No docstring.'}</pre>
410
+ </div>
411
+ `;
412
+ // Close modal when clicking outside content
413
+ modal.addEventListener('mousedown', function (e) {
414
+ if (e.target === modal) modal.remove();
415
+ });
416
+ // Close modal when clicking close button
417
+ modal.querySelector('.orionis-modal-close').onclick = () => modal.remove();
418
+ document.body.appendChild(modal);
419
+ }
420
+
421
+ function renderTestTable(testDetails) {
422
+ if (window.testGrid) {
423
+ try { window.testGrid.destroy(); } catch (e) { }
424
+ }
425
+ const tableDiv = document.getElementById("test-table");
426
+ tableDiv.innerHTML = "";
427
+
428
+ try {
429
+ window.testGrid = new gridjs.Grid({
430
+ columns: [
431
+ { name: "ID", width: "22%" },
432
+ { name: "Class", width: "12%" },
433
+ { name: "Method", width: "14%" },
434
+ { name: "Status", width: "11%" },
435
+ { name: "Time (s)", width: "9%" },
436
+ { name: "File", width: "22%" },
437
+ { name: "Doc", width: "10%" }
438
+ ],
439
+ data: testDetails.map((t, idx) => [
440
+ gridjs.html(`<div title="${t.id}">${t.id}</div>`),
441
+ gridjs.html(`<div title="${t.class}">${t.class}</div>`),
442
+ gridjs.html(`<div title="${t.method}">${t.method}</div>`),
443
+ gridjs.html(`
444
+ <span class="badge-status ${
445
+ t.status === 'PASSED' ? 'badge-passed' :
446
+ t.status === 'FAILED' ? 'badge-failed' :
447
+ t.status === 'ERRORS' ? 'badge-errors' : 'badge-skipped'
448
+ } status-cell">
449
+ ${
450
+ t.status === 'PASSED' ? '<i class="bi bi-check-circle-fill"></i>' :
451
+ t.status === 'FAILED' ? '<i class="bi bi-x-circle-fill"></i>' :
452
+ t.status === 'ERRORS' ? '<i class="bi bi-exclamation-triangle-fill"></i>' :
453
+ '<i class="bi bi-skip-forward-fill"></i>'
454
+ }
455
+ ${t.status}
456
+ </span>
457
+ `),
458
+ t.execution_time,
459
+ gridjs.html(`<div title="${t.file_path}">${t.file_path}</div>`),
460
+ gridjs.html(`<button class="doc-btn doc-cell" data-doc-idx="${idx}" type="button"><i class="bi bi-journal-text"></i> Ver</button>`)
461
+ ]),
462
+ search: {
463
+ enabled: true,
464
+ placeholder: 'Buscar solo por clase...'
465
+ },
466
+ pagination: { limit: 8, summary: false },
467
+ sort: false,
468
+ resizable: true,
469
+ style: {
470
+ th: { 'text-align': 'left', 'background': '#f1f5f9', 'font-size': '1em' }
471
+ }
472
+ }).render(tableDiv);
473
+
474
+ // Delegated event for doc buttons (always works, even after pagination)
475
+ tableDiv.addEventListener('click', function (e) {
476
+ const btn = e.target.closest('.doc-btn');
477
+ if (!btn) return;
478
+ const idx = Number(btn.getAttribute('data-doc-idx'));
479
+ const t = testDetails[idx];
480
+ if (!t) return;
481
+
482
+ let html = '';
483
+ html += `<div class="orionis-modal-title"><i class="bi bi-journal-text"></i> Docstring</div>`;
484
+ html += `<pre class="orionis-modal-pre">${t.doc_string ? String(t.doc_string).replace(/</g, "&lt;").replace(/>/g, "&gt;") : 'No docstring.'}</pre>`;
485
+ if (t.status === 'FAILED' || t.status === 'ERRORS') {
486
+ html += `<div class="orionis-modal-title mt-4"><i class="bi bi-bug-fill"></i> Traceback</div>`;
487
+ html += `<pre class="orionis-modal-pre" style="background:#fee2e2;color:#991b1b">${t.traceback ? String(t.traceback).replace(/</g, "&lt;").replace(/>/g, "&gt;") : 'No traceback.'}</pre>`;
488
+ }
489
+
490
+ // Remove any existing modal
491
+ const oldModal = document.querySelector('.orionis-modal');
492
+ if (oldModal) oldModal.remove();
493
+
494
+ // Create modal element
495
+ const modal = document.createElement('div');
496
+ modal.className = 'orionis-modal';
497
+ modal.style.display = 'flex';
498
+
499
+ modal.innerHTML = `
500
+ <div class="orionis-modal-content">
501
+ <button class="orionis-modal-close" aria-label="Cerrar" type="button">&times;</button>
502
+ ${html}
503
+ </div>
504
+ `;
505
+
506
+ // Close modal when clicking outside content
507
+ modal.addEventListener('mousedown', function (e) {
508
+ if (e.target === modal) modal.remove();
509
+ });
510
+
511
+ // Close modal when clicking close button
512
+ modal.querySelector('.orionis-modal-close').onclick = () => modal.remove();
513
+ document.body.appendChild(modal);
514
+ });
515
+ } catch (err) {
516
+ tableDiv.innerHTML = `<div class="text-red-600 font-mono text-sm py-4">Ocurrió un error al mostrar la tabla.<br>${err.message}</div>`;
517
+ }
518
+ }
519
+
520
+ document.getElementById("test-select").addEventListener("change", function () {
521
+ const selectedIndex = this.value;
522
+ if (!data[selectedIndex]) return;
523
+ renderTestTable(data[selectedIndex].test_details);
524
+ });
525
+
526
+ document.addEventListener("DOMContentLoaded", function () {
527
+ renderTestTable([]);
528
+ });
529
+
530
+ </script>
531
+ </body>
532
+
533
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.290.0
3
+ Version: 0.292.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
@@ -17,7 +17,7 @@ class TestExample(TestCase):
17
17
  Ensures that the integer 2 is equal to itself.
18
18
  """
19
19
  # Check if 1 equals 1
20
- self.assertEqual(1, 1)
20
+ self.assertEqual(1, 2)
21
21
 
22
22
  # Check if 2 equals 2
23
23
  self.assertEqual(2, 2)
@@ -1,35 +1,93 @@
1
- from orionis.unittesting import TestCase
2
- from orionis.metadata.package import PypiPackageApi
3
- from unittest.mock import MagicMock, patch
1
+ from orionis.unittesting import TestCase, patch
4
2
 
5
3
  class TestPypiPackageApi(TestCase):
6
4
 
7
5
  @patch("orionis.metadata.package.PypiPackageApi")
8
6
  async def testGetName(self, MockPypiPackageApi):
7
+ """
8
+ Test for the getName method.
9
+
10
+ Parameters
11
+ ----------
12
+ MockPypiPackageApi : MagicMock
13
+ Mocked PypiPackageApi class.
14
+
15
+ Returns
16
+ -------
17
+ None
18
+ """
9
19
  api = MockPypiPackageApi.return_value
10
20
  api.getName.return_value = "orionis"
11
21
  self.assertEqual(api.getName(), "orionis")
12
22
 
13
23
  @patch("orionis.metadata.package.PypiPackageApi")
14
24
  async def testGetAuthor(self, MockPypiPackageApi):
25
+ """
26
+ Test for the getAuthor method.
27
+
28
+ Parameters
29
+ ----------
30
+ MockPypiPackageApi : MagicMock
31
+ Mocked PypiPackageApi class.
32
+
33
+ Returns
34
+ -------
35
+ None
36
+ """
15
37
  api = MockPypiPackageApi.return_value
16
38
  api.getAuthor.return_value = "Raul Mauricio Uñate Castro"
17
39
  self.assertEqual(api.getAuthor(), "Raul Mauricio Uñate Castro")
18
40
 
19
41
  @patch("orionis.metadata.package.PypiPackageApi")
20
42
  async def testGetAuthorEmail(self, MockPypiPackageApi):
43
+ """
44
+ Test for the getAuthorEmail method.
45
+
46
+ Parameters
47
+ ----------
48
+ MockPypiPackageApi : MagicMock
49
+ Mocked PypiPackageApi class.
50
+
51
+ Returns
52
+ -------
53
+ None
54
+ """
21
55
  api = MockPypiPackageApi.return_value
22
56
  api.getAuthorEmail.return_value = "raulmauriciounate@gmail.com"
23
57
  self.assertEqual(api.getAuthorEmail(), "raulmauriciounate@gmail.com")
24
58
 
25
59
  @patch("orionis.metadata.package.PypiPackageApi")
26
60
  async def testGetDescription(self, MockPypiPackageApi):
61
+ """
62
+ Test for the getDescription method.
63
+
64
+ Parameters
65
+ ----------
66
+ MockPypiPackageApi : MagicMock
67
+ Mocked PypiPackageApi class.
68
+
69
+ Returns
70
+ -------
71
+ None
72
+ """
27
73
  api = MockPypiPackageApi.return_value
28
74
  api.getDescription.return_value = "Orionis Framework – Elegant, Fast, and Powerful."
29
75
  self.assertEqual(api.getDescription(), "Orionis Framework – Elegant, Fast, and Powerful.")
30
76
 
31
77
  @patch("orionis.metadata.package.PypiPackageApi")
32
78
  async def testGetPythonVersion(self, MockPypiPackageApi):
79
+ """
80
+ Test for the getPythonVersion method.
81
+
82
+ Parameters
83
+ ----------
84
+ MockPypiPackageApi : MagicMock
85
+ Mocked PypiPackageApi class.
86
+
87
+ Returns
88
+ -------
89
+ None
90
+ """
33
91
  api = MockPypiPackageApi.return_value
34
92
  api.getPythonVersion.return_value = ">=3.12"
35
93
  self.assertEqual(api.getPythonVersion(), ">=3.12")