orionis 0.320.0__tar.gz → 0.321.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 (471) hide show
  1. {orionis-0.320.0/orionis.egg-info → orionis-0.321.0}/PKG-INFO +1 -1
  2. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/container.py +16 -385
  3. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/contracts/container.py +61 -15
  4. orionis-0.321.0/orionis/container/resolver.py +404 -0
  5. orionis-0.321.0/orionis/container/validators/lifetime.py +53 -0
  6. {orionis-0.320.0 → orionis-0.321.0}/orionis/metadata/framework.py +1 -1
  7. {orionis-0.320.0 → orionis-0.321.0/orionis.egg-info}/PKG-INFO +1 -1
  8. {orionis-0.320.0 → orionis-0.321.0}/orionis.egg-info/SOURCES.txt +1 -0
  9. orionis-0.320.0/orionis/container/resolver.py +0 -28
  10. {orionis-0.320.0 → orionis-0.321.0}/LICENCE +0 -0
  11. {orionis-0.320.0 → orionis-0.321.0}/MANIFEST.in +0 -0
  12. {orionis-0.320.0 → orionis-0.321.0}/README.md +0 -0
  13. {orionis-0.320.0 → orionis-0.321.0}/orionis/__init__.py +0 -0
  14. {orionis-0.320.0 → orionis-0.321.0}/orionis/_application.py +0 -0
  15. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/__init__.py +0 -0
  16. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/container.py +0 -0
  17. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/container_integrity.py +0 -0
  18. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/exception.py +0 -0
  19. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/lifetimes.py +0 -0
  20. {orionis-0.320.0 → orionis-0.321.0}/orionis/_container/resolve.py +0 -0
  21. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/__init__.py +0 -0
  22. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/application.py +0 -0
  23. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/config/__init__.py +0 -0
  24. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/config/config.py +0 -0
  25. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/__init__.py +0 -0
  26. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/base/__init__.py +0 -0
  27. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/base/command.py +0 -0
  28. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/command_filter.py +0 -0
  29. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/kernel.py +0 -0
  30. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/output/__init__.py +0 -0
  31. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/output/console.py +0 -0
  32. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/output/executor.py +0 -0
  33. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
  34. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/parser.py +0 -0
  35. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/console/task_manager.py +0 -0
  36. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/container/container.py +0 -0
  37. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/container/container_integrity.py +0 -0
  38. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/__init__.py +0 -0
  39. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  40. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  41. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  42. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  43. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  44. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  45. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  46. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/facade.py +0 -0
  47. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  48. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  49. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  50. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  51. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  52. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  53. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/__init__.py +0 -0
  54. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  55. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  56. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  57. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  58. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  59. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  60. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  61. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  62. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  63. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/providers/__init__.py +0 -0
  64. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/providers/service_provider.py +0 -0
  65. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/__init__.py +0 -0
  66. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  67. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  68. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  69. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/config/__init__.py +0 -0
  70. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/config/config_service.py +0 -0
  71. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  72. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  73. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/files/__init__.py +0 -0
  74. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  75. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/log/__init__.py +0 -0
  76. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/services/log/log_service.py +0 -0
  77. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/support/exception_parse.py +0 -0
  78. {orionis-0.320.0 → orionis-0.321.0}/orionis/_contracts/support/reflection.py +0 -0
  79. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/__init__.py +0 -0
  80. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/app_facade.py +0 -0
  81. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/commands/__init__.py +0 -0
  82. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/commands/commands_facade.py +0 -0
  83. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
  84. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/config/__init__.py +0 -0
  85. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/config/config_facade.py +0 -0
  86. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/environment/__init__.py +0 -0
  87. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/environment/environment_facade.py +0 -0
  88. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/files/__init__.py +0 -0
  89. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/files/path_facade.py +0 -0
  90. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/log/__init__.py +0 -0
  91. {orionis-0.320.0 → orionis-0.321.0}/orionis/_facades/log/log_facade.py +0 -0
  92. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/__init__.py +0 -0
  93. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/console/__init__.py +0 -0
  94. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  95. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/environment/__init__.py +0 -0
  96. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  97. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  98. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  99. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  100. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  101. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  102. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/providers/__init__.py +0 -0
  103. {orionis-0.320.0 → orionis-0.321.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  104. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/__init__.py +0 -0
  105. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/commands/__init__.py +0 -0
  106. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
  107. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
  108. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/config/__init__.py +0 -0
  109. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/config/config_service_provider.py +0 -0
  110. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/environment/__init__.py +0 -0
  111. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
  112. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/files/__init__.py +0 -0
  113. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/files/paths_provider.py +0 -0
  114. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/log/__init__.py +0 -0
  115. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/log/log_service_provider.py +0 -0
  116. {orionis-0.320.0 → orionis-0.321.0}/orionis/_providers/service_provider.py +0 -0
  117. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/__init__.py +0 -0
  118. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/commands/__init__.py +0 -0
  119. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  120. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/commands/scheduler_service.py +0 -0
  121. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/config/__init__.py +0 -0
  122. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/config/config_service.py +0 -0
  123. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/log/__init__.py +0 -0
  124. {orionis-0.320.0 → orionis-0.321.0}/orionis/_services/log/log_service.py +0 -0
  125. {orionis-0.320.0 → orionis-0.321.0}/orionis/application.py +0 -0
  126. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/__init__.py +0 -0
  127. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/base/__init__.py +0 -0
  128. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/base/command.py +0 -0
  129. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/command_filter.py +0 -0
  130. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/commands/__init__.py +0 -0
  131. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/commands/cache_clear.py +0 -0
  132. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/commands/help.py +0 -0
  133. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/commands/schedule_work.py +0 -0
  134. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/commands/version.py +0 -0
  135. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/dumper/__init__.py +0 -0
  136. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/dumper/dump_die.py +0 -0
  137. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/exceptions/__init__.py +0 -0
  138. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
  139. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/exceptions/cli_exception.py +0 -0
  140. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  141. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  142. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/kernel.py +0 -0
  143. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/output/__init__.py +0 -0
  144. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/output/console.py +0 -0
  145. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/output/executor.py +0 -0
  146. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/output/progress_bar.py +0 -0
  147. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/output/styles.py +0 -0
  148. {orionis-0.320.0 → orionis-0.321.0}/orionis/console/parser.py +0 -0
  149. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/entities/binding.py +0 -0
  150. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/enums/lifetimes.py +0 -0
  151. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/exceptions/container_exception.py +0 -0
  152. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/exceptions/type_error_exception.py +0 -0
  153. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/exceptions/value_exception.py +0 -0
  154. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/__init__.py +0 -0
  155. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/implements.py +0 -0
  156. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_abstract_class.py +0 -0
  157. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_callable.py +0 -0
  158. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_concrete_class.py +0 -0
  159. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_instance.py +0 -0
  160. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_not_subclass.py +0 -0
  161. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_subclass.py +0 -0
  162. {orionis-0.320.0 → orionis-0.321.0}/orionis/container/validators/is_valid_alias.py +0 -0
  163. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/__init__.py +0 -0
  164. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/__init__.py +0 -0
  165. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/__init__.py +0 -0
  166. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  167. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/entities/app.py +0 -0
  168. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  169. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  170. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  171. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/auth/__init__.py +0 -0
  172. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  173. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  174. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/__init__.py +0 -0
  175. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  176. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  177. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  178. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  179. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  180. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  181. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cors/__init__.py +0 -0
  182. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  183. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  184. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/__init__.py +0 -0
  185. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  186. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  187. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/database.py +0 -0
  188. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  189. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  190. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  191. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  192. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  193. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  194. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  195. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  196. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  197. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  198. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  199. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  200. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  201. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  202. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  203. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  204. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  205. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  206. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  207. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  208. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  209. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  210. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  211. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/__init__.py +0 -0
  212. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  213. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  214. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  215. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  216. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  217. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  218. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  219. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  220. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  221. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  222. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  223. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/__init__.py +0 -0
  224. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  225. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  226. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  227. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  228. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  229. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/__init__.py +0 -0
  230. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  231. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  232. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  233. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  234. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  235. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/roots/__init__.py +0 -0
  236. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/roots/paths.py +0 -0
  237. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/__init__.py +0 -0
  238. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  239. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/entities/session.py +0 -0
  240. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  241. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  242. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  243. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/startup.py +0 -0
  244. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/testing/__init__.py +0 -0
  245. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  246. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  247. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  248. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  249. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/contracts/__init__.py +0 -0
  250. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/contracts/config.py +0 -0
  251. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/exceptions/__init__.py +0 -0
  252. {orionis-0.320.0 → orionis-0.321.0}/orionis/foundation/exceptions/integrity.py +0 -0
  253. {orionis-0.320.0 → orionis-0.321.0}/orionis/metadata/__init__.py +0 -0
  254. {orionis-0.320.0 → orionis-0.321.0}/orionis/metadata/package.py +0 -0
  255. {orionis-0.320.0 → orionis-0.321.0}/orionis/patterns/__init__.py +0 -0
  256. {orionis-0.320.0 → orionis-0.321.0}/orionis/patterns/singleton/__init__.py +0 -0
  257. {orionis-0.320.0 → orionis-0.321.0}/orionis/patterns/singleton/meta_class.py +0 -0
  258. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/__init__.py +0 -0
  259. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/__init__.py +0 -0
  260. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  261. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  262. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/coroutines.py +0 -0
  263. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  264. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
  265. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/__init__.py +0 -0
  266. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/contracts/__init__.py +0 -0
  267. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/contracts/env.py +0 -0
  268. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/contracts/types.py +0 -0
  269. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/dot_env.py +0 -0
  270. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/env.py +0 -0
  271. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  272. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
  273. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
  274. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/environment/types.py +0 -0
  275. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/__init__.py +0 -0
  276. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  277. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/abstract/reflection_abstract.py +0 -0
  278. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/callables/__init__.py +0 -0
  279. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/callables/reflection_callable.py +0 -0
  280. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  281. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/concretes/reflection_concrete.py +0 -0
  282. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/__init__.py +0 -0
  283. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/reflect_dependencies.py +0 -0
  284. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/reflection_abstract.py +0 -0
  285. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/reflection_concrete.py +0 -0
  286. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/reflection_instance.py +0 -0
  287. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/contracts/reflection_module.py +0 -0
  288. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  289. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  290. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  291. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  292. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  293. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
  294. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
  295. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  296. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/exceptions/reflection_attribute_error.py +0 -0
  297. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/exceptions/reflection_type_error.py +0 -0
  298. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/exceptions/reflection_value_error.py +0 -0
  299. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/instances/__init__.py +0 -0
  300. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/instances/reflection_instance.py +0 -0
  301. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/modules/__init__.py +0 -0
  302. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/modules/reflection_module.py +0 -0
  303. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/introspection/reflection.py +0 -0
  304. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/__init__.py +0 -0
  305. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/contracts/__init__.py +0 -0
  306. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
  307. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
  308. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
  309. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/parsers/serializer.py +0 -0
  310. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/__init__.py +0 -0
  311. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/contracts/__init__.py +0 -0
  312. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/contracts/resolver.py +0 -0
  313. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  314. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
  315. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
  316. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/paths/resolver.py +0 -0
  317. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/__init__.py +0 -0
  318. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/contracts/__init__.py +0 -0
  319. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/contracts/imports.py +0 -0
  320. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/contracts/workers.py +0 -0
  321. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/imports.py +0 -0
  322. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/runtime_imports.py +0 -0
  323. {orionis-0.320.0 → orionis-0.321.0}/orionis/services/system/workers.py +0 -0
  324. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/__init__.py +0 -0
  325. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/__init__.py +0 -0
  326. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/contracts/__init__.py +0 -0
  327. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/contracts/std.py +0 -0
  328. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  329. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/exceptions/std_value_exception.py +0 -0
  330. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/standard/std.py +0 -0
  331. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/wrapper/__init__.py +0 -0
  332. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/wrapper/dicts/__init__.py +0 -0
  333. {orionis-0.320.0 → orionis-0.321.0}/orionis/support/wrapper/dicts/dot_dict.py +0 -0
  334. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/__init__.py +0 -0
  335. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/cases/__init__.py +0 -0
  336. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/cases/test_async.py +0 -0
  337. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/cases/test_case.py +0 -0
  338. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/cases/test_sync.py +0 -0
  339. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/contracts/__init__.py +0 -0
  340. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/contracts/dumper.py +0 -0
  341. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/contracts/history.py +0 -0
  342. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/contracts/printer.py +0 -0
  343. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/contracts/test_unit.py +0 -0
  344. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/entities/__init__.py +0 -0
  345. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/entities/test_result.py +0 -0
  346. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/enums/__init__.py +0 -0
  347. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/enums/test_mode.py +0 -0
  348. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/enums/test_status.py +0 -0
  349. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/__init__.py +0 -0
  350. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/test_config_exception.py +0 -0
  351. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
  352. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
  353. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
  354. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/exceptions/test_value_error.py +0 -0
  355. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/logs/__init__.py +0 -0
  356. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/logs/history.py +0 -0
  357. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/output/__init__.py +0 -0
  358. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/output/dumper.py +0 -0
  359. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/output/printer.py +0 -0
  360. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/suite/__init__.py +0 -0
  361. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/suite/test_unit.py +0 -0
  362. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/test_suite.py +0 -0
  363. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/view/__init__.py +0 -0
  364. {orionis-0.320.0 → orionis-0.321.0}/orionis/test/view/render.py +0 -0
  365. {orionis-0.320.0 → orionis-0.321.0}/orionis/unittesting.py +0 -0
  366. {orionis-0.320.0 → orionis-0.321.0}/orionis.egg-info/dependency_links.txt +0 -0
  367. {orionis-0.320.0 → orionis-0.321.0}/orionis.egg-info/requires.txt +0 -0
  368. {orionis-0.320.0 → orionis-0.321.0}/orionis.egg-info/top_level.txt +0 -0
  369. {orionis-0.320.0 → orionis-0.321.0}/orionis.egg-info/zip-safe +0 -0
  370. {orionis-0.320.0 → orionis-0.321.0}/setup.cfg +0 -0
  371. {orionis-0.320.0 → orionis-0.321.0}/setup.py +0 -0
  372. {orionis-0.320.0 → orionis-0.321.0}/tests/__init__.py +0 -0
  373. {orionis-0.320.0 → orionis-0.321.0}/tests/example/__init__.py +0 -0
  374. {orionis-0.320.0 → orionis-0.321.0}/tests/example/test_example.py +0 -0
  375. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/__init__.py +0 -0
  376. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/__init__.py +0 -0
  377. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/app/__init__.py +0 -0
  378. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  379. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/auth/__init__.py +0 -0
  380. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  381. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cache/__init__.py +0 -0
  382. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  383. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  384. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  385. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cors/__init__.py +0 -0
  386. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  387. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/__init__.py +0 -0
  388. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  389. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  390. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  391. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  392. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  393. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  394. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  395. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  396. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  397. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  398. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  399. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  400. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/__init__.py +0 -0
  401. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  402. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  403. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  404. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  405. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  406. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  407. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  408. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  409. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/mail/__init__.py +0 -0
  410. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  411. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  412. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  413. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  414. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/queue/__init__.py +0 -0
  415. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  416. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  417. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  418. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/root/__init__.py +0 -0
  419. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  420. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/session/__init__.py +0 -0
  421. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  422. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/startup/__init__.py +0 -0
  423. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  424. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/testing/__init__.py +0 -0
  425. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  426. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/exceptions/__init__.py +0 -0
  427. {orionis-0.320.0 → orionis-0.321.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
  428. {orionis-0.320.0 → orionis-0.321.0}/tests/metadata/__init__.py +0 -0
  429. {orionis-0.320.0 → orionis-0.321.0}/tests/metadata/test_metadata_framework.py +0 -0
  430. {orionis-0.320.0 → orionis-0.321.0}/tests/metadata/test_metadata_package.py +0 -0
  431. {orionis-0.320.0 → orionis-0.321.0}/tests/patterns/__init__.py +0 -0
  432. {orionis-0.320.0 → orionis-0.321.0}/tests/patterns/singleton/__init__.py +0 -0
  433. {orionis-0.320.0 → orionis-0.321.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
  434. {orionis-0.320.0 → orionis-0.321.0}/tests/services/__init__.py +0 -0
  435. {orionis-0.320.0 → orionis-0.321.0}/tests/services/asynchrony/__init__.py +0 -0
  436. {orionis-0.320.0 → orionis-0.321.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  437. {orionis-0.320.0 → orionis-0.321.0}/tests/services/environment/__init__.py +0 -0
  438. {orionis-0.320.0 → orionis-0.321.0}/tests/services/environment/test_services_environment.py +0 -0
  439. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/__init__.py +0 -0
  440. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/__init__.py +0 -0
  441. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  442. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  443. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  444. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  445. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  446. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/__init__.py +0 -0
  447. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/mock/__init__.py +0 -0
  448. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
  449. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
  450. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
  451. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
  452. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
  453. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
  454. {orionis-0.320.0 → orionis-0.321.0}/tests/services/inspection/test_reflection.py +0 -0
  455. {orionis-0.320.0 → orionis-0.321.0}/tests/services/parsers/__init__.py +0 -0
  456. {orionis-0.320.0 → orionis-0.321.0}/tests/services/parsers/mocks/__init__.py +0 -0
  457. {orionis-0.320.0 → orionis-0.321.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
  458. {orionis-0.320.0 → orionis-0.321.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
  459. {orionis-0.320.0 → orionis-0.321.0}/tests/services/path/__init__.py +0 -0
  460. {orionis-0.320.0 → orionis-0.321.0}/tests/services/path/test_services_resolver.py +0 -0
  461. {orionis-0.320.0 → orionis-0.321.0}/tests/services/system/__init__.py +0 -0
  462. {orionis-0.320.0 → orionis-0.321.0}/tests/services/system/test_services_system_imports.py +0 -0
  463. {orionis-0.320.0 → orionis-0.321.0}/tests/services/system/test_services_system_workers.py +0 -0
  464. {orionis-0.320.0 → orionis-0.321.0}/tests/support/__init__.py +0 -0
  465. {orionis-0.320.0 → orionis-0.321.0}/tests/support/standard/__init__.py +0 -0
  466. {orionis-0.320.0 → orionis-0.321.0}/tests/support/standard/test_services_std.py +0 -0
  467. {orionis-0.320.0 → orionis-0.321.0}/tests/support/wrapper/__init__.py +0 -0
  468. {orionis-0.320.0 → orionis-0.321.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  469. {orionis-0.320.0 → orionis-0.321.0}/tests/testing/__init__.py +0 -0
  470. {orionis-0.320.0 → orionis-0.321.0}/tests/testing/test_testing_result.py +0 -0
  471. {orionis-0.320.0 → orionis-0.321.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.320.0
3
+ Version: 0.321.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
@@ -4,7 +4,7 @@ from orionis.container.contracts.container import IContainer
4
4
  from orionis.container.entities.binding import Binding
5
5
  from orionis.container.enums.lifetimes import Lifetime
6
6
  from orionis.container.exceptions.container_exception import OrionisContainerException
7
- from orionis.container.exceptions.type_error_exception import OrionisContainerTypeError
7
+ from orionis.container.resolver import Resolver
8
8
  from orionis.container.validators.implements import ImplementsAbstractMethods
9
9
  from orionis.container.validators.is_abstract_class import IsAbstractClass
10
10
  from orionis.container.validators.is_callable import IsCallable
@@ -13,12 +13,9 @@ from orionis.container.validators.is_instance import IsInstance
13
13
  from orionis.container.validators.is_not_subclass import IsNotSubclass
14
14
  from orionis.container.validators.is_subclass import IsSubclass
15
15
  from orionis.container.validators.is_valid_alias import IsValidAlias
16
+ from orionis.container.validators.lifetime import LifetimeValidator
16
17
  from orionis.services.introspection.abstract.reflection_abstract import ReflectionAbstract
17
18
  from orionis.services.introspection.callables.reflection_callable import ReflectionCallable
18
- from orionis.services.introspection.concretes.reflection_concrete import ReflectionConcrete
19
- from orionis.services.introspection.dependencies.entities.resolved_dependencies import ResolvedDependency
20
- from orionis.services.introspection.instances.reflection_instance import ReflectionInstance
21
- from orionis.services.introspection.reflection import Reflection
22
19
 
23
20
  class Container(IContainer):
24
21
 
@@ -37,9 +34,7 @@ class Container(IContainer):
37
34
  _initialized = False
38
35
 
39
36
  def __new__(
40
- cls,
41
- *args,
42
- **kwargs
37
+ cls
43
38
  ) -> 'Container':
44
39
  """
45
40
  Creates and returns a singleton instance of the class.
@@ -48,12 +43,7 @@ class Container(IContainer):
48
43
  of the class exists. If an instance does not exist, it acquires a lock to
49
44
  ensure thread safety and creates the instance. Subsequent calls return the
50
45
  existing instance.
51
- Parameters
52
- ----------
53
- *args : tuple
54
- Variable length argument list.
55
- **kwargs : dict
56
- Arbitrary keyword arguments.
46
+
57
47
  Returns
58
48
  -------
59
49
  Container
@@ -471,21 +461,9 @@ class Container(IContainer):
471
461
  OrionisContainerException
472
462
  If the lifetime is not allowed for the function signature.
473
463
  """
464
+
474
465
  # Normalize and validate the lifetime parameter
475
- if not isinstance(lifetime, Lifetime):
476
- if isinstance(lifetime, str):
477
- lifetime_key = lifetime.strip().upper()
478
- if lifetime_key in Lifetime.__members__:
479
- lifetime = Lifetime[lifetime_key]
480
- else:
481
- valid = ', '.join(Lifetime.__members__.keys())
482
- raise OrionisContainerTypeError(
483
- f"Invalid lifetime '{lifetime}'. Valid options are: {valid}."
484
- )
485
- else:
486
- raise OrionisContainerTypeError(
487
- f"Lifetime must be of type str or Lifetime enum, got {type(lifetime).__name__}."
488
- )
466
+ lifetime = LifetimeValidator(lifetime)
489
467
 
490
468
  # Ensure that the alias is a valid string
491
469
  IsValidAlias(alias)
@@ -544,7 +522,7 @@ class Container(IContainer):
544
522
  or abstract_or_alias in self.__aliasses
545
523
  )
546
524
 
547
- def __getService(
525
+ def getBinding(
548
526
  self,
549
527
  abstract_or_alias: Any
550
528
  ) -> Binding:
@@ -563,29 +541,6 @@ class Container(IContainer):
563
541
  """
564
542
  return self.__bindings.get(abstract_or_alias) or self.__aliasses.get(abstract_or_alias)
565
543
 
566
- def __getFirstService(
567
- self,
568
- abstract_or_aliasses: list
569
- ) -> Binding:
570
- """
571
- Retrieves the first binding from a list of abstract types or aliases.
572
-
573
- Parameters
574
- ----------
575
- abstract_or_aliasses : list
576
- A list of abstract classes, interfaces, or aliases (str) to retrieve.
577
-
578
- Returns
579
- -------
580
- Binding
581
- The first binding found in the container for the provided abstract types or aliases.
582
- """
583
- for item in abstract_or_aliasses:
584
- binding = self.__getService(item)
585
- if binding:
586
- return binding
587
- return None
588
-
589
544
  def drop(
590
545
  self,
591
546
  abstract: Callable[..., Any] = None,
@@ -665,341 +620,17 @@ class Container(IContainer):
665
620
  OrionisContainerException
666
621
  If the requested service is not registered in the container.
667
622
  """
668
- # Retrieve the binding for the requested abstract or alias
669
- binding = self.__getService(abstract_or_alias)
670
-
671
- # Check if the requested service is registered in the container
672
- if not binding:
623
+ if not self.bound(abstract_or_alias):
673
624
  raise OrionisContainerException(
674
625
  f"The requested service '{abstract_or_alias}' is not registered in the container."
675
626
  )
676
627
 
677
- # Handle based on binding type and lifetime
678
- if binding.lifetime == Lifetime.TRANSIENT:
679
- return self.__resolveTransient(binding, *args, **kwargs)
680
- elif binding.lifetime == Lifetime.SINGLETON:
681
- return self.__resolveSingleton(binding, *args, **kwargs)
682
- elif binding.lifetime == Lifetime.SCOPED:
683
- # TODO: Implement scoped lifetime resolution
684
- raise OrionisContainerException(
685
- "Scoped lifetime resolution is not yet implemented."
686
- )
687
-
688
- def __resolveTransient(self, binding: Binding, *args, **kwargs) -> Any:
689
- """
690
- Resolves a service with transient lifetime.
691
-
692
- Parameters
693
- ----------
694
- binding : Binding
695
- The binding to resolve.
696
- *args : tuple
697
- Positional arguments to pass to the constructor.
698
- **kwargs : dict
699
- Keyword arguments to pass to the constructor.
700
-
701
- Returns
702
- -------
703
- Any
704
- A new instance of the requested service.
705
- """
706
-
707
- # Check if the binding has a concrete class or function defined
708
- if binding.concrete:
709
- if args or kwargs:
710
- return self.__instantiateConcreteWithArgs(binding.concrete, *args, **kwargs)
711
- else:
712
- return self.__instantiateConcreteReflective(binding.concrete)
713
-
714
- # If the binding has a function defined
715
- elif binding.function:
716
- if args or kwargs:
717
- return self.__instantiateCallableWithArgs(binding.function, *args, **kwargs)
718
- else:
719
- return self.__instantiateCallableReflective(binding.function)
720
-
721
- # If neither concrete class nor function is defined
722
- else:
723
- raise OrionisContainerException(
724
- "Cannot resolve transient binding: neither a concrete class nor a function is defined."
725
- )
726
-
727
- def __resolveSingleton(self, binding: Binding, *args, **kwargs) -> Any:
728
- """
729
- Resolves a service with singleton lifetime.
730
-
731
- Parameters
732
- ----------
733
- binding : Binding
734
- The binding to resolve.
735
- *args : tuple
736
- Positional arguments to pass to the constructor (only used if instance doesn't exist yet).
737
- **kwargs : dict
738
- Keyword arguments to pass to the constructor (only used if instance doesn't exist yet).
739
-
740
- Returns
741
- -------
742
- Any
743
- The singleton instance of the requested service.
744
- """
745
- # Return existing instance if available
746
- if binding.instance:
747
- return binding.instance
748
-
749
- # Create instance if needed
750
- if binding.concrete:
751
- if args or kwargs:
752
- binding.instance = self.__instantiateConcreteWithArgs(binding.concrete, *args, **kwargs)
753
- else:
754
- binding.instance = self.__instantiateConcreteReflective(binding.concrete)
755
- return binding.instance
756
-
757
- # If the binding has a function defined
758
- elif binding.function:
759
- if args or kwargs:
760
- result = self.__instantiateCallableWithArgs(binding.function, *args, **kwargs)
761
- else:
762
- result = self.__instantiateCallableReflective(binding.function)
763
-
764
- # Store the result directly as the singleton instance
765
- # We don't automatically invoke factory function results anymore
766
- binding.instance = result
767
- return binding.instance
768
-
769
- # If neither concrete class nor function is defined
770
- else:
771
- raise OrionisContainerException(
772
- "Cannot resolve singleton binding: neither a concrete class, instance, nor function is defined."
773
- )
774
-
775
- def __instantiateConcreteWithArgs(self, concrete: Callable[..., Any], *args, **kwargs) -> Any:
776
- """
777
- Instantiates a concrete class with the provided arguments.
778
-
779
- Parameters
780
- ----------
781
- concrete : Callable[..., Any]
782
- Class to instantiate.
783
- *args : tuple
784
- Positional arguments to pass to the constructor.
785
- **kwargs : dict
786
- Keyword arguments to pass to the constructor.
787
-
788
- Returns
789
- -------
790
- object
791
- A new instance of the specified concrete class.
792
- """
793
-
794
- # try to instantiate the concrete class with the provided arguments
795
- try:
796
-
797
- # If the concrete is a class, instantiate it directly
798
- return concrete(*args, **kwargs)
799
-
800
- except TypeError as e:
801
-
802
- # If instantiation fails, use ReflectionConcrete to get class name and constructor signature
803
- rf_concrete = ReflectionConcrete(concrete)
804
- class_name = rf_concrete.getClassName()
805
- signature = rf_concrete.getConstructorSignature()
806
-
807
- # Raise an exception with detailed information about the failure
808
- raise OrionisContainerException(
809
- f"Failed to instantiate [{class_name}] with the provided arguments: {e}\n"
810
- f"Expected constructor signature: [{signature}]"
811
- ) from e
812
-
813
- def __instantiateCallableWithArgs(self, fn: Callable[..., Any], *args, **kwargs) -> Any:
814
- """
815
- Invokes a callable with the provided arguments.
816
-
817
- Parameters
818
- ----------
819
- fn : Callable[..., Any]
820
- The callable to invoke.
821
- *args : tuple
822
- Positional arguments to pass to the callable.
823
- **kwargs : dict
824
- Keyword arguments to pass to the callable.
825
-
826
- Returns
827
- -------
828
- Any
829
- The result of the callable.
830
- """
831
-
832
- # Try to invoke the callable with the provided arguments
833
- try:
834
-
835
- # If the callable is a function, invoke it directly
836
- return fn(*args, **kwargs)
837
-
838
- except TypeError as e:
839
-
840
- # If invocation fails, use ReflectionCallable to get function name and signature
841
- rf_callable = ReflectionCallable(fn)
842
- function_name = rf_callable.getName()
843
- signature = rf_callable.getSignature()
844
-
845
- # Raise an exception with detailed information about the failure
846
- raise OrionisContainerException(
847
- f"Failed to invoke function [{function_name}] with the provided arguments: {e}\n"
848
- f"Expected function signature: [{signature}]"
849
- ) from e
850
-
851
- def __instantiateConcreteReflective(self, concrete: Callable[..., Any]) -> Any:
852
- """
853
- Instantiates a concrete class reflectively, resolving its dependencies from the container.
854
-
855
- Parameters
856
- ----------
857
- concrete : Callable[..., Any]
858
- The concrete class to instantiate.
628
+ # Get the binding for the requested abstract type or alias
629
+ binding = self.getBinding(abstract_or_alias)
859
630
 
860
- Returns
861
- -------
862
- Any
863
- A new instance of the concrete class.
864
- """
865
- # Resolve dependencies for the concrete class
866
- params = self.__resolveDependencies(concrete, is_class=True)
867
-
868
- # Instantiate the concrete class with resolved dependencies
869
- return concrete(**params)
870
-
871
- def __instantiateCallableReflective(self, fn: Callable[..., Any]) -> Any:
872
- """
873
- Invokes a callable reflectively, resolving its dependencies from the container.
874
-
875
- Parameters
876
- ----------
877
- fn : Callable[..., Any]
878
- The callable to invoke.
879
-
880
- Returns
881
- -------
882
- Any
883
- The result of the callable.
884
- """
885
-
886
- # Resolve dependencies for the callable
887
- params = self.__resolveDependencies(fn, is_class=False)
888
-
889
- # Invoke the callable with resolved dependencies
890
- return fn(**params)
891
-
892
- def __resolveDependencies(
893
- self,
894
- target: Callable[..., Any],
895
- *,
896
- is_class: bool = False
897
- ) -> dict:
898
- """
899
- Resolves dependencies for a target callable or class.
900
-
901
- Parameters
902
- ----------
903
- target : Callable[..., Any]
904
- The target callable or class whose dependencies to resolve.
905
- is_class : bool, optional
906
- Whether the target is a class (True) or a callable (False).
907
-
908
- Returns
909
- -------
910
- dict
911
- A dictionary of resolved dependencies.
912
- """
913
- try:
914
-
915
- # Use ReflectionConcrete for classes and ReflectionCallable for callables
916
- if is_class:
917
- reflection = ReflectionConcrete(target)
918
- dependencies = reflection.getConstructorDependencies()
919
- name = reflection.getClassName()
920
-
921
- # If the target is a callable, use ReflectionCallable
922
- else:
923
- reflection = ReflectionCallable(target)
924
- dependencies = reflection.getDependencies()
925
- name = reflection.getName()
926
-
927
- # Check for unresolved dependencies
928
- if dependencies.unresolved:
929
- unresolved_args = ', '.join(dependencies.unresolved)
930
- raise OrionisContainerException(
931
- f"Cannot resolve '{name}' because the following required arguments are missing: [{unresolved_args}]."
932
- )
933
-
934
- # Resolve dependencies
935
- params = {}
936
- for param_name, dep in dependencies.resolved.items():
937
-
938
- # If the dependency is a ResolvedDependency, resolve it
939
- if isinstance(dep, ResolvedDependency):
940
-
941
- # If the dependency is a built-in type, raise an exception
942
- if dep.module_name == 'builtins':
943
- raise OrionisContainerException(
944
- f"Cannot resolve '{name}' because parameter '{param_name}' depends on built-in type '{dep.type.__name__}'."
945
- )
946
-
947
- # Try to resolve from container
948
- service = self.__getFirstService([dep.type, dep.full_class_path])
949
- if service:
950
- params[param_name] = self.make(service.alias)
951
-
952
- # Try to instantiate directly if it's a concrete class
953
- elif ReflectionConcrete.isConcreteClass(dep.type):
954
- params[param_name] = dep.type(**self.__resolveDependencies(dep.type, is_class=True))
955
-
956
- # Try to call directly if it's a callable
957
- elif callable(dep.type) and not isinstance(dep.type, type):
958
- params[param_name] = dep.type(**self.__resolveDependencies(dep.type, is_class=False))
959
-
960
- # If the dependency cannot be resolved, raise an exception
961
- else:
962
- raise OrionisContainerException(
963
- f"Cannot resolve dependency '{param_name}' of type '{dep.type.__name__}' for '{name}'."
964
- )
965
- else:
966
- # Use default value
967
- params[param_name] = dep
968
-
969
- # Return the resolved parameters
970
- return params
971
-
972
- except ImportError as e:
973
-
974
- # Extract module name from the error message if possible
975
- import_msg = str(e)
976
- module_name = target.__module__ if hasattr(target, '__module__') else "unknown module"
977
-
978
- # Check for potential circular import patterns
979
- if "circular import" in import_msg.lower() or "cannot import name" in import_msg.lower():
980
- raise OrionisContainerException(
981
- f"Circular import detected while resolving dependencies for '{target.__name__}' in module '{module_name}'.\n"
982
- f"This typically happens when two modules import each other. Consider:\n"
983
- f"1. Restructuring your code to avoid circular dependencies\n"
984
- f"2. Using delayed imports inside methods rather than at module level\n"
985
- f"3. Using dependency injection to break the cycle\n"
986
- f"Original error: {import_msg}"
987
- ) from e
988
- else:
989
- raise OrionisContainerException(
990
- f"Import error while resolving dependencies for '{target.__name__}' in module '{module_name}':\n"
991
- f"{import_msg}"
992
- ) from e
993
-
994
- except Exception as e:
995
-
996
- # Get more context about where the error occurred
997
- target_type = "class" if isinstance(target, type) else "function"
998
- target_name = target.__name__ if hasattr(target, '__name__') else str(target)
999
- module_name = target.__module__ if hasattr(target, '__module__') else "unknown module"
1000
-
1001
- raise OrionisContainerException(
1002
- f"Error resolving dependencies for {target_type} '{target_name}' in '{module_name}':\n"
1003
- f"{str(e)}\n"
1004
- f"Check that all dependencies are properly registered in the container."
1005
- ) from e
631
+ # Resolve the binding using the Resolver class
632
+ return Resolver(self).resolve(
633
+ binding,
634
+ *args,
635
+ **kwargs
636
+ )
@@ -1,6 +1,7 @@
1
1
  from abc import ABC, abstractmethod
2
2
  from typing import Any, Callable
3
3
  from orionis.container.enums.lifetimes import Lifetime
4
+ from orionis.container.entities.binding import Binding
4
5
 
5
6
  class IContainer(ABC):
6
7
  """
@@ -18,7 +19,7 @@ class IContainer(ABC):
18
19
  enforce_decoupling: bool = False
19
20
  ) -> bool:
20
21
  """
21
- Register a service as a singleton.
22
+ Registers a service with a singleton lifetime.
22
23
 
23
24
  Parameters
24
25
  ----------
@@ -27,7 +28,7 @@ class IContainer(ABC):
27
28
  concrete : Callable[..., Any]
28
29
  The concrete implementation to associate with the abstract type.
29
30
  alias : str, optional
30
- An alternative name to register the service under.
31
+ An alternative name to register the service under. If not provided, the abstract's class name is used.
31
32
  enforce_decoupling : bool, optional
32
33
  Whether to enforce that concrete is not a subclass of abstract.
33
34
 
@@ -48,7 +49,7 @@ class IContainer(ABC):
48
49
  enforce_decoupling: bool = False
49
50
  ) -> bool:
50
51
  """
51
- Register a service as transient.
52
+ Registers a service with a transient lifetime.
52
53
 
53
54
  Parameters
54
55
  ----------
@@ -57,7 +58,7 @@ class IContainer(ABC):
57
58
  concrete : Callable[..., Any]
58
59
  The concrete implementation to associate with the abstract type.
59
60
  alias : str, optional
60
- An alternative name to register the service under.
61
+ An alternative name to register the service under. If not provided, the abstract's class name is used.
61
62
  enforce_decoupling : bool, optional
62
63
  Whether to enforce that concrete is not a subclass of abstract.
63
64
 
@@ -78,7 +79,7 @@ class IContainer(ABC):
78
79
  enforce_decoupling: bool = False
79
80
  ) -> bool:
80
81
  """
81
- Register a service as scoped.
82
+ Registers a service with a scoped lifetime.
82
83
 
83
84
  Parameters
84
85
  ----------
@@ -87,7 +88,7 @@ class IContainer(ABC):
87
88
  concrete : Callable[..., Any]
88
89
  The concrete implementation to associate with the abstract type.
89
90
  alias : str, optional
90
- An alternative name to register the service under.
91
+ An alternative name to register the service under. If not provided, the abstract's class name is used.
91
92
  enforce_decoupling : bool, optional
92
93
  Whether to enforce that concrete is not a subclass of abstract.
93
94
 
@@ -108,7 +109,7 @@ class IContainer(ABC):
108
109
  enforce_decoupling: bool = False
109
110
  ) -> bool:
110
111
  """
111
- Register an instance of a service.
112
+ Registers an instance of a class or interface in the container.
112
113
 
113
114
  Parameters
114
115
  ----------
@@ -117,7 +118,8 @@ class IContainer(ABC):
117
118
  instance : Any
118
119
  The concrete instance to register.
119
120
  alias : str, optional
120
- An optional alias to register the instance under.
121
+ An optional alias to register the instance under. If not provided,
122
+ the abstract's `__name__` attribute will be used as the alias if available.
121
123
  enforce_decoupling : bool, optional
122
124
  Whether to enforce that instance's class is not a subclass of abstract.
123
125
 
@@ -137,7 +139,7 @@ class IContainer(ABC):
137
139
  lifetime: Lifetime = Lifetime.TRANSIENT
138
140
  ) -> bool:
139
141
  """
140
- Register a function as a service.
142
+ Registers a function or factory under a given alias.
141
143
 
142
144
  Parameters
143
145
  ----------
@@ -163,16 +165,16 @@ class IContainer(ABC):
163
165
  **kwargs: dict
164
166
  ) -> Any:
165
167
  """
166
- Resolve a service from the container.
168
+ Resolves and returns an instance of the requested service.
167
169
 
168
170
  Parameters
169
171
  ----------
170
172
  abstract_or_alias : Any
171
173
  The abstract class, interface, or alias (str) to resolve.
172
174
  *args : tuple
173
- Positional arguments to pass to the constructor.
175
+ Positional arguments to pass to the constructor of the resolved service.
174
176
  **kwargs : dict
175
- Keyword arguments to pass to the constructor.
177
+ Keyword arguments to pass to the constructor of the resolved service.
176
178
 
177
179
  Returns
178
180
  -------
@@ -187,16 +189,60 @@ class IContainer(ABC):
187
189
  abstract_or_alias: Any
188
190
  ) -> bool:
189
191
  """
190
- Check if a service is registered in the container.
192
+ Checks if a service (by abstract type or alias) is registered in the container.
191
193
 
192
194
  Parameters
193
195
  ----------
194
196
  abstract_or_alias : Any
195
- The abstract class, interface, or alias (str) to check.
197
+ The abstract class, interface, or alias (str) to check for registration.
196
198
 
197
199
  Returns
198
200
  -------
199
201
  bool
200
- True if the service is registered, False otherwise.
202
+ True if the service is registered (either as an abstract type or alias), False otherwise.
203
+ """
204
+ pass
205
+
206
+ @abstractmethod
207
+ def getBinding(
208
+ self,
209
+ abstract_or_alias: Any
210
+ ) -> Binding:
211
+ """
212
+ Retrieves the binding for the requested abstract type or alias.
213
+
214
+ Parameters
215
+ ----------
216
+ abstract_or_alias : Any
217
+ The abstract class, interface, or alias (str) to retrieve.
218
+
219
+ Returns
220
+ -------
221
+ Binding
222
+ The binding associated with the requested abstract type or alias.
223
+ """
224
+ pass
225
+
226
+ @abstractmethod
227
+ def drop(
228
+ self,
229
+ abstract: Callable[..., Any] = None,
230
+ alias: str = None
231
+ ) -> None:
232
+ """
233
+ Drops a service from the container by removing its bindings and aliases.
234
+
235
+ Warning
236
+ -------
237
+ Using this method irresponsibly can severely damage the system's logic.
238
+ Only use it when you are certain about the consequences, as removing
239
+ critical services may lead to system failures and unexpected behavior.
240
+
241
+ Parameters
242
+ ----------
243
+ abstract : Callable[..., Any], optional
244
+ The abstract type or interface to be removed from the container.
245
+ alias : str, optional
246
+ The alias of the service to be removed.
201
247
  """
202
248
  pass