python-ddd-framework 0.4.0__py3-none-any.whl → 0.5.1__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 (25) hide show
  1. python_ddd_framework/application/runtime.py +46 -19
  2. python_ddd_framework/application_services/invocation.py +88 -25
  3. python_ddd_framework/background_execution/local.py +20 -1
  4. python_ddd_framework/background_execution/processes.py +11 -1
  5. python_ddd_framework/background_workers/runtime.py +10 -1
  6. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/README.md +2 -1
  7. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_integration_service.py.jinja +31 -7
  8. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_observation_handler.py.jinja +2 -2
  9. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/AGENTS.md +7 -0
  10. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/architecture.md +2 -1
  11. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/development.md +11 -1
  12. python_ddd_framework/hosted_services/bridge.py +75 -16
  13. python_ddd_framework/hosted_services/contracts.py +5 -1
  14. python_ddd_framework/hosted_services/runtime.py +71 -17
  15. python_ddd_framework/lifecycle/participants.py +4 -0
  16. python_ddd_framework/messaging/channel.py +34 -7
  17. python_ddd_framework/messaging/contracts.py +9 -0
  18. python_ddd_framework/messaging/module.py +13 -0
  19. python_ddd_framework/messaging/runtime.py +16 -1
  20. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/METADATA +10 -2
  21. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/RECORD +25 -25
  22. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/WHEEL +0 -0
  23. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/entry_points.txt +0 -0
  24. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/licenses/LICENSE +0 -0
  25. {python_ddd_framework-0.4.0.dist-info → python_ddd_framework-0.5.1.dist-info}/licenses/src/python_ddd_framework/background_jobs/pgqueuer/UPSTREAM_LICENSE.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-ddd-framework
3
- Version: 0.4.0
3
+ Version: 0.5.1
4
4
  Summary: Modular DDD application framework with project CLI and bundled templates
5
5
  License-Expression: LicenseRef-Proprietary
6
6
  License-File: LICENSE
@@ -86,7 +86,7 @@ Runtime integrations ship in the base package; the Host explicitly enables the m
86
86
 
87
87
  The supported versions and dependencies are defined in [pyproject.toml](https://github.com/componet-architecture/python-ddd-framework/blob/main/pyproject.toml). The framework, CLI, and bundled templates share one package version.
88
88
 
89
- > **Version 0.4:** This release introduces capability-based composition, current service and Identity APIs, and the `backend/` consumer layout with basic/DDD module templates. Existing applications must apply the migration instructions below. Check [release status](https://github.com/componet-architecture/python-ddd-framework/blob/main/docs/status.md#当前发布) for publication and validation evidence. Use the local-wheel route below when evaluating a checkout that has not been published.
89
+ > **Version 0.5:** This version introduces staged lifecycle shutdown, a temporary `HostedService.stopping` context, and explicit message-channel admission during stopping. Existing applications must apply the lifecycle migration instructions below; applications upgrading from before 0.4 must also apply the earlier capability and consumer-layout migrations. Check [release status](https://github.com/componet-architecture/python-ddd-framework/blob/main/docs/status.md#当前发布) for publication and validation evidence. Use the local-wheel route below when evaluating a checkout that has not been published.
90
90
 
91
91
  ### 1. Install the CLI and create a project
92
92
 
@@ -368,6 +368,14 @@ During `0.x`, compatible fixes use a patch release; changes requiring consumer a
368
368
 
369
369
  These notes remain the authoritative consumer migration instructions. Historical versions below refer to the former package name.
370
370
 
371
+ #### Lifecycle shutdown migration (0.5)
372
+
373
+ Version 0.5.1 changes shutdown after the published 0.4.0 baseline. Custom `RuntimeParticipant` implementations must use the new global barriers: `quiesce` → `stopping(reason)` → `close_admission` → `drain` → `stop(reason)` → Module/container cleanup. Move accepted-work draining out of resource `stop`; keep dependencies alive until all drains complete. `prepare(bool)` still selects the startup mode.
374
+
375
+ Move business calls needed before resource release into the optional `HostedService.stopping(context, reason)` hook. Use its separate context for SDK/thread callbacks; the startup context stays closed. Only successfully started services receive the hook. `stop` still cleans every touched service, including partial startup failures. Each hook uses the existing `shutdown_timeout`; cancellation waits for actual cleanup and is not a total shutdown deadline.
376
+
377
+ Channels that must accept these callbacks declare `stopping_owners=(ServiceType,)` and pass the current hook context with `send(value, stopping=context)` or `submit(value, stopping=context)`. The channel Module must depend on the declared service owner. The default permits no shutdown input. Capacity, receipts and per-call scope/UoW behavior remain unchanged; HTTP/WebSocket retain native transport shutdown. See the [lifecycle decision](docs/adr/ADR-033-staged-lifecycle-shutdown.md) and [usage guide](docs/development.md#hostedservice-收尾).
378
+
371
379
  #### Additional fixes in 0.4.0
372
380
 
373
381
  `BackgroundJobRetryPolicy.max_attempts` now counts all executions, including the first. A value of `2` permits two executions; `1` disables failure retries. The 0.3.2 PgQueuer mapping allowed one extra execution. If your application intentionally relied on that behavior, increase its configured total by one. `BackgroundJobContext.attempt` remains zero-based. No queue schema migration is required.
@@ -3,7 +3,7 @@ python_ddd_framework/application/__init__.py,sha256=RPe_lkegIRim7GcBnXyevOg5KM7b
3
3
  python_ddd_framework/application/build_spec.py,sha256=Udj1JIgP2oBMCUezmzWzOdjFYBCEE8OxwHSEaDqrMMo,1030
4
4
  python_ddd_framework/application/builder.py,sha256=d0vc1D5HvG_aJI5lPQydr-ha0OTNviWlplxlyP99qDs,8080
5
5
  python_ddd_framework/application/composition.py,sha256=vgtalmP-ovAHZ3vgDen2Eywj5WPfkhvtPHbPmreQbwc,7601
6
- python_ddd_framework/application/runtime.py,sha256=KZt4tb0-8OSAFvb22I77SqxDEuOwbidRSgxX_k9SC6k,14559
6
+ python_ddd_framework/application/runtime.py,sha256=2VzBWlgwkyWRXK9hf3jzO5Wd2U749pVIXsjzrK0WF9Y,15433
7
7
  python_ddd_framework/application/runtime_hooks.py,sha256=RFlte6jMRmlla00ZGXqi4CBHJAJ7TI7GGZ_sv3V41dU,12240
8
8
  python_ddd_framework/application/state.py,sha256=IH0KLhNpsqrUKHaal5yvZ5svcbhX2shJmQ4pPP_lyAs,5478
9
9
  python_ddd_framework/application_services/__init__.py,sha256=sxmrmycrqb3PWmhUNt1FGOQKzezeoZabkxWQDxW3K8I,1203
@@ -12,7 +12,7 @@ python_ddd_framework/application_services/catalog.py,sha256=1T3QtLj1ENx6VtsfcvVl
12
12
  python_ddd_framework/application_services/contracts.py,sha256=dTVMuinGho3aAagXF5ZOdqMngMCsl1mLcrqNNLoJ1rU,7379
13
13
  python_ddd_framework/application_services/dispatcher.py,sha256=FD4DP2tkGA2hp1MYD2-GnIXrRBMUixUG8QkRq8hzBeg,6505
14
14
  python_ddd_framework/application_services/errors.py,sha256=jBR9zt8kRygNG7gUbZOe8dugCT3YR3iOV-DmuNX0znA,2970
15
- python_ddd_framework/application_services/invocation.py,sha256=SIPZBbJ6TjpnXPHRGAq9cuLC0iwttuXg-0B7MYRR-fo,21205
15
+ python_ddd_framework/application_services/invocation.py,sha256=TgpibFVhvj2ai9cmKnd30lUtTd0RdA5XfQQXX_L_EUA,23597
16
16
  python_ddd_framework/application_services/module.py,sha256=9uvigujA-Rraw0vbpO85VA-pDjtHAhoOObJRL0kMuas,7091
17
17
  python_ddd_framework/application_services/pagination.py,sha256=4jq4wGO60iPrIpP_6gnXYnIYkvcqgC6wJ6B0cmyL7Xw,500
18
18
  python_ddd_framework/auditing/__init__.py,sha256=299w-hyoCj50QNr-1FPq6G4NO8boiRDKTfcPcGLT5Ao,345
@@ -39,12 +39,12 @@ python_ddd_framework/background_execution/child.py,sha256=EgTP-xkWpmXrYZO-3G6qMS
39
39
  python_ddd_framework/background_execution/contracts.py,sha256=8K7ILU67rJQ9jUd7zU2Rcf1YZ1Q-KePjS5xkl_E7W6c,1185
40
40
  python_ddd_framework/background_execution/declarations.py,sha256=xqA5fG3F5V8KrQF9oRW-E_hgHbR2f5VRw6fMNwWZkpA,1478
41
41
  python_ddd_framework/background_execution/lifecycle.py,sha256=BhVkTlNPLhqUXG1h6nuG958r47Be0haqBgTKimE48Eo,1194
42
- python_ddd_framework/background_execution/local.py,sha256=E01p23aWJ-xyYzTc2fSFW5sGgii4QdSynYDMquFAHBo,5235
42
+ python_ddd_framework/background_execution/local.py,sha256=ypTAESAUCzpeVwhu_10mwWr5pOexDYObguXecwS9aQ4,5959
43
43
  python_ddd_framework/background_execution/locks.py,sha256=bD_hT_PfZnXXrq4VwTPK1pPHzeJ6JEZ7d6cekBBjG9g,1298
44
44
  python_ddd_framework/background_execution/management.py,sha256=FmtuhU1glMXnQoYzn-w1F7GjUCVjhnW6ssACr4_tSeE,716
45
45
  python_ddd_framework/background_execution/module.py,sha256=V7AMhBwPOQlrHMoO5xgq6SyGJepykiv8HaPjohiRuBo,4831
46
46
  python_ddd_framework/background_execution/permissions.py,sha256=63PomRO6Zb9z0ezn6ra6n8zVjbdFFsnzqpGJ_Xcm3AU,584
47
- python_ddd_framework/background_execution/processes.py,sha256=E1ynb_Og8xu6hOUXHXQw-xMNXaMFkbsqEkmyQWgdkpA,13383
47
+ python_ddd_framework/background_execution/processes.py,sha256=AnDPMSFcoEtvqpl6wz2JVqPl8ywfM5i43jvgmuY8_VA,13764
48
48
  python_ddd_framework/background_jobs/__init__.py,sha256=DLPrkoSb7wXWmGZOAzFynmjvI7qtyKXpaCGTnU5FWBs,819
49
49
  python_ddd_framework/background_jobs/catalog.py,sha256=-D4Rhln_VkIRt5nrld-icxZSMUqfZsYhJXRd1wV3d-M,14237
50
50
  python_ddd_framework/background_jobs/contracts.py,sha256=WT0Zr6HsbMr2Pd-OP8boq0hcD0MZ8M5n78FgNcLL9B4,7855
@@ -66,7 +66,7 @@ python_ddd_framework/background_workers/catalog.py,sha256=esbPe_nz6GFKOkNy3cHJaH
66
66
  python_ddd_framework/background_workers/contracts.py,sha256=rDscYI7o9jebr1eFGIaOVCUyFFp9WG127obj50fYLyY,5603
67
67
  python_ddd_framework/background_workers/errors.py,sha256=sNPth84yM9fE77dr5V_SdAI8oqcPZu4eXqOhsDMqeaU,732
68
68
  python_ddd_framework/background_workers/execution.py,sha256=e7OywrRefIN6mhzvHApCoS8L5fXKI8kLgNxHpGV2idY,5490
69
- python_ddd_framework/background_workers/runtime.py,sha256=hJJKpMRTDUBy3uJ23iJbzH7DH-RDlCrncE9fAf4poqA,10391
69
+ python_ddd_framework/background_workers/runtime.py,sha256=WA6L9pXf0YYdLQgdKwgwPbkVN1tPnI2scmJjztXWVP0,10667
70
70
  python_ddd_framework/caching/__init__.py,sha256=J4MKK4ptwl8KraAKWiqDo18LYAQmZ_Wb5SgCL35VUM0,341
71
71
  python_ddd_framework/caching/contracts.py,sha256=71zhKUqi3zD-iZ5lZfVKRNjlkNfMpjffICaGmGUoe0A,2190
72
72
  python_ddd_framework/caching/errors.py,sha256=pR-lBWjNY6UFcnPhM9eahoipC_1VxZmJESRoQp9kpa8,473
@@ -105,7 +105,7 @@ python_ddd_framework/developer_kit/templates/basic/{{cookiecutter.module_name}}/
105
105
  python_ddd_framework/developer_kit/templates/basic/{{cookiecutter.module_name}}/services/__init__.py.jinja,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
106
  python_ddd_framework/developer_kit/templates/basic/{{cookiecutter.module_name}}/services/default_conversion_service.py.jinja,sha256=YIYXqDycBVoUlLCwwUZ2tcyUk2fKSu-20mI00u5QUhc,342
107
107
  python_ddd_framework/developer_kit/templates/module/cookiecutter.json,sha256=yirXpnODe6TAOyf2VR0LhAMPdrX-_Qvjobu4K0mC8ck,120
108
- python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/README.md,sha256=C1YxGxTx0SuSeeWawAxSjRvCjl0CPEQQ1NKP4-QRUe4,8362
108
+ python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/README.md,sha256=_-msJMH_dRGk7JdBHBzqcIxzx6k3qYjY_CB9FWnFIGM,8736
109
109
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/__init__.py.jinja,sha256=byPOI4PKtQDi5IQa9tzZZEVYy5zGx9PJdBzPrgcxm64,89
110
110
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/__init__.py.jinja,sha256=pm9_TqjN20deRELpopxK412O3mra0OZ6QdesPdcsaRU,90
111
111
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/background_jobs/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
@@ -125,8 +125,8 @@ python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}
125
125
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/event_handlers/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
126
126
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/event_handlers/order_changed_handler.py.jinja,sha256=Tu40Q_HPbF0dNO0hqNJDBFCs6G2n9kNt3RHanIcfhUM,1311
127
127
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
128
- python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_integration_service.py.jinja,sha256=gc2N-sFdUj8W2aSfAa-b9PNt_r3UgX7cCa5zMHfIMx0,1746
129
- python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_observation_handler.py.jinja,sha256=wb6MEg3X6T8YExt1CGl7VPPLDhANmVYCaylMQm8Qh5g,656
128
+ python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_integration_service.py.jinja,sha256=ibx4gynGNZiLxoxoRanQ2alx0l6CexvK9Wyr_qyiGh4,3038
129
+ python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/hosted_services/order_observation_handler.py.jinja,sha256=KbFmFLZIJ9-3nDdWggwi46IkLERGrFKrg5Fv0rMArcE,656
130
130
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/integration_services/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
131
131
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/integration_services/order_reporting_service.py.jinja,sha256=cdJ7odGr4z-Ag-yMQRiDdjmOnGK4r_s7ncOLMYOuq8A,650
132
132
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/interceptors/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
@@ -207,7 +207,7 @@ python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}
207
207
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/tests/__init__.py.jinja,sha256=Kbig4VsdpmVUDHx5SLPf7ZZM6S5ftVmzBxBAJIjwvng,40
208
208
  python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/tests/test_domain.py.jinja,sha256=7aELY93ty7EiJOS6s3GpXYE1z5CLy658rnAUElTyy-U,738
209
209
  python_ddd_framework/developer_kit/templates/project/cookiecutter.json,sha256=vmN799k9eRHAEGeYt8uUjPsusbblvgpNIsXVOsXUno4,314
210
- python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/AGENTS.md,sha256=lu3CQ7HdMczt7zWHVyfHUilOX8YvAdXkDtaZYopD1uc,7660
210
+ python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/AGENTS.md,sha256=NYwQ1p_kkpJA7P1rlYyOjNdy-dan9yE8b9EE6CqBUeg,8184
211
211
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/README.md,sha256=xJZD8VyGjAkTbYMdOAWKn3gMgCo_aYzcH0jeVqiZKZI,8605
212
212
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/backend/.dockerignore,sha256=TG053vIzikxG8h53vCcU_s5wcr7p4GEKwsedbrRrSOo,71
213
213
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/backend/.gitignore,sha256=OF6nwgb-RiP8EAXc5osbk3bsOEYkk0JaV99v3FcglTU,66
@@ -222,8 +222,8 @@ python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name
222
222
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/backend/src/host/module.py.jinja,sha256=6j63muRR7tQmYIFso-egk8L5_Zw57I61ijWR8SDpw5U,3235
223
223
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/backend/tests/conftest.py.jinja,sha256=I_SlSxioBsCFNJLM52iM-neYBJR71qOUn7C4dI9t-7I,149
224
224
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/backend/tests/host/test_http.py.jinja,sha256=pmiz6k0oWWrPeW_rVG2Ynibg4j3yuKvgvYFc0K7J_no,2766
225
- python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/architecture.md,sha256=aFdYGWjUMdlOYVy9jwS2z-fhpKdPJTMT2kw54G8zO0o,14720
226
- python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/development.md,sha256=w8oa8jwP2sDlVl81_4vuHKV6f7z73D1JTmdoxZ-etc8,30998
225
+ python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/architecture.md,sha256=x5MRPgB1eLAocXrmBQ_TRbrzOoQ9Tl7KKniZ24zCiH0,15420
226
+ python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/development.md,sha256=yfPwn1jBhGFQQeSMFndutlv8K9tA5_fQBsUEVxPpFKs,32417
227
227
  python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/scripts/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  python_ddd_framework/developer_kit/wiring.py,sha256=80ZhxpGXK6NP3b_BTTc1kt3oIU21MU70cT9kgm8ZgAE,7835
229
229
  python_ddd_framework/diagnostics/__init__.py,sha256=HdgzjQqMJ_SUGKJc5EcQ5PL1rM4GcTeem-L0q1r7vjQ,455
@@ -295,14 +295,14 @@ python_ddd_framework/fastapi/transfer.py,sha256=QiWPxvv-sYkilGTwP8uDh-dozGR-Qf8i
295
295
  python_ddd_framework/fastapi/upload_limits.py,sha256=vK1wuH34zrqrZhg6WDwMn730nX9fUDsMFhBbHKmv2kg,1959
296
296
  python_ddd_framework/fastapi/uploads.py,sha256=SUQVB7tEXUXti6GFUenBNdlW3YaIchtCi0GcBJGhU88,3839
297
297
  python_ddd_framework/hosted_services/__init__.py,sha256=r9yz2PpCUgpxvZsv1WyVrzslvfYCcfmAEsFIlrxejx8,991
298
- python_ddd_framework/hosted_services/bridge.py,sha256=y4wlI15HbC9nVugrnKYU8jwYRW16z6u8am9OtaKwuZU,14865
298
+ python_ddd_framework/hosted_services/bridge.py,sha256=8Aw4XD3O-rC5M1smAeMqHvR24moMdY-QQdpfRVGlXLw,17075
299
299
  python_ddd_framework/hosted_services/catalog.py,sha256=maXqFDewPeYoEPYJGKf8B1G4oknVDUuy56lOSdJ8p6o,9146
300
- python_ddd_framework/hosted_services/contracts.py,sha256=A1TYIkCCM6G9tYSKUtypivUp7VbC4jleX1hg5LgX3Xo,2004
300
+ python_ddd_framework/hosted_services/contracts.py,sha256=LtisS08lO8v_cBd0Guy8RVf8S8f_fpWq-2VMCZGPRcc,2237
301
301
  python_ddd_framework/hosted_services/declarations.py,sha256=IvtaOWPvoTECwdhTxRqd4_4-LMyJlxjB0Xrx9zr-Ljw,526
302
302
  python_ddd_framework/hosted_services/errors.py,sha256=GKG7fEkSoW4ykUXmMHriNrhuIEKBlonlN_vkjIwWKAY,1949
303
303
  python_ddd_framework/hosted_services/module.py,sha256=EyDIwdtiBmhmhaG_9_MW_8iPBxsZtaWu0P6ivJOZiV4,2628
304
304
  python_ddd_framework/hosted_services/options.py,sha256=KiMZhzbgFlUhYdTbTccUHMfGHrnnXrn-_5Qf6PAfxlE,551
305
- python_ddd_framework/hosted_services/runtime.py,sha256=m9Oy_oh2WcQzO8HcBZZwPb2UuuWvVerR4BcC_8Uivpw,11575
305
+ python_ddd_framework/hosted_services/runtime.py,sha256=fP96LDfItgh4jo3NoTF4-opUOrblDaCAFBJrzSNK0Io,14199
306
306
  python_ddd_framework/hosted_services/state.py,sha256=q9mZrd1nflI3WvYg6xzBzNZvbq1lEDXImSW4dXRZiVs,1459
307
307
  python_ddd_framework/hosting/__init__.py,sha256=pH06-NGL_FXdio5YldB4pqY89IyL8vDe4HStwRlakdI,244
308
308
  python_ddd_framework/hosting/instance.py,sha256=2vmaB4McO8vCzZcqKP3zbNPDHO1WUNyTIWyEOKm4-R8,1581
@@ -350,16 +350,16 @@ python_ddd_framework/invocation/validation.py,sha256=sy3YyGFtQ-Y69XcjzfJw7PO13zw
350
350
  python_ddd_framework/lifecycle/__init__.py,sha256=8L_wDnclU6xAPmPAtx2iGX8lf4qFczcE_ubqFsGfhJA,745
351
351
  python_ddd_framework/lifecycle/composition.py,sha256=dKsqWB6Tvplkpt_d4qBFKP48Kzs9_9ud66XXdA6f-cI,1167
352
352
  python_ddd_framework/lifecycle/context.py,sha256=GfWBjveXbmVLWmQsRc77p5zsUcOCN2MyEV770x855pE,907
353
- python_ddd_framework/lifecycle/participants.py,sha256=JgqUjVQ1FwDZulyYt84FIFVBHsWyForMQyCBSzr2WYM,1257
353
+ python_ddd_framework/lifecycle/participants.py,sha256=tljXU7plQCw_DqsopqnmQ_14kQWKUJ-HzsuM_JGehdk,1457
354
354
  python_ddd_framework/lifecycle/runtime.py,sha256=8itu1qc-TKYwfQpihEJevUyrsijTxhak15o7qGG-yzI,1166
355
355
  python_ddd_framework/lifecycle/state.py,sha256=chxUojM1d3s-cu7mr_gWV-kFu5A-S6ANlKBQ_Pq-0GA,501
356
356
  python_ddd_framework/messaging/__init__.py,sha256=RiZ1RhVT3k1HXIpWiR41ne6vJCgUpfkR2xnQTy5emHY,576
357
- python_ddd_framework/messaging/channel.py,sha256=EKpEfQbilMA3xC5LXfu7Bi-x5f07uX8TWxjt0oh_zqU,8742
358
- python_ddd_framework/messaging/contracts.py,sha256=2k-wQPnDPgTT_XGVEp9IlNMlhYOrMPVOkb-8U88U6O0,2220
359
- python_ddd_framework/messaging/module.py,sha256=iHEWvo3zo6XG28GxaFgPj1PK2HbUCK8XrD5p-16XudM,4661
357
+ python_ddd_framework/messaging/channel.py,sha256=JvC2hzdFsAYNbHPCM49c63fORB0_fPMc-h6B6tYAcmQ,9961
358
+ python_ddd_framework/messaging/contracts.py,sha256=UK2tXLdH_Apx_lxf_cLplYpv_i0_kMuFB-sV7NiLflQ,2777
359
+ python_ddd_framework/messaging/module.py,sha256=tdWSH3oLcYUZU74dGJTVwUIY-sIDeW1K76WfNzYRgyg,5331
360
360
  python_ddd_framework/messaging/options.py,sha256=SnGQA1oEHKKpPVi5n16YgacbvIkxTX4IRjEpAfLOUTo,332
361
361
  python_ddd_framework/messaging/receipt.py,sha256=Mfc_waONpUlIY0arqVuHW78ETZsteeNY-LokhHYEAm8,795
362
- python_ddd_framework/messaging/runtime.py,sha256=9-o86_2iM2z1R8eYbfh0sviUpdXpU8r4vKD4nKg5tR8,4371
362
+ python_ddd_framework/messaging/runtime.py,sha256=iZtoE-cnPEFXwOK6uERrbyFkMYB5v1lnzTx64633URY,4807
363
363
  python_ddd_framework/modularity/__init__.py,sha256=8MFbyTdOC-qlu87nQFCiq-JtZMdpRLjSXpiFrwu9djE,560
364
364
  python_ddd_framework/modularity/contracts.py,sha256=z9PxxtOiFwtQOMZzatmO_3SYFTmPJb-aMz_fpwMg_Io,3720
365
365
  python_ddd_framework/modularity/discovery.py,sha256=5e346Q4363i3WhTS_VerjS1j7A-SxxsXgYGnVRNUjko,6200
@@ -480,9 +480,9 @@ python_ddd_framework/unit_of_work/module.py,sha256=6H0D2ZNH5DJ2LnDGhHkI98FsTqew4
480
480
  python_ddd_framework/unit_of_work/options.py,sha256=AVcEmwwn39qvj8PLQetBeGzdU_eblABGuNLDIQU5tyI,3365
481
481
  python_ddd_framework/validation/__init__.py,sha256=nTN_BgIXMLHeUtMgSj2hpisWc1_sk6UWTapk30oh1us,100
482
482
  python_ddd_framework/validation/models.py,sha256=Ydz5ZYgqYMPZEXi9A3DA6beN5lD9AcMaImnxDf1aRXs,1737
483
- python_ddd_framework-0.4.0.dist-info/licenses/LICENSE,sha256=2sSWLZdtk4EhG2GlwpksXzmyux-G6Qiov0D27lE_bqw,805
484
- python_ddd_framework-0.4.0.dist-info/licenses/src/python_ddd_framework/background_jobs/pgqueuer/UPSTREAM_LICENSE.txt,sha256=0lCGUd5Pke2Up1Kqn1kRnHcwLlBz60E8xvR7WL4k_kE,1066
485
- python_ddd_framework-0.4.0.dist-info/WHEEL,sha256=7hzKWg-J8I3Buqyw5tBii5z_MmAVsDYXXijd_QAtNZ8,81
486
- python_ddd_framework-0.4.0.dist-info/entry_points.txt,sha256=CMy4XBD8IKGUfHwe0YBmHmSJtjfnA3yyDHqsMZCLsc8,447
487
- python_ddd_framework-0.4.0.dist-info/METADATA,sha256=AYcYkokkyLpVSeijdXgbwmKeiklB69KBTORLmhckxG8,52261
488
- python_ddd_framework-0.4.0.dist-info/RECORD,,
483
+ python_ddd_framework-0.5.1.dist-info/licenses/LICENSE,sha256=2sSWLZdtk4EhG2GlwpksXzmyux-G6Qiov0D27lE_bqw,805
484
+ python_ddd_framework-0.5.1.dist-info/licenses/src/python_ddd_framework/background_jobs/pgqueuer/UPSTREAM_LICENSE.txt,sha256=0lCGUd5Pke2Up1Kqn1kRnHcwLlBz60E8xvR7WL4k_kE,1066
485
+ python_ddd_framework-0.5.1.dist-info/WHEEL,sha256=7hzKWg-J8I3Buqyw5tBii5z_MmAVsDYXXijd_QAtNZ8,81
486
+ python_ddd_framework-0.5.1.dist-info/entry_points.txt,sha256=CMy4XBD8IKGUfHwe0YBmHmSJtjfnA3yyDHqsMZCLsc8,447
487
+ python_ddd_framework-0.5.1.dist-info/METADATA,sha256=gyAZinf6LZuIQts8-opsMcyTPZ4RUNkVkL_5p0n0qu4,53839
488
+ python_ddd_framework-0.5.1.dist-info/RECORD,,