orionis 0.421.0__tar.gz → 0.422.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 (516) hide show
  1. {orionis-0.421.0/orionis.egg-info → orionis-0.422.0}/PKG-INFO +1 -1
  2. {orionis-0.421.0 → orionis-0.422.0}/orionis/metadata/framework.py +1 -1
  3. orionis-0.421.0/orionis/services/environment/contracts/types.py → orionis-0.422.0/orionis/services/environment/contracts/caster.py +1 -29
  4. orionis-0.422.0/orionis/services/environment/core/dot_env.py +368 -0
  5. orionis-0.422.0/orionis/services/environment/dynamic/caster.py +902 -0
  6. orionis-0.421.0/orionis/services/environment/enums/cast_type.py → orionis-0.422.0/orionis/services/environment/enums/value_type.py +11 -10
  7. orionis-0.422.0/orionis/services/environment/key/key_generator.py +29 -0
  8. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/validators/types.py +10 -10
  9. {orionis-0.421.0 → orionis-0.422.0/orionis.egg-info}/PKG-INFO +1 -1
  10. {orionis-0.421.0 → orionis-0.422.0}/orionis.egg-info/SOURCES.txt +3 -5
  11. orionis-0.421.0/orionis/services/environment/core/dot_env.py +0 -280
  12. orionis-0.421.0/orionis/services/environment/dynamic/types.py +0 -577
  13. orionis-0.421.0/orionis/services/environment/key/key_generator.py +0 -37
  14. orionis-0.421.0/orionis/services/environment/serializer/values.py +0 -21
  15. orionis-0.421.0/tests/testing/view/__init__.py +0 -0
  16. {orionis-0.421.0 → orionis-0.422.0}/LICENCE +0 -0
  17. {orionis-0.421.0 → orionis-0.422.0}/MANIFEST.in +0 -0
  18. {orionis-0.421.0 → orionis-0.422.0}/README.md +0 -0
  19. {orionis-0.421.0 → orionis-0.422.0}/environment/__init__.py +0 -0
  20. {orionis-0.421.0 → orionis-0.422.0}/environment/test_services_environment.py +0 -0
  21. {orionis-0.421.0 → orionis-0.422.0}/orionis/__init__.py +0 -0
  22. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/__init__.py +0 -0
  23. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/base/__init__.py +0 -0
  24. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/base/command.py +0 -0
  25. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/command_filter.py +0 -0
  26. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/commands/__init__.py +0 -0
  27. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/commands/cache_clear.py +0 -0
  28. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/commands/help.py +0 -0
  29. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/commands/schedule_work.py +0 -0
  30. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/commands/version.py +0 -0
  31. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/dumper/__init__.py +0 -0
  32. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/dumper/dump_die.py +0 -0
  33. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/exceptions/__init__.py +0 -0
  34. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/exceptions/cli-orionis-value-error.py +0 -0
  35. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/exceptions/cli_exception.py +0 -0
  36. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/exceptions/cli_runtime_error.py +0 -0
  37. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/exceptions/cli_schedule_exception.py +0 -0
  38. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/kernel.py +0 -0
  39. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/output/__init__.py +0 -0
  40. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/output/console.py +0 -0
  41. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/output/executor.py +0 -0
  42. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/output/progress_bar.py +0 -0
  43. {orionis-0.421.0 → orionis-0.422.0}/orionis/_console/parser.py +0 -0
  44. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/__init__.py +0 -0
  45. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/base/__init__.py +0 -0
  46. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/base/command.py +0 -0
  47. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/base/contracts/__init__.py +0 -0
  48. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/base/contracts/command.py +0 -0
  49. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dumper/__init__.py +0 -0
  50. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dumper/contracts/__init__.py +0 -0
  51. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dumper/contracts/dump.py +0 -0
  52. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dumper/dump.py +0 -0
  53. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dynamic/__init__.py +0 -0
  54. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
  55. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
  56. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/dynamic/progress_bar.py +0 -0
  57. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/__init__.py +0 -0
  58. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/console.py +0 -0
  59. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/contracts/__init__.py +0 -0
  60. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/contracts/console.py +0 -0
  61. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/enums/__init__.py +0 -0
  62. {orionis-0.421.0 → orionis-0.422.0}/orionis/console/output/enums/styles.py +0 -0
  63. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/__init__.py +0 -0
  64. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/container.py +0 -0
  65. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/context/__init__.py +0 -0
  66. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/context/manager.py +0 -0
  67. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/context/scope.py +0 -0
  68. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/contracts/__init__.py +0 -0
  69. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/contracts/container.py +0 -0
  70. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/contracts/resolver.py +0 -0
  71. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/contracts/service_provider.py +0 -0
  72. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/entities/__init__.py +0 -0
  73. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/entities/binding.py +0 -0
  74. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/enums/__init__.py +0 -0
  75. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/enums/lifetimes.py +0 -0
  76. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/exceptions/__init__.py +0 -0
  77. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/exceptions/attribute.py +0 -0
  78. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/exceptions/exception.py +0 -0
  79. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/exceptions/type.py +0 -0
  80. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/exceptions/value.py +0 -0
  81. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/facades/__init__.py +0 -0
  82. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/facades/facade.py +0 -0
  83. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/providers/__init__.py +0 -0
  84. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/providers/service_provider.py +0 -0
  85. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/resolver/__init__.py +0 -0
  86. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/resolver/resolver.py +0 -0
  87. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/__init__.py +0 -0
  88. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/implements.py +0 -0
  89. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_abstract_class.py +0 -0
  90. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_callable.py +0 -0
  91. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_concrete_class.py +0 -0
  92. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_instance.py +0 -0
  93. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_not_subclass.py +0 -0
  94. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_subclass.py +0 -0
  95. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/is_valid_alias.py +0 -0
  96. {orionis-0.421.0 → orionis-0.422.0}/orionis/container/validators/lifetime.py +0 -0
  97. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/__init__.py +0 -0
  98. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/application.py +0 -0
  99. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/__init__.py +0 -0
  100. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/__init__.py +0 -0
  101. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
  102. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/entities/app.py +0 -0
  103. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
  104. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
  105. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/app/enums/environments.py +0 -0
  106. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/auth/__init__.py +0 -0
  107. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
  108. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
  109. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/__init__.py +0 -0
  110. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
  111. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
  112. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/entities/file.py +0 -0
  113. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
  114. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
  115. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
  116. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cors/__init__.py +0 -0
  117. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
  118. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
  119. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/__init__.py +0 -0
  120. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
  121. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/connections.py +0 -0
  122. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/database.py +0 -0
  123. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
  124. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
  125. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
  126. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
  127. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
  128. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
  129. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
  130. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
  131. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
  132. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
  133. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
  134. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
  135. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
  136. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
  137. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
  138. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
  139. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
  140. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
  141. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
  142. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
  143. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
  144. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
  145. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
  146. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/__init__.py +0 -0
  147. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
  148. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
  149. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
  150. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
  151. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
  152. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
  153. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
  154. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
  155. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
  156. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
  157. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
  158. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
  159. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/validators/level.py +0 -0
  160. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/logging/validators/path.py +0 -0
  161. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/__init__.py +0 -0
  162. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
  163. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/entities/file.py +0 -0
  164. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
  165. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
  166. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
  167. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/__init__.py +0 -0
  168. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
  169. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
  170. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/entities/database.py +0 -0
  171. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
  172. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
  173. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
  174. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/roots/__init__.py +0 -0
  175. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/roots/paths.py +0 -0
  176. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/__init__.py +0 -0
  177. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
  178. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/entities/session.py +0 -0
  179. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
  180. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
  181. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
  182. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
  183. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/startup.py +0 -0
  184. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/__init__.py +0 -0
  185. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
  186. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
  187. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
  188. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
  189. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
  190. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
  191. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/contracts/__init__.py +0 -0
  192. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/contracts/application.py +0 -0
  193. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/contracts/config.py +0 -0
  194. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/exceptions/__init__.py +0 -0
  195. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/exceptions/integrity.py +0 -0
  196. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/exceptions/runtime.py +0 -0
  197. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/exceptions/type.py +0 -0
  198. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/exceptions/value.py +0 -0
  199. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/__init__.py +0 -0
  200. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/console_provider.py +0 -0
  201. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/dumper_provider.py +0 -0
  202. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/logger_provider.py +0 -0
  203. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/path_resolver_provider.py +0 -0
  204. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
  205. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/testing_provider.py +0 -0
  206. {orionis-0.421.0 → orionis-0.422.0}/orionis/foundation/providers/workers_provider.py +0 -0
  207. {orionis-0.421.0 → orionis-0.422.0}/orionis/metadata/__init__.py +0 -0
  208. {orionis-0.421.0 → orionis-0.422.0}/orionis/metadata/package.py +0 -0
  209. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/__init__.py +0 -0
  210. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/__init__.py +0 -0
  211. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
  212. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
  213. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/coroutines.py +0 -0
  214. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
  215. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
  216. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/__init__.py +0 -0
  217. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/contracts/__init__.py +0 -0
  218. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/contracts/env.py +0 -0
  219. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/core/__init__.py +0 -0
  220. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/dynamic/__init__.py +0 -0
  221. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/enums/__init__.py +0 -0
  222. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/env.py +0 -0
  223. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/exceptions/__init__.py +0 -0
  224. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/exceptions/exception.py +0 -0
  225. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/exceptions/value.py +0 -0
  226. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/helpers/__init__.py +0 -0
  227. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/helpers/functions.py +0 -0
  228. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/key/__init__.py +0 -0
  229. {orionis-0.421.0/orionis/services/environment/serializer → orionis-0.422.0/orionis/services/environment/validators}/__init__.py +0 -0
  230. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/environment/validators/key_name.py +0 -0
  231. {orionis-0.421.0/orionis/services/environment/validators → orionis-0.422.0/orionis/services/introspection}/__init__.py +0 -0
  232. {orionis-0.421.0/orionis/services/introspection → orionis-0.422.0/orionis/services/introspection/abstract}/__init__.py +0 -0
  233. {orionis-0.421.0/orionis/services/introspection/abstract → orionis-0.422.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
  234. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
  235. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/abstract/reflection.py +0 -0
  236. {orionis-0.421.0/orionis/services/introspection/abstract/contracts → orionis-0.422.0/orionis/services/introspection/callables}/__init__.py +0 -0
  237. {orionis-0.421.0/orionis/services/introspection/callables → orionis-0.422.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
  238. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
  239. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/callables/reflection.py +0 -0
  240. {orionis-0.421.0/orionis/services/introspection/callables/contracts → orionis-0.422.0/orionis/services/introspection/concretes}/__init__.py +0 -0
  241. {orionis-0.421.0/orionis/services/introspection/concretes → orionis-0.422.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
  242. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/concretes/contracts/concrete.py +0 -0
  243. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/concretes/reflection.py +0 -0
  244. {orionis-0.421.0/orionis/services/introspection/concretes/contracts → orionis-0.422.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
  245. {orionis-0.421.0/orionis/services/introspection/dependencies → orionis-0.422.0/orionis/services/introspection/dependencies/contracts}/__init__.py +0 -0
  246. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
  247. {orionis-0.421.0/orionis/services/introspection/dependencies/contracts → orionis-0.422.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
  248. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
  249. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
  250. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
  251. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
  252. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
  253. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
  254. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
  255. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/exceptions/type.py +0 -0
  256. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/exceptions/value.py +0 -0
  257. {orionis-0.421.0/orionis/services/introspection/dependencies/entities → orionis-0.422.0/orionis/services/introspection/instances}/__init__.py +0 -0
  258. {orionis-0.421.0/orionis/services/introspection/instances → orionis-0.422.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
  259. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
  260. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/instances/reflection.py +0 -0
  261. {orionis-0.421.0/orionis/services/introspection/instances/contracts → orionis-0.422.0/orionis/services/introspection/modules}/__init__.py +0 -0
  262. {orionis-0.421.0/orionis/services/introspection/modules → orionis-0.422.0/orionis/services/introspection/modules/contracts}/__init__.py +0 -0
  263. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
  264. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/modules/reflection.py +0 -0
  265. {orionis-0.421.0/orionis/services/introspection/modules/contracts → orionis-0.422.0/orionis/services/introspection/objects}/__init__.py +0 -0
  266. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/objects/types.py +0 -0
  267. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/introspection/reflection.py +0 -0
  268. {orionis-0.421.0/orionis/services/introspection/objects → orionis-0.422.0/orionis/services/log}/__init__.py +0 -0
  269. {orionis-0.421.0/orionis/services/log → orionis-0.422.0/orionis/services/log/contracts}/__init__.py +0 -0
  270. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/contracts/log_service.py +0 -0
  271. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/exceptions/__init__.py +0 -0
  272. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/exceptions/runtime.py +0 -0
  273. {orionis-0.421.0/orionis/services/log/contracts → orionis-0.422.0/orionis/services/log/handlers}/__init__.py +0 -0
  274. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/handlers/filename.py +0 -0
  275. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/handlers/size_rotating.py +0 -0
  276. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
  277. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/log/log_service.py +0 -0
  278. {orionis-0.421.0/orionis/services/log/handlers → orionis-0.422.0/orionis/services/paths}/__init__.py +0 -0
  279. {orionis-0.421.0/orionis/services/paths → orionis-0.422.0/orionis/services/paths/contracts}/__init__.py +0 -0
  280. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/paths/contracts/resolver.py +0 -0
  281. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/paths/exceptions/__init__.py +0 -0
  282. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/paths/exceptions/exception.py +0 -0
  283. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/paths/exceptions/file.py +0 -0
  284. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/paths/resolver.py +0 -0
  285. {orionis-0.421.0/orionis/services/paths/contracts → orionis-0.422.0/orionis/services/system}/__init__.py +0 -0
  286. {orionis-0.421.0/orionis/services/system → orionis-0.422.0/orionis/services/system/contracts}/__init__.py +0 -0
  287. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/system/contracts/imports.py +0 -0
  288. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/system/contracts/workers.py +0 -0
  289. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/system/imports.py +0 -0
  290. {orionis-0.421.0/orionis/services/system/contracts → orionis-0.422.0/orionis/services/system/runtime}/__init__.py +0 -0
  291. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/system/runtime/imports.py +0 -0
  292. {orionis-0.421.0 → orionis-0.422.0}/orionis/services/system/workers.py +0 -0
  293. {orionis-0.421.0/orionis/services/system/runtime → orionis-0.422.0/orionis/support}/__init__.py +0 -0
  294. {orionis-0.421.0/orionis/support → orionis-0.422.0/orionis/support/entities}/__init__.py +0 -0
  295. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/entities/base.py +0 -0
  296. {orionis-0.421.0/orionis/support/entities → orionis-0.422.0/orionis/support/facades}/__init__.py +0 -0
  297. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/console.py +0 -0
  298. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/dumper.py +0 -0
  299. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/logger.py +0 -0
  300. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/path_resolver.py +0 -0
  301. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/progress_bar.py +0 -0
  302. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/testing.py +0 -0
  303. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/facades/workers.py +0 -0
  304. {orionis-0.421.0/orionis/support/facades → orionis-0.422.0/orionis/support/formatter}/__init__.py +0 -0
  305. {orionis-0.421.0/orionis/support/formatter → orionis-0.422.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
  306. {orionis-0.421.0/orionis/support/formatter/exceptions → orionis-0.422.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
  307. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
  308. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/formatter/exceptions/parser.py +0 -0
  309. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/formatter/serializer.py +0 -0
  310. {orionis-0.421.0/orionis/support/formatter/exceptions/contracts → orionis-0.422.0/orionis/support/patterns}/__init__.py +0 -0
  311. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/patterns/singleton/__init__.py +0 -0
  312. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/patterns/singleton/meta.py +0 -0
  313. {orionis-0.421.0/orionis/support/patterns → orionis-0.422.0/orionis/support/standard}/__init__.py +0 -0
  314. {orionis-0.421.0/orionis/support/standard → orionis-0.422.0/orionis/support/standard/contracts}/__init__.py +0 -0
  315. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/standard/contracts/std.py +0 -0
  316. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/standard/exceptions/__init__.py +0 -0
  317. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/standard/exceptions/value.py +0 -0
  318. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/standard/std.py +0 -0
  319. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/wrapper/__init__.py +0 -0
  320. {orionis-0.421.0 → orionis-0.422.0}/orionis/support/wrapper/dot_dict.py +0 -0
  321. {orionis-0.421.0/orionis/support/standard/contracts → orionis-0.422.0/orionis/test}/__init__.py +0 -0
  322. {orionis-0.421.0/orionis/test → orionis-0.422.0/orionis/test/cases}/__init__.py +0 -0
  323. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/cases/asynchronous.py +0 -0
  324. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/cases/synchronous.py +0 -0
  325. {orionis-0.421.0/orionis/test/cases → orionis-0.422.0/orionis/test/contracts}/__init__.py +0 -0
  326. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/dumper.py +0 -0
  327. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/kernel.py +0 -0
  328. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/logs.py +0 -0
  329. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/printer.py +0 -0
  330. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/render.py +0 -0
  331. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/test_result.py +0 -0
  332. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/contracts/unit_test.py +0 -0
  333. {orionis-0.421.0/orionis/test/contracts → orionis-0.422.0/orionis/test/core}/__init__.py +0 -0
  334. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/core/unit_test.py +0 -0
  335. {orionis-0.421.0/orionis/test/core → orionis-0.422.0/orionis/test/entities}/__init__.py +0 -0
  336. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/entities/result.py +0 -0
  337. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/enums/__init__.py +0 -0
  338. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/enums/status.py +0 -0
  339. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/__init__.py +0 -0
  340. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/config.py +0 -0
  341. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/failure.py +0 -0
  342. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/persistence.py +0 -0
  343. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/runtime.py +0 -0
  344. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/exceptions/value.py +0 -0
  345. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/kernel.py +0 -0
  346. {orionis-0.421.0/orionis/test/entities → orionis-0.422.0/orionis/test/output}/__init__.py +0 -0
  347. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/output/dumper.py +0 -0
  348. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/output/printer.py +0 -0
  349. {orionis-0.421.0/orionis/test/output → orionis-0.422.0/orionis/test/records}/__init__.py +0 -0
  350. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/records/logs.py +0 -0
  351. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/__init__.py +0 -0
  352. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/base_path.py +0 -0
  353. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/execution_mode.py +0 -0
  354. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/fail_fast.py +0 -0
  355. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/folder_path.py +0 -0
  356. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/module_name.py +0 -0
  357. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/name_pattern.py +0 -0
  358. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/pattern.py +0 -0
  359. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/persistent.py +0 -0
  360. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/persistent_driver.py +0 -0
  361. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/print_result.py +0 -0
  362. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/tags.py +0 -0
  363. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/throw_exception.py +0 -0
  364. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/verbosity.py +0 -0
  365. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/web_report.py +0 -0
  366. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/validators/workers.py +0 -0
  367. {orionis-0.421.0/orionis/test/records → orionis-0.422.0/orionis/test/view}/__init__.py +0 -0
  368. {orionis-0.421.0 → orionis-0.422.0}/orionis/test/view/render.py +0 -0
  369. {orionis-0.421.0 → orionis-0.422.0}/orionis.egg-info/dependency_links.txt +0 -0
  370. {orionis-0.421.0 → orionis-0.422.0}/orionis.egg-info/requires.txt +0 -0
  371. {orionis-0.421.0 → orionis-0.422.0}/orionis.egg-info/top_level.txt +0 -0
  372. {orionis-0.421.0 → orionis-0.422.0}/orionis.egg-info/zip-safe +0 -0
  373. {orionis-0.421.0 → orionis-0.422.0}/setup.cfg +0 -0
  374. {orionis-0.421.0 → orionis-0.422.0}/setup.py +0 -0
  375. {orionis-0.421.0/orionis/test/view → orionis-0.422.0/tests}/__init__.py +0 -0
  376. {orionis-0.421.0/tests → orionis-0.422.0/tests/container}/__init__.py +0 -0
  377. {orionis-0.421.0/tests/container → orionis-0.422.0/tests/container/context}/__init__.py +0 -0
  378. {orionis-0.421.0 → orionis-0.422.0}/tests/container/context/test_manager.py +0 -0
  379. {orionis-0.421.0 → orionis-0.422.0}/tests/container/context/test_scope.py +0 -0
  380. {orionis-0.421.0/tests/container/context → orionis-0.422.0/tests/container/entities}/__init__.py +0 -0
  381. {orionis-0.421.0 → orionis-0.422.0}/tests/container/entities/test_binding.py +0 -0
  382. {orionis-0.421.0/tests/container/entities → orionis-0.422.0/tests/container/enums}/__init__.py +0 -0
  383. {orionis-0.421.0 → orionis-0.422.0}/tests/container/enums/test_lifetimes.py +0 -0
  384. {orionis-0.421.0/tests/container/enums → orionis-0.422.0/tests/container/facades}/__init__.py +0 -0
  385. {orionis-0.421.0 → orionis-0.422.0}/tests/container/facades/test_facade.py +0 -0
  386. {orionis-0.421.0/tests/container/facades → orionis-0.422.0/tests/container/mocks}/__init__.py +0 -0
  387. {orionis-0.421.0 → orionis-0.422.0}/tests/container/mocks/mock_complex_classes.py +0 -0
  388. {orionis-0.421.0 → orionis-0.422.0}/tests/container/mocks/mock_simple_classes.py +0 -0
  389. {orionis-0.421.0/tests/container/mocks → orionis-0.422.0/tests/container/providers}/__init__.py +0 -0
  390. {orionis-0.421.0 → orionis-0.422.0}/tests/container/providers/test_providers.py +0 -0
  391. {orionis-0.421.0/tests/container/providers → orionis-0.422.0/tests/container/resolver}/__init__.py +0 -0
  392. {orionis-0.421.0 → orionis-0.422.0}/tests/container/resolver/test_resolver.py +0 -0
  393. {orionis-0.421.0 → orionis-0.422.0}/tests/container/test_container.py +0 -0
  394. {orionis-0.421.0 → orionis-0.422.0}/tests/container/test_singleton.py +0 -0
  395. {orionis-0.421.0 → orionis-0.422.0}/tests/container/test_thread_safety.py +0 -0
  396. {orionis-0.421.0/tests/container/resolver → orionis-0.422.0/tests/container/validators}/__init__.py +0 -0
  397. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_implements.py +0 -0
  398. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_abstract_class.py +0 -0
  399. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_callable.py +0 -0
  400. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_concrete_class.py +0 -0
  401. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_instance.py +0 -0
  402. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_not_subclass.py +0 -0
  403. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_subclass.py +0 -0
  404. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_is_valid_alias.py +0 -0
  405. {orionis-0.421.0 → orionis-0.422.0}/tests/container/validators/test_lifetime.py +0 -0
  406. {orionis-0.421.0/tests/container/validators → orionis-0.422.0/tests/example}/__init__.py +0 -0
  407. {orionis-0.421.0 → orionis-0.422.0}/tests/example/test_example.py +0 -0
  408. {orionis-0.421.0/tests/example → orionis-0.422.0/tests/foundation}/__init__.py +0 -0
  409. {orionis-0.421.0/tests/foundation → orionis-0.422.0/tests/foundation/config}/__init__.py +0 -0
  410. {orionis-0.421.0/tests/foundation/config → orionis-0.422.0/tests/foundation/config/app}/__init__.py +0 -0
  411. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
  412. {orionis-0.421.0/tests/foundation/config/app → orionis-0.422.0/tests/foundation/config/auth}/__init__.py +0 -0
  413. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
  414. {orionis-0.421.0/tests/foundation/config/auth → orionis-0.422.0/tests/foundation/config/cache}/__init__.py +0 -0
  415. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
  416. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
  417. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
  418. {orionis-0.421.0/tests/foundation/config/cache → orionis-0.422.0/tests/foundation/config/cors}/__init__.py +0 -0
  419. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
  420. {orionis-0.421.0/tests/foundation/config/cors → orionis-0.422.0/tests/foundation/config/database}/__init__.py +0 -0
  421. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
  422. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
  423. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
  424. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
  425. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
  426. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
  427. {orionis-0.421.0/tests/foundation/config/database → orionis-0.422.0/tests/foundation/config/filesystems}/__init__.py +0 -0
  428. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
  429. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
  430. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
  431. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
  432. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
  433. {orionis-0.421.0/tests/foundation/config/filesystems → orionis-0.422.0/tests/foundation/config/logging}/__init__.py +0 -0
  434. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
  435. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
  436. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
  437. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
  438. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
  439. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
  440. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
  441. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
  442. {orionis-0.421.0/tests/foundation/config/logging → orionis-0.422.0/tests/foundation/config/mail}/__init__.py +0 -0
  443. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
  444. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
  445. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
  446. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
  447. {orionis-0.421.0/tests/foundation/config/mail → orionis-0.422.0/tests/foundation/config/queue}/__init__.py +0 -0
  448. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
  449. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
  450. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
  451. {orionis-0.421.0/tests/foundation/config/queue → orionis-0.422.0/tests/foundation/config/root}/__init__.py +0 -0
  452. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
  453. {orionis-0.421.0/tests/foundation/config/root → orionis-0.422.0/tests/foundation/config/session}/__init__.py +0 -0
  454. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
  455. {orionis-0.421.0/tests/foundation/config/session → orionis-0.422.0/tests/foundation/config/startup}/__init__.py +0 -0
  456. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
  457. {orionis-0.421.0/tests/foundation/config/startup → orionis-0.422.0/tests/foundation/config/testing}/__init__.py +0 -0
  458. {orionis-0.421.0 → orionis-0.422.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
  459. {orionis-0.421.0/tests/foundation/config/testing → orionis-0.422.0/tests/metadata}/__init__.py +0 -0
  460. {orionis-0.421.0 → orionis-0.422.0}/tests/metadata/test_metadata_framework.py +0 -0
  461. {orionis-0.421.0 → orionis-0.422.0}/tests/metadata/test_metadata_package.py +0 -0
  462. {orionis-0.421.0/tests/metadata → orionis-0.422.0/tests/services}/__init__.py +0 -0
  463. {orionis-0.421.0/tests/services → orionis-0.422.0/tests/services/asynchrony}/__init__.py +0 -0
  464. {orionis-0.421.0 → orionis-0.422.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
  465. {orionis-0.421.0/tests/services/asynchrony → orionis-0.422.0/tests/services/introspection}/__init__.py +0 -0
  466. {orionis-0.421.0/tests/services/introspection → orionis-0.422.0/tests/services/introspection/dependencies}/__init__.py +0 -0
  467. {orionis-0.421.0/tests/services/introspection/dependencies → orionis-0.422.0/tests/services/introspection/dependencies/mocks}/__init__.py +0 -0
  468. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
  469. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
  470. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
  471. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
  472. {orionis-0.421.0/tests/services/introspection/dependencies/mocks → orionis-0.422.0/tests/services/introspection/reflection}/__init__.py +0 -0
  473. {orionis-0.421.0/tests/services/introspection/reflection → orionis-0.422.0/tests/services/introspection/reflection/mock}/__init__.py +0 -0
  474. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
  475. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
  476. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
  477. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
  478. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
  479. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
  480. {orionis-0.421.0 → orionis-0.422.0}/tests/services/introspection/test_reflection.py +0 -0
  481. {orionis-0.421.0/tests/services/introspection/reflection/mock → orionis-0.422.0/tests/services/log}/__init__.py +0 -0
  482. {orionis-0.421.0 → orionis-0.422.0}/tests/services/log/test_log.py +0 -0
  483. {orionis-0.421.0/tests/services/log → orionis-0.422.0/tests/services/path}/__init__.py +0 -0
  484. {orionis-0.421.0 → orionis-0.422.0}/tests/services/path/test_services_resolver.py +0 -0
  485. {orionis-0.421.0/tests/services/path → orionis-0.422.0/tests/services/system}/__init__.py +0 -0
  486. {orionis-0.421.0 → orionis-0.422.0}/tests/services/system/test_services_system_imports.py +0 -0
  487. {orionis-0.421.0 → orionis-0.422.0}/tests/services/system/test_services_system_workers.py +0 -0
  488. {orionis-0.421.0/tests/services/system → orionis-0.422.0/tests/support}/__init__.py +0 -0
  489. {orionis-0.421.0/tests/support → orionis-0.422.0/tests/support/entities}/__init__.py +0 -0
  490. {orionis-0.421.0 → orionis-0.422.0}/tests/support/entities/mock_dataclass.py +0 -0
  491. {orionis-0.421.0 → orionis-0.422.0}/tests/support/entities/test_base.py +0 -0
  492. {orionis-0.421.0/tests/support/entities → orionis-0.422.0/tests/support/patterns}/__init__.py +0 -0
  493. {orionis-0.421.0/tests/support/patterns → orionis-0.422.0/tests/support/patterns/singleton}/__init__.py +0 -0
  494. {orionis-0.421.0 → orionis-0.422.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
  495. {orionis-0.421.0/tests/support/patterns/singleton → orionis-0.422.0/tests/support/standard}/__init__.py +0 -0
  496. {orionis-0.421.0 → orionis-0.422.0}/tests/support/standard/test_services_std.py +0 -0
  497. {orionis-0.421.0/tests/support/standard → orionis-0.422.0/tests/support/wrapper}/__init__.py +0 -0
  498. {orionis-0.421.0 → orionis-0.422.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
  499. {orionis-0.421.0/tests/support/wrapper → orionis-0.422.0/tests/testing}/__init__.py +0 -0
  500. {orionis-0.421.0/tests/testing → orionis-0.422.0/tests/testing/cases}/__init__.py +0 -0
  501. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
  502. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
  503. {orionis-0.421.0/tests/testing/cases → orionis-0.422.0/tests/testing/entities}/__init__.py +0 -0
  504. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/entities/test_testing_result.py +0 -0
  505. {orionis-0.421.0/tests/testing/entities → orionis-0.422.0/tests/testing/enums}/__init__.py +0 -0
  506. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/enums/test_testing_status.py +0 -0
  507. {orionis-0.421.0/tests/testing/enums → orionis-0.422.0/tests/testing/output}/__init__.py +0 -0
  508. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/output/test_testing_dumper.py +0 -0
  509. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/output/test_testing_printer.py +0 -0
  510. {orionis-0.421.0/tests/testing/output → orionis-0.422.0/tests/testing/records}/__init__.py +0 -0
  511. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/records/test_testing_records.py +0 -0
  512. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/test_testing_unit.py +0 -0
  513. {orionis-0.421.0/tests/testing/records → orionis-0.422.0/tests/testing/validators}/__init__.py +0 -0
  514. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/validators/test_testing_validators.py +0 -0
  515. {orionis-0.421.0/tests/testing/validators → orionis-0.422.0/tests/testing/view}/__init__.py +0 -0
  516. {orionis-0.421.0 → orionis-0.422.0}/tests/testing/view/test_render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.421.0
3
+ Version: 0.422.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.421.0"
8
+ VERSION = "0.422.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,6 +1,6 @@
1
1
  from abc import ABC, abstractmethod
2
2
 
3
- class IEnvTypes(ABC):
3
+ class IEnvironmentCaster(ABC):
4
4
 
5
5
  @abstractmethod
6
6
  def to(self, type_hint: str):
@@ -19,34 +19,6 @@ class IEnvTypes(ABC):
19
19
  """
20
20
  pass
21
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
22
  @abstractmethod
51
23
  def get(self):
52
24
  """
@@ -0,0 +1,368 @@
1
+ import os
2
+ import ast
3
+ import threading
4
+ from pathlib import Path
5
+ from typing import Any, Optional, Union
6
+ from dotenv import dotenv_values, load_dotenv, set_key, unset_key
7
+ from orionis.services.environment.enums.value_type import EnvironmentValueType
8
+ from orionis.services.environment.validators.key_name import ValidateKeyName
9
+ from orionis.services.environment.validators.types import ValidateTypes
10
+ from orionis.support.patterns.singleton import Singleton
11
+ from orionis.services.environment.dynamic.caster import EnvironmentCaster
12
+
13
+ class DotEnv(metaclass=Singleton):
14
+
15
+ # Thread-safe singleton instance lock
16
+ _lock = threading.RLock()
17
+
18
+ def __init__(
19
+ self,
20
+ path: str = None
21
+ ) -> None:
22
+ """
23
+ Initialize the DotEnv service and prepare the `.env` file for environment variable management.
24
+
25
+ This constructor determines the location of the `.env` file, ensures its existence,
26
+ and loads its contents into the current process environment. If a custom path is provided,
27
+ it is resolved and used; otherwise, a `.env` file in the current working directory is used.
28
+
29
+ Parameters
30
+ ----------
31
+ path : str, optional
32
+ The path to the `.env` file. If not specified, defaults to a `.env` file
33
+ in the current working directory.
34
+
35
+ Returns
36
+ -------
37
+ None
38
+ This method does not return any value.
39
+
40
+ Raises
41
+ ------
42
+ OSError
43
+ If the `.env` file cannot be created or accessed.
44
+
45
+ Notes
46
+ -----
47
+ - Ensures thread safety during initialization.
48
+ - If the specified `.env` file does not exist, it is created automatically.
49
+ - Loads environment variables from the `.env` file into the process environment.
50
+ """
51
+ try:
52
+
53
+ # Ensure thread-safe initialization
54
+ with self._lock:
55
+
56
+ # Set default .env file path to current working directory
57
+ self.__resolved_path = Path(os.getcwd()) / ".env"
58
+
59
+ # If a custom path is provided, resolve and use it
60
+ if path:
61
+ self.__resolved_path = Path(path).expanduser().resolve()
62
+
63
+ # Create the .env file if it does not exist
64
+ if not self.__resolved_path.exists():
65
+ self.__resolved_path.touch()
66
+
67
+ # Load environment variables from the .env file into the process environment
68
+ load_dotenv(self.__resolved_path)
69
+
70
+ except OSError as e:
71
+
72
+ # Raise an error if the .env file cannot be created or accessed
73
+ raise OSError(f"Failed to create or access the .env file at {self.__resolved_path}: {e}")
74
+
75
+ def set(
76
+ self,
77
+ key: str,
78
+ value: Union[str, int, float, bool, list, dict, tuple, set],
79
+ type_hint: str | EnvironmentValueType = None
80
+ ) -> bool:
81
+ """
82
+ Set an environment variable in both the `.env` file and the current process environment.
83
+
84
+ This method serializes the provided value (optionally using a type hint), validates the key,
85
+ and updates the corresponding entry in the `.env` file as well as the process's environment
86
+ variables. Thread safety is ensured during the operation.
87
+
88
+ Parameters
89
+ ----------
90
+ key : str
91
+ The name of the environment variable to set. Must be a valid environment variable name.
92
+ value : Union[str, int, float, bool, list, dict, tuple, set]
93
+ The value to assign to the environment variable. Supported types include string, integer,
94
+ float, boolean, list, dictionary, tuple, and set.
95
+ type_hint : str or EnvironmentValueType, optional
96
+ An explicit type hint to guide serialization. If provided, the value is serialized
97
+ according to the specified type.
98
+
99
+ Returns
100
+ -------
101
+ bool
102
+ Returns True if the environment variable was successfully set in both the `.env` file
103
+ and the current process environment.
104
+
105
+ Raises
106
+ ------
107
+ OrionisEnvironmentValueError
108
+ If the provided key is not a valid environment variable name.
109
+ """
110
+ with self._lock:
111
+ # Validate the environment variable key name.
112
+ __key = ValidateKeyName(key)
113
+
114
+ # If a type hint is provided, validate and serialize the value accordingly.
115
+ if type_hint is not None:
116
+ __type = ValidateTypes(value, type_hint)
117
+ __value = self.__serializeValue(value, __type)
118
+ else:
119
+ # Serialize the value without a type hint.
120
+ __value = self.__serializeValue(value)
121
+
122
+ # Set the environment variable in the .env file.
123
+ set_key(self.__resolved_path, __key, __value)
124
+
125
+ # Update the environment variable in the current process environment.
126
+ os.environ[__key] = __value
127
+
128
+ # Indicate successful operation.
129
+ return True
130
+
131
+ def get(
132
+ self,
133
+ key: str,
134
+ default: Optional[Any] = None
135
+ ) -> Any:
136
+ """
137
+ Get the value of an environment variable.
138
+
139
+ Parameters
140
+ ----------
141
+ key : str
142
+ Name of the environment variable to retrieve.
143
+ default : Any, optional
144
+ Value to return if the key is not found. Default is None.
145
+
146
+ Returns
147
+ -------
148
+ Any
149
+ Parsed value of the environment variable, or `default` if not found.
150
+
151
+ Raises
152
+ ------
153
+ OrionisEnvironmentValueError
154
+ If `key` is not a string.
155
+ """
156
+ with self._lock:
157
+
158
+ # Ensure the key is a string.
159
+ __key = ValidateKeyName(key)
160
+
161
+ # Get the value from the .env file or the current environment.
162
+ value = dotenv_values(self.__resolved_path).get(__key)
163
+
164
+ # If the value is not found in the .env file, check the current environment variables.
165
+ if value is None:
166
+ value = os.getenv(__key)
167
+
168
+ # Parse the value using the internal __parseValue method and return it
169
+ return self.__parseValue(value) if value is not None else default
170
+
171
+ def unset(self, key: str) -> bool:
172
+ """
173
+ Remove an environment variable from both the `.env` file and the current process environment.
174
+
175
+ This method deletes the specified environment variable from the resolved `.env` file
176
+ and removes it from the current process's environment variables. The operation is
177
+ performed in a thread-safe manner. The key is validated before removal.
178
+
179
+ Parameters
180
+ ----------
181
+ key : str
182
+ The name of the environment variable to remove. Must be a valid environment variable name.
183
+
184
+ Returns
185
+ -------
186
+ bool
187
+ Returns True if the environment variable was successfully removed from both the `.env` file
188
+ and the process environment. Returns True even if the variable does not exist.
189
+
190
+ Raises
191
+ ------
192
+ OrionisEnvironmentValueError
193
+ If the provided key is not a valid environment variable name.
194
+
195
+ Notes
196
+ -----
197
+ - The method is thread-safe.
198
+ - If the environment variable does not exist, the method has no effect and returns True.
199
+ """
200
+ with self._lock:
201
+
202
+ # Validate the environment variable key name.
203
+ validated_key = ValidateKeyName(key)
204
+
205
+ # Remove the key from the .env file.
206
+ unset_key(self.__resolved_path, validated_key)
207
+
208
+ # Remove the key from the current process environment, if present.
209
+ os.environ.pop(validated_key, None)
210
+
211
+ # Indicate successful operation.
212
+ return True
213
+
214
+ def all(self) -> dict:
215
+ """
216
+ Retrieve all environment variables from the resolved `.env` file as a dictionary.
217
+
218
+ This method reads all key-value pairs from the currently resolved `.env` file and
219
+ parses each value into its appropriate Python type using the internal `__parseValue`
220
+ method. The returned dictionary contains environment variable names as keys and their
221
+ parsed values as values.
222
+
223
+ Returns
224
+ -------
225
+ dict
226
+ A dictionary where each key is an environment variable name (str) and each value
227
+ is the parsed Python representation of the variable as determined by `__parseValue`.
228
+ If the `.env` file is empty, an empty dictionary is returned.
229
+
230
+ Notes
231
+ -----
232
+ - Thread safety is ensured during the read operation.
233
+ - Only variables present in the `.env` file are returned; variables set only in the
234
+ process environment are not included.
235
+ """
236
+ with self._lock:
237
+
238
+ # Read all raw key-value pairs from the .env file
239
+ raw_values = dotenv_values(self.__resolved_path)
240
+
241
+ # Parse each value and return as a dictionary
242
+ return {k: self.__parseValue(v) for k, v in raw_values.items()}
243
+
244
+ def __serializeValue(
245
+ self,
246
+ value: Any,
247
+ type_hint: str | EnvironmentValueType = None
248
+ ) -> str:
249
+ """
250
+ Serialize a Python value into a string suitable for storage in a .env file.
251
+
252
+ This method converts the provided value into a string representation that can be
253
+ safely written to a .env file. If a type hint is provided, the value is serialized
254
+ according to the specified type using the EnvTypes utility. Otherwise, the method
255
+ infers the serialization strategy based on the value's type.
256
+
257
+ Parameters
258
+ ----------
259
+ value : Any
260
+ The value to serialize. Supported types include None, str, int, float, bool,
261
+ list, dict, tuple, and set.
262
+ type_hint : str or EnvironmentValueType, optional
263
+ An explicit type hint to guide serialization. If provided, the value is
264
+ serialized using EnvTypes.
265
+
266
+ Returns
267
+ -------
268
+ str
269
+ The serialized string representation of the input value, suitable for storage
270
+ in a .env file. Returns "null" for None values.
271
+ """
272
+
273
+ # Handle None values explicitly
274
+ if value is None:
275
+ return "null"
276
+
277
+ # If a type hint is provided, use EnvTypes for serialization
278
+ if type_hint:
279
+
280
+ # Use EnvironmentCaster to handle type hints
281
+ return EnvironmentCaster(value).to(type_hint)
282
+
283
+ else:
284
+
285
+ # Serialize strings by stripping whitespace
286
+ if isinstance(value, str):
287
+ return value.strip()
288
+
289
+ # Serialize booleans as lowercase strings ("true" or "false")
290
+ if isinstance(value, bool):
291
+ return str(value).lower()
292
+
293
+ # Serialize integers and floats as strings
294
+ if isinstance(value, (int, float)):
295
+ return str(value)
296
+
297
+ # Serialize collections (list, dict, tuple, set) using repr
298
+ if isinstance(value, (list, dict, tuple, set)):
299
+ return repr(value)
300
+
301
+ # Fallback: convert any other type to string
302
+ return str(value)
303
+
304
+ def __parseValue(
305
+ self,
306
+ value: Any
307
+ ) -> Any:
308
+ """
309
+ Parse a string or raw value from the .env file into its appropriate Python type.
310
+
311
+ This method attempts to convert the input value, which may be a string or already a Python object,
312
+ into its most suitable Python type. It handles common representations of null, booleans, and
313
+ attempts to parse collections and literals. If parsing fails, the original string is returned.
314
+
315
+ Parameters
316
+ ----------
317
+ value : Any
318
+ The value to parse, typically a string read from the .env file, but may also be a Python object.
319
+
320
+ Returns
321
+ -------
322
+ Any
323
+ The parsed Python value. Returns `None` for recognized null representations, a boolean for
324
+ "true"/"false" strings, a Python literal (list, dict, int, etc.) if possible, or the original
325
+ string if no conversion is possible.
326
+
327
+ Notes
328
+ -----
329
+ - Recognizes 'none', 'null', 'nan', 'nil' (case-insensitive) as null values.
330
+ - Attempts to use `EnvironmentCaster` for advanced type parsing.
331
+ - Falls back to `ast.literal_eval` for literal evaluation.
332
+ - Returns the original string if all parsing attempts fail.
333
+ """
334
+
335
+ # Early return for None values
336
+ if value is None:
337
+ return None
338
+
339
+ # Return immediately if already a basic Python type
340
+ if isinstance(value, (bool, int, float, dict, list, tuple, set)):
341
+ return value
342
+
343
+ # Convert the value to string for further processing
344
+ value_str = str(value)
345
+
346
+ # Handle empty strings and common null representations
347
+ # This includes 'none', 'null', 'nan', 'nil' (case-insensitive)
348
+ if not value_str or value_str.lower().strip() in {'none', 'null', 'nan', 'nil'}:
349
+ return None
350
+
351
+ # Boolean detection for string values (case-insensitive)
352
+ lower_val = value_str.lower().strip()
353
+ if lower_val in ('true', 'false'):
354
+ return lower_val == 'true'
355
+
356
+ # Attempt to parse using EnvironmentCaster for advanced types
357
+ # Try to detect if the value string starts with a known EnvironmentValueType prefix
358
+ env_type_prefixes = {str(e.value) for e in EnvironmentValueType}
359
+ if any(value_str.startswith(prefix) for prefix in env_type_prefixes):
360
+ return EnvironmentCaster(value_str).get()
361
+
362
+ # Attempt to parse using ast.literal_eval for Python literals
363
+ try:
364
+ return ast.literal_eval(value_str)
365
+
366
+ # Return the original string if parsing fails
367
+ except (ValueError, SyntaxError):
368
+ return value_str