orionis 0.286.0__tar.gz → 0.288.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 (484) hide show
  1. {orionis-0.286.0/orionis.egg-info → orionis-0.288.0}/PKG-INFO +1 -1
  2. {orionis-0.286.0 → orionis-0.288.0}/orionis/metadata/framework.py +1 -1
  3. orionis-0.288.0/orionis/services/environment/contracts/env.py +77 -0
  4. orionis-0.288.0/orionis/services/environment/contracts/types.py +70 -0
  5. orionis-0.288.0/orionis/services/environment/dot_env.py +269 -0
  6. orionis-0.288.0/orionis/services/environment/env.py +97 -0
  7. orionis-0.286.0/orionis/services/paths/exceptions/path_value_exceptions.py → orionis-0.288.0/orionis/services/environment/exceptions/environment_value_error.py +2 -12
  8. orionis-0.288.0/orionis/services/environment/exceptions/environment_value_exception.py +23 -0
  9. orionis-0.288.0/orionis/services/environment/types.py +578 -0
  10. orionis-0.288.0/orionis/services/paths/exceptions/not_found_exceptions.py +31 -0
  11. orionis-0.288.0/orionis/services/paths/exceptions/path_value_exceptions.py +31 -0
  12. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/standard/contracts/std.py +1 -1
  13. orionis-0.288.0/orionis/services/standard/exceptions/std_value_exception.py +23 -0
  14. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/standard/std.py +2 -2
  15. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/contracts/imports.py +27 -7
  16. orionis-0.288.0/orionis/services/system/contracts/workers.py +23 -0
  17. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/imports.py +31 -12
  18. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/runtime_imports.py +33 -23
  19. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/workers.py +6 -8
  20. orionis-0.288.0/orionis/services/wrapper/dicts/dot_dict.py +156 -0
  21. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/logs/history.py +3 -5
  22. {orionis-0.286.0 → orionis-0.288.0}/orionis/unittesting.py +12 -12
  23. {orionis-0.286.0 → orionis-0.288.0/orionis.egg-info}/PKG-INFO +1 -1
  24. {orionis-0.286.0 → orionis-0.288.0}/orionis.egg-info/SOURCES.txt +51 -45
  25. {orionis-0.286.0 → orionis-0.288.0}/tests/example/test_example.py +5 -2
  26. orionis-0.286.0/tests/foundation/config/app/test_app.py → orionis-0.288.0/tests/foundation/config/app/test_foundation_config_app.py +14 -4
  27. orionis-0.286.0/tests/foundation/config/auth/test_auth.py → orionis-0.288.0/tests/foundation/config/auth/test_foundation_config_auth.py +10 -5
  28. orionis-0.286.0/tests/foundation/config/cache/test_cache.py → orionis-0.288.0/tests/foundation/config/cache/test_foundation_config_cache.py +61 -16
  29. orionis-0.288.0/tests/foundation/config/cache/test_foundation_config_cache_file.py +126 -0
  30. orionis-0.288.0/tests/foundation/config/cache/test_foundation_config_cache_stores.py +148 -0
  31. orionis-0.288.0/tests/foundation/config/cors/test_foundation_config_cors.py +190 -0
  32. orionis-0.286.0/tests/foundation/config/database/test_database.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database.py +39 -15
  33. orionis-0.286.0/tests/foundation/config/database/test_database_connections.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database_connections.py +80 -6
  34. orionis-0.286.0/tests/foundation/config/database/test_database_mysql.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database_mysql.py +139 -16
  35. orionis-0.286.0/tests/foundation/config/database/test_database_oracle.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database_oracle.py +111 -27
  36. orionis-0.286.0/tests/foundation/config/database/test_database_pgsql.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database_pgsql.py +97 -27
  37. orionis-0.286.0/tests/foundation/config/database/test_database_sqlite.py → orionis-0.288.0/tests/foundation/config/database/test_foundation_config_database_sqlite.py +57 -3
  38. orionis-0.286.0/tests/foundation/config/exceptions/test_exceptions_integrity.py → orionis-0.288.0/tests/foundation/config/exceptions/test_foundation_config_exceptions.py +45 -11
  39. orionis-0.286.0/tests/foundation/config/filesystems/test_filesystems.py → orionis-0.288.0/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +65 -15
  40. orionis-0.286.0/tests/foundation/config/filesystems/test_filesystems_aws.py → orionis-0.288.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +46 -8
  41. orionis-0.286.0/tests/foundation/config/filesystems/test_filesystems_disks.py → orionis-0.288.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +79 -9
  42. orionis-0.286.0/tests/foundation/config/filesystems/test_filesystems_local.py → orionis-0.288.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +67 -19
  43. orionis-0.286.0/tests/foundation/config/filesystems/test_filesystems_public.py → orionis-0.288.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +38 -1
  44. orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging.py +112 -0
  45. orionis-0.286.0/tests/foundation/config/logging/test_logging_channels.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_channels.py +80 -3
  46. orionis-0.286.0/tests/foundation/config/logging/test_logging_chunked.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +86 -13
  47. orionis-0.286.0/tests/foundation/config/logging/test_logging_daily.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_daily.py +80 -13
  48. orionis-0.286.0/tests/foundation/config/logging/test_logging_hourly.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +69 -3
  49. orionis-0.286.0/tests/foundation/config/logging/test_logging_monthly.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +49 -3
  50. orionis-0.286.0/tests/foundation/config/logging/test_logging_stack.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_stack.py +50 -15
  51. orionis-0.286.0/tests/foundation/config/logging/test_logging_weekly.py → orionis-0.288.0/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +93 -3
  52. orionis-0.288.0/tests/foundation/config/mail/test_foundation_config_mail.py +145 -0
  53. orionis-0.286.0/tests/foundation/config/mail/test_mail_file.py → orionis-0.288.0/tests/foundation/config/mail/test_foundation_config_mail_file.py +41 -5
  54. orionis-0.288.0/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +106 -0
  55. orionis-0.286.0/tests/foundation/config/mail/test_mail_smtp.py → orionis-0.288.0/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +59 -15
  56. orionis-0.288.0/tests/foundation/config/queue/test_foundation_config_queue.py +111 -0
  57. orionis-0.286.0/tests/foundation/config/queue/test_queue_brokers.py → orionis-0.288.0/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +28 -11
  58. orionis-0.286.0/tests/foundation/config/queue/test_queue_database.py → orionis-0.288.0/tests/foundation/config/queue/test_foundation_config_queue_database.py +54 -16
  59. orionis-0.286.0/tests/foundation/config/root/test_root_paths.py → orionis-0.288.0/tests/foundation/config/root/test_foundation_config_root_paths.py +70 -3
  60. orionis-0.286.0/tests/foundation/config/session/test_session.py → orionis-0.288.0/tests/foundation/config/session/test_foundation_config_session.py +31 -2
  61. orionis-0.286.0/tests/foundation/config/startup/test_config_startup.py → orionis-0.288.0/tests/foundation/config/startup/test_foundation_config_startup.py +91 -21
  62. orionis-0.286.0/tests/foundation/config/testing/test_testing.py → orionis-0.288.0/tests/foundation/config/testing/test_foundation_config_testing.py +69 -1
  63. orionis-0.288.0/tests/patterns/singleton/test_patterns_singleton.py +27 -0
  64. orionis-0.286.0/tests/services/asynchrony/test_async_io.py → orionis-0.288.0/tests/services/asynchrony/test_services_asynchrony_coroutine.py +1 -1
  65. orionis-0.288.0/tests/services/environment/test_services_environment.py +93 -0
  66. orionis-0.286.0/tests/services/path/test_resolver.py → orionis-0.288.0/tests/services/path/test_services_resolver.py +51 -12
  67. orionis-0.286.0/tests/services/standard/test_std.py → orionis-0.288.0/tests/services/standard/test_services_std.py +45 -22
  68. orionis-0.288.0/tests/services/system/test_services_system_imports.py +101 -0
  69. orionis-0.288.0/tests/services/system/test_services_system_workers.py +89 -0
  70. orionis-0.286.0/tests/services/wrapper/test_wrapper_doc_dict.py → orionis-0.288.0/tests/services/wrapper/test_services_wrapper_docdict.py +28 -16
  71. orionis-0.288.0/tests/testing/__init__.py +0 -0
  72. orionis-0.288.0/tests/testing/test_testing_result.py +129 -0
  73. orionis-0.288.0/tests/testing/test_testing_unit.py +207 -0
  74. orionis-0.286.0/orionis/services/environment/contracts/env.py +0 -82
  75. orionis-0.286.0/orionis/services/environment/dot_env.py +0 -247
  76. orionis-0.286.0/orionis/services/environment/env.py +0 -114
  77. orionis-0.286.0/orionis/services/environment/exceptions/value_exception.py +0 -27
  78. orionis-0.286.0/orionis/services/paths/exceptions/not_found_exceptions.py +0 -28
  79. orionis-0.286.0/orionis/services/standard/exceptions/path_value_exceptions.py +0 -28
  80. orionis-0.286.0/orionis/services/system/contracts/workers.py +0 -18
  81. orionis-0.286.0/orionis/services/wrapper/dicts/dot_dict.py +0 -115
  82. orionis-0.286.0/tests/foundation/config/cache/test_cache_file.py +0 -78
  83. orionis-0.286.0/tests/foundation/config/cache/test_cache_stores.py +0 -88
  84. orionis-0.286.0/tests/foundation/config/cors/test_cors.py +0 -121
  85. orionis-0.286.0/tests/foundation/config/logging/test_logging.py +0 -48
  86. orionis-0.286.0/tests/foundation/config/mail/test_mail.py +0 -73
  87. orionis-0.286.0/tests/foundation/config/mail/test_mail_mailers.py +0 -58
  88. orionis-0.286.0/tests/foundation/config/queue/test_queue.py +0 -58
  89. orionis-0.286.0/tests/patterns/singleton/test_singleton.py +0 -18
  90. orionis-0.286.0/tests/services/environment/test_env.py +0 -155
  91. orionis-0.286.0/tests/testing/test_testing_result.py +0 -92
  92. orionis-0.286.0/tests/testing/test_testing_unit.py +0 -138
  93. {orionis-0.286.0 → orionis-0.288.0}/LICENCE +0 -0
  94. {orionis-0.286.0 → orionis-0.288.0}/MANIFEST.in +0 -0
  95. {orionis-0.286.0 → orionis-0.288.0}/README.md +0 -0
  96. {orionis-0.286.0 → orionis-0.288.0}/orionis/__init__.py +0 -0
  97. {orionis-0.286.0 → orionis-0.288.0}/orionis/_application.py +0 -0
  98. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/__init__.py +0 -0
  99. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/container.py +0 -0
  100. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/container_integrity.py +0 -0
  101. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/exception.py +0 -0
  102. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/lifetimes.py +0 -0
  103. {orionis-0.286.0 → orionis-0.288.0}/orionis/_container/resolve.py +0 -0
  104. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/__init__.py +0 -0
  105. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/application.py +0 -0
  106. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/config/__init__.py +0 -0
  107. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/config/config.py +0 -0
  108. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/__init__.py +0 -0
  109. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/base/__init__.py +0 -0
  110. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/base/command.py +0 -0
  111. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/command_filter.py +0 -0
  112. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/kernel.py +0 -0
  113. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/output/__init__.py +0 -0
  114. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/output/console.py +0 -0
  115. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/output/executor.py +0 -0
  116. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
  117. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/parser.py +0 -0
  118. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/console/task_manager.py +0 -0
  119. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/container/container.py +0 -0
  120. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/container/container_integrity.py +0 -0
  121. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/__init__.py +0 -0
  122. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
  123. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
  124. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
  125. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/config/__init__.py +0 -0
  126. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
  127. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
  128. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
  129. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/facade.py +0 -0
  130. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/files/__init__.py +0 -0
  131. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
  132. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/log/__init__.py +0 -0
  133. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
  134. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
  135. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
  136. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/__init__.py +0 -0
  137. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
  138. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
  139. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
  140. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
  141. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
  142. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
  143. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
  144. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
  145. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
  146. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/providers/__init__.py +0 -0
  147. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/providers/service_provider.py +0 -0
  148. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/__init__.py +0 -0
  149. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/commands/__init__.py +0 -0
  150. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
  151. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
  152. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/config/__init__.py +0 -0
  153. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/config/config_service.py +0 -0
  154. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/environment/__init__.py +0 -0
  155. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
  156. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/files/__init__.py +0 -0
  157. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
  158. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/log/__init__.py +0 -0
  159. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/services/log/log_service.py +0 -0
  160. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/support/exception_parse.py +0 -0
  161. {orionis-0.286.0 → orionis-0.288.0}/orionis/_contracts/support/reflection.py +0 -0
  162. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/__init__.py +0 -0
  163. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/app_facade.py +0 -0
  164. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/commands/__init__.py +0 -0
  165. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/commands/commands_facade.py +0 -0
  166. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
  167. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/config/__init__.py +0 -0
  168. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/config/config_facade.py +0 -0
  169. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/environment/__init__.py +0 -0
  170. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/environment/environment_facade.py +0 -0
  171. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/files/__init__.py +0 -0
  172. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/files/path_facade.py +0 -0
  173. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/log/__init__.py +0 -0
  174. {orionis-0.286.0 → orionis-0.288.0}/orionis/_facades/log/log_facade.py +0 -0
  175. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/__init__.py +0 -0
  176. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/console/__init__.py +0 -0
  177. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
  178. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/environment/__init__.py +0 -0
  179. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
  180. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/exceptions/__init__.py +0 -0
  181. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
  182. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
  183. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
  184. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
  185. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/providers/__init__.py +0 -0
  186. {orionis-0.286.0 → orionis-0.288.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
  187. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/__init__.py +0 -0
  188. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/commands/__init__.py +0 -0
  189. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
  190. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
  191. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/config/__init__.py +0 -0
  192. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/config/config_service_provider.py +0 -0
  193. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/environment/__init__.py +0 -0
  194. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
  195. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/files/__init__.py +0 -0
  196. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/files/paths_provider.py +0 -0
  197. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/log/__init__.py +0 -0
  198. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/log/log_service_provider.py +0 -0
  199. {orionis-0.286.0 → orionis-0.288.0}/orionis/_providers/service_provider.py +0 -0
  200. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/__init__.py +0 -0
  201. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/commands/__init__.py +0 -0
  202. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
  203. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/commands/scheduler_service.py +0 -0
  204. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/config/__init__.py +0 -0
  205. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/config/config_service.py +0 -0
  206. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/log/__init__.py +0 -0
  207. {orionis-0.286.0 → orionis-0.288.0}/orionis/_services/log/log_service.py +0 -0
  208. {orionis-0.286.0 → orionis-0.288.0}/orionis/application.py +0 -0
  209. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/__init__.py +0 -0
  210. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/base/__init__.py +0 -0
  211. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/base/command.py +0 -0
  212. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/command_filter.py +0 -0
  213. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/commands/__init__.py +0 -0
  214. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/commands/cache_clear.py +0 -0
  215. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/commands/help.py +0 -0
  216. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/commands/schedule_work.py +0 -0
  217. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/commands/version.py +0 -0
  218. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/dumper/__init__.py +0 -0
  219. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/dumper/dump_die.py +0 -0
  220. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/exceptions/__init__.py +0 -0
  221. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
  222. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/exceptions/cli_exception.py +0 -0
  223. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
  224. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
  225. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/kernel.py +0 -0
  226. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/output/__init__.py +0 -0
  227. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/output/console.py +0 -0
  228. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/output/executor.py +0 -0
  229. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/output/progress_bar.py +0 -0
  230. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/output/styles.py +0 -0
  231. {orionis-0.286.0 → orionis-0.288.0}/orionis/console/parser.py +0 -0
  232. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/__init__.py +0 -0
  233. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/__init__.py +0 -0
  234. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/__init__.py +0 -0
  235. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  236. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/entities/app.py +0 -0
  237. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  238. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  239. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  240. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/auth/__init__.py +0 -0
  241. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  242. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  243. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/__init__.py +0 -0
  244. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  245. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  246. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  247. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  248. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  249. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  250. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/contracts/__init__.py +0 -0
  251. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/contracts/config.py +0 -0
  252. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cors/__init__.py +0 -0
  253. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  254. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  255. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/__init__.py +0 -0
  256. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  257. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  258. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/database.py +0 -0
  259. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  260. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  261. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  262. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  263. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  264. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  265. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  266. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  267. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  268. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  269. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  270. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  271. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  272. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  273. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  274. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  275. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/exceptions/__init__.py +0 -0
  276. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/exceptions/integrity.py +0 -0
  277. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  278. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  279. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  280. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  281. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  282. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  283. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  284. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/__init__.py +0 -0
  285. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  286. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  287. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  288. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  289. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  290. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  291. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  292. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  293. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  294. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  295. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  296. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/__init__.py +0 -0
  297. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  298. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  299. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  300. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  301. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  302. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/__init__.py +0 -0
  303. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  304. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  305. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  306. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  307. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  308. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/roots/__init__.py +0 -0
  309. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/roots/paths.py +0 -0
  310. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/__init__.py +0 -0
  311. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  312. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/entities/session.py +0 -0
  313. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  314. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  315. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  316. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/startup.py +0 -0
  317. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/testing/__init__.py +0 -0
  318. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  319. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  320. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  321. {orionis-0.286.0 → orionis-0.288.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
  322. {orionis-0.286.0 → orionis-0.288.0}/orionis/metadata/__init__.py +0 -0
  323. {orionis-0.286.0 → orionis-0.288.0}/orionis/metadata/package.py +0 -0
  324. {orionis-0.286.0 → orionis-0.288.0}/orionis/patterns/__init__.py +0 -0
  325. {orionis-0.286.0 → orionis-0.288.0}/orionis/patterns/singleton/__init__.py +0 -0
  326. {orionis-0.286.0 → orionis-0.288.0}/orionis/patterns/singleton/meta_class.py +0 -0
  327. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/__init__.py +0 -0
  328. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/__init__.py +0 -0
  329. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  330. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  331. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/coroutines.py +0 -0
  332. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  333. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
  334. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/environment/__init__.py +0 -0
  335. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/environment/contracts/__init__.py +0 -0
  336. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  337. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/__init__.py +0 -0
  338. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/abstracts/__init__.py +0 -0
  339. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/abstracts/entities/__init__.py +0 -0
  340. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/abstracts/entities/abstract_class_attributes.py +0 -0
  341. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/abstracts/reflect_abstract.py +0 -0
  342. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
  343. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
  344. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/contracts/reflect_dependencies.py +0 -0
  345. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
  346. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  347. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  348. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
  349. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
  350. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  351. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/exceptions/types.py +0 -0
  352. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/helpers/__init__.py +0 -0
  353. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/helpers/functions.py +0 -0
  354. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/introspection/reflection.py +0 -0
  355. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/__init__.py +0 -0
  356. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/contracts/__init__.py +0 -0
  357. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
  358. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
  359. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
  360. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/parsers/serializer.py +0 -0
  361. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/paths/__init__.py +0 -0
  362. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/paths/contracts/__init__.py +0 -0
  363. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/paths/contracts/resolver.py +0 -0
  364. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  365. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/paths/resolver.py +0 -0
  366. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/standard/__init__.py +0 -0
  367. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/standard/contracts/__init__.py +0 -0
  368. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/standard/exceptions/__init__.py +0 -0
  369. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/__init__.py +0 -0
  370. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/system/contracts/__init__.py +0 -0
  371. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/wrapper/__init__.py +0 -0
  372. {orionis-0.286.0 → orionis-0.288.0}/orionis/services/wrapper/dicts/__init__.py +0 -0
  373. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/__init__.py +0 -0
  374. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/__init__.py +0 -0
  375. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/container_integrity.py +0 -0
  376. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/contracts/__init__.py +0 -0
  377. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/contracts/reflection.py +0 -0
  378. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/contracts/reflexion_abstract.py +0 -0
  379. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/helpers/__init__.py +0 -0
  380. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/helpers/functions.py +0 -0
  381. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/__init__.py +0 -0
  382. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/contracts/__init__.py +0 -0
  383. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/contracts/reflection_instance.py +0 -0
  384. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/entities/__init__.py +0 -0
  385. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/entities/class_attributes.py +0 -0
  386. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/entities/class_method.py +0 -0
  387. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/entities/class_parsed.py +0 -0
  388. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/entities/class_property.py +0 -0
  389. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/instances/reflection_instance.py +0 -0
  390. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflect_decorators.py +0 -0
  391. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflection.py +0 -0
  392. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflexion_concrete.py +0 -0
  393. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflexion_concrete_with_abstract.py +0 -0
  394. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflexion_instance_with_abstract.py +0 -0
  395. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflexion_module.py +0 -0
  396. {orionis-0.286.0 → orionis-0.288.0}/orionis/support/introspection/reflexion_module_with_classname.py +0 -0
  397. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/__init__.py +0 -0
  398. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/cases/__init__.py +0 -0
  399. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/cases/test_async.py +0 -0
  400. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/cases/test_case.py +0 -0
  401. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/cases/test_sync.py +0 -0
  402. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/entities/__init__.py +0 -0
  403. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/entities/test_result.py +0 -0
  404. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/enums/__init__.py +0 -0
  405. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/enums/test_mode.py +0 -0
  406. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/enums/test_status.py +0 -0
  407. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/__init__.py +0 -0
  408. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/test_config_exception.py +0 -0
  409. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
  410. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
  411. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
  412. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/exceptions/test_value_error.py +0 -0
  413. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/logs/__init__.py +0 -0
  414. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/logs/contracts/__init__.py +0 -0
  415. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/logs/contracts/history.py +0 -0
  416. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/output/__init__.py +0 -0
  417. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/output/contracts/__init__.py +0 -0
  418. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/output/contracts/dumper.py +0 -0
  419. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/output/dumper.py +0 -0
  420. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/__init__.py +0 -0
  421. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/contracts/__init__.py +0 -0
  422. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/contracts/test_suite.py +0 -0
  423. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/contracts/test_unit.py +0 -0
  424. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/test_suite.py +0 -0
  425. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/suites/test_unit.py +0 -0
  426. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/view/__init__.py +0 -0
  427. {orionis-0.286.0 → orionis-0.288.0}/orionis/test/view/index.html +0 -0
  428. {orionis-0.286.0 → orionis-0.288.0}/orionis.egg-info/dependency_links.txt +0 -0
  429. {orionis-0.286.0 → orionis-0.288.0}/orionis.egg-info/requires.txt +0 -0
  430. {orionis-0.286.0 → orionis-0.288.0}/orionis.egg-info/top_level.txt +0 -0
  431. {orionis-0.286.0 → orionis-0.288.0}/orionis.egg-info/zip-safe +0 -0
  432. {orionis-0.286.0 → orionis-0.288.0}/setup.cfg +0 -0
  433. {orionis-0.286.0 → orionis-0.288.0}/setup.py +0 -0
  434. {orionis-0.286.0 → orionis-0.288.0}/tests/__init__.py +0 -0
  435. {orionis-0.286.0 → orionis-0.288.0}/tests/example/__init__.py +0 -0
  436. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/__init__.py +0 -0
  437. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/__init__.py +0 -0
  438. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/app/__init__.py +0 -0
  439. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/auth/__init__.py +0 -0
  440. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/cache/__init__.py +0 -0
  441. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/cors/__init__.py +0 -0
  442. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/database/__init__.py +0 -0
  443. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/exceptions/__init__.py +0 -0
  444. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/filesystems/__init__.py +0 -0
  445. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/logging/__init__.py +0 -0
  446. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/mail/__init__.py +0 -0
  447. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/queue/__init__.py +0 -0
  448. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/root/__init__.py +0 -0
  449. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/session/__init__.py +0 -0
  450. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/startup/__init__.py +0 -0
  451. {orionis-0.286.0 → orionis-0.288.0}/tests/foundation/config/testing/__init__.py +0 -0
  452. {orionis-0.286.0 → orionis-0.288.0}/tests/patterns/__init__.py +0 -0
  453. {orionis-0.286.0 → orionis-0.288.0}/tests/patterns/singleton/__init__.py +0 -0
  454. {orionis-0.286.0 → orionis-0.288.0}/tests/services/__init__.py +0 -0
  455. {orionis-0.286.0 → orionis-0.288.0}/tests/services/asynchrony/__init__.py +0 -0
  456. {orionis-0.286.0 → orionis-0.288.0}/tests/services/environment/__init__.py +0 -0
  457. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/__init__.py +0 -0
  458. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/__init__.py +0 -0
  459. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  460. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
  461. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
  462. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
  463. {orionis-0.286.0 → orionis-0.288.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
  464. {orionis-0.286.0 → orionis-0.288.0}/tests/services/parsers/__init__.py +0 -0
  465. {orionis-0.286.0 → orionis-0.288.0}/tests/services/parsers/mocks/__init__.py +0 -0
  466. {orionis-0.286.0 → orionis-0.288.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
  467. {orionis-0.286.0 → orionis-0.288.0}/tests/services/parsers/test_exception_parser.py +0 -0
  468. {orionis-0.286.0 → orionis-0.288.0}/tests/services/path/__init__.py +0 -0
  469. {orionis-0.286.0 → orionis-0.288.0}/tests/services/standard/__init__.py +0 -0
  470. {orionis-0.286.0/tests/services/wrapper → orionis-0.288.0/tests/services/system}/__init__.py +0 -0
  471. {orionis-0.286.0/tests/support → orionis-0.288.0/tests/services/wrapper}/__init__.py +0 -0
  472. {orionis-0.286.0/tests/support/inspection → orionis-0.288.0/tests/support}/__init__.py +0 -0
  473. {orionis-0.286.0/tests/support/inspection/fakes → orionis-0.288.0/tests/support/inspection}/__init__.py +0 -0
  474. {orionis-0.286.0/tests/testing → orionis-0.288.0/tests/support/inspection/fakes}/__init__.py +0 -0
  475. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/fakes/fake_reflect_abstract.py +0 -0
  476. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/fakes/fake_reflect_instance.py +0 -0
  477. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
  478. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
  479. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
  480. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/test_reflect_abstract.py +0 -0
  481. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/test_reflect_instance.py +0 -0
  482. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/test_reflection_concrete.py +0 -0
  483. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +0 -0
  484. {orionis-0.286.0 → orionis-0.288.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.286.0
3
+ Version: 0.288.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.286.0"
8
+ VERSION = "0.288.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,77 @@
1
+ from typing import Any, Dict
2
+ from abc import ABC, abstractmethod
3
+
4
+ class IEnv(ABC):
5
+
6
+ @staticmethod
7
+ @abstractmethod
8
+ def get(key: str, default: Any = None) -> Any:
9
+ """
10
+ Retrieve the value of an environment variable by key.
11
+
12
+ Parameters
13
+ ----------
14
+ key : str
15
+ The name of the environment variable to retrieve.
16
+ default : Any, optional
17
+ The value to return if the key is not found. Default is None.
18
+
19
+ Returns
20
+ -------
21
+ Any
22
+ The value of the environment variable if found, otherwise the default value.
23
+ """
24
+ pass
25
+
26
+ @staticmethod
27
+ @abstractmethod
28
+ def set(key: str, value: str, type: str = None) -> bool:
29
+ """
30
+ Set an environment variable in the .env file.
31
+
32
+ Parameters
33
+ ----------
34
+ key : str
35
+ The name of the environment variable to set.
36
+ value : str
37
+ The value to assign to the environment variable.
38
+ type : str, optional
39
+ The type of the environment variable (e.g., 'str', 'int'). Default is None.
40
+
41
+ Returns
42
+ -------
43
+ bool
44
+ True if the variable was set successfully, False otherwise.
45
+ """
46
+ pass
47
+
48
+ @staticmethod
49
+ @abstractmethod
50
+ def unset(key: str) -> bool:
51
+ """
52
+ Remove the specified environment variable from the .env file.
53
+
54
+ Parameters
55
+ ----------
56
+ key : str
57
+ The name of the environment variable to remove.
58
+
59
+ Returns
60
+ -------
61
+ bool
62
+ True if the variable was successfully removed, False otherwise.
63
+ """
64
+ pass
65
+
66
+ @staticmethod
67
+ @abstractmethod
68
+ def all() -> Dict[str, Any]:
69
+ """
70
+ Retrieve all environment variables as a dictionary.
71
+
72
+ Returns
73
+ -------
74
+ dict of str to Any
75
+ A dictionary containing all environment variables loaded by DotEnv.
76
+ """
77
+ pass
@@ -0,0 +1,70 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ class IEnvTypes(ABC):
4
+
5
+ @abstractmethod
6
+ def to(self, type_hint: str):
7
+ """
8
+ Set the type hint for the Type instance.
9
+
10
+ Parameters
11
+ ----------
12
+ type_hint : str
13
+ The type hint to set, which must be one of the valid options defined in OPTIONS.
14
+
15
+ Raises
16
+ ------
17
+ OrionisEnvironmentValueError
18
+ If the provided type hint is not one of the valid options.
19
+ """
20
+ pass
21
+
22
+ @abstractmethod
23
+ def hasValidTypeHint(self) -> bool:
24
+ """
25
+ Check if the type hint is valid.
26
+
27
+ Returns
28
+ -------
29
+ bool
30
+ True if the type hint is valid (exists in the OPTIONS set), False otherwise.
31
+ """
32
+ pass
33
+
34
+ @abstractmethod
35
+ def explode(self) -> tuple:
36
+ """
37
+ Returns a tuple containing the type hint and value string.
38
+
39
+ Returns
40
+ -------
41
+ tuple
42
+ A tuple (type_hint, value_str) where:
43
+ type_hint : str or None
44
+ The extracted type hint in lowercase, or None if not provided.
45
+ value_str : str or None
46
+ The extracted value string, or None if not provided.
47
+ """
48
+ pass
49
+
50
+ @abstractmethod
51
+ def get(self):
52
+ """
53
+ Returns the value corresponding to the specified type hint.
54
+
55
+ Checks if the provided type hint is valid and then dispatches the call to the appropriate
56
+ method for handling the type.
57
+
58
+ Supported type hints include: 'path:', 'str:', 'int:', 'float:', 'bool:', 'list:', 'dict:', 'tuple:', and 'set:'.
59
+
60
+ Returns
61
+ -------
62
+ Any
63
+ The value converted or processed according to the specified type hint.
64
+
65
+ Raises
66
+ ------
67
+ OrionisEnvironmentValueError
68
+ If the type hint is not one of the supported options.
69
+ """
70
+ pass
@@ -0,0 +1,269 @@
1
+ import os
2
+ import ast
3
+ import re
4
+ import threading
5
+ from pathlib import Path
6
+ from typing import Any, Optional, Union
7
+ from dotenv import dotenv_values, load_dotenv, set_key, unset_key
8
+ from orionis.patterns.singleton.meta_class import Singleton
9
+ from orionis.services.environment.exceptions.environment_value_exception import OrionisEnvironmentValueException
10
+ from orionis.services.environment.exceptions.environment_value_error import OrionisEnvironmentValueError
11
+ from orionis.services.environment.types import EnvTypes
12
+
13
+ class DotEnv(metaclass=Singleton):
14
+
15
+ # Thread-safe singleton instance lock
16
+ _lock = threading.RLock()
17
+
18
+ def __init__(self, path: str = None) -> None:
19
+ """
20
+ Initialize the environment service by resolving the path to the `.env` file, ensuring its existence,
21
+ and loading environment variables from it.
22
+
23
+ Parameters
24
+ ----------
25
+ path : str, optional
26
+ Path to the `.env` file. If not provided, defaults to a `.env` file
27
+ in the current working directory.
28
+
29
+ Raises
30
+ ------
31
+ OSError
32
+ If the `.env` file cannot be created when it does not exist.
33
+ """
34
+ try:
35
+ with self._lock:
36
+ if path:
37
+ self._resolved_path = Path(path).expanduser().resolve()
38
+ else:
39
+ self._resolved_path = Path(os.getcwd()) / ".env"
40
+
41
+ if not self._resolved_path.exists():
42
+ self._resolved_path.touch()
43
+
44
+ load_dotenv(self._resolved_path)
45
+ except OSError as e:
46
+ raise OSError(f"Failed to create or access the .env file at {self._resolved_path}: {e}")
47
+
48
+ def get(self, key: str, default: Optional[Any] = None) -> Any:
49
+ """
50
+ Get the value of an environment variable.
51
+
52
+ Parameters
53
+ ----------
54
+ key : str
55
+ Name of the environment variable to retrieve.
56
+ default : Any, optional
57
+ Value to return if the key is not found. Default is None.
58
+
59
+ Returns
60
+ -------
61
+ Any
62
+ Parsed value of the environment variable, or `default` if not found.
63
+
64
+ Raises
65
+ ------
66
+ OrionisEnvironmentValueError
67
+ If `key` is not a string.
68
+ """
69
+ with self._lock:
70
+
71
+ # Ensure the key is a string.
72
+ if not isinstance(key, str):
73
+ raise OrionisEnvironmentValueError(
74
+ f"Key must be a string, got {type(key).__name__}."
75
+ )
76
+
77
+ # Get the value from the .env file or the current environment.
78
+ value = dotenv_values(self._resolved_path).get(key)
79
+
80
+ # If the value is not found in the .env file, check the current environment variables.
81
+ if value is None:
82
+ value = os.getenv(key)
83
+
84
+ # Parse the value using the internal __parseValue method and return it
85
+ return self.__parseValue(value) if value is not None else default
86
+
87
+ def __parseValue(self, value: Any) -> Any:
88
+ """
89
+ Parse and convert the input value to an appropriate Python data type with enhanced features.
90
+
91
+ Parameters
92
+ ----------
93
+ value : Any
94
+ The value to parse and convert.
95
+
96
+ Returns
97
+ -------
98
+ Any
99
+ The parsed value, which may be of type None, bool, int, float, list, dict, or str.
100
+ - Returns None for None, empty strings, or strings like 'none', 'null', 'nan' (case-insensitive).
101
+ - Returns a boolean for 'true'/'false' strings (case-insensitive) or 1/0.
102
+ - Returns an int if the string represents an integer.
103
+ - Returns a float if the string represents a float.
104
+ - Attempts to evaluate the string as a Python literal (e.g., list, dict, tuple).
105
+ - Handles type hints via 'type:' prefix (e.g., 'int:42', 'bool:true').
106
+ - Returns the original string if no conversion is possible.
107
+
108
+ Raises
109
+ ------
110
+ OrionisEnvironmentValueException
111
+ If type conversion fails for explicitly typed values (e.g., 'abc::int').
112
+ """
113
+ # Early return for None
114
+ if value is None:
115
+ return None
116
+
117
+ # Return immediately if already a basic type
118
+ if isinstance(value, (bool, int, float, dict, list, tuple, set)):
119
+ return value
120
+
121
+ # Convert to string and clean
122
+ value_str = str(value).strip()
123
+
124
+ # Handle empty strings and common null representations
125
+ # This includes 'none', 'null', 'nan', 'nil' (case-insensitive)
126
+ if not value_str or value_str.lower() in {'none', 'null', 'nan', 'nil'}:
127
+ return None
128
+
129
+ # Boolean detection (without type hint)
130
+ lower_val = value_str.lower()
131
+ if lower_val in ('true', 'false', 'yes', 'no', 'on', 'off', '1', '0'):
132
+ return lower_val in ('true', 'yes', 'on', '1')
133
+
134
+ # Handle type hints using the Type class
135
+ hints = EnvTypes(value_str)
136
+ if hints.hasValidTypeHint():
137
+ return hints.get()
138
+
139
+ # Try parseing to literal types, if failed, return the original value
140
+ try:
141
+ return ast.literal_eval(value_str)
142
+ except (ValueError, SyntaxError):
143
+ return value_str
144
+
145
+ def set(self, key: str, value: Union[str, int, float, bool, list, dict, tuple, set], type_hint: str = None) -> bool:
146
+ """
147
+ Set an environment variable with the specified key and value.
148
+
149
+ Serializes the given value and updates both the .env file and the current process's environment variables.
150
+
151
+ Parameters
152
+ ----------
153
+ key : str
154
+ The name of the environment variable to set.
155
+ value : Union[str, int, float, bool, list, dict]
156
+ The value to assign to the environment variable. Supported types include string, integer, float, boolean, list, and dictionary.
157
+ type_hint : str, optional
158
+ The type of the value being set. If provided, it can be (path, str, int, float, bool, list, dict, tuple, set).
159
+
160
+ Returns
161
+ -------
162
+ bool
163
+ True if the environment variable was successfully set.
164
+ """
165
+ with self._lock:
166
+
167
+ # Ensure the key is a string.
168
+ if not isinstance(key, str) or not re.match(r'^[A-Z][A-Z0-9_]*$', key):
169
+ raise OrionisEnvironmentValueError(
170
+ f"The environment variable name '{key}' is not valid. It must be an uppercase string, may contain numbers and underscores, and must always start with a letter. Example of a valid name: 'MY_ENV_VAR'."
171
+ )
172
+
173
+ # Ensure the value is a valid type.
174
+ if not isinstance(value, (str, int, float, bool, list, dict, tuple, set)):
175
+ raise OrionisEnvironmentValueError(
176
+ f"Unsupported value type: {type(value).__name__}. Allowed types are str, int, float, bool, list, dict, tuple, set."
177
+ )
178
+
179
+ # Dinamically determine the type hint if not provided.
180
+ if isinstance(value, (int, float, bool, list, dict, tuple, set)) and not type_hint:
181
+ type_hint = type(value).__name__.lower()
182
+
183
+ # Validate the type hint if provided.
184
+ options = EnvTypes.options()
185
+ if type_hint and type_hint not in options:
186
+ raise OrionisEnvironmentValueException(f"Invalid type hint: {type_hint}. Allowed types are {str(options)}.")
187
+
188
+ # Serialize the value based on its type.
189
+ serialized_value = self.__serializeValue(value, type_hint)
190
+
191
+ # Set the environment variable in the .env file and the current process environment.
192
+ set_key(str(self._resolved_path), key, serialized_value)
193
+ os.environ[key] = str(value)
194
+
195
+ # Return True to indicate success.
196
+ return True
197
+
198
+ def __serializeValue(self, value: Any, type_hint: str = None) -> str:
199
+ """
200
+ Parameters
201
+ ----------
202
+ value : Any
203
+ The value to serialize.
204
+ type_hint : str, optional
205
+ An optional type hint to guide serialization.
206
+ Returns
207
+ -------
208
+ str
209
+ The serialized string representation of the value.
210
+ Notes
211
+ -----
212
+ - If `value` is None, returns "null".
213
+ - If `type_hint` is provided, uses `EnvTypes` to serialize.
214
+ - Uses `repr()` for lists, dicts, tuples, and sets.
215
+ - Falls back to `str()` for other types.
216
+ """
217
+
218
+ if value is None:
219
+ return "null"
220
+
221
+ if type_hint:
222
+ return EnvTypes(value).to(type_hint)
223
+
224
+ if isinstance(value, str):
225
+ return value.strip()
226
+
227
+ if isinstance(value, bool):
228
+ return str(value).lower()
229
+
230
+ if isinstance(value, int, float):
231
+ return str(value)
232
+
233
+ if isinstance(value, (list, dict, tuple, set)):
234
+ return repr(value)
235
+
236
+ return str(value)
237
+
238
+ def unset(self, key: str) -> bool:
239
+ """
240
+ Remove the specified environment variable from both the .env file and the current process environment.
241
+
242
+ Parameters
243
+ ----------
244
+ key : str
245
+ The name of the environment variable to unset.
246
+
247
+ Returns
248
+ -------
249
+ bool
250
+ True if the operation was successful.
251
+ """
252
+ with self._lock:
253
+ unset_key(str(self._resolved_path), key)
254
+ os.environ.pop(key, None)
255
+ return True
256
+
257
+ def all(self) -> dict:
258
+ """
259
+ Retrieve all environment variables from the resolved .env file.
260
+
261
+ Returns
262
+ -------
263
+ dict
264
+ Dictionary containing all environment variable key-value pairs,
265
+ with values parsed using the internal __parseValue method.
266
+ """
267
+ with self._lock:
268
+ raw_values = dotenv_values(self._resolved_path)
269
+ return {k: self.__parseValue(v) for k, v in raw_values.items()}
@@ -0,0 +1,97 @@
1
+ from orionis.services.environment.contracts.env import IEnv
2
+ from orionis.services.environment.dot_env import DotEnv
3
+ from typing import Any, Dict
4
+
5
+ def env(key: str, default: Any = None) -> Any:
6
+ """
7
+ Retrieve the value of an environment variable.
8
+
9
+ Parameters
10
+ ----------
11
+ key : str
12
+ The name of the environment variable to retrieve.
13
+ default : Any, optional
14
+ The value to return if the environment variable is not found. Default is None.
15
+
16
+ Returns
17
+ -------
18
+ Any
19
+ The value of the environment variable if it exists, otherwise the default value.
20
+ """
21
+ dotenv = DotEnv()
22
+ return dotenv.get(key, default)
23
+
24
+ class Env(IEnv):
25
+
26
+ @staticmethod
27
+ def get(key: str, default: Any = None) -> Any:
28
+ """
29
+ Retrieve the value of an environment variable by key.
30
+
31
+ Parameters
32
+ ----------
33
+ key : str
34
+ The name of the environment variable to retrieve.
35
+ default : Any, optional
36
+ The value to return if the key is not found. Default is None.
37
+
38
+ Returns
39
+ -------
40
+ Any
41
+ The value of the environment variable if found, otherwise the default value.
42
+ """
43
+ dotenv = DotEnv()
44
+ return dotenv.get(key, default)
45
+
46
+ @staticmethod
47
+ def set(key: str, value: str, type_hint: str = None) -> bool:
48
+ """
49
+ Set an environment variable in the .env file.
50
+
51
+ Parameters
52
+ ----------
53
+ key : str
54
+ The name of the environment variable to set.
55
+ value : str
56
+ The value to assign to the environment variable.
57
+ type_hint : str, optional
58
+ The type of the environment variable (e.g., 'str', 'int'). Default is None.
59
+
60
+ Returns
61
+ -------
62
+ bool
63
+ True if the variable was set successfully, False otherwise.
64
+ """
65
+ dotenv = DotEnv()
66
+ return dotenv.set(key, value, type_hint)
67
+
68
+ @staticmethod
69
+ def unset(key: str) -> bool:
70
+ """
71
+ Remove the specified environment variable from the .env file.
72
+
73
+ Parameters
74
+ ----------
75
+ key : str
76
+ The name of the environment variable to remove.
77
+
78
+ Returns
79
+ -------
80
+ bool
81
+ True if the variable was successfully removed, False otherwise.
82
+ """
83
+ dotenv = DotEnv()
84
+ return dotenv.unset(key)
85
+
86
+ @staticmethod
87
+ def all() -> Dict[str, Any]:
88
+ """
89
+ Retrieve all environment variables as a dictionary.
90
+
91
+ Returns
92
+ -------
93
+ dict of str to Any
94
+ A dictionary containing all environment variables loaded by DotEnv.
95
+ """
96
+ dotenv = DotEnv()
97
+ return dotenv.all()
@@ -1,18 +1,8 @@
1
- class OrionisPathValueException(Exception):
2
- """
3
- Exception raised when a file is not found in the Orionis framework.
4
-
5
- Args:
6
- msg (str): A detailed message describing the missing file.
7
-
8
- Example:
9
- raise OrionisFileNotFoundException("File 'config.yaml' not found.")
10
- """
1
+ class OrionisEnvironmentValueError(Exception):
11
2
 
12
3
  def __init__(self, msg: str):
13
4
  """
14
5
  Initializes the exception with a custom error message.
15
-
16
6
  Args:
17
7
  msg (str): The error message describing the exception.
18
8
  """
@@ -23,6 +13,6 @@ class OrionisPathValueException(Exception):
23
13
  Return a string representation of the exception, including the class name and the first argument.
24
14
 
25
15
  Returns:
26
- str: A formatted string with the exception class name and the first argument.
16
+ str: A formatted string with the exception class name and its first argument.
27
17
  """
28
18
  return f"{self.__class__.__name__}: {self.args[0]}"
@@ -0,0 +1,23 @@
1
+ class OrionisEnvironmentValueException(Exception):
2
+
3
+ def __init__(self, msg: str):
4
+ """
5
+ Exception raised for errors related to environment values.
6
+
7
+ Parameters
8
+ ----------
9
+ msg : str
10
+ The error message describing the exception.
11
+ """
12
+ super().__init__(msg)
13
+
14
+ def __str__(self) -> str:
15
+ """
16
+ Returns a string representation of the exception.
17
+
18
+ Returns
19
+ -------
20
+ str
21
+ A formatted string with the exception class name and its first argument.
22
+ """
23
+ return f"{self.__class__.__name__}: {self.args[0]}"