faststream 0.7.2__tar.gz → 0.7.4__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.
- {faststream-0.7.2 → faststream-0.7.4}/PKG-INFO +10 -6
- {faststream-0.7.2 → faststream-0.7.4}/README.md +5 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/application.py +6 -6
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/docs.py +1 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/multiprocess.py +7 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/utils.py +3 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/utils/errors.py +8 -4
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/context/repository.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/call_wrapper.py +2 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/_compat.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/get_dependant.py +23 -3
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/router.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/testing/broker.py +14 -6
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/utils/functions.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/app.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/fastapi/__init__.py +10 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/response.py +21 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/testing.py +11 -7
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/fastapi/__init__.py +10 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/response.py +21 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/testing.py +10 -5
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/broker.py +6 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/fastapi/__init__.py +10 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/testing.py +4 -4
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/broker.py +44 -8
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/fastapi/__init__.py +10 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/testing.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/__init__.py +2 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/broker/broker.py +2 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/fastapi/__init__.py +10 -0
- faststream-0.7.4/faststream/rabbit/security.py +68 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/testing.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/utils.py +20 -7
- faststream-0.7.4/faststream/redis/_compat.py +9 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/annotations.py +2 -2
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/broker.py +4 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/configs/state.py +26 -11
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/fastapi/__init__.py +10 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/fastapi/fastapi.py +1 -1
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/types.py +8 -3
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/testing.py +58 -33
- {faststream-0.7.2 → faststream-0.7.4}/faststream/response/response.py +26 -0
- {faststream-0.7.2 → faststream-0.7.4}/pyproject.toml +6 -6
- faststream-0.7.2/faststream/rabbit/security.py +0 -31
- {faststream-0.7.2 → faststream-0.7.4}/LICENSE +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/__about__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/__main__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/_compat.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/basic_types.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/broker/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/broker/pub_base.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/dto.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/main.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/options.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/asgi_multiprocess.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/basereload.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/supervisors/watchfiles.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/utils/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/utils/imports.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/utils/logs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/cli/utils/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/configs/endpoint.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/configs/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/constants.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/context/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/context/context_type.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/context/resolve.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/di/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/di/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/publisher/proto.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/call_item.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/mixins.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/supervisor.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/subscriber/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/endpoint/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/context.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/fastapi/route.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/formatter.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/logger_proxy.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/params_storage.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/logger/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/middlewares.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/proto.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/testing/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/testing/app.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/testing/ast.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/types.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/utils/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/utils/data.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/utils/nuid.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/_internal/utils/path.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/app.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/asyncapi/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/asyncapi/docs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/asyncapi/route.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/asyncapi/try_it_out.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/factories/ping.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/handlers.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/params.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/request.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/response.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/types.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/asgi/websocket.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/cli.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/broker/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/fastapi/fastapi.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/helpers/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/helpers/admin.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/helpers/client.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/helpers/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/schemas/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/schemas/partition.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/confluent/subscriber/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/context.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/exceptions.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/broker/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/exceptions.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/fastapi/fastapi.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/helpers/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/helpers/rebalance_listener.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/schemas/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/schemas/params.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/kafka/subscriber/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/message/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/message/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/message/source_type.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/message/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/acknowledgement/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/acknowledgement/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/acknowledgement/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/exception.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/middlewares/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/fastapi/fastapi.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/path.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/response.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/mqtt/subscriber/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/broker/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/fastapi/fastapi.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/helpers/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/helpers/bucket_declarer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/helpers/obj_storage_declarer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/helpers/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/helpers/stream_builder.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/response.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/js_stream.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/kv_watch.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/obj_watch.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/pull_sub.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/schemas/schedule.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/adapters.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/basic.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/core_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/key_value_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/object_storage_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/stream_basic.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/stream_pull_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/nats/subscriber/usecases/stream_push_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/baggage.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/consts.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/params/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/params/no_cast.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/params/params.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/consts.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/container.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/manager.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/prometheus/types.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/py.typed +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/annotations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/configs/base.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/fastapi/fastapi.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/helpers/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/helpers/channel_manager.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/helpers/declarer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/helpers/state.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/parser.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/options.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/response.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/schemas/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/schemas/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/schemas/constants.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/schemas/exchange.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/schemas/queue.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/subscriber/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/rabbit/types.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/cluster_broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/logging.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/registrator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/router.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/broker/sentinel_broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/configs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/configs/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/exceptions.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/opentelemetry/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/opentelemetry/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/opentelemetry/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/parser/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/parser/binary.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/parser/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/parser/parsers.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/prometheus/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/prometheus/middleware.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/prometheus/provider.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/fake.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/producer.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/publisher/usecase.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/response.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/list_sub.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/proto.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/pub_sub.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/schemas/stream_sub.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/config.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/usecases/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/usecases/basic.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/usecases/channel_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/usecases/list_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/redis/subscriber/usecases/stream_subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/response/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/response/publish_type.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/response/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/security.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/factory.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/site.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/generate.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/amqp/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/amqp/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/amqp/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/http/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/http/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/kafka/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/kafka/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/kafka/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/main/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/main/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/main/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/mqtt/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/mqtt/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/mqtt/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/nats/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/nats/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/nats/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/redis/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/redis/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/redis/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/sqs/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/sqs/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/bindings/sqs/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/channels.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/components.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/contact.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/docs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/info.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/license.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/operations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/schema.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/servers.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/tag.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v2_6_0/schema/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/generate.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/amqp/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/amqp/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/amqp/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/http.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/kafka.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/main/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/main/channel.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/main/operation.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/mqtt.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/nats.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/redis.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/bindings/sqs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/channels.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/components.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/contact.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/docs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/info.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/license.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/message.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/operations.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/schema.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/servers.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/tag.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/asyncapi/v3_0_0/schema/utils.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/base/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/base/generator.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/base/info.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/base/schema.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/base/specification.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/amqp.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/http.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/kafka.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/main.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/mqtt.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/nats.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/redis.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/bindings/sqs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/broker.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/extra/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/extra/contact.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/extra/external_docs.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/extra/license.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/extra/tag.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/message/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/message/model.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/operation/__init__.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/operation/model.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/publisher.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/specification/schema/subscriber.py +0 -0
- {faststream-0.7.2 → faststream-0.7.4}/faststream/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: faststream
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Summary: FastStream: the simplest way to work with a messaging queues
|
|
5
5
|
Keywords: rabbitmq,kafka,nats,redis,mqtt,asyncapi,framework,message brokers
|
|
6
6
|
Author: AG2AI, Nikita Pastukhov
|
|
@@ -37,17 +37,17 @@ Classifier: Framework :: Pydantic :: 2
|
|
|
37
37
|
Requires-Dist: fast-depends[pydantic]>=3.0.0
|
|
38
38
|
Requires-Dist: typing-extensions>=4.12.0
|
|
39
39
|
Requires-Dist: anyio>=4.0,<5
|
|
40
|
-
Requires-Dist: typer>=0.9,!=0.12,<=0.
|
|
40
|
+
Requires-Dist: typer>=0.9,!=0.12,<=0.27.1 ; extra == 'cli'
|
|
41
41
|
Requires-Dist: watchfiles>=0.15.0,<1.2.0 ; extra == 'cli'
|
|
42
42
|
Requires-Dist: confluent-kafka>=2,!=2.8.1,<3 ; python_full_version < '3.13' and extra == 'confluent'
|
|
43
43
|
Requires-Dist: confluent-kafka>=2.6,!=2.8.1,<3 ; python_full_version >= '3.13' and extra == 'confluent'
|
|
44
44
|
Requires-Dist: aiokafka>=0.9,<0.15 ; extra == 'kafka'
|
|
45
|
-
Requires-Dist: zmqtt>=0.0.
|
|
45
|
+
Requires-Dist: zmqtt>=0.1.0,<0.2.0 ; extra == 'mqtt'
|
|
46
46
|
Requires-Dist: nats-py>=2.12.0,<=3.0.0 ; extra == 'nats'
|
|
47
47
|
Requires-Dist: opentelemetry-sdk>=1.24.0,<2.0.0 ; extra == 'otel'
|
|
48
48
|
Requires-Dist: prometheus-client>=0.20.0,<0.30.0 ; extra == 'prometheus'
|
|
49
|
-
Requires-Dist: aio-pika>=9,<
|
|
50
|
-
Requires-Dist: redis>=5.0.0,<
|
|
49
|
+
Requires-Dist: aio-pika>=9,<11 ; extra == 'rabbit'
|
|
50
|
+
Requires-Dist: redis>=5.0.0,<9.0.0 ; extra == 'redis'
|
|
51
51
|
Requires-Python: >=3.10
|
|
52
52
|
Project-URL: Homepage, https://faststream.ag2.ai/latest/
|
|
53
53
|
Project-URL: Documentation, https://faststream.ag2.ai/latest/getting-started/
|
|
@@ -438,7 +438,11 @@ if __name__ == "__main__":
|
|
|
438
438
|
web.run_app(app)
|
|
439
439
|
```
|
|
440
440
|
|
|
441
|
-
### **FastAPI** Plugin
|
|
441
|
+
### **FastAPI** Plugin (deprecated)
|
|
442
|
+
|
|
443
|
+
The integration has been moved to the
|
|
444
|
+
**[faststream_fastapi](https://github.com/faststream-community/faststream_fastapi)**
|
|
445
|
+
package and will be removed in 1.0.0 version.
|
|
442
446
|
|
|
443
447
|
Also, **FastStream** can be used as part of **FastAPI**.
|
|
444
448
|
|
|
@@ -371,7 +371,11 @@ if __name__ == "__main__":
|
|
|
371
371
|
web.run_app(app)
|
|
372
372
|
```
|
|
373
373
|
|
|
374
|
-
### **FastAPI** Plugin
|
|
374
|
+
### **FastAPI** Plugin (deprecated)
|
|
375
|
+
|
|
376
|
+
The integration has been moved to the
|
|
377
|
+
**[faststream_fastapi](https://github.com/faststream-community/faststream_fastapi)**
|
|
378
|
+
package and will be removed in 1.0.0 version.
|
|
375
379
|
|
|
376
380
|
Also, **FastStream** can be used as part of **FastAPI**.
|
|
377
381
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from abc import abstractmethod
|
|
3
|
-
from collections.abc import
|
|
3
|
+
from collections.abc import AsyncGenerator, Callable, Sequence
|
|
4
4
|
from contextlib import asynccontextmanager
|
|
5
5
|
from typing import TYPE_CHECKING, Any, Optional, TypeVar
|
|
6
6
|
|
|
@@ -32,7 +32,7 @@ try:
|
|
|
32
32
|
from faststream.exceptions import StartupValidationError
|
|
33
33
|
|
|
34
34
|
@asynccontextmanager
|
|
35
|
-
async def catch_startup_validation_error() ->
|
|
35
|
+
async def catch_startup_validation_error() -> AsyncGenerator[None, None]:
|
|
36
36
|
try:
|
|
37
37
|
yield
|
|
38
38
|
except PValidation as e:
|
|
@@ -216,7 +216,7 @@ class Application(StartAbleApplication):
|
|
|
216
216
|
async def _start_hooks_context(
|
|
217
217
|
self,
|
|
218
218
|
**run_extra_options: "SettingField",
|
|
219
|
-
) ->
|
|
219
|
+
) -> AsyncGenerator[None, None]:
|
|
220
220
|
async with catch_startup_validation_error():
|
|
221
221
|
for func in self._on_startup_calling:
|
|
222
222
|
await func(**run_extra_options)
|
|
@@ -230,7 +230,7 @@ class Application(StartAbleApplication):
|
|
|
230
230
|
async def _startup_logging(
|
|
231
231
|
self,
|
|
232
232
|
log_level: int = logging.INFO,
|
|
233
|
-
) ->
|
|
233
|
+
) -> AsyncGenerator[None, None]:
|
|
234
234
|
"""Separated startup logging."""
|
|
235
235
|
self._log(
|
|
236
236
|
log_level,
|
|
@@ -260,7 +260,7 @@ class Application(StartAbleApplication):
|
|
|
260
260
|
await broker.stop()
|
|
261
261
|
|
|
262
262
|
@asynccontextmanager
|
|
263
|
-
async def _shutdown_hooks_context(self) ->
|
|
263
|
+
async def _shutdown_hooks_context(self) -> AsyncGenerator[None, None]:
|
|
264
264
|
for func in self._on_shutdown_calling:
|
|
265
265
|
await func()
|
|
266
266
|
|
|
@@ -273,7 +273,7 @@ class Application(StartAbleApplication):
|
|
|
273
273
|
async def _shutdown_logging(
|
|
274
274
|
self,
|
|
275
275
|
log_level: int = logging.INFO,
|
|
276
|
-
) ->
|
|
276
|
+
) -> AsyncGenerator[None, None]:
|
|
277
277
|
"""Separated startup logging."""
|
|
278
278
|
self._log(log_level, "FastStream app shutting down...")
|
|
279
279
|
|
|
@@ -200,7 +200,7 @@ def _parse_and_serve(args: RunArgs) -> None:
|
|
|
200
200
|
data = json_dumps(schema)
|
|
201
201
|
|
|
202
202
|
else:
|
|
203
|
-
msg = f"Unknown extension given - {args.app}; Please provide app in format [python_module:
|
|
203
|
+
msg = f"Unknown extension given - {args.app}; Please provide app in format [python_module:FastStream] or [asyncapi.yaml/.json] - path to your application or documentation"
|
|
204
204
|
raise ValueError(msg)
|
|
205
205
|
|
|
206
206
|
for schema in (SchemaV3, SchemaV2_6):
|
|
@@ -4,6 +4,8 @@ from typing import TYPE_CHECKING
|
|
|
4
4
|
from faststream._internal.cli.supervisors.basereload import BaseReload
|
|
5
5
|
from faststream._internal.logger import logger
|
|
6
6
|
|
|
7
|
+
SIGKILL: int | None = getattr(signal, "SIGKILL", None)
|
|
8
|
+
|
|
7
9
|
if TYPE_CHECKING:
|
|
8
10
|
from multiprocessing.context import SpawnProcess
|
|
9
11
|
|
|
@@ -50,7 +52,11 @@ class Multiprocess(BaseReload):
|
|
|
50
52
|
continue
|
|
51
53
|
|
|
52
54
|
log_msg = "Worker %s (pid:%s) exited with code %s."
|
|
53
|
-
if
|
|
55
|
+
if (
|
|
56
|
+
SIGKILL is not None
|
|
57
|
+
and process.exitcode
|
|
58
|
+
and abs(process.exitcode) == SIGKILL
|
|
59
|
+
):
|
|
54
60
|
log_msg += " Perhaps out of memory?"
|
|
55
61
|
logger.error(log_msg, worker_id, process.pid, process.exitcode)
|
|
56
62
|
|
|
@@ -25,7 +25,9 @@ HANDLED_SIGNALS: tuple[int, ...] = (
|
|
|
25
25
|
)
|
|
26
26
|
if IS_WINDOWS: # pragma: py-not-win32
|
|
27
27
|
# Windows signal 21. Sent by Ctrl+Break.
|
|
28
|
-
|
|
28
|
+
sigbreak: int | None = getattr(signal, "SIGBREAK", None)
|
|
29
|
+
if sigbreak is not None:
|
|
30
|
+
HANDLED_SIGNALS += (sigbreak,)
|
|
29
31
|
|
|
30
32
|
|
|
31
33
|
def set_exit(
|
|
@@ -2,10 +2,14 @@ from faststream.exceptions import StartupValidationError
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
def draw_startup_errors(startup_exc: StartupValidationError) -> None:
|
|
5
|
-
from click.exceptions import BadParameter, MissingParameter
|
|
6
5
|
from typer.core import TyperOption
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
try:
|
|
8
|
+
from typer._click import exceptions as click_exceptions
|
|
9
|
+
except ImportError: # pragma: no cover - Typer < 0.26
|
|
10
|
+
from click import exceptions as click_exceptions # type: ignore[no-redef]
|
|
11
|
+
|
|
12
|
+
def draw_error(click_exc: click_exceptions.ClickException) -> None:
|
|
9
13
|
try:
|
|
10
14
|
from typer import rich_utils
|
|
11
15
|
|
|
@@ -15,7 +19,7 @@ def draw_startup_errors(startup_exc: StartupValidationError) -> None:
|
|
|
15
19
|
|
|
16
20
|
for field in startup_exc.invalid_fields:
|
|
17
21
|
draw_error(
|
|
18
|
-
BadParameter(
|
|
22
|
+
click_exceptions.BadParameter(
|
|
19
23
|
message=(
|
|
20
24
|
"extra option in your application "
|
|
21
25
|
"`lifespan/on_startup` hook has a wrong type."
|
|
@@ -26,7 +30,7 @@ def draw_startup_errors(startup_exc: StartupValidationError) -> None:
|
|
|
26
30
|
|
|
27
31
|
if startup_exc.missed_fields:
|
|
28
32
|
draw_error(
|
|
29
|
-
MissingParameter(
|
|
33
|
+
click_exceptions.MissingParameter(
|
|
30
34
|
message=(
|
|
31
35
|
"You registered extra options in your application "
|
|
32
36
|
"`lifespan/on_startup` hook, but does not set in CLI."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from collections.abc import
|
|
1
|
+
from collections.abc import Generator, Mapping
|
|
2
2
|
from contextlib import contextmanager
|
|
3
3
|
from contextvars import ContextVar, Token
|
|
4
4
|
from typing import Any
|
|
@@ -97,7 +97,7 @@ class ContextRepo:
|
|
|
97
97
|
return context_value
|
|
98
98
|
|
|
99
99
|
@contextmanager
|
|
100
|
-
def scope(self, key: str, value: Any) ->
|
|
100
|
+
def scope(self, key: str, value: Any) -> Generator[None, None, None]:
|
|
101
101
|
"""Sets a local variable and yields control to the caller. After the caller is done, the local variable is reset.
|
|
102
102
|
|
|
103
103
|
Args:
|
|
@@ -138,6 +138,8 @@ class HandlerCallWrapper(Generic[P_HandlerParams, T_HandlerReturn]):
|
|
|
138
138
|
|
|
139
139
|
if error:
|
|
140
140
|
self.future.set_exception(error)
|
|
141
|
+
# Mark the mirrored error as retrieved to avoid unhandled-future reports.
|
|
142
|
+
self.future.exception()
|
|
141
143
|
|
|
142
144
|
else:
|
|
143
145
|
self.future.set_result(result)
|
|
@@ -91,7 +91,7 @@ if FASTAPI_v102_3:
|
|
|
91
91
|
) -> SolvedDependency:
|
|
92
92
|
solved_result = await solve_dependencies(
|
|
93
93
|
request=request,
|
|
94
|
-
body=request._body, #
|
|
94
|
+
body=request._body, # pyright: ignore[reportArgumentType]
|
|
95
95
|
dependant=dependant,
|
|
96
96
|
dependency_overrides_provider=dependency_overrides_provider,
|
|
97
97
|
**extra, # type: ignore[arg-type]
|
|
@@ -122,7 +122,7 @@ else:
|
|
|
122
122
|
) -> SolvedDependency:
|
|
123
123
|
solved_result = await solve_dependencies(
|
|
124
124
|
request=request,
|
|
125
|
-
body=request._body, #
|
|
125
|
+
body=request._body, # pyright: ignore[reportArgumentType]
|
|
126
126
|
dependant=dependant,
|
|
127
127
|
dependency_overrides_provider=dependency_overrides_provider,
|
|
128
128
|
**kwargs,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
from collections.abc import Callable, Iterable
|
|
3
|
+
from dataclasses import fields
|
|
3
4
|
from typing import TYPE_CHECKING, Annotated, Any, cast, get_args, get_origin
|
|
4
5
|
|
|
5
6
|
from fast_depends.library.serializer import OptionItem
|
|
6
7
|
from fast_depends.utils import get_typed_annotation
|
|
7
8
|
from fastapi import params
|
|
9
|
+
from fastapi.dependencies.models import Dependant
|
|
8
10
|
from fastapi.dependencies.utils import (
|
|
9
11
|
get_dependant,
|
|
10
12
|
get_parameterless_sub_dependant,
|
|
@@ -17,6 +19,23 @@ if TYPE_CHECKING:
|
|
|
17
19
|
from fastapi.dependencies import models
|
|
18
20
|
|
|
19
21
|
|
|
22
|
+
class _FastStreamDependant(Dependant):
|
|
23
|
+
"""FastAPI dependant extended with fields required by FastStream."""
|
|
24
|
+
|
|
25
|
+
model: type[Any]
|
|
26
|
+
custom_fields: dict[str, Any]
|
|
27
|
+
flat_params: list[OptionItem]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _extend_fastapi_dependant(dependant: Dependant) -> _FastStreamDependant:
|
|
31
|
+
"""Copy a native FastAPI dependant into an extensible subclass."""
|
|
32
|
+
return _FastStreamDependant(**{
|
|
33
|
+
field.name: getattr(dependant, field.name)
|
|
34
|
+
for field in fields(dependant)
|
|
35
|
+
if field.init
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
|
|
20
39
|
def get_fastapi_dependant(
|
|
21
40
|
orig_call: Callable[..., Any],
|
|
22
41
|
dependencies: Iterable["params.Depends"],
|
|
@@ -55,6 +74,7 @@ def _patch_fastapi_dependent(dependant: "models.Dependant") -> "models.Dependant
|
|
|
55
74
|
|
|
56
75
|
from faststream._internal._compat import PydanticUndefined
|
|
57
76
|
|
|
77
|
+
dependant = _extend_fastapi_dependant(dependant)
|
|
58
78
|
params = dependant.query_params + dependant.body_params
|
|
59
79
|
|
|
60
80
|
for d in dependant.dependencies:
|
|
@@ -128,12 +148,12 @@ def _patch_fastapi_dependent(dependant: "models.Dependant") -> "models.Dependant
|
|
|
128
148
|
f,
|
|
129
149
|
)
|
|
130
150
|
|
|
131
|
-
dependant.model = create_model(
|
|
151
|
+
dependant.model = create_model(
|
|
132
152
|
getattr(call, "__name__", type(call).__name__),
|
|
133
153
|
)
|
|
134
154
|
|
|
135
|
-
dependant.custom_fields = {}
|
|
136
|
-
dependant.flat_params = [
|
|
155
|
+
dependant.custom_fields = {}
|
|
156
|
+
dependant.flat_params = [
|
|
137
157
|
OptionItem(field_name=name, field_type=type_, default_value=default)
|
|
138
158
|
for name, (type_, default) in params_unique.items()
|
|
139
159
|
]
|
|
@@ -2,7 +2,7 @@ import json
|
|
|
2
2
|
import warnings
|
|
3
3
|
from abc import abstractmethod
|
|
4
4
|
from collections.abc import (
|
|
5
|
-
|
|
5
|
+
AsyncGenerator,
|
|
6
6
|
Awaitable,
|
|
7
7
|
Callable,
|
|
8
8
|
Iterable,
|
|
@@ -273,7 +273,7 @@ class StreamRouter(APIRouter, StartAbleApplication, Generic[MsgType]):
|
|
|
273
273
|
@asynccontextmanager
|
|
274
274
|
async def start_broker_lifespan(
|
|
275
275
|
app: "FastAPI",
|
|
276
|
-
) ->
|
|
276
|
+
) -> AsyncGenerator[Mapping[str, Any] | None, None]:
|
|
277
277
|
"""Starts the lifespan of a broker."""
|
|
278
278
|
self.fastapi_config.set_application(app)
|
|
279
279
|
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
from abc import abstractmethod
|
|
3
|
-
from collections.abc import
|
|
3
|
+
from collections.abc import AsyncGenerator, Generator
|
|
4
4
|
from contextlib import (
|
|
5
5
|
AsyncExitStack,
|
|
6
6
|
asynccontextmanager,
|
|
7
7
|
contextmanager,
|
|
8
8
|
)
|
|
9
9
|
from functools import partial
|
|
10
|
-
from typing import
|
|
10
|
+
from typing import (
|
|
11
|
+
TYPE_CHECKING,
|
|
12
|
+
Any,
|
|
13
|
+
Generic,
|
|
14
|
+
Optional,
|
|
15
|
+
Protocol,
|
|
16
|
+
TypeVar,
|
|
17
|
+
cast,
|
|
18
|
+
)
|
|
11
19
|
from unittest import mock
|
|
12
20
|
from unittest.mock import MagicMock
|
|
13
21
|
|
|
@@ -97,7 +105,7 @@ class TestBroker(Generic[Broker, EnterType]):
|
|
|
97
105
|
await self._ctx.__aexit__(exc_type, exc_val, exc_tb)
|
|
98
106
|
|
|
99
107
|
@asynccontextmanager
|
|
100
|
-
async def _create_ctx(self) ->
|
|
108
|
+
async def _create_ctx(self) -> AsyncGenerator[list[Broker], None]:
|
|
101
109
|
async with AsyncExitStack() as stack:
|
|
102
110
|
saved_running = {}
|
|
103
111
|
started_brokers = []
|
|
@@ -123,7 +131,7 @@ class TestBroker(Generic[Broker, EnterType]):
|
|
|
123
131
|
sub.running = was_running
|
|
124
132
|
|
|
125
133
|
@asynccontextmanager
|
|
126
|
-
async def _do_start(self, broker: Broker) ->
|
|
134
|
+
async def _do_start(self, broker: Broker) -> AsyncGenerator[Broker, None]:
|
|
127
135
|
try:
|
|
128
136
|
if not self.connect_only:
|
|
129
137
|
await broker.start()
|
|
@@ -134,11 +142,11 @@ class TestBroker(Generic[Broker, EnterType]):
|
|
|
134
142
|
self._fake_close(broker)
|
|
135
143
|
|
|
136
144
|
@contextmanager
|
|
137
|
-
def _patch_producer(self, broker: Broker) ->
|
|
145
|
+
def _patch_producer(self, broker: Broker) -> Generator[None, None, None]:
|
|
138
146
|
raise NotImplementedError
|
|
139
147
|
|
|
140
148
|
@contextmanager
|
|
141
|
-
def _patch_logger(self, broker: Broker) ->
|
|
149
|
+
def _patch_logger(self, broker: Broker) -> Generator[None, None, None]:
|
|
142
150
|
broker._setup_logger()
|
|
143
151
|
|
|
144
152
|
logger_state = broker.config.logger
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from collections.abc import
|
|
2
|
+
from collections.abc import AsyncGenerator, Awaitable, Callable
|
|
3
3
|
from concurrent.futures import Executor
|
|
4
4
|
from contextlib import asynccontextmanager
|
|
5
5
|
from functools import partial, wraps
|
|
@@ -64,7 +64,7 @@ def to_async(
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
@asynccontextmanager
|
|
67
|
-
async def fake_context(*args: Any, **kwargs: Any) ->
|
|
67
|
+
async def fake_context(*args: Any, **kwargs: Any) -> AsyncGenerator[None, None]:
|
|
68
68
|
yield None
|
|
69
69
|
|
|
70
70
|
|
|
@@ -2,7 +2,7 @@ import inspect
|
|
|
2
2
|
import logging
|
|
3
3
|
import traceback
|
|
4
4
|
from abc import abstractmethod
|
|
5
|
-
from collections.abc import
|
|
5
|
+
from collections.abc import AsyncGenerator, Sequence
|
|
6
6
|
from contextlib import asynccontextmanager
|
|
7
7
|
from typing import TYPE_CHECKING, Any, Optional, Protocol
|
|
8
8
|
|
|
@@ -250,7 +250,7 @@ class AsgiFastStream(Application):
|
|
|
250
250
|
async def start_lifespan_context(
|
|
251
251
|
self,
|
|
252
252
|
run_extra_options: dict[str, "SettingField"] | None = None,
|
|
253
|
-
) ->
|
|
253
|
+
) -> AsyncGenerator[None, None]:
|
|
254
254
|
run_extra_options = run_extra_options or self._run_extra_options
|
|
255
255
|
|
|
256
256
|
async with self.lifespan_context(**run_extra_options):
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import warnings
|
|
1
2
|
from typing import Annotated
|
|
2
3
|
|
|
3
4
|
from faststream._internal.fastapi.context import Context, ContextRepo, Logger
|
|
@@ -7,6 +8,15 @@ from faststream.confluent.publisher.producer import AsyncConfluentFastProducer
|
|
|
7
8
|
|
|
8
9
|
from .fastapi import KafkaRouter
|
|
9
10
|
|
|
11
|
+
warnings.warn(
|
|
12
|
+
"The integration has been moved to the faststream_fastapi package"
|
|
13
|
+
" and will be removed in 1.0.0 version."
|
|
14
|
+
"\n`pip install faststream_fastapi`"
|
|
15
|
+
"\nhttps://github.com/faststream-community/faststream_fastapi",
|
|
16
|
+
DeprecationWarning,
|
|
17
|
+
stacklevel=2,
|
|
18
|
+
)
|
|
19
|
+
|
|
10
20
|
__all__ = (
|
|
11
21
|
"Context",
|
|
12
22
|
"ContextRepo",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
1
2
|
from typing import TYPE_CHECKING, Any, Union
|
|
2
3
|
|
|
3
4
|
from typing_extensions import override
|
|
@@ -9,6 +10,7 @@ from faststream.response.response import (
|
|
|
9
10
|
Response,
|
|
10
11
|
extract_per_message_keys_and_bodies,
|
|
11
12
|
key_for_index,
|
|
13
|
+
realign_keys,
|
|
12
14
|
)
|
|
13
15
|
|
|
14
16
|
if TYPE_CHECKING:
|
|
@@ -99,9 +101,9 @@ class KafkaPublishCommand(BatchPublishCommand):
|
|
|
99
101
|
|
|
100
102
|
# per-message keys support
|
|
101
103
|
keys, normalized = extract_per_message_keys_and_bodies(self.batch_bodies)
|
|
104
|
+
self._per_message_keys = keys
|
|
102
105
|
if normalized is not None:
|
|
103
106
|
self.batch_bodies = normalized
|
|
104
|
-
self._per_message_keys = keys
|
|
105
107
|
|
|
106
108
|
@classmethod
|
|
107
109
|
def from_cmd(
|
|
@@ -140,6 +142,24 @@ class KafkaPublishCommand(BatchPublishCommand):
|
|
|
140
142
|
|
|
141
143
|
return headers | self.headers
|
|
142
144
|
|
|
145
|
+
@BatchPublishCommand.batch_bodies.setter # type: ignore[attr-defined, untyped-decorator]
|
|
146
|
+
def batch_bodies(self, value: Sequence["Any"]) -> None:
|
|
147
|
+
if len(value) == 0:
|
|
148
|
+
self.body = None
|
|
149
|
+
self.extra_bodies = ()
|
|
150
|
+
else:
|
|
151
|
+
self._align_keys(value)
|
|
152
|
+
self.body = value[0]
|
|
153
|
+
self.extra_bodies = tuple(value[1:])
|
|
154
|
+
|
|
155
|
+
def _align_keys(self, value: Sequence["Any"]) -> None:
|
|
156
|
+
"""Align the per-message keys with the batch_bodies."""
|
|
157
|
+
if not self._per_message_keys:
|
|
158
|
+
return
|
|
159
|
+
self._per_message_keys = realign_keys(
|
|
160
|
+
self._per_message_keys, self.batch_bodies, value
|
|
161
|
+
)
|
|
162
|
+
|
|
143
163
|
|
|
144
164
|
# Semantic alias for publish operations
|
|
145
165
|
# More intuitive name when using in publish_batch() rather than as handler return value
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from collections.abc import Callable, Generator, Iterable,
|
|
1
|
+
from collections.abc import Callable, Generator, Iterable, Sequence
|
|
2
2
|
from contextlib import ExitStack, contextmanager
|
|
3
3
|
from datetime import datetime, timezone
|
|
4
4
|
from typing import TYPE_CHECKING, Any, Optional, cast, overload
|
|
@@ -70,7 +70,7 @@ class TestKafkaBroker(TestBroker[KafkaBroker, EnterType]):
|
|
|
70
70
|
)
|
|
71
71
|
|
|
72
72
|
@contextmanager
|
|
73
|
-
def _patch_producer(self, broker: KafkaBroker) ->
|
|
73
|
+
def _patch_producer(self, broker: KafkaBroker) -> Generator[None, None, None]:
|
|
74
74
|
fake_producer = FakeProducer(broker, self.brokers)
|
|
75
75
|
|
|
76
76
|
with ExitStack() as es:
|
|
@@ -279,7 +279,7 @@ class FakeProducer(AsyncConfluentFastProducer):
|
|
|
279
279
|
class MockConfluentMessage:
|
|
280
280
|
def __init__(
|
|
281
281
|
self,
|
|
282
|
-
raw_msg: bytes,
|
|
282
|
+
raw_msg: bytes | None,
|
|
283
283
|
topic: str,
|
|
284
284
|
key: bytes | str,
|
|
285
285
|
headers: list[tuple[str, bytes]],
|
|
@@ -304,7 +304,7 @@ class MockConfluentMessage:
|
|
|
304
304
|
self._timestamp = (timestamp_type, timestamp_ms)
|
|
305
305
|
|
|
306
306
|
def len(self) -> int:
|
|
307
|
-
return len(self._raw_msg)
|
|
307
|
+
return 0 if self._raw_msg is None else len(self._raw_msg)
|
|
308
308
|
|
|
309
309
|
def error(self) -> str | None:
|
|
310
310
|
return self._error
|
|
@@ -327,7 +327,7 @@ class MockConfluentMessage:
|
|
|
327
327
|
def topic(self) -> str:
|
|
328
328
|
return self._topic
|
|
329
329
|
|
|
330
|
-
def value(self) -> bytes:
|
|
330
|
+
def value(self) -> bytes | None:
|
|
331
331
|
return self._raw_msg
|
|
332
332
|
|
|
333
333
|
|
|
@@ -345,8 +345,12 @@ async def build_message(
|
|
|
345
345
|
codec: Optional["CodecProto"] = None,
|
|
346
346
|
) -> MockConfluentMessage:
|
|
347
347
|
"""Build a mock confluent_kafka.Message for a sendable message."""
|
|
348
|
-
|
|
349
|
-
|
|
348
|
+
if message is None:
|
|
349
|
+
# keep a real tombstone (message.value() is None) distinct from b""
|
|
350
|
+
msg, content_type = None, None
|
|
351
|
+
else:
|
|
352
|
+
codec_instance = codec or DefaultCodec()
|
|
353
|
+
msg, content_type = await codec_instance.encode(message, serializer)
|
|
350
354
|
k = key or b""
|
|
351
355
|
headers = {
|
|
352
356
|
"content-type": content_type or "",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import warnings
|
|
1
2
|
from typing import Annotated
|
|
2
3
|
|
|
3
4
|
from faststream._internal.fastapi.context import Context, ContextRepo, Logger
|
|
@@ -7,6 +8,15 @@ from faststream.kafka.publisher.producer import AioKafkaFastProducer
|
|
|
7
8
|
|
|
8
9
|
from .fastapi import KafkaRouter
|
|
9
10
|
|
|
11
|
+
warnings.warn(
|
|
12
|
+
"The integration has been moved to the faststream_fastapi package"
|
|
13
|
+
" and will be removed in 1.0.0 version."
|
|
14
|
+
"\n`pip install faststream_fastapi`"
|
|
15
|
+
"\nhttps://github.com/faststream-community/faststream_fastapi",
|
|
16
|
+
DeprecationWarning,
|
|
17
|
+
stacklevel=2,
|
|
18
|
+
)
|
|
19
|
+
|
|
10
20
|
__all__ = (
|
|
11
21
|
"Context",
|
|
12
22
|
"ContextRepo",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
1
2
|
from typing import TYPE_CHECKING, Any, Union
|
|
2
3
|
|
|
3
4
|
from typing_extensions import override
|
|
@@ -9,6 +10,7 @@ from faststream.response.response import (
|
|
|
9
10
|
Response,
|
|
10
11
|
extract_per_message_keys_and_bodies,
|
|
11
12
|
key_for_index,
|
|
13
|
+
realign_keys,
|
|
12
14
|
)
|
|
13
15
|
|
|
14
16
|
if TYPE_CHECKING:
|
|
@@ -99,9 +101,9 @@ class KafkaPublishCommand(BatchPublishCommand):
|
|
|
99
101
|
|
|
100
102
|
# per-message keys support
|
|
101
103
|
keys, normalized = extract_per_message_keys_and_bodies(self.batch_bodies)
|
|
104
|
+
self._per_message_keys = keys
|
|
102
105
|
if normalized is not None:
|
|
103
106
|
self.batch_bodies = normalized
|
|
104
|
-
self._per_message_keys = keys
|
|
105
107
|
|
|
106
108
|
@classmethod
|
|
107
109
|
def from_cmd(
|
|
@@ -140,6 +142,24 @@ class KafkaPublishCommand(BatchPublishCommand):
|
|
|
140
142
|
|
|
141
143
|
return headers | self.headers
|
|
142
144
|
|
|
145
|
+
@BatchPublishCommand.batch_bodies.setter # type: ignore[attr-defined, untyped-decorator]
|
|
146
|
+
def batch_bodies(self, value: Sequence["Any"]) -> None:
|
|
147
|
+
if len(value) == 0:
|
|
148
|
+
self.body = None
|
|
149
|
+
self.extra_bodies = ()
|
|
150
|
+
else:
|
|
151
|
+
self._align_keys(value)
|
|
152
|
+
self.body = value[0]
|
|
153
|
+
self.extra_bodies = tuple(value[1:])
|
|
154
|
+
|
|
155
|
+
def _align_keys(self, value: Sequence["Any"]) -> None:
|
|
156
|
+
"""Align the per-message keys with the batch_bodies."""
|
|
157
|
+
if not self._per_message_keys:
|
|
158
|
+
return
|
|
159
|
+
self._per_message_keys = realign_keys(
|
|
160
|
+
self._per_message_keys, self.batch_bodies, value
|
|
161
|
+
)
|
|
162
|
+
|
|
143
163
|
|
|
144
164
|
# Semantic alias for publish operations
|
|
145
165
|
# More intuitive name when using in publish_batch() rather than as handler return value
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import re
|
|
2
|
-
from collections.abc import Callable, Generator, Iterable,
|
|
2
|
+
from collections.abc import Callable, Generator, Iterable, Sequence
|
|
3
3
|
from contextlib import ExitStack, contextmanager
|
|
4
4
|
from datetime import datetime, timezone
|
|
5
5
|
from typing import TYPE_CHECKING, Any, Optional, cast, overload
|
|
@@ -72,7 +72,7 @@ class TestKafkaBroker(TestBroker[KafkaBroker, EnterType]):
|
|
|
72
72
|
)
|
|
73
73
|
|
|
74
74
|
@contextmanager
|
|
75
|
-
def _patch_producer(self, broker: KafkaBroker) ->
|
|
75
|
+
def _patch_producer(self, broker: KafkaBroker) -> Generator[None, None, None]:
|
|
76
76
|
fake_producer = FakeProducer(broker, self.brokers)
|
|
77
77
|
|
|
78
78
|
with ExitStack() as es:
|
|
@@ -309,7 +309,12 @@ async def build_message(
|
|
|
309
309
|
codec: Optional["CodecProto"] = None,
|
|
310
310
|
) -> "ConsumerRecord":
|
|
311
311
|
"""Build a Kafka ConsumerRecord for a sendable message."""
|
|
312
|
-
|
|
312
|
+
if message is None and key is not None:
|
|
313
|
+
# keyed None is a real tombstone, matching publish()'s own rule
|
|
314
|
+
# (aiokafka needs a key or value, a keyless None still goes b"")
|
|
315
|
+
msg, content_type = None, None
|
|
316
|
+
else:
|
|
317
|
+
msg, content_type = await (codec or DefaultCodec()).encode(message, serializer)
|
|
313
318
|
|
|
314
319
|
k = key or b""
|
|
315
320
|
|
|
@@ -328,8 +333,8 @@ async def build_message(
|
|
|
328
333
|
partition=partition or 0,
|
|
329
334
|
key=k,
|
|
330
335
|
serialized_key_size=len(k),
|
|
331
|
-
serialized_value_size=len(msg),
|
|
332
|
-
checksum=sum(msg),
|
|
336
|
+
serialized_value_size=0 if msg is None else len(msg),
|
|
337
|
+
checksum=0 if msg is None else sum(msg),
|
|
333
338
|
offset=0,
|
|
334
339
|
headers=[(i, j.encode()) for i, j in headers.items()],
|
|
335
340
|
timestamp_type=1,
|
|
@@ -64,6 +64,7 @@ class MQTTBroker(
|
|
|
64
64
|
reconnect: zmqtt.ReconnectConfig | None = None,
|
|
65
65
|
mqtt_connect_timeout: float = 30.0,
|
|
66
66
|
session_expiry_interval: int = 0,
|
|
67
|
+
stripped_prefixes: tuple[str, ...] | None = None,
|
|
67
68
|
graceful_timeout: float | None = 15.0,
|
|
68
69
|
decoder: Optional["CustomCallable"] = None,
|
|
69
70
|
parser: Optional["CustomCallable"] = None,
|
|
@@ -90,6 +91,10 @@ class MQTTBroker(
|
|
|
90
91
|
) -> None:
|
|
91
92
|
secure_kwargs = parse_security(security)
|
|
92
93
|
|
|
94
|
+
connection_kwargs = {}
|
|
95
|
+
if stripped_prefixes is not None:
|
|
96
|
+
connection_kwargs["stripped_prefixes"] = stripped_prefixes
|
|
97
|
+
|
|
93
98
|
producer: ZmqttBaseProducer
|
|
94
99
|
if version == "5.0":
|
|
95
100
|
producer = ZmqttProducerV5(parser=parser, decoder=decoder)
|
|
@@ -116,6 +121,7 @@ class MQTTBroker(
|
|
|
116
121
|
reconnect=reconnect,
|
|
117
122
|
mqtt_connect_timeout=mqtt_connect_timeout,
|
|
118
123
|
session_expiry_interval=session_expiry_interval,
|
|
124
|
+
**connection_kwargs,
|
|
119
125
|
**secure_kwargs,
|
|
120
126
|
# broker config
|
|
121
127
|
routers=routers,
|