orionis 0.217.0__tar.gz → 0.219.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 (251) hide show
  1. {orionis-0.217.0/orionis.egg-info → orionis-0.219.0}/PKG-INFO +1 -1
  2. {orionis-0.217.0 → orionis-0.219.0}/orionis/framework.py +2 -2
  3. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/application.py +1 -1
  4. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/resolve.py +1 -1
  5. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/facade.py +1 -1
  6. orionis-0.219.0/orionis/luminate/support/async_io/async_coroutine.py +48 -0
  7. orionis-0.219.0/orionis/luminate/support/async_io/contracts/async_coroutine.py +31 -0
  8. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/standard/std.py +0 -9
  9. orionis-0.219.0/orionis/luminate/test/contracts/test_std_out.py +17 -0
  10. orionis-0.219.0/orionis/luminate/test/contracts/test_suite.py +37 -0
  11. orionis-0.219.0/orionis/luminate/test/contracts/test_unit.py +82 -0
  12. orionis-0.219.0/orionis/luminate/test/test_case.py +62 -0
  13. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_std_out.py +3 -2
  14. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_suite.py +2 -1
  15. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_unit.py +2 -1
  16. {orionis-0.217.0 → orionis-0.219.0/orionis.egg-info}/PKG-INFO +1 -1
  17. {orionis-0.217.0 → orionis-0.219.0}/orionis.egg-info/SOURCES.txt +15 -2
  18. orionis-0.219.0/tests/support/adapters/fakes/fake_dict.py +15 -0
  19. orionis-0.219.0/tests/support/adapters/test_doct_dict.py +21 -0
  20. orionis-0.219.0/tests/support/async_io/__init__.py +0 -0
  21. orionis-0.219.0/tests/support/async_io/test_async_coroutine.py +35 -0
  22. orionis-0.219.0/tests/support/inspection/__init__.py +0 -0
  23. orionis-0.219.0/tests/support/inspection/fakes/__init__.py +0 -0
  24. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/test_reflection_abstract.py +21 -21
  25. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/test_reflection_concrete.py +20 -20
  26. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +5 -5
  27. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/test_reflection_instance.py +26 -23
  28. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +5 -5
  29. orionis-0.219.0/tests/support/parsers/__init__.py +0 -0
  30. orionis-0.219.0/tests/support/parsers/fakes/__init__.py +0 -0
  31. {orionis-0.217.0 → orionis-0.219.0}/tests/support/parsers/test_exception_parser.py +4 -4
  32. orionis-0.219.0/tests/support/standard/__init__.py +0 -0
  33. {orionis-0.217.0 → orionis-0.219.0}/tests/support/standard/test_std.py +10 -10
  34. orionis-0.217.0/orionis/luminate/support/asyn_run.py +0 -41
  35. orionis-0.217.0/orionis/luminate/test/test_case.py +0 -5
  36. {orionis-0.217.0 → orionis-0.219.0}/LICENCE +0 -0
  37. {orionis-0.217.0 → orionis-0.219.0}/MANIFEST.in +0 -0
  38. {orionis-0.217.0 → orionis-0.219.0}/README.md +0 -0
  39. {orionis-0.217.0 → orionis-0.219.0}/orionis/__init__.py +0 -0
  40. {orionis-0.217.0 → orionis-0.219.0}/orionis/console.py +0 -0
  41. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/__init__.py +0 -0
  42. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/contracts/__init__.py +0 -0
  43. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/contracts/manager.py +0 -0
  44. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/contracts/output.py +0 -0
  45. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/contracts/setup.py +0 -0
  46. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/manager.py +0 -0
  47. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/output.py +0 -0
  48. {orionis-0.217.0 → orionis-0.219.0}/orionis/installer/setup.py +0 -0
  49. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/__init__.py +0 -0
  50. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/__init__.py +0 -0
  51. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/app.py +0 -0
  52. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/auth.py +0 -0
  53. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/cache.py +0 -0
  54. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/cors.py +0 -0
  55. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/database.py +0 -0
  56. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/filesystems.py +0 -0
  57. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/logging.py +0 -0
  58. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/mail.py +0 -0
  59. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/queue.py +0 -0
  60. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/config/session.py +0 -0
  61. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/__init__.py +0 -0
  62. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/base/__init__.py +0 -0
  63. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/base/command.py +0 -0
  64. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/command_filter.py +0 -0
  65. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/commands/__init__.py +0 -0
  66. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/commands/cache_clear.py +0 -0
  67. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/commands/help.py +0 -0
  68. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/commands/schedule_work.py +0 -0
  69. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/commands/version.py +0 -0
  70. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/exceptions/__init__.py +0 -0
  71. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/exceptions/cli-orionis-value-error.py +0 -0
  72. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/exceptions/cli_exception.py +0 -0
  73. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/exceptions/cli_runtime_error.py +0 -0
  74. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/exceptions/cli_schedule_exception.py +0 -0
  75. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/kernel.py +0 -0
  76. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/output/__init__.py +0 -0
  77. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/output/console.py +0 -0
  78. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/output/executor.py +0 -0
  79. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/output/progress_bar.py +0 -0
  80. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/output/styles.py +0 -0
  81. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/console/parser.py +0 -0
  82. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/__init__.py +0 -0
  83. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/container.py +0 -0
  84. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/container_integrity.py +0 -0
  85. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/exception.py +0 -0
  86. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/container/lifetimes.py +0 -0
  87. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/__init__.py +0 -0
  88. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/application.py +0 -0
  89. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/config/__init__.py +0 -0
  90. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/config/config.py +0 -0
  91. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/__init__.py +0 -0
  92. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/base/__init__.py +0 -0
  93. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/base/command.py +0 -0
  94. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/command_filter.py +0 -0
  95. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/kernel.py +0 -0
  96. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/output/__init__.py +0 -0
  97. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/output/console.py +0 -0
  98. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/output/executor.py +0 -0
  99. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/output/progress_bar.py +0 -0
  100. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/parser.py +0 -0
  101. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/console/task_manager.py +0 -0
  102. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/container/container.py +0 -0
  103. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/container/container_integrity.py +0 -0
  104. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/__init__.py +0 -0
  105. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/commands/__init__.py +0 -0
  106. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/commands/commands_facade.py +0 -0
  107. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/commands/scheduler_facade.py +0 -0
  108. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/config/__init__.py +0 -0
  109. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/config/config_facade.py +0 -0
  110. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/environment/__init__.py +0 -0
  111. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/environment/environment_facade.py +0 -0
  112. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/files/__init__.py +0 -0
  113. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/files/path_facade.py +0 -0
  114. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/log/__init__.py +0 -0
  115. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/log/log_facade.py +0 -0
  116. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/tests/__init__.py +0 -0
  117. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/facades/tests/tests_facade.py +0 -0
  118. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/__init__.py +0 -0
  119. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/bootstraper.py +0 -0
  120. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/config/__init__.py +0 -0
  121. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/config/config_bootstrapper.py +0 -0
  122. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/console/__init__.py +0 -0
  123. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/console/command_bootstrapper.py +0 -0
  124. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/environment/__init__.py +0 -0
  125. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/environment/environment_bootstrapper.py +0 -0
  126. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/providers/__init__.py +0 -0
  127. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  128. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/providers/__init__.py +0 -0
  129. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/providers/service_provider.py +0 -0
  130. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/__init__.py +0 -0
  131. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/commands/__init__.py +0 -0
  132. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/commands/reactor_commands_service.py +0 -0
  133. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/commands/schedule_service.py +0 -0
  134. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/config/__init__.py +0 -0
  135. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/config/config_service.py +0 -0
  136. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/environment/__init__.py +0 -0
  137. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/environment/environment_service.py +0 -0
  138. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/files/__init__.py +0 -0
  139. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/files/path_resolver_service.py +0 -0
  140. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/log/__init__.py +0 -0
  141. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/services/log/log_service.py +0 -0
  142. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/support/exception_parse.py +0 -0
  143. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/contracts/support/reflection.py +0 -0
  144. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/__init__.py +0 -0
  145. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/app_facade.py +0 -0
  146. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/commands/__init__.py +0 -0
  147. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/commands/commands_facade.py +0 -0
  148. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/commands/scheduler_facade.py +0 -0
  149. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/config/__init__.py +0 -0
  150. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/config/config_facade.py +0 -0
  151. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/environment/__init__.py +0 -0
  152. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/environment/environment_facade.py +0 -0
  153. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/files/__init__.py +0 -0
  154. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/files/path_facade.py +0 -0
  155. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/log/__init__.py +0 -0
  156. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/facades/log/log_facade.py +0 -0
  157. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/__init__.py +0 -0
  158. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/config/__init__.py +0 -0
  159. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/config/config_bootstrapper.py +0 -0
  160. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/console/__init__.py +0 -0
  161. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/console/command_bootstrapper.py +0 -0
  162. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/environment/__init__.py +0 -0
  163. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/environment/environment_bootstrapper.py +0 -0
  164. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/exceptions/__init__.py +0 -0
  165. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/exceptions/exception_bootstrapper.py +0 -0
  166. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/exceptions/exception_providers.py +0 -0
  167. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/providers/__init__.py +0 -0
  168. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/foundation/providers/service_providers_bootstrapper.py +0 -0
  169. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/patterns/__init__.py +0 -0
  170. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/patterns/singleton.py +0 -0
  171. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/__init__.py +0 -0
  172. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/commands/__init__.py +0 -0
  173. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/commands/reactor_commands_service_provider.py +0 -0
  174. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/commands/scheduler_provider.py +0 -0
  175. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/config/__init__.py +0 -0
  176. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/config/config_service_provider.py +0 -0
  177. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/environment/__init__.py +0 -0
  178. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/environment/environment__service_provider.py +0 -0
  179. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/files/__init__.py +0 -0
  180. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/files/paths_provider.py +0 -0
  181. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/log/__init__.py +0 -0
  182. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/log/log_service_provider.py +0 -0
  183. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/providers/service_provider.py +0 -0
  184. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/__init__.py +0 -0
  185. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/commands/__init__.py +0 -0
  186. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/commands/reactor_commands_service.py +0 -0
  187. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/commands/scheduler_service.py +0 -0
  188. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/config/__init__.py +0 -0
  189. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/config/config_service.py +0 -0
  190. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/environment/__init__.py +0 -0
  191. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/environment/environment_service.py +0 -0
  192. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/files/__init__.py +0 -0
  193. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/files/path_resolver_service.py +0 -0
  194. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/log/__init__.py +0 -0
  195. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/services/log/log_service.py +0 -0
  196. {orionis-0.217.0/orionis/luminate/support/inspection → orionis-0.219.0/orionis/luminate/support/adapters}/__init__.py +0 -0
  197. {orionis-0.217.0/orionis/luminate/support → orionis-0.219.0/orionis/luminate/support/adapters}/dot_dict.py +0 -0
  198. {orionis-0.217.0/orionis/luminate/support/inspection/contracts → orionis-0.219.0/orionis/luminate/support/async_io}/__init__.py +0 -0
  199. {orionis-0.217.0/orionis/luminate/support/parsers → orionis-0.219.0/orionis/luminate/support/inspection}/__init__.py +0 -0
  200. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/container_integrity.py +0 -0
  201. {orionis-0.217.0/orionis/luminate/support/parsers → orionis-0.219.0/orionis/luminate/support/inspection}/contracts/__init__.py +0 -0
  202. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/contracts/reflection.py +0 -0
  203. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/contracts/reflexion_abstract.py +0 -0
  204. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/functions.py +0 -0
  205. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflection.py +0 -0
  206. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_abstract.py +0 -0
  207. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_concrete.py +0 -0
  208. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_concrete_with_abstract.py +0 -0
  209. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_instance.py +0 -0
  210. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_instance_with_abstract.py +0 -0
  211. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_module.py +0 -0
  212. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/inspection/reflexion_module_with_classname.py +0 -0
  213. {orionis-0.217.0/orionis/luminate/support/standard → orionis-0.219.0/orionis/luminate/support/parsers}/__init__.py +0 -0
  214. {orionis-0.217.0/orionis/luminate/support/standard → orionis-0.219.0/orionis/luminate/support/parsers}/contracts/__init__.py +0 -0
  215. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/parsers/contracts/exception_parser.py +0 -0
  216. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/parsers/exception_parser.py +0 -0
  217. {orionis-0.217.0/orionis/luminate/test → orionis-0.219.0/orionis/luminate/support/standard}/__init__.py +0 -0
  218. {orionis-0.217.0/tests → orionis-0.219.0/orionis/luminate/support/standard/contracts}/__init__.py +0 -0
  219. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/support/standard/contracts/std.py +0 -0
  220. {orionis-0.217.0/tests/example → orionis-0.219.0/orionis/luminate/test}/__init__.py +0 -0
  221. {orionis-0.217.0/tests/support → orionis-0.219.0/orionis/luminate/test/contracts}/__init__.py +0 -0
  222. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_exception.py +0 -0
  223. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_result.py +0 -0
  224. {orionis-0.217.0 → orionis-0.219.0}/orionis/luminate/test/test_status.py +0 -0
  225. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/ascii/icon.ascii +0 -0
  226. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/ascii/info.ascii +0 -0
  227. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/bg/galaxy.jpg +0 -0
  228. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/favicon/OrionisFrameworkFavicon.png +0 -0
  229. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/logos/OrionisFramework.jpg +0 -0
  230. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/logos/OrionisFramework.png +0 -0
  231. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/logos/OrionisFramework.psd +0 -0
  232. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/logos/OrionisFramework2.png +0 -0
  233. {orionis-0.217.0 → orionis-0.219.0}/orionis/static/logos/OrionisFramework3.png +0 -0
  234. {orionis-0.217.0 → orionis-0.219.0}/orionis.egg-info/dependency_links.txt +0 -0
  235. {orionis-0.217.0 → orionis-0.219.0}/orionis.egg-info/entry_points.txt +0 -0
  236. {orionis-0.217.0 → orionis-0.219.0}/orionis.egg-info/requires.txt +0 -0
  237. {orionis-0.217.0 → orionis-0.219.0}/orionis.egg-info/top_level.txt +0 -0
  238. {orionis-0.217.0 → orionis-0.219.0}/setup.cfg +0 -0
  239. {orionis-0.217.0 → orionis-0.219.0}/setup.py +0 -0
  240. {orionis-0.217.0/tests/support/inspection → orionis-0.219.0/tests}/__init__.py +0 -0
  241. {orionis-0.217.0/tests/support/inspection/fakes → orionis-0.219.0/tests/example}/__init__.py +0 -0
  242. {orionis-0.217.0 → orionis-0.219.0}/tests/example/test_example.py +0 -0
  243. {orionis-0.217.0/tests/support/parsers → orionis-0.219.0/tests/support}/__init__.py +0 -0
  244. {orionis-0.217.0/tests/support/parsers/fakes → orionis-0.219.0/tests/support/adapters}/__init__.py +0 -0
  245. {orionis-0.217.0/tests/support/standard → orionis-0.219.0/tests/support/adapters/fakes}/__init__.py +0 -0
  246. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/fakes/fake_reflection_abstract.py +0 -0
  247. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
  248. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
  249. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/fakes/fake_reflection_instance.py +0 -0
  250. {orionis-0.217.0 → orionis-0.219.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
  251. {orionis-0.217.0 → orionis-0.219.0}/tests/support/parsers/fakes/fake_custom_error.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.217.0
3
+ Version: 0.219.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.217.0"
8
+ VERSION = "0.219.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -26,7 +26,7 @@ SKELETON = "https://github.com/orionis-framework/skeleton"
26
26
  FRAMEWORK = "https://github.com/orionis-framework/framework"
27
27
 
28
28
  # URL to the project's documentation
29
- DOCS = "https://github.com/orionis-framework/docs"
29
+ DOCS = "https://orionis-framework.com/"
30
30
 
31
31
  # API URL to the project's JSON data
32
32
  API = "https://pypi.org/pypi/orionis/json"
@@ -10,7 +10,7 @@ from orionis.luminate.foundation.environment.environment_bootstrapper import Env
10
10
  from orionis.luminate.foundation.exceptions.exception_bootstrapper import BootstrapRuntimeError
11
11
  from orionis.luminate.foundation.providers.service_providers_bootstrapper import ServiceProvidersBootstrapper
12
12
  from orionis.luminate.patterns.singleton import SingletonMeta
13
- from orionis.luminate.support.asyn_run import AsyncExecutor
13
+ from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
14
14
 
15
15
  class Application(metaclass=SingletonMeta):
16
16
  """
@@ -1,7 +1,7 @@
1
1
  from typing import Any, Callable
2
2
  from orionis.luminate.container.container import Container
3
3
  from orionis.luminate.container.exception import OrionisContainerValueError
4
- from orionis.luminate.support.asyn_run import AsyncExecutor
4
+ from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
5
5
 
6
6
  class Resolve:
7
7
  """
@@ -1,5 +1,5 @@
1
1
  from orionis.luminate.container.container import Container
2
- from orionis.luminate.support.asyn_run import AsyncExecutor
2
+ from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
3
3
 
4
4
  class FacadeMeta(type):
5
5
  """
@@ -0,0 +1,48 @@
1
+ import asyncio
2
+ from inspect import iscoroutine
3
+ from typing import Any, Coroutine, TypeVar, Union
4
+ from orionis.luminate.support.async_io.contracts.async_coroutine import IAsyncCoroutine
5
+
6
+ T = TypeVar("T")
7
+
8
+ class AsyncCoroutine(IAsyncCoroutine):
9
+ """
10
+ A utility class for executing coroutine objects in various asynchronous and synchronous contexts.
11
+ This class provides a static method to execute coroutine objects, handling different scenarios
12
+ such as running within an active event loop (e.g., in Jupyter notebooks or Starlette) or in a
13
+ synchronous context without an active event loop.
14
+
15
+ Methods
16
+ -------
17
+ execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]
18
+ Executes the given coroutine object, adapting to the current execution context.
19
+ """
20
+
21
+ @staticmethod
22
+ def execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
23
+ """
24
+ Executes the given coroutine object, adapting to the current execution context.
25
+ If there is an active event loop, it uses `asyncio.ensure_future` to schedule the coroutine.
26
+ If there is no active event loop, it uses `asyncio.run` to run the coroutine directly.
27
+ If the coroutine is already running, it returns a `Future` object that can be awaited.
28
+
29
+ Parameters
30
+ ----------
31
+ coro : Coroutine[Any, Any, T]
32
+ The coroutine object
33
+ """
34
+ if not iscoroutine(coro):
35
+ raise TypeError("Expected a coroutine object.")
36
+
37
+ try:
38
+ loop = asyncio.get_running_loop()
39
+ except RuntimeError:
40
+ # No hay loop activo: ejecutamos directamente
41
+ return asyncio.run(coro)
42
+
43
+ if loop.is_running():
44
+ # Ya hay un loop activo (notebooks, FastAPI, etc.)
45
+ return asyncio.ensure_future(coro) # devuelve un Future (debes await si estás en async)
46
+ else:
47
+ # Estamos en código síncrono, pero con acceso al loop
48
+ return loop.run_until_complete(coro)
@@ -0,0 +1,31 @@
1
+ import asyncio
2
+ from typing import Any, Coroutine, TypeVar, Union
3
+
4
+ T = TypeVar("T")
5
+
6
+ class IAsyncCoroutine:
7
+ """
8
+ Interface for executing asynchronous coroutines.
9
+
10
+ Methods
11
+ -------
12
+ execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]
13
+ Executes the given coroutine.
14
+ """
15
+
16
+ @staticmethod
17
+ def execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
18
+ """
19
+ Execute the given coroutine.
20
+
21
+ Parameters
22
+ ----------
23
+ coro : Coroutine[Any, Any, T]
24
+ The coroutine to be executed.
25
+
26
+ Returns
27
+ -------
28
+ Union[T, asyncio.Future]
29
+ The result of the coroutine execution or a Future object.
30
+ """
31
+ pass
@@ -4,15 +4,6 @@ class StdClass(IStdClass):
4
4
  """
5
5
  A dynamic class that allows setting arbitrary attributes,
6
6
  similar to PHP's stdClass.
7
-
8
- Examples
9
- --------
10
- >>> obj = StdClass(name='Raul', age=30)
11
- >>> obj.name
12
- 'Raul'
13
- >>> obj.update(age=31)
14
- >>> obj.toDict()
15
- {'name': 'Raul', 'age': 31}
16
7
  """
17
8
 
18
9
  def __init__(self, **kwargs):
@@ -0,0 +1,17 @@
1
+ from typing import Any
2
+
3
+ class ITestStdOut:
4
+ """
5
+ Utility for printing debug info during tests, including caller context (file, line, method).
6
+ """
7
+
8
+ @staticmethod
9
+ def print(*args: Any) -> None:
10
+ """
11
+ Print arguments to the console with file, line, and method of the caller.
12
+
13
+ Parameters
14
+ ----------
15
+ *args : Any
16
+ Any values to print. The first argument is ignored (typically the class or context).
17
+ """
@@ -0,0 +1,37 @@
1
+ class ITests:
2
+ """
3
+ Provides utility methods to configure and execute unit tests from specified folders.
4
+ """
5
+
6
+ @staticmethod
7
+ def execute(folders: list, print_result:bool = True, throw_exception:bool = False):
8
+ """
9
+ Configure and run unit tests from a list of folder definitions.
10
+
11
+ Parameters
12
+ ----------
13
+ folders : list of dict
14
+ Each dict must include:
15
+ - 'folder_path' (str): Path to the folder with test files.
16
+ - 'base_path' (str): Base path for resolving test imports.
17
+ - 'pattern' (str): Glob pattern for test file names.
18
+
19
+ print_result : bool, default=True
20
+ Whether to print test results to the console.
21
+
22
+ throw_exception : bool, default=False
23
+ Whether to raise exceptions on test failures.
24
+
25
+ Returns
26
+ -------
27
+ UnitTestClass
28
+ The initialized and executed test suite.
29
+
30
+ Raises
31
+ ------
32
+ TypeError
33
+ If `folders` is not a list of dictionaries.
34
+ KeyError
35
+ If any dictionary lacks required keys: 'folder_path', 'base_path', or 'pattern'.
36
+ """
37
+ pass
@@ -0,0 +1,82 @@
1
+ from typing import Any, Dict, Optional
2
+
3
+ class IUnitTest:
4
+ """
5
+ Advanced unit testing utility for discovering, executing, and reporting test results
6
+ with support for folder-based discovery, regex filtering, and customizable output.
7
+
8
+ Attributes
9
+ ----------
10
+ loader : unittest.TestLoader
11
+ Internal loader for test discovery.
12
+ suite : unittest.TestSuite
13
+ The aggregated test suite to be executed.
14
+ test_results : List[TestResult]
15
+ List of captured results per test, including status and errors.
16
+ start_time : float
17
+ Timestamp when the test execution started.
18
+ """
19
+
20
+ def addFolder(
21
+ self,
22
+ folder_path: str,
23
+ base_path: str = "tests",
24
+ pattern: str = "test_*.py",
25
+ test_name_pattern: Optional[str] = None
26
+ ):
27
+ """
28
+ Discover and add test cases from a given folder to the test suite.
29
+
30
+ Parameters
31
+ ----------
32
+ folder_path : str
33
+ Relative path to the folder containing test files.
34
+ base_path : str, default="tests"
35
+ Base path used to resolve full path to test modules.
36
+ pattern : str, default="test_*.py"
37
+ Glob pattern to match test filenames.
38
+ test_name_pattern : Optional[str], optional
39
+ Regex pattern to filter discovered test method names.
40
+
41
+ Returns
42
+ -------
43
+ UnitTest
44
+ Self instance for chaining.
45
+
46
+ Raises
47
+ ------
48
+ ValueError
49
+ If folder is invalid or no tests are found.
50
+ """
51
+ pass
52
+
53
+ def run(self, print_result:bool = True, throw_exception:bool = False) -> Dict[str, Any]:
54
+ """
55
+ Run all added tests and return a summary of the results.
56
+
57
+ Parameters
58
+ ----------
59
+ print_result : bool, default=True
60
+ Whether to print a formatted report to the console.
61
+ throw_exception : bool, default=False
62
+ Raise an exception if there are failures or errors.
63
+
64
+ Returns
65
+ -------
66
+ Dict[str, Any]
67
+ Summary including:
68
+ - total_tests : int
69
+ - passed : int
70
+ - failed : int
71
+ - errors : int
72
+ - skipped : int
73
+ - total_time : str (e.g., '1.234 seconds')
74
+ - success_rate : str (e.g., '87.5%')
75
+ - test_details : List[Dict[str, Any]]
76
+
77
+ Raises
78
+ ------
79
+ OrionisTestFailureException
80
+ If any test fails or errors occur and `throw_exception=True`.
81
+ """
82
+ pass
@@ -0,0 +1,62 @@
1
+ import unittest
2
+ from orionis.luminate.test.test_std_out import TestStdOut
3
+
4
+ class TestCase(unittest.IsolatedAsyncioTestCase, TestStdOut):
5
+ """
6
+ TestCase is a base class for unit tests that provides support for asynchronous
7
+ testing using `unittest.IsolatedAsyncioTestCase` and additional functionality
8
+ from `TestStdOut`."""
9
+ async def asyncSetUp(self):
10
+ """
11
+ Asynchronous setup method called before each test.
12
+ It ensures that the parent class's asyncSetUp method is invoked to initialize
13
+ any required resources.
14
+ """
15
+ await super().asyncSetUp()
16
+
17
+ async def asyncTearDown(self):
18
+ """
19
+ Asynchronous teardown method called after each test.
20
+ It ensures that the parent class's asyncTearDown method is invoked to clean up
21
+ any resources used during the test.
22
+ """
23
+ await super().asyncTearDown()
24
+
25
+ # Another asynchronous test case class
26
+ class TestAsyncCase(unittest.IsolatedAsyncioTestCase, TestStdOut):
27
+ """
28
+ TestAsyncCase is a test case class designed for asynchronous unit testing.
29
+ It inherits from `unittest.IsolatedAsyncioTestCase` to provide support for
30
+ async test methods and `TestStdOut` for additional functionality.
31
+ Methods
32
+ -------
33
+ asyncSetUp()
34
+ Asynchronous setup method called before each test. It ensures that the
35
+ parent class's asyncSetUp method is invoked to initialize any required
36
+ resources.
37
+ asyncTearDown()
38
+ Asynchronous teardown method called after each test. It ensures that the
39
+ parent class's asyncTearDown method is invoked to clean up any resources
40
+ used during the test.
41
+ """
42
+ async def asyncSetUp(self):
43
+ """
44
+ Asynchronous setup method called before each test.
45
+ It ensures that the parent class's asyncSetUp method is invoked to initialize
46
+ """
47
+ await super().asyncSetUp()
48
+
49
+ async def asyncTearDown(self):
50
+ """
51
+ Asynchronous teardown method called after each test.
52
+ It ensures that the parent class's asyncTearDown method is invoked to clean up
53
+ """
54
+ await super().asyncTearDown()
55
+
56
+ class TestSyncCase(unittest.TestCase, TestStdOut):
57
+ """
58
+ TestSyncCase is a test case class designed for synchronous unit testing.
59
+ It inherits from `unittest.TestCase` to provide support for standard test methods
60
+ and `TestStdOut` for additional functionality.
61
+ """
62
+ pass
@@ -1,8 +1,9 @@
1
1
  import os
2
2
  import sys
3
3
  from orionis.luminate.console.output.console import Console
4
+ from orionis.luminate.test.contracts.test_std_out import ITestStdOut
4
5
 
5
- class TestStdOut:
6
+ class TestStdOut(ITestStdOut):
6
7
  """
7
8
  A utility class for printing debug information during testing. This class temporarily
8
9
  redirects the standard output and error streams to their original states to ensure
@@ -56,7 +57,7 @@ class TestStdOut:
56
57
  _line = sys._getframe(1).f_lineno
57
58
 
58
59
  # Print the contextual information and the provided arguments
59
- Console.textMuted(f"[DEBUG] File: {_file}, Line: {_line}, Method: {_method}")
60
+ Console.textMuted(f"[Printout] File: {_file}, Line: {_line}, Method: {_method}")
60
61
  print(*args[1:], end='\n')
61
62
  Console.newLine()
62
63
 
@@ -1,6 +1,7 @@
1
+ from orionis.luminate.test.contracts.test_suite import ITests
1
2
  from orionis.luminate.test.test_unit import UnitTest as UnitTestClass
2
3
 
3
- class Tests:
4
+ class Tests(ITests):
4
5
  """
5
6
  A class containing test utility methods.
6
7
 
@@ -7,11 +7,12 @@ from contextlib import redirect_stdout, redirect_stderr
7
7
  from dataclasses import asdict
8
8
  from typing import Any, Dict, List, Optional, Tuple
9
9
  from orionis.luminate.console.output.console import Console
10
+ from orionis.luminate.test.contracts.test_unit import IUnitTest
10
11
  from orionis.luminate.test.test_exception import OrionisTestFailureException
11
12
  from orionis.luminate.test.test_result import TestResult
12
13
  from orionis.luminate.test.test_status import TestStatus
13
14
 
14
- class UnitTest:
15
+ class UnitTest(IUnitTest):
15
16
  """
16
17
  An advanced testing framework for discovering, running, and analyzing unit tests.
17
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.217.0
3
+ Version: 0.219.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
@@ -169,8 +169,11 @@ orionis/luminate/services/files/__init__.py
169
169
  orionis/luminate/services/files/path_resolver_service.py
170
170
  orionis/luminate/services/log/__init__.py
171
171
  orionis/luminate/services/log/log_service.py
172
- orionis/luminate/support/asyn_run.py
173
- orionis/luminate/support/dot_dict.py
172
+ orionis/luminate/support/adapters/__init__.py
173
+ orionis/luminate/support/adapters/dot_dict.py
174
+ orionis/luminate/support/async_io/__init__.py
175
+ orionis/luminate/support/async_io/async_coroutine.py
176
+ orionis/luminate/support/async_io/contracts/async_coroutine.py
174
177
  orionis/luminate/support/inspection/__init__.py
175
178
  orionis/luminate/support/inspection/container_integrity.py
176
179
  orionis/luminate/support/inspection/functions.py
@@ -201,6 +204,10 @@ orionis/luminate/test/test_status.py
201
204
  orionis/luminate/test/test_std_out.py
202
205
  orionis/luminate/test/test_suite.py
203
206
  orionis/luminate/test/test_unit.py
207
+ orionis/luminate/test/contracts/__init__.py
208
+ orionis/luminate/test/contracts/test_std_out.py
209
+ orionis/luminate/test/contracts/test_suite.py
210
+ orionis/luminate/test/contracts/test_unit.py
204
211
  orionis/static/ascii/icon.ascii
205
212
  orionis/static/ascii/info.ascii
206
213
  orionis/static/bg/galaxy.jpg
@@ -214,6 +221,12 @@ tests/__init__.py
214
221
  tests/example/__init__.py
215
222
  tests/example/test_example.py
216
223
  tests/support/__init__.py
224
+ tests/support/adapters/__init__.py
225
+ tests/support/adapters/test_doct_dict.py
226
+ tests/support/adapters/fakes/__init__.py
227
+ tests/support/adapters/fakes/fake_dict.py
228
+ tests/support/async_io/__init__.py
229
+ tests/support/async_io/test_async_coroutine.py
217
230
  tests/support/inspection/__init__.py
218
231
  tests/support/inspection/test_reflection_abstract.py
219
232
  tests/support/inspection/test_reflection_concrete.py
@@ -0,0 +1,15 @@
1
+ fake_dict = {
2
+ "type": "framework",
3
+ "name": "Orionis Framework",
4
+ "features": {
5
+ "authentication": True,
6
+ "csrf_protection": True,
7
+ "session_management": True,
8
+ "logging": True,
9
+ "error_handling": True,
10
+ "database_integration": True,
11
+ "template_engine": True,
12
+ "api_support": True,
13
+ "routing": True
14
+ }
15
+ }
@@ -0,0 +1,21 @@
1
+ from orionis.luminate.support.adapters.dot_dict import DotDict
2
+ from orionis.luminate.test.test_case import TestCase
3
+ from tests.support.adapters.fakes.fake_dict import fake_dict
4
+
5
+ class TestsDotDict(TestCase):
6
+
7
+ async def testAccessByDot(self):
8
+ """
9
+ Test the ability to access dictionary values using dot notation.
10
+ """
11
+ # Create a DotDict instance from the fake_dict
12
+ dot_dict = DotDict(fake_dict)
13
+
14
+ # Access the 'type' attribute using dot notation
15
+ self.assertEqual(dot_dict.type, "framework")
16
+
17
+ # Access the 'name' attribute using dot notation
18
+ self.assertEqual(dot_dict.name, "Orionis Framework")
19
+
20
+ # Access a nested attribute using dot notation
21
+ self.assertEqual(dot_dict.features.authentication, True)
File without changes
@@ -0,0 +1,35 @@
1
+ from orionis.luminate.support.async_io.async_coroutine import AsyncCoroutine
2
+ from orionis.luminate.test.test_case import TestCase
3
+ from tests.support.adapters.fakes.fake_dict import fake_dict
4
+
5
+ class TestsAsyncCoroutine(TestCase):
6
+
7
+ async def testExecuteWithActiveEventLoop(self):
8
+ """
9
+ Test the execution of a coroutine within an active event loop.
10
+ This test simulates a scenario where the coroutine is executed in an environment with an active event loop,
11
+ such as a Jupyter notebook or a Starlette application.
12
+ """
13
+ async def sample_coroutine():
14
+ return "Hello, World!"
15
+
16
+ result = await AsyncCoroutine.execute(sample_coroutine())
17
+ self.assertEqual(result, "Hello, World!")
18
+
19
+ async def testExecuteWithoutActiveEventLoop(self):
20
+ """
21
+ Test the execution of a coroutine without an active event loop.
22
+ This test simulates a scenario where the coroutine is executed in a synchronous context without an active event loop.
23
+ """
24
+ async def sample_coroutine():
25
+ return "Hello, World!"
26
+ result = await AsyncCoroutine.execute(sample_coroutine())
27
+ self.assertEqual(result, "Hello, World!")
28
+
29
+ async def testExecuteWithNonCoroutine(self):
30
+ """
31
+ Test the execution of a non-coroutine object.
32
+ This test checks that a TypeError is raised when a non-coroutine object is passed to the execute method.
33
+ """
34
+ with self.assertRaises(TypeError) as context:
35
+ AsyncCoroutine.execute("not a coroutine")
File without changes