Skip to content

Commit e165f03

Browse files
authored
feat: add explicit message source enum (#1866)
* feat: add explicit message source enum * docs: generate API References * docs: generate API References --------- Co-authored-by: Lancetnik <Lancetnik@users.noreply.github.com>
1 parent 4c7895c commit e165f03

File tree

9 files changed

+35
-5
lines changed

9 files changed

+35
-5
lines changed

docs/docs/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ search:
376376
- [StreamRouter](api/faststream/broker/fastapi/router/StreamRouter.md)
377377
- message
378378
- [AckStatus](api/faststream/broker/message/AckStatus.md)
379+
- [SourceType](api/faststream/broker/message/SourceType.md)
379380
- [StreamMessage](api/faststream/broker/message/StreamMessage.md)
380381
- [decode_message](api/faststream/broker/message/decode_message.md)
381382
- [encode_message](api/faststream/broker/message/encode_message.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
# 0.5 - API
3+
# 2 - Release
4+
# 3 - Contributing
5+
# 5 - Template Page
6+
# 10 - Default
7+
search:
8+
boost: 0.5
9+
---
10+
11+
::: faststream.broker.message.SourceType

faststream/broker/core/usecase.py

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from faststream._compat import is_test_env
2222
from faststream.broker.core.logging import LoggingBroker
23+
from faststream.broker.message import SourceType
2324
from faststream.broker.middlewares.logging import CriticalLogMiddleware
2425
from faststream.broker.proto import SetupAble
2526
from faststream.broker.subscriber.proto import SubscriberProto
@@ -376,6 +377,7 @@ async def request(
376377

377378
parsed_msg: StreamMessage[Any] = await producer._parser(published_msg)
378379
parsed_msg._decoded_body = await producer._decoder(parsed_msg)
380+
parsed_msg._source_type = SourceType.Response
379381
return await return_msg(parsed_msg)
380382

381383
@abstractmethod

faststream/broker/message.py

+9
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ class AckStatus(str, Enum):
3535
rejected = "rejected"
3636

3737

38+
class SourceType(str, Enum):
39+
Consume = "Consume"
40+
"""Message consumed by basic subscriber flow."""
41+
42+
Response = "Response"
43+
"""RPC response consumed."""
44+
45+
3846
def gen_cor_id() -> str:
3947
"""Generate random string to use as ID."""
4048
return str(uuid4())
@@ -60,6 +68,7 @@ class StreamMessage(Generic[MsgType]):
6068

6169
processed: bool = field(default=False, init=False)
6270
committed: Optional[AckStatus] = field(default=None, init=False)
71+
_source_type: SourceType = field(default=SourceType.Consume)
6372
_decoded_body: Optional["DecodedMessage"] = field(default=None, init=False)
6473

6574
async def ack(self) -> None:

faststream/confluent/publisher/usecase.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from confluent_kafka import Message
1818
from typing_extensions import override
1919

20-
from faststream.broker.message import gen_cor_id
20+
from faststream.broker.message import SourceType, gen_cor_id
2121
from faststream.broker.publisher.usecase import PublisherUsecase
2222
from faststream.broker.types import MsgType
2323
from faststream.exceptions import NOT_CONNECTED_YET
@@ -124,6 +124,7 @@ async def request(
124124

125125
parsed_msg = await self._producer._parser(published_msg)
126126
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
127+
parsed_msg._source_type = SourceType.Response
127128
return await return_msg(parsed_msg)
128129

129130
raise AssertionError("unreachable")

faststream/kafka/publisher/usecase.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from aiokafka import ConsumerRecord
1818
from typing_extensions import Annotated, Doc, override
1919

20-
from faststream.broker.message import gen_cor_id
20+
from faststream.broker.message import SourceType, gen_cor_id
2121
from faststream.broker.publisher.usecase import PublisherUsecase
2222
from faststream.broker.types import MsgType
2323
from faststream.exceptions import NOT_CONNECTED_YET
@@ -177,6 +177,7 @@ async def request(
177177

178178
parsed_msg = await self._producer._parser(published_msg)
179179
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
180+
parsed_msg._source_type = SourceType.Response
180181
return await return_msg(parsed_msg)
181182

182183
raise AssertionError("unreachable")

faststream/nats/publisher/usecase.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from nats.aio.msg import Msg
1616
from typing_extensions import Annotated, Doc, override
1717

18-
from faststream.broker.message import gen_cor_id
18+
from faststream.broker.message import SourceType, gen_cor_id
1919
from faststream.broker.publisher.usecase import PublisherUsecase
2020
from faststream.exceptions import NOT_CONNECTED_YET
2121
from faststream.utils.functions import return_input
@@ -212,6 +212,7 @@ async def request(
212212

213213
parsed_msg = await self._producer._parser(published_msg)
214214
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
215+
parsed_msg._source_type = SourceType.Response
215216
return await return_msg(parsed_msg)
216217

217218
raise AssertionError("unreachable")

faststream/rabbit/publisher/usecase.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from aio_pika import IncomingMessage
1616
from typing_extensions import Annotated, Doc, TypedDict, Unpack, deprecated, override
1717

18-
from faststream.broker.message import gen_cor_id
18+
from faststream.broker.message import SourceType, gen_cor_id
1919
from faststream.broker.publisher.usecase import PublisherUsecase
2020
from faststream.exceptions import NOT_CONNECTED_YET
2121
from faststream.rabbit.schemas import BaseRMQInformation, RabbitQueue
@@ -373,6 +373,7 @@ async def request(
373373

374374
parsed_msg = await self._producer._parser(published_msg)
375375
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
376+
parsed_msg._source_type = SourceType.Response
376377
return await return_msg(parsed_msg)
377378

378379
raise AssertionError("unreachable")

faststream/redis/publisher/usecase.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from typing_extensions import Annotated, Doc, deprecated, override
99

10-
from faststream.broker.message import gen_cor_id
10+
from faststream.broker.message import SourceType, gen_cor_id
1111
from faststream.broker.publisher.usecase import PublisherUsecase
1212
from faststream.exceptions import NOT_CONNECTED_YET
1313
from faststream.redis.message import UnifyRedisDict
@@ -268,6 +268,7 @@ async def request(
268268

269269
parsed_msg = await self._producer._parser(published_msg)
270270
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
271+
parsed_msg._source_type = SourceType.Response
271272
return await return_msg(parsed_msg)
272273

273274
raise AssertionError("unreachable")
@@ -481,6 +482,7 @@ async def request(
481482

482483
parsed_msg = await self._producer._parser(published_msg)
483484
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
485+
parsed_msg._source_type = SourceType.Response
484486
return await return_msg(parsed_msg)
485487

486488
raise AssertionError("unreachable")
@@ -762,6 +764,7 @@ async def request(
762764

763765
parsed_msg = await self._producer._parser(published_msg)
764766
parsed_msg._decoded_body = await self._producer._decoder(parsed_msg)
767+
parsed_msg._source_type = SourceType.Response
765768
return await return_msg(parsed_msg)
766769

767770
raise AssertionError("unreachable")

0 commit comments

Comments
 (0)