orionis 0.448.0__tar.gz → 0.450.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 (522) hide show
  1. {orionis-0.448.0/orionis.egg-info → orionis-0.450.0}/PKG-INFO +1 -1
  2. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/args/argument.py +174 -43
  3. orionis-0.450.0/orionis/console/args/parser.py +40 -0
  4. orionis-0.450.0/orionis/console/base/command.py +147 -0
  5. orionis-0.450.0/orionis/console/base/contracts/command.py +125 -0
  6. orionis-0.450.0/orionis/console/core/reactor.py +422 -0
  7. orionis-0.450.0/orionis/console/output/contracts/executor.py +93 -0
  8. orionis-0.450.0/orionis/console/output/executor.py +153 -0
  9. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/container.py +46 -22
  10. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/context/scope.py +1 -1
  11. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/application.py +6 -2
  12. orionis-0.450.0/orionis/foundation/providers/console_provider.py +65 -0
  13. orionis-0.450.0/orionis/foundation/providers/dumper_provider.py +79 -0
  14. orionis-0.450.0/orionis/foundation/providers/executor_provider.py +80 -0
  15. orionis-0.450.0/orionis/foundation/providers/inspirational_provider.py +81 -0
  16. orionis-0.450.0/orionis/foundation/providers/logger_provider.py +83 -0
  17. orionis-0.450.0/orionis/foundation/providers/progress_bar_provider.py +85 -0
  18. orionis-0.450.0/orionis/foundation/providers/testing_provider.py +125 -0
  19. orionis-0.450.0/orionis/foundation/providers/workers_provider.py +102 -0
  20. {orionis-0.448.0 → orionis-0.450.0}/orionis/metadata/framework.py +1 -1
  21. orionis-0.450.0/orionis/support/facades/console.py +23 -0
  22. orionis-0.450.0/orionis/support/facades/dumper.py +22 -0
  23. orionis-0.450.0/orionis/support/facades/executor.py +24 -0
  24. orionis-0.450.0/orionis/support/facades/inspire.py +23 -0
  25. orionis-0.450.0/orionis/support/facades/logger.py +23 -0
  26. orionis-0.450.0/orionis/support/facades/progress_bar.py +21 -0
  27. orionis-0.450.0/orionis/support/facades/testing.py +22 -0
  28. orionis-0.450.0/orionis/support/facades/workers.py +21 -0
  29. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/kernel.py +2 -2
  30. {orionis-0.448.0 → orionis-0.450.0/orionis.egg-info}/PKG-INFO +1 -1
  31. {orionis-0.448.0 → orionis-0.450.0}/orionis.egg-info/SOURCES.txt +4 -0
  32. orionis-0.448.0/orionis/console/args/parser.py +0 -6
  33. orionis-0.448.0/orionis/console/base/command.py +0 -92
  34. orionis-0.448.0/orionis/console/base/contracts/command.py +0 -68
  35. orionis-0.448.0/orionis/console/core/reactor.py +0 -28
  36. orionis-0.448.0/orionis/foundation/providers/console_provider.py +0 -40
  37. orionis-0.448.0/orionis/foundation/providers/dumper_provider.py +0 -51
  38. orionis-0.448.0/orionis/foundation/providers/inspirational_provider.py +0 -61
  39. orionis-0.448.0/orionis/foundation/providers/logger_provider.py +0 -44
  40. orionis-0.448.0/orionis/foundation/providers/progress_bar_provider.py +0 -40
  41. orionis-0.448.0/orionis/foundation/providers/testing_provider.py +0 -81
  42. orionis-0.448.0/orionis/foundation/providers/workers_provider.py +0 -44
  43. orionis-0.448.0/orionis/support/facades/console.py +0 -15
  44. orionis-0.448.0/orionis/support/facades/dumper.py +0 -15
  45. orionis-0.448.0/orionis/support/facades/inspire.py +0 -20
  46. orionis-0.448.0/orionis/support/facades/logger.py +0 -16
  47. orionis-0.448.0/orionis/support/facades/progress_bar.py +0 -15
  48. orionis-0.448.0/orionis/support/facades/testing.py +0 -16
  49. orionis-0.448.0/orionis/support/facades/workers.py +0 -17
  50. {orionis-0.448.0 → orionis-0.450.0}/LICENCE +0 -0
  51. {orionis-0.448.0 → orionis-0.450.0}/MANIFEST.in +0 -0
  52. {orionis-0.448.0 → orionis-0.450.0}/README.md +0 -0
  53. {orionis-0.448.0 → orionis-0.450.0}/orionis/__init__.py +0 -0
  54. {orionis-0.448.0 → orionis-0.450.0}/orionis/app.py +0 -0
  55. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/__init__.py +0 -0
  56. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/args/__init__.py +0 -0
  57. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/args/enums/__init__.py +0 -0
  58. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/args/enums/actions.py +0 -0
  59. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/base/__init__.py +0 -0
  60. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/base/contracts/__init__.py +0 -0
  61. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/commands/version.py +0 -0
  62. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/contracts/kernel.py +0 -0
  63. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dumper/__init__.py +0 -0
  64. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  65. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dumper/contracts/dump.py +0 -0
  66. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dumper/dump.py +0 -0
  67. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dynamic/__init__.py +0 -0
  68. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  69. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  70. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/dynamic/progress_bar.py +0 -0
  71. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/exceptions/__init__.py +0 -0
  72. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/exceptions/cli_exception.py +0 -0
  73. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  74. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  75. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  76. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/kernel.py +0 -0
  77. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/__init__.py +0 -0
  78. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/console.py +0 -0
  79. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/contracts/__init__.py +0 -0
  80. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/contracts/console.py +0 -0
  81. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/enums/__init__.py +0 -0
  82. {orionis-0.448.0 → orionis-0.450.0}/orionis/console/output/enums/styles.py +0 -0
  83. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/__init__.py +0 -0
  84. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/context/__init__.py +0 -0
  85. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/context/manager.py +0 -0
  86. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/contracts/__init__.py +0 -0
  87. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/contracts/container.py +0 -0
  88. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/contracts/resolver.py +0 -0
  89. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/contracts/service_provider.py +0 -0
  90. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/entities/__init__.py +0 -0
  91. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/entities/binding.py +0 -0
  92. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/enums/__init__.py +0 -0
  93. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/enums/lifetimes.py +0 -0
  94. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/exceptions/__init__.py +0 -0
  95. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/exceptions/attribute.py +0 -0
  96. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/exceptions/exception.py +0 -0
  97. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/exceptions/type.py +0 -0
  98. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/exceptions/value.py +0 -0
  99. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/facades/__init__.py +0 -0
  100. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/facades/facade.py +0 -0
  101. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/providers/__init__.py +0 -0
  102. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/providers/service_provider.py +0 -0
  103. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/resolver/__init__.py +0 -0
  104. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/resolver/resolver.py +0 -0
  105. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/__init__.py +0 -0
  106. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/implements.py +0 -0
  107. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_abstract_class.py +0 -0
  108. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_callable.py +0 -0
  109. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_concrete_class.py +0 -0
  110. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_instance.py +0 -0
  111. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_not_subclass.py +0 -0
  112. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_subclass.py +0 -0
  113. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/is_valid_alias.py +0 -0
  114. {orionis-0.448.0 → orionis-0.450.0}/orionis/container/validators/lifetime.py +0 -0
  115. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/__init__.py +0 -0
  116. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/__init__.py +0 -0
  117. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/__init__.py +0 -0
  118. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  119. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/entities/app.py +0 -0
  120. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  121. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  122. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  123. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/auth/__init__.py +0 -0
  124. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  125. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  126. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/__init__.py +0 -0
  127. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  128. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  129. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  130. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  131. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  132. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  133. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cors/__init__.py +0 -0
  134. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  135. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  136. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/__init__.py +0 -0
  137. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  138. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  139. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/database.py +0 -0
  140. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  141. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  142. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  143. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  144. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  145. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  146. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  147. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  148. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  149. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  150. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  151. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  152. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  153. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  154. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  155. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  156. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  157. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  158. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  159. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  160. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  161. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  162. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  163. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/__init__.py +0 -0
  164. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  165. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  166. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  167. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  168. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  169. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  170. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  171. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  172. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  173. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  174. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  175. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  176. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  177. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  178. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/__init__.py +0 -0
  179. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  180. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  181. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  182. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  183. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  184. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/__init__.py +0 -0
  185. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  186. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  187. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  188. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  189. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  190. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  191. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/roots/__init__.py +0 -0
  192. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/roots/paths.py +0 -0
  193. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/__init__.py +0 -0
  194. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  195. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/entities/session.py +0 -0
  196. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  197. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  198. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  199. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  200. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/startup.py +0 -0
  201. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/__init__.py +0 -0
  202. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  203. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  204. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  205. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  206. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  207. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  208. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/contracts/__init__.py +0 -0
  209. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/contracts/application.py +0 -0
  210. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/contracts/config.py +0 -0
  211. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/exceptions/__init__.py +0 -0
  212. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/exceptions/integrity.py +0 -0
  213. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/exceptions/runtime.py +0 -0
  214. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/exceptions/type.py +0 -0
  215. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/exceptions/value.py +0 -0
  216. {orionis-0.448.0 → orionis-0.450.0}/orionis/foundation/providers/__init__.py +0 -0
  217. {orionis-0.448.0 → orionis-0.450.0}/orionis/metadata/__init__.py +0 -0
  218. {orionis-0.448.0 → orionis-0.450.0}/orionis/metadata/package.py +0 -0
  219. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/__init__.py +0 -0
  220. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/__init__.py +0 -0
  221. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  222. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  223. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/coroutines.py +0 -0
  224. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  225. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  226. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/__init__.py +0 -0
  227. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/contracts/__init__.py +0 -0
  228. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/contracts/caster.py +0 -0
  229. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/contracts/env.py +0 -0
  230. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/core/__init__.py +0 -0
  231. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/core/dot_env.py +0 -0
  232. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  233. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/dynamic/caster.py +0 -0
  234. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/enums/__init__.py +0 -0
  235. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/enums/value_type.py +0 -0
  236. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/env.py +0 -0
  237. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  238. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/exceptions/exception.py +0 -0
  239. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/exceptions/value.py +0 -0
  240. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/helpers/__init__.py +0 -0
  241. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/helpers/functions.py +0 -0
  242. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/key/__init__.py +0 -0
  243. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/key/key_generator.py +0 -0
  244. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/validators/__init__.py +0 -0
  245. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/validators/key_name.py +0 -0
  246. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/environment/validators/types.py +0 -0
  247. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/inspirational/__init__.py +0 -0
  248. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  249. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/inspirational/inspire.py +0 -0
  250. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/inspirational/quotes.py +0 -0
  251. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/__init__.py +0 -0
  252. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  253. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  254. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  255. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  256. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/callables/__init__.py +0 -0
  257. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  258. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  259. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/callables/reflection.py +0 -0
  260. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  261. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  262. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  263. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  264. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  265. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  266. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  267. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  268. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  269. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  270. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  271. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  272. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  273. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  274. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  275. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/exceptions/type.py +0 -0
  276. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/exceptions/value.py +0 -0
  277. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/instances/__init__.py +0 -0
  278. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  279. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  280. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/instances/reflection.py +0 -0
  281. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/modules/__init__.py +0 -0
  282. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  283. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  284. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/modules/reflection.py +0 -0
  285. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/objects/__init__.py +0 -0
  286. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/objects/types.py +0 -0
  287. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/introspection/reflection.py +0 -0
  288. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/__init__.py +0 -0
  289. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/contracts/__init__.py +0 -0
  290. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/contracts/log_service.py +0 -0
  291. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/exceptions/__init__.py +0 -0
  292. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/exceptions/runtime.py +0 -0
  293. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/handlers/__init__.py +0 -0
  294. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/handlers/filename.py +0 -0
  295. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  296. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  297. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/log/log_service.py +0 -0
  298. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/__init__.py +0 -0
  299. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/contracts/__init__.py +0 -0
  300. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/contracts/imports.py +0 -0
  301. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/contracts/workers.py +0 -0
  302. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/imports.py +0 -0
  303. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/runtime/__init__.py +0 -0
  304. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/runtime/imports.py +0 -0
  305. {orionis-0.448.0 → orionis-0.450.0}/orionis/services/system/workers.py +0 -0
  306. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/__init__.py +0 -0
  307. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/entities/__init__.py +0 -0
  308. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/entities/base.py +0 -0
  309. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/facades/__init__.py +0 -0
  310. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/__init__.py +0 -0
  311. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  312. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  313. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  314. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  315. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/formatter/serializer.py +0 -0
  316. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/patterns/__init__.py +0 -0
  317. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  318. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/patterns/singleton/meta.py +0 -0
  319. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/__init__.py +0 -0
  320. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/contracts/__init__.py +0 -0
  321. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/contracts/std.py +0 -0
  322. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  323. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/exceptions/value.py +0 -0
  324. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/standard/std.py +0 -0
  325. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/wrapper/__init__.py +0 -0
  326. {orionis-0.448.0 → orionis-0.450.0}/orionis/support/wrapper/dot_dict.py +0 -0
  327. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/__init__.py +0 -0
  328. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/cases/__init__.py +0 -0
  329. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/cases/asynchronous.py +0 -0
  330. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/cases/synchronous.py +0 -0
  331. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/__init__.py +0 -0
  332. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/dumper.py +0 -0
  333. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/kernel.py +0 -0
  334. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/logs.py +0 -0
  335. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/printer.py +0 -0
  336. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/render.py +0 -0
  337. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/test_result.py +0 -0
  338. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/contracts/unit_test.py +0 -0
  339. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/core/__init__.py +0 -0
  340. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/core/unit_test.py +0 -0
  341. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/entities/__init__.py +0 -0
  342. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/entities/result.py +0 -0
  343. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/enums/__init__.py +0 -0
  344. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/enums/status.py +0 -0
  345. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/__init__.py +0 -0
  346. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/config.py +0 -0
  347. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/failure.py +0 -0
  348. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/persistence.py +0 -0
  349. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/runtime.py +0 -0
  350. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/exceptions/value.py +0 -0
  351. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/output/__init__.py +0 -0
  352. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/output/dumper.py +0 -0
  353. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/output/printer.py +0 -0
  354. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/records/__init__.py +0 -0
  355. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/records/logs.py +0 -0
  356. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/__init__.py +0 -0
  357. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/base_path.py +0 -0
  358. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/execution_mode.py +0 -0
  359. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/fail_fast.py +0 -0
  360. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/folder_path.py +0 -0
  361. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/module_name.py +0 -0
  362. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/name_pattern.py +0 -0
  363. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/pattern.py +0 -0
  364. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/persistent.py +0 -0
  365. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/persistent_driver.py +0 -0
  366. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/print_result.py +0 -0
  367. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/tags.py +0 -0
  368. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/throw_exception.py +0 -0
  369. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/verbosity.py +0 -0
  370. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/web_report.py +0 -0
  371. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/validators/workers.py +0 -0
  372. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/view/__init__.py +0 -0
  373. {orionis-0.448.0 → orionis-0.450.0}/orionis/test/view/render.py +0 -0
  374. {orionis-0.448.0 → orionis-0.450.0}/orionis.egg-info/dependency_links.txt +0 -0
  375. {orionis-0.448.0 → orionis-0.450.0}/orionis.egg-info/requires.txt +0 -0
  376. {orionis-0.448.0 → orionis-0.450.0}/orionis.egg-info/top_level.txt +0 -0
  377. {orionis-0.448.0 → orionis-0.450.0}/orionis.egg-info/zip-safe +0 -0
  378. {orionis-0.448.0 → orionis-0.450.0}/setup.cfg +0 -0
  379. {orionis-0.448.0 → orionis-0.450.0}/setup.py +0 -0
  380. {orionis-0.448.0 → orionis-0.450.0}/tests/__init__.py +0 -0
  381. {orionis-0.448.0 → orionis-0.450.0}/tests/container/__init__.py +0 -0
  382. {orionis-0.448.0 → orionis-0.450.0}/tests/container/context/__init__.py +0 -0
  383. {orionis-0.448.0 → orionis-0.450.0}/tests/container/context/test_manager.py +0 -0
  384. {orionis-0.448.0 → orionis-0.450.0}/tests/container/context/test_scope.py +0 -0
  385. {orionis-0.448.0 → orionis-0.450.0}/tests/container/core/__init__.py +0 -0
  386. {orionis-0.448.0 → orionis-0.450.0}/tests/container/core/test_container.py +0 -0
  387. {orionis-0.448.0 → orionis-0.450.0}/tests/container/core/test_singleton.py +0 -0
  388. {orionis-0.448.0 → orionis-0.450.0}/tests/container/core/test_thread_safety.py +0 -0
  389. {orionis-0.448.0 → orionis-0.450.0}/tests/container/entities/__init__.py +0 -0
  390. {orionis-0.448.0 → orionis-0.450.0}/tests/container/entities/test_binding.py +0 -0
  391. {orionis-0.448.0 → orionis-0.450.0}/tests/container/enums/__init__.py +0 -0
  392. {orionis-0.448.0 → orionis-0.450.0}/tests/container/enums/test_lifetimes.py +0 -0
  393. {orionis-0.448.0 → orionis-0.450.0}/tests/container/facades/__init__.py +0 -0
  394. {orionis-0.448.0 → orionis-0.450.0}/tests/container/facades/test_facade.py +0 -0
  395. {orionis-0.448.0 → orionis-0.450.0}/tests/container/mocks/__init__.py +0 -0
  396. {orionis-0.448.0 → orionis-0.450.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  397. {orionis-0.448.0 → orionis-0.450.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  398. {orionis-0.448.0 → orionis-0.450.0}/tests/container/providers/__init__.py +0 -0
  399. {orionis-0.448.0 → orionis-0.450.0}/tests/container/providers/test_providers.py +0 -0
  400. {orionis-0.448.0 → orionis-0.450.0}/tests/container/resolver/__init__.py +0 -0
  401. {orionis-0.448.0 → orionis-0.450.0}/tests/container/resolver/test_resolver.py +0 -0
  402. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/__init__.py +0 -0
  403. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_implements.py +0 -0
  404. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  405. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_callable.py +0 -0
  406. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  407. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_instance.py +0 -0
  408. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  409. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_subclass.py +0 -0
  410. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  411. {orionis-0.448.0 → orionis-0.450.0}/tests/container/validators/test_lifetime.py +0 -0
  412. {orionis-0.448.0 → orionis-0.450.0}/tests/example/__init__.py +0 -0
  413. {orionis-0.448.0 → orionis-0.450.0}/tests/example/test_example.py +0 -0
  414. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/__init__.py +0 -0
  415. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/__init__.py +0 -0
  416. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/app/__init__.py +0 -0
  417. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  418. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/auth/__init__.py +0 -0
  419. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  420. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cache/__init__.py +0 -0
  421. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  422. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  423. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  424. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cors/__init__.py +0 -0
  425. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  426. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/__init__.py +0 -0
  427. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  428. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  429. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  430. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  431. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  432. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  433. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  434. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  435. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  436. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  437. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  438. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  439. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/__init__.py +0 -0
  440. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  441. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  442. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  443. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  444. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  445. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  446. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  447. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  448. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/mail/__init__.py +0 -0
  449. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  450. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  451. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  452. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  453. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/queue/__init__.py +0 -0
  454. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  455. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  456. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  457. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/root/__init__.py +0 -0
  458. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  459. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/session/__init__.py +0 -0
  460. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  461. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/startup/__init__.py +0 -0
  462. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  463. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/testing/__init__.py +0 -0
  464. {orionis-0.448.0 → orionis-0.450.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  465. {orionis-0.448.0 → orionis-0.450.0}/tests/metadata/__init__.py +0 -0
  466. {orionis-0.448.0 → orionis-0.450.0}/tests/metadata/test_metadata_framework.py +0 -0
  467. {orionis-0.448.0 → orionis-0.450.0}/tests/metadata/test_metadata_package.py +0 -0
  468. {orionis-0.448.0 → orionis-0.450.0}/tests/services/__init__.py +0 -0
  469. {orionis-0.448.0 → orionis-0.450.0}/tests/services/asynchrony/__init__.py +0 -0
  470. {orionis-0.448.0 → orionis-0.450.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  471. {orionis-0.448.0 → orionis-0.450.0}/tests/services/environment/__init__.py +0 -0
  472. {orionis-0.448.0 → orionis-0.450.0}/tests/services/environment/test_services_environment.py +0 -0
  473. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/__init__.py +0 -0
  474. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/__init__.py +0 -0
  475. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
  476. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  477. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  478. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  479. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
  480. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/__init__.py +0 -0
  481. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
  482. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  483. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
  484. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  485. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
  486. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
  487. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  488. {orionis-0.448.0 → orionis-0.450.0}/tests/services/introspection/test_reflection.py +0 -0
  489. {orionis-0.448.0 → orionis-0.450.0}/tests/services/log/__init__.py +0 -0
  490. {orionis-0.448.0 → orionis-0.450.0}/tests/services/log/test_log.py +0 -0
  491. {orionis-0.448.0 → orionis-0.450.0}/tests/services/system/__init__.py +0 -0
  492. {orionis-0.448.0 → orionis-0.450.0}/tests/services/system/test_services_system_imports.py +0 -0
  493. {orionis-0.448.0 → orionis-0.450.0}/tests/services/system/test_services_system_workers.py +0 -0
  494. {orionis-0.448.0 → orionis-0.450.0}/tests/support/__init__.py +0 -0
  495. {orionis-0.448.0 → orionis-0.450.0}/tests/support/entities/__init__.py +0 -0
  496. {orionis-0.448.0 → orionis-0.450.0}/tests/support/entities/mock_dataclass.py +0 -0
  497. {orionis-0.448.0 → orionis-0.450.0}/tests/support/entities/test_base.py +0 -0
  498. {orionis-0.448.0 → orionis-0.450.0}/tests/support/patterns/__init__.py +0 -0
  499. {orionis-0.448.0 → orionis-0.450.0}/tests/support/patterns/singleton/__init__.py +0 -0
  500. {orionis-0.448.0 → orionis-0.450.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  501. {orionis-0.448.0 → orionis-0.450.0}/tests/support/standard/__init__.py +0 -0
  502. {orionis-0.448.0 → orionis-0.450.0}/tests/support/standard/test_services_std.py +0 -0
  503. {orionis-0.448.0 → orionis-0.450.0}/tests/support/wrapper/__init__.py +0 -0
  504. {orionis-0.448.0 → orionis-0.450.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  505. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/__init__.py +0 -0
  506. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/cases/__init__.py +0 -0
  507. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  508. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  509. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/entities/__init__.py +0 -0
  510. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/entities/test_testing_result.py +0 -0
  511. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/enums/__init__.py +0 -0
  512. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/enums/test_testing_status.py +0 -0
  513. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/output/__init__.py +0 -0
  514. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/output/test_testing_dumper.py +0 -0
  515. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/output/test_testing_printer.py +0 -0
  516. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/records/__init__.py +0 -0
  517. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/records/test_testing_records.py +0 -0
  518. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/test_testing_unit.py +0 -0
  519. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/validators/__init__.py +0 -0
  520. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/validators/test_testing_validators.py +0 -0
  521. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/view/__init__.py +0 -0
  522. {orionis-0.448.0 → orionis-0.450.0}/tests/testing/view/test_render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.448.0
3
+ Version: 0.450.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
@@ -45,69 +45,69 @@ class CLIArgument:
45
45
  """
46
46
 
47
47
  # Required fields
48
- flags: List[str] = None
49
- type: Type = None
50
- help: str = None
48
+ flags: List[str]
49
+ type: Type
50
+ help: Optional[str] = None
51
51
 
52
52
  default: Any = field(
53
- default_factory = None,
54
- metadata = {
53
+ default=None,
54
+ metadata={
55
55
  "description": "Default value for the argument.",
56
56
  "default": None
57
57
  }
58
58
  )
59
59
 
60
60
  choices: Optional[List[Any]] = field(
61
- default_factory = None,
62
- metadata = {
61
+ default=None,
62
+ metadata={
63
63
  "description": "List of valid choices for the argument.",
64
64
  "default": None
65
65
  }
66
66
  )
67
67
 
68
68
  required: bool = field(
69
- default_factory = False,
70
- metadata = {
69
+ default=False,
70
+ metadata={
71
71
  "description": "Indicates if the argument is required.",
72
72
  "default": False
73
73
  }
74
74
  )
75
75
 
76
76
  metavar: Optional[str] = field(
77
- default_factory = None,
78
- metadata = {
77
+ default=None,
78
+ metadata={
79
79
  "description": "Metavar for displaying in help messages.",
80
80
  "default": None
81
81
  }
82
82
  )
83
83
 
84
84
  dest: Optional[str] = field(
85
- default_factory = None,
86
- metadata = {
85
+ default=None,
86
+ metadata={
87
87
  "description": "Destination name for the argument in the namespace.",
88
88
  "default": None
89
89
  }
90
90
  )
91
91
 
92
92
  action: Union[str, ArgumentAction] = field(
93
- default_factory = ArgumentAction.STORE,
94
- metadata = {
93
+ default=ArgumentAction.STORE,
94
+ metadata={
95
95
  "description": "Action to perform with the argument.",
96
96
  "default": ArgumentAction.STORE.value
97
97
  }
98
98
  )
99
99
 
100
100
  nargs: Optional[Union[int, str]] = field(
101
- default_factory = None,
102
- metadata = {
101
+ default=None,
102
+ metadata={
103
103
  "description": "Number of arguments expected (e.g., 1, 2, '+', '*').",
104
104
  "default": None
105
105
  }
106
106
  )
107
107
 
108
108
  const: Any = field(
109
- default_factory = None,
110
- metadata = {
109
+ default=None,
110
+ metadata={
111
111
  "description": "Constant value for store_const or append_const actions.",
112
112
  "default": None
113
113
  }
@@ -159,7 +159,8 @@ class CLIArgument:
159
159
 
160
160
  # Auto-generate help if not provided
161
161
  if self.help is None:
162
- object.__setattr__(self, 'help', f"Argument for {primary_flag}")
162
+ clean_flag = primary_flag.lstrip('-').replace('-', ' ').title()
163
+ object.__setattr__(self, 'help', f"{clean_flag} argument")
163
164
 
164
165
  # Ensure help is a string
165
166
  if not isinstance(self.help, str):
@@ -204,9 +205,7 @@ class CLIArgument:
204
205
  raise CLIOrionisValueError(f"Destination '{self.dest}' is not a valid Python identifier")
205
206
 
206
207
  # Normalize action value
207
- if self.action is None:
208
- object.__setattr__(self, 'action', ArgumentAction.STORE.value)
209
- elif isinstance(self.action, str):
208
+ if isinstance(self.action, str):
210
209
  try:
211
210
  action_enum = ArgumentAction(self.action)
212
211
  object.__setattr__(self, 'action', action_enum.value)
@@ -217,22 +216,74 @@ class CLIArgument:
217
216
  else:
218
217
  raise CLIOrionisValueError("Action must be a string or an ArgumentAction enum value")
219
218
 
219
+ # Determine if this is an optional argument (starts with dash)
220
+ is_optional = any(flag.startswith('-') for flag in self.flags)
221
+
220
222
  # Special handling for boolean types
221
223
  if self.type is bool:
224
+ # Auto-configure action based on default value and whether it's optional
225
+ if is_optional:
226
+ action = ArgumentAction.STORE_FALSE.value if self.default else ArgumentAction.STORE_TRUE.value
227
+ object.__setattr__(self, 'action', action)
228
+ # argparse ignores type with store_true/false actions
229
+ object.__setattr__(self, 'type', None)
230
+ else:
231
+ # For positional boolean arguments, keep type as bool
232
+ pass
222
233
 
223
- # Auto-configure action based on default value
224
- action = ArgumentAction.STORE_TRUE.value if not self.default else ArgumentAction.STORE_FALSE.value
225
- object.__setattr__(self, 'action', action)
226
-
227
- # argparse ignores type with store_true/false actions
234
+ # Special handling for list types
235
+ elif self.type is list:
236
+ if self.nargs is None:
237
+ # Auto-configure for accepting multiple values
238
+ object.__setattr__(self, 'nargs', '+' if is_optional else '*')
239
+ # Keep type as list for proper conversion
240
+ object.__setattr__(self, 'type', str) # argparse expects element type, not list
241
+
242
+ # Handle count action - typically used for verbosity flags
243
+ elif self.action == ArgumentAction.COUNT.value:
244
+ object.__setattr__(self, 'type', None) # count action doesn't use type
245
+ if self.default is None:
246
+ object.__setattr__(self, 'default', 0)
247
+
248
+ # Handle const actions
249
+ if self.action in (ArgumentAction.STORE_CONST.value, ArgumentAction.APPEND_CONST.value):
250
+ if self.const is None:
251
+ # Auto-set const based on type or use True as default
252
+ if self.type is bool:
253
+ object.__setattr__(self, 'const', True)
254
+ elif self.type is int:
255
+ object.__setattr__(self, 'const', 1)
256
+ elif self.type is str:
257
+ object.__setattr__(self, 'const', self.dest)
258
+ else:
259
+ object.__setattr__(self, 'const', True)
260
+ object.__setattr__(self, 'type', None) # const actions don't use type
261
+
262
+ # Handle nargs '?' - optional single argument
263
+ elif self.nargs == '?':
264
+ if self.const is None and is_optional:
265
+ # For optional arguments with nargs='?', set a reasonable const
266
+ object.__setattr__(self, 'const', True if self.type is bool else self.dest)
267
+
268
+ # Validate nargs compatibility
269
+ if self.nargs is not None:
270
+ valid_nargs = ['?', '*', '+'] + [str(i) for i in range(0, 10)]
271
+ if isinstance(self.nargs, int):
272
+ if self.nargs < 0:
273
+ raise CLIOrionisValueError("nargs cannot be negative")
274
+ elif self.nargs not in valid_nargs:
275
+ raise CLIOrionisValueError(f"Invalid nargs value: {self.nargs}")
276
+
277
+ # Handle version action
278
+ if self.action == ArgumentAction.VERSION.value:
228
279
  object.__setattr__(self, 'type', None)
280
+ if 'version' not in self.dest:
281
+ object.__setattr__(self, 'dest', 'version')
229
282
 
230
- # Special handling for list types
231
- if self.type is list and self.nargs is None:
283
+ # Handle help action
284
+ if self.action == ArgumentAction.HELP.value:
285
+ object.__setattr__(self, 'type', None)
232
286
 
233
- # Auto-configure for accepting multiple values
234
- object.__setattr__(self, 'nargs', '+')
235
- object.__setattr__(self, 'type', str)
236
287
 
237
288
  def addToParser(self, parser: argparse.ArgumentParser) -> None:
238
289
  """
@@ -327,17 +378,97 @@ class CLIArgument:
327
378
  "action": self.action, # Action to take when argument is encountered
328
379
  "nargs": self.nargs, # Number of command-line arguments expected
329
380
  "type": self.type, # Type to convert the argument to
330
- "const": self.const # Constant value for certain actions
331
381
  }
332
382
 
333
- # Filter out None values to prevent passing invalid parameters to argparse
334
- # argparse will raise errors if None values are explicitly passed for certain parameters
335
- kwargs = {k: v for k, v in kwargs.items() if v is not None}
336
-
337
- # Remove 'required' parameter for positional arguments since it's not supported
338
- # Positional arguments are inherently required by argparse's design
339
- if is_positional and 'required' in kwargs:
340
- del kwargs['required']
383
+ # Handle const parameter for specific actions
384
+ const_actions = [
385
+ ArgumentAction.STORE_CONST.value,
386
+ ArgumentAction.APPEND_CONST.value
387
+ ]
388
+
389
+ # Add const parameter when it's needed
390
+ if self.action in const_actions or (self.nargs == '?' and self.const is not None):
391
+ kwargs["const"] = self.const
392
+
393
+ # Special handling for version action
394
+ if self.action == ArgumentAction.VERSION.value and hasattr(self, 'version'):
395
+ kwargs["version"] = getattr(self, 'version', None)
396
+
397
+ # Define actions that don't accept certain parameters
398
+ type_ignored_actions = [
399
+ ArgumentAction.STORE_TRUE.value,
400
+ ArgumentAction.STORE_FALSE.value,
401
+ ArgumentAction.STORE_CONST.value,
402
+ ArgumentAction.APPEND_CONST.value,
403
+ ArgumentAction.COUNT.value,
404
+ ArgumentAction.HELP.value,
405
+ ArgumentAction.VERSION.value
406
+ ]
407
+
408
+ # Define actions that don't accept metavar or default parameters
409
+ metavar_ignored_actions = [
410
+ ArgumentAction.STORE_TRUE.value,
411
+ ArgumentAction.STORE_FALSE.value,
412
+ ArgumentAction.COUNT.value,
413
+ ArgumentAction.HELP.value,
414
+ ArgumentAction.VERSION.value
415
+ ]
416
+
417
+ # Define actions that don't accept default parameters
418
+ default_ignored_actions = [
419
+ ArgumentAction.STORE_TRUE.value,
420
+ ArgumentAction.STORE_FALSE.value,
421
+ ArgumentAction.STORE_CONST.value,
422
+ ArgumentAction.APPEND_CONST.value,
423
+ ArgumentAction.HELP.value,
424
+ ArgumentAction.VERSION.value
425
+ ]
426
+
427
+ # Filter out None values and incompatible parameters
428
+ filtered_kwargs = {}
429
+ for k, v in kwargs.items():
430
+ if v is not None:
431
+
432
+ # Skip parameters that are not compatible with certain actions
433
+ if k == "type" and self.action in type_ignored_actions:
434
+ continue
435
+
436
+ # Skip metavar for actions that don't accept it
437
+ if k == "metavar" and self.action in metavar_ignored_actions:
438
+ continue
439
+
440
+ # Skip default for actions that don't accept it
441
+ if k == "default" and self.action in default_ignored_actions:
442
+ continue
443
+
444
+ # Special case: don't include empty strings for metavar in positional args
445
+ if k == "metavar" and is_positional and v == "":
446
+ continue
447
+
448
+ # Add the parameter to the filtered kwargs
449
+ filtered_kwargs[k] = v
450
+
451
+ # Remove parameters that are not compatible with positional arguments
452
+ if is_positional:
453
+
454
+ # Remove 'required' parameter for positional arguments since it's not supported
455
+ if 'required' in filtered_kwargs:
456
+ del filtered_kwargs['required']
457
+
458
+ # Remove 'dest' parameter for positional arguments as argparse calculates it automatically
459
+ if 'dest' in filtered_kwargs:
460
+ del filtered_kwargs['dest']
461
+
462
+ # Remove 'metavar' if it's the same as the flag name (redundant)
463
+ if 'metavar' in filtered_kwargs and len(self.flags) == 1:
464
+ flag_upper = self.flags[0].upper()
465
+ if filtered_kwargs['metavar'] == flag_upper:
466
+ del filtered_kwargs['metavar']
467
+
468
+ # For count action, ensure default is an integer
469
+ if self.action == ArgumentAction.COUNT.value and 'default' in filtered_kwargs:
470
+ if not isinstance(filtered_kwargs['default'], int):
471
+ filtered_kwargs['default'] = 0
341
472
 
342
473
  # Return the cleaned and validated kwargs dictionary
343
- return kwargs
474
+ return filtered_kwargs
@@ -0,0 +1,40 @@
1
+ import argparse
2
+
3
+ class ArgumentPaser():
4
+
5
+ def __init__(self):
6
+ self.__parser = argparse.ArgumentParser()
7
+
8
+ def addArgument(self, name: str, **kwargs):
9
+ """
10
+ Add an argument to the parser.
11
+
12
+ Parameters
13
+ ----------
14
+ name : str
15
+ The name of the argument to add.
16
+ kwargs : dict
17
+ Additional keyword arguments for the argument configuration.
18
+
19
+ Returns
20
+ -------
21
+ None
22
+ This method does not return any value.
23
+ """
24
+ self.__parser.add_argument(name, **kwargs)
25
+
26
+ def parse(self, args=None):
27
+ """
28
+ Parse the command-line arguments.
29
+
30
+ Parameters
31
+ ----------
32
+ args : list, optional
33
+ A list of arguments to parse. If None, uses sys.argv by default.
34
+
35
+ Returns
36
+ -------
37
+ Namespace
38
+ An object containing the parsed arguments as attributes.
39
+ """
40
+ return self.__parser.parse_args(args)
@@ -0,0 +1,147 @@
1
+ from typing import Any, Dict, List
2
+ from orionis.console.args.argument import CLIArgument
3
+ from orionis.console.dynamic.progress_bar import ProgressBar
4
+ from orionis.console.output.console import Console
5
+ from orionis.console.base.contracts.command import IBaseCommand
6
+
7
+ class BaseCommand(Console, ProgressBar, IBaseCommand):
8
+ """
9
+ Abstract base class for implementing console commands in the Orionis framework.
10
+
11
+ This class provides a foundation for creating command-line interface commands with
12
+ built-in console output capabilities, progress bar functionality, and argument handling.
13
+ It inherits from Console and ProgressBar to provide rich terminal interaction features
14
+ while implementing the IBaseCommand interface contract.
15
+
16
+ The BaseCommand class serves as a template that enforces a consistent structure for
17
+ all command implementations in the framework, requiring subclasses to implement the
18
+ core command logic while providing common utilities for argument access and console
19
+ operations.
20
+
21
+ This is an abstract base class and should not be instantiated directly.
22
+ All concrete command implementations must inherit from this class and
23
+ provide their own handle() method implementation.
24
+
25
+ The class integrates with the framework's console and progress bar systems,
26
+ allowing commands to provide rich user feedback during execution.
27
+
28
+ Attributes
29
+ ----------
30
+ timestamps : bool, default True
31
+ Controls whether timestamps are included in console output messages.
32
+ When True, all console output will be prefixed with timestamp information.
33
+ signature : str
34
+ Defines the command signature string used for command registration and
35
+ automatic help text generation. This should follow the framework's
36
+ signature format conventions.
37
+ description : str
38
+ Human-readable description of the command's purpose and functionality.
39
+ Used in help documentation and command listing interfaces.
40
+ _args : Dict[str, Any], default {}
41
+ Dictionary containing parsed command-line arguments and options.
42
+ Populated automatically by the command parser before handle() execution.
43
+ arguments : List[CLIArgument], default []
44
+ List of CLIArgument instances defining the command's accepted arguments
45
+ and options. Used for argument parsing and validation.
46
+
47
+ Methods
48
+ -------
49
+ handle()
50
+ Abstract method that must be implemented by subclasses to define the
51
+ main command execution logic.
52
+ argument(key: str)
53
+ Safely retrieves argument values from the parsed arguments dictionary
54
+ with type validation and error handling.
55
+ """
56
+
57
+ # Enable timestamps in console output by default
58
+ timestamps: bool = True
59
+
60
+ # Command signature string for registration and help text generation
61
+ signature: str
62
+
63
+ # Human-readable description for documentation and help display
64
+ description: str
65
+
66
+ # Dictionary to store parsed command-line arguments and options
67
+ _args: Dict[str, Any] = {}
68
+
69
+ # List of CLIArgument instances defining command arguments
70
+ arguments: List[CLIArgument] = []
71
+
72
+ def handle(self):
73
+ """
74
+ Execute the main command logic.
75
+
76
+ This abstract method defines the entry point for command execution and must be
77
+ implemented by all concrete command subclasses. It serves as the primary interface
78
+ for running the command's core functionality after argument parsing and validation.
79
+
80
+ Returns
81
+ -------
82
+ None
83
+ This method does not return any value. All command output should be handled
84
+ through the inherited console methods or other side effects.
85
+
86
+ Raises
87
+ ------
88
+ NotImplementedError
89
+ Always raised when called on the base class, indicating that subclasses
90
+ must provide their own implementation of this method.
91
+
92
+ Notes
93
+ -----
94
+ Subclasses should override this method to implement their specific command
95
+ behavior. The method will be called after all command-line arguments have
96
+ been parsed and stored in the _args dictionary.
97
+ """
98
+
99
+ # Raise an error to enforce implementation in subclasses
100
+ raise NotImplementedError("The 'handle' method must be implemented in the subclass.")
101
+
102
+ def argument(self, key: str, default: Any = None) -> Any:
103
+ """
104
+ Retrieve the value of a specific command-line argument by key with optional default fallback.
105
+
106
+ This method provides safe and validated access to command-line arguments stored in the
107
+ internal arguments dictionary. It performs type checking on both the key parameter and
108
+ the internal _args attribute to ensure data integrity before attempting retrieval.
109
+
110
+ The method follows a fail-safe approach by returning a default value when the requested
111
+ argument key is not found, preventing KeyError exceptions during command execution.
112
+
113
+ Parameters
114
+ ----------
115
+ key : str
116
+ The string identifier used to locate the desired argument in the arguments
117
+ dictionary. Must be a non-empty string that corresponds to a valid argument name.
118
+ default : Any, optional
119
+ The fallback value to return if the specified key is not found in the arguments
120
+ dictionary. Defaults to None if not provided.
121
+
122
+ Returns
123
+ -------
124
+ Any
125
+ The value associated with the specified key if it exists in the arguments
126
+ dictionary. If the key is not found, returns the provided default value
127
+ or None if no default was specified.
128
+
129
+ Raises
130
+ ------
131
+ ValueError
132
+ If the provided key parameter is not of string type.
133
+ ValueError
134
+ If the internal _args attribute is not of dictionary type, indicating
135
+ a corrupted or improperly initialized command state.
136
+ """
137
+
138
+ # Validate that the key parameter is a string type
139
+ if not isinstance(key, str):
140
+ raise ValueError(f"Argument key must be a string, got '{type(key).__name__}' instead.")
141
+
142
+ # Ensure the internal args attribute is a valid dictionary
143
+ if not isinstance(self._args, dict):
144
+ raise ValueError(f"Arguments must be a dictionary, got '{type(self._args).__name__}' instead.")
145
+
146
+ # Safely retrieve the argument value with optional default fallback
147
+ return self._args.get(key, default)
@@ -0,0 +1,125 @@
1
+
2
+ from abc import ABC, abstractmethod
3
+ from typing import Any, Dict, List
4
+
5
+ from orionis.console.args.argument import CLIArgument
6
+
7
+ class IBaseCommand(ABC):
8
+ """
9
+ Abstract base contract for console commands in Orionis framework.
10
+
11
+ This abstract base class defines the standardized interface that all console
12
+ commands must implement within the Orionis framework. It provides a consistent
13
+ contract for command execution, argument handling, metadata storage, and console
14
+ output management.
15
+
16
+ The class establishes the foundation for command-line interface functionality,
17
+ ensuring all commands follow a uniform pattern for registration, execution,
18
+ and user interaction while maintaining flexibility for specific command logic
19
+ implementation.
20
+
21
+ Attributes
22
+ ----------
23
+ timestamps : bool, default=True
24
+ Controls whether timestamps are displayed in console output. When enabled,
25
+ all console messages will include timestamp prefixes for better debugging
26
+ and logging capabilities.
27
+ signature : str
28
+ The command signature string that defines the command name and expected
29
+ arguments format. Used for command registration in the console system
30
+ and automatic help text generation. Must follow the framework's signature
31
+ format conventions.
32
+ description : str
33
+ Human-readable description explaining the command's purpose and functionality.
34
+ This text is displayed in help documentation, command listings, and usage
35
+ instructions to assist users in understanding the command's capabilities.
36
+ _args : Dict[str, Any]
37
+ Dictionary containing parsed command-line arguments and options passed to
38
+ the command during execution. Populated automatically by the command parser
39
+ before the handle() method is called, providing structured access to all
40
+ user-provided input parameters.
41
+ arguments : List[CLIArgument]
42
+ List of CLIArgument instances defining the command's accepted arguments
43
+ and options. Used for argument parsing, validation, and help text generation.
44
+
45
+ Methods
46
+ -------
47
+ handle() -> None
48
+ Abstract method that must be implemented by all concrete command subclasses.
49
+ Contains the main execution logic specific to each command type and handles
50
+ argument processing, business logic execution, and output generation.
51
+
52
+ Notes
53
+ -----
54
+ - All concrete implementations must override the handle() method
55
+ - Command signatures should follow framework naming conventions
56
+ - Use self._args dictionary to access parsed command-line arguments
57
+ - Implement proper error handling and validation within command logic
58
+ - Follow single responsibility principle for maintainable command structure
59
+ - Utilize framework's console output methods for consistent user experience
60
+
61
+ See Also
62
+ --------
63
+ abc.ABC : Abstract base class functionality
64
+ typing.Dict : Type hints for argument dictionary structure
65
+ """
66
+
67
+ # Enable timestamps in console output by default
68
+ timestamps: bool = True
69
+
70
+ # Command signature string for registration and help text generation
71
+ signature: str
72
+
73
+ # Human-readable description for documentation and help display
74
+ description: str
75
+
76
+ # Dictionary to store parsed command-line arguments and options
77
+ _args: Dict[str, Any] = {}
78
+
79
+ # List of CLIArgument instances defining command arguments
80
+ arguments: List[CLIArgument] = []
81
+
82
+ @abstractmethod
83
+ def handle(self) -> None:
84
+ """
85
+ Execute the main logic of the console command.
86
+
87
+ This abstract method serves as the primary entry point for command execution
88
+ and must be implemented by all concrete command subclasses. The method contains
89
+ the core business logic specific to each command type and is responsible for
90
+ processing the parsed arguments stored in self.args and producing the desired
91
+ output or side effects.
92
+
93
+ The implementation should access parsed command-line arguments through the
94
+ self.args dictionary and utilize appropriate console output methods for
95
+ user feedback and result presentation. Error handling and resource cleanup
96
+ should also be managed within this method to ensure robust command execution.
97
+
98
+ Returns
99
+ -------
100
+ None
101
+ This method does not return any value. All command output, results,
102
+ error messages, and user feedback should be handled through console
103
+ output methods, file operations, database transactions, or other
104
+ side effects rather than return values.
105
+
106
+ Raises
107
+ ------
108
+ NotImplementedError
109
+ Automatically raised when this method is called on the abstract base
110
+ class without a concrete implementation. All subclasses must override
111
+ this method with their specific command logic to avoid this exception.
112
+
113
+ Notes
114
+ -----
115
+ - Access command arguments and options via the self.args dictionary
116
+ - Use framework's console output methods for consistent user interaction
117
+ - Implement comprehensive error handling and input validation
118
+ - Ensure proper cleanup of resources (files, connections, etc.) if needed
119
+ - Follow the single responsibility principle for maintainable command logic
120
+ - Handle both success and failure scenarios appropriately
121
+ """
122
+
123
+ # Abstract method placeholder - concrete implementations must override this method
124
+ # Each subclass should replace this pass statement with specific command logic
125
+ pass