aury-boot 0.0.23__tar.gz → 0.0.25__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 (198) hide show
  1. {aury_boot-0.0.23 → aury_boot-0.0.25}/PKG-INFO +1 -1
  2. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/_version.py +2 -2
  3. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/app/components.py +46 -0
  4. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/constants/components.py +3 -0
  5. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/13-channel.md.tpl +4 -7
  6. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/manager.py +18 -11
  7. {aury_boot-0.0.23 → aury_boot-0.0.25}/.gitignore +0 -0
  8. {aury_boot-0.0.23 → aury_boot-0.0.25}/README.md +0 -0
  9. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/__init__.py +0 -0
  10. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/__init__.py +0 -0
  11. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/__init__.py +0 -0
  12. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/base.py +0 -0
  13. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/config.py +0 -0
  14. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/decorators.py +0 -0
  15. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/exceptions.py +0 -0
  16. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/adapter/http.py +0 -0
  17. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/app/__init__.py +0 -0
  18. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/app/base.py +0 -0
  19. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/app/middlewares.py +0 -0
  20. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/app/startup.py +0 -0
  21. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/config/__init__.py +0 -0
  22. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/config/multi_instance.py +0 -0
  23. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/config/settings.py +0 -0
  24. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/constants/__init__.py +0 -0
  25. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/constants/scheduler.py +0 -0
  26. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/constants/service.py +0 -0
  27. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/__init__.py +0 -0
  28. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/chain.py +0 -0
  29. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/codes.py +0 -0
  30. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/exceptions.py +0 -0
  31. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/handlers.py +0 -0
  32. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/errors/response.py +0 -0
  33. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/interfaces/__init__.py +0 -0
  34. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/interfaces/egress.py +0 -0
  35. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/interfaces/ingress.py +0 -0
  36. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/middleware/__init__.py +0 -0
  37. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/middleware/logging.py +0 -0
  38. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/migrations/__init__.py +0 -0
  39. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/migrations/manager.py +0 -0
  40. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/migrations/setup.py +0 -0
  41. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/rpc/__init__.py +0 -0
  42. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/rpc/base.py +0 -0
  43. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/rpc/client.py +0 -0
  44. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/rpc/discovery.py +0 -0
  45. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/scheduler/__init__.py +0 -0
  46. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/scheduler/runner.py +0 -0
  47. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/application/server/__init__.py +0 -0
  48. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/__init__.py +0 -0
  49. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/add.py +0 -0
  50. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/app.py +0 -0
  51. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/config.py +0 -0
  52. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/docker.py +0 -0
  53. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/docs.py +0 -0
  54. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/generate.py +0 -0
  55. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/init.py +0 -0
  56. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/migrate/__init__.py +0 -0
  57. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/migrate/app.py +0 -0
  58. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/migrate/commands.py +0 -0
  59. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/pkg.py +0 -0
  60. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/scheduler.py +0 -0
  61. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/server/__init__.py +0 -0
  62. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/server/app.py +0 -0
  63. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/generate/api.py.tpl +0 -0
  64. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/generate/model.py.tpl +0 -0
  65. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/generate/repository.py.tpl +0 -0
  66. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/generate/schema.py.tpl +0 -0
  67. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/generate/service.py.tpl +0 -0
  68. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/AGENTS.md.tpl +0 -0
  69. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/README.md.tpl +0 -0
  70. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/admin_console_init.py.tpl +0 -0
  71. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/00-overview.md.tpl +0 -0
  72. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/01-model.md.tpl +0 -0
  73. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/02-repository.md.tpl +0 -0
  74. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/03-service.md.tpl +0 -0
  75. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/04-schema.md.tpl +0 -0
  76. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/05-api.md.tpl +0 -0
  77. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/06-exception.md.tpl +0 -0
  78. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/07-cache.md.tpl +0 -0
  79. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/08-scheduler.md.tpl +0 -0
  80. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/09-tasks.md.tpl +0 -0
  81. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/10-storage.md.tpl +0 -0
  82. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/11-logging.md.tpl +0 -0
  83. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/12-admin.md.tpl +0 -0
  84. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/14-mq.md.tpl +0 -0
  85. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/15-events.md.tpl +0 -0
  86. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/16-adapter.md.tpl +0 -0
  87. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/aury_docs/99-cli.md.tpl +0 -0
  88. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/config.py.tpl +0 -0
  89. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/conftest.py.tpl +0 -0
  90. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/_header.tpl +0 -0
  91. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/admin.tpl +0 -0
  92. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/cache.tpl +0 -0
  93. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/database.tpl +0 -0
  94. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/log.tpl +0 -0
  95. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/messaging.tpl +0 -0
  96. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/rpc.tpl +0 -0
  97. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/scheduler.tpl +0 -0
  98. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/service.tpl +0 -0
  99. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/storage.tpl +0 -0
  100. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/env_templates/third_party.tpl +0 -0
  101. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/gitignore.tpl +0 -0
  102. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/main.py.tpl +0 -0
  103. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/modules/api.py.tpl +0 -0
  104. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/modules/exceptions.py.tpl +0 -0
  105. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/modules/schedules.py.tpl +0 -0
  106. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/templates/project/modules/tasks.py.tpl +0 -0
  107. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/commands/worker.py +0 -0
  108. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/__init__.py +0 -0
  109. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/exceptions/__init__.py +0 -0
  110. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/i18n/__init__.py +0 -0
  111. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/i18n/translator.py +0 -0
  112. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/logging/__init__.py +0 -0
  113. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/logging/context.py +0 -0
  114. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/logging/decorators.py +0 -0
  115. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/logging/format.py +0 -0
  116. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/common/logging/setup.py +0 -0
  117. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/__init__.py +0 -0
  118. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/admin_console/__init__.py +0 -0
  119. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/admin_console/auth.py +0 -0
  120. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/admin_console/discovery.py +0 -0
  121. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/admin_console/install.py +0 -0
  122. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/contrib/admin_console/utils.py +0 -0
  123. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/__init__.py +0 -0
  124. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/exceptions/__init__.py +0 -0
  125. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/models/__init__.py +0 -0
  126. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/models/base.py +0 -0
  127. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/models/mixins.py +0 -0
  128. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/models/models.py +0 -0
  129. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/pagination/__init__.py +0 -0
  130. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/repository/__init__.py +0 -0
  131. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/repository/impl.py +0 -0
  132. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/repository/interceptors.py +0 -0
  133. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/repository/interface.py +0 -0
  134. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/repository/query_builder.py +0 -0
  135. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/service/__init__.py +0 -0
  136. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/service/base.py +0 -0
  137. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/domain/transaction/__init__.py +0 -0
  138. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/__init__.py +0 -0
  139. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/__init__.py +0 -0
  140. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/backends.py +0 -0
  141. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/base.py +0 -0
  142. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/exceptions.py +0 -0
  143. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/factory.py +0 -0
  144. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/cache/manager.py +0 -0
  145. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/__init__.py +0 -0
  146. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/backends/__init__.py +0 -0
  147. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/backends/memory.py +0 -0
  148. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/backends/redis.py +0 -0
  149. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/channel/base.py +0 -0
  150. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/__init__.py +0 -0
  151. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/rabbitmq/__init__.py +0 -0
  152. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/rabbitmq/config.py +0 -0
  153. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/rabbitmq/manager.py +0 -0
  154. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/redis/__init__.py +0 -0
  155. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/redis/config.py +0 -0
  156. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/clients/redis/manager.py +0 -0
  157. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/__init__.py +0 -0
  158. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/config.py +0 -0
  159. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/exceptions.py +0 -0
  160. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/manager.py +0 -0
  161. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/query_tools/__init__.py +0 -0
  162. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/database/strategies/__init__.py +0 -0
  163. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/di/__init__.py +0 -0
  164. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/di/container.py +0 -0
  165. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/__init__.py +0 -0
  166. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/backends/__init__.py +0 -0
  167. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/backends/memory.py +0 -0
  168. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/backends/rabbitmq.py +0 -0
  169. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/backends/redis.py +0 -0
  170. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/base.py +0 -0
  171. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/manager.py +0 -0
  172. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/events/middleware.py +0 -0
  173. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/monitoring/__init__.py +0 -0
  174. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/__init__.py +0 -0
  175. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/backends/__init__.py +0 -0
  176. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/backends/rabbitmq.py +0 -0
  177. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/backends/redis.py +0 -0
  178. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/base.py +0 -0
  179. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/mq/manager.py +0 -0
  180. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/scheduler/__init__.py +0 -0
  181. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/scheduler/exceptions.py +0 -0
  182. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/scheduler/manager.py +0 -0
  183. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/storage/__init__.py +0 -0
  184. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/storage/base.py +0 -0
  185. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/storage/exceptions.py +0 -0
  186. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/storage/factory.py +0 -0
  187. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/tasks/__init__.py +0 -0
  188. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/tasks/config.py +0 -0
  189. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/tasks/constants.py +0 -0
  190. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/tasks/exceptions.py +0 -0
  191. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/infrastructure/tasks/manager.py +0 -0
  192. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/testing/__init__.py +0 -0
  193. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/testing/base.py +0 -0
  194. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/testing/client.py +0 -0
  195. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/testing/factory.py +0 -0
  196. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/toolkit/__init__.py +0 -0
  197. {aury_boot-0.0.23 → aury_boot-0.0.25}/aury/boot/toolkit/http/__init__.py +0 -0
  198. {aury_boot-0.0.23 → aury_boot-0.0.25}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aury-boot
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: Aury Boot - 基于 FastAPI 生态的企业级 API 开发框架
5
5
  Requires-Python: >=3.13
6
6
  Requires-Dist: alembic>=1.17.2
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.0.23'
32
- __version_tuple__ = version_tuple = (0, 0, 23)
31
+ __version__ = version = '0.0.25'
32
+ __version_tuple__ = version_tuple = (0, 0, 25)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -15,6 +15,7 @@ from aury.boot.application.constants import ComponentName, ServiceType
15
15
  from aury.boot.application.migrations import MigrationManager
16
16
  from aury.boot.common.logging import logger
17
17
  from aury.boot.infrastructure.cache import CacheManager
18
+ from aury.boot.infrastructure.channel import ChannelManager
18
19
  from aury.boot.infrastructure.database import DatabaseManager
19
20
  from aury.boot.infrastructure.events import EventBusManager
20
21
  from aury.boot.infrastructure.mq import MQManager
@@ -505,6 +506,49 @@ class MessageQueueComponent(Component):
505
506
  logger.warning(f"消息队列 [{name}] 关闭失败: {e}")
506
507
 
507
508
 
509
+ class ChannelComponent(Component):
510
+ """流式通道组件。
511
+
512
+ 用于 SSE(Server-Sent Events)和实时通信场景,支持 memory 和 redis 后端。
513
+ """
514
+
515
+ name = ComponentName.CHANNEL
516
+ enabled = True
517
+ depends_on: ClassVar[list[str]] = []
518
+
519
+ def can_enable(self, config: BaseConfig) -> bool:
520
+ """当配置了 Channel 实例时启用。"""
521
+ return self.enabled and bool(config.get_channels())
522
+
523
+ async def setup(self, app: FoundationApp, config: BaseConfig) -> None:
524
+ """初始化流式通道。"""
525
+ channel_configs = config.get_channels()
526
+ if not channel_configs:
527
+ logger.debug("未配置 Channel 实例,跳过通道初始化")
528
+ return
529
+
530
+ for name, ch_config in channel_configs.items():
531
+ try:
532
+ channel_manager = ChannelManager.get_instance(name)
533
+ if not channel_manager.is_initialized:
534
+ await channel_manager.initialize(
535
+ backend=ch_config.backend,
536
+ url=ch_config.url,
537
+ )
538
+ except Exception as e:
539
+ logger.warning(f"通道 [{name}] 初始化失败(非关键): {e}")
540
+
541
+ async def teardown(self, app: FoundationApp) -> None:
542
+ """关闭所有通道实例。"""
543
+ for name in list(ChannelManager._instances.keys()):
544
+ try:
545
+ channel_manager = ChannelManager.get_instance(name)
546
+ if channel_manager.is_initialized:
547
+ await channel_manager.cleanup()
548
+ except Exception as e:
549
+ logger.warning(f"通道 [{name}] 关闭失败: {e}")
550
+
551
+
508
552
  class EventBusComponent(Component):
509
553
  """事件总线组件。
510
554
 
@@ -555,6 +599,7 @@ FoundationApp.components = [
555
599
  StorageComponent,
556
600
  TaskComponent,
557
601
  MessageQueueComponent,
602
+ ChannelComponent,
558
603
  EventBusComponent,
559
604
  SchedulerComponent,
560
605
  ]
@@ -563,6 +608,7 @@ FoundationApp.components = [
563
608
  __all__ = [
564
609
  "AdminConsoleComponent",
565
610
  "CacheComponent",
611
+ "ChannelComponent",
566
612
  "DatabaseComponent",
567
613
  "EventBusComponent",
568
614
  "MessageQueueComponent",
@@ -41,6 +41,9 @@ class ComponentName(str, Enum):
41
41
  # 事件总线组件
42
42
  EVENT_BUS = "event_bus"
43
43
 
44
+ # 流式通道组件
45
+ CHANNEL = "channel"
46
+
44
47
  # 迁移组件
45
48
  MIGRATIONS = "migrations"
46
49
 
@@ -20,10 +20,7 @@ notification_channel = ChannelManager.get_instance("notification")
20
20
  await sse_channel.initialize(backend="memory")
21
21
 
22
22
  # Redis 后端(多进程/分布式)
23
- from aury.boot.infrastructure.clients.redis import RedisClient
24
- redis_client = RedisClient.get_instance()
25
- await redis_client.initialize(url="redis://localhost:6379/0")
26
- await notification_channel.initialize(backend="redis", redis_client=redis_client)
23
+ await notification_channel.initialize(backend="redis", url="redis://localhost:6379/0")
27
24
  ```
28
25
 
29
26
  ## 13.2 发布和订阅(Topic 管理)
@@ -85,7 +82,7 @@ async def send_notification(user_id: str, message: str):
85
82
  async def space_events(space_id: str):
86
83
  \"\"\"订阅空间下所有事件。\"\"\"
87
84
  async def event_generator():
88
- # 使用 psubscribe 订阅 space:{id}:* 下所有事件
85
+ # 使用 psubscribe 订阅 space:{{id}}:* 下所有事件
89
86
  async for msg in sse_channel.psubscribe(f"space:{{space_id}}:*"):
90
87
  yield msg.to_sse() # 自动转换为 SSE 格式
91
88
 
@@ -125,8 +122,8 @@ notify_channel = ChannelManager.get_instance("notify") # 系统通知
125
122
 
126
123
  # 分别初始化(可使用不同后端)
127
124
  await sse_channel.initialize(backend="memory") # 单进程即可
128
- await chat_channel.initialize(backend="redis", redis_client=redis_client) # 需要跨进程
129
- await notify_channel.initialize(backend="redis", redis_client=redis_client)
125
+ await chat_channel.initialize(backend="redis", url="redis://localhost:6379/3") # 需要跨进程
126
+ await notify_channel.initialize(backend="redis", url="redis://localhost:6379/4")
130
127
  ```
131
128
 
132
129
  ## 13.6 环境变量
@@ -6,7 +6,6 @@
6
6
  from __future__ import annotations
7
7
 
8
8
  from collections.abc import AsyncIterator
9
- from typing import TYPE_CHECKING
10
9
 
11
10
  from aury.boot.common.logging import logger
12
11
 
@@ -14,9 +13,6 @@ from .backends.memory import MemoryChannel
14
13
  from .backends.redis import RedisChannel
15
14
  from .base import ChannelBackend, ChannelMessage, IChannel
16
15
 
17
- if TYPE_CHECKING:
18
- from aury.boot.infrastructure.clients.redis import RedisClient
19
-
20
16
 
21
17
  class ChannelManager:
22
18
  """通道管理器(命名多实例)。
@@ -55,6 +51,8 @@ class ChannelManager:
55
51
  self._backend: IChannel | None = None
56
52
  self._backend_type: ChannelBackend | None = None
57
53
  self._initialized: bool = False
54
+ self._redis_client = None
55
+ self._url: str | None = None
58
56
 
59
57
  @classmethod
60
58
  def get_instance(cls, name: str = "default") -> ChannelManager:
@@ -88,14 +86,14 @@ class ChannelManager:
88
86
  self,
89
87
  backend: ChannelBackend | str = ChannelBackend.MEMORY,
90
88
  *,
91
- redis_client: RedisClient | None = None,
89
+ url: str | None = None,
92
90
  max_subscribers: int = 1000,
93
91
  ) -> ChannelManager:
94
92
  """初始化通道(链式调用)。
95
93
 
96
94
  Args:
97
95
  backend: 后端类型
98
- redis_client: Redis 客户端(当 backend=redis 时需要)
96
+ url: Redis 连接 URL(当 backend=redis 时需要)
99
97
  max_subscribers: 内存后端的最大订阅者数量
100
98
 
101
99
  Returns:
@@ -110,13 +108,19 @@ class ChannelManager:
110
108
  backend = ChannelBackend(backend.lower())
111
109
 
112
110
  self._backend_type = backend
111
+ self._url = url
113
112
 
114
113
  if backend == ChannelBackend.MEMORY:
115
114
  self._backend = MemoryChannel(max_subscribers=max_subscribers)
116
115
  elif backend == ChannelBackend.REDIS:
117
- if redis_client is None:
118
- raise ValueError("Redis 通道需要提供 redis_client 参数")
119
- self._backend = RedisChannel(redis_client)
116
+ if url is None:
117
+ raise ValueError("Redis 通道需要提供 url 参数")
118
+ # 内部创建 RedisClient
119
+ from aury.boot.infrastructure.clients.redis import RedisClient
120
+
121
+ self._redis_client = RedisClient()
122
+ await self._redis_client.configure(url=url).initialize()
123
+ self._backend = RedisChannel(self._redis_client)
120
124
  else:
121
125
  raise ValueError(f"不支持的通道后端: {backend}")
122
126
 
@@ -214,8 +218,11 @@ class ChannelManager:
214
218
  if self._backend:
215
219
  await self._backend.close()
216
220
  self._backend = None
217
- self._initialized = False
218
- logger.info(f"通道管理器 [{self.name}] 已关闭")
221
+ if self._redis_client:
222
+ await self._redis_client.cleanup()
223
+ self._redis_client = None
224
+ self._initialized = False
225
+ logger.info(f"通道管理器 [{self.name}] 已关闭")
219
226
 
220
227
  def __repr__(self) -> str:
221
228
  """字符串表示。"""
File without changes
File without changes
File without changes