orionis 0.407.0__tar.gz → 0.408.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 (586) hide show
  1. {orionis-0.407.0/orionis.egg-info → orionis-0.408.0}/PKG-INFO +1 -1
  2. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/container.py +11 -9
  3. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/enums/lifetimes.py +2 -0
  4. orionis-0.408.0/orionis/container/validators/__init__.py +21 -0
  5. {orionis-0.407.0 → orionis-0.408.0}/orionis/metadata/framework.py +1 -1
  6. {orionis-0.407.0 → orionis-0.408.0/orionis.egg-info}/PKG-INFO +1 -1
  7. orionis-0.408.0/tests/container/context/test_manager.py +37 -0
  8. orionis-0.408.0/tests/container/context/test_scope.py +31 -0
  9. orionis-0.408.0/tests/container/entities/test_binding.py +242 -0
  10. orionis-0.408.0/tests/container/enums/test_lifetimes.py +97 -0
  11. {orionis-0.407.0 → orionis-0.408.0}/tests/container/facades/test_facade.py +29 -12
  12. {orionis-0.407.0 → orionis-0.408.0}/tests/container/providers/test_providers.py +17 -10
  13. {orionis-0.407.0 → orionis-0.408.0}/tests/container/resolver/test_resolver.py +14 -7
  14. orionis-0.408.0/tests/container/test_container.py +409 -0
  15. orionis-0.408.0/tests/container/test_singleton.py +117 -0
  16. orionis-0.408.0/tests/container/test_thread_safety.py +89 -0
  17. {orionis-0.407.0 → orionis-0.408.0}/tests/container/validators/test_implements.py +59 -13
  18. orionis-0.408.0/tests/container/validators/test_is_abstract_class.py +147 -0
  19. orionis-0.408.0/tests/container/validators/test_is_callable.py +102 -0
  20. orionis-0.408.0/tests/container/validators/test_is_concrete_class.py +160 -0
  21. orionis-0.408.0/tests/container/validators/test_is_instance.py +150 -0
  22. orionis-0.408.0/tests/container/validators/test_is_not_subclass.py +50 -0
  23. orionis-0.408.0/tests/container/validators/test_is_subclass.py +178 -0
  24. {orionis-0.407.0 → orionis-0.408.0}/tests/container/validators/test_is_valid_alias.py +46 -12
  25. {orionis-0.407.0 → orionis-0.408.0}/tests/container/validators/test_lifetime.py +45 -14
  26. orionis-0.407.0/tests/container/context/test_manager.py +0 -27
  27. orionis-0.407.0/tests/container/context/test_scope.py +0 -23
  28. orionis-0.407.0/tests/container/entities/test_binding.py +0 -133
  29. orionis-0.407.0/tests/container/enums/test_lifetimes.py +0 -63
  30. orionis-0.407.0/tests/container/test_container.py +0 -254
  31. orionis-0.407.0/tests/container/test_singleton.py +0 -98
  32. orionis-0.407.0/tests/container/test_thread_safety.py +0 -217
  33. orionis-0.407.0/tests/container/validators/test_is_abstract_class.py +0 -99
  34. orionis-0.407.0/tests/container/validators/test_is_callable.py +0 -73
  35. orionis-0.407.0/tests/container/validators/test_is_concrete_class.py +0 -97
  36. orionis-0.407.0/tests/container/validators/test_is_instance.py +0 -105
  37. orionis-0.407.0/tests/container/validators/test_is_not_subclass.py +0 -117
  38. orionis-0.407.0/tests/container/validators/test_is_subclass.py +0 -115
  39. orionis-0.407.0/tests/testing/__init__.py +0 -0
  40. {orionis-0.407.0 → orionis-0.408.0}/LICENCE +0 -0
  41. {orionis-0.407.0 → orionis-0.408.0}/MANIFEST.in +0 -0
  42. {orionis-0.407.0 → orionis-0.408.0}/README.md +0 -0
  43. {orionis-0.407.0 → orionis-0.408.0}/orionis/__init__.py +0 -0
  44. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/__init__.py +0 -0
  45. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/base/__init__.py +0 -0
  46. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/base/command.py +0 -0
  47. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/command_filter.py +0 -0
  48. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/commands/__init__.py +0 -0
  49. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/commands/cache_clear.py +0 -0
  50. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/commands/help.py +0 -0
  51. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/commands/schedule_work.py +0 -0
  52. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/commands/version.py +0 -0
  53. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/dumper/__init__.py +0 -0
  54. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/dumper/dump_die.py +0 -0
  55. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/exceptions/__init__.py +0 -0
  56. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/exceptions/cli-orionis-value-error.py +0 -0
  57. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/exceptions/cli_exception.py +0 -0
  58. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/exceptions/cli_runtime_error.py +0 -0
  59. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/exceptions/cli_schedule_exception.py +0 -0
  60. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/kernel.py +0 -0
  61. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/output/__init__.py +0 -0
  62. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/output/console.py +0 -0
  63. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/output/executor.py +0 -0
  64. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/output/progress_bar.py +0 -0
  65. {orionis-0.407.0 → orionis-0.408.0}/orionis/_console/parser.py +0 -0
  66. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/__init__.py +0 -0
  67. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/application.py +0 -0
  68. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/config/__init__.py +0 -0
  69. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/config/config.py +0 -0
  70. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/__init__.py +0 -0
  71. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/base/__init__.py +0 -0
  72. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/base/command.py +0 -0
  73. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/command_filter.py +0 -0
  74. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/kernel.py +0 -0
  75. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/output/__init__.py +0 -0
  76. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/output/console.py +0 -0
  77. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/output/executor.py +0 -0
  78. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/parser.py +0 -0
  79. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/console/task_manager.py +0 -0
  80. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/__init__.py +0 -0
  81. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  82. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  83. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  84. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  85. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  86. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  87. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  88. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/facade.py +0 -0
  89. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  90. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  91. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  92. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  93. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  94. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  95. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/__init__.py +0 -0
  96. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  97. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  98. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  99. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  100. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  101. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  102. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  103. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  104. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  105. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/providers/__init__.py +0 -0
  106. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/providers/service_provider.py +0 -0
  107. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/__init__.py +0 -0
  108. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  109. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  110. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  111. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/config/__init__.py +0 -0
  112. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/config/config_service.py +0 -0
  113. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  114. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  115. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/files/__init__.py +0 -0
  116. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  117. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/log/__init__.py +0 -0
  118. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/services/log/log_service.py +0 -0
  119. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/support/exception_parse.py +0 -0
  120. {orionis-0.407.0 → orionis-0.408.0}/orionis/_contracts/support/reflection.py +0 -0
  121. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/__init__.py +0 -0
  122. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/console/__init__.py +0 -0
  123. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  124. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/environment/__init__.py +0 -0
  125. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  126. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  127. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  128. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  129. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  130. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  131. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/providers/__init__.py +0 -0
  132. {orionis-0.407.0 → orionis-0.408.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  133. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/__init__.py +0 -0
  134. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/commands/__init__.py +0 -0
  135. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  136. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/commands/scheduler_service.py +0 -0
  137. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/config/__init__.py +0 -0
  138. {orionis-0.407.0 → orionis-0.408.0}/orionis/_services/config/config_service.py +0 -0
  139. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/__init__.py +0 -0
  140. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/base/__init__.py +0 -0
  141. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/base/command.py +0 -0
  142. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/base/contracts/__init__.py +0 -0
  143. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/base/contracts/command.py +0 -0
  144. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dumper/__init__.py +0 -0
  145. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  146. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dumper/contracts/dump.py +0 -0
  147. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dumper/dump.py +0 -0
  148. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dynamic/__init__.py +0 -0
  149. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  150. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  151. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/dynamic/progress_bar.py +0 -0
  152. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/__init__.py +0 -0
  153. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/console.py +0 -0
  154. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/contracts/__init__.py +0 -0
  155. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/contracts/console.py +0 -0
  156. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/enums/__init__.py +0 -0
  157. {orionis-0.407.0 → orionis-0.408.0}/orionis/console/output/enums/styles.py +0 -0
  158. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/__init__.py +0 -0
  159. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/context/__init__.py +0 -0
  160. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/context/manager.py +0 -0
  161. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/context/scope.py +0 -0
  162. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/contracts/__init__.py +0 -0
  163. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/contracts/container.py +0 -0
  164. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/contracts/resolver.py +0 -0
  165. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/contracts/service_provider.py +0 -0
  166. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/entities/__init__.py +0 -0
  167. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/entities/binding.py +0 -0
  168. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/enums/__init__.py +0 -0
  169. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/exceptions/__init__.py +0 -0
  170. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/exceptions/attribute.py +0 -0
  171. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/exceptions/exception.py +0 -0
  172. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/exceptions/type.py +0 -0
  173. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/exceptions/value.py +0 -0
  174. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/facades/__init__.py +0 -0
  175. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/facades/facade.py +0 -0
  176. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/providers/__init__.py +0 -0
  177. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/providers/service_provider.py +0 -0
  178. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/resolver/__init__.py +0 -0
  179. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/resolver/resolver.py +0 -0
  180. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/implements.py +0 -0
  181. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_abstract_class.py +0 -0
  182. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_callable.py +0 -0
  183. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_concrete_class.py +0 -0
  184. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_instance.py +0 -0
  185. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_not_subclass.py +0 -0
  186. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_subclass.py +0 -0
  187. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/is_valid_alias.py +0 -0
  188. {orionis-0.407.0 → orionis-0.408.0}/orionis/container/validators/lifetime.py +0 -0
  189. {orionis-0.407.0/orionis/container/validators → orionis-0.408.0/orionis/foundation}/__init__.py +0 -0
  190. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/application.py +0 -0
  191. {orionis-0.407.0/orionis/foundation → orionis-0.408.0/orionis/foundation/config}/__init__.py +0 -0
  192. {orionis-0.407.0/orionis/foundation/config → orionis-0.408.0/orionis/foundation/config/app}/__init__.py +0 -0
  193. {orionis-0.407.0/orionis/foundation/config/app → orionis-0.408.0/orionis/foundation/config/app/entities}/__init__.py +0 -0
  194. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/app/entities/app.py +0 -0
  195. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  196. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  197. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  198. {orionis-0.407.0/orionis/foundation/config/app/entities → orionis-0.408.0/orionis/foundation/config/auth}/__init__.py +0 -0
  199. {orionis-0.407.0/orionis/foundation/config/auth → orionis-0.408.0/orionis/foundation/config/auth/entities}/__init__.py +0 -0
  200. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  201. {orionis-0.407.0/orionis/foundation/config/auth/entities → orionis-0.408.0/orionis/foundation/config/cache}/__init__.py +0 -0
  202. {orionis-0.407.0/orionis/foundation/config/cache → orionis-0.408.0/orionis/foundation/config/cache/entities}/__init__.py +0 -0
  203. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  204. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  205. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  206. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  207. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  208. {orionis-0.407.0/orionis/foundation/config/cache/entities → orionis-0.408.0/orionis/foundation/config/cors}/__init__.py +0 -0
  209. {orionis-0.407.0/orionis/foundation/config/cors → orionis-0.408.0/orionis/foundation/config/cors/entities}/__init__.py +0 -0
  210. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  211. {orionis-0.407.0/orionis/foundation/config/cors/entities → orionis-0.408.0/orionis/foundation/config/database}/__init__.py +0 -0
  212. {orionis-0.407.0/orionis/foundation/config/database → orionis-0.408.0/orionis/foundation/config/database/entities}/__init__.py +0 -0
  213. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  214. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/database.py +0 -0
  215. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  216. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  217. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  218. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  219. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  220. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  221. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  222. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  223. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  224. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  225. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  226. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  227. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  228. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  229. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  230. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  231. {orionis-0.407.0/orionis/foundation/config/database/entities → orionis-0.408.0/orionis/foundation/config/filesystems}/__init__.py +0 -0
  232. {orionis-0.407.0/orionis/foundation/config/filesystems → orionis-0.408.0/orionis/foundation/config/filesystems/entitites}/__init__.py +0 -0
  233. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  234. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  235. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  236. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  237. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  238. {orionis-0.407.0/orionis/foundation/config/filesystems/entitites → orionis-0.408.0/orionis/foundation/config/logging}/__init__.py +0 -0
  239. {orionis-0.407.0/orionis/foundation/config/logging → orionis-0.408.0/orionis/foundation/config/logging/entities}/__init__.py +0 -0
  240. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  241. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  242. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  243. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  244. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  245. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  246. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  247. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  248. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  249. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  250. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  251. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  252. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  253. {orionis-0.407.0/orionis/foundation/config/logging/entities → orionis-0.408.0/orionis/foundation/config/mail}/__init__.py +0 -0
  254. {orionis-0.407.0/orionis/foundation/config/mail → orionis-0.408.0/orionis/foundation/config/mail/entities}/__init__.py +0 -0
  255. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  256. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  257. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  258. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  259. {orionis-0.407.0/orionis/foundation/config/mail/entities → orionis-0.408.0/orionis/foundation/config/queue}/__init__.py +0 -0
  260. {orionis-0.407.0/orionis/foundation/config/queue → orionis-0.408.0/orionis/foundation/config/queue/entities}/__init__.py +0 -0
  261. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  262. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  263. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  264. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  265. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  266. {orionis-0.407.0/orionis/foundation/config/queue/entities → orionis-0.408.0/orionis/foundation/config/roots}/__init__.py +0 -0
  267. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/roots/paths.py +0 -0
  268. {orionis-0.407.0/orionis/foundation/config/roots → orionis-0.408.0/orionis/foundation/config/session}/__init__.py +0 -0
  269. {orionis-0.407.0/orionis/foundation/config/session → orionis-0.408.0/orionis/foundation/config/session/entities}/__init__.py +0 -0
  270. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/session/entities/session.py +0 -0
  271. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  272. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  273. {orionis-0.407.0/orionis/foundation/config/session/entities → orionis-0.408.0/orionis/foundation/config/session/helpers}/__init__.py +0 -0
  274. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  275. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/startup.py +0 -0
  276. {orionis-0.407.0/orionis/foundation/config/session/helpers → orionis-0.408.0/orionis/foundation/config/testing}/__init__.py +0 -0
  277. {orionis-0.407.0/orionis/foundation/config/testing → orionis-0.408.0/orionis/foundation/config/testing/entities}/__init__.py +0 -0
  278. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  279. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  280. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  281. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  282. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  283. {orionis-0.407.0/orionis/foundation/config/testing/entities → orionis-0.408.0/orionis/foundation/contracts}/__init__.py +0 -0
  284. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/contracts/application.py +0 -0
  285. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/contracts/config.py +0 -0
  286. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/exceptions/__init__.py +0 -0
  287. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/exceptions/integrity.py +0 -0
  288. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/exceptions/runtime.py +0 -0
  289. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/exceptions/type.py +0 -0
  290. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/exceptions/value.py +0 -0
  291. {orionis-0.407.0/orionis/foundation/contracts → orionis-0.408.0/orionis/foundation/providers}/__init__.py +0 -0
  292. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/console_provider.py +0 -0
  293. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  294. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/logger_provider.py +0 -0
  295. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/path_resolver_provider.py +0 -0
  296. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  297. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/testing_provider.py +0 -0
  298. {orionis-0.407.0 → orionis-0.408.0}/orionis/foundation/providers/workers_provider.py +0 -0
  299. {orionis-0.407.0/orionis/foundation/providers → orionis-0.408.0/orionis/metadata}/__init__.py +0 -0
  300. {orionis-0.407.0 → orionis-0.408.0}/orionis/metadata/package.py +0 -0
  301. {orionis-0.407.0/orionis/metadata → orionis-0.408.0/orionis/services}/__init__.py +0 -0
  302. {orionis-0.407.0/orionis/services → orionis-0.408.0/orionis/services/asynchrony}/__init__.py +0 -0
  303. {orionis-0.407.0/orionis/services/asynchrony → orionis-0.408.0/orionis/services/asynchrony/contracts}/__init__.py +0 -0
  304. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  305. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/asynchrony/coroutines.py +0 -0
  306. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  307. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  308. {orionis-0.407.0/orionis/services/asynchrony/contracts → orionis-0.408.0/orionis/services/environment}/__init__.py +0 -0
  309. {orionis-0.407.0/orionis/services/environment → orionis-0.408.0/orionis/services/environment/contracts}/__init__.py +0 -0
  310. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/contracts/env.py +0 -0
  311. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/contracts/types.py +0 -0
  312. {orionis-0.407.0/orionis/services/environment/contracts → orionis-0.408.0/orionis/services/environment/core}/__init__.py +0 -0
  313. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/core/dot_env.py +0 -0
  314. {orionis-0.407.0/orionis/services/environment/core → orionis-0.408.0/orionis/services/environment/dynamic}/__init__.py +0 -0
  315. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/dynamic/types.py +0 -0
  316. {orionis-0.407.0/orionis/services/environment/dynamic → orionis-0.408.0/orionis/services/environment/enums}/__init__.py +0 -0
  317. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/enums/cast_type.py +0 -0
  318. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/env.py +0 -0
  319. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  320. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/exceptions/exception.py +0 -0
  321. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/exceptions/value.py +0 -0
  322. {orionis-0.407.0/orionis/services/environment/enums → orionis-0.408.0/orionis/services/environment/helpers}/__init__.py +0 -0
  323. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/helpers/functions.py +0 -0
  324. {orionis-0.407.0/orionis/services/environment/helpers → orionis-0.408.0/orionis/services/environment/key}/__init__.py +0 -0
  325. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/key/key_generator.py +0 -0
  326. {orionis-0.407.0/orionis/services/environment/key → orionis-0.408.0/orionis/services/environment/serializer}/__init__.py +0 -0
  327. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/serializer/values.py +0 -0
  328. {orionis-0.407.0/orionis/services/environment/serializer → orionis-0.408.0/orionis/services/environment/validators}/__init__.py +0 -0
  329. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/validators/key_name.py +0 -0
  330. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/environment/validators/types.py +0 -0
  331. {orionis-0.407.0/orionis/services/environment/validators → orionis-0.408.0/orionis/services/introspection}/__init__.py +0 -0
  332. {orionis-0.407.0/orionis/services/introspection → orionis-0.408.0/orionis/services/introspection/abstract}/__init__.py +0 -0
  333. {orionis-0.407.0/orionis/services/introspection/abstract → orionis-0.408.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
  334. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  335. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  336. {orionis-0.407.0/orionis/services/introspection/abstract/contracts → orionis-0.408.0/orionis/services/introspection/callables}/__init__.py +0 -0
  337. {orionis-0.407.0/orionis/services/introspection/callables → orionis-0.408.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
  338. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  339. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/callables/reflection.py +0 -0
  340. {orionis-0.407.0/orionis/services/introspection/callables/contracts → orionis-0.408.0/orionis/services/introspection/concretes}/__init__.py +0 -0
  341. {orionis-0.407.0/orionis/services/introspection/concretes → orionis-0.408.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
  342. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/concretes/contracts/concrete.py +0 -0
  343. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  344. {orionis-0.407.0/orionis/services/introspection/concretes/contracts → orionis-0.408.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
  345. {orionis-0.407.0/orionis/services/introspection/dependencies → orionis-0.408.0/orionis/services/introspection/dependencies/contracts}/__init__.py +0 -0
  346. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  347. {orionis-0.407.0/orionis/services/introspection/dependencies/contracts → orionis-0.408.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
  348. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  349. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  350. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  351. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  352. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  353. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  354. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  355. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/exceptions/type.py +0 -0
  356. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/exceptions/value.py +0 -0
  357. {orionis-0.407.0/orionis/services/introspection/dependencies/entities → orionis-0.408.0/orionis/services/introspection/instances}/__init__.py +0 -0
  358. {orionis-0.407.0/orionis/services/introspection/instances → orionis-0.408.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
  359. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  360. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/instances/reflection.py +0 -0
  361. {orionis-0.407.0/orionis/services/introspection/instances/contracts → orionis-0.408.0/orionis/services/introspection/modules}/__init__.py +0 -0
  362. {orionis-0.407.0/orionis/services/introspection/modules → orionis-0.408.0/orionis/services/introspection/modules/contracts}/__init__.py +0 -0
  363. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  364. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/modules/reflection.py +0 -0
  365. {orionis-0.407.0/orionis/services/introspection/modules/contracts → orionis-0.408.0/orionis/services/introspection/objects}/__init__.py +0 -0
  366. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/objects/types.py +0 -0
  367. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/introspection/reflection.py +0 -0
  368. {orionis-0.407.0/orionis/services/introspection/objects → orionis-0.408.0/orionis/services/log}/__init__.py +0 -0
  369. {orionis-0.407.0/orionis/services/log → orionis-0.408.0/orionis/services/log/contracts}/__init__.py +0 -0
  370. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/contracts/log_service.py +0 -0
  371. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/exceptions/__init__.py +0 -0
  372. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/exceptions/runtime.py +0 -0
  373. {orionis-0.407.0/orionis/services/log/contracts → orionis-0.408.0/orionis/services/log/handlers}/__init__.py +0 -0
  374. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/handlers/filename.py +0 -0
  375. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  376. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  377. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/log/log_service.py +0 -0
  378. {orionis-0.407.0/orionis/services/log/handlers → orionis-0.408.0/orionis/services/paths}/__init__.py +0 -0
  379. {orionis-0.407.0/orionis/services/paths → orionis-0.408.0/orionis/services/paths/contracts}/__init__.py +0 -0
  380. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/paths/contracts/resolver.py +0 -0
  381. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  382. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/paths/exceptions/exception.py +0 -0
  383. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/paths/exceptions/file.py +0 -0
  384. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/paths/resolver.py +0 -0
  385. {orionis-0.407.0/orionis/services/paths/contracts → orionis-0.408.0/orionis/services/system}/__init__.py +0 -0
  386. {orionis-0.407.0/orionis/services/system → orionis-0.408.0/orionis/services/system/contracts}/__init__.py +0 -0
  387. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/system/contracts/imports.py +0 -0
  388. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/system/contracts/workers.py +0 -0
  389. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/system/imports.py +0 -0
  390. {orionis-0.407.0/orionis/services/system/contracts → orionis-0.408.0/orionis/services/system/runtime}/__init__.py +0 -0
  391. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/system/runtime/imports.py +0 -0
  392. {orionis-0.407.0 → orionis-0.408.0}/orionis/services/system/workers.py +0 -0
  393. {orionis-0.407.0/orionis/services/system/runtime → orionis-0.408.0/orionis/support}/__init__.py +0 -0
  394. {orionis-0.407.0/orionis/support → orionis-0.408.0/orionis/support/entities}/__init__.py +0 -0
  395. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/entities/base.py +0 -0
  396. {orionis-0.407.0/orionis/support/entities → orionis-0.408.0/orionis/support/facades}/__init__.py +0 -0
  397. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/console.py +0 -0
  398. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/dumper.py +0 -0
  399. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/logger.py +0 -0
  400. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/path_resolver.py +0 -0
  401. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/progress_bar.py +0 -0
  402. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/testing.py +0 -0
  403. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/facades/workers.py +0 -0
  404. {orionis-0.407.0/orionis/support/facades → orionis-0.408.0/orionis/support/formatter}/__init__.py +0 -0
  405. {orionis-0.407.0/orionis/support/formatter → orionis-0.408.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
  406. {orionis-0.407.0/orionis/support/formatter/exceptions → orionis-0.408.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
  407. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  408. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  409. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/formatter/serializer.py +0 -0
  410. {orionis-0.407.0/orionis/support/formatter/exceptions/contracts → orionis-0.408.0/orionis/support/patterns}/__init__.py +0 -0
  411. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  412. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/patterns/singleton/meta.py +0 -0
  413. {orionis-0.407.0/orionis/support/patterns → orionis-0.408.0/orionis/support/standard}/__init__.py +0 -0
  414. {orionis-0.407.0/orionis/support/standard → orionis-0.408.0/orionis/support/standard/contracts}/__init__.py +0 -0
  415. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/standard/contracts/std.py +0 -0
  416. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  417. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/standard/exceptions/value.py +0 -0
  418. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/standard/std.py +0 -0
  419. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/wrapper/__init__.py +0 -0
  420. {orionis-0.407.0 → orionis-0.408.0}/orionis/support/wrapper/dot_dict.py +0 -0
  421. {orionis-0.407.0/orionis/support/standard/contracts → orionis-0.408.0/orionis/test}/__init__.py +0 -0
  422. {orionis-0.407.0/orionis/test → orionis-0.408.0/orionis/test/cases}/__init__.py +0 -0
  423. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/cases/asynchronous.py +0 -0
  424. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/cases/synchronous.py +0 -0
  425. {orionis-0.407.0/orionis/test/cases → orionis-0.408.0/orionis/test/contracts}/__init__.py +0 -0
  426. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/dumper.py +0 -0
  427. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/kernel.py +0 -0
  428. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/logs.py +0 -0
  429. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/printer.py +0 -0
  430. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/render.py +0 -0
  431. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/test_result.py +0 -0
  432. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/contracts/unit_test.py +0 -0
  433. {orionis-0.407.0/orionis/test/contracts → orionis-0.408.0/orionis/test/core}/__init__.py +0 -0
  434. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/core/unit_test.py +0 -0
  435. {orionis-0.407.0/orionis/test/core → orionis-0.408.0/orionis/test/entities}/__init__.py +0 -0
  436. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/entities/result.py +0 -0
  437. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/enums/__init__.py +0 -0
  438. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/enums/status.py +0 -0
  439. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/__init__.py +0 -0
  440. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/config.py +0 -0
  441. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/failure.py +0 -0
  442. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/persistence.py +0 -0
  443. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/runtime.py +0 -0
  444. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/exceptions/value.py +0 -0
  445. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/kernel.py +0 -0
  446. {orionis-0.407.0/orionis/test/entities → orionis-0.408.0/orionis/test/output}/__init__.py +0 -0
  447. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/output/dumper.py +0 -0
  448. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/output/printer.py +0 -0
  449. {orionis-0.407.0/orionis/test/output → orionis-0.408.0/orionis/test/records}/__init__.py +0 -0
  450. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/records/logs.py +0 -0
  451. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/__init__.py +0 -0
  452. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/base_path.py +0 -0
  453. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/execution_mode.py +0 -0
  454. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/fail_fast.py +0 -0
  455. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/folder_path.py +0 -0
  456. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/module_name.py +0 -0
  457. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/name_pattern.py +0 -0
  458. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/pattern.py +0 -0
  459. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/persistent.py +0 -0
  460. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/persistent_driver.py +0 -0
  461. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/print_result.py +0 -0
  462. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/tags.py +0 -0
  463. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/throw_exception.py +0 -0
  464. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/verbosity.py +0 -0
  465. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/web_report.py +0 -0
  466. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/validators/workers.py +0 -0
  467. {orionis-0.407.0/orionis/test/records → orionis-0.408.0/orionis/test/view}/__init__.py +0 -0
  468. {orionis-0.407.0 → orionis-0.408.0}/orionis/test/view/render.py +0 -0
  469. {orionis-0.407.0 → orionis-0.408.0}/orionis.egg-info/SOURCES.txt +0 -0
  470. {orionis-0.407.0 → orionis-0.408.0}/orionis.egg-info/dependency_links.txt +0 -0
  471. {orionis-0.407.0 → orionis-0.408.0}/orionis.egg-info/requires.txt +0 -0
  472. {orionis-0.407.0 → orionis-0.408.0}/orionis.egg-info/top_level.txt +0 -0
  473. {orionis-0.407.0 → orionis-0.408.0}/orionis.egg-info/zip-safe +0 -0
  474. {orionis-0.407.0 → orionis-0.408.0}/setup.cfg +0 -0
  475. {orionis-0.407.0 → orionis-0.408.0}/setup.py +0 -0
  476. {orionis-0.407.0/orionis/test/view → orionis-0.408.0/tests}/__init__.py +0 -0
  477. {orionis-0.407.0/tests → orionis-0.408.0/tests/container}/__init__.py +0 -0
  478. {orionis-0.407.0/tests/container → orionis-0.408.0/tests/container/context}/__init__.py +0 -0
  479. {orionis-0.407.0/tests/container/context → orionis-0.408.0/tests/container/entities}/__init__.py +0 -0
  480. {orionis-0.407.0/tests/container/entities → orionis-0.408.0/tests/container/enums}/__init__.py +0 -0
  481. {orionis-0.407.0/tests/container/enums → orionis-0.408.0/tests/container/facades}/__init__.py +0 -0
  482. {orionis-0.407.0/tests/container/facades → orionis-0.408.0/tests/container/mocks}/__init__.py +0 -0
  483. {orionis-0.407.0 → orionis-0.408.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  484. {orionis-0.407.0 → orionis-0.408.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  485. {orionis-0.407.0/tests/container/mocks → orionis-0.408.0/tests/container/providers}/__init__.py +0 -0
  486. {orionis-0.407.0/tests/container/providers → orionis-0.408.0/tests/container/resolver}/__init__.py +0 -0
  487. {orionis-0.407.0/tests/container/resolver → orionis-0.408.0/tests/container/validators}/__init__.py +0 -0
  488. {orionis-0.407.0/tests/container/validators → orionis-0.408.0/tests/example}/__init__.py +0 -0
  489. {orionis-0.407.0 → orionis-0.408.0}/tests/example/test_example.py +0 -0
  490. {orionis-0.407.0/tests/example → orionis-0.408.0/tests/foundation}/__init__.py +0 -0
  491. {orionis-0.407.0/tests/foundation → orionis-0.408.0/tests/foundation/config}/__init__.py +0 -0
  492. {orionis-0.407.0/tests/foundation/config → orionis-0.408.0/tests/foundation/config/app}/__init__.py +0 -0
  493. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  494. {orionis-0.407.0/tests/foundation/config/app → orionis-0.408.0/tests/foundation/config/auth}/__init__.py +0 -0
  495. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  496. {orionis-0.407.0/tests/foundation/config/auth → orionis-0.408.0/tests/foundation/config/cache}/__init__.py +0 -0
  497. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  498. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  499. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  500. {orionis-0.407.0/tests/foundation/config/cache → orionis-0.408.0/tests/foundation/config/cors}/__init__.py +0 -0
  501. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  502. {orionis-0.407.0/tests/foundation/config/cors → orionis-0.408.0/tests/foundation/config/database}/__init__.py +0 -0
  503. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  504. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  505. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  506. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  507. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  508. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  509. {orionis-0.407.0/tests/foundation/config/database → orionis-0.408.0/tests/foundation/config/filesystems}/__init__.py +0 -0
  510. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  511. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  512. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  513. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  514. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  515. {orionis-0.407.0/tests/foundation/config/filesystems → orionis-0.408.0/tests/foundation/config/logging}/__init__.py +0 -0
  516. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  517. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  518. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  519. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  520. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  521. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  522. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  523. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  524. {orionis-0.407.0/tests/foundation/config/logging → orionis-0.408.0/tests/foundation/config/mail}/__init__.py +0 -0
  525. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  526. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  527. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  528. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  529. {orionis-0.407.0/tests/foundation/config/mail → orionis-0.408.0/tests/foundation/config/queue}/__init__.py +0 -0
  530. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  531. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  532. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  533. {orionis-0.407.0/tests/foundation/config/queue → orionis-0.408.0/tests/foundation/config/root}/__init__.py +0 -0
  534. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  535. {orionis-0.407.0/tests/foundation/config/root → orionis-0.408.0/tests/foundation/config/session}/__init__.py +0 -0
  536. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  537. {orionis-0.407.0/tests/foundation/config/session → orionis-0.408.0/tests/foundation/config/startup}/__init__.py +0 -0
  538. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  539. {orionis-0.407.0/tests/foundation/config/startup → orionis-0.408.0/tests/foundation/config/testing}/__init__.py +0 -0
  540. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  541. {orionis-0.407.0/tests/foundation/config/testing → orionis-0.408.0/tests/foundation/exceptions}/__init__.py +0 -0
  542. {orionis-0.407.0 → orionis-0.408.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
  543. {orionis-0.407.0/tests/foundation/exceptions → orionis-0.408.0/tests/metadata}/__init__.py +0 -0
  544. {orionis-0.407.0 → orionis-0.408.0}/tests/metadata/test_metadata_framework.py +0 -0
  545. {orionis-0.407.0 → orionis-0.408.0}/tests/metadata/test_metadata_package.py +0 -0
  546. {orionis-0.407.0/tests/metadata → orionis-0.408.0/tests/services}/__init__.py +0 -0
  547. {orionis-0.407.0/tests/services → orionis-0.408.0/tests/services/asynchrony}/__init__.py +0 -0
  548. {orionis-0.407.0 → orionis-0.408.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  549. {orionis-0.407.0/tests/services/asynchrony → orionis-0.408.0/tests/services/environment}/__init__.py +0 -0
  550. {orionis-0.407.0 → orionis-0.408.0}/tests/services/environment/test_services_environment.py +0 -0
  551. {orionis-0.407.0/tests/services/environment → orionis-0.408.0/tests/services/inspection}/__init__.py +0 -0
  552. {orionis-0.407.0/tests/services/inspection → orionis-0.408.0/tests/services/inspection/dependencies}/__init__.py +0 -0
  553. {orionis-0.407.0/tests/services/inspection/dependencies → orionis-0.408.0/tests/services/inspection/dependencies/mocks}/__init__.py +0 -0
  554. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  555. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  556. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  557. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  558. {orionis-0.407.0/tests/services/inspection/dependencies/mocks → orionis-0.408.0/tests/services/inspection/reflection}/__init__.py +0 -0
  559. {orionis-0.407.0/tests/services/inspection/reflection → orionis-0.408.0/tests/services/inspection/reflection/mock}/__init__.py +0 -0
  560. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
  561. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
  562. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
  563. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
  564. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
  565. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
  566. {orionis-0.407.0 → orionis-0.408.0}/tests/services/inspection/test_reflection.py +0 -0
  567. {orionis-0.407.0/tests/services/inspection/reflection/mock → orionis-0.408.0/tests/services/path}/__init__.py +0 -0
  568. {orionis-0.407.0 → orionis-0.408.0}/tests/services/path/test_services_resolver.py +0 -0
  569. {orionis-0.407.0/tests/services/path → orionis-0.408.0/tests/services/system}/__init__.py +0 -0
  570. {orionis-0.407.0 → orionis-0.408.0}/tests/services/system/test_services_system_imports.py +0 -0
  571. {orionis-0.407.0 → orionis-0.408.0}/tests/services/system/test_services_system_workers.py +0 -0
  572. {orionis-0.407.0/tests/services/system → orionis-0.408.0/tests/support}/__init__.py +0 -0
  573. {orionis-0.407.0/tests/support → orionis-0.408.0/tests/support/parsers}/__init__.py +0 -0
  574. {orionis-0.407.0/tests/support/parsers → orionis-0.408.0/tests/support/parsers/mocks}/__init__.py +0 -0
  575. {orionis-0.407.0 → orionis-0.408.0}/tests/support/parsers/mocks/mock_custom_error.py +0 -0
  576. {orionis-0.407.0 → orionis-0.408.0}/tests/support/parsers/test_services_parser_exceptions.py +0 -0
  577. {orionis-0.407.0/tests/support/parsers/mocks → orionis-0.408.0/tests/support/patterns}/__init__.py +0 -0
  578. {orionis-0.407.0/tests/support/patterns → orionis-0.408.0/tests/support/patterns/singleton}/__init__.py +0 -0
  579. {orionis-0.407.0 → orionis-0.408.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  580. {orionis-0.407.0/tests/support/patterns/singleton → orionis-0.408.0/tests/support/standard}/__init__.py +0 -0
  581. {orionis-0.407.0 → orionis-0.408.0}/tests/support/standard/test_services_std.py +0 -0
  582. {orionis-0.407.0/tests/support/standard → orionis-0.408.0/tests/support/wrapper}/__init__.py +0 -0
  583. {orionis-0.407.0 → orionis-0.408.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  584. {orionis-0.407.0/tests/support/wrapper → orionis-0.408.0/tests/testing}/__init__.py +0 -0
  585. {orionis-0.407.0 → orionis-0.408.0}/tests/testing/test_testing_result.py +0 -0
  586. {orionis-0.407.0 → orionis-0.408.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.407.0
3
+ Version: 0.408.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
@@ -6,15 +6,17 @@ from orionis.container.entities.binding import Binding
6
6
  from orionis.container.enums.lifetimes import Lifetime
7
7
  from orionis.container.exceptions import OrionisContainerException
8
8
  from orionis.container.resolver.resolver import Resolver
9
- from orionis.container.validators.implements import ImplementsAbstractMethods
10
- from orionis.container.validators.is_abstract_class import IsAbstractClass
11
- from orionis.container.validators.is_callable import IsCallable
12
- from orionis.container.validators.is_concrete_class import IsConcreteClass
13
- from orionis.container.validators.is_instance import IsInstance
14
- from orionis.container.validators.is_not_subclass import IsNotSubclass
15
- from orionis.container.validators.is_subclass import IsSubclass
16
- from orionis.container.validators.is_valid_alias import IsValidAlias
17
- from orionis.container.validators.lifetime import LifetimeValidator
9
+ from orionis.container.validators import (
10
+ ImplementsAbstractMethods,
11
+ IsAbstractClass,
12
+ IsCallable,
13
+ IsConcreteClass,
14
+ IsInstance,
15
+ IsNotSubclass,
16
+ IsSubclass,
17
+ IsValidAlias,
18
+ LifetimeValidator
19
+ )
18
20
  from orionis.services.introspection.abstract.reflection import ReflectionAbstract
19
21
  from orionis.services.introspection.callables.reflection import ReflectionCallable
20
22
 
@@ -23,7 +23,9 @@ class Lifetime(Enum):
23
23
 
24
24
  # A new instance is provided every time the dependency is requested.
25
25
  TRANSIENT = auto()
26
+
26
27
  # A single shared instance is provided for the entire application lifetime.
27
28
  SINGLETON = auto()
29
+
28
30
  # An instance is provided per scope (e.g., per request or session).
29
31
  SCOPED = auto()
@@ -0,0 +1,21 @@
1
+ from .implements import ImplementsAbstractMethods
2
+ from .is_abstract_class import IsAbstractClass
3
+ from .is_concrete_class import IsConcreteClass
4
+ from .is_instance import IsInstance
5
+ from .is_callable import IsCallable
6
+ from .is_subclass import IsSubclass
7
+ from .is_not_subclass import IsNotSubclass
8
+ from .is_valid_alias import IsValidAlias
9
+ from .lifetime import LifetimeValidator
10
+
11
+ __all__ = [
12
+ "ImplementsAbstractMethods",
13
+ "IsAbstractClass",
14
+ "IsConcreteClass",
15
+ "IsInstance",
16
+ "IsCallable",
17
+ "IsSubclass",
18
+ "IsNotSubclass",
19
+ "IsValidAlias",
20
+ "LifetimeValidator",
21
+ ]
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.407.0"
8
+ VERSION = "0.408.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.407.0
3
+ Version: 0.408.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -0,0 +1,37 @@
1
+ from orionis.container.context.manager import ScopeManager
2
+ from orionis.test.cases.asynchronous import AsyncTestCase
3
+
4
+ class TestScopeManagerMethods(AsyncTestCase):
5
+
6
+ def testMethodsExist(self):
7
+ """
8
+ Checks that all required methods are present in the ScopeManager class.
9
+
10
+ This test verifies the existence of a predefined list of methods that are
11
+ essential for the correct functioning of ScopeManager. The methods checked
12
+ include initialization, item access, containment, clearing, and context
13
+ management methods.
14
+
15
+ Returns
16
+ -------
17
+ None
18
+ This method does not return any value. It asserts the existence of methods
19
+ and fails the test if any are missing.
20
+ """
21
+ # List of expected method names in ScopeManager
22
+ expected_methods = [
23
+ "__init__",
24
+ "__getitem__",
25
+ "__setitem__",
26
+ "__contains__",
27
+ "clear",
28
+ "__enter__",
29
+ "__exit__"
30
+ ]
31
+
32
+ # Check each method for existence in ScopeManager
33
+ for method in expected_methods:
34
+ self.assertTrue(
35
+ hasattr(ScopeManager, method), # Assert method exists
36
+ f"Method '{method}' does not exist in ScopeManager class."
37
+ )
@@ -0,0 +1,31 @@
1
+ from orionis.container.context.scope import ScopedContext
2
+ from orionis.test.cases.asynchronous import AsyncTestCase
3
+
4
+ class TestScopedContextMethods(AsyncTestCase):
5
+
6
+ def testMethodsExist(self):
7
+ """
8
+ Checks that all required methods are present in the ScopedContext class.
9
+
10
+ This test verifies the existence of specific methods that are essential for the correct
11
+ operation of ScopedContext. It ensures that the class interface is complete and that
12
+ method names have not been changed or removed.
13
+
14
+ Returns
15
+ -------
16
+ None
17
+ This method does not return anything. It asserts the existence of methods and fails the test if any are missing.
18
+ """
19
+ # List of method names expected to be present in ScopedContext
20
+ expected_methods = [
21
+ "getCurrentScope",
22
+ "setCurrentScope",
23
+ "clear"
24
+ ]
25
+
26
+ # Iterate through each expected method and assert its existence
27
+ for method in expected_methods:
28
+ self.assertTrue(
29
+ hasattr(ScopedContext, method),
30
+ f"Method '{method}' does not exist in ScopedContext class."
31
+ )
@@ -0,0 +1,242 @@
1
+ from orionis.container.entities.binding import Binding
2
+ from orionis.container.enums.lifetimes import Lifetime
3
+ from orionis.container.exceptions.type import OrionisContainerTypeError
4
+ from orionis.test.cases.asynchronous import AsyncTestCase
5
+
6
+ class TestBinding(AsyncTestCase):
7
+
8
+ async def testBindingInitialization(self):
9
+ """
10
+ Test initialization of a Binding object with default values.
11
+
12
+ This test verifies that when a Binding instance is created without any arguments,
13
+ all attributes are set to their expected default values.
14
+
15
+ Parameters
16
+ ----------
17
+ self : TestBinding
18
+ The test case instance.
19
+
20
+ Returns
21
+ -------
22
+ None
23
+ This method does not return anything. Assertions are used to validate behavior.
24
+
25
+ Raises
26
+ ------
27
+ AssertionError
28
+ If any of the default values are incorrect or the Binding initialization fails.
29
+ """
30
+
31
+ # Create a Binding instance with default parameters
32
+ binding: Binding = Binding()
33
+
34
+ # Assert that all attributes are set to their default values
35
+ self.assertIsNone(binding.contract) # Default contract should be None
36
+ self.assertIsNone(binding.concrete) # Default concrete should be None
37
+ self.assertIsNone(binding.instance) # Default instance should be None
38
+ self.assertIsNone(binding.function) # Default function should be None
39
+ self.assertEqual(binding.lifetime, Lifetime.TRANSIENT) # Default lifetime should be TRANSIENT
40
+ self.assertFalse(binding.enforce_decoupling) # Default enforce_decoupling should be False
41
+ self.assertIsNone(binding.alias) # Default alias should be None
42
+
43
+ async def testBindingCustomValues(self):
44
+ """
45
+ Test initialization of a Binding object with custom values.
46
+
47
+ This test verifies that when a Binding instance is created with explicit arguments,
48
+ all attributes are set to the provided custom values, and the object reflects the intended configuration.
49
+
50
+ Parameters
51
+ ----------
52
+ self : TestBinding
53
+ The test case instance.
54
+
55
+ Returns
56
+ -------
57
+ None
58
+ This method does not return anything. Assertions are used to validate correct attribute assignment.
59
+
60
+ Raises
61
+ ------
62
+ AssertionError
63
+ If the Binding initialization fails or custom values are not set correctly.
64
+ """
65
+
66
+ # Define dummy contract and concrete classes for testing
67
+ class TestContract: pass
68
+ class TestConcrete: pass
69
+
70
+ # Create an instance for the 'instance' attribute
71
+ instance = TestConcrete()
72
+
73
+ # Define a factory function for the 'function' attribute
74
+ factory_func = lambda: TestConcrete()
75
+
76
+ # Initialize Binding with custom values
77
+ binding = Binding(
78
+ contract=TestContract,
79
+ concrete=TestConcrete,
80
+ instance=instance,
81
+ function=factory_func,
82
+ lifetime=Lifetime.SINGLETON,
83
+ enforce_decoupling=True,
84
+ alias="test_binding"
85
+ )
86
+
87
+ # Assert that all attributes are set to the provided custom values
88
+ self.assertIs(binding.contract, TestContract)
89
+ self.assertIs(binding.concrete, TestConcrete)
90
+ self.assertIs(binding.instance, instance)
91
+ self.assertIs(binding.function, factory_func)
92
+ self.assertEqual(binding.lifetime, Lifetime.SINGLETON)
93
+ self.assertTrue(binding.enforce_decoupling)
94
+ self.assertEqual(binding.alias, "test_binding")
95
+
96
+ async def testBindingPostInitValidation(self):
97
+ """
98
+ Validates that the `__post_init__` method of the `Binding` class raises appropriate
99
+ exceptions when invalid types are provided for certain attributes.
100
+
101
+ This test ensures that type validation is enforced for the `lifetime`, `enforce_decoupling`,
102
+ and `alias` attributes during initialization. If an invalid type is passed, the
103
+ `OrionisContainerTypeError` should be raised.
104
+
105
+ Parameters
106
+ ----------
107
+ self : TestBinding
108
+ The test case instance.
109
+
110
+ Returns
111
+ -------
112
+ None
113
+ This method does not return anything. Assertions are used to validate that
114
+ exceptions are raised for invalid input types.
115
+
116
+ Raises
117
+ ------
118
+ AssertionError
119
+ If the expected `OrionisContainerTypeError` is not raised when invalid types
120
+ are provided for the attributes.
121
+ """
122
+
123
+ # Attempt to initialize Binding with an invalid lifetime type (should raise exception)
124
+ with self.assertRaises(OrionisContainerTypeError):
125
+ Binding(lifetime="not_a_lifetime")
126
+
127
+ # Attempt to initialize Binding with an invalid enforce_decoupling type (should raise exception)
128
+ with self.assertRaises(OrionisContainerTypeError):
129
+ Binding(enforce_decoupling="not_a_bool")
130
+
131
+ # Attempt to initialize Binding with an invalid alias type (should raise exception)
132
+ with self.assertRaises(OrionisContainerTypeError):
133
+ Binding(alias=123)
134
+
135
+ async def testToDictMethod(self):
136
+ """
137
+ Tests the `toDict` method of the `Binding` class to ensure it returns a correct dictionary representation
138
+ of the binding's attributes.
139
+
140
+ This test verifies that the dictionary contains all expected keys and that their values match the attributes
141
+ set during initialization. It also checks that the types and values are correctly preserved.
142
+
143
+ Parameters
144
+ ----------
145
+ self : TestBinding
146
+ The test case instance.
147
+
148
+ Returns
149
+ -------
150
+ None
151
+ This method does not return anything. Assertions are used to validate the correctness of the dictionary representation.
152
+
153
+ Raises
154
+ ------
155
+ AssertionError
156
+ If the dictionary representation is incorrect or any attribute does not match the expected value.
157
+ """
158
+
159
+ # Define dummy contract and concrete classes for testing
160
+ class TestContract: pass
161
+ class TestConcrete: pass
162
+
163
+ # Create a Binding instance with custom values
164
+ binding = Binding(
165
+ contract=TestContract,
166
+ concrete=TestConcrete,
167
+ lifetime=Lifetime.SINGLETON,
168
+ enforce_decoupling=True,
169
+ alias="test_binding"
170
+ )
171
+
172
+ # Get the dictionary representation of the binding
173
+ result = binding.toDict()
174
+
175
+ # Assert that the result is a dictionary
176
+ self.assertIsInstance(result, dict)
177
+
178
+ # Assert that contract and concrete are correctly set
179
+ self.assertIs(result["contract"], TestContract)
180
+ self.assertIs(result["concrete"], TestConcrete)
181
+
182
+ # Assert that instance and function are None by default
183
+ self.assertIsNone(result["instance"])
184
+ self.assertIsNone(result["function"])
185
+
186
+ # Assert that lifetime, enforce_decoupling, and alias are correctly set
187
+ self.assertEqual(result["lifetime"], Lifetime.SINGLETON)
188
+ self.assertTrue(result["enforce_decoupling"])
189
+ self.assertEqual(result["alias"], "test_binding")
190
+
191
+ async def testGetFieldsMethod(self):
192
+ """
193
+ Tests the `getFields` method of the `Binding` class to ensure it returns accurate field metadata.
194
+
195
+ This test verifies that the returned list contains the expected number of fields, that all expected
196
+ field names are present, and that specific field metadata (such as default values and descriptions)
197
+ are correctly provided for the `lifetime` field.
198
+
199
+ Parameters
200
+ ----------
201
+ self : TestBinding
202
+ The test case instance.
203
+
204
+ Returns
205
+ -------
206
+ None
207
+ This method does not return anything. Assertions are used to validate the correctness of the
208
+ field metadata returned by `getFields`.
209
+
210
+ Raises
211
+ ------
212
+ AssertionError
213
+ If the field information is incorrect, such as missing fields, incorrect defaults, or missing metadata.
214
+ """
215
+
216
+ # Create a Binding instance with default parameters
217
+ binding = Binding()
218
+
219
+ # Retrieve field metadata using getFields
220
+ fields_info = binding.getFields()
221
+
222
+ # Assert that the returned value is a list
223
+ self.assertIsInstance(fields_info, list)
224
+
225
+ # Assert that there are exactly 7 fields
226
+ self.assertEqual(len(fields_info), 7)
227
+
228
+ # Extract field names from the metadata
229
+ field_names = [field["name"] for field in fields_info]
230
+ expected_names = ["contract", "concrete", "instance", "function", "lifetime", "enforce_decoupling", "alias"]
231
+
232
+ # Assert that all expected field names are present
233
+ self.assertTrue(all(name in field_names for name in expected_names))
234
+
235
+ # Find the metadata for the 'lifetime' field
236
+ lifetime_field = next(field for field in fields_info if field["name"] == "lifetime")
237
+
238
+ # Assert that the default value for 'lifetime' is correct
239
+ self.assertEqual(lifetime_field["default"], Lifetime.TRANSIENT.value)
240
+
241
+ # Assert that the 'lifetime' field contains a description in its metadata
242
+ self.assertIn("description", lifetime_field["metadata"])
@@ -0,0 +1,97 @@
1
+ from orionis.container.enums.lifetimes import Lifetime
2
+ from orionis.test.cases.asynchronous import AsyncTestCase
3
+
4
+ class TestLifetime(AsyncTestCase):
5
+
6
+ async def testLifetimeValuesExist(self) -> None:
7
+ """
8
+ Checks that the `Lifetime` enum contains the expected lifecycle values.
9
+
10
+ This test verifies the presence of the following enum members:
11
+ - `TRANSIENT`
12
+ - `SINGLETON`
13
+ - `SCOPED`
14
+
15
+ Returns
16
+ -------
17
+ None
18
+ This method does not return any value. It asserts the existence of enum members.
19
+ """
20
+
21
+ # Assert that each expected enum member exists in Lifetime
22
+ self.assertIn(Lifetime.TRANSIENT, Lifetime)
23
+ self.assertIn(Lifetime.SINGLETON, Lifetime)
24
+ self.assertIn(Lifetime.SCOPED, Lifetime)
25
+
26
+ async def testLifetimeValuesAreUnique(self) -> None:
27
+ """
28
+ Ensures that all `Lifetime` enum values are unique.
29
+
30
+ This test collects the integer values of all enum members and checks that
31
+ there are no duplicates.
32
+
33
+ Returns
34
+ -------
35
+ None
36
+ This method does not return any value. It asserts uniqueness of enum values.
37
+ """
38
+
39
+ # Gather all enum values
40
+ values = [member.value for member in Lifetime]
41
+
42
+ # Assert that all values are unique
43
+ self.assertEqual(len(values), len(set(values)))
44
+
45
+ async def testLifetimeCount(self) -> None:
46
+ """
47
+ Validates that the `Lifetime` enum defines exactly three lifecycle types.
48
+
49
+ This test ensures that no additional or missing enum members exist.
50
+
51
+ Returns
52
+ -------
53
+ None
54
+ This method does not return any value. It asserts the count of enum members.
55
+ """
56
+
57
+ # Assert that there are exactly three members in the Lifetime enum
58
+ self.assertEqual(len(list(Lifetime)), 3)
59
+
60
+ async def testLifetimeStringRepresentation(self) -> None:
61
+ """
62
+ Verifies the string representation of `Lifetime` enum members.
63
+
64
+ This test checks that converting each enum member to a string yields the expected format.
65
+
66
+ Returns
67
+ -------
68
+ None
69
+ This method does not return any value. It asserts string representations.
70
+ """
71
+
72
+ # Assert that string representations match expected format
73
+ self.assertEqual(str(Lifetime.TRANSIENT), "Lifetime.TRANSIENT")
74
+ self.assertEqual(str(Lifetime.SINGLETON), "Lifetime.SINGLETON")
75
+ self.assertEqual(str(Lifetime.SCOPED), "Lifetime.SCOPED")
76
+
77
+ async def testLifetimeComparison(self) -> None:
78
+ """
79
+ Tests comparison operations between `Lifetime` enum members.
80
+
81
+ This test verifies that each enum member is only equal to itself and not to others.
82
+
83
+ Returns
84
+ -------
85
+ None
86
+ This method does not return any value. It asserts comparison results.
87
+ """
88
+
89
+ # Assert that different enum members are not equal
90
+ self.assertNotEqual(Lifetime.TRANSIENT, Lifetime.SINGLETON)
91
+ self.assertNotEqual(Lifetime.SINGLETON, Lifetime.SCOPED)
92
+ self.assertNotEqual(Lifetime.TRANSIENT, Lifetime.SCOPED)
93
+
94
+ # Assert that each enum member is equal to itself
95
+ self.assertEqual(Lifetime.TRANSIENT, Lifetime.TRANSIENT)
96
+ self.assertEqual(Lifetime.SINGLETON, Lifetime.SINGLETON)
97
+ self.assertEqual(Lifetime.SCOPED, Lifetime.SCOPED)
@@ -8,22 +8,31 @@ class TestFacadeMethods(AsyncTestCase):
8
8
  """
9
9
  Verify the existence of essential methods in the Facade and FacadeMeta classes.
10
10
 
11
- This test ensures that the following methods are implemented:
12
- - 'getFacadeAccessor' in the Facade class
13
- - 'resolve' in the Facade class
14
- - '__getattr__' in the FacadeMeta class
11
+ This test checks for the implementation of the following methods:
12
+ - 'getFacadeAccessor' in the Facade class
13
+ - 'resolve' in the Facade class
14
+ - '__getattr__' in the FacadeMeta class
15
15
 
16
- Returns:
17
- None. The method asserts the presence of required methods and raises AssertionError if any are missing.
16
+ The method asserts the presence of these required methods and raises an AssertionError if any are missing.
17
+
18
+ Parameters
19
+ ----------
20
+ None
21
+
22
+ Returns
23
+ -------
24
+ None
25
+ Returns None. The method performs assertions to validate method existence.
18
26
  """
19
27
 
28
+ # List of expected methods and their corresponding classes
20
29
  expected_methods = [
21
30
  ("getFacadeAccessor", Facade),
22
31
  ("resolve", Facade),
23
32
  ("__getattr__", FacadeMeta),
24
33
  ]
25
34
 
26
- # Check each expected method for existence in its respective class
35
+ # Iterate through each expected method and assert its existence
27
36
  for method_name, cls in expected_methods:
28
37
  self.assertTrue(
29
38
  hasattr(cls, method_name),
@@ -35,12 +44,20 @@ class TestFacadeMethods(AsyncTestCase):
35
44
  Validate the method signatures of key Facade and FacadeMeta class methods.
36
45
 
37
46
  This test checks that:
38
- - 'getFacadeAccessor' in Facade accepts no parameters.
39
- - 'resolve' in Facade accepts variable positional and keyword arguments.
40
- - '__getattr__' in FacadeMeta accepts 'cls' and 'name' as parameters.
47
+ - 'getFacadeAccessor' in Facade accepts no parameters.
48
+ - 'resolve' in Facade accepts variable positional and keyword arguments.
49
+ - '__getattr__' in FacadeMeta accepts 'cls' and 'name' as parameters.
50
+
51
+ The method asserts correct method signatures and raises AssertionError if any signature does not match expectations.
52
+
53
+ Parameters
54
+ ----------
55
+ None
41
56
 
42
- Returns:
43
- None. The method asserts correct method signatures and raises AssertionError if any signature does not match expectations.
57
+ Returns
58
+ -------
59
+ None
60
+ Returns None. The method performs assertions to validate method signatures.
44
61
  """
45
62
 
46
63
  # Check that getFacadeAccessor has no parameters
@@ -7,16 +7,23 @@ class TestServiceProviderMethods(AsyncTestCase):
7
7
 
8
8
  async def testMethodsExist(self):
9
9
  """
10
- Checks that the ServiceProvider class implements the required methods and constructor.
10
+ Validates the implementation of required methods and inheritance in the ServiceProvider class.
11
11
 
12
- This test verifies the following:
13
- - The existence of the '__init__', 'register', and 'boot' methods in ServiceProvider.
14
- - That 'register' and 'boot' are asynchronous methods.
15
- - That ServiceProvider inherits from IServiceProvider.
12
+ This test performs the following checks:
13
+ - Verifies that the ServiceProvider class defines the '__init__', 'register', and 'boot' methods.
14
+ - Ensures that the 'register' and 'boot' methods are asynchronous coroutine functions.
15
+ - Confirms that ServiceProvider is a subclass of IServiceProvider.
16
16
 
17
- Returns:
18
- None. The method uses assertions to validate class structure and method types.
17
+ Parameters
18
+ ----------
19
+ None
20
+
21
+ Returns
22
+ -------
23
+ None
24
+ The method does not return any value. Assertions are used to validate class structure and method types.
19
25
  """
26
+
20
27
  # List of required methods and their associated class
21
28
  expected_methods = [
22
29
  ("__init__", ServiceProvider),
@@ -34,15 +41,15 @@ class TestServiceProviderMethods(AsyncTestCase):
34
41
  # Ensure 'register' and 'boot' are asynchronous methods
35
42
  self.assertTrue(
36
43
  inspect.iscoroutinefunction(ServiceProvider.register),
37
- "register must be async"
44
+ "'register' must be an async coroutine function."
38
45
  )
39
46
  self.assertTrue(
40
47
  inspect.iscoroutinefunction(ServiceProvider.boot),
41
- "boot must be async"
48
+ "'boot' must be an async coroutine function."
42
49
  )
43
50
 
44
51
  # Ensure ServiceProvider inherits from IServiceProvider
45
52
  self.assertTrue(
46
53
  issubclass(ServiceProvider, IServiceProvider),
47
- "ServiceProvider must inherit from IServiceProvider"
54
+ "ServiceProvider must inherit from IServiceProvider."
48
55
  )
@@ -7,15 +7,22 @@ class TestResolverMethods(AsyncTestCase):
7
7
 
8
8
  async def testMethodsExist(self):
9
9
  """
10
- Checks that the `Resolver` class implements all required methods and inherits from `IResolver`.
10
+ Validates the implementation and structure of the `Resolver` class.
11
11
 
12
- This test verifies the presence of specific methods in the `Resolver` class, ensures that
13
- `Resolver` is a subclass of `IResolver`, and confirms that the main public methods are not asynchronous.
12
+ This test checks that the `Resolver` class:
13
+ - Implements all required methods.
14
+ - Inherits from the `IResolver` interface.
15
+ - Has main public methods (`resolve`, `resolveType`, `resolveSignature`) that are synchronous.
16
+
17
+ Parameters
18
+ ----------
19
+ self : TestResolverMethods
20
+ The test case instance.
14
21
 
15
22
  Returns
16
23
  -------
17
24
  None
18
- This method does not return a value. Assertions are used to validate class structure.
25
+ The method does not return any value. Assertions are used to validate the class structure.
19
26
  """
20
27
 
21
28
  # List of required method names that must be implemented by Resolver
@@ -34,20 +41,20 @@ class TestResolverMethods(AsyncTestCase):
34
41
  "_Resolver__resolveDependencies",
35
42
  ]
36
43
 
37
- # Assert that each required method exists in Resolver
44
+ # Check that each required method exists in Resolver
38
45
  for method in required_methods:
39
46
  self.assertTrue(
40
47
  hasattr(Resolver, method),
41
48
  f"Resolver must implement the method '{method}'"
42
49
  )
43
50
 
44
- # Assert that Resolver inherits from IResolver
51
+ # Ensure Resolver inherits from IResolver
45
52
  self.assertTrue(
46
53
  issubclass(Resolver, IResolver),
47
54
  "Resolver must inherit from IResolver"
48
55
  )
49
56
 
50
- # Assert that main public methods are not asynchronous
57
+ # Verify that main public methods are not asynchronous
51
58
  for method in ["resolve", "resolveType", "resolveSignature"]:
52
59
  self.assertFalse(
53
60
  inspect.iscoroutinefunction(getattr(Resolver, method)),