orionis 0.546.0__tar.gz → 0.547.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 (595) hide show
  1. orionis-0.547.0/MANIFEST.in +20 -0
  2. {orionis-0.546.0/orionis.egg-info → orionis-0.547.0}/PKG-INFO +1 -1
  3. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/base/scheduler_event_listener.py +0 -17
  4. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/schedule_event_listener.py +0 -18
  5. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/app/entities/app.py +3 -2
  6. orionis-0.547.0/orionis/foundation/config/app/enums/ciphers.py +20 -0
  7. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/entities/session.py +2 -2
  8. {orionis-0.546.0 → orionis-0.547.0}/orionis/metadata/framework.py +1 -1
  9. orionis-0.547.0/orionis/services/encrypter/encrypter.py +115 -0
  10. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/dynamic/caster.py +35 -27
  11. orionis-0.547.0/orionis/services/environment/key/key_generator.py +47 -0
  12. {orionis-0.546.0 → orionis-0.547.0/orionis.egg-info}/PKG-INFO +1 -1
  13. {orionis-0.546.0 → orionis-0.547.0}/orionis.egg-info/SOURCES.txt +2 -146
  14. {orionis-0.546.0 → orionis-0.547.0}/orionis.egg-info/top_level.txt +0 -1
  15. {orionis-0.546.0 → orionis-0.547.0}/setup.py +7 -7
  16. orionis-0.546.0/MANIFEST.in +0 -3
  17. orionis-0.546.0/orionis/foundation/config/app/enums/ciphers.py +0 -34
  18. orionis-0.546.0/orionis/services/environment/key/key_generator.py +0 -26
  19. orionis-0.546.0/tests/container/__init__.py +0 -0
  20. orionis-0.546.0/tests/container/context/__init__.py +0 -0
  21. orionis-0.546.0/tests/container/context/test_manager.py +0 -38
  22. orionis-0.546.0/tests/container/context/test_scope.py +0 -32
  23. orionis-0.546.0/tests/container/core/__init__.py +0 -0
  24. orionis-0.546.0/tests/container/core/test_advanced_async.py +0 -234
  25. orionis-0.546.0/tests/container/core/test_async_optimizations.py +0 -268
  26. orionis-0.546.0/tests/container/core/test_container.py +0 -453
  27. orionis-0.546.0/tests/container/core/test_singleton.py +0 -122
  28. orionis-0.546.0/tests/container/core/test_thread_safety.py +0 -90
  29. orionis-0.546.0/tests/container/entities/__init__.py +0 -0
  30. orionis-0.546.0/tests/container/entities/test_binding.py +0 -242
  31. orionis-0.546.0/tests/container/enums/__init__.py +0 -0
  32. orionis-0.546.0/tests/container/enums/test_lifetimes.py +0 -97
  33. orionis-0.546.0/tests/container/facades/__init__.py +0 -0
  34. orionis-0.546.0/tests/container/facades/test_facade.py +0 -78
  35. orionis-0.546.0/tests/container/mocks/__init__.py +0 -0
  36. orionis-0.546.0/tests/container/mocks/mock_advanced_async.py +0 -332
  37. orionis-0.546.0/tests/container/mocks/mock_async_optimizations.py +0 -407
  38. orionis-0.546.0/tests/container/mocks/mock_auto_resolution.py +0 -192
  39. orionis-0.546.0/tests/container/mocks/mock_complex_classes.py +0 -792
  40. orionis-0.546.0/tests/container/mocks/mock_simple_classes.py +0 -98
  41. orionis-0.546.0/tests/container/providers/__init__.py +0 -0
  42. orionis-0.546.0/tests/container/providers/test_providers.py +0 -55
  43. orionis-0.546.0/tests/container/validators/__init__.py +0 -0
  44. orionis-0.546.0/tests/container/validators/test_implements.py +0 -186
  45. orionis-0.546.0/tests/container/validators/test_is_abstract_class.py +0 -147
  46. orionis-0.546.0/tests/container/validators/test_is_callable.py +0 -102
  47. orionis-0.546.0/tests/container/validators/test_is_concrete_class.py +0 -160
  48. orionis-0.546.0/tests/container/validators/test_is_instance.py +0 -150
  49. orionis-0.546.0/tests/container/validators/test_is_not_subclass.py +0 -49
  50. orionis-0.546.0/tests/container/validators/test_is_subclass.py +0 -178
  51. orionis-0.546.0/tests/container/validators/test_is_valid_alias.py +0 -147
  52. orionis-0.546.0/tests/container/validators/test_lifetime.py +0 -106
  53. orionis-0.546.0/tests/example/__init__.py +0 -0
  54. orionis-0.546.0/tests/example/test_example.py +0 -725
  55. orionis-0.546.0/tests/foundation/__init__.py +0 -0
  56. orionis-0.546.0/tests/foundation/config/__init__.py +0 -0
  57. orionis-0.546.0/tests/foundation/config/app/__init__.py +0 -0
  58. orionis-0.546.0/tests/foundation/config/app/test_foundation_config_app.py +0 -262
  59. orionis-0.546.0/tests/foundation/config/auth/__init__.py +0 -0
  60. orionis-0.546.0/tests/foundation/config/auth/test_foundation_config_auth.py +0 -29
  61. orionis-0.546.0/tests/foundation/config/cache/__init__.py +0 -0
  62. orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache.py +0 -143
  63. orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -126
  64. orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -156
  65. orionis-0.546.0/tests/foundation/config/cors/__init__.py +0 -0
  66. orionis-0.546.0/tests/foundation/config/cors/test_foundation_config_cors.py +0 -190
  67. orionis-0.546.0/tests/foundation/config/database/__init__.py +0 -0
  68. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database.py +0 -158
  69. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -203
  70. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -354
  71. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -288
  72. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -257
  73. orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -207
  74. orionis-0.546.0/tests/foundation/config/filesystems/__init__.py +0 -0
  75. orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -160
  76. orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -189
  77. orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -184
  78. orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -143
  79. orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -184
  80. orionis-0.546.0/tests/foundation/config/logging/__init__.py +0 -0
  81. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging.py +0 -112
  82. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -246
  83. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -217
  84. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -220
  85. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -196
  86. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -214
  87. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -178
  88. orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -224
  89. orionis-0.546.0/tests/foundation/config/mail/__init__.py +0 -0
  90. orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail.py +0 -145
  91. orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -97
  92. orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -106
  93. orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -146
  94. orionis-0.546.0/tests/foundation/config/queue/__init__.py +0 -0
  95. orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue.py +0 -88
  96. orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -72
  97. orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -134
  98. orionis-0.546.0/tests/foundation/config/root/__init__.py +0 -0
  99. orionis-0.546.0/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -112
  100. orionis-0.546.0/tests/foundation/config/session/__init__.py +0 -0
  101. orionis-0.546.0/tests/foundation/config/session/test_foundation_config_session.py +0 -213
  102. orionis-0.546.0/tests/foundation/config/startup/__init__.py +0 -0
  103. orionis-0.546.0/tests/foundation/config/startup/test_foundation_config_startup.py +0 -202
  104. orionis-0.546.0/tests/foundation/config/testing/__init__.py +0 -0
  105. orionis-0.546.0/tests/foundation/config/testing/test_foundation_config_testing.py +0 -235
  106. orionis-0.546.0/tests/metadata/__init__.py +0 -0
  107. orionis-0.546.0/tests/metadata/test_metadata_framework.py +0 -140
  108. orionis-0.546.0/tests/metadata/test_metadata_package.py +0 -139
  109. orionis-0.546.0/tests/services/__init__.py +0 -0
  110. orionis-0.546.0/tests/services/asynchrony/__init__.py +0 -0
  111. orionis-0.546.0/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -85
  112. orionis-0.546.0/tests/services/environment/__init__.py +0 -0
  113. orionis-0.546.0/tests/services/environment/test_services_environment.py +0 -226
  114. orionis-0.546.0/tests/services/introspection/__init__.py +0 -0
  115. orionis-0.546.0/tests/services/introspection/dependencies/__init__.py +0 -0
  116. orionis-0.546.0/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
  117. orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_user.py +0 -30
  118. orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -27
  119. orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -41
  120. orionis-0.546.0/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -261
  121. orionis-0.546.0/tests/services/introspection/reflection/__init__.py +0 -0
  122. orionis-0.546.0/tests/services/introspection/reflection/mock/__init__.py +0 -0
  123. orionis-0.546.0/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -1115
  124. orionis-0.546.0/tests/services/introspection/reflection/test_reflection_abstract.py +0 -1011
  125. orionis-0.546.0/tests/services/introspection/reflection/test_reflection_callable.py +0 -206
  126. orionis-0.546.0/tests/services/introspection/reflection/test_reflection_concrete.py +0 -952
  127. orionis-0.546.0/tests/services/introspection/reflection/test_reflection_instance.py +0 -1233
  128. orionis-0.546.0/tests/services/introspection/reflection/test_reflection_module.py +0 -567
  129. orionis-0.546.0/tests/services/introspection/test_reflection.py +0 -462
  130. orionis-0.546.0/tests/services/log/__init__.py +0 -0
  131. orionis-0.546.0/tests/services/log/test_log.py +0 -97
  132. orionis-0.546.0/tests/services/system/__init__.py +0 -0
  133. orionis-0.546.0/tests/services/system/test_services_system_imports.py +0 -204
  134. orionis-0.546.0/tests/services/system/test_services_system_workers.py +0 -131
  135. orionis-0.546.0/tests/support/__init__.py +0 -0
  136. orionis-0.546.0/tests/support/entities/__init__.py +0 -0
  137. orionis-0.546.0/tests/support/entities/mock_dataclass.py +0 -40
  138. orionis-0.546.0/tests/support/entities/test_base.py +0 -64
  139. orionis-0.546.0/tests/support/patterns/__init__.py +0 -0
  140. orionis-0.546.0/tests/support/patterns/singleton/__init__.py +0 -0
  141. orionis-0.546.0/tests/support/patterns/singleton/test_patterns_singleton.py +0 -39
  142. orionis-0.546.0/tests/support/standard/__init__.py +0 -0
  143. orionis-0.546.0/tests/support/standard/test_services_std.py +0 -226
  144. orionis-0.546.0/tests/support/wrapper/__init__.py +0 -0
  145. orionis-0.546.0/tests/support/wrapper/test_services_wrapper_docdict.py +0 -202
  146. orionis-0.546.0/tests/testing/__init__.py +0 -0
  147. orionis-0.546.0/tests/testing/cases/__init__.py +0 -0
  148. orionis-0.546.0/tests/testing/cases/test_testing_asynchronous.py +0 -63
  149. orionis-0.546.0/tests/testing/cases/test_testing_synchronous.py +0 -57
  150. orionis-0.546.0/tests/testing/entities/__init__.py +0 -0
  151. orionis-0.546.0/tests/testing/entities/test_testing_result.py +0 -146
  152. orionis-0.546.0/tests/testing/enums/__init__.py +0 -0
  153. orionis-0.546.0/tests/testing/enums/test_testing_status.py +0 -63
  154. orionis-0.546.0/tests/testing/output/__init__.py +0 -0
  155. orionis-0.546.0/tests/testing/output/test_testing_dumper.py +0 -29
  156. orionis-0.546.0/tests/testing/output/test_testing_printer.py +0 -42
  157. orionis-0.546.0/tests/testing/records/__init__.py +0 -0
  158. orionis-0.546.0/tests/testing/records/test_testing_records.py +0 -171
  159. orionis-0.546.0/tests/testing/test_testing_unit.py +0 -164
  160. orionis-0.546.0/tests/testing/validators/__init__.py +0 -0
  161. orionis-0.546.0/tests/testing/validators/test_testing_validators.py +0 -392
  162. orionis-0.546.0/tests/testing/view/__init__.py +0 -0
  163. orionis-0.546.0/tests/testing/view/test_render.py +0 -30
  164. {orionis-0.546.0 → orionis-0.547.0}/LICENCE +0 -0
  165. {orionis-0.546.0 → orionis-0.547.0}/README.md +0 -0
  166. {orionis-0.546.0 → orionis-0.547.0}/orionis/__init__.py +0 -0
  167. {orionis-0.546.0 → orionis-0.547.0}/orionis/app.py +0 -0
  168. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/__init__.py +0 -0
  169. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/args/__init__.py +0 -0
  170. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/args/argument.py +0 -0
  171. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/base/__init__.py +0 -0
  172. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/base/command.py +0 -0
  173. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/base/scheduler.py +0 -0
  174. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/__init__.py +0 -0
  175. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/cache.py +0 -0
  176. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/help.py +0 -0
  177. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/make_listener.py +0 -0
  178. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/publisher.py +0 -0
  179. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/scheduler_list.py +0 -0
  180. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/scheduler_work.py +0 -0
  181. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/test.py +0 -0
  182. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/version.py +0 -0
  183. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/commands/workflow.py +0 -0
  184. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/__init__.py +0 -0
  185. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/base_command.py +0 -0
  186. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/base_scheduler.py +0 -0
  187. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/cli_request.py +0 -0
  188. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/command.py +0 -0
  189. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/console.py +0 -0
  190. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/dump.py +0 -0
  191. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/event.py +0 -0
  192. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/executor.py +0 -0
  193. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/kernel.py +0 -0
  194. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/progress_bar.py +0 -0
  195. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/reactor.py +0 -0
  196. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/contracts/schedule.py +0 -0
  197. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/core/__init__.py +0 -0
  198. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/core/reactor.py +0 -0
  199. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/dumper/__init__.py +0 -0
  200. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/dumper/dump.py +0 -0
  201. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/dynamic/__init__.py +0 -0
  202. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/dynamic/progress_bar.py +0 -0
  203. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/__init__.py +0 -0
  204. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/all_jobs_removed.py +0 -0
  205. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/command.py +0 -0
  206. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/event.py +0 -0
  207. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/event_job.py +0 -0
  208. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/executor_added.py +0 -0
  209. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/executor_removed.py +0 -0
  210. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_added.py +0 -0
  211. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_error.py +0 -0
  212. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_event_data.py +0 -0
  213. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_executed.py +0 -0
  214. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_max_instances.py +0 -0
  215. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_missed.py +0 -0
  216. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_modified.py +0 -0
  217. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_pause.py +0 -0
  218. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_removed.py +0 -0
  219. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_resume.py +0 -0
  220. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_store_added.py +0 -0
  221. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_store_removed.py +0 -0
  222. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/job_submitted.py +0 -0
  223. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_error.py +0 -0
  224. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_event_data.py +0 -0
  225. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_paused.py +0 -0
  226. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_resumed.py +0 -0
  227. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
  228. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/entities/scheduler_started.py +0 -0
  229. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/enums/__init__.py +0 -0
  230. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/enums/actions.py +0 -0
  231. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/enums/listener.py +0 -0
  232. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/enums/styles.py +0 -0
  233. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/exceptions/__init__.py +0 -0
  234. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/exceptions/cli_exception.py +0 -0
  235. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
  236. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  237. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  238. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/fluent/__init__.py +0 -0
  239. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/fluent/command.py +0 -0
  240. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/fluent/event.py +0 -0
  241. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/kernel.py +0 -0
  242. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/output/__init__.py +0 -0
  243. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/output/console.py +0 -0
  244. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/output/executor.py +0 -0
  245. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/request/__init__.py +0 -0
  246. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/request/cli_request.py +0 -0
  247. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/tasks/__init__.py +0 -0
  248. {orionis-0.546.0 → orionis-0.547.0}/orionis/console/tasks/schedule.py +0 -0
  249. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/__init__.py +0 -0
  250. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/container.py +0 -0
  251. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/context/__init__.py +0 -0
  252. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/context/manager.py +0 -0
  253. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/context/scope.py +0 -0
  254. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/contracts/__init__.py +0 -0
  255. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/contracts/container.py +0 -0
  256. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/contracts/service_provider.py +0 -0
  257. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/entities/__init__.py +0 -0
  258. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/entities/binding.py +0 -0
  259. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/enums/__init__.py +0 -0
  260. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/enums/lifetimes.py +0 -0
  261. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/exceptions/__init__.py +0 -0
  262. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/exceptions/attribute.py +0 -0
  263. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/exceptions/exception.py +0 -0
  264. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/exceptions/type.py +0 -0
  265. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/exceptions/value.py +0 -0
  266. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/facades/__init__.py +0 -0
  267. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/facades/facade.py +0 -0
  268. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/providers/__init__.py +0 -0
  269. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/providers/service_provider.py +0 -0
  270. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/__init__.py +0 -0
  271. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/implements.py +0 -0
  272. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_abstract_class.py +0 -0
  273. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_callable.py +0 -0
  274. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_concrete_class.py +0 -0
  275. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_instance.py +0 -0
  276. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_not_subclass.py +0 -0
  277. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_subclass.py +0 -0
  278. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/is_valid_alias.py +0 -0
  279. {orionis-0.546.0 → orionis-0.547.0}/orionis/container/validators/lifetime.py +0 -0
  280. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/__init__.py +0 -0
  281. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/base/__init__.py +0 -0
  282. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/base/handler.py +0 -0
  283. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/catch.py +0 -0
  284. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/contracts/__init__.py +0 -0
  285. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/contracts/catch.py +0 -0
  286. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/contracts/handler.py +0 -0
  287. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/entities/__init__.py +0 -0
  288. {orionis-0.546.0 → orionis-0.547.0}/orionis/failure/entities/throwable.py +0 -0
  289. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/__init__.py +0 -0
  290. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/application.py +0 -0
  291. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/__init__.py +0 -0
  292. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/app/__init__.py +0 -0
  293. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  294. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  295. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  296. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/auth/__init__.py +0 -0
  297. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  298. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  299. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/__init__.py +0 -0
  300. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  301. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  302. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  303. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  304. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  305. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  306. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cors/__init__.py +0 -0
  307. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  308. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  309. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/__init__.py +0 -0
  310. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  311. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  312. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/database.py +0 -0
  313. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  314. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  315. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  316. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  317. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  318. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  319. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  320. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  321. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  322. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  323. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  324. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  325. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  326. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  327. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  328. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  329. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  330. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  331. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  332. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  333. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  334. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  335. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  336. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/__init__.py +0 -0
  337. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  338. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  339. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  340. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  341. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  342. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  343. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  344. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  345. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  346. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  347. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  348. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  349. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  350. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  351. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/__init__.py +0 -0
  352. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  353. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  354. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  355. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  356. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  357. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/__init__.py +0 -0
  358. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  359. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  360. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  361. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  362. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  363. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  364. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/roots/__init__.py +0 -0
  365. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/roots/paths.py +0 -0
  366. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/__init__.py +0 -0
  367. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  368. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  369. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  370. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  371. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  372. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/startup.py +0 -0
  373. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/__init__.py +0 -0
  374. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  375. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  376. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  377. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  378. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  379. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  380. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/contracts/__init__.py +0 -0
  381. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/contracts/application.py +0 -0
  382. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/contracts/config.py +0 -0
  383. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/exceptions/__init__.py +0 -0
  384. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/exceptions/integrity.py +0 -0
  385. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/exceptions/runtime.py +0 -0
  386. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/exceptions/type.py +0 -0
  387. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/exceptions/value.py +0 -0
  388. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/__init__.py +0 -0
  389. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/catch_provider.py +0 -0
  390. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/cli_request_provider.py +0 -0
  391. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/console_provider.py +0 -0
  392. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/directory_provider.py +0 -0
  393. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  394. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/executor_provider.py +0 -0
  395. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
  396. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/logger_provider.py +0 -0
  397. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
  398. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  399. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/reactor_provider.py +0 -0
  400. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
  401. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/testing_provider.py +0 -0
  402. {orionis-0.546.0 → orionis-0.547.0}/orionis/foundation/providers/workers_provider.py +0 -0
  403. {orionis-0.546.0 → orionis-0.547.0}/orionis/metadata/__init__.py +0 -0
  404. {orionis-0.546.0 → orionis-0.547.0}/orionis/metadata/package.py +0 -0
  405. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/__init__.py +0 -0
  406. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/__init__.py +0 -0
  407. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  408. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  409. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/coroutines.py +0 -0
  410. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  411. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  412. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/__init__.py +0 -0
  413. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/contracts/__init__.py +0 -0
  414. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/contracts/caster.py +0 -0
  415. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/contracts/env.py +0 -0
  416. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/core/__init__.py +0 -0
  417. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/core/dot_env.py +0 -0
  418. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  419. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/enums/__init__.py +0 -0
  420. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/enums/value_type.py +0 -0
  421. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/env.py +0 -0
  422. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  423. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/exceptions/exception.py +0 -0
  424. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/exceptions/value.py +0 -0
  425. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/helpers/__init__.py +0 -0
  426. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/helpers/functions.py +0 -0
  427. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/key/__init__.py +0 -0
  428. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/validators/__init__.py +0 -0
  429. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/validators/key_name.py +0 -0
  430. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/environment/validators/types.py +0 -0
  431. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/file/__init__.py +0 -0
  432. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/file/contracts/__init__.py +0 -0
  433. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/file/contracts/directory.py +0 -0
  434. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/file/directory.py +0 -0
  435. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/inspirational/__init__.py +0 -0
  436. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
  437. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
  438. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/inspirational/inspire.py +0 -0
  439. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/inspirational/quotes.py +0 -0
  440. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/__init__.py +0 -0
  441. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/abstract/__init__.py +0 -0
  442. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
  443. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  444. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  445. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/callables/__init__.py +0 -0
  446. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
  447. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  448. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/callables/reflection.py +0 -0
  449. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/concretes/__init__.py +0 -0
  450. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
  451. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
  452. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  453. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dataclass/__init__.py +0 -0
  454. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dataclass/attributes.py +0 -0
  455. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  456. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  457. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  458. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  459. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
  460. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
  461. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  462. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  463. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  464. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/exceptions/type.py +0 -0
  465. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/exceptions/value.py +0 -0
  466. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/instances/__init__.py +0 -0
  467. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
  468. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  469. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/instances/reflection.py +0 -0
  470. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/modules/__init__.py +0 -0
  471. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
  472. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  473. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/modules/reflection.py +0 -0
  474. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/objects/__init__.py +0 -0
  475. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/objects/types.py +0 -0
  476. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/introspection/reflection.py +0 -0
  477. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/__init__.py +0 -0
  478. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/contracts/__init__.py +0 -0
  479. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/contracts/log_service.py +0 -0
  480. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/exceptions/__init__.py +0 -0
  481. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/exceptions/runtime.py +0 -0
  482. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/handlers/__init__.py +0 -0
  483. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/handlers/filename.py +0 -0
  484. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  485. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  486. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/log/log_service.py +0 -0
  487. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/__init__.py +0 -0
  488. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/contracts/__init__.py +0 -0
  489. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/contracts/imports.py +0 -0
  490. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/contracts/workers.py +0 -0
  491. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/imports.py +0 -0
  492. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/runtime/__init__.py +0 -0
  493. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/runtime/imports.py +0 -0
  494. {orionis-0.546.0 → orionis-0.547.0}/orionis/services/system/workers.py +0 -0
  495. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/__init__.py +0 -0
  496. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/entities/__init__.py +0 -0
  497. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/entities/base.py +0 -0
  498. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/__init__.py +0 -0
  499. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/application.py +0 -0
  500. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/application.pyi +0 -0
  501. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/console.py +0 -0
  502. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/console.pyi +0 -0
  503. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/directory.py +0 -0
  504. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/directory.pyi +0 -0
  505. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/dumper.py +0 -0
  506. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/dumper.pyi +0 -0
  507. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/executor.py +0 -0
  508. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/executor.pyi +0 -0
  509. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/inspire.py +0 -0
  510. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/inspire.pyi +0 -0
  511. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/logger.py +0 -0
  512. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/logger.pyi +0 -0
  513. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/performance_counter.py +0 -0
  514. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/performance_counter.pyi +0 -0
  515. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/progress_bar.py +0 -0
  516. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/progress_bar.pyi +0 -0
  517. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/reactor.py +0 -0
  518. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/reactor.pyi +0 -0
  519. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/testing.py +0 -0
  520. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/testing.pyi +0 -0
  521. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/workers.py +0 -0
  522. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/facades/workers.pyi +0 -0
  523. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/__init__.py +0 -0
  524. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
  525. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
  526. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  527. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  528. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/formatter/serializer.py +0 -0
  529. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/patterns/__init__.py +0 -0
  530. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  531. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/patterns/singleton/meta.py +0 -0
  532. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/performance/__init__.py +0 -0
  533. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/performance/contracts/__init__.py +0 -0
  534. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/performance/contracts/counter.py +0 -0
  535. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/performance/counter.py +0 -0
  536. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/__init__.py +0 -0
  537. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/contracts/__init__.py +0 -0
  538. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/contracts/std.py +0 -0
  539. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  540. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/exceptions/value.py +0 -0
  541. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/standard/std.py +0 -0
  542. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/wrapper/__init__.py +0 -0
  543. {orionis-0.546.0 → orionis-0.547.0}/orionis/support/wrapper/dot_dict.py +0 -0
  544. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/__init__.py +0 -0
  545. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/cases/__init__.py +0 -0
  546. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/cases/asynchronous.py +0 -0
  547. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/cases/synchronous.py +0 -0
  548. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/__init__.py +0 -0
  549. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/dumper.py +0 -0
  550. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/kernel.py +0 -0
  551. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/logs.py +0 -0
  552. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/printer.py +0 -0
  553. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/render.py +0 -0
  554. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/test_result.py +0 -0
  555. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/contracts/unit_test.py +0 -0
  556. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/core/__init__.py +0 -0
  557. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/core/unit_test.py +0 -0
  558. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/entities/__init__.py +0 -0
  559. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/entities/result.py +0 -0
  560. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/enums/__init__.py +0 -0
  561. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/enums/status.py +0 -0
  562. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/__init__.py +0 -0
  563. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/config.py +0 -0
  564. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/failure.py +0 -0
  565. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/persistence.py +0 -0
  566. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/runtime.py +0 -0
  567. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/exceptions/value.py +0 -0
  568. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/kernel.py +0 -0
  569. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/output/__init__.py +0 -0
  570. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/output/dumper.py +0 -0
  571. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/output/printer.py +0 -0
  572. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/records/__init__.py +0 -0
  573. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/records/logs.py +0 -0
  574. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/__init__.py +0 -0
  575. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/base_path.py +0 -0
  576. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/execution_mode.py +0 -0
  577. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/fail_fast.py +0 -0
  578. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/folder_path.py +0 -0
  579. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/module_name.py +0 -0
  580. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/name_pattern.py +0 -0
  581. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/pattern.py +0 -0
  582. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/persistent.py +0 -0
  583. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/persistent_driver.py +0 -0
  584. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/print_result.py +0 -0
  585. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/tags.py +0 -0
  586. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/throw_exception.py +0 -0
  587. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/verbosity.py +0 -0
  588. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/web_report.py +0 -0
  589. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/validators/workers.py +0 -0
  590. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/view/__init__.py +0 -0
  591. {orionis-0.546.0 → orionis-0.547.0}/orionis/test/view/render.py +0 -0
  592. {orionis-0.546.0 → orionis-0.547.0}/orionis.egg-info/dependency_links.txt +0 -0
  593. {orionis-0.546.0 → orionis-0.547.0}/orionis.egg-info/requires.txt +0 -0
  594. {orionis-0.546.0 → orionis-0.547.0}/orionis.egg-info/zip-safe +0 -0
  595. {orionis-0.546.0 → orionis-0.547.0}/setup.cfg +0 -0
@@ -0,0 +1,20 @@
1
+ include README.md
2
+ include LICENSE
3
+
4
+ recursive-include orionis *.py *.html
5
+
6
+ exclude app/*
7
+ exclude bootstrap/*
8
+ exclude config/*
9
+ exclude database/*
10
+ exclude routes/*
11
+ exclude storage/*
12
+ exclude tests/*
13
+
14
+ recursive-exclude app *
15
+ recursive-exclude bootstrap *
16
+ recursive-exclude config *
17
+ recursive-exclude database *
18
+ recursive-exclude routes *
19
+ recursive-exclude storage *
20
+ recursive-exclude tests *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.546.0
3
+ Version: 0.547.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
@@ -44,23 +44,6 @@ class BaseScheduleEventListener(IScheduleEventListener):
44
44
  """
45
45
  pass # Placeholder for post-job execution logic
46
46
 
47
- async def onSuccess(self, event: EventJob, schedule):
48
- """
49
- Called when a job is successfully executed.
50
-
51
- Parameters
52
- ----------
53
- event : EventJob
54
- The successful job execution event containing details about the job.
55
- schedule : ISchedule
56
- The associated schedule instance managing the job.
57
-
58
- Returns
59
- -------
60
- None
61
- """
62
- pass # Placeholder for logic to handle successful job execution
63
-
64
47
  async def onFailure(self, event: EventJob, schedule):
65
48
  """
66
49
  Called when a job execution fails.
@@ -43,24 +43,6 @@ class IScheduleEventListener(ABC):
43
43
  """
44
44
  pass
45
45
 
46
- @abstractmethod
47
- async def onSuccess(self, event: EventJob, schedule):
48
- """
49
- Called when a job is successfully executed.
50
-
51
- Parameters
52
- ----------
53
- event : EventJob
54
- The successful job execution event containing details about the job.
55
- schedule : ISchedule
56
- The associated schedule instance managing the job.
57
-
58
- Returns
59
- -------
60
- None
61
- """
62
- pass
63
-
64
46
  @abstractmethod
65
47
  async def onFailure(self, event: EventJob, schedule):
66
48
  """
@@ -237,8 +237,9 @@ class App(BaseEntity):
237
237
  # Validate `key` attribute
238
238
  if self.key is None:
239
239
  self.key = SecureKeyGenerator.generate()
240
- if not isinstance(self.key, str):
241
- raise OrionisIntegrityException("The 'key' attribute must be a string.")
240
+ Env.set('APP_KEY', self.key)
241
+ if not isinstance(self.key, (bytes, str)) or not self.key.strip():
242
+ raise OrionisIntegrityException("The 'key' attribute must be a non-empty string.")
242
243
 
243
244
  # Validate `maintenance` attribute
244
245
  if not isinstance(self.maintenance, str) or not self.name.strip() or not self.maintenance.startswith('/'):
@@ -0,0 +1,20 @@
1
+ from enum import Enum
2
+
3
+ class Cipher(Enum):
4
+ """
5
+ Enumeration of supported AES cipher modes.
6
+
7
+ This enum defines various Advanced Encryption Standard (AES) cipher modes and key sizes
8
+ commonly used for encryption and decryption operations.
9
+
10
+ Members:
11
+ - AES_128_CBC: AES with a 128-bit key in Cipher Block Chaining (CBC) mode.
12
+ - AES_256_CBC: AES with a 256-bit key in Cipher Block Chaining (CBC) mode.
13
+ - AES_128_GCM: AES with a 128-bit key in Galois/Counter Mode (GCM).
14
+ - AES_256_GCM: AES with a 256-bit key in Galois/Counter Mode (GCM).
15
+ """
16
+
17
+ AES_128_CBC = "AES-128-CBC"
18
+ AES_256_CBC = "AES-256-CBC"
19
+ AES_128_GCM = "AES-128-GCM"
20
+ AES_256_GCM = "AES-256-GCM"
@@ -94,8 +94,8 @@ class Session(BaseEntity):
94
94
  # Validate secret_key
95
95
  if self.secret_key is None:
96
96
  self.secret_key = SecretKey.random()
97
- if not isinstance(self.secret_key, str) or not self.secret_key.strip():
98
- raise OrionisIntegrityException("Session secret_key must be a non-empty string")
97
+ if not isinstance(self.secret_key, (bytes, str)) or not self.secret_key.strip():
98
+ raise OrionisIntegrityException("secret_key must be a non-empty string")
99
99
 
100
100
  # Validate session_cookie
101
101
  if not isinstance(self.session_cookie, str) or not self.session_cookie.strip():
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.546.0"
8
+ VERSION = "0.547.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -0,0 +1,115 @@
1
+ import base64
2
+ import json
3
+ import os
4
+ from typing import Optional
5
+ from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
6
+ from cryptography.hazmat.backends import default_backend
7
+ from cryptography.hazmat.primitives.ciphers.aead import AESGCM
8
+
9
+
10
+ class Encrypter:
11
+
12
+ SUPPORTED_CIPHERS = ["AES-128-CBC", "AES-256-CBC", "AES-128-GCM", "AES-256-GCM"]
13
+
14
+ def __init__(self, app_key: str, cipher: str = "AES-256-CBC"):
15
+ # Decodificar APP_KEY de Laravel
16
+ if app_key.startswith("base64:"):
17
+ key_bytes = base64.b64decode(app_key[7:])
18
+ else:
19
+ key_bytes = app_key.encode()
20
+
21
+ self.key = key_bytes
22
+ self.cipher = cipher
23
+
24
+ # Validar cipher
25
+ if cipher not in self.SUPPORTED_CIPHERS:
26
+ raise ValueError(f"Cipher '{cipher}' no soportado. Usa uno de: {self.SUPPORTED_CIPHERS}")
27
+
28
+ # Validar longitud de clave según el cipher
29
+ key_len = len(self.key)
30
+ if cipher.startswith("AES-128") and key_len != 16:
31
+ raise ValueError("La clave debe ser de 16 bytes para AES-128")
32
+ if cipher.startswith("AES-256") and key_len != 32:
33
+ raise ValueError("La clave debe ser de 32 bytes para AES-256")
34
+
35
+ def encrypt(self, plaintext: str) -> str:
36
+ data = plaintext.encode()
37
+
38
+ if "GCM" in self.cipher:
39
+ return self._encrypt_gcm(data)
40
+ else:
41
+ return self._encrypt_cbc(data)
42
+
43
+ def decrypt(self, payload: str) -> str:
44
+ # Decodificar base64 -> JSON
45
+ decoded = base64.b64decode(payload).decode()
46
+ data = json.loads(decoded)
47
+
48
+ cipher = data.get("cipher")
49
+ iv = base64.b64decode(data["iv"])
50
+ value = base64.b64decode(data["value"])
51
+ tag = base64.b64decode(data["tag"]) if data.get("tag") else None
52
+
53
+ if cipher != self.cipher:
54
+ raise ValueError(f"El cipher del payload '{cipher}' no coincide con el configurado '{self.cipher}'")
55
+
56
+ if "GCM" in cipher:
57
+ return self._decrypt_gcm(value, iv, tag).decode()
58
+ else:
59
+ return self._decrypt_cbc(value, iv).decode()
60
+
61
+ # -------------------
62
+ # Métodos privados CBC
63
+ # -------------------
64
+ def _encrypt_cbc(self, data: bytes) -> str:
65
+ iv = os.urandom(16)
66
+ cipher = Cipher(algorithms.AES(self.key), modes.CBC(iv), backend=default_backend())
67
+ encryptor = cipher.encryptor()
68
+
69
+ # PKCS7 padding
70
+ pad_len = 16 - (len(data) % 16)
71
+ data += bytes([pad_len]) * pad_len
72
+
73
+ ct = encryptor.update(data) + encryptor.finalize()
74
+
75
+ payload = {
76
+ "iv": base64.b64encode(iv).decode(),
77
+ "value": base64.b64encode(ct).decode(),
78
+ "tag": None,
79
+ "cipher": self.cipher,
80
+ }
81
+
82
+ return base64.b64encode(json.dumps(payload).encode()).decode()
83
+
84
+ def _decrypt_cbc(self, ct: bytes, iv: bytes) -> bytes:
85
+ cipher = Cipher(algorithms.AES(self.key), modes.CBC(iv), backend=default_backend())
86
+ decryptor = cipher.decryptor()
87
+ data = decryptor.update(ct) + decryptor.finalize()
88
+
89
+ # Unpad PKCS7
90
+ pad_len = data[-1]
91
+ return data[:-pad_len]
92
+
93
+ # -------------------
94
+ # Métodos privados GCM
95
+ # -------------------
96
+ def _encrypt_gcm(self, data: bytes) -> str:
97
+ iv = os.urandom(12)
98
+ aesgcm = AESGCM(self.key)
99
+ ct = aesgcm.encrypt(iv, data, None)
100
+
101
+ # separar ciphertext y tag (últimos 16 bytes)
102
+ value, tag = ct[:-16], ct[-16:]
103
+
104
+ payload = {
105
+ "iv": base64.b64encode(iv).decode(),
106
+ "value": base64.b64encode(value).decode(),
107
+ "tag": base64.b64encode(tag).decode(),
108
+ "cipher": self.cipher,
109
+ }
110
+
111
+ return base64.b64encode(json.dumps(payload).encode()).decode()
112
+
113
+ def _decrypt_gcm(self, value: bytes, iv: bytes, tag: Optional[bytes]) -> bytes:
114
+ aesgcm = AESGCM(self.key)
115
+ return aesgcm.decrypt(iv, value + tag, None)
@@ -255,64 +255,72 @@ class EnvironmentCaster(IEnvironmentCaster):
255
255
  """
256
256
  Convert the internal value to a Base64 encoded string with the type hint prefix.
257
257
 
258
+ - If the value is already valid base64, leave it as-is.
259
+ - Otherwise, encode it to base64.
260
+
258
261
  Returns
259
262
  -------
260
263
  str
261
- A string in the format "<type_hint>:<base64_value>", where <base64_value> is the Base64
262
- encoded representation of the internal value.
263
-
264
- Raises
265
- ------
266
- OrionisEnvironmentValueError
267
- If the internal value is not a string or bytes.
264
+ A string in the format "<type_hint>:<base64_value>".
268
265
  """
269
-
270
- # Import the base64 module for encoding
271
266
  import base64
272
267
 
273
- # Ensure the internal value is a string or bytes before encoding
274
268
  if not isinstance(self.__value_raw, (str, bytes)):
275
269
  raise OrionisEnvironmentValueError(
276
270
  f"Value must be a string or bytes to convert to Base64, got {type(self.__value_raw).__name__} instead."
277
271
  )
278
272
 
279
- # Encode the value in Base64
280
- encoded_value = base64.b64encode(str(self.__value_raw).encode()).decode()
273
+ # Normalizar a str
274
+ if isinstance(self.__value_raw, bytes):
275
+ candidate = self.__value_raw.decode("utf-8", errors="ignore")
276
+ else:
277
+ candidate = self.__value_raw
278
+
279
+ try:
280
+ # Validar si ya es base64 válido
281
+ base64.b64decode(candidate, validate=True)
282
+ encoded_value = candidate
283
+ except Exception:
284
+ # No era base64, entonces convertirlo
285
+ raw_bytes = (
286
+ self.__value_raw.encode() if isinstance(self.__value_raw, str) else self.__value_raw
287
+ )
288
+ encoded_value = base64.b64encode(raw_bytes).decode("utf-8")
281
289
 
282
- # Return the formatted string with type hint and Base64 encoded value
283
290
  return f"{self.__type_hint}:{encoded_value}"
284
291
 
285
- def __parseBase64(self) -> str:
292
+ def __parseBase64(self) -> bytes:
286
293
  """
287
294
  Decode the internal raw value from Base64 encoding.
288
295
 
289
- Decodes the Base64-encoded string stored in the internal raw value and returns the decoded result as a string.
290
- If decoding fails, raises an OrionisEnvironmentValueException.
291
-
292
296
  Returns
293
297
  -------
294
- str
295
- The decoded string from the Base64-encoded internal value.
298
+ bytes
299
+ The decoded raw bytes from the Base64-encoded internal value.
296
300
 
297
301
  Raises
298
302
  ------
299
303
  OrionisEnvironmentValueException
300
304
  If the internal value cannot be decoded from Base64.
301
305
  """
302
-
303
- # Import the base64 module for decoding
304
306
  import base64
305
307
 
306
308
  try:
309
+ raw_value = self.__value_raw
310
+ if isinstance(raw_value, bytes):
311
+ raw_value = raw_value.decode("utf-8", errors="ignore")
307
312
 
308
- # Decode the Base64 encoded value and return as string
309
- decoded_value = base64.b64decode(self.__value_raw).decode()
310
- return decoded_value
313
+ decoded = base64.b64decode(raw_value, validate=True)
311
314
 
312
- except Exception as e:
315
+ try:
316
+ return decoded.decode("utf-8")
317
+ except UnicodeDecodeError:
318
+ return decoded
313
319
 
314
- # Raise a custom exception if decoding fails
315
- raise OrionisEnvironmentValueException(f"Cannot decode Base64 value '{self.__value_raw}': {str(e)}")
320
+ except Exception as e:
321
+ raise OrionisEnvironmentValueException(
322
+ f"Cannot decode Base64 value '{self.__value_raw}': {str(e)}"
323
+ )
316
324
 
317
325
  def __parsePath(self):
318
326
  """
@@ -0,0 +1,47 @@
1
+ import os
2
+ import base64
3
+
4
+ class SecureKeyGenerator:
5
+ """
6
+ Utility class for generating Laravel-compatible APP_KEY values.
7
+
8
+ Laravel expects keys in Base64 format, prefixed with 'base64:'.
9
+ Supported ciphers: AES-128-CBC, AES-256-CBC, AES-128-GCM, AES-256-GCM.
10
+ """
11
+
12
+ KEY_SIZES = {
13
+ "AES-128-CBC": 16,
14
+ "AES-256-CBC": 32,
15
+ "AES-128-GCM": 16,
16
+ "AES-256-GCM": 32,
17
+ }
18
+
19
+ @staticmethod
20
+ def generate(cipher: str = "AES-256-CBC") -> str:
21
+ """
22
+ Generate a Laravel-compatible APP_KEY.
23
+
24
+ Parameters
25
+ ----------
26
+ cipher : str
27
+ The cipher algorithm. Options: AES-128-CBC, AES-256-CBC,
28
+ AES-128-GCM, AES-256-GCM. Default is AES-256-CBC.
29
+
30
+ Returns
31
+ -------
32
+ str
33
+ A string formatted like Laravel's APP_KEY (e.g., base64:xxxx).
34
+ """
35
+ if cipher not in SecureKeyGenerator.KEY_SIZES:
36
+ raise ValueError(
37
+ f"Cipher '{cipher}' no soportado. "
38
+ f"Opciones: {', '.join(SecureKeyGenerator.KEY_SIZES.keys())}"
39
+ )
40
+
41
+ key_length = SecureKeyGenerator.KEY_SIZES[cipher]
42
+
43
+ # Generate secure random bytes
44
+ key = os.urandom(key_length)
45
+
46
+ # Encode in Base64 and prepend 'base64:'
47
+ return "base64:" + base64.b64encode(key).decode("utf-8")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.546.0
3
+ Version: 0.547.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
@@ -260,6 +260,7 @@ orionis/services/asynchrony/contracts/__init__.py
260
260
  orionis/services/asynchrony/contracts/coroutines.py
261
261
  orionis/services/asynchrony/exceptions/__init__.py
262
262
  orionis/services/asynchrony/exceptions/exception.py
263
+ orionis/services/encrypter/encrypter.py
263
264
  orionis/services/environment/__init__.py
264
265
  orionis/services/environment/env.py
265
266
  orionis/services/environment/contracts/__init__.py
@@ -441,149 +442,4 @@ orionis/test/validators/verbosity.py
441
442
  orionis/test/validators/web_report.py
442
443
  orionis/test/validators/workers.py
443
444
  orionis/test/view/__init__.py
444
- orionis/test/view/render.py
445
- tests/container/__init__.py
446
- tests/container/context/__init__.py
447
- tests/container/context/test_manager.py
448
- tests/container/context/test_scope.py
449
- tests/container/core/__init__.py
450
- tests/container/core/test_advanced_async.py
451
- tests/container/core/test_async_optimizations.py
452
- tests/container/core/test_container.py
453
- tests/container/core/test_singleton.py
454
- tests/container/core/test_thread_safety.py
455
- tests/container/entities/__init__.py
456
- tests/container/entities/test_binding.py
457
- tests/container/enums/__init__.py
458
- tests/container/enums/test_lifetimes.py
459
- tests/container/facades/__init__.py
460
- tests/container/facades/test_facade.py
461
- tests/container/mocks/__init__.py
462
- tests/container/mocks/mock_advanced_async.py
463
- tests/container/mocks/mock_async_optimizations.py
464
- tests/container/mocks/mock_auto_resolution.py
465
- tests/container/mocks/mock_complex_classes.py
466
- tests/container/mocks/mock_simple_classes.py
467
- tests/container/providers/__init__.py
468
- tests/container/providers/test_providers.py
469
- tests/container/validators/__init__.py
470
- tests/container/validators/test_implements.py
471
- tests/container/validators/test_is_abstract_class.py
472
- tests/container/validators/test_is_callable.py
473
- tests/container/validators/test_is_concrete_class.py
474
- tests/container/validators/test_is_instance.py
475
- tests/container/validators/test_is_not_subclass.py
476
- tests/container/validators/test_is_subclass.py
477
- tests/container/validators/test_is_valid_alias.py
478
- tests/container/validators/test_lifetime.py
479
- tests/example/__init__.py
480
- tests/example/test_example.py
481
- tests/foundation/__init__.py
482
- tests/foundation/config/__init__.py
483
- tests/foundation/config/app/__init__.py
484
- tests/foundation/config/app/test_foundation_config_app.py
485
- tests/foundation/config/auth/__init__.py
486
- tests/foundation/config/auth/test_foundation_config_auth.py
487
- tests/foundation/config/cache/__init__.py
488
- tests/foundation/config/cache/test_foundation_config_cache.py
489
- tests/foundation/config/cache/test_foundation_config_cache_file.py
490
- tests/foundation/config/cache/test_foundation_config_cache_stores.py
491
- tests/foundation/config/cors/__init__.py
492
- tests/foundation/config/cors/test_foundation_config_cors.py
493
- tests/foundation/config/database/__init__.py
494
- tests/foundation/config/database/test_foundation_config_database.py
495
- tests/foundation/config/database/test_foundation_config_database_connections.py
496
- tests/foundation/config/database/test_foundation_config_database_mysql.py
497
- tests/foundation/config/database/test_foundation_config_database_oracle.py
498
- tests/foundation/config/database/test_foundation_config_database_pgsql.py
499
- tests/foundation/config/database/test_foundation_config_database_sqlite.py
500
- tests/foundation/config/filesystems/__init__.py
501
- tests/foundation/config/filesystems/test_foundation_config_filesystems.py
502
- tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py
503
- tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py
504
- tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py
505
- tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py
506
- tests/foundation/config/logging/__init__.py
507
- tests/foundation/config/logging/test_foundation_config_logging.py
508
- tests/foundation/config/logging/test_foundation_config_logging_channels.py
509
- tests/foundation/config/logging/test_foundation_config_logging_chunked.py
510
- tests/foundation/config/logging/test_foundation_config_logging_daily.py
511
- tests/foundation/config/logging/test_foundation_config_logging_hourly.py
512
- tests/foundation/config/logging/test_foundation_config_logging_monthly.py
513
- tests/foundation/config/logging/test_foundation_config_logging_stack.py
514
- tests/foundation/config/logging/test_foundation_config_logging_weekly.py
515
- tests/foundation/config/mail/__init__.py
516
- tests/foundation/config/mail/test_foundation_config_mail.py
517
- tests/foundation/config/mail/test_foundation_config_mail_file.py
518
- tests/foundation/config/mail/test_foundation_config_mail_mailers.py
519
- tests/foundation/config/mail/test_foundation_config_mail_smtp.py
520
- tests/foundation/config/queue/__init__.py
521
- tests/foundation/config/queue/test_foundation_config_queue.py
522
- tests/foundation/config/queue/test_foundation_config_queue_brokers.py
523
- tests/foundation/config/queue/test_foundation_config_queue_database.py
524
- tests/foundation/config/root/__init__.py
525
- tests/foundation/config/root/test_foundation_config_root_paths.py
526
- tests/foundation/config/session/__init__.py
527
- tests/foundation/config/session/test_foundation_config_session.py
528
- tests/foundation/config/startup/__init__.py
529
- tests/foundation/config/startup/test_foundation_config_startup.py
530
- tests/foundation/config/testing/__init__.py
531
- tests/foundation/config/testing/test_foundation_config_testing.py
532
- tests/metadata/__init__.py
533
- tests/metadata/test_metadata_framework.py
534
- tests/metadata/test_metadata_package.py
535
- tests/services/__init__.py
536
- tests/services/asynchrony/__init__.py
537
- tests/services/asynchrony/test_services_asynchrony_coroutine.py
538
- tests/services/environment/__init__.py
539
- tests/services/environment/test_services_environment.py
540
- tests/services/introspection/__init__.py
541
- tests/services/introspection/test_reflection.py
542
- tests/services/introspection/dependencies/__init__.py
543
- tests/services/introspection/dependencies/test_reflect_dependencies.py
544
- tests/services/introspection/dependencies/mocks/__init__.py
545
- tests/services/introspection/dependencies/mocks/mock_user.py
546
- tests/services/introspection/dependencies/mocks/mock_user_controller.py
547
- tests/services/introspection/dependencies/mocks/mock_users_permissions.py
548
- tests/services/introspection/reflection/__init__.py
549
- tests/services/introspection/reflection/test_reflection_abstract.py
550
- tests/services/introspection/reflection/test_reflection_callable.py
551
- tests/services/introspection/reflection/test_reflection_concrete.py
552
- tests/services/introspection/reflection/test_reflection_instance.py
553
- tests/services/introspection/reflection/test_reflection_module.py
554
- tests/services/introspection/reflection/mock/__init__.py
555
- tests/services/introspection/reflection/mock/fake_reflect_instance.py
556
- tests/services/log/__init__.py
557
- tests/services/log/test_log.py
558
- tests/services/system/__init__.py
559
- tests/services/system/test_services_system_imports.py
560
- tests/services/system/test_services_system_workers.py
561
- tests/support/__init__.py
562
- tests/support/entities/__init__.py
563
- tests/support/entities/mock_dataclass.py
564
- tests/support/entities/test_base.py
565
- tests/support/patterns/__init__.py
566
- tests/support/patterns/singleton/__init__.py
567
- tests/support/patterns/singleton/test_patterns_singleton.py
568
- tests/support/standard/__init__.py
569
- tests/support/standard/test_services_std.py
570
- tests/support/wrapper/__init__.py
571
- tests/support/wrapper/test_services_wrapper_docdict.py
572
- tests/testing/__init__.py
573
- tests/testing/test_testing_unit.py
574
- tests/testing/cases/__init__.py
575
- tests/testing/cases/test_testing_asynchronous.py
576
- tests/testing/cases/test_testing_synchronous.py
577
- tests/testing/entities/__init__.py
578
- tests/testing/entities/test_testing_result.py
579
- tests/testing/enums/__init__.py
580
- tests/testing/enums/test_testing_status.py
581
- tests/testing/output/__init__.py
582
- tests/testing/output/test_testing_dumper.py
583
- tests/testing/output/test_testing_printer.py
584
- tests/testing/records/__init__.py
585
- tests/testing/records/test_testing_records.py
586
- tests/testing/validators/__init__.py
587
- tests/testing/validators/test_testing_validators.py
588
- tests/testing/view/__init__.py
589
- tests/testing/view/test_render.py
445
+ orionis/test/view/render.py
@@ -54,13 +54,13 @@ setup(
54
54
  license='MIT',
55
55
  packages=find_packages(
56
56
  exclude=[
57
- 'app',
58
- 'bootstrap',
59
- 'config',
60
- 'database'
61
- 'routes',
62
- 'storage',
63
- 'tests'
57
+ 'app', 'app.*',
58
+ 'bootstrap', 'bootstrap.*',
59
+ 'config', 'config.*',
60
+ 'database', 'database.*',
61
+ 'routes', 'routes.*',
62
+ 'storage', 'storage.*',
63
+ 'tests', 'tests.*'
64
64
  ]
65
65
  ),
66
66
  include_package_data=True,
@@ -1,3 +0,0 @@
1
- include README.md
2
- include LICENSE
3
- recursive-include orionis *.py *.html
@@ -1,34 +0,0 @@
1
- from enum import Enum
2
-
3
- class Cipher(Enum):
4
- """
5
- Enumeration of supported AES cipher modes.
6
-
7
- This enum defines various Advanced Encryption Standard (AES) cipher modes and key sizes
8
- commonly used for encryption and decryption operations.
9
-
10
- Members:
11
- AES_128_CBC: AES with 128-bit key in Cipher Block Chaining (CBC) mode.
12
- AES_192_CBC: AES with 192-bit key in CBC mode.
13
- AES_256_CBC: AES with 256-bit key in CBC mode.
14
- AES_128_GCM: AES with 128-bit key in Galois/Counter Mode (GCM).
15
- AES_256_GCM: AES with 256-bit key in GCM.
16
- AES_CTR: AES in Counter (CTR) mode.
17
- AES_CFB: AES in Cipher Feedback (CFB) mode.
18
- AES_CFB8: AES in CFB mode with 8-bit feedback.
19
- AES_CFB128: AES in CFB mode with 128-bit feedback.
20
- AES_OFB: AES in Output Feedback (OFB) mode.
21
- AES_ECB: AES in Electronic Codebook (ECB) mode.
22
- """
23
-
24
- AES_128_CBC = "AES-128-CBC"
25
- AES_192_CBC = "AES-192-CBC"
26
- AES_256_CBC = "AES-256-CBC"
27
- AES_128_GCM = "AES-128-GCM"
28
- AES_256_GCM = "AES-256-GCM"
29
- AES_CTR = "AES-CTR"
30
- AES_CFB = "AES-CFB"
31
- AES_CFB8 = "AES-CFB8"
32
- AES_CFB128 = "AES-CFB128"
33
- AES_OFB = "AES-OFB"
34
- AES_ECB = "AES-ECB"
@@ -1,26 +0,0 @@
1
- import os
2
-
3
- class SecureKeyGenerator:
4
- """
5
- Static utility class for generating cryptographically secure random keys.
6
-
7
- This class provides a static method to generate a secure random key,
8
- encoded as a hexadecimal string, suitable for use in security-sensitive
9
- applications such as cryptographic secrets or tokens.
10
- """
11
-
12
- @staticmethod
13
- def generate() -> str:
14
- """
15
- Generate a cryptographically secure random key encoded in hexadecimal.
16
-
17
- Returns
18
- -------
19
- str
20
- A 64-character hexadecimal string representing a 32-byte
21
- cryptographically secure random key.
22
- """
23
-
24
- # Generate 32 random bytes using a cryptographically secure RNG
25
- # Encode the bytes as a hexadecimal string and return
26
- return os.urandom(32).hex()
File without changes
File without changes