aury-boot 0.0.4__py3-none-any.whl → 0.0.5__py3-none-any.whl

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 (98) hide show
  1. aury/boot/__init__.py +2 -2
  2. aury/boot/_version.py +2 -2
  3. aury/boot/application/__init__.py +45 -36
  4. aury/boot/application/app/__init__.py +12 -8
  5. aury/boot/application/app/base.py +12 -0
  6. aury/boot/application/app/components.py +137 -44
  7. aury/boot/application/app/middlewares.py +2 -0
  8. aury/boot/application/app/startup.py +249 -0
  9. aury/boot/application/config/__init__.py +36 -1
  10. aury/boot/application/config/multi_instance.py +200 -0
  11. aury/boot/application/config/settings.py +341 -12
  12. aury/boot/application/constants/components.py +6 -0
  13. aury/boot/application/errors/handlers.py +17 -3
  14. aury/boot/application/middleware/logging.py +8 -120
  15. aury/boot/application/rpc/__init__.py +2 -2
  16. aury/boot/commands/__init__.py +30 -10
  17. aury/boot/commands/app.py +131 -1
  18. aury/boot/commands/docs.py +104 -17
  19. aury/boot/commands/init.py +27 -8
  20. aury/boot/commands/server/app.py +2 -3
  21. aury/boot/commands/templates/project/AGENTS.md.tpl +217 -0
  22. aury/boot/commands/templates/project/README.md.tpl +2 -2
  23. aury/boot/commands/templates/project/aury_docs/00-overview.md.tpl +59 -0
  24. aury/boot/commands/templates/project/aury_docs/01-model.md.tpl +183 -0
  25. aury/boot/commands/templates/project/aury_docs/02-repository.md.tpl +206 -0
  26. aury/boot/commands/templates/project/aury_docs/03-service.md.tpl +398 -0
  27. aury/boot/commands/templates/project/aury_docs/04-schema.md.tpl +95 -0
  28. aury/boot/commands/templates/project/aury_docs/05-api.md.tpl +116 -0
  29. aury/boot/commands/templates/project/aury_docs/06-exception.md.tpl +118 -0
  30. aury/boot/commands/templates/project/aury_docs/07-cache.md.tpl +122 -0
  31. aury/boot/commands/templates/project/aury_docs/08-scheduler.md.tpl +32 -0
  32. aury/boot/commands/templates/project/aury_docs/09-tasks.md.tpl +38 -0
  33. aury/boot/commands/templates/project/aury_docs/10-storage.md.tpl +115 -0
  34. aury/boot/commands/templates/project/aury_docs/11-logging.md.tpl +92 -0
  35. aury/boot/commands/templates/project/aury_docs/12-admin.md.tpl +56 -0
  36. aury/boot/commands/templates/project/aury_docs/13-channel.md.tpl +92 -0
  37. aury/boot/commands/templates/project/aury_docs/14-mq.md.tpl +102 -0
  38. aury/boot/commands/templates/project/aury_docs/15-events.md.tpl +147 -0
  39. aury/boot/commands/templates/project/config.py.tpl +1 -1
  40. aury/boot/commands/templates/project/env.example.tpl +73 -5
  41. aury/boot/commands/templates/project/modules/tasks.py.tpl +1 -1
  42. aury/boot/contrib/admin_console/auth.py +2 -3
  43. aury/boot/contrib/admin_console/install.py +1 -1
  44. aury/boot/domain/models/mixins.py +48 -1
  45. aury/boot/domain/pagination/__init__.py +94 -0
  46. aury/boot/domain/repository/impl.py +1 -1
  47. aury/boot/domain/repository/interface.py +1 -1
  48. aury/boot/domain/transaction/__init__.py +8 -9
  49. aury/boot/infrastructure/__init__.py +86 -29
  50. aury/boot/infrastructure/cache/backends.py +102 -18
  51. aury/boot/infrastructure/cache/base.py +12 -0
  52. aury/boot/infrastructure/cache/manager.py +153 -91
  53. aury/boot/infrastructure/channel/__init__.py +24 -0
  54. aury/boot/infrastructure/channel/backends/__init__.py +9 -0
  55. aury/boot/infrastructure/channel/backends/memory.py +83 -0
  56. aury/boot/infrastructure/channel/backends/redis.py +88 -0
  57. aury/boot/infrastructure/channel/base.py +92 -0
  58. aury/boot/infrastructure/channel/manager.py +203 -0
  59. aury/boot/infrastructure/clients/__init__.py +22 -0
  60. aury/boot/infrastructure/clients/rabbitmq/__init__.py +9 -0
  61. aury/boot/infrastructure/clients/rabbitmq/config.py +46 -0
  62. aury/boot/infrastructure/clients/rabbitmq/manager.py +288 -0
  63. aury/boot/infrastructure/clients/redis/__init__.py +28 -0
  64. aury/boot/infrastructure/clients/redis/config.py +51 -0
  65. aury/boot/infrastructure/clients/redis/manager.py +264 -0
  66. aury/boot/infrastructure/database/config.py +1 -2
  67. aury/boot/infrastructure/database/manager.py +16 -38
  68. aury/boot/infrastructure/events/__init__.py +18 -21
  69. aury/boot/infrastructure/events/backends/__init__.py +11 -0
  70. aury/boot/infrastructure/events/backends/memory.py +86 -0
  71. aury/boot/infrastructure/events/backends/rabbitmq.py +193 -0
  72. aury/boot/infrastructure/events/backends/redis.py +162 -0
  73. aury/boot/infrastructure/events/base.py +127 -0
  74. aury/boot/infrastructure/events/manager.py +224 -0
  75. aury/boot/infrastructure/mq/__init__.py +24 -0
  76. aury/boot/infrastructure/mq/backends/__init__.py +9 -0
  77. aury/boot/infrastructure/mq/backends/rabbitmq.py +179 -0
  78. aury/boot/infrastructure/mq/backends/redis.py +167 -0
  79. aury/boot/infrastructure/mq/base.py +143 -0
  80. aury/boot/infrastructure/mq/manager.py +239 -0
  81. aury/boot/infrastructure/scheduler/manager.py +7 -3
  82. aury/boot/infrastructure/storage/__init__.py +9 -9
  83. aury/boot/infrastructure/storage/base.py +17 -5
  84. aury/boot/infrastructure/storage/factory.py +0 -1
  85. aury/boot/infrastructure/tasks/__init__.py +2 -2
  86. aury/boot/infrastructure/tasks/manager.py +47 -29
  87. aury/boot/testing/base.py +2 -2
  88. {aury_boot-0.0.4.dist-info → aury_boot-0.0.5.dist-info}/METADATA +19 -2
  89. aury_boot-0.0.5.dist-info/RECORD +176 -0
  90. aury/boot/commands/templates/project/DEVELOPMENT.md.tpl +0 -1397
  91. aury/boot/infrastructure/events/bus.py +0 -362
  92. aury/boot/infrastructure/events/config.py +0 -52
  93. aury/boot/infrastructure/events/consumer.py +0 -134
  94. aury/boot/infrastructure/events/models.py +0 -63
  95. aury_boot-0.0.4.dist-info/RECORD +0 -137
  96. /aury/boot/commands/templates/project/{CLI.md.tpl → aury_docs/99-cli.md.tpl} +0 -0
  97. {aury_boot-0.0.4.dist-info → aury_boot-0.0.5.dist-info}/WHEEL +0 -0
  98. {aury_boot-0.0.4.dist-info → aury_boot-0.0.5.dist-info}/entry_points.txt +0 -0
@@ -47,16 +47,16 @@ except ImportError:
47
47
 
48
48
 
49
49
  class TaskProxy:
50
- """任务代理类,用于在 API 模式下发送消息而不注册 actor。
50
+ """任务代理类,用于在 API 模式下发送消息而不注册任务。
51
51
 
52
- 在 API 服务中,我们不希望注册 actor(因为 worker 已经注册了),
52
+ 在 API 服务中,我们不希望注册任务(因为 worker 已经注册了),
53
53
  但仍然需要能够发送任务消息。TaskProxy 提供了这个功能。
54
54
 
55
55
  使用示例:
56
- @conditional_actor(queue_name="default")
57
- async def send_email(to: str, subject: str):
58
- # 在 worker 中会注册为 actor
59
- # 在 API 中会返回 TaskProxy
56
+ @conditional_task(queue_name="default")
57
+ def send_email(to: str, subject: str):
58
+ # 在 worker 中执行任务
59
+ # 在 API 中只发送不执行
60
60
  pass
61
61
 
62
62
  # API 模式下发送任务
@@ -210,18 +210,21 @@ class TaskManager:
210
210
  broker_url: str | None = None,
211
211
  *,
212
212
  middleware: list | None = None,
213
- ) -> None:
214
- """初始化任务队列。
213
+ ) -> TaskManager:
214
+ """初始化任务队列(链式调用)。
215
215
 
216
216
  Args:
217
217
  task_config: 任务配置(TaskConfig)
218
218
  run_mode: 运行模式(TaskRunMode 或字符串,如 "api", "worker")
219
219
  broker_url: Broker连接URL(可选,优先使用 config)
220
220
  middleware: 中间件列表
221
+
222
+ Returns:
223
+ self: 支持链式调用
221
224
  """
222
225
  if self._initialized:
223
226
  logger.warning("任务管理器已初始化,跳过")
224
- return
227
+ return self
225
228
 
226
229
  self._task_config = task_config or TaskConfig()
227
230
 
@@ -241,7 +244,7 @@ class TaskManager:
241
244
  url = broker_url or self._task_config.broker_url
242
245
  if not url:
243
246
  logger.warning("未配置任务队列URL,任务功能将被禁用")
244
- return
247
+ return self
245
248
 
246
249
  if not _DRAMATIQ_AVAILABLE:
247
250
  raise ImportError(
@@ -269,6 +272,8 @@ class TaskManager:
269
272
  except Exception as exc:
270
273
  logger.error(f"任务队列初始化失败: {exc}")
271
274
  raise
275
+
276
+ return self
272
277
 
273
278
  def task(
274
279
  self,
@@ -415,29 +420,39 @@ class TaskManager:
415
420
  return f"<TaskManager status={status}>"
416
421
 
417
422
 
418
- def conditional_actor(
423
+ def conditional_task(
424
+ func: Callable | None = None,
425
+ /,
419
426
  queue_name: str = TaskQueueName.DEFAULT.value,
420
427
  run_mode: TaskRunMode | str | None = None,
421
428
  **kwargs: Any,
422
- ) -> Callable[[Callable], Any]:
423
- """条件注册的 actor 装饰器(独立函数版本)。
429
+ ) -> Callable[[Callable], Any] | Any:
430
+ """条件注册的任务装饰器。
424
431
 
425
- 在 worker 模式下正常注册为 actor(执行者)
426
- producer 模式下返回 TaskProxy,可以发送消息但不注册(生产者)
432
+ 根据运行模式决定行为:
433
+ - worker 模式:正常注册为任务执行者
434
+ - producer 模式:返回 TaskProxy,可发送任务但不注册
435
+
436
+ 支持两种使用方式:
437
+ - @conditional_task # 无括号
438
+ - @conditional_task() # 带括号
427
439
 
428
440
  Args:
441
+ func: 被装饰的函数(无括号调用时自动传入)
429
442
  queue_name: 队列名称
430
443
  run_mode: 运行模式(TaskRunMode 或字符串),默认为 WORKER
431
- **kwargs: 其他参数
444
+ **kwargs: 其他参数(如 max_retries, time_limit)
432
445
 
433
446
  使用示例:
434
- @conditional_actor(queue_name="default", max_retries=3)
435
- async def send_email(to: str, subject: str):
436
- # 在 worker 中会注册为 actor
437
- # 在 producer 中会返回 TaskProxy
447
+ @conditional_task
448
+ def send_email(to: str, subject: str):
438
449
  pass
439
450
 
440
- # Producer 模式下发送任务
451
+ @conditional_task(queue_name="high", max_retries=5)
452
+ def send_sms(phone: str, message: str):
453
+ pass
454
+
455
+ # 发送任务到队列
441
456
  send_email.send("user@example.com", "Hello")
442
457
  """
443
458
  if not _DRAMATIQ_AVAILABLE:
@@ -445,7 +460,7 @@ def conditional_actor(
445
460
  "dramatiq 未安装。请安装可选依赖: pip install 'aury-boot[queue-dramatiq]'"
446
461
  )
447
462
 
448
- def decorator(func: Callable) -> Any:
463
+ def decorator(f: Callable) -> Any:
449
464
  # 处理 run_mode 参数,默认为 WORKER
450
465
  if run_mode is None:
451
466
  mode = TaskRunMode.WORKER
@@ -460,31 +475,34 @@ def conditional_actor(
460
475
 
461
476
  if mode == TaskRunMode.WORKER:
462
477
  # Worker 模式下正常注册(执行者)
463
- return dramatiq.actor(queue_name=queue_name, **kwargs)(func)
478
+ return dramatiq.actor(queue_name=queue_name, **kwargs)(f)
464
479
  else:
465
480
  # Producer 模式下返回代理对象,不注册但可以发送消息
466
481
  # 获取函数的完整模块路径作为 actor_name
467
- module_name = func.__module__
468
- func_name = func.__name__
469
- actor_name = f"{module_name}.{func_name}"
482
+ module_name = f.__module__
483
+ func_name = f.__name__
484
+ full_actor_name = f"{module_name}.{func_name}"
470
485
 
471
486
  # 获取全局 broker(如果已设置)
472
487
  broker = dramatiq.get_broker() if hasattr(dramatiq, "get_broker") else None
473
488
 
474
489
  return TaskProxy(
475
- func=func,
490
+ func=f,
476
491
  queue_name=queue_name,
477
- actor_name=actor_name,
492
+ actor_name=full_actor_name,
478
493
  broker=broker,
479
494
  **kwargs,
480
495
  )
481
496
 
497
+ # 支持 @conditional_task 和 @conditional_task() 两种写法
498
+ if func is not None:
499
+ return decorator(func)
482
500
  return decorator
483
501
 
484
502
 
485
503
  __all__ = [
486
504
  "TaskManager",
487
505
  "TaskProxy",
488
- "conditional_actor",
506
+ "conditional_task",
489
507
  ]
490
508
 
aury/boot/testing/base.py CHANGED
@@ -103,7 +103,7 @@ class TestCase(ABC): # noqa: B024
103
103
 
104
104
 
105
105
  # Pytest fixtures 支持
106
- @pytest.fixture()
106
+ @pytest.fixture
107
107
  async def test_case():
108
108
  """Pytest fixture,提供测试用例实例。"""
109
109
  case = TestCase()
@@ -115,7 +115,7 @@ async def test_case():
115
115
  await case._cleanup()
116
116
 
117
117
 
118
- @pytest.fixture()
118
+ @pytest.fixture
119
119
  async def db_session(test_case: TestCase):
120
120
  """Pytest fixture,提供数据库会话。"""
121
121
  await test_case.setup_db()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aury-boot
3
- Version: 0.0.4
3
+ Version: 0.0.5
4
4
  Summary: Aury Boot - 基于 FastAPI 生态的企业级 API 开发框架
5
5
  Requires-Python: >=3.13
6
6
  Requires-Dist: alembic>=1.17.2
@@ -72,7 +72,24 @@ Description-Content-Type: text/markdown
72
72
 
73
73
  # Aury Boot
74
74
 
75
- 这是AUM项目的基于 FastAPI 生态的企业级 API 开发框架,提供所有微服务共用的基础设施组件。
75
+ 基于 FastAPI 生态的企业级 API 开发框架,提供所有微服务共用的基础设施组件。
76
+
77
+ ## 快速开始
78
+
79
+ ```bash
80
+ # 1. 创建项目目录并初始化
81
+ mkdir my-service && cd my-service
82
+ uv init . --name my_service --no-package --python 3.13
83
+
84
+ # 2. 添加依赖
85
+ uv add "aury-boot[recommended,admin]" # admin 可选,提供 SQLAdmin 管理后台
86
+
87
+ # 3. 初始化项目结构
88
+ aury init
89
+
90
+ # 4. 启动开发服务器
91
+ aury server dev
92
+ ```
76
93
 
77
94
  ## 功能模块
78
95
 
@@ -0,0 +1,176 @@
1
+ aury/boot/__init__.py,sha256=pCno-EInnpIBa1OtxNYF-JWf9j95Cd2h6vmu0xqa_-4,1791
2
+ aury/boot/_version.py,sha256=YRV1ohn6CdKEhsUOmFFMmr5UTjMv4Ydw3WJGxF2BHBs,704
3
+ aury/boot/application/__init__.py,sha256=w-t0YGK2dXvcbfYT3JV-B7eEHozchd8cBfTOX1-rDr0,2749
4
+ aury/boot/application/app/__init__.py,sha256=I8FfCKDuDQsGzAK6BevyfdtAwieMUVYu6qgVQzBazpE,830
5
+ aury/boot/application/app/base.py,sha256=5v7wtksCCyp_QYVpxddd9xSujoVp1zX9pP6CPy4vwUE,16711
6
+ aury/boot/application/app/components.py,sha256=tt4a4ZVcRJZbvStj5W9AYf9omGqKVu0qFu5pn1q2VSU,20312
7
+ aury/boot/application/app/middlewares.py,sha256=iMi-v-WhPXYtE4JrKKiGmw2G_l5LpYxsn8GVbM0zD9k,3113
8
+ aury/boot/application/app/startup.py,sha256=bkRT4cCzXPnTOBSNs-TLcKvFGwqBgwXeO8_gQq9Gc1s,7895
9
+ aury/boot/application/config/__init__.py,sha256=Dd-myRSBCM18DXXsi863h0cJG5VFrI10xMRtjnvelGo,1894
10
+ aury/boot/application/config/multi_instance.py,sha256=pBRzOsseYowk9FXLPNG0m_p0daDFQVayFshSRl_tsnw,5987
11
+ aury/boot/application/config/settings.py,sha256=-YQawRiYWnYbj_gZrCjT5dRtLQxRCVVSA7eKHq_6s5k,30795
12
+ aury/boot/application/constants/__init__.py,sha256=DCXs13_VVaQWHqO-qpJoZwRd7HIexiirtw_nu8msTXE,340
13
+ aury/boot/application/constants/components.py,sha256=hDRs3YxpnfIFcGaUa1DYqBRwmV2_dceOlcCXabHE3fk,1006
14
+ aury/boot/application/constants/scheduler.py,sha256=S77FBIvHlyruvlabRWZJ2J1YAs2xWXPQI2yuGdGUDNA,471
15
+ aury/boot/application/constants/service.py,sha256=_BjSNP83m1KuLcGs1oqciDU9Nk1mO45COucRYubuFkM,513
16
+ aury/boot/application/errors/__init__.py,sha256=aYhGqjHayYr7sv9kM22y0sOo9R-8RK0r3Jf5_tgm7TQ,1217
17
+ aury/boot/application/errors/chain.py,sha256=DSLZvPH7oNcxE26j3hiXG_1W7-3fdKyu0QMEEi1c5CY,2306
18
+ aury/boot/application/errors/codes.py,sha256=CBR8umCSNp1zUslwK9tboQ4s753qBwA1OpefaQTPdjE,1431
19
+ aury/boot/application/errors/exceptions.py,sha256=5gHC9cQsuvNpO5V9GlFkb-QqH0xNqQaOKBmTBM5wYEI,7303
20
+ aury/boot/application/errors/handlers.py,sha256=wPYiiDkJGNxJjXL442KhPAg4rLTq-GSISmVEa6nHmiE,11129
21
+ aury/boot/application/errors/response.py,sha256=fqOO3bNTnRRjoN3gK0-6xBVAYfSqyPvUbONowAecq9k,3107
22
+ aury/boot/application/interfaces/__init__.py,sha256=EGbiCL8IoGseylLVZO29Lkt3luygG7JknTgtAxeb48U,1438
23
+ aury/boot/application/interfaces/egress.py,sha256=t8FK17V649rsm65uAeBruYr2mhfcqJiIzkS8UPsOzlc,5346
24
+ aury/boot/application/interfaces/ingress.py,sha256=rlflJ4nxAZ2Mc3Iy8ZX__GRgfAWcMYYzLhHL2NSk4_U,2425
25
+ aury/boot/application/middleware/__init__.py,sha256=T01fmbcdO0Sm6JE74g23uuDyebBGYA4DMZMDBl0L00w,258
26
+ aury/boot/application/middleware/logging.py,sha256=MSe3j_ku9y9caXM5i0e0CyOAr7tqAKZCbfgEabxKBiU,11886
27
+ aury/boot/application/migrations/__init__.py,sha256=Z5Gizx7f3AImRcl3cooiIDAZcNi5W-6GvB7mK5w1TNA,204
28
+ aury/boot/application/migrations/manager.py,sha256=G7mzkNA3MFjyQmM2UwY0ZFNgGGVS4W5GoG2Sbj5AUXk,23685
29
+ aury/boot/application/migrations/setup.py,sha256=P89QSMV2JQQb1FuyA9KHhgqSzKWZneCmOtOrLvEmKYQ,6261
30
+ aury/boot/application/rpc/__init__.py,sha256=0mVyksLbTOLYMN4OtYrdf9naBNVQnAU9pt2kS2w_9ZY,2064
31
+ aury/boot/application/rpc/base.py,sha256=KqdWupF2PTizr--jE0KgJUDCfBap72ZWk9FtU5FM9_8,2618
32
+ aury/boot/application/rpc/client.py,sha256=ApW4h_DrwnnkAh921TVUd4fvdWP-rVIse3VW1_1TLPk,9113
33
+ aury/boot/application/rpc/discovery.py,sha256=nDCWGeJBNX_RO8JrRnlF7yMEBHZy9vXg_fchvI2CJOc,6624
34
+ aury/boot/application/scheduler/__init__.py,sha256=MBAKQMqI6HpkTPqWyZrbfgRck9AjVfywS9lxjNXFdpE,201
35
+ aury/boot/application/scheduler/runner.py,sha256=g8CM5bDtjiiaMV3662fAOAzh4_bzlQlQZYXj8vlbtc0,3796
36
+ aury/boot/application/server/__init__.py,sha256=WgSeWItN6oXUzYr1rflGreFiASkLXVt0Z3qkGGtLTI0,8964
37
+ aury/boot/commands/__init__.py,sha256=8HqWCNefFDk1I-NyViUfCYjynzV7YsdnIsbgoj_sJjo,1486
38
+ aury/boot/commands/add.py,sha256=JRJir92oFHwIBtIKKEjQ7trUhfb9-kCH84x_7saV2gI,2647
39
+ aury/boot/commands/app.py,sha256=-kHcWdZ_D4xDwjOiUkcNSCTYKIUYz39HJV87eaZpeY8,7557
40
+ aury/boot/commands/config.py,sha256=gPkG_jSWrXidjpyVdzABH7uRhoCgX5yrOcdKabtX5wY,4928
41
+ aury/boot/commands/docker.py,sha256=7mKorZCPZgxH1XFslzo6W-uzpe61hGXz86JKOhOeBlo,9006
42
+ aury/boot/commands/docs.py,sha256=-uCvrKj0_shdeBY08W6zx5vNpsBM3yc_IIOOQzoFbqE,11647
43
+ aury/boot/commands/generate.py,sha256=T0atHRU3CFyCjOhue0s0uGgkE7P1dSi1NMlSB0p-5EI,44482
44
+ aury/boot/commands/init.py,sha256=f87Thal-vn5ybMBpanHHouYix885It1DcfhhRFm4amE,31496
45
+ aury/boot/commands/scheduler.py,sha256=BCIGQcGryXpsYNF-mncP6v5kNoz6DZ10DMzMKVDiXxA,3516
46
+ aury/boot/commands/worker.py,sha256=qAcPdoKpMBLYoi45X_y2-nobuYKxscJpooEB_0HhM4o,4163
47
+ aury/boot/commands/migrate/__init__.py,sha256=W9OhkX8ILdolySofgdP2oYoJGG9loQd5FeSwkniU3qM,455
48
+ aury/boot/commands/migrate/app.py,sha256=phCMKW6cuFYW2wr6PSMSCq0K2uUCiYo3UiFd0_UvA_o,1327
49
+ aury/boot/commands/migrate/commands.py,sha256=892htS_pTtpejLGqRP8bc3xXJPG92WwAejHlY74oI3o,9950
50
+ aury/boot/commands/server/__init__.py,sha256=aP3bPNGn6wT8dHa_OmKw1Dexnxuvf0BhrGA6pEUcsVM,319
51
+ aury/boot/commands/server/app.py,sha256=-A52dLgerab98IM50a-_ptFb0xlMvbdbhYjqoJIIIpU,15795
52
+ aury/boot/commands/templates/generate/api.py.tpl,sha256=xTbk9uzn5IMtJ-SPMadjmOUNHoM3WoE6g-TIEsGHFUA,3153
53
+ aury/boot/commands/templates/generate/model.py.tpl,sha256=knFwMyGZ7wMpzH4_bQD_V1hFTvmCb2H04G8p3s2xvyA,312
54
+ aury/boot/commands/templates/generate/repository.py.tpl,sha256=xoEg6lPAaLIRDeFy4I0FBsPPVLSy91h6xosAlaCL_mM,590
55
+ aury/boot/commands/templates/generate/schema.py.tpl,sha256=HIaY5B0UG_S188nQLrZDEJ0q73WPdb7BmCdc0tseZA4,545
56
+ aury/boot/commands/templates/generate/service.py.tpl,sha256=2hwQ8e4a5d_bIMx_jGDobdmKPMFLBlfQrQVQH4Ym5k4,1842
57
+ aury/boot/commands/templates/project/AGENTS.md.tpl,sha256=WlhgAoNGbMkgN_ha99grbsW01VfkYxRqYFSaLaIuMmo,7195
58
+ aury/boot/commands/templates/project/README.md.tpl,sha256=oCeBiukk6Pa3hrCKybkfM2sIRHsPZ15nlwuFTUSFDwY,2459
59
+ aury/boot/commands/templates/project/admin_console_init.py.tpl,sha256=K81L14thyEhRA8lFCQJVZL_NU22-sBz0xS68MJPeoCo,1541
60
+ aury/boot/commands/templates/project/config.py.tpl,sha256=5WPZwjDJhicmaM-2DBR60SaTKVMaurJc2OQ_xwhgXsQ,768
61
+ aury/boot/commands/templates/project/conftest.py.tpl,sha256=chbETK81Hy26cWz6YZ2cFgy7HbnABzYCqeyMzgpa3eI,726
62
+ aury/boot/commands/templates/project/env.example.tpl,sha256=_wmkalKo2iCI79ji9pdhausJnSeDdh4BNMcLkz2B6NU,10645
63
+ aury/boot/commands/templates/project/gitignore.tpl,sha256=OI0nt9u2E9EC-jAMoh3gpqamsWo18uDgyPybgee_snQ,3053
64
+ aury/boot/commands/templates/project/main.py.tpl,sha256=qKKgO3btMPIpPfb-iyCD4AMEYMUunhq6GJyA2QplGZI,922
65
+ aury/boot/commands/templates/project/aury_docs/00-overview.md.tpl,sha256=8Aept3yEAe9cVdRvkddr_oEF-lr2riPXYRzBuw_6DBA,2138
66
+ aury/boot/commands/templates/project/aury_docs/01-model.md.tpl,sha256=2JCasqHwPmeJZ9JDXs6BG0tRby2ITN6fjoICDGxqAgM,6815
67
+ aury/boot/commands/templates/project/aury_docs/02-repository.md.tpl,sha256=yfKPYZ7x74BEF7wFp9u3S7xKr4Ld9MqXOItGZo5NM9Q,6819
68
+ aury/boot/commands/templates/project/aury_docs/03-service.md.tpl,sha256=Dg_8RGSeRmmyQrhhpppEoxl-6C5pNe9M2OzVOl1kjSk,13102
69
+ aury/boot/commands/templates/project/aury_docs/04-schema.md.tpl,sha256=ZwwKhUbLI--PEEmwnuo2fIZrhCEZagBN6fRNDTFCnNk,2891
70
+ aury/boot/commands/templates/project/aury_docs/05-api.md.tpl,sha256=oPzda3V6ZPDDEW-5MwyzmsMRuu5mXrsRGEq3lj0M-58,2997
71
+ aury/boot/commands/templates/project/aury_docs/06-exception.md.tpl,sha256=Tv_Q5lsScHzvtcaFWmuQzN4YqvpcWZIdXS8jw99K29E,3340
72
+ aury/boot/commands/templates/project/aury_docs/07-cache.md.tpl,sha256=EQMI7vJIwJT-VdG4p1GMCDEo58DCO1n6V-MvUzGSaS0,3411
73
+ aury/boot/commands/templates/project/aury_docs/08-scheduler.md.tpl,sha256=zk7RHjtx_QGjmeLy04Nk_qSc8sofTrubS2Tg7DxfEl4,858
74
+ aury/boot/commands/templates/project/aury_docs/09-tasks.md.tpl,sha256=swHOQ_pWPtW8Bsy1arPu2OeIgs1FoKsJ2AsVSYUWPHY,931
75
+ aury/boot/commands/templates/project/aury_docs/10-storage.md.tpl,sha256=5zamjmVxp3q16De1w_il2vdzEho1O_FoZBN8PIVp2aI,2976
76
+ aury/boot/commands/templates/project/aury_docs/11-logging.md.tpl,sha256=FSM3BlPSUzAr2-YYG2xM3YViXC6qXyXuM6KX8KARRyk,2299
77
+ aury/boot/commands/templates/project/aury_docs/12-admin.md.tpl,sha256=ypz-Wme0TR_ibFSlcxm5KFatp9_bcmfcZtKziTQFKgE,1868
78
+ aury/boot/commands/templates/project/aury_docs/13-channel.md.tpl,sha256=Dj_bqJO9z-sW_tnGnP2vL_rPex1mVLI2J5o1MEO_RZc,2498
79
+ aury/boot/commands/templates/project/aury_docs/14-mq.md.tpl,sha256=BoPlCPYC3zrediFSQjEuFah7Xvl2tfK8rjQLAZSQUso,2382
80
+ aury/boot/commands/templates/project/aury_docs/15-events.md.tpl,sha256=A7MRcGbYRPgVk2wYz7GMVaok2XHodO07v9s9NBwvCGc,3348
81
+ aury/boot/commands/templates/project/aury_docs/99-cli.md.tpl,sha256=g6xOdbfWf1yGL2HqREK6diWQiZUDgMllYGu-7-E-tJY,3003
82
+ aury/boot/commands/templates/project/modules/api.py.tpl,sha256=G_IE-UC_pRhN7oOxy3dl_VLmR_omlKmHhWYi-AlyZIQ,471
83
+ aury/boot/commands/templates/project/modules/exceptions.py.tpl,sha256=TKY3XaQU50Z-sDHWi3_Ns-A4v50PFru08H2lzmKxAUw,2646
84
+ aury/boot/commands/templates/project/modules/schedules.py.tpl,sha256=P-R-0SDsoQ_lWfKYJXZT5DoNAVKGUjYiC3HBbUZCc3Y,633
85
+ aury/boot/commands/templates/project/modules/tasks.py.tpl,sha256=w16VsW0K1_ukZe1Md2A_DnNPCAQUTNuo1JYfHOb7ZTI,564
86
+ aury/boot/common/__init__.py,sha256=MhNP3c_nwx8CyDkDF6p1f4DcTZ1CZZScg66FWdbdaZI,629
87
+ aury/boot/common/exceptions/__init__.py,sha256=aS3rIXWc5qNNJbfMs_PNmBlFsyNdKUMErziNMd1yoB8,3176
88
+ aury/boot/common/i18n/__init__.py,sha256=2cy4kteU-1YsAHkuMDTr2c5o4G33fvtYUGKtzEy1Q6c,394
89
+ aury/boot/common/i18n/translator.py,sha256=_vEDL2SjEI1vwMNHbnJb0xErKUPLm7VmhyOuMBeCqRM,8412
90
+ aury/boot/common/logging/__init__.py,sha256=QU6euBwaEHLdWlzcIHcdXwCNNY3xQBv6eWkFlsY5E5U,22477
91
+ aury/boot/contrib/__init__.py,sha256=fyk_St9VufIx64hsobv9EsOYzb_T5FbJHxjqtPds4g8,198
92
+ aury/boot/contrib/admin_console/__init__.py,sha256=HEesLFrtYtBFWTDrh5H3mR-4V4LRg5N4a2a1C4-Whgs,445
93
+ aury/boot/contrib/admin_console/auth.py,sha256=_goyjZ8Clssvmy8g84svenGfBqCe9OC5pIvCjIzt42g,4706
94
+ aury/boot/contrib/admin_console/discovery.py,sha256=W5DLR4lXDomoB1DLN_zMs5m_uO8Q3qiyqR0rtZE-Vjg,2559
95
+ aury/boot/contrib/admin_console/install.py,sha256=iy_ozt1naSTaNRDhHhbPbAGXwnVoZigBSdga1FTrpVw,6828
96
+ aury/boot/contrib/admin_console/utils.py,sha256=R3gZ5nZeWALggaGAm-h4p5SWbKJV0xbD-2U7GyRkzyE,1459
97
+ aury/boot/domain/__init__.py,sha256=bWTS8OeGw9W3fjelM18ha_XeXoxFySUZnGrbOuzwRmE,1687
98
+ aury/boot/domain/exceptions/__init__.py,sha256=NXkkKUPa7PSFKiRcMOHDbPRVajSHyhdaqZaxVm2oEqs,3546
99
+ aury/boot/domain/models/__init__.py,sha256=f-atwliNjWZ3nfO3JJIi9RZae6umtQCg1ddSTV56GWM,964
100
+ aury/boot/domain/models/base.py,sha256=hZHadZaOyTYMOVEteXudQJBqlLnE_HPyXV5rRvrMXJ0,2051
101
+ aury/boot/domain/models/mixins.py,sha256=7s4m4fzt0vWX71aTHgsoagjxSZZZ4_xSea_m0D84P0Q,5309
102
+ aury/boot/domain/models/models.py,sha256=hNze58wPZkZ8QG2_pyszDsyKNjz2UgiRDzmneiCWLQs,2728
103
+ aury/boot/domain/pagination/__init__.py,sha256=HSU_NyLP-ij7ZDUi-ARSSvNkvhW1_wON2Zvu2QlF6HM,11890
104
+ aury/boot/domain/repository/__init__.py,sha256=dnmN8xFu1ASbLnzL6vx8gMoch7xBGxkJkxs9G1iGLGg,490
105
+ aury/boot/domain/repository/impl.py,sha256=CKpCJhgPg5uh3D2h7PVDApM9aT3sk6NNfn5hvP8CEQM,16552
106
+ aury/boot/domain/repository/interceptors.py,sha256=SCTjRmBYwevAMlJ8U1uw-_McsDetNNQ7q0Da5lmfj_E,1238
107
+ aury/boot/domain/repository/interface.py,sha256=CmkiqVhhHPx_xcpuBCz11Vr26-govwYBxFsQ8myEVyw,2904
108
+ aury/boot/domain/repository/query_builder.py,sha256=pFErMzsBql-T6gBX0S4FxIheCkNaGjpSewzcJ2DxrUU,10890
109
+ aury/boot/domain/service/__init__.py,sha256=ZRotaBlqJXn7ebPTQjjoHtorpQREk8AgTD69UCcRd1k,118
110
+ aury/boot/domain/service/base.py,sha256=6sN0nf8r5yUZsE6AcZOiOXFCqzb61oCxTfrWlqjIo9I,2035
111
+ aury/boot/domain/transaction/__init__.py,sha256=Mk-J-5VOuuQ7NDW1DQmU-skCvcUOuEENfP_Ej3iZuJ8,13497
112
+ aury/boot/infrastructure/__init__.py,sha256=ppP1-suaDICMNvBSXj_4DVSH3h0D8e0qZhtENCr16m8,3007
113
+ aury/boot/infrastructure/cache/__init__.py,sha256=G40uCkpJ1jSs2fc_CBDem73iQQzCcp-4GG1WpDJzwaA,658
114
+ aury/boot/infrastructure/cache/backends.py,sha256=9QMQ8G9DtZgzVXZ_Ng7n1gXRu-_OQZgw4FHPOfr1qco,13585
115
+ aury/boot/infrastructure/cache/base.py,sha256=Yn-h_SGcOoGGZW1unOnz_zgcuHaMKOEmwiUP0P7_pIM,1624
116
+ aury/boot/infrastructure/cache/exceptions.py,sha256=KZsFIHXW3_kOh_KB93EVZJKbiDvDw8aloAefJ3kasP8,622
117
+ aury/boot/infrastructure/cache/factory.py,sha256=aF74JoiiSKFgctqqh2Z8OtGRS2Am_ou-I40GyygLzC0,2489
118
+ aury/boot/infrastructure/cache/manager.py,sha256=H2Gi6EEoZBSP5s5BoRlx0MPqKXoNg-mBvogoXmO8w0Y,11822
119
+ aury/boot/infrastructure/channel/__init__.py,sha256=Ztcfn1-TomgV91qhePpFK-3_nKgBt862yEFYUzIwPlo,566
120
+ aury/boot/infrastructure/channel/base.py,sha256=lBpP6vQB2AReoE7pJorkj9mAylXgC31B9Iwhyy2XKlk,2087
121
+ aury/boot/infrastructure/channel/manager.py,sha256=aZ-5lVn2lVRnq_tyCcEgBjZngrt_B6tuoWxlDOf3ykw,6260
122
+ aury/boot/infrastructure/channel/backends/__init__.py,sha256=zrOhrzkhEIgsO7Armhgda1ruJQ6a9ZK7GPZuzvEiuN8,151
123
+ aury/boot/infrastructure/channel/backends/memory.py,sha256=bQuuCU1fHRYdzLRsGwtqObI6U6VYlfyfT_gEwsZcujQ,2808
124
+ aury/boot/infrastructure/channel/backends/redis.py,sha256=lJEPyUxKazjcNa-RU5GyIT2BzyOPLAw3KBTijHslrEo,2810
125
+ aury/boot/infrastructure/clients/__init__.py,sha256=1ANMejb3RrBgaR-jq-dsxJ0kQDRHz5jV-QvdUNcf_ok,435
126
+ aury/boot/infrastructure/clients/rabbitmq/__init__.py,sha256=cnU-W7jOcAgp_FvsY9EipNCeJzeA9gHLRuZ0yQZE2DI,200
127
+ aury/boot/infrastructure/clients/rabbitmq/config.py,sha256=YmvNiISpqNt-LE2CrpzmxCgaEgYna7IbOfUSnA0B4T0,1239
128
+ aury/boot/infrastructure/clients/rabbitmq/manager.py,sha256=a3Op0yN2DICnoqxOVb0DVT9RnoF8laN2EutOsOSWzWA,9659
129
+ aury/boot/infrastructure/clients/redis/__init__.py,sha256=HGZVfcWmOPeiAk-rJ8Yun7N5CQiPlGFofdByvl8Uqso,613
130
+ aury/boot/infrastructure/clients/redis/config.py,sha256=KfC2R7bcQ91zjTp8Q_S7j3ZemDLdejUYc3CrWsJlpNM,1421
131
+ aury/boot/infrastructure/clients/redis/manager.py,sha256=Dmfu6OWGe_PrBr9wbOhl3suUpuKMUJDnCz6xW-rU4fQ,8538
132
+ aury/boot/infrastructure/database/__init__.py,sha256=MsHNyrJ2CZJT-lbVZzOAJ0nFfFEmHrJqC0zw-cFS768,888
133
+ aury/boot/infrastructure/database/config.py,sha256=fHxeIFrkatCp_kXh6imTP3WQgkHd7DeR99O7bO7iHSs,1625
134
+ aury/boot/infrastructure/database/exceptions.py,sha256=hUjsU23c0eMwogSDrKq_bQ6zvnY7PQSGaitbCEhhDZQ,766
135
+ aury/boot/infrastructure/database/manager.py,sha256=bgXNi6Gy-u18KQRjIgMshm__G_jui-8j03LpJbllc6Q,10009
136
+ aury/boot/infrastructure/database/query_tools/__init__.py,sha256=D-8Wxm8x48rg9G95aH_b4re7S4_IGJO9zznArYXldFo,5500
137
+ aury/boot/infrastructure/database/strategies/__init__.py,sha256=foj_2xEsgLZxshpK65YAhdJ2UZyh1tKvGRq6sre8pQY,5909
138
+ aury/boot/infrastructure/di/__init__.py,sha256=qFYlk265d6_rS8OiX37_wOc7mBFw8hk3yipDYNkyjQg,231
139
+ aury/boot/infrastructure/di/container.py,sha256=14FVbafGXea-JEAYeOEBxB6zAwndLCZJvprKiD_1IOQ,12524
140
+ aury/boot/infrastructure/events/__init__.py,sha256=D5JNFkGHCH79nYbqUil0Z8eW2p6Gx8P0vBbNnHqnTgM,698
141
+ aury/boot/infrastructure/events/base.py,sha256=oS6aNUWRvpXlbh7L3_4vzlwUumYmg44HKS1S4m_zOFo,3019
142
+ aury/boot/infrastructure/events/manager.py,sha256=HIHcTMs9lz9pFIcR7S1F2iKBUKGeLaD_4P5rlLjp1vw,7334
143
+ aury/boot/infrastructure/events/middleware.py,sha256=Ck3qNMTtLuFFKsJuEUeOMG9nu3qK1N_aqt6wH5JoAtw,1336
144
+ aury/boot/infrastructure/events/backends/__init__.py,sha256=V_hPtdjVUkYU4Uf8hTPVBUcnNYG9OfkjRPDnjp_5_zA,224
145
+ aury/boot/infrastructure/events/backends/memory.py,sha256=Up7vAxdJvIqkcqpnKNCu81ec6iCfNIhcQ-jKM3M2hZc,2623
146
+ aury/boot/infrastructure/events/backends/rabbitmq.py,sha256=XCuI9mc3GR-t0zht4yZ3e2nnyFl8UuTDir_0nsDbfxM,6495
147
+ aury/boot/infrastructure/events/backends/redis.py,sha256=ZCcA6ZvJFvRuwW9IbBfEUy9yp1IKiIrhJ6eDnp2ikKs,5596
148
+ aury/boot/infrastructure/monitoring/__init__.py,sha256=VgElCdCVcgERTIn3oRoSNslR82W9gRX5vgJcYDeloak,16149
149
+ aury/boot/infrastructure/mq/__init__.py,sha256=Q7kBk_GeQnxnqkyp29Bh1yFH3Q8xxxjs8oDYLeDj8C0,498
150
+ aury/boot/infrastructure/mq/base.py,sha256=kHrWUysWflMj3qyOnioLZ90it8d9Alq1Wb4PYhpBW4k,3396
151
+ aury/boot/infrastructure/mq/manager.py,sha256=DVXOQhoqx9dz9INajWiAxLnKjLaP-otKmdiBUzxgsAY,7502
152
+ aury/boot/infrastructure/mq/backends/__init__.py,sha256=YRByNFWv0VFibslQR5v4h5XxfSX-HIveCfb6W1jXM54,139
153
+ aury/boot/infrastructure/mq/backends/rabbitmq.py,sha256=0NWgPKEwtbmI63EVvKINdfXXDNyOvuOOP9LlBzqH91E,5493
154
+ aury/boot/infrastructure/mq/backends/redis.py,sha256=i8KECToIFEZ6CnHyNCk34_xdff5ioK172_knOy6EeUU,5279
155
+ aury/boot/infrastructure/scheduler/__init__.py,sha256=eTRJ5dSPcKvyFvLVtraoQteXTTDDGwIrmw06J2hoNdA,323
156
+ aury/boot/infrastructure/scheduler/exceptions.py,sha256=ROltrhSctVWA-6ulnjuYeHAk3ZF-sykDoesuierYzew,634
157
+ aury/boot/infrastructure/scheduler/manager.py,sha256=vvVditIJC4WaeqWWpUXSmMdkqnlUHREPd0BRPSNpnyY,15554
158
+ aury/boot/infrastructure/storage/__init__.py,sha256=sUfZqHFLYeutssN5t_LcnOApnxwOreXy-1YtDPmtEdo,866
159
+ aury/boot/infrastructure/storage/base.py,sha256=aWBCmPHF5Hkj8VWH2BGkpdeLfqf9uWECOVTFHNj7knw,5131
160
+ aury/boot/infrastructure/storage/exceptions.py,sha256=Av1r94bRkeeeDo6vgAD9e_9YA9Ge6D7F2U1qzUs-8FE,622
161
+ aury/boot/infrastructure/storage/factory.py,sha256=-ua2N5Uw5K14F1FzkGjlqv9VQCtywuZEB9o_kL465IU,2479
162
+ aury/boot/infrastructure/tasks/__init__.py,sha256=Ne3VRVj4Y7x51UUkJH8nVrbxucCbalsQB7PmthqSfxY,513
163
+ aury/boot/infrastructure/tasks/config.py,sha256=0e7uAVu9OIZd0r0elN_BQa6k0vCY7r8Ho4zk4ig0s2Y,930
164
+ aury/boot/infrastructure/tasks/constants.py,sha256=6lo5jGLPItntVKLgrz6uh4tz_F1a-ckEO97MlP5aGcA,836
165
+ aury/boot/infrastructure/tasks/exceptions.py,sha256=v6hlBbfs-oI_HbUZCxR3T8_c-U83s4_I0SvM7GHDUWE,605
166
+ aury/boot/infrastructure/tasks/manager.py,sha256=xVo22Xk9k4NM04wETUDaVg6DkWw2Nc5ksfwKWBtHncU,17162
167
+ aury/boot/testing/__init__.py,sha256=WbUSXcICNpr9RvrA2JzxRPcjMuTWDPTKOwXl0l4697U,703
168
+ aury/boot/testing/base.py,sha256=08FFwLohQV5FsWmZvLss-3vLpn0Fp6V0F17d9D1mBLM,3721
169
+ aury/boot/testing/client.py,sha256=KOg1EemuIVsBG68G5y0DjSxZGcIQVdWQ4ASaHE3o1R0,4484
170
+ aury/boot/testing/factory.py,sha256=8GvwX9qIDu0L65gzJMlrWB0xbmJ-7zPHuwk3eECULcg,5185
171
+ aury/boot/toolkit/__init__.py,sha256=AcyVb9fDf3CaEmJPNkWC4iGv32qCPyk4BuFKSuNiJRQ,334
172
+ aury/boot/toolkit/http/__init__.py,sha256=zIPmpIZ9Qbqe25VmEr7jixoY2fkRbLm7NkCB9vKpg6I,11039
173
+ aury_boot-0.0.5.dist-info/METADATA,sha256=xVbiZzJ27k9kmk_KiqSTAw8x7BWuzZ3U49XvVSO270I,7923
174
+ aury_boot-0.0.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
175
+ aury_boot-0.0.5.dist-info/entry_points.txt,sha256=f9KXEkDIGc0BGkgBvsNx_HMz9VhDjNxu26q00jUpDwQ,49
176
+ aury_boot-0.0.5.dist-info/RECORD,,