python-event-sourcery 0.5.3a4__tar.gz → 0.5.3a5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.github/workflows/main.yml +12 -2
  2. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/AGENTS.md +9 -6
  3. python_event_sourcery-0.5.3a5/CONTRIBUTING.md +54 -0
  4. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/PKG-INFO +1 -1
  5. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/test_get_started.py +5 -3
  6. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/get_started.md +11 -1
  7. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/index.md +4 -0
  8. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/pyproject.toml +81 -1
  9. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/uv.lock +1 -1
  10. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/zensical.toml +1 -3
  11. python_event_sourcery-0.5.3a4/CONTRIBUTING.md +0 -40
  12. python_event_sourcery-0.5.3a4/Makefile +0 -20
  13. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.adr-dir +0 -0
  14. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.github/workflows/bump-version-and-publish.yml +0 -0
  15. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.github/workflows/deploy-docs.yml +0 -0
  16. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.github/workflows/publish-release.yml +0 -0
  17. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/.gitignore +0 -0
  18. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/CHANGELOG.md +0 -0
  19. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/LICENSE +0 -0
  20. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/README.md +0 -0
  21. /python_event_sourcery-0.5.3a4/docker-compose.yml → /python_event_sourcery-0.5.3a5/compose.yml +0 -0
  22. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/django_manage.py +0 -0
  23. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20220730-record-architecture-decisions.md +0 -0
  24. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20230903-explicit-init-arguments-for-sqlalchemy-s-models.md +0 -0
  25. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20231027_1-packaging-of-the-project.md +0 -0
  26. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20231027_2-leave-implementation-of-synchronous-dispatcher-to-users-of-the-library.md +0 -0
  27. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20231029-in-memory-event-store.md +0 -0
  28. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20231230-in_transaction_subscription.md +0 -0
  29. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20240726-dependencies-and-distribution.md +0 -0
  30. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20241007-multitenancy.md +0 -0
  31. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20250411-packaging-of-the-project-revised.md +0 -0
  32. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20250729-privacy-data-encryption-and-shredding.md +0 -0
  33. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20251004-packaging-of-the-event_store-package.md +0 -0
  34. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/adr/20260314-aggregate-metadata.md +0 -0
  35. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/__init__.py +0 -0
  36. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/recipes/__init__.py +0 -0
  37. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/recipes/integrate/__init__.py +0 -0
  38. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/recipes/integrate/kurrent_01.py +0 -0
  39. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/code/test_recipes.py +0 -0
  40. /python_event_sourcery-0.5.3a4/docs/concepts/basics.md → /python_event_sourcery-0.5.3a5/docs/concepts.md +0 -0
  41. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/data_privacy.md +0 -0
  42. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/defining_events.md +0 -0
  43. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/event_sourcing.md +0 -0
  44. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/integrate.md +0 -0
  45. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/multitenancy.md +0 -0
  46. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/outbox.md +0 -0
  47. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/saving_events.md +0 -0
  48. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/snapshots.md +0 -0
  49. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/recipes/subscriptions.md +0 -0
  50. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/backends/django.md +0 -0
  51. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/backends/in_memory.md +0 -0
  52. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/backends/kurrentdb.md +0 -0
  53. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/backends/sqlalchemy.md +0 -0
  54. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_sourcing/Aggregate.md +0 -0
  55. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_sourcing/Repository.md +0 -0
  56. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_sourcing/WrappedAggregate.md +0 -0
  57. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/DEFAULT_TENANT.md +0 -0
  58. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/EventStore.md +0 -0
  59. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/NO_VERSIONING.md +0 -0
  60. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/StreamCategory.md +0 -0
  61. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/StreamId.md +0 -0
  62. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/StreamUUID.md +0 -0
  63. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/TenantId.md +0 -0
  64. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/backend/Backend.md +0 -0
  65. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/backend/TransactionalBackend.md +0 -0
  66. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/backend/not_configured.md +0 -0
  67. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/backend/singleton.md +0 -0
  68. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/encryption/DataSubject.md +0 -0
  69. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/encryption/Encrypted.md +0 -0
  70. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/encryption/Encryption.md +0 -0
  71. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/encryption/NoEncryptionStrategy.md +0 -0
  72. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/encryption/NoKeyStorageStrategy.md +0 -0
  73. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/Context.md +0 -0
  74. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/Entry.md +0 -0
  75. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/Event.md +0 -0
  76. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/Position.md +0 -0
  77. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/RawEvent.md +0 -0
  78. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/Recorded.md +0 -0
  79. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/RecordedRaw.md +0 -0
  80. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/event/WrappedEvent.md +0 -0
  81. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/exceptions.md +0 -0
  82. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/in_transaction/Dispatcher.md +0 -0
  83. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/in_transaction/Listener.md +0 -0
  84. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/in_transaction/Listeners.md +0 -0
  85. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/EncryptionKeyStorageStrategy.md +0 -0
  86. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/EncryptionStrategy.md +0 -0
  87. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/OutboxFiltererStrategy.md +0 -0
  88. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/OutboxStorageStrategy.md +0 -0
  89. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/StorageStrategy.md +0 -0
  90. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/interfaces/SubscriptionStrategy.md +0 -0
  91. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/outbox/NoOutboxStorageStrategy.md +0 -0
  92. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/outbox/Outbox.md +0 -0
  93. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/outbox/no_filter.md +0 -0
  94. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/subscription/BuildPhase.md +0 -0
  95. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/subscription/FilterPhase.md +0 -0
  96. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/subscription/PositionPhase.md +0 -0
  97. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/reference/event_store/subscription/SubscriptionBuilder.md +0 -0
  98. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/res/eda_example.plantuml +0 -0
  99. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/docs/res/eda_example.png +0 -0
  100. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/__init__.py +0 -0
  101. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/__init__.py +0 -0
  102. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/backend.py +0 -0
  103. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event/__init__.py +0 -0
  104. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event/dto.py +0 -0
  105. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event/encryption.py +0 -0
  106. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event/registry.py +0 -0
  107. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event/serde.py +0 -0
  108. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/event_store.py +0 -0
  109. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/in_memory.py +0 -0
  110. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/outbox.py +0 -0
  111. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/stream_id.py +0 -0
  112. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/subscription/__init__.py +0 -0
  113. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/subscription/builder.py +0 -0
  114. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/subscription/in_transaction.py +0 -0
  115. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/subscription/interfaces.py +0 -0
  116. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/tenant_id.py +0 -0
  117. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/_event_store/versioning.py +0 -0
  118. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/backend.py +0 -0
  119. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/encryption.py +0 -0
  120. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/event.py +0 -0
  121. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/event_sourcing/__init__.py +0 -0
  122. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/event_sourcing/aggregate.py +0 -0
  123. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/event_sourcing/repository.py +0 -0
  124. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/exceptions.py +0 -0
  125. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/in_transaction.py +0 -0
  126. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/interfaces.py +0 -0
  127. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/outbox.py +0 -0
  128. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/py.typed +0 -0
  129. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/read_model/__init__.py +0 -0
  130. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/read_model/cursors_dao.py +0 -0
  131. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/read_model/projector.py +0 -0
  132. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery/subscription.py +0 -0
  133. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/__init__.py +0 -0
  134. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/dto.py +0 -0
  135. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/event_store.py +0 -0
  136. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/migrations/0001_initial.py +0 -0
  137. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/migrations/__init__.py +0 -0
  138. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/models.py +0 -0
  139. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/outbox.py +0 -0
  140. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/py.typed +0 -0
  141. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_django/subscription.py +0 -0
  142. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/__init__.py +0 -0
  143. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/dto.py +0 -0
  144. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/event_store.py +0 -0
  145. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/outbox.py +0 -0
  146. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/py.typed +0 -0
  147. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/stream.py +0 -0
  148. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_kurrentdb/subscription.py +0 -0
  149. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/__init__.py +0 -0
  150. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/cursors_dao.py +0 -0
  151. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/dto.py +0 -0
  152. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/event_store.py +0 -0
  153. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/guid.py +0 -0
  154. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/jsonb.py +0 -0
  155. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/models/__init__.py +0 -0
  156. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/models/base.py +0 -0
  157. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/models/default.py +0 -0
  158. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/outbox.py +0 -0
  159. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/py.typed +0 -0
  160. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/event_sourcery_sqlalchemy/subscription.py +0 -0
  161. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/__init__.py +0 -0
  162. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/__init__.py +0 -0
  163. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/django.py +0 -0
  164. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/in_memory.py +0 -0
  165. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/kurrentdb.py +0 -0
  166. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/sqlalchemy.py +0 -0
  167. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/backend/test_sqlalchemy.py +0 -0
  168. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/bdd.py +0 -0
  169. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/conftest.py +0 -0
  170. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_sourcing/__init__.py +0 -0
  171. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_sourcing/conftest.py +0 -0
  172. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_sourcing/light_switch.py +0 -0
  173. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_sourcing/test_aggregate.py +0 -0
  174. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_sourcing/test_wrapped_aggregate.py +0 -0
  175. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/__init__.py +0 -0
  176. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/conftest.py +0 -0
  177. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/event/__init__.py +0 -0
  178. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/event/test_dto.py +0 -0
  179. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/event/test_privacy.py +0 -0
  180. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/event/test_registry.py +0 -0
  181. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/outbox/__init__.py +0 -0
  182. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/outbox/conftest.py +0 -0
  183. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/outbox/test_filters.py +0 -0
  184. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/outbox/test_multitenancy.py +0 -0
  185. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/outbox/test_outbox.py +0 -0
  186. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/__init__.py +0 -0
  187. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/other_client.py +0 -0
  188. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_batch.py +0 -0
  189. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_from_position.py +0 -0
  190. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_handling_uncommitted_messages_from_other_clients.py +0 -0
  191. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_in_transaction_subscription.py +0 -0
  192. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_subscriptions.py +0 -0
  193. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_to_category.py +0 -0
  194. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/subscriptions/test_to_event_types.py +0 -0
  195. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_category.py +0 -0
  196. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_concurrency_control.py +0 -0
  197. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_multitenancy.py +0 -0
  198. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_named_streams.py +0 -0
  199. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_no_outbox.py +0 -0
  200. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_no_versioning.py +0 -0
  201. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_removing_stream.py +0 -0
  202. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_save_retrieval.py +0 -0
  203. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_snapshots.py +0 -0
  204. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/event_store/test_stream_id.py +0 -0
  205. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/factories.py +0 -0
  206. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/mark.py +0 -0
  207. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/matchers.py +0 -0
  208. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/read_model/__init__.py +0 -0
  209. {python_event_sourcery-0.5.3a4 → python_event_sourcery-0.5.3a5}/tests/read_model/test_projector.py +0 -0
@@ -41,6 +41,12 @@ jobs:
41
41
  - 1113:1113
42
42
  - 2113:2113
43
43
 
44
+ rabbitmq:
45
+ image: rabbitmq:3.11.2
46
+ ports:
47
+ - '5672:5672'
48
+ - '15672:15672'
49
+
44
50
  steps:
45
51
  - uses: actions/checkout@v2
46
52
  - name: Install uv
@@ -48,11 +54,15 @@ jobs:
48
54
  with:
49
55
  python-version: ${{ matrix.python-version }}
50
56
  enable-cache: true
57
+ - name: Install poe
58
+ run: uv tool install poethepoet
51
59
  - name: Install deps
52
60
  run: uv sync --all-extras
53
61
  - name: Run linters
54
- run: make lint
62
+ run: poe lint-fix
55
63
  - name: Build docs
56
64
  run: uv run --all-extras zensical build --clean
65
+ - name: Test docs code snippets
66
+ run: poe docs-test
57
67
  - name: Test with pytest
58
- run: make test
68
+ run: poe test
@@ -21,9 +21,10 @@ uv sync --all-extras # install all deps (dev group is included by default)
21
21
 
22
22
  ```bash
23
23
  docker compose up -d # required before tests (postgres, kurrentdb, rabbitmq)
24
- make test # pytest with coverage (fail_under = 100)
25
- make lint # ruff format + ruff check + mypy (must pass clean)
26
- make docs-serve # docs live preview
24
+ poe test # pytest with coverage (fail_under = 100)
25
+ poe lint-fix # ruff format + ruff check + mypy (must pass clean)
26
+ poe docs-test # pytest docs/code/ — snippets embedded in docs must pass
27
+ poe docs-serve # docs live preview
27
28
  ```
28
29
 
29
30
  Run single tools via `uv run --all-extras <tool>`, e.g. `uv run --all-extras pytest tests/event_store -k django`.
@@ -36,10 +37,12 @@ Run single tools via `uv run --all-extras <tool>`, e.g. `uv run --all-extras pyt
36
37
 
37
38
  ## Docs
38
39
 
39
- Changing public API or behavior may require updating `docs/` — pages embed runnable snippets from `docs/code/` (via `--8<--` includes). After touching docs code:
40
+ Changing public API or behavior **requires** updating `docs/` and running docs tests —
41
+ pages embed runnable snippets from `docs/code/` (via `--8<--` includes), and broken
42
+ snippets go unnoticed without them. Docs tests need no docker services. After touching docs code:
40
43
 
41
44
  ```bash
42
- uv run --all-extras pytest docs/code # snippets are real tests, must pass
43
- make lint-fix-docs # lint docs/code
45
+ poe docs-test # snippets are real tests, must pass (enforced in CI)
46
+ poe docs-lint-fix # lint docs/code
44
47
  uv run --all-extras zensical build --clean # verify docs build
45
48
  ```
@@ -0,0 +1,54 @@
1
+ # Basics
2
+
3
+ ## Prerequisites
4
+
5
+ - docker + docker compose / any compatible replacement
6
+ - uv
7
+ - [poe](https://poethepoet.natn.io/)
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ uv sync --all-extras
13
+ ```
14
+
15
+ ## Running tests
16
+
17
+ ```bash
18
+ docker compose up
19
+ poe test
20
+ ```
21
+
22
+ ## Running linters
23
+
24
+ ```bash
25
+ poe lint-fix
26
+ ```
27
+
28
+ # Documentation
29
+
30
+ First, `cd docs/documentation`
31
+
32
+ ## Testing docs code snippets
33
+
34
+ Snippets embedded in docs pages (`docs/documentation/`) are real tests living in
35
+ `docs/code/`. They must pass — otherwise the docs silently show broken code.
36
+ No docker services required (they run on in-memory/SQLite backends):
37
+
38
+ ```bash
39
+ poe docs-test # or: uv run --all-extras pytest docs/code/
40
+ poe docs-lint-fix # ruff format + check for docs/code/
41
+ ```
42
+
43
+ Run them whenever you change public API, behavior, or anything in `docs/code/`.
44
+
45
+ ## Serve docs with live preview
46
+
47
+ ```bash
48
+ poe docs-serve
49
+ ```
50
+
51
+ ## Deploy docs to github pages
52
+
53
+ Docs get auto deployed from main after each change.
54
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-event-sourcery
3
- Version: 0.5.3a4
3
+ Version: 0.5.3a5
4
4
  Summary: A library for event-based systems in Python.
5
5
  Author-email: Sebastian Buczyński <nnplaya@gmail.com>, Łukasz Żukowski <lukasz.zukowski@gmail.com>
6
6
  License-Expression: MIT
@@ -14,10 +14,12 @@ def test_get_started():
14
14
  InvoicePaid(invoice_number="1003"),
15
15
  stream_id=StreamId(name="invoices/1003"),
16
16
  )
17
-
18
- for recorded in event_store.load_stream(StreamId(name="invoices/1003")):
19
- print(recorded.event, recorded.version)
20
17
  # --8<-- [end:get_started_01]
18
+ # --8<-- [start:get_started_02]
19
+ recorded_events = event_store.load_stream(StreamId(name="invoices/1003"))
20
+ for recorded in recorded_events:
21
+ print(recorded.event, recorded.version)
22
+ # --8<-- [end:get_started_02]
21
23
 
22
24
  events = event_store.load_stream(StreamId(name="invoices/1003"))
23
25
  assert len(events) == 1
@@ -16,7 +16,7 @@ pip install "python-event-sourcery[sqlalchemy]"
16
16
 
17
17
  The example below uses the in-memory backend, so you can run it right away, without setting up a database.
18
18
 
19
- Define an event by inheriting from the [Event] base class, then append it to a stream and read it back:
19
+ Define an event by inheriting from the [Event] base class, then append it to a stream:
20
20
 
21
21
  ```python
22
22
  --8<--
@@ -24,6 +24,16 @@ docs/code/test_get_started.py:get_started_01
24
24
  --8<--
25
25
  ```
26
26
 
27
+ ## Reading events
28
+
29
+ Events from a given stream can be read back at once:
30
+
31
+ ```python
32
+ --8<--
33
+ docs/code/test_get_started.py:get_started_02
34
+ --8<--
35
+ ```
36
+
27
37
  Output:
28
38
 
29
39
  ```
@@ -1,3 +1,7 @@
1
1
  # Python Event Sourcery
2
2
 
3
3
  A library for event-based systems in Python. For event sourcing, CQRS, and event-driven architectures.
4
+
5
+ ## What's first?
6
+
7
+ - **[Get started guide](get_started.md)** - try out the library in 5 minutes
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-event-sourcery"
3
- version = "0.5.3a4"
3
+ version = "0.5.3a5"
4
4
  requires-python = ">=3.10"
5
5
  description = "A library for event-based systems in Python."
6
6
  readme = "README.md"
@@ -141,3 +141,83 @@ packages = [
141
141
  "event_sourcery_kurrentdb",
142
142
  "event_sourcery_sqlalchemy",
143
143
  ]
144
+
145
+ [tool.poe.executor]
146
+ type = "uv"
147
+ extra = ["sqlalchemy", "kurrentdb", "django"]
148
+
149
+ [tool.poe.env]
150
+ SRC_DIRS = "./event_sourcery_sqlalchemy ./event_sourcery ./event_sourcery_django ./event_sourcery_kurrentdb"
151
+ COV_ARGS = "--cov ./event_sourcery_sqlalchemy --cov ./event_sourcery --cov ./event_sourcery_django --cov ./event_sourcery_kurrentdb"
152
+
153
+ [tool.poe.tasks.docs-test]
154
+ cmd = "pytest docs/code/"
155
+
156
+ [tool.poe.tasks.docs-lint-fix]
157
+ shell = """
158
+ ruff format docs/code tests/
159
+ ruff check docs/code --fix
160
+ """
161
+
162
+ [tool.poe.tasks.docs-serve]
163
+ cmd = "zensical serve"
164
+
165
+ [tool.poe.tasks.fmt]
166
+ cmd = "ruff format ${SRC_DIRS} tests/"
167
+
168
+ [tool.poe.tasks.lint]
169
+ cmd = "ruff check ${SRC_DIRS} tests/ --fix"
170
+
171
+ [tool.poe.tasks.typecheck]
172
+ ref = "typecheck-py314"
173
+
174
+ [tool.poe.tasks.typecheck-py314]
175
+ cmd = "mypy ${SRC_DIRS} tests/"
176
+
177
+ [tool.poe.tasks.typecheck-py313]
178
+ cmd = "mypy ${SRC_DIRS} tests/"
179
+ executor = {isolated = true, python = "3.13"}
180
+
181
+ [tool.poe.tasks.typecheck-py312]
182
+ cmd = "mypy ${SRC_DIRS} tests/"
183
+ executor = {isolated = true, python = "3.12"}
184
+
185
+ [tool.poe.tasks.typecheck-py311]
186
+ cmd = "mypy ${SRC_DIRS} tests/"
187
+ executor = {isolated = true, python = "3.11"}
188
+
189
+ [tool.poe.tasks.typecheck-py310]
190
+ cmd = "mypy ${SRC_DIRS} tests/"
191
+ executor = {isolated = true, python = "3.10"}
192
+
193
+ [tool.poe.tasks.lint-fix]
194
+ sequence = ["fmt", "lint", "typecheck"]
195
+
196
+ [tool.poe.tasks.test]
197
+ ref = "test-py314"
198
+
199
+ [tool.poe.tasks.test-py314]
200
+ cmd = "pytest ${COV_ARGS} tests/"
201
+
202
+ [tool.poe.tasks.test-py313]
203
+ cmd = "pytest ${COV_ARGS} tests/"
204
+ executor = {isolated = true, python = "3.13"}
205
+
206
+ [tool.poe.tasks.test-py312]
207
+ cmd = "pytest ${COV_ARGS} tests/"
208
+ executor = {isolated = true, python = "3.12"}
209
+
210
+ [tool.poe.tasks.test-py311]
211
+ cmd = "pytest ${COV_ARGS} tests/"
212
+ executor = {isolated = true, python = "3.11"}
213
+
214
+ [tool.poe.tasks.test-py310]
215
+ cmd = "pytest ${COV_ARGS} tests/"
216
+ executor = {isolated = true, python = "3.10"}
217
+
218
+ [tool.poe.tasks.test-all]
219
+ sequence = ["test-py314", "test-py313", "test-py312", "test-py311", "test-py310"]
220
+
221
+ [tool.poe.tasks.typecheck-all]
222
+ sequence = ["typecheck-py314", "typecheck-py313", "typecheck-py312", "typecheck-py311", "typecheck-py310"]
223
+
@@ -1221,7 +1221,7 @@ wheels = [
1221
1221
 
1222
1222
  [[package]]
1223
1223
  name = "python-event-sourcery"
1224
- version = "0.5.3a4"
1224
+ version = "0.5.3a5"
1225
1225
  source = { editable = "." }
1226
1226
  dependencies = [
1227
1227
  { name = "more-itertools" },
@@ -5,9 +5,7 @@ repo_name = "python-event-sourcery/python-event-sourcery"
5
5
  nav = [
6
6
  { "Event Sourcery" = "index.md" },
7
7
  { "Get Started" = "get_started.md" },
8
- { "Concepts" = [
9
- { "Basics" = "concepts/basics.md" },
10
- ] },
8
+ { "Concepts" = "concepts.md" },
11
9
  { "Recipes" = [
12
10
  { "Defining events" = "recipes/defining_events.md" },
13
11
  { "Integrate with your app" = "recipes/integrate.md" },
@@ -1,40 +0,0 @@
1
- # Basics
2
-
3
- ## Prerequisites
4
-
5
- - docker + docker compose / any compatible replacement
6
- - uv
7
-
8
- ## Installation
9
-
10
- ```bash
11
- uv sync --all-extras
12
- ```
13
-
14
- ## Running tests
15
-
16
- ```bash
17
- docker compose up
18
- make test
19
- ```
20
-
21
- ## Running linters
22
-
23
- ```bash
24
- make lint
25
- ```
26
-
27
- # Documentation
28
-
29
- First, `cd docs/documentation`
30
-
31
- ## Serve docs with live preview
32
-
33
- ```bash
34
- zensical serve
35
- ```
36
-
37
- ## Deploy docs to github pages
38
-
39
- Docs get auto deployed from main after each change.
40
-
@@ -1,20 +0,0 @@
1
- SRC_DIRS ?= ${wildcard event_sourcery*}
2
-
3
- .PHONY: lint
4
- lint:
5
- uv run --all-extras ruff format $(SRC_DIRS) tests/
6
- uv run --all-extras ruff check $(SRC_DIRS) tests/ --fix
7
- uv run --all-extras mypy $(SRC_DIRS) tests/
8
-
9
- .PHONY: test
10
- test:
11
- uv run --all-extras pytest $(addprefix --cov ,$(SRC_DIRS)) tests/
12
-
13
- .PHONY: docs-serve
14
- docs-serve:
15
- uv run --all-extras zensical serve
16
-
17
- .PHONY: lint-fix-docs
18
- lint-fix-docs:
19
- uv run --all-extras ruff format docs/code tests/
20
- uv run --all-extras ruff check docs/code --fix