buz 2.14.3__tar.gz → 2.15.1__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.
- {buz-2.14.3 → buz-2.15.1}/PKG-INFO +1 -1
- {buz-2.14.3 → buz-2.15.1}/pyproject.toml +1 -1
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/subscribers_not_found_exception.py +6 -2
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/kombu_consumer.py +33 -10
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/__init__.py +2 -0
- buz-2.15.1/src/buz/event/middleware/base_async_consume_middleware.py +20 -0
- buz-2.15.1/src/buz/kafka/infrastructure/cdc/cdc_message.py +19 -0
- buz-2.14.3/src/buz/kafka/infrastructure/cdc/cdc_message.py → buz-2.15.1/src/buz/kafka/infrastructure/cdc/cdc_payload.py +0 -12
- buz-2.15.1/src/buz/kafka/infrastructure/cdc/cdc_schema.py +35 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_event_deserializer.py +8 -8
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/serializers/implementations/cdc_record_bytes_to_event_serializer.py +3 -1
- buz-2.15.1/src/buz/queue/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/LICENSE +0 -0
- {buz-2.14.3 → buz-2.15.1}/README.md +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/base_command_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/command_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/command_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/middleware/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/middleware/base_handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/middleware/handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/self_process/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/self_process/self_process_command_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/command.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/more_than_one_command_handler_related_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/base_command_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/command_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/command_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/middleware/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/middleware/base_handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/middleware/handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/self_process/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/self_process/self_process_command_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/synced_async/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/async_consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/async_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/async_subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/async_worker.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/base_async_subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/base_subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/dead_letter_queue/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/dead_letter_queue/dlq_criteria.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/dead_letter_queue/dlq_record.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/dead_letter_queue/dlq_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/event.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/event_not_published_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/event_restore_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/term_signal_interruption_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/exceptions/worker_execution_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/consume_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/kafka_on_fail_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/topic_and_subscription_group_per_subscriber_kafka_consumer_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/exceptions/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/exceptions/kafka_event_bus_config_not_valid_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/kafka_event_async_subscriber_executor.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/kafka_event_sync_subscriber_executor.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/publish_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/topic_per_event_kafka_publish_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/allowed_kombu_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/consume_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/consume_strategy/queue_per_subscriber_consume_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/kombu_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/publish_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/publish_strategy/fanout_exchange_per_event_publish_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/retry_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/retry_strategy/simple_publish_retry_policy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/models/consuming_task.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/queue/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/meta_base_subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/meta_subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_consume_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_publish_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/base_consume_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/base_publish_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/consume_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/consume_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/exceptions/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/publish_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/publish_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/async_self_process_execution_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/cyclic_iterator_execution_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/execution_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/self_process_execution_strategy.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/consume_retrier.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/consumed_event_retry.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/consumed_event_retry_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/max_retries_consume_retrier.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/max_retries_negative_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/retry/reject_callback.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/subscriber.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/sync/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/sync/sync_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/fqn_to_event_mapper.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/deliverable_records_outbox_criteria_factory.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria_factory.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_sorting_criteria.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_finder/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_finder/outbox_record_stream_finder.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_finder/polling_outbox_record_stream_finder.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_to_event_translator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/abstract_outbox_record_validator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_size_not_allowed_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/transactional_outbox_event_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/transactional_outbox_worker.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/event/worker.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/not_all_partition_assigned_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/not_valid_kafka_message_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/not_valid_partition_number_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/topic_already_created_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/exceptions/topic_not_found_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/auto_create_topic_configuration.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/consumer_initial_offset_position.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/create_kafka_topic.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_connection_config.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_connection_credentials.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_connection_plain_text_credentials.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_connection_sasl_credentials.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_consumer_record.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_poll_record.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_supported_compression_type.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_supported_sasl_mechanisms.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/models/kafka_supported_security_protocols.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/services/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/services/async_kafka_producer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/services/kafka_admin_client.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/services/kafka_admin_test_client.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/domain/services/kafka_producer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/aiokafka_producer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/rebalance/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/translators/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/aiokafka/translators/consumer_initial_offset_position_translator.py +0 -0
- {buz-2.14.3/src/buz/kafka/infrastructure/deserializers → buz-2.15.1/src/buz/kafka/infrastructure/cdc}/__init__.py +0 -0
- {buz-2.14.3/src/buz/kafka/infrastructure/deserializers/implementations → buz-2.15.1/src/buz/kafka/infrastructure/deserializers}/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/byte_deserializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/bytes_to_message_deserializer.py +0 -0
- {buz-2.14.3/src/buz/kafka/infrastructure/interfaces → buz-2.15.1/src/buz/kafka/infrastructure/deserializers/implementations}/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/not_valid_cdc_message_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/implementations/json_byte_deserializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/deserializers/implementations/json_bytes_to_message_deserializer.py +0 -0
- {buz-2.14.3/src/buz/kafka/infrastructure/kafka_python → buz-2.15.1/src/buz/kafka/infrastructure/interfaces}/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/interfaces/async_connection_manager.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/interfaces/connection_manager.py +0 -0
- {buz-2.14.3/src/buz/kafka/infrastructure/kafka_python/translators → buz-2.15.1/src/buz/kafka/infrastructure/kafka_python}/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/kafka_python/exception/consumer_interrupted_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_client.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_test_client.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/kafka_python/kafka_python_producer.py +0 -0
- {buz-2.14.3/src/buz/queue → buz-2.15.1/src/buz/kafka/infrastructure/kafka_python/translators}/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/kafka_python/translators/consumer_initial_offset_position_translator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/serializers/byte_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/serializers/implementations/json_byte_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/kafka/infrastructure/serializers/kafka_header_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/handler_fqn_not_found_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/locator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/message_fqn_not_found_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/pypendency/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/pypendency/container_locator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/pypendency/container_locator_resolution_configuration.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/pypendency/handler_not_found_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/pypendency/handler_not_registered_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/sync/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/sync/handler_already_registered_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/sync/handler_not_registered_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/locator/sync/instance_locator.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/message.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/middleware/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/middleware/middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/middleware/middleware_chain_builder.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/py.typed +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/base_query_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/middleware/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/middleware/base_handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/middleware/handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/query_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/query_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/self_process/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/asynchronous/self_process/self_process_query_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/more_than_one_query_handler_related_exception.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/query.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/query_response.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/base_query_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/middleware/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/middleware/base_handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/middleware/handle_middleware.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/query_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/query_handler.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/self_process/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/self_process/self_process_query_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/synced_async/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/query/synchronous/synced_async/synced_async_query_bus.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/queue/in_memory/in_memory_multiqueue_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/queue/in_memory/in_memory_queue_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/queue/multiqueue_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/queue/queue_repository.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/serializer/message_to_bytes_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/serializer/message_to_json_bytes_serializer.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/wrapper/__init__.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/wrapper/async_to_sync.py +0 -0
- {buz-2.14.3 → buz-2.15.1}/src/buz/wrapper/event_loop.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "buz"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.15.1"
|
|
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>"]
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
from typing import Optional, Sequence
|
|
2
2
|
|
|
3
|
-
from buz.event import Event
|
|
3
|
+
from buz.event import Event
|
|
4
|
+
from buz.event.meta_subscriber import MetaSubscriber
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class SubscribersNotFoundException(Exception):
|
|
7
8
|
def __init__(
|
|
8
|
-
self,
|
|
9
|
+
self,
|
|
10
|
+
event: Event,
|
|
11
|
+
allowed_subscriber_fqns: set[str],
|
|
12
|
+
event_subscribers: Optional[Sequence[MetaSubscriber]] = None,
|
|
9
13
|
) -> None:
|
|
10
14
|
self.event = event
|
|
11
15
|
self.allowed_subscriber_fqns = allowed_subscriber_fqns
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
from logging import Logger
|
|
2
3
|
from typing import Optional, Callable, cast
|
|
3
4
|
|
|
@@ -5,11 +6,14 @@ from kombu import Connection, Queue, Consumer as MessageConsumer, Message
|
|
|
5
6
|
from kombu.mixins import ConsumerMixin
|
|
6
7
|
from kombu.transport.pyamqp import Channel
|
|
7
8
|
|
|
8
|
-
from buz.event import Event
|
|
9
|
+
from buz.event import Event
|
|
10
|
+
from buz.event.async_subscriber import AsyncSubscriber
|
|
9
11
|
from buz.event.infrastructure.kombu.allowed_kombu_serializer import AllowedKombuSerializer
|
|
10
12
|
from buz.event.exceptions.term_signal_interruption_exception import TermSignalInterruptionException
|
|
13
|
+
from buz.event.meta_subscriber import MetaSubscriber
|
|
11
14
|
from buz.event.middleware import ConsumeMiddleware, ConsumeMiddlewareChainResolver
|
|
12
15
|
from buz.event.middleware.exceptions.event_already_in_progress_exception import EventAlreadyInProgressException
|
|
16
|
+
from buz.event.subscriber import Subscriber
|
|
13
17
|
from buz.locator import Locator
|
|
14
18
|
from buz.event.consumer import Consumer
|
|
15
19
|
from buz.event.exceptions.event_restore_exception import EventRestoreException
|
|
@@ -27,7 +31,7 @@ class KombuConsumer(ConsumerMixin, Consumer):
|
|
|
27
31
|
queues_mapping: QueueToSubscriberFqnMapping,
|
|
28
32
|
serializer: AllowedKombuSerializer,
|
|
29
33
|
prefetch_count: int,
|
|
30
|
-
locator: Locator[Event,
|
|
34
|
+
locator: Locator[Event, MetaSubscriber],
|
|
31
35
|
logger: Logger,
|
|
32
36
|
consume_retrier: Optional[ConsumeRetrier] = None,
|
|
33
37
|
reject_callback: Optional[RejectCallback] = None,
|
|
@@ -83,7 +87,7 @@ class KombuConsumer(ConsumerMixin, Consumer):
|
|
|
83
87
|
except Exception as exc:
|
|
84
88
|
raise EventRestoreException(body, str(message)) from exc
|
|
85
89
|
|
|
86
|
-
def __subscribers(self, event: Event, allowed_subscriber_fqns: set[str]) -> list[
|
|
90
|
+
def __subscribers(self, event: Event, allowed_subscriber_fqns: set[str]) -> list[MetaSubscriber]:
|
|
87
91
|
event_subscribers = None
|
|
88
92
|
try:
|
|
89
93
|
event_subscribers = self.__locator.get(event)
|
|
@@ -97,22 +101,41 @@ class KombuConsumer(ConsumerMixin, Consumer):
|
|
|
97
101
|
except Exception as exc:
|
|
98
102
|
raise SubscribersNotFoundException(event, allowed_subscriber_fqns, event_subscribers) from exc
|
|
99
103
|
|
|
100
|
-
def __consume_event(self, message: Message, event: Event,
|
|
104
|
+
def __consume_event(self, message: Message, event: Event, meta_subscribers: list[MetaSubscriber]) -> None:
|
|
101
105
|
try:
|
|
102
106
|
if self.should_stop is True:
|
|
103
107
|
raise TermSignalInterruptionException()
|
|
104
108
|
|
|
105
|
-
for
|
|
109
|
+
for meta_subscriber in meta_subscribers:
|
|
110
|
+
# The problem here is that the chain resolver works with syncsubscribers, an asyncsubscriber would require of a async function,
|
|
111
|
+
# 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
|
+
subscriber = cast(Subscriber, meta_subscriber)
|
|
106
113
|
self.__consume_middleware_chain_resolver.resolve(event, subscriber, self.__perform_consume)
|
|
107
114
|
message.ack()
|
|
108
115
|
except Exception as exc:
|
|
109
|
-
self.__on_consume_exception(message, event,
|
|
116
|
+
self.__on_consume_exception(message, event, meta_subscribers, exc)
|
|
110
117
|
|
|
111
|
-
def __perform_consume(self, event: Event, subscriber:
|
|
112
|
-
subscriber
|
|
118
|
+
def __perform_consume(self, event: Event, subscriber: MetaSubscriber) -> None:
|
|
119
|
+
if isinstance(subscriber, AsyncSubscriber):
|
|
120
|
+
self.__get_or_create_event_loop().run_until_complete(subscriber.consume(event))
|
|
121
|
+
return
|
|
122
|
+
|
|
123
|
+
if isinstance(subscriber, Subscriber):
|
|
124
|
+
return subscriber.consume(event)
|
|
125
|
+
|
|
126
|
+
raise TypeError(f"Subscriber {subscriber} is not an instance of Subscriber or AsyncSubscriber")
|
|
127
|
+
|
|
128
|
+
def __get_or_create_event_loop(self) -> asyncio.AbstractEventLoop:
|
|
129
|
+
try:
|
|
130
|
+
return asyncio.get_event_loop()
|
|
131
|
+
except RuntimeError:
|
|
132
|
+
self.__logger.warning("The current thread does not have an event loop attached. Creating new event loop.")
|
|
133
|
+
event_loop = asyncio.new_event_loop()
|
|
134
|
+
asyncio.set_event_loop(event_loop)
|
|
135
|
+
return event_loop
|
|
113
136
|
|
|
114
137
|
def __on_consume_exception(
|
|
115
|
-
self, message: Message, event: Event, subscribers: list[
|
|
138
|
+
self, message: Message, event: Event, subscribers: list[MetaSubscriber], exception: Exception
|
|
116
139
|
) -> None:
|
|
117
140
|
if isinstance(exception, EventAlreadyInProgressException) or isinstance(
|
|
118
141
|
exception, TermSignalInterruptionException
|
|
@@ -139,7 +162,7 @@ class KombuConsumer(ConsumerMixin, Consumer):
|
|
|
139
162
|
self.__reject_message(message, event, subscribers, exception)
|
|
140
163
|
|
|
141
164
|
def __reject_message(
|
|
142
|
-
self, message: Message, event: Event, subscribers: list[
|
|
165
|
+
self, message: Message, event: Event, subscribers: list[MetaSubscriber], exception: Exception
|
|
143
166
|
) -> None:
|
|
144
167
|
message.reject()
|
|
145
168
|
if self.__reject_callback is not None:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from buz.event.middleware.base_async_consume_middleware import BaseAsyncConsumeMiddleware
|
|
1
2
|
from buz.event.middleware.publish_middleware import PublishMiddleware, PublishCallable
|
|
2
3
|
from buz.event.middleware.base_publish_middleware import BasePublishMiddleware
|
|
3
4
|
from buz.event.middleware.publish_middleware_chain_resolver import PublishMiddlewareChainResolver
|
|
@@ -14,4 +15,5 @@ __all__ = [
|
|
|
14
15
|
"ConsumeCallable",
|
|
15
16
|
"BaseConsumeMiddleware",
|
|
16
17
|
"ConsumeMiddlewareChainResolver",
|
|
18
|
+
"BaseAsyncConsumeMiddleware",
|
|
17
19
|
]
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from buz.kafka.infrastructure.cdc.cdc_payload import CDCPayload
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass(frozen=True)
|
|
8
|
+
class CDCMessage:
|
|
9
|
+
payload: CDCPayload
|
|
10
|
+
schema: Optional[dict]
|
|
11
|
+
|
|
12
|
+
def validate(self) -> None:
|
|
13
|
+
if not isinstance(self.payload, CDCPayload):
|
|
14
|
+
raise ValueError("The payload value is not a valid value")
|
|
15
|
+
if self.schema is not None and not isinstance(self.schema, dict):
|
|
16
|
+
raise ValueError("The schema value is not a valid value")
|
|
17
|
+
|
|
18
|
+
def __post_init__(self) -> None:
|
|
19
|
+
self.validate()
|
|
@@ -22,15 +22,3 @@ class CDCPayload:
|
|
|
22
22
|
|
|
23
23
|
def __post_init__(self) -> None:
|
|
24
24
|
self.validate()
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@dataclass(frozen=True)
|
|
28
|
-
class CDCMessage:
|
|
29
|
-
payload: CDCPayload
|
|
30
|
-
|
|
31
|
-
def validate(self) -> None:
|
|
32
|
-
if not isinstance(self.payload, CDCPayload):
|
|
33
|
-
raise ValueError("The payload value is not a valid value")
|
|
34
|
-
|
|
35
|
-
def __post_init__(self) -> None:
|
|
36
|
-
self.validate()
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from buz.message import Message
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def generate_cdc_schema(message: Message) -> dict:
|
|
5
|
+
return {
|
|
6
|
+
"type": "struct",
|
|
7
|
+
"fields": [
|
|
8
|
+
{
|
|
9
|
+
"type": "string",
|
|
10
|
+
"optional": False,
|
|
11
|
+
"field": "payload",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "string",
|
|
15
|
+
"optional": False,
|
|
16
|
+
"name": "io.debezium.data.Uuid",
|
|
17
|
+
"version": 1,
|
|
18
|
+
"field": "event_id",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "string",
|
|
22
|
+
"optional": False,
|
|
23
|
+
"field": "event_fqn",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "string",
|
|
27
|
+
"optional": False,
|
|
28
|
+
"name": "io.debezium.time.ZonedTimestamp",
|
|
29
|
+
"version": 1,
|
|
30
|
+
"field": "created_at",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
"optional": False,
|
|
34
|
+
"name": f"{message.fqn()}.Value",
|
|
35
|
+
}
|
|
@@ -7,7 +7,7 @@ import orjson
|
|
|
7
7
|
from dacite import from_dict
|
|
8
8
|
|
|
9
9
|
from buz.event import Event
|
|
10
|
-
from buz.kafka.infrastructure.cdc.cdc_message import
|
|
10
|
+
from buz.kafka.infrastructure.cdc.cdc_message import CDCPayload
|
|
11
11
|
from buz.kafka.infrastructure.deserializers.bytes_to_message_deserializer import BytesToMessageDeserializer
|
|
12
12
|
from buz.kafka.infrastructure.deserializers.implementations.cdc.not_valid_cdc_message_exception import (
|
|
13
13
|
NotValidCDCMessageException,
|
|
@@ -25,11 +25,11 @@ class CDCRecordBytesToEventDeserializer(BytesToMessageDeserializer[Event], Gener
|
|
|
25
25
|
def deserialize(self, data: bytes) -> T:
|
|
26
26
|
decoded_string = data.decode(self.__STRING_ENCODING)
|
|
27
27
|
try:
|
|
28
|
-
|
|
28
|
+
cdc_payload = self.__get_outbox_record_as_dict(decoded_string)
|
|
29
29
|
return self.__event_class.restore(
|
|
30
|
-
id=
|
|
31
|
-
created_at=self.__get_created_at_in_event_format(
|
|
32
|
-
**orjson.loads(
|
|
30
|
+
id=cdc_payload.event_id,
|
|
31
|
+
created_at=self.__get_created_at_in_event_format(cdc_payload.created_at),
|
|
32
|
+
**orjson.loads(cdc_payload.payload),
|
|
33
33
|
)
|
|
34
34
|
except Exception as exception:
|
|
35
35
|
raise NotValidCDCMessageException(decoded_string, exception) from exception
|
|
@@ -38,12 +38,12 @@ class CDCRecordBytesToEventDeserializer(BytesToMessageDeserializer[Event], Gener
|
|
|
38
38
|
created_at_datetime = datetime.strptime(cdc_payload_created_at, CDCPayload.DATE_TIME_FORMAT)
|
|
39
39
|
return created_at_datetime.strftime(Event.DATE_TIME_FORMAT)
|
|
40
40
|
|
|
41
|
-
def __get_outbox_record_as_dict(self, decoded_string: str) ->
|
|
41
|
+
def __get_outbox_record_as_dict(self, decoded_string: str) -> CDCPayload:
|
|
42
42
|
decoded_record: dict = orjson.loads(decoded_string)
|
|
43
43
|
|
|
44
44
|
payload = decoded_record.get("payload")
|
|
45
|
+
|
|
45
46
|
if not isinstance(payload, dict):
|
|
46
47
|
raise ValueError("The provided payload value is not valid")
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
return cdc_message
|
|
49
|
+
return from_dict(CDCPayload, payload)
|
|
@@ -5,6 +5,7 @@ from datetime import datetime
|
|
|
5
5
|
|
|
6
6
|
from buz.event import Event
|
|
7
7
|
from buz.kafka.infrastructure.cdc.cdc_message import CDCMessage, CDCPayload
|
|
8
|
+
from buz.kafka.infrastructure.cdc.cdc_schema import generate_cdc_schema
|
|
8
9
|
from buz.kafka.infrastructure.serializers.byte_serializer import ByteSerializer
|
|
9
10
|
from buz.kafka.infrastructure.serializers.implementations.json_byte_serializer import JSONByteSerializer
|
|
10
11
|
|
|
@@ -20,7 +21,8 @@ class CDCRecordBytesToEventSerializer(ByteSerializer):
|
|
|
20
21
|
created_at=self.__adapt_created_to_cdc_format(data.created_at),
|
|
21
22
|
event_fqn=data.fqn(),
|
|
22
23
|
payload=self.__serialize_payload(data),
|
|
23
|
-
)
|
|
24
|
+
),
|
|
25
|
+
schema=generate_cdc_schema(data),
|
|
24
26
|
)
|
|
25
27
|
return self.__json_serializer.serialize(asdict(cdc_message))
|
|
26
28
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/command/asynchronous/self_process/self_process_command_bus.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/command/more_than_one_command_handler_related_exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/self_process/self_process_command_bus.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py
RENAMED
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py
RENAMED
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buz-2.14.3 → buz-2.15.1}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|