buz 2.19.0__tar.gz → 2.21.0rc1__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 (269) hide show
  1. {buz-2.19.0 → buz-2.21.0rc1}/PKG-INFO +1 -1
  2. {buz-2.19.0 → buz-2.21.0rc1}/pyproject.toml +1 -1
  3. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/event.py +3 -0
  4. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py +1 -0
  5. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py +1 -0
  6. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py +2 -0
  7. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record.py +6 -5
  8. buz-2.21.0rc1/src/buz/kafka/domain/exceptions/consumer_group_not_found_exception.py +6 -0
  9. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/services/kafka_admin_client.py +8 -0
  10. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_client.py +26 -0
  11. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_producer.py +6 -6
  12. {buz-2.19.0 → buz-2.21.0rc1}/LICENSE +0 -0
  13. {buz-2.19.0 → buz-2.21.0rc1}/README.md +0 -0
  14. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/__init__.py +0 -0
  15. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/__init__.py +0 -0
  16. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/__init__.py +0 -0
  17. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/base_command_handler.py +0 -0
  18. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/command_bus.py +0 -0
  19. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/command_handler.py +0 -0
  20. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/middleware/__init__.py +0 -0
  21. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/middleware/base_handle_middleware.py +0 -0
  22. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/middleware/handle_middleware.py +0 -0
  23. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  24. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/self_process/__init__.py +0 -0
  25. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/asynchronous/self_process/self_process_command_bus.py +0 -0
  26. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/command.py +0 -0
  27. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/more_than_one_command_handler_related_exception.py +0 -0
  28. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/__init__.py +0 -0
  29. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/base_command_handler.py +0 -0
  30. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/command_bus.py +0 -0
  31. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/command_handler.py +0 -0
  32. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/middleware/__init__.py +0 -0
  33. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/middleware/base_handle_middleware.py +0 -0
  34. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/middleware/handle_middleware.py +0 -0
  35. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  36. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/self_process/__init__.py +0 -0
  37. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/self_process/self_process_command_bus.py +0 -0
  38. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/synced_async/__init__.py +0 -0
  39. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py +0 -0
  40. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/__init__.py +0 -0
  41. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/async_consumer.py +0 -0
  42. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/async_event_bus.py +0 -0
  43. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/async_subscriber.py +0 -0
  44. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/async_worker.py +0 -0
  45. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/base_async_subscriber.py +0 -0
  46. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/base_subscriber.py +0 -0
  47. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/consumer.py +0 -0
  48. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/dead_letter_queue/__init__.py +0 -0
  49. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/dead_letter_queue/dlq_criteria.py +0 -0
  50. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/dead_letter_queue/dlq_record.py +0 -0
  51. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/dead_letter_queue/dlq_repository.py +0 -0
  52. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/event_bus.py +0 -0
  53. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/__init__.py +0 -0
  54. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/event_not_published_exception.py +0 -0
  55. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/event_restore_exception.py +0 -0
  56. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/subscribers_not_found_exception.py +0 -0
  57. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/term_signal_interruption_exception.py +0 -0
  58. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/exceptions/worker_execution_exception.py +0 -0
  59. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/__init__.py +0 -0
  60. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/__init__.py +0 -0
  61. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py +0 -0
  62. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py +0 -0
  63. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py +0 -0
  64. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py +0 -0
  65. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/consume_strategy.py +0 -0
  66. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/kafka_on_fail_strategy.py +0 -0
  67. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/topic_and_subscription_group_per_subscriber_kafka_consumer_strategy.py +0 -0
  68. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/exceptions/__init__.py +0 -0
  69. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/exceptions/kafka_event_bus_config_not_valid_exception.py +0 -0
  70. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/exceptions/max_consumer_retry_exception.py +0 -0
  71. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py +0 -0
  72. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/kafka_event_async_subscriber_executor.py +0 -0
  73. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py +0 -0
  74. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/kafka_event_sync_subscriber_executor.py +0 -0
  75. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/models/cdc_process_context.py +0 -0
  76. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/models/kafka_delivery_context.py +0 -0
  77. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py +0 -0
  78. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/publish_strategy.py +0 -0
  79. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/topic_per_event_kafka_publish_strategy.py +0 -0
  80. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/__init__.py +0 -0
  81. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/allowed_kombu_serializer.py +0 -0
  82. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/consume_strategy/__init__.py +0 -0
  83. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py +0 -0
  84. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/consume_strategy/queue_per_subscriber_consume_strategy.py +0 -0
  85. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/kombu_consumer.py +0 -0
  86. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/kombu_event_bus.py +0 -0
  87. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/models/kombu_delivery_context.py +0 -0
  88. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/publish_strategy/__init__.py +0 -0
  89. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/publish_strategy/fanout_exchange_per_event_publish_strategy.py +0 -0
  90. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py +0 -0
  91. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/retry_strategy/__init__.py +0 -0
  92. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py +0 -0
  93. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/kombu/retry_strategy/simple_publish_retry_policy.py +0 -0
  94. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/models/__init__.py +0 -0
  95. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/models/consuming_task.py +0 -0
  96. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/models/delivery_context.py +0 -0
  97. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/models/execution_context.py +0 -0
  98. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/models/process_context.py +0 -0
  99. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/infrastructure/queue/__init__.py +0 -0
  100. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/meta_base_subscriber.py +0 -0
  101. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/meta_subscriber.py +0 -0
  102. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/__init__.py +0 -0
  103. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/async_consume_middleware.py +0 -0
  104. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py +0 -0
  105. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/async_publish_middleware.py +0 -0
  106. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py +0 -0
  107. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/base_async_consume_middleware.py +0 -0
  108. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/base_consume_middleware.py +0 -0
  109. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/base_publish_middleware.py +0 -0
  110. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/consume_middleware.py +0 -0
  111. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/consume_middleware_chain_resolver.py +0 -0
  112. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/exceptions/__init__.py +0 -0
  113. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py +0 -0
  114. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/publish_middleware.py +0 -0
  115. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/middleware/publish_middleware_chain_resolver.py +0 -0
  116. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/__init__.py +0 -0
  117. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/__init__.py +0 -0
  118. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py +0 -0
  119. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/async_self_process_execution_strategy.py +0 -0
  120. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/cyclic_iterator_execution_strategy.py +0 -0
  121. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/execution_strategy.py +0 -0
  122. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/execution_strategy/self_process_execution_strategy.py +0 -0
  123. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/__init__.py +0 -0
  124. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/consume_retrier.py +0 -0
  125. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/consumed_event_retry.py +0 -0
  126. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/consumed_event_retry_repository.py +0 -0
  127. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/max_retries_consume_retrier.py +0 -0
  128. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/max_retries_negative_exception.py +0 -0
  129. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/strategies/retry/reject_callback.py +0 -0
  130. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/subscriber.py +0 -0
  131. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/sync/__init__.py +0 -0
  132. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/sync/models/__init__.py +0 -0
  133. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/sync/models/sync_delivery_context.py +0 -0
  134. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/sync/sync_event_bus.py +0 -0
  135. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/__init__.py +0 -0
  136. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/fqn_to_event_mapper.py +0 -0
  137. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_criteria/__init__.py +0 -0
  138. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_criteria/deliverable_records_outbox_criteria_factory.py +0 -0
  139. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py +0 -0
  140. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria_factory.py +0 -0
  141. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_sorting_criteria.py +0 -0
  142. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_finder/__init__.py +0 -0
  143. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_finder/outbox_record_stream_finder.py +0 -0
  144. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_finder/polling_outbox_record_stream_finder.py +0 -0
  145. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_to_event_translator.py +0 -0
  146. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/__init__.py +0 -0
  147. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/abstract_outbox_record_validator.py +0 -0
  148. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_size_not_allowed_exception.py +0 -0
  149. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation_exception.py +0 -0
  150. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py +0 -0
  151. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py +0 -0
  152. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/outbox_repository.py +0 -0
  153. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/transactional_outbox_event_bus.py +0 -0
  154. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/transactional_outbox/transactional_outbox_worker.py +0 -0
  155. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/event/worker.py +0 -0
  156. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/handler.py +0 -0
  157. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/__init__.py +0 -0
  158. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/__init__.py +0 -0
  159. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/not_all_partition_assigned_exception.py +0 -0
  160. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/not_valid_kafka_message_exception.py +0 -0
  161. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/not_valid_partition_number_exception.py +0 -0
  162. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/topic_already_created_exception.py +0 -0
  163. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/exceptions/topic_not_found_exception.py +0 -0
  164. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/__init__.py +0 -0
  165. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/auto_create_topic_configuration.py +0 -0
  166. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/consumer_initial_offset_position.py +0 -0
  167. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/create_kafka_topic.py +0 -0
  168. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_connection_config.py +0 -0
  169. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_connection_credentials.py +0 -0
  170. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_connection_plain_text_credentials.py +0 -0
  171. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_connection_sasl_credentials.py +0 -0
  172. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_consumer_record.py +0 -0
  173. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_poll_record.py +0 -0
  174. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_supported_compression_type.py +0 -0
  175. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_supported_sasl_mechanisms.py +0 -0
  176. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/models/kafka_supported_security_protocols.py +0 -0
  177. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/services/__init__.py +0 -0
  178. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/services/async_kafka_producer.py +0 -0
  179. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/services/kafka_admin_test_client.py +0 -0
  180. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/domain/services/kafka_producer.py +0 -0
  181. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/__init__.py +0 -0
  182. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/__init__.py +0 -0
  183. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py +0 -0
  184. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/aiokafka_producer.py +0 -0
  185. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/rebalance/__init__.py +0 -0
  186. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py +0 -0
  187. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/translators/__init__.py +0 -0
  188. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/aiokafka/translators/consumer_initial_offset_position_translator.py +0 -0
  189. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/cdc/__init__.py +0 -0
  190. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/cdc/cdc_message.py +0 -0
  191. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/cdc/cdc_payload.py +0 -0
  192. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/cdc/cdc_schema.py +0 -0
  193. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/__init__.py +0 -0
  194. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/byte_deserializer.py +0 -0
  195. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/bytes_to_message_deserializer.py +0 -0
  196. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/__init__.py +0 -0
  197. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cannot_decode_cdc_message_exception.py +0 -0
  198. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cannot_restore_event_from_cdc_payload_exception.py +0 -0
  199. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_cdc_payload_deserializer.py +0 -0
  200. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_event_deserializer.py +0 -0
  201. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/json_byte_deserializer.py +0 -0
  202. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/deserializers/implementations/json_bytes_to_message_deserializer.py +0 -0
  203. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/interfaces/__init__.py +0 -0
  204. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/interfaces/async_connection_manager.py +0 -0
  205. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/interfaces/connection_manager.py +0 -0
  206. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/__init__.py +0 -0
  207. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/exception/consumer_interrupted_exception.py +0 -0
  208. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_test_client.py +0 -0
  209. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/translators/__init__.py +0 -0
  210. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/kafka_python/translators/consumer_initial_offset_position_translator.py +0 -0
  211. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/serializers/byte_serializer.py +0 -0
  212. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/serializers/implementations/cdc_record_bytes_to_event_serializer.py +0 -0
  213. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/serializers/implementations/json_byte_serializer.py +0 -0
  214. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/kafka/infrastructure/serializers/kafka_header_serializer.py +0 -0
  215. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/__init__.py +0 -0
  216. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/handler_fqn_not_found_exception.py +0 -0
  217. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/locator.py +0 -0
  218. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/message_fqn_not_found_exception.py +0 -0
  219. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/pypendency/__init__.py +0 -0
  220. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/pypendency/container_locator.py +0 -0
  221. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/pypendency/container_locator_resolution_configuration.py +0 -0
  222. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/pypendency/handler_not_found_exception.py +0 -0
  223. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/pypendency/handler_not_registered_exception.py +0 -0
  224. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/sync/__init__.py +0 -0
  225. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/sync/handler_already_registered_exception.py +0 -0
  226. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/sync/handler_not_registered_exception.py +0 -0
  227. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/locator/sync/instance_locator.py +0 -0
  228. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/message.py +0 -0
  229. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/metadata.py +0 -0
  230. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/middleware/__init__.py +0 -0
  231. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/middleware/middleware.py +0 -0
  232. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/middleware/middleware_chain_builder.py +0 -0
  233. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/py.typed +0 -0
  234. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/__init__.py +0 -0
  235. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/__init__.py +0 -0
  236. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/base_query_handler.py +0 -0
  237. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/middleware/__init__.py +0 -0
  238. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/middleware/base_handle_middleware.py +0 -0
  239. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/middleware/handle_middleware.py +0 -0
  240. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  241. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/query_bus.py +0 -0
  242. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/query_handler.py +0 -0
  243. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/self_process/__init__.py +0 -0
  244. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/asynchronous/self_process/self_process_query_bus.py +0 -0
  245. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/more_than_one_query_handler_related_exception.py +0 -0
  246. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/query.py +0 -0
  247. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/query_response.py +0 -0
  248. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/__init__.py +0 -0
  249. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/base_query_handler.py +0 -0
  250. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/middleware/__init__.py +0 -0
  251. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/middleware/base_handle_middleware.py +0 -0
  252. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/middleware/handle_middleware.py +0 -0
  253. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  254. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/query_bus.py +0 -0
  255. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/query_handler.py +0 -0
  256. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/self_process/__init__.py +0 -0
  257. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/self_process/self_process_query_bus.py +0 -0
  258. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/synced_async/__init__.py +0 -0
  259. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/query/synchronous/synced_async/synced_async_query_bus.py +0 -0
  260. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/queue/__init__.py +0 -0
  261. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/queue/in_memory/in_memory_multiqueue_repository.py +0 -0
  262. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/queue/in_memory/in_memory_queue_repository.py +0 -0
  263. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/queue/multiqueue_repository.py +0 -0
  264. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/queue/queue_repository.py +0 -0
  265. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/serializer/message_to_bytes_serializer.py +0 -0
  266. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/serializer/message_to_json_bytes_serializer.py +0 -0
  267. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/wrapper/__init__.py +0 -0
  268. {buz-2.19.0 → buz-2.21.0rc1}/src/buz/wrapper/async_to_sync.py +0 -0
  269. {buz-2.19.0 → buz-2.21.0rc1}/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.19.0
3
+ Version: 2.21.0rc1
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.19.0"
3
+ version = "2.21.0-rc1"
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 = [
@@ -8,3 +8,6 @@ class Event(Message):
8
8
  @classmethod
9
9
  def fqn(cls) -> str:
10
10
  return f"event.{super().fqn()}"
11
+
12
+ def partition_key(self) -> str:
13
+ return str(self.id)
@@ -73,6 +73,7 @@ class AsyncBuzKafkaEventBus(AsyncEventBus):
73
73
  message=event,
74
74
  headers=headers,
75
75
  topic=topic,
76
+ partition_key=event.partition_key(),
76
77
  )
77
78
  except Exception as exc:
78
79
  raise EventNotPublishedException(event) from exc
@@ -74,6 +74,7 @@ class BuzKafkaEventBus(EventBus):
74
74
  message=event,
75
75
  headers=headers,
76
76
  topic=topic,
77
+ partition_key=event.partition_key(),
77
78
  )
78
79
  except Exception as exc:
79
80
  raise EventNotPublishedException(event) from exc
@@ -11,10 +11,12 @@ class EventToOutboxRecordTranslator:
11
11
  payload.pop("id")
12
12
  payload.pop("created_at")
13
13
  payload.pop("metadata")
14
+ partition_key = event.partition_key()
14
15
  return OutboxRecord(
15
16
  event_id=UUID(event.id),
16
17
  event_fqn=event.fqn(),
17
18
  created_at=event.parsed_created_at(),
18
19
  event_payload=payload,
19
20
  event_metadata=dict(event.metadata),
21
+ partition_key=partition_key,
20
22
  )
@@ -1,7 +1,7 @@
1
+ from dataclasses import dataclass, fields
1
2
  from datetime import datetime
2
- from typing import Optional, Any, ClassVar
3
+ from typing import Any, ClassVar
3
4
  from uuid import UUID
4
- from dataclasses import dataclass, fields
5
5
 
6
6
 
7
7
  @dataclass
@@ -12,10 +12,11 @@ class OutboxRecord: # type: ignore[misc]
12
12
  event_fqn: str
13
13
  event_payload: dict[str, Any] # type: ignore[misc]
14
14
  created_at: datetime
15
- event_metadata: Optional[dict[str, Any]] = None
16
- delivered_at: Optional[datetime] = None
15
+ event_metadata: dict[str, Any] | None = None
16
+ delivered_at: datetime | None = None
17
17
  delivery_errors: int = 0
18
- delivery_paused_at: Optional[datetime] = None
18
+ delivery_paused_at: datetime | None = None
19
+ partition_key: str | None = None
19
20
 
20
21
  def parsed_created_at(self) -> str:
21
22
  return self.created_at.strftime(self.DATE_TIME_FORMAT)
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+
4
+ class ConsumerGroupNotFoundException(Exception):
5
+ def __init__(self, consumer_group: str) -> None:
6
+ super().__init__(f'The consumer group "{consumer_group}" has not been found')
@@ -65,3 +65,11 @@ class KafkaAdminClient(ConnectionManager, ABC):
65
65
  new_number_of_partitions: int,
66
66
  ) -> None:
67
67
  pass
68
+
69
+ @abstractmethod
70
+ def get_consumer_group_offsets(self, *, consumer_group: str, topic: str) -> dict[int, int]:
71
+ """
72
+ Get the committed offsets for a consumer group on a specific topic.
73
+ Returns a dictionary mapping partition numbers to their committed offsets.
74
+ """
75
+ pass
@@ -12,6 +12,7 @@ from kafka.admin.new_partitions import NewPartitions
12
12
  from kafka.errors import TopicAlreadyExistsError
13
13
  from kafka.structs import TopicPartition, OffsetAndTimestamp
14
14
 
15
+ from buz.kafka.domain.exceptions.consumer_group_not_found_exception import ConsumerGroupNotFoundException
15
16
  from buz.kafka.domain.exceptions.not_all_partition_assigned_exception import NotAllPartitionAssignedException
16
17
  from buz.kafka.domain.exceptions.not_valid_partition_number_exception import NotValidPartitionNumberException
17
18
  from buz.kafka.domain.exceptions.topic_already_created_exception import KafkaTopicsAlreadyCreatedException
@@ -400,3 +401,28 @@ class KafkaPythonAdminClient(KafkaAdminClient):
400
401
  related_consumer_groups.add(consumer_group)
401
402
 
402
403
  return related_consumer_groups
404
+
405
+ def get_consumer_group_offsets(self, *, consumer_group: str, topic: str) -> dict[int, int]:
406
+ self._logger.info(f'Getting consumer group offsets for group "{consumer_group}" on topic "{topic}"')
407
+
408
+ if not self.is_topic_created(topic):
409
+ raise TopicNotFoundException(topic_name=topic)
410
+
411
+ cluster_consumer_groups = self.get_cluster_consumer_groups()
412
+ if consumer_group not in cluster_consumer_groups:
413
+ raise ConsumerGroupNotFoundException(consumer_group=consumer_group)
414
+
415
+ partitions = self.get_number_of_partitions(topic)
416
+ topic_partitions = [TopicPartition(topic=topic, partition=partition) for partition in range(partitions)]
417
+
418
+ offsets_response = self._get_kafka_admin().list_consumer_group_offsets(
419
+ consumer_group, partitions=topic_partitions
420
+ )
421
+
422
+ # Build the result dictionary, filtering out partitions with no committed offset (-1)
423
+ result: dict[int, int] = {}
424
+ for topic_partition, offset_and_metadata in offsets_response.items():
425
+ if offset_and_metadata.offset >= 0:
426
+ result[topic_partition.partition] = offset_and_metadata.offset
427
+
428
+ return result
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Generic, Optional, TypeVar, cast
3
+ from typing import Generic, TypeVar, cast
4
4
 
5
5
  from kafka import KafkaProducer as KafkaPythonLibraryProducer
6
6
  from kafka.producer.future import FutureRecordMetadata
@@ -15,7 +15,7 @@ T = TypeVar("T")
15
15
 
16
16
 
17
17
  class KafkaPythonProducer(KafkaProducer, Generic[T]):
18
- __kafka_producer: Optional[KafkaPythonLibraryProducer] = None
18
+ __kafka_producer: KafkaPythonLibraryProducer | None = None
19
19
  __SEND_TIMEOUT_SECONDS = 5
20
20
 
21
21
  def __init__(
@@ -25,7 +25,7 @@ class KafkaPythonProducer(KafkaProducer, Generic[T]):
25
25
  byte_serializer: ByteSerializer[T],
26
26
  retries: int = 0,
27
27
  retry_backoff_ms: int = 100,
28
- compression_type: Optional[KafkaSupportedCompressionType] = None,
28
+ compression_type: KafkaSupportedCompressionType | None = None,
29
29
  ) -> None:
30
30
  self.__connection_config = connection_config
31
31
  self.__byte_serializer = byte_serializer
@@ -70,8 +70,8 @@ class KafkaPythonProducer(KafkaProducer, Generic[T]):
70
70
  *,
71
71
  topic: str,
72
72
  message: T,
73
- partition_key: Optional[str] = None,
74
- headers: Optional[dict[str, str]] = None,
73
+ partition_key: str | None = None,
74
+ headers: dict[str, str] | None = None,
75
75
  ) -> None:
76
76
  serialized_headers = self.__header_serializer.serialize(headers) if headers is not None else None
77
77
  kafka_producer = self._get_kafka_producer()
@@ -82,7 +82,7 @@ class KafkaPythonProducer(KafkaProducer, Generic[T]):
82
82
  topic=topic,
83
83
  value=self.__byte_serializer.serialize(message),
84
84
  headers=serialized_headers,
85
- key=partition_key,
85
+ key=partition_key.encode("utf-8") if partition_key is not None else None,
86
86
  ),
87
87
  )
88
88
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes