Skip to content

Commit b113ee0

Browse files
authored
Merge pull request #70 from taskiq-python/develop
release 0.2.0
2 parents 471b8cb + f37079b commit b113ee0

File tree

8 files changed

+65
-36
lines changed

8 files changed

+65
-36
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
run: python -m build
4040

4141
- name: Publish
42-
uses: pypa/gh-action-pypi-publish@v1.8.14
42+
uses: pypa/gh-action-pypi-publish@v1.9.0
4343
with:
4444
password: ${{ secrets.PYPI_TOKEN }}
4545

pyproject.toml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ classifiers = [
4242
dynamic = ["version"]
4343

4444
dependencies = [
45-
"taskiq>=0.10.0,<1.0.0",
45+
"taskiq>=0.11.0,<0.12.0",
4646
"faststream>=0.3.14,<0.6.0",
4747
]
4848

@@ -59,6 +59,10 @@ kafka = [
5959
"faststream[kafka]"
6060
]
6161

62+
confluent = [
63+
"faststream[confluent]"
64+
]
65+
6266
redis = [
6367
"faststream[redis]"
6468
]
@@ -68,6 +72,7 @@ test = [
6872
"taskiq-faststream[nats]",
6973
"taskiq-faststream[rabbit]",
7074
"taskiq-faststream[kafka]",
75+
"taskiq-faststream[confluent]",
7176
"taskiq-faststream[redis]",
7277

7378
"coverage[toml]>=7.2.0,<8.0.0",
@@ -77,7 +82,7 @@ test = [
7782
dev = [
7883
"taskiq-faststream[test]",
7984

80-
"mypy>=1.8.0,<1.10.0",
85+
"mypy>=1.8.0,<1.12.0",
8186
"ruff==0.4.1",
8287
"pre-commit >=3.6.0,<4.0.0",
8388
]

taskiq_faststream/__about__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
"""FastStream - taskiq integration to schedule FastStream tasks."""
2-
__version__ = "0.1.8"
2+
3+
__version__ = "0.2.0"

taskiq_faststream/broker.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
import anyio
66
from faststream.app import FastStream
77
from faststream.types import SendableMessage
8-
from taskiq import AsyncBroker, BrokerMessage
8+
from taskiq import AsyncBroker
99
from taskiq.acks import AckableMessage
1010
from taskiq.decor import AsyncTaskiqDecoratedTask
1111
from typing_extensions import TypeAlias, override
1212

13-
from taskiq_faststream.serializer import PatchedSerializer
13+
from taskiq_faststream.formatter import PatchedFormatter, PathcedMessage
1414
from taskiq_faststream.types import ScheduledTask
1515
from taskiq_faststream.utils import resolve_msg
1616

@@ -33,7 +33,7 @@ class BrokerWrapper(AsyncBroker):
3333

3434
def __init__(self, broker: Any) -> None:
3535
super().__init__()
36-
self.serializer = PatchedSerializer()
36+
self.formatter = PatchedFormatter()
3737
self.broker = broker
3838

3939
async def startup(self) -> None:
@@ -46,7 +46,7 @@ async def shutdown(self) -> None:
4646
await self.broker.close()
4747
await super().shutdown()
4848

49-
async def kick(self, message: BrokerMessage) -> None:
49+
async def kick(self, message: PathcedMessage) -> None: # type: ignore[override]
5050
"""Call wrapped FastStream broker `publish` method."""
5151
await _broker_publish(self.broker, message)
5252

@@ -109,7 +109,7 @@ class AppWrapper(BrokerWrapper):
109109

110110
def __init__(self, app: FastStream) -> None:
111111
super(BrokerWrapper, self).__init__()
112-
self.serializer = PatchedSerializer()
112+
self.formatter = PatchedFormatter()
113113
self.app = app
114114

115115
async def startup(self) -> None:
@@ -122,7 +122,7 @@ async def shutdown(self) -> None:
122122
await self.app._shutdown() # noqa: SLF001
123123
await super(BrokerWrapper, self).shutdown()
124124

125-
async def kick(self, message: BrokerMessage) -> None:
125+
async def kick(self, message: PathcedMessage) -> None: # type: ignore[override]
126126
"""Call wrapped FastStream broker `publish` method."""
127127
assert ( # noqa: S101
128128
self.app.broker
@@ -132,11 +132,7 @@ async def kick(self, message: BrokerMessage) -> None:
132132

133133
async def _broker_publish(
134134
broker: Any,
135-
message: BrokerMessage,
135+
message: PathcedMessage,
136136
) -> None:
137-
labels = message.labels
138-
labels.pop("schedule", None)
139-
async for msg in resolve_msg(
140-
msg=labels.pop("message", message.message),
141-
):
142-
await broker.publish(msg, **labels)
137+
async for msg in resolve_msg(message.body):
138+
await broker.publish(msg, **message.labels)

taskiq_faststream/formatter.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from dataclasses import dataclass
2+
from typing import Any, Dict
3+
4+
from taskiq.abc.formatter import TaskiqFormatter
5+
from taskiq.message import TaskiqMessage
6+
7+
8+
@dataclass
9+
class PathcedMessage:
10+
"""DTO to transfer data to `broker.kick`."""
11+
12+
body: Any
13+
labels: Dict[str, Any]
14+
15+
16+
class PatchedFormatter(TaskiqFormatter):
17+
"""Default taskiq formatter."""
18+
19+
def dumps( # type: ignore[override]
20+
self,
21+
message: TaskiqMessage,
22+
) -> PathcedMessage:
23+
"""
24+
Dumps taskiq message to some broker message format.
25+
26+
:param message: message to send.
27+
:return: Dumped message.
28+
"""
29+
labels = message.labels
30+
labels.pop("schedule", None)
31+
labels.pop("schedule_id", None)
32+
33+
return PathcedMessage(
34+
body=labels.pop("message", None),
35+
labels=labels,
36+
)
37+
38+
def loads(self, message: bytes) -> TaskiqMessage:
39+
"""
40+
Loads json from message.
41+
42+
:param message: broker's message.
43+
:return: parsed taskiq message.
44+
"""
45+
raise NotImplementedError

taskiq_faststream/serializer.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

tests/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,5 @@ def mock() -> MagicMock:
2727

2828

2929
@pytest.fixture()
30-
@pytest.mark.anyio
3130
async def event() -> asyncio.Event:
3231
return asyncio.Event()

tests/testcase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ async def handler(msg: str) -> None:
4444
**{self.subj_name: subject},
4545
schedule=[
4646
{
47-
"time": datetime.utcnow(),
47+
"time": datetime.utcnow(), # old python compat
4848
},
4949
],
5050
)

0 commit comments

Comments
 (0)