buz 2.15.10rc6__tar.gz → 2.15.11__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 (267) hide show
  1. {buz-2.15.10rc6 → buz-2.15.11}/PKG-INFO +1 -1
  2. {buz-2.15.10rc6 → buz-2.15.11}/pyproject.toml +1 -1
  3. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/kafka_event_async_subscriber_executor.py +20 -3
  4. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/kafka_event_sync_subscriber_executor.py +20 -5
  5. buz-2.15.11/src/buz/event/infrastructure/buz_kafka/models/kafka_delivery_context.py +10 -0
  6. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/kombu_consumer.py +10 -2
  7. buz-2.15.11/src/buz/event/infrastructure/kombu/models/kombu_delivery_context.py +7 -0
  8. buz-2.15.11/src/buz/event/infrastructure/models/delivery_context.py +6 -0
  9. buz-2.15.11/src/buz/event/infrastructure/models/execution_context.py +8 -0
  10. buz-2.15.11/src/buz/event/middleware/async_consume_middleware.py +21 -0
  11. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py +16 -5
  12. buz-2.15.11/src/buz/event/middleware/base_async_consume_middleware.py +37 -0
  13. buz-2.15.11/src/buz/event/middleware/base_consume_middleware.py +22 -0
  14. buz-2.15.11/src/buz/event/middleware/consume_middleware.py +16 -0
  15. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/consume_middleware_chain_resolver.py +13 -4
  16. buz-2.15.11/src/buz/event/sync/models/sync_delivery_context.py +7 -0
  17. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/sync/sync_event_bus.py +10 -2
  18. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_poll_record.py +1 -0
  19. buz-2.15.11/src/buz/py.typed +0 -0
  20. buz-2.15.11/src/buz/queue/__init__.py +0 -0
  21. buz-2.15.10rc6/src/buz/event/middleware/async_consume_middleware.py +0 -14
  22. buz-2.15.10rc6/src/buz/event/middleware/base_async_consume_middleware.py +0 -20
  23. buz-2.15.10rc6/src/buz/event/middleware/base_consume_middleware.py +0 -19
  24. buz-2.15.10rc6/src/buz/event/middleware/consume_middleware.py +0 -13
  25. {buz-2.15.10rc6 → buz-2.15.11}/LICENSE +0 -0
  26. {buz-2.15.10rc6 → buz-2.15.11}/README.md +0 -0
  27. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/__init__.py +0 -0
  28. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/__init__.py +0 -0
  29. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/__init__.py +0 -0
  30. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/base_command_handler.py +0 -0
  31. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/command_bus.py +0 -0
  32. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/command_handler.py +0 -0
  33. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/middleware/__init__.py +0 -0
  34. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/middleware/base_handle_middleware.py +0 -0
  35. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/middleware/handle_middleware.py +0 -0
  36. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  37. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/self_process/__init__.py +0 -0
  38. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/asynchronous/self_process/self_process_command_bus.py +0 -0
  39. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/command.py +0 -0
  40. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/more_than_one_command_handler_related_exception.py +0 -0
  41. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/__init__.py +0 -0
  42. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/base_command_handler.py +0 -0
  43. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/command_bus.py +0 -0
  44. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/command_handler.py +0 -0
  45. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/middleware/__init__.py +0 -0
  46. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/middleware/base_handle_middleware.py +0 -0
  47. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/middleware/handle_middleware.py +0 -0
  48. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  49. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/self_process/__init__.py +0 -0
  50. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/self_process/self_process_command_bus.py +0 -0
  51. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/synced_async/__init__.py +0 -0
  52. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py +0 -0
  53. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/__init__.py +0 -0
  54. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/async_consumer.py +0 -0
  55. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/async_event_bus.py +0 -0
  56. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/async_subscriber.py +0 -0
  57. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/async_worker.py +0 -0
  58. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/base_async_subscriber.py +0 -0
  59. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/base_subscriber.py +0 -0
  60. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/consumer.py +0 -0
  61. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/dead_letter_queue/__init__.py +0 -0
  62. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/dead_letter_queue/dlq_criteria.py +0 -0
  63. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/dead_letter_queue/dlq_record.py +0 -0
  64. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/dead_letter_queue/dlq_repository.py +0 -0
  65. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/event.py +0 -0
  66. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/event_bus.py +0 -0
  67. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/__init__.py +0 -0
  68. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/event_not_published_exception.py +0 -0
  69. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/event_restore_exception.py +0 -0
  70. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/subscribers_not_found_exception.py +0 -0
  71. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/term_signal_interruption_exception.py +0 -0
  72. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/exceptions/worker_execution_exception.py +0 -0
  73. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/__init__.py +0 -0
  74. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/__init__.py +0 -0
  75. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py +0 -0
  76. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py +0 -0
  77. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py +0 -0
  78. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py +0 -0
  79. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py +0 -0
  80. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py +0 -0
  81. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/consume_strategy/consume_strategy.py +0 -0
  82. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/consume_strategy/kafka_on_fail_strategy.py +0 -0
  83. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/consume_strategy/topic_and_subscription_group_per_subscriber_kafka_consumer_strategy.py +0 -0
  84. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/exceptions/__init__.py +0 -0
  85. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/exceptions/kafka_event_bus_config_not_valid_exception.py +0 -0
  86. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/exceptions/max_consumer_retry_exception.py +0 -0
  87. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py +0 -0
  88. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py +0 -0
  89. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py +0 -0
  90. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/publish_strategy/publish_strategy.py +0 -0
  91. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/buz_kafka/publish_strategy/topic_per_event_kafka_publish_strategy.py +0 -0
  92. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/__init__.py +0 -0
  93. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/allowed_kombu_serializer.py +0 -0
  94. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/consume_strategy/__init__.py +0 -0
  95. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py +0 -0
  96. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/consume_strategy/queue_per_subscriber_consume_strategy.py +0 -0
  97. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/kombu_event_bus.py +0 -0
  98. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/publish_strategy/__init__.py +0 -0
  99. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/publish_strategy/fanout_exchange_per_event_publish_strategy.py +0 -0
  100. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py +0 -0
  101. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/retry_strategy/__init__.py +0 -0
  102. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py +0 -0
  103. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/kombu/retry_strategy/simple_publish_retry_policy.py +0 -0
  104. {buz-2.15.10rc6/src/buz/event/infrastructure/queue → buz-2.15.11/src/buz/event/infrastructure/models}/__init__.py +0 -0
  105. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/infrastructure/models/consuming_task.py +0 -0
  106. {buz-2.15.10rc6/src/buz/event/middleware/exceptions → buz-2.15.11/src/buz/event/infrastructure/queue}/__init__.py +0 -0
  107. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/meta_base_subscriber.py +0 -0
  108. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/meta_subscriber.py +0 -0
  109. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/__init__.py +0 -0
  110. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/async_publish_middleware.py +0 -0
  111. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py +0 -0
  112. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/base_publish_middleware.py +0 -0
  113. {buz-2.15.10rc6/src/buz/event/strategies → buz-2.15.11/src/buz/event/middleware/exceptions}/__init__.py +0 -0
  114. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py +0 -0
  115. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/publish_middleware.py +0 -0
  116. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/middleware/publish_middleware_chain_resolver.py +0 -0
  117. {buz-2.15.10rc6/src/buz/event/strategies/execution_strategy → buz-2.15.11/src/buz/event/strategies}/__init__.py +0 -0
  118. {buz-2.15.10rc6/src/buz/event/strategies/retry → buz-2.15.11/src/buz/event/strategies/execution_strategy}/__init__.py +0 -0
  119. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py +0 -0
  120. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/execution_strategy/async_self_process_execution_strategy.py +0 -0
  121. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/execution_strategy/cyclic_iterator_execution_strategy.py +0 -0
  122. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/execution_strategy/execution_strategy.py +0 -0
  123. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/execution_strategy/self_process_execution_strategy.py +0 -0
  124. {buz-2.15.10rc6/src/buz/event/transactional_outbox/outbox_record_validation → buz-2.15.11/src/buz/event/strategies/retry}/__init__.py +0 -0
  125. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/consume_retrier.py +0 -0
  126. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/consumed_event_retry.py +0 -0
  127. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/consumed_event_retry_repository.py +0 -0
  128. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/max_retries_consume_retrier.py +0 -0
  129. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/max_retries_negative_exception.py +0 -0
  130. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/strategies/retry/reject_callback.py +0 -0
  131. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/subscriber.py +0 -0
  132. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/sync/__init__.py +0 -0
  133. {buz-2.15.10rc6/src/buz/kafka/domain/exceptions → buz-2.15.11/src/buz/event/sync/models}/__init__.py +0 -0
  134. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/__init__.py +0 -0
  135. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py +0 -0
  136. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/fqn_to_event_mapper.py +0 -0
  137. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_criteria/__init__.py +0 -0
  138. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_criteria/deliverable_records_outbox_criteria_factory.py +0 -0
  139. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py +0 -0
  140. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria_factory.py +0 -0
  141. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_criteria/outbox_sorting_criteria.py +0 -0
  142. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record.py +0 -0
  143. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_finder/__init__.py +0 -0
  144. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_finder/outbox_record_stream_finder.py +0 -0
  145. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_finder/polling_outbox_record_stream_finder.py +0 -0
  146. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_to_event_translator.py +0 -0
  147. {buz-2.15.10rc6/src/buz/kafka/domain/models → buz-2.15.11/src/buz/event/transactional_outbox/outbox_record_validation}/__init__.py +0 -0
  148. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_validation/abstract_outbox_record_validator.py +0 -0
  149. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_size_not_allowed_exception.py +0 -0
  150. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation_exception.py +0 -0
  151. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py +0 -0
  152. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py +0 -0
  153. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/outbox_repository.py +0 -0
  154. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/transactional_outbox_event_bus.py +0 -0
  155. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/transactional_outbox/transactional_outbox_worker.py +0 -0
  156. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/event/worker.py +0 -0
  157. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/handler.py +0 -0
  158. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/__init__.py +0 -0
  159. {buz-2.15.10rc6/src/buz/kafka/domain/services → buz-2.15.11/src/buz/kafka/domain/exceptions}/__init__.py +0 -0
  160. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/exceptions/not_all_partition_assigned_exception.py +0 -0
  161. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/exceptions/not_valid_kafka_message_exception.py +0 -0
  162. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/exceptions/not_valid_partition_number_exception.py +0 -0
  163. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/exceptions/topic_already_created_exception.py +0 -0
  164. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/exceptions/topic_not_found_exception.py +0 -0
  165. {buz-2.15.10rc6/src/buz/kafka/infrastructure → buz-2.15.11/src/buz/kafka/domain/models}/__init__.py +0 -0
  166. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/auto_create_topic_configuration.py +0 -0
  167. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/consumer_initial_offset_position.py +0 -0
  168. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/create_kafka_topic.py +0 -0
  169. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_connection_config.py +0 -0
  170. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_connection_credentials.py +0 -0
  171. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_connection_plain_text_credentials.py +0 -0
  172. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_connection_sasl_credentials.py +0 -0
  173. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_consumer_record.py +0 -0
  174. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_supported_compression_type.py +0 -0
  175. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_supported_sasl_mechanisms.py +0 -0
  176. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/models/kafka_supported_security_protocols.py +0 -0
  177. {buz-2.15.10rc6/src/buz/kafka/infrastructure/aiokafka → buz-2.15.11/src/buz/kafka/domain/services}/__init__.py +0 -0
  178. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/services/async_kafka_producer.py +0 -0
  179. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/services/kafka_admin_client.py +0 -0
  180. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/services/kafka_admin_test_client.py +0 -0
  181. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/domain/services/kafka_producer.py +0 -0
  182. {buz-2.15.10rc6/src/buz/kafka/infrastructure/aiokafka/rebalance → buz-2.15.11/src/buz/kafka/infrastructure}/__init__.py +0 -0
  183. {buz-2.15.10rc6/src/buz/kafka/infrastructure/aiokafka/translators → buz-2.15.11/src/buz/kafka/infrastructure/aiokafka}/__init__.py +0 -0
  184. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py +0 -0
  185. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/aiokafka/aiokafka_producer.py +0 -0
  186. {buz-2.15.10rc6/src/buz/kafka/infrastructure/cdc → buz-2.15.11/src/buz/kafka/infrastructure/aiokafka/rebalance}/__init__.py +0 -0
  187. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py +0 -0
  188. {buz-2.15.10rc6/src/buz/kafka/infrastructure/deserializers → buz-2.15.11/src/buz/kafka/infrastructure/aiokafka/translators}/__init__.py +0 -0
  189. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/aiokafka/translators/consumer_initial_offset_position_translator.py +0 -0
  190. {buz-2.15.10rc6/src/buz/kafka/infrastructure/deserializers/implementations → buz-2.15.11/src/buz/kafka/infrastructure/cdc}/__init__.py +0 -0
  191. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/cdc/cdc_message.py +0 -0
  192. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/cdc/cdc_payload.py +0 -0
  193. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/cdc/cdc_schema.py +0 -0
  194. {buz-2.15.10rc6/src/buz/kafka/infrastructure/interfaces → buz-2.15.11/src/buz/kafka/infrastructure/deserializers}/__init__.py +0 -0
  195. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/byte_deserializer.py +0 -0
  196. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/bytes_to_message_deserializer.py +0 -0
  197. {buz-2.15.10rc6/src/buz/kafka/infrastructure/kafka_python → buz-2.15.11/src/buz/kafka/infrastructure/deserializers/implementations}/__init__.py +0 -0
  198. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_event_deserializer.py +0 -0
  199. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/not_valid_cdc_message_exception.py +0 -0
  200. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/implementations/json_byte_deserializer.py +0 -0
  201. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/deserializers/implementations/json_bytes_to_message_deserializer.py +0 -0
  202. {buz-2.15.10rc6/src/buz/kafka/infrastructure/kafka_python/translators → buz-2.15.11/src/buz/kafka/infrastructure/interfaces}/__init__.py +0 -0
  203. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/interfaces/async_connection_manager.py +0 -0
  204. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/interfaces/connection_manager.py +0 -0
  205. {buz-2.15.10rc6/src/buz/queue → buz-2.15.11/src/buz/kafka/infrastructure/kafka_python}/__init__.py +0 -0
  206. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/kafka_python/exception/consumer_interrupted_exception.py +0 -0
  207. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_client.py +0 -0
  208. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_test_client.py +0 -0
  209. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/kafka_python/kafka_python_producer.py +0 -0
  210. /buz-2.15.10rc6/src/buz/py.typed → /buz-2.15.11/src/buz/kafka/infrastructure/kafka_python/translators/__init__.py +0 -0
  211. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/kafka_python/translators/consumer_initial_offset_position_translator.py +0 -0
  212. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/serializers/byte_serializer.py +0 -0
  213. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/serializers/implementations/cdc_record_bytes_to_event_serializer.py +0 -0
  214. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/serializers/implementations/json_byte_serializer.py +0 -0
  215. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/kafka/infrastructure/serializers/kafka_header_serializer.py +0 -0
  216. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/__init__.py +0 -0
  217. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/handler_fqn_not_found_exception.py +0 -0
  218. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/locator.py +0 -0
  219. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/message_fqn_not_found_exception.py +0 -0
  220. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/pypendency/__init__.py +0 -0
  221. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/pypendency/container_locator.py +0 -0
  222. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/pypendency/container_locator_resolution_configuration.py +0 -0
  223. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/pypendency/handler_not_found_exception.py +0 -0
  224. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/pypendency/handler_not_registered_exception.py +0 -0
  225. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/sync/__init__.py +0 -0
  226. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/sync/handler_already_registered_exception.py +0 -0
  227. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/sync/handler_not_registered_exception.py +0 -0
  228. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/locator/sync/instance_locator.py +0 -0
  229. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/message.py +0 -0
  230. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/middleware/__init__.py +0 -0
  231. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/middleware/middleware.py +0 -0
  232. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/middleware/middleware_chain_builder.py +0 -0
  233. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/__init__.py +0 -0
  234. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/__init__.py +0 -0
  235. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/base_query_handler.py +0 -0
  236. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/middleware/__init__.py +0 -0
  237. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/middleware/base_handle_middleware.py +0 -0
  238. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/middleware/handle_middleware.py +0 -0
  239. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  240. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/query_bus.py +0 -0
  241. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/query_handler.py +0 -0
  242. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/self_process/__init__.py +0 -0
  243. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/asynchronous/self_process/self_process_query_bus.py +0 -0
  244. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/more_than_one_query_handler_related_exception.py +0 -0
  245. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/query.py +0 -0
  246. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/query_response.py +0 -0
  247. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/__init__.py +0 -0
  248. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/base_query_handler.py +0 -0
  249. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/middleware/__init__.py +0 -0
  250. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/middleware/base_handle_middleware.py +0 -0
  251. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/middleware/handle_middleware.py +0 -0
  252. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  253. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/query_bus.py +0 -0
  254. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/query_handler.py +0 -0
  255. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/self_process/__init__.py +0 -0
  256. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/self_process/self_process_query_bus.py +0 -0
  257. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/synced_async/__init__.py +0 -0
  258. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/query/synchronous/synced_async/synced_async_query_bus.py +0 -0
  259. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/queue/in_memory/in_memory_multiqueue_repository.py +0 -0
  260. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/queue/in_memory/in_memory_queue_repository.py +0 -0
  261. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/queue/multiqueue_repository.py +0 -0
  262. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/queue/queue_repository.py +0 -0
  263. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/serializer/message_to_bytes_serializer.py +0 -0
  264. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/serializer/message_to_json_bytes_serializer.py +0 -0
  265. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/wrapper/__init__.py +0 -0
  266. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/wrapper/async_to_sync.py +0 -0
  267. {buz-2.15.10rc6 → buz-2.15.11}/src/buz/wrapper/event_loop.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buz
3
- Version: 2.15.10rc6
3
+ Version: 2.15.11
4
4
  Summary: Buz is a set of light, simple and extensible implementations of event, command and query buses.
5
5
  License: MIT
6
6
  Author: Luis Pintado Lozano
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "buz"
3
- version = "2.15.10-rc6"
3
+ version = "2.15.11"
4
4
  description = "Buz is a set of light, simple and extensible implementations of event, command and query buses."
5
5
  readme = "README.md"
6
6
  authors = ["Luis Pintado Lozano <luis.pintado.lozano@gmail.com>", "Gerardo Parra <gprauxiliar@gmail.com>"]
@@ -8,6 +8,7 @@ from buz.event.infrastructure.buz_kafka.consume_strategy.kafka_on_fail_strategy
8
8
  from buz.event.infrastructure.buz_kafka.exceptions.max_consumer_retry_exception import MaxConsumerRetryException
9
9
  from buz.event.infrastructure.buz_kafka.exceptions.retry_exception import ConsumerRetryException
10
10
  from buz.event.infrastructure.buz_kafka.kafka_event_subscriber_executor import KafkaEventSubscriberExecutor
11
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
11
12
  from buz.event.middleware.async_consume_middleware import AsyncConsumeMiddleware
12
13
  from buz.event.middleware.async_consume_middleware_chain_resolver import AsyncConsumeMiddlewareChainResolver
13
14
  from buz.event.strategies.retry.consume_retrier import ConsumeRetrier
@@ -15,6 +16,7 @@ from buz.event.strategies.retry.reject_callback import RejectCallback
15
16
  from buz.kafka.domain.exceptions.not_valid_kafka_message_exception import NotValidKafkaMessageException
16
17
  from buz.kafka.domain.models.kafka_consumer_record import KafkaConsumerRecord
17
18
  from buz.kafka.domain.models.kafka_poll_record import KafkaPollRecord
19
+ from buz.event.infrastructure.buz_kafka.models.kafka_delivery_context import KafkaDeliveryContext
18
20
  from buz.kafka.infrastructure.deserializers.byte_deserializer import ByteDeserializer
19
21
  from buz.kafka.infrastructure.serializers.kafka_header_serializer import KafkaHeaderSerializer
20
22
 
@@ -67,18 +69,33 @@ class KafkaEventAsyncSubscriberExecutor(KafkaEventSubscriberExecutor):
67
69
  value=deserialized_value,
68
70
  headers=self.__header_deserializer.deserialize(kafka_poll_record.headers),
69
71
  ),
72
+ ExecutionContext(
73
+ delivery_context=KafkaDeliveryContext(
74
+ topic=kafka_poll_record.topic,
75
+ consumer_group=self.__subscriber.fqn(),
76
+ partition=kafka_poll_record.partition,
77
+ timestamp=kafka_poll_record.timestamp,
78
+ )
79
+ ),
70
80
  )
71
81
  except NotValidKafkaMessageException:
72
82
  self.__logger.error(
73
83
  f'The message "{str(kafka_poll_record.value)}" is not valid, it will be consumed but not processed'
74
84
  )
75
85
 
76
- async def __consumption_callback(self, subscriber: AsyncSubscriber, message: KafkaConsumerRecord[Event]) -> None:
86
+ async def __consumption_callback(
87
+ self, subscriber: AsyncSubscriber, message: KafkaConsumerRecord[Event], execution_context: ExecutionContext
88
+ ) -> None:
77
89
  await self.__consume_middleware_chain_resolver.resolve(
78
- event=message.value, subscriber=subscriber, consume=self.__perform_consume
90
+ event=message.value,
91
+ subscriber=subscriber,
92
+ execution_context=execution_context,
93
+ consume=self.__perform_consume,
79
94
  )
80
95
 
81
- async def __perform_consume(self, event: Event, subscriber: AsyncSubscriber) -> None:
96
+ async def __perform_consume(
97
+ self, event: Event, subscriber: AsyncSubscriber, execution_context: ExecutionContext
98
+ ) -> None:
82
99
  number_of_executions = 0
83
100
  should_retry = True
84
101
 
@@ -7,6 +7,8 @@ from buz.event.infrastructure.buz_kafka.consume_strategy.kafka_on_fail_strategy
7
7
  from buz.event.infrastructure.buz_kafka.exceptions.max_consumer_retry_exception import MaxConsumerRetryException
8
8
  from buz.event.infrastructure.buz_kafka.exceptions.retry_exception import ConsumerRetryException
9
9
  from buz.event.infrastructure.buz_kafka.kafka_event_subscriber_executor import KafkaEventSubscriberExecutor
10
+ from buz.event.infrastructure.buz_kafka.models.kafka_delivery_context import KafkaDeliveryContext
11
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
10
12
  from buz.event.middleware.consume_middleware import ConsumeMiddleware
11
13
  from buz.event.middleware.consume_middleware_chain_resolver import ConsumeMiddlewareChainResolver
12
14
  from buz.event.strategies.retry.consume_retrier import ConsumeRetrier
@@ -64,11 +66,19 @@ class KafkaEventSyncSubscriberExecutor(KafkaEventSubscriberExecutor):
64
66
  await get_running_loop().run_in_executor(
65
67
  None,
66
68
  lambda: self.__execution_callback(
67
- self.__subscriber,
68
- KafkaConsumerRecord(
69
+ subscriber=self.__subscriber,
70
+ message=KafkaConsumerRecord(
69
71
  value=deserialized_value,
70
72
  headers=self.__header_deserializer.deserialize(kafka_poll_record.headers),
71
73
  ),
74
+ execution_context=ExecutionContext(
75
+ delivery_context=KafkaDeliveryContext(
76
+ topic=kafka_poll_record.topic,
77
+ consumer_group=self.__subscriber.fqn(),
78
+ partition=kafka_poll_record.partition,
79
+ timestamp=kafka_poll_record.timestamp,
80
+ )
81
+ ),
72
82
  ),
73
83
  )
74
84
 
@@ -77,12 +87,17 @@ class KafkaEventSyncSubscriberExecutor(KafkaEventSubscriberExecutor):
77
87
  f'The message "{str(kafka_poll_record.value)}" is not valid, it will be consumed but not processed'
78
88
  )
79
89
 
80
- def __execution_callback(self, subscriber: Subscriber, message: KafkaConsumerRecord[Event]) -> None:
90
+ def __execution_callback(
91
+ self, subscriber: Subscriber, message: KafkaConsumerRecord[Event], execution_context: ExecutionContext
92
+ ) -> None:
81
93
  self.__consume_middleware_chain_resolver.resolve(
82
- event=message.value, subscriber=subscriber, consume=self.__perform_consume
94
+ event=message.value,
95
+ subscriber=subscriber,
96
+ execution_context=execution_context,
97
+ consume=self.__perform_consume,
83
98
  )
84
99
 
85
- def __perform_consume(self, event: Event, subscriber: Subscriber) -> None:
100
+ def __perform_consume(self, event: Event, subscriber: Subscriber, execution_context: ExecutionContext) -> None:
86
101
  number_of_executions = 0
87
102
  should_retry = True
88
103
 
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+ from buz.event.infrastructure.models.delivery_context import DeliveryContext
3
+
4
+
5
+ @dataclass(frozen=True)
6
+ class KafkaDeliveryContext(DeliveryContext):
7
+ topic: str
8
+ consumer_group: str
9
+ partition: int
10
+ timestamp: int
@@ -2,6 +2,8 @@ import asyncio
2
2
  from logging import Logger
3
3
  from typing import Optional, Callable, cast
4
4
 
5
+ from buz.event.infrastructure.kombu.models.kombu_delivery_context import KombuDeliveryContext
6
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
5
7
  from kombu import Connection, Queue, Consumer as MessageConsumer, Message
6
8
  from kombu.mixins import ConsumerMixin
7
9
  from kombu.transport.pyamqp import Channel
@@ -110,12 +112,18 @@ class KombuConsumer(ConsumerMixin, Consumer):
110
112
  # The problem here is that the chain resolver works with syncsubscribers, an asyncsubscriber would require of a async function,
111
113
  # but we are using run-until-complete to run the async function, so we are not really using the async function, we are just running it as a sync function, so we can cast the asyncsubscriber to a subscriber
112
114
  subscriber = cast(Subscriber, meta_subscriber)
113
- self.__consume_middleware_chain_resolver.resolve(event, subscriber, self.__perform_consume)
115
+ execution_context = ExecutionContext(delivery_context=KombuDeliveryContext())
116
+ self.__consume_middleware_chain_resolver.resolve(
117
+ event=event,
118
+ subscriber=subscriber,
119
+ execution_context=execution_context,
120
+ consume=self.__perform_consume,
121
+ )
114
122
  message.ack()
115
123
  except Exception as exc:
116
124
  self.__on_consume_exception(message, event, meta_subscribers, exc)
117
125
 
118
- def __perform_consume(self, event: Event, subscriber: MetaSubscriber) -> None:
126
+ def __perform_consume(self, event: Event, subscriber: MetaSubscriber, execution_context: ExecutionContext) -> None:
119
127
  if isinstance(subscriber, AsyncSubscriber):
120
128
  self.__get_or_create_event_loop().run_until_complete(subscriber.consume(event))
121
129
  return
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+ from buz.event.infrastructure.models.delivery_context import DeliveryContext
3
+
4
+
5
+ @dataclass(frozen=True)
6
+ class KombuDeliveryContext(DeliveryContext):
7
+ pass
@@ -0,0 +1,6 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass(frozen=True)
5
+ class DeliveryContext:
6
+ pass
@@ -0,0 +1,8 @@
1
+ from dataclasses import dataclass
2
+
3
+ from buz.event.infrastructure.models.delivery_context import DeliveryContext
4
+
5
+
6
+ @dataclass(frozen=True)
7
+ class ExecutionContext:
8
+ delivery_context: DeliveryContext
@@ -0,0 +1,21 @@
1
+ from abc import abstractmethod
2
+ from typing import Awaitable, Callable
3
+
4
+ from buz.event import Event
5
+ from buz.event.async_subscriber import AsyncSubscriber
6
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
7
+ from buz.middleware import Middleware
8
+
9
+ AsyncConsumeCallable = Callable[[Event, AsyncSubscriber, ExecutionContext], Awaitable[None]]
10
+
11
+
12
+ class AsyncConsumeMiddleware(Middleware):
13
+ @abstractmethod
14
+ async def on_consume(
15
+ self,
16
+ event: Event,
17
+ subscriber: AsyncSubscriber,
18
+ consume: AsyncConsumeCallable,
19
+ execution_context: ExecutionContext,
20
+ ) -> None:
21
+ pass
@@ -2,6 +2,7 @@ from typing import Sequence
2
2
  from buz.event import Event
3
3
  from buz.event.async_subscriber import AsyncSubscriber
4
4
 
5
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
5
6
  from buz.event.middleware.async_consume_middleware import AsyncConsumeCallable, AsyncConsumeMiddleware
6
7
  from buz.middleware import MiddlewareChainBuilder
7
8
 
@@ -14,16 +15,26 @@ class AsyncConsumeMiddlewareChainResolver:
14
15
  self.__middlewares = middlewares
15
16
  self.__middleware_chain_builder: MiddlewareChainBuilder[
16
17
  AsyncConsumeCallable, AsyncConsumeMiddleware
17
- ] = MiddlewareChainBuilder(middlewares)
18
+ ] = MiddlewareChainBuilder(self.__middlewares)
18
19
 
19
- async def resolve(self, event: Event, subscriber: AsyncSubscriber, consume: AsyncConsumeCallable) -> None:
20
+ async def resolve(
21
+ self,
22
+ event: Event,
23
+ subscriber: AsyncSubscriber,
24
+ consume: AsyncConsumeCallable,
25
+ execution_context: ExecutionContext,
26
+ ) -> None:
20
27
  chain_callable: AsyncConsumeCallable = self.__middleware_chain_builder.get_chain_callable(
21
28
  consume, self.__get_middleware_callable
22
29
  )
23
30
 
24
- await chain_callable(event, subscriber)
31
+ await chain_callable(event, subscriber, execution_context)
25
32
 
26
33
  def __get_middleware_callable(
27
- self, middleware: AsyncConsumeMiddleware, consume_callable: AsyncConsumeCallable
34
+ self,
35
+ middleware: AsyncConsumeMiddleware,
36
+ consume_callable: AsyncConsumeCallable,
28
37
  ) -> AsyncConsumeCallable:
29
- return lambda event, subscriber: middleware.on_consume(event, subscriber, consume_callable)
38
+ return lambda event, subscriber, execution_context: middleware.on_consume(
39
+ event, subscriber, consume_callable, execution_context
40
+ )
@@ -0,0 +1,37 @@
1
+ from abc import abstractmethod
2
+
3
+ from buz.event import Event
4
+ from buz.event.async_subscriber import AsyncSubscriber
5
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
6
+ from buz.event.middleware.async_consume_middleware import AsyncConsumeMiddleware, AsyncConsumeCallable
7
+
8
+
9
+ class BaseAsyncConsumeMiddleware(AsyncConsumeMiddleware):
10
+ async def on_consume(
11
+ self,
12
+ event: Event,
13
+ subscriber: AsyncSubscriber,
14
+ consume: AsyncConsumeCallable,
15
+ execution_context: ExecutionContext,
16
+ ) -> None:
17
+ await self._before_on_consume(event, subscriber, execution_context)
18
+ await consume(event, subscriber, execution_context)
19
+ await self._after_on_consume(event, subscriber, execution_context)
20
+
21
+ @abstractmethod
22
+ async def _before_on_consume(
23
+ self,
24
+ event: Event,
25
+ subscriber: AsyncSubscriber,
26
+ execution_context: ExecutionContext,
27
+ ) -> None:
28
+ pass
29
+
30
+ @abstractmethod
31
+ async def _after_on_consume(
32
+ self,
33
+ event: Event,
34
+ subscriber: AsyncSubscriber,
35
+ execution_context: ExecutionContext,
36
+ ) -> None:
37
+ pass
@@ -0,0 +1,22 @@
1
+ from abc import abstractmethod
2
+
3
+ from buz.event import Event, Subscriber
4
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
5
+ from buz.event.middleware import ConsumeMiddleware, ConsumeCallable
6
+
7
+
8
+ class BaseConsumeMiddleware(ConsumeMiddleware):
9
+ def on_consume(
10
+ self, event: Event, subscriber: Subscriber, consume: ConsumeCallable, execution_context: ExecutionContext
11
+ ) -> None:
12
+ self._before_on_consume(event, subscriber, execution_context)
13
+ consume(event, subscriber, execution_context)
14
+ self._after_on_consume(event, subscriber, execution_context)
15
+
16
+ @abstractmethod
17
+ def _before_on_consume(self, event: Event, subscriber: Subscriber, execution_context: ExecutionContext) -> None:
18
+ pass
19
+
20
+ @abstractmethod
21
+ def _after_on_consume(self, event: Event, subscriber: Subscriber, execution_context: ExecutionContext) -> None:
22
+ pass
@@ -0,0 +1,16 @@
1
+ from abc import abstractmethod
2
+ from typing import Callable
3
+
4
+ from buz.event import Event, Subscriber
5
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
6
+ from buz.middleware import Middleware
7
+
8
+ ConsumeCallable = Callable[[Event, Subscriber, ExecutionContext], None]
9
+
10
+
11
+ class ConsumeMiddleware(Middleware):
12
+ @abstractmethod
13
+ def on_consume(
14
+ self, event: Event, subscriber: Subscriber, consume: ConsumeCallable, execution_context: ExecutionContext
15
+ ) -> None:
16
+ pass
@@ -1,5 +1,6 @@
1
1
  from typing import Sequence
2
2
  from buz.event import Event, Subscriber
3
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
3
4
  from buz.event.middleware import ConsumeMiddleware, ConsumeCallable
4
5
  from buz.middleware import MiddlewareChainBuilder
5
6
 
@@ -9,15 +10,23 @@ class ConsumeMiddlewareChainResolver:
9
10
  self.__middlewares = middlewares
10
11
  self.__middleware_chain_builder: MiddlewareChainBuilder[
11
12
  ConsumeCallable, ConsumeMiddleware
12
- ] = MiddlewareChainBuilder(middlewares)
13
+ ] = MiddlewareChainBuilder(self.__middlewares)
13
14
 
14
- def resolve(self, event: Event, subscriber: Subscriber, consume: ConsumeCallable) -> None:
15
+ def resolve(
16
+ self,
17
+ event: Event,
18
+ subscriber: Subscriber,
19
+ consume: ConsumeCallable,
20
+ execution_context: ExecutionContext,
21
+ ) -> None:
15
22
  chain_callable: ConsumeCallable = self.__middleware_chain_builder.get_chain_callable(
16
23
  consume, self.__get_middleware_callable
17
24
  )
18
- chain_callable(event, subscriber)
25
+ chain_callable(event, subscriber, execution_context)
19
26
 
20
27
  def __get_middleware_callable(
21
28
  self, middleware: ConsumeMiddleware, consume_callable: ConsumeCallable
22
29
  ) -> ConsumeCallable:
23
- return lambda event, subscriber: middleware.on_consume(event, subscriber, consume_callable)
30
+ return lambda event, subscriber, execution_context: middleware.on_consume(
31
+ event, subscriber, consume_callable, execution_context
32
+ )
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+ from buz.event.infrastructure.models.delivery_context import DeliveryContext
3
+
4
+
5
+ @dataclass(frozen=True)
6
+ class SyncDeliveryContext(DeliveryContext):
7
+ pass
@@ -1,12 +1,14 @@
1
1
  from typing import Optional, Iterable
2
2
 
3
3
  from buz.event import Event, EventBus, Subscriber
4
+ from buz.event.infrastructure.models.execution_context import ExecutionContext
4
5
  from buz.event.middleware import (
5
6
  PublishMiddleware,
6
7
  ConsumeMiddleware,
7
8
  PublishMiddlewareChainResolver,
8
9
  ConsumeMiddlewareChainResolver,
9
10
  )
11
+ from buz.event.sync.models.sync_delivery_context import SyncDeliveryContext
10
12
  from buz.locator import Locator
11
13
 
12
14
 
@@ -26,10 +28,16 @@ class SyncEventBus(EventBus):
26
28
 
27
29
  def __perform_publish(self, event: Event) -> None:
28
30
  subscribers = self.__locator.get(event)
31
+ execution_context = ExecutionContext(delivery_context=SyncDeliveryContext())
29
32
  for subscriber in subscribers:
30
- self.__consume_middleware_chain_resolver.resolve(event, subscriber, self.__perform_consume)
33
+ self.__consume_middleware_chain_resolver.resolve(
34
+ event=event,
35
+ subscriber=subscriber,
36
+ execution_context=execution_context,
37
+ consume=self.__perform_consume,
38
+ )
31
39
 
32
- def __perform_consume(self, event: Event, subscriber: Subscriber) -> None:
40
+ def __perform_consume(self, event: Event, subscriber: Subscriber, execution_context: ExecutionContext) -> None:
33
41
  subscriber.consume(event)
34
42
 
35
43
  def bulk_publish(self, events: Iterable[Event]) -> None:
@@ -9,6 +9,7 @@ class KafkaPollRecord:
9
9
  key: Optional[Union[str, bytes]]
10
10
  headers: list[tuple[str, bytes]]
11
11
  value: Optional[bytes]
12
+ timestamp: int
12
13
  partition: int
13
14
  topic: str
14
15
  offset: int
File without changes
File without changes
@@ -1,14 +0,0 @@
1
- from abc import abstractmethod
2
- from typing import Awaitable, Callable
3
-
4
- from buz.event import Event
5
- from buz.event.async_subscriber import AsyncSubscriber
6
- from buz.middleware import Middleware
7
-
8
- AsyncConsumeCallable = Callable[[Event, AsyncSubscriber], Awaitable[None]]
9
-
10
-
11
- class AsyncConsumeMiddleware(Middleware):
12
- @abstractmethod
13
- async def on_consume(self, event: Event, subscriber: AsyncSubscriber, consume: AsyncConsumeCallable) -> None:
14
- pass
@@ -1,20 +0,0 @@
1
- from abc import abstractmethod
2
-
3
- from buz.event import Event
4
- from buz.event.async_subscriber import AsyncSubscriber
5
- from buz.event.middleware.async_consume_middleware import AsyncConsumeMiddleware, AsyncConsumeCallable
6
-
7
-
8
- class BaseAsyncConsumeMiddleware(AsyncConsumeMiddleware):
9
- async def on_consume(self, event: Event, subscriber: AsyncSubscriber, consume: AsyncConsumeCallable) -> None:
10
- await self._before_on_consume(event, subscriber)
11
- await consume(event, subscriber)
12
- await self._after_on_consume(event, subscriber)
13
-
14
- @abstractmethod
15
- async def _before_on_consume(self, event: Event, subscriber: AsyncSubscriber) -> None:
16
- pass
17
-
18
- @abstractmethod
19
- async def _after_on_consume(self, event: Event, subscriber: AsyncSubscriber) -> None:
20
- pass
@@ -1,19 +0,0 @@
1
- from abc import abstractmethod
2
-
3
- from buz.event import Event, Subscriber
4
- from buz.event.middleware import ConsumeMiddleware, ConsumeCallable
5
-
6
-
7
- class BaseConsumeMiddleware(ConsumeMiddleware):
8
- def on_consume(self, event: Event, subscriber: Subscriber, consume: ConsumeCallable) -> None:
9
- self._before_on_consume(event, subscriber)
10
- consume(event, subscriber)
11
- self._after_on_consume(event, subscriber)
12
-
13
- @abstractmethod
14
- def _before_on_consume(self, event: Event, subscriber: Subscriber) -> None:
15
- pass
16
-
17
- @abstractmethod
18
- def _after_on_consume(self, event: Event, subscriber: Subscriber) -> None:
19
- pass
@@ -1,13 +0,0 @@
1
- from abc import abstractmethod
2
- from typing import Callable
3
-
4
- from buz.event import Event, Subscriber
5
- from buz.middleware import Middleware
6
-
7
- ConsumeCallable = Callable[[Event, Subscriber], None]
8
-
9
-
10
- class ConsumeMiddleware(Middleware):
11
- @abstractmethod
12
- def on_consume(self, event: Event, subscriber: Subscriber, consume: ConsumeCallable) -> None:
13
- pass
File without changes
File without changes
File without changes
File without changes