python-ddd-framework 0.3.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 (355) hide show
  1. python_ddd_framework/__init__.py +449 -0
  2. python_ddd_framework/application/__init__.py +6 -0
  3. python_ddd_framework/application/build_spec.py +37 -0
  4. python_ddd_framework/application/builder.py +260 -0
  5. python_ddd_framework/application/composition.py +219 -0
  6. python_ddd_framework/application/runtime.py +549 -0
  7. python_ddd_framework/application/runtime_hooks.py +327 -0
  8. python_ddd_framework/application/state.py +216 -0
  9. python_ddd_framework/application_services/__init__.py +54 -0
  10. python_ddd_framework/application_services/catalog.py +500 -0
  11. python_ddd_framework/application_services/contracts.py +190 -0
  12. python_ddd_framework/application_services/dispatcher.py +423 -0
  13. python_ddd_framework/application_services/errors.py +89 -0
  14. python_ddd_framework/application_services/execution.py +199 -0
  15. python_ddd_framework/application_services/interceptors.py +44 -0
  16. python_ddd_framework/application_services/invocation.py +431 -0
  17. python_ddd_framework/application_services/policies.py +46 -0
  18. python_ddd_framework/application_services/seeding.py +72 -0
  19. python_ddd_framework/application_services/signature.py +49 -0
  20. python_ddd_framework/application_services/validation.py +84 -0
  21. python_ddd_framework/auditing/__init__.py +12 -0
  22. python_ddd_framework/auditing/contracts.py +39 -0
  23. python_ddd_framework/auditing/control.py +48 -0
  24. python_ddd_framework/auditing/sqlalchemy/__init__.py +6 -0
  25. python_ddd_framework/auditing/sqlalchemy/migrations/0001_auditing.py +45 -0
  26. python_ddd_framework/auditing/sqlalchemy/migrations/__init__.py +1 -0
  27. python_ddd_framework/auditing/sqlalchemy/models.py +31 -0
  28. python_ddd_framework/auditing/sqlalchemy/module.py +32 -0
  29. python_ddd_framework/auditing/sqlalchemy/store.py +63 -0
  30. python_ddd_framework/authorization/__init__.py +38 -0
  31. python_ddd_framework/authorization/catalog.py +63 -0
  32. python_ddd_framework/authorization/contracts.py +241 -0
  33. python_ddd_framework/authorization/definition_discovery.py +81 -0
  34. python_ddd_framework/authorization/definitions.py +43 -0
  35. python_ddd_framework/authorization/errors.py +40 -0
  36. python_ddd_framework/background_execution/__init__.py +17 -0
  37. python_ddd_framework/background_execution/application.py +41 -0
  38. python_ddd_framework/background_execution/child.py +123 -0
  39. python_ddd_framework/background_execution/contracts.py +48 -0
  40. python_ddd_framework/background_execution/lifecycle.py +22 -0
  41. python_ddd_framework/background_execution/local.py +127 -0
  42. python_ddd_framework/background_execution/locks.py +33 -0
  43. python_ddd_framework/background_execution/management.py +17 -0
  44. python_ddd_framework/background_execution/module.py +10 -0
  45. python_ddd_framework/background_execution/permissions.py +14 -0
  46. python_ddd_framework/background_execution/processes.py +331 -0
  47. python_ddd_framework/background_jobs/__init__.py +31 -0
  48. python_ddd_framework/background_jobs/catalog.py +340 -0
  49. python_ddd_framework/background_jobs/contracts.py +208 -0
  50. python_ddd_framework/background_jobs/declaration.py +67 -0
  51. python_ddd_framework/background_jobs/errors.py +28 -0
  52. python_ddd_framework/background_jobs/execution.py +203 -0
  53. python_ddd_framework/background_jobs/pgqueuer/UPSTREAM_LICENSE.txt +21 -0
  54. python_ddd_framework/background_jobs/pgqueuer/__init__.py +6 -0
  55. python_ddd_framework/background_jobs/pgqueuer/enqueue.py +86 -0
  56. python_ddd_framework/background_jobs/pgqueuer/migrations/0001_pgqueuer_1_3_2.py +95 -0
  57. python_ddd_framework/background_jobs/pgqueuer/migrations/__init__.py +1 -0
  58. python_ddd_framework/background_jobs/pgqueuer/module.py +106 -0
  59. python_ddd_framework/background_jobs/pgqueuer/options.py +82 -0
  60. python_ddd_framework/background_jobs/pgqueuer/runtime.py +479 -0
  61. python_ddd_framework/background_jobs/pgqueuer/sql/pgqueuer_1_3_2_install.sql +118 -0
  62. python_ddd_framework/background_jobs/pgqueuer/supervision.py +201 -0
  63. python_ddd_framework/background_workers/__init__.py +22 -0
  64. python_ddd_framework/background_workers/catalog.py +118 -0
  65. python_ddd_framework/background_workers/contracts.py +152 -0
  66. python_ddd_framework/background_workers/errors.py +20 -0
  67. python_ddd_framework/background_workers/execution.py +133 -0
  68. python_ddd_framework/background_workers/runtime.py +219 -0
  69. python_ddd_framework/caching/__init__.py +11 -0
  70. python_ddd_framework/caching/catalog.py +73 -0
  71. python_ddd_framework/caching/contracts.py +73 -0
  72. python_ddd_framework/caching/errors.py +20 -0
  73. python_ddd_framework/cli/__init__.py +105 -0
  74. python_ddd_framework/cli/development.py +85 -0
  75. python_ddd_framework/cli/errors.py +5 -0
  76. python_ddd_framework/cli/inspection.py +96 -0
  77. python_ddd_framework/cli/project.py +69 -0
  78. python_ddd_framework/cli/runtime.py +56 -0
  79. python_ddd_framework/configuration/__init__.py +21 -0
  80. python_ddd_framework/configuration/composition.py +65 -0
  81. python_ddd_framework/configuration/contracts.py +68 -0
  82. python_ddd_framework/configuration/dotenv_source.py +51 -0
  83. python_ddd_framework/configuration/environment_source.py +38 -0
  84. python_ddd_framework/configuration/immutability.py +124 -0
  85. python_ddd_framework/configuration/input_shape.py +58 -0
  86. python_ddd_framework/configuration/merge.py +103 -0
  87. python_ddd_framework/configuration/root.py +215 -0
  88. python_ddd_framework/configuration/sources.py +519 -0
  89. python_ddd_framework/configuration/values.py +427 -0
  90. python_ddd_framework/configuration/yaml_source.py +51 -0
  91. python_ddd_framework/developer_kit/__init__.py +1 -0
  92. python_ddd_framework/developer_kit/generation.py +182 -0
  93. python_ddd_framework/developer_kit/project_metadata.py +45 -0
  94. python_ddd_framework/developer_kit/source.py +53 -0
  95. python_ddd_framework/developer_kit/templates/module/cookiecutter.json +1 -0
  96. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/README.md +70 -0
  97. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/__init__.py.jinja +1 -0
  98. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/__init__.py.jinja +1 -0
  99. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/cache.py.jinja +10 -0
  100. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/events.py.jinja +24 -0
  101. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/integration.py.jinja +41 -0
  102. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/module.py.jinja +20 -0
  103. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/options.py.jinja +7 -0
  104. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/orders.py.jinja +83 -0
  105. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application/tasks.py.jinja +84 -0
  106. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application_contracts/__init__.py.jinja +1 -0
  107. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application_contracts/module.py.jinja +10 -0
  108. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/application_contracts/orders.py.jinja +35 -0
  109. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/__init__.py.jinja +1 -0
  110. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/module.py.jinja +10 -0
  111. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/orders.py.jinja +56 -0
  112. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/repository.py.jinja +14 -0
  113. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/seeding.py.jinja +19 -0
  114. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain/settings.py.jinja +16 -0
  115. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain_shared/__init__.py.jinja +1 -0
  116. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain_shared/definitions.py.jinja +24 -0
  117. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain_shared/module.py.jinja +7 -0
  118. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/domain_shared/permissions.py.jinja +15 -0
  119. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/http_api/__init__.py.jinja +1 -0
  120. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/http_api/files.py.jinja +73 -0
  121. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/http_api/module.py.jinja +25 -0
  122. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/http_api/realtime.py.jinja +36 -0
  123. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/__init__.py.jinja +1 -0
  124. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/migrations/__init__.py.jinja +1 -0
  125. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/models/__init__.py.jinja +7 -0
  126. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/models/orders.py.jinja +25 -0
  127. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/module.py.jinja +26 -0
  128. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/repositories/__init__.py.jinja +1 -0
  129. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/sqlalchemy/repositories/orders.py.jinja +49 -0
  130. python_ddd_framework/developer_kit/templates/module/{{cookiecutter.module_name}}/tests/test_domain.py.jinja +18 -0
  131. python_ddd_framework/developer_kit/templates/project/cookiecutter.json +6 -0
  132. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/.dockerignore +9 -0
  133. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/.gitignore +6 -0
  134. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/.python-version +1 -0
  135. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/AGENTS.md +38 -0
  136. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/Dockerfile +22 -0
  137. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/README.md +130 -0
  138. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/app.development.yaml.jinja +30 -0
  139. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/compose.dev.yaml.jinja +24 -0
  140. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/compose.production.yaml.jinja +20 -0
  141. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/architecture.md +84 -0
  142. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/docs/development.md +185 -0
  143. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/pyproject.toml.jinja +28 -0
  144. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/src/host/__init__.py.jinja +1 -0
  145. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/src/host/main.py.jinja +47 -0
  146. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/src/host/module.py.jinja +37 -0
  147. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/tests/conftest.py.jinja +8 -0
  148. python_ddd_framework/developer_kit/templates/project/{{cookiecutter.project_name}}/tests/host/test_http.py.jinja +57 -0
  149. python_ddd_framework/developer_kit/wiring.py +162 -0
  150. python_ddd_framework/diagnostics/__init__.py +23 -0
  151. python_ddd_framework/diagnostics/journal.py +174 -0
  152. python_ddd_framework/diagnostics/model.py +83 -0
  153. python_ddd_framework/diagnostics/source.py +25 -0
  154. python_ddd_framework/distributed_lock/__init__.py +6 -0
  155. python_ddd_framework/distributed_lock/contracts.py +20 -0
  156. python_ddd_framework/distributed_lock/options.py +19 -0
  157. python_ddd_framework/domain/__init__.py +13 -0
  158. python_ddd_framework/domain/aggregates.py +64 -0
  159. python_ddd_framework/domain/entities.py +33 -0
  160. python_ddd_framework/domain/errors.py +12 -0
  161. python_ddd_framework/domain/value_objects.py +31 -0
  162. python_ddd_framework/errors/__init__.py +75 -0
  163. python_ddd_framework/errors/base.py +13 -0
  164. python_ddd_framework/errors/business.py +53 -0
  165. python_ddd_framework/errors/configuration.py +119 -0
  166. python_ddd_framework/errors/diagnostics.py +12 -0
  167. python_ddd_framework/errors/lifecycle.py +164 -0
  168. python_ddd_framework/errors/modularity.py +100 -0
  169. python_ddd_framework/errors/services.py +100 -0
  170. python_ddd_framework/events/__init__.py +25 -0
  171. python_ddd_framework/events/aggregate.py +39 -0
  172. python_ddd_framework/events/catalog.py +136 -0
  173. python_ddd_framework/events/contracts.py +39 -0
  174. python_ddd_framework/events/contribution.py +128 -0
  175. python_ddd_framework/events/discovery.py +105 -0
  176. python_ddd_framework/events/errors.py +48 -0
  177. python_ddd_framework/events/runtime.py +192 -0
  178. python_ddd_framework/fastapi/__init__.py +49 -0
  179. python_ddd_framework/fastapi/action.py +175 -0
  180. python_ddd_framework/fastapi/adapter.py +391 -0
  181. python_ddd_framework/fastapi/application_services.py +654 -0
  182. python_ddd_framework/fastapi/background.py +42 -0
  183. python_ddd_framework/fastapi/contracts.py +275 -0
  184. python_ddd_framework/fastapi/errors.py +32 -0
  185. python_ddd_framework/fastapi/filters.py +111 -0
  186. python_ddd_framework/fastapi/health.py +44 -0
  187. python_ddd_framework/fastapi/http.py +72 -0
  188. python_ddd_framework/fastapi/http_router.py +216 -0
  189. python_ddd_framework/fastapi/manual_action.py +105 -0
  190. python_ddd_framework/fastapi/middleware.py +93 -0
  191. python_ddd_framework/fastapi/parameters.py +97 -0
  192. python_ddd_framework/fastapi/realtime/__init__.py +13 -0
  193. python_ddd_framework/fastapi/realtime/authentication.py +181 -0
  194. python_ddd_framework/fastapi/realtime/connection.py +166 -0
  195. python_ddd_framework/fastapi/realtime/module.py +41 -0
  196. python_ddd_framework/fastapi/realtime/options.py +50 -0
  197. python_ddd_framework/fastapi/realtime/runtime.py +423 -0
  198. python_ddd_framework/fastapi/request_context.py +247 -0
  199. python_ddd_framework/fastapi/route_integrity.py +88 -0
  200. python_ddd_framework/fastapi/routing.py +424 -0
  201. python_ddd_framework/fastapi/server.py +182 -0
  202. python_ddd_framework/fastapi/settings.py +40 -0
  203. python_ddd_framework/fastapi/tracing.py +62 -0
  204. python_ddd_framework/fastapi/transfer.py +128 -0
  205. python_ddd_framework/fastapi/upload_limits.py +63 -0
  206. python_ddd_framework/fastapi/uploads.py +94 -0
  207. python_ddd_framework/hosted_services/__init__.py +29 -0
  208. python_ddd_framework/hosted_services/bridge.py +420 -0
  209. python_ddd_framework/hosted_services/catalog.py +265 -0
  210. python_ddd_framework/hosted_services/contracts.py +55 -0
  211. python_ddd_framework/hosted_services/errors.py +53 -0
  212. python_ddd_framework/hosted_services/options.py +17 -0
  213. python_ddd_framework/hosted_services/runtime.py +267 -0
  214. python_ddd_framework/hosted_services/state.py +40 -0
  215. python_ddd_framework/hosting/__init__.py +4 -0
  216. python_ddd_framework/hosting/instance.py +40 -0
  217. python_ddd_framework/identity/__init__.py +73 -0
  218. python_ddd_framework/identity/application.py +287 -0
  219. python_ddd_framework/identity/contracts.py +283 -0
  220. python_ddd_framework/identity/errors.py +28 -0
  221. python_ddd_framework/identity/http_api.py +90 -0
  222. python_ddd_framework/identity/module.py +49 -0
  223. python_ddd_framework/identity/passwords.py +34 -0
  224. python_ddd_framework/identity/permissions.py +14 -0
  225. python_ddd_framework/identity/services.py +108 -0
  226. python_ddd_framework/identity/sqlalchemy/__init__.py +5 -0
  227. python_ddd_framework/identity/sqlalchemy/migrations/0001_identity.py +143 -0
  228. python_ddd_framework/identity/sqlalchemy/migrations/0002_physical_delete.py +42 -0
  229. python_ddd_framework/identity/sqlalchemy/migrations/__init__.py +1 -0
  230. python_ddd_framework/identity/sqlalchemy/models.py +85 -0
  231. python_ddd_framework/identity/sqlalchemy/module.py +62 -0
  232. python_ddd_framework/identity/sqlalchemy/stores.py +526 -0
  233. python_ddd_framework/identity/tokens.py +106 -0
  234. python_ddd_framework/invocation/__init__.py +3 -0
  235. python_ddd_framework/invocation/callables.py +171 -0
  236. python_ddd_framework/invocation/contracts.py +33 -0
  237. python_ddd_framework/invocation/entries.py +54 -0
  238. python_ddd_framework/invocation/function_runtime.py +48 -0
  239. python_ddd_framework/invocation/interception.py +193 -0
  240. python_ddd_framework/lifecycle/__init__.py +25 -0
  241. python_ddd_framework/lifecycle/composition.py +35 -0
  242. python_ddd_framework/lifecycle/context.py +31 -0
  243. python_ddd_framework/lifecycle/runtime.py +43 -0
  244. python_ddd_framework/lifecycle/state.py +20 -0
  245. python_ddd_framework/modularity/__init__.py +15 -0
  246. python_ddd_framework/modularity/contracts.py +91 -0
  247. python_ddd_framework/modularity/discovery.py +157 -0
  248. python_ddd_framework/modularity/graph.py +334 -0
  249. python_ddd_framework/modularity/registry.py +100 -0
  250. python_ddd_framework/modularity/selection.py +16 -0
  251. python_ddd_framework/notifications/__init__.py +19 -0
  252. python_ddd_framework/notifications/catalog.py +46 -0
  253. python_ddd_framework/notifications/contracts.py +107 -0
  254. python_ddd_framework/observability/__init__.py +5 -0
  255. python_ddd_framework/observability/context.py +43 -0
  256. python_ddd_framework/observability/export.py +73 -0
  257. python_ddd_framework/observability/formatting.py +89 -0
  258. python_ddd_framework/observability/logging.py +118 -0
  259. python_ddd_framework/observability/options.py +45 -0
  260. python_ddd_framework/observability/tracing.py +80 -0
  261. python_ddd_framework/options/__init__.py +19 -0
  262. python_ddd_framework/options/aliases.py +331 -0
  263. python_ddd_framework/options/contribution.py +62 -0
  264. python_ddd_framework/options/immutability.py +48 -0
  265. python_ddd_framework/options/input_keys.py +214 -0
  266. python_ddd_framework/options/issues.py +335 -0
  267. python_ddd_framework/options/models.py +114 -0
  268. python_ddd_framework/options/registry.py +280 -0
  269. python_ddd_framework/options/schema.py +488 -0
  270. python_ddd_framework/options/validation.py +120 -0
  271. python_ddd_framework/py.typed +0 -0
  272. python_ddd_framework/realtime/__init__.py +12 -0
  273. python_ddd_framework/realtime/contracts.py +28 -0
  274. python_ddd_framework/realtime/diagnostics.py +37 -0
  275. python_ddd_framework/realtime/messages.py +113 -0
  276. python_ddd_framework/redis/__init__.py +6 -0
  277. python_ddd_framework/redis/distributed_lock.py +212 -0
  278. python_ddd_framework/redis/lease_lock.py +36 -0
  279. python_ddd_framework/redis/module.py +50 -0
  280. python_ddd_framework/redis/notification_runtime.py +182 -0
  281. python_ddd_framework/redis/notifications.py +25 -0
  282. python_ddd_framework/redis/options.py +35 -0
  283. python_ddd_framework/redis/runtime.py +116 -0
  284. python_ddd_framework/services/__init__.py +41 -0
  285. python_ddd_framework/services/application_bindings.py +221 -0
  286. python_ddd_framework/services/arbitration.py +381 -0
  287. python_ddd_framework/services/binding.py +102 -0
  288. python_ddd_framework/services/contribution.py +438 -0
  289. python_ddd_framework/services/convention.py +301 -0
  290. python_ddd_framework/services/convention_contracts.py +101 -0
  291. python_ddd_framework/services/exposure.py +23 -0
  292. python_ddd_framework/services/fixed_lifetime.py +52 -0
  293. python_ddd_framework/services/framework_provider.py +178 -0
  294. python_ddd_framework/services/native_graph.py +201 -0
  295. python_ddd_framework/services/provider.py +204 -0
  296. python_ddd_framework/services/registration.py +101 -0
  297. python_ddd_framework/services/repository.py +38 -0
  298. python_ddd_framework/services/runtime.py +302 -0
  299. python_ddd_framework/settings/__init__.py +30 -0
  300. python_ddd_framework/settings/application.py +95 -0
  301. python_ddd_framework/settings/binding.py +33 -0
  302. python_ddd_framework/settings/catalog.py +121 -0
  303. python_ddd_framework/settings/changes.py +14 -0
  304. python_ddd_framework/settings/contracts.py +115 -0
  305. python_ddd_framework/settings/definition_discovery.py +71 -0
  306. python_ddd_framework/settings/definitions.py +41 -0
  307. python_ddd_framework/settings/errors.py +22 -0
  308. python_ddd_framework/settings/handlers.py +43 -0
  309. python_ddd_framework/settings/management.py +57 -0
  310. python_ddd_framework/settings/manager.py +89 -0
  311. python_ddd_framework/settings/module.py +10 -0
  312. python_ddd_framework/settings/notifications.py +39 -0
  313. python_ddd_framework/settings/permissions.py +14 -0
  314. python_ddd_framework/settings/provider.py +74 -0
  315. python_ddd_framework/settings/refresh.py +140 -0
  316. python_ddd_framework/settings/refresh_module.py +45 -0
  317. python_ddd_framework/settings/sqlalchemy/__init__.py +5 -0
  318. python_ddd_framework/settings/sqlalchemy/migrations/0001_settings.py +31 -0
  319. python_ddd_framework/settings/sqlalchemy/migrations/0002_physical_delete.py +32 -0
  320. python_ddd_framework/settings/sqlalchemy/migrations/0003_version_tokens.py +39 -0
  321. python_ddd_framework/settings/sqlalchemy/migrations/__init__.py +1 -0
  322. python_ddd_framework/settings/sqlalchemy/models.py +36 -0
  323. python_ddd_framework/settings/sqlalchemy/module.py +36 -0
  324. python_ddd_framework/settings/sqlalchemy/store.py +86 -0
  325. python_ddd_framework/settings/store.py +16 -0
  326. python_ddd_framework/settings/values.py +39 -0
  327. python_ddd_framework/sqlalchemy/__init__.py +54 -0
  328. python_ddd_framework/sqlalchemy/alembic_runtime/__init__.py +1 -0
  329. python_ddd_framework/sqlalchemy/alembic_runtime/env.py +33 -0
  330. python_ddd_framework/sqlalchemy/alembic_runtime/script.py.mako +14 -0
  331. python_ddd_framework/sqlalchemy/auditing.py +48 -0
  332. python_ddd_framework/sqlalchemy/errors.py +85 -0
  333. python_ddd_framework/sqlalchemy/metadata.py +576 -0
  334. python_ddd_framework/sqlalchemy/migration.py +378 -0
  335. python_ddd_framework/sqlalchemy/migration_options.py +56 -0
  336. python_ddd_framework/sqlalchemy/module.py +51 -0
  337. python_ddd_framework/sqlalchemy/module_migration.py +151 -0
  338. python_ddd_framework/sqlalchemy/options.py +66 -0
  339. python_ddd_framework/sqlalchemy/repository.py +33 -0
  340. python_ddd_framework/sqlalchemy/runtime.py +85 -0
  341. python_ddd_framework/sqlalchemy/session_provider.py +45 -0
  342. python_ddd_framework/sqlalchemy/unit_of_work.py +97 -0
  343. python_ddd_framework/testing/__init__.py +5 -0
  344. python_ddd_framework/testing/runtime.py +112 -0
  345. python_ddd_framework/unit_of_work/__init__.py +14 -0
  346. python_ddd_framework/unit_of_work/contracts.py +223 -0
  347. python_ddd_framework/unit_of_work/errors.py +27 -0
  348. python_ddd_framework/unit_of_work/manager.py +210 -0
  349. python_ddd_framework/unit_of_work/options.py +92 -0
  350. python_ddd_framework-0.3.1.dist-info/METADATA +379 -0
  351. python_ddd_framework-0.3.1.dist-info/RECORD +355 -0
  352. python_ddd_framework-0.3.1.dist-info/WHEEL +4 -0
  353. python_ddd_framework-0.3.1.dist-info/entry_points.txt +9 -0
  354. python_ddd_framework-0.3.1.dist-info/licenses/LICENSE +7 -0
  355. python_ddd_framework-0.3.1.dist-info/licenses/src/python_ddd_framework/background_jobs/pgqueuer/UPSTREAM_LICENSE.txt +21 -0
@@ -0,0 +1,449 @@
1
+ from .application import Application, ApplicationBuilder
2
+ from .application_services import (
3
+ ApplicationInvocationCleanupError,
4
+ ApplicationInvocationContext,
5
+ ApplicationInvocationRejectedError,
6
+ ApplicationService,
7
+ ApplicationServiceCatalog,
8
+ ApplicationServiceContract,
9
+ ApplicationServiceDefinitionError,
10
+ ApplicationServiceMethod,
11
+ ApplicationServiceMethodError,
12
+ ApplicationServiceRegistration,
13
+ ApplicationServiceValidationError,
14
+ ApplicationServiceValidationIssue,
15
+ CrossTaskInvocationError,
16
+ DataSeedContributor,
17
+ DataSeeder,
18
+ DataSeedError,
19
+ IntegrationService,
20
+ InterceptionStage,
21
+ Interceptor,
22
+ InterceptorRegistration,
23
+ MethodInvocation,
24
+ NestedConnectionError,
25
+ application_service,
26
+ disable_validation,
27
+ enable_validation,
28
+ )
29
+ from .authorization import (
30
+ AccessTokenAuthenticator,
31
+ AuthorizationDefinitionError,
32
+ CurrentUser,
33
+ PermissionCatalog,
34
+ PermissionChecker,
35
+ PermissionCheckerUnavailableError,
36
+ PermissionDefinition,
37
+ PermissionDefinitionContext,
38
+ PermissionDefinitionError,
39
+ PermissionDefinitionProvider,
40
+ PermissionDeniedError,
41
+ PermissionName,
42
+ RolePermissionVersion,
43
+ UnauthenticatedError,
44
+ allow_anonymous,
45
+ authorize,
46
+ )
47
+ from .background_execution import (
48
+ BackgroundExecutionMode,
49
+ BackgroundJobOptions,
50
+ BackgroundTaskOptions,
51
+ BackgroundTaskSnapshot,
52
+ BackgroundTaskState,
53
+ )
54
+ from .background_jobs import (
55
+ BackgroundJobCatalog,
56
+ BackgroundJobContext,
57
+ BackgroundJobDefinition,
58
+ BackgroundJobDefinitionError,
59
+ BackgroundJobEnqueuer,
60
+ BackgroundJobExecutionError,
61
+ BackgroundJobHandler,
62
+ BackgroundJobPayloadError,
63
+ BackgroundJobRetryPolicy,
64
+ BackgroundJobSchedule,
65
+ BackgroundSystemCaller,
66
+ )
67
+ from .background_workers import (
68
+ BackgroundExecutionOptions,
69
+ BackgroundExecutionProfile,
70
+ BackgroundWorker,
71
+ BackgroundWorkerCatalog,
72
+ BackgroundWorkerContext,
73
+ BackgroundWorkerDefinition,
74
+ BackgroundWorkerDefinitionError,
75
+ BackgroundWorkerRuntimeError,
76
+ )
77
+ from .caching import (
78
+ CacheCatalog,
79
+ CacheDefinition,
80
+ CacheDefinitionError,
81
+ DistributedCache,
82
+ DistributedCacheError,
83
+ )
84
+ from .configuration import (
85
+ ConfigurationContribution,
86
+ ConfigurationProvenance,
87
+ ConfigurationRoot,
88
+ ConfigurationSource,
89
+ ConfigurationSourceDiagnostic,
90
+ ConfigurationSourceStatus,
91
+ ConfigurationValueDiagnostic,
92
+ )
93
+ from .diagnostics import (
94
+ DiagnosticMessage,
95
+ DiagnosticSnapshot,
96
+ EventStatus,
97
+ FailureRecord,
98
+ LifecyclePhase,
99
+ LifecycleStage,
100
+ PhaseEvent,
101
+ SourceLocation,
102
+ )
103
+ from .distributed_lock import DistributedLock, DistributedLockError, DistributedLockOptions
104
+ from .domain import AggregateRoot, Entity, OptimisticConcurrencyError, ValueObject
105
+ from .errors import (
106
+ ApplicationRuntimeError,
107
+ ApplicationStartError,
108
+ CatalogNativeGraphMismatchError,
109
+ CompositionResourceError,
110
+ ConfigurationSourceError,
111
+ ContainerCleanupError,
112
+ ContainerValidationError,
113
+ ConventionScanError,
114
+ DuplicateModuleIdentityError,
115
+ DuplicateOptionDefinitionError,
116
+ FrameworkError,
117
+ GraphInvariantError,
118
+ InvalidApplicationStateError,
119
+ InvalidConventionDefinitionError,
120
+ InvalidDiagnosticCodeError,
121
+ InvalidModuleReferenceError,
122
+ InvalidOptionDefinitionError,
123
+ LifecycleInvocationError,
124
+ LifecycleReturnValueError,
125
+ ModuleCycleError,
126
+ ModuleInstantiationError,
127
+ ModuleResolutionError,
128
+ OptionsContributionClosedError,
129
+ OptionsValidationError,
130
+ RegistrationConflictError,
131
+ ResourceConflictError,
132
+ ResourceNotFoundError,
133
+ ServiceContributorClosedError,
134
+ UnknownModuleError,
135
+ UnknownOptionsError,
136
+ )
137
+ from .events import (
138
+ AggregateEventCollector,
139
+ EventContributionError,
140
+ EventContributor,
141
+ EventCycleError,
142
+ LocalEventBus,
143
+ LocalEventCatalog,
144
+ LocalEventHandlerError,
145
+ LocalEventPhase,
146
+ LocalEventSubscription,
147
+ PostCommitEventError,
148
+ local_event_handler,
149
+ )
150
+ from .hosted_services import (
151
+ ApplicationReadinessSnapshot,
152
+ HostedService,
153
+ HostedServiceCatalog,
154
+ HostedServiceContext,
155
+ HostedServiceContractError,
156
+ HostedServiceDefinitionError,
157
+ HostedServiceInvocationRejectedError,
158
+ HostedServiceLifecycleError,
159
+ HostedServiceOptions,
160
+ HostedServiceRegistration,
161
+ HostedServiceSnapshot,
162
+ HostedServiceStatus,
163
+ )
164
+ from .lifecycle import (
165
+ ApplicationState,
166
+ ApplicationView,
167
+ ConfigureContext,
168
+ InitializeContext,
169
+ LifecycleContext,
170
+ PostConfigureContext,
171
+ PostInitializeContext,
172
+ PreConfigureContext,
173
+ PreInitializeContext,
174
+ ShutdownContext,
175
+ ShutdownReason,
176
+ )
177
+ from .modularity import (
178
+ AppModule,
179
+ ModuleDependency,
180
+ ModuleDependencyEdge,
181
+ ModuleDescriptor,
182
+ ModuleGraphSnapshot,
183
+ ModuleKey,
184
+ ModuleRef,
185
+ ModuleRegistry,
186
+ )
187
+ from .options import (
188
+ BaseOptions,
189
+ Options,
190
+ OptionsContribution,
191
+ OptionsSnapshot,
192
+ OptionsValidationIssue,
193
+ PreOptionsSnapshot,
194
+ )
195
+ from .realtime import (
196
+ RealtimeDeliveryReport,
197
+ RealtimeEnvelope,
198
+ RealtimePublisher,
199
+ RealtimeSnapshot,
200
+ )
201
+ from .services import (
202
+ ConventionalService,
203
+ ConventionCandidate,
204
+ ConventionCandidateDecision,
205
+ ConventionDiscoveryKind,
206
+ ProviderContribution,
207
+ ProviderContributionView,
208
+ RegistrationDecision,
209
+ RegistrationKind,
210
+ RepositoryContract,
211
+ ScopedDependency,
212
+ ServiceCatalog,
213
+ ServiceContributor,
214
+ ServiceRegistration,
215
+ SingletonDependency,
216
+ TransientDependency,
217
+ service,
218
+ )
219
+ from .settings import (
220
+ RuntimeSettingError,
221
+ RuntimeSettingStore,
222
+ SettingCatalog,
223
+ SettingDefinition,
224
+ SettingDefinitionContext,
225
+ SettingDefinitionError,
226
+ SettingDefinitionProvider,
227
+ SettingManager,
228
+ SettingProvider,
229
+ )
230
+ from .unit_of_work import (
231
+ UnitOfWork,
232
+ UnitOfWorkManager,
233
+ UnitOfWorkOptions,
234
+ UnitOfWorkState,
235
+ UnitOfWorkStateError,
236
+ UnitOfWorkTransactionBehavior,
237
+ unit_of_work,
238
+ )
239
+
240
+ __all__ = (
241
+ "AccessTokenAuthenticator",
242
+ "AggregateEventCollector",
243
+ "AggregateRoot",
244
+ "AppModule",
245
+ "Application",
246
+ "ApplicationBuilder",
247
+ "ApplicationInvocationCleanupError",
248
+ "ApplicationInvocationContext",
249
+ "ApplicationInvocationRejectedError",
250
+ "ApplicationReadinessSnapshot",
251
+ "ApplicationRuntimeError",
252
+ "ApplicationService",
253
+ "ApplicationServiceCatalog",
254
+ "ApplicationServiceContract",
255
+ "ApplicationServiceDefinitionError",
256
+ "ApplicationServiceMethod",
257
+ "ApplicationServiceMethodError",
258
+ "ApplicationServiceRegistration",
259
+ "ApplicationServiceValidationError",
260
+ "ApplicationServiceValidationIssue",
261
+ "ApplicationStartError",
262
+ "ApplicationState",
263
+ "ApplicationView",
264
+ "AuthorizationDefinitionError",
265
+ "BackgroundExecutionMode",
266
+ "BackgroundExecutionOptions",
267
+ "BackgroundExecutionProfile",
268
+ "BackgroundJobCatalog",
269
+ "BackgroundJobContext",
270
+ "BackgroundJobDefinition",
271
+ "BackgroundJobDefinitionError",
272
+ "BackgroundJobEnqueuer",
273
+ "BackgroundJobExecutionError",
274
+ "BackgroundJobHandler",
275
+ "BackgroundJobOptions",
276
+ "BackgroundJobPayloadError",
277
+ "BackgroundJobRetryPolicy",
278
+ "BackgroundJobSchedule",
279
+ "BackgroundSystemCaller",
280
+ "BackgroundTaskOptions",
281
+ "BackgroundTaskSnapshot",
282
+ "BackgroundTaskState",
283
+ "BackgroundWorker",
284
+ "BackgroundWorkerCatalog",
285
+ "BackgroundWorkerContext",
286
+ "BackgroundWorkerDefinition",
287
+ "BackgroundWorkerDefinitionError",
288
+ "BackgroundWorkerRuntimeError",
289
+ "BaseOptions",
290
+ "CacheCatalog",
291
+ "CacheDefinition",
292
+ "CacheDefinitionError",
293
+ "CatalogNativeGraphMismatchError",
294
+ "CompositionResourceError",
295
+ "ConfigurationContribution",
296
+ "ConfigurationProvenance",
297
+ "ConfigurationRoot",
298
+ "ConfigurationSource",
299
+ "ConfigurationSourceDiagnostic",
300
+ "ConfigurationSourceError",
301
+ "ConfigurationSourceStatus",
302
+ "ConfigurationValueDiagnostic",
303
+ "ConfigureContext",
304
+ "ContainerCleanupError",
305
+ "ContainerValidationError",
306
+ "ConventionCandidate",
307
+ "ConventionCandidateDecision",
308
+ "ConventionDiscoveryKind",
309
+ "ConventionScanError",
310
+ "ConventionalService",
311
+ "CrossTaskInvocationError",
312
+ "CurrentUser",
313
+ "DataSeedContributor",
314
+ "DataSeedError",
315
+ "DataSeeder",
316
+ "DiagnosticMessage",
317
+ "DiagnosticSnapshot",
318
+ "DistributedCache",
319
+ "DistributedCacheError",
320
+ "DistributedLock",
321
+ "DistributedLockError",
322
+ "DistributedLockOptions",
323
+ "DuplicateModuleIdentityError",
324
+ "DuplicateOptionDefinitionError",
325
+ "Entity",
326
+ "EventContributionError",
327
+ "EventContributor",
328
+ "EventCycleError",
329
+ "EventStatus",
330
+ "FailureRecord",
331
+ "FrameworkError",
332
+ "GraphInvariantError",
333
+ "HostedService",
334
+ "HostedServiceCatalog",
335
+ "HostedServiceContext",
336
+ "HostedServiceContractError",
337
+ "HostedServiceDefinitionError",
338
+ "HostedServiceInvocationRejectedError",
339
+ "HostedServiceLifecycleError",
340
+ "HostedServiceOptions",
341
+ "HostedServiceRegistration",
342
+ "HostedServiceSnapshot",
343
+ "HostedServiceStatus",
344
+ "InitializeContext",
345
+ "IntegrationService",
346
+ "InterceptionStage",
347
+ "Interceptor",
348
+ "InterceptorRegistration",
349
+ "InvalidApplicationStateError",
350
+ "InvalidConventionDefinitionError",
351
+ "InvalidDiagnosticCodeError",
352
+ "InvalidModuleReferenceError",
353
+ "InvalidOptionDefinitionError",
354
+ "LifecycleContext",
355
+ "LifecycleInvocationError",
356
+ "LifecyclePhase",
357
+ "LifecycleReturnValueError",
358
+ "LifecycleStage",
359
+ "LocalEventBus",
360
+ "LocalEventCatalog",
361
+ "LocalEventHandlerError",
362
+ "LocalEventPhase",
363
+ "LocalEventSubscription",
364
+ "MethodInvocation",
365
+ "ModuleCycleError",
366
+ "ModuleDependency",
367
+ "ModuleDependencyEdge",
368
+ "ModuleDescriptor",
369
+ "ModuleGraphSnapshot",
370
+ "ModuleInstantiationError",
371
+ "ModuleKey",
372
+ "ModuleRef",
373
+ "ModuleRegistry",
374
+ "ModuleResolutionError",
375
+ "NestedConnectionError",
376
+ "OptimisticConcurrencyError",
377
+ "Options",
378
+ "OptionsContribution",
379
+ "OptionsContributionClosedError",
380
+ "OptionsSnapshot",
381
+ "OptionsValidationError",
382
+ "OptionsValidationIssue",
383
+ "PermissionCatalog",
384
+ "PermissionChecker",
385
+ "PermissionCheckerUnavailableError",
386
+ "PermissionDefinition",
387
+ "PermissionDefinitionContext",
388
+ "PermissionDefinitionError",
389
+ "PermissionDefinitionProvider",
390
+ "PermissionDeniedError",
391
+ "PermissionName",
392
+ "PhaseEvent",
393
+ "PostCommitEventError",
394
+ "PostConfigureContext",
395
+ "PostInitializeContext",
396
+ "PreConfigureContext",
397
+ "PreInitializeContext",
398
+ "PreOptionsSnapshot",
399
+ "ProviderContribution",
400
+ "ProviderContributionView",
401
+ "RealtimeDeliveryReport",
402
+ "RealtimeEnvelope",
403
+ "RealtimePublisher",
404
+ "RealtimeSnapshot",
405
+ "RegistrationConflictError",
406
+ "RegistrationDecision",
407
+ "RegistrationKind",
408
+ "RepositoryContract",
409
+ "ResourceConflictError",
410
+ "ResourceNotFoundError",
411
+ "RolePermissionVersion",
412
+ "RuntimeSettingError",
413
+ "RuntimeSettingStore",
414
+ "ScopedDependency",
415
+ "ServiceCatalog",
416
+ "ServiceContributor",
417
+ "ServiceContributorClosedError",
418
+ "ServiceRegistration",
419
+ "SettingCatalog",
420
+ "SettingDefinition",
421
+ "SettingDefinitionContext",
422
+ "SettingDefinitionError",
423
+ "SettingDefinitionProvider",
424
+ "SettingManager",
425
+ "SettingProvider",
426
+ "ShutdownContext",
427
+ "ShutdownReason",
428
+ "SingletonDependency",
429
+ "SourceLocation",
430
+ "TransientDependency",
431
+ "UnauthenticatedError",
432
+ "UnitOfWork",
433
+ "UnitOfWorkManager",
434
+ "UnitOfWorkOptions",
435
+ "UnitOfWorkState",
436
+ "UnitOfWorkStateError",
437
+ "UnitOfWorkTransactionBehavior",
438
+ "UnknownModuleError",
439
+ "UnknownOptionsError",
440
+ "ValueObject",
441
+ "allow_anonymous",
442
+ "application_service",
443
+ "authorize",
444
+ "disable_validation",
445
+ "enable_validation",
446
+ "local_event_handler",
447
+ "service",
448
+ "unit_of_work",
449
+ )
@@ -0,0 +1,6 @@
1
+ """Application composition root and public runtime owner."""
2
+
3
+ from .builder import ApplicationBuilder
4
+ from .runtime import Application
5
+
6
+ __all__ = ("Application", "ApplicationBuilder")
@@ -0,0 +1,37 @@
1
+ """spawn 传递的构建输入;不持有 Application、容器或 provider 实例。"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from pathlib import Path
7
+ from typing import TYPE_CHECKING
8
+
9
+ from ..modularity import AppModule, ModuleRef
10
+
11
+ if TYPE_CHECKING:
12
+ from .runtime import Application
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class _ApplicationBuildSpec:
17
+ startup_module: type[AppModule] | ModuleRef
18
+ environment: str
19
+ base_path: Path
20
+ env_prefix: str
21
+ cli_args: tuple[str, ...]
22
+ dotenv_path: Path | None
23
+ explicit_overrides: dict[str, object]
24
+ project: Path
25
+
26
+ def build(self) -> Application:
27
+ from .builder import ApplicationBuilder
28
+
29
+ return ApplicationBuilder(
30
+ self.startup_module,
31
+ environment=self.environment,
32
+ base_path=self.base_path,
33
+ env_prefix=self.env_prefix,
34
+ cli_args=self.cli_args,
35
+ dotenv_path=self.dotenv_path,
36
+ explicit_overrides=self.explicit_overrides,
37
+ ).build()