mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Fixed UUID (and other types) serialization in the CallbackData factory.
From now UUID will have 32 bytes length instead of 36 bytes.
This commit is contained in:
parent
405bbcc36f
commit
de846ea36d
3 changed files with 16 additions and 1 deletions
3
CHANGES/1602.bugfix.rst
Normal file
3
CHANGES/1602.bugfix.rst
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Fixed customized serialization in the :class:`aiogram.filters.callback_data.CallbackData` factory.
|
||||
|
||||
From now UUID will have 32 bytes length instead of 36 bytes (with no `-` separators) in the callback data representation.
|
||||
|
|
@ -94,7 +94,7 @@ class CallbackData(BaseModel):
|
|||
:return: valid callback data for Telegram Bot API
|
||||
"""
|
||||
result = [self.__prefix__]
|
||||
for key, value in self.model_dump(mode="json").items():
|
||||
for key, value in self.model_dump(mode="python").items():
|
||||
encoded = self._encode_value(key, value)
|
||||
if self.__separator__ in encoded:
|
||||
raise ValueError(
|
||||
|
|
|
|||
|
|
@ -92,6 +92,18 @@ class TestCallbackData:
|
|||
|
||||
assert MyCallback(foo="test", bar=42).pack() == "test:test:42"
|
||||
|
||||
def test_pack_uuid(self):
|
||||
class MyCallbackWithUUID(CallbackData, prefix="test"):
|
||||
foo: str
|
||||
bar: UUID
|
||||
|
||||
callback = MyCallbackWithUUID(
|
||||
foo="test",
|
||||
bar=UUID("123e4567-e89b-12d3-a456-426655440000"),
|
||||
)
|
||||
|
||||
assert callback.pack() == "test:test:123e4567e89b12d3a456426655440000"
|
||||
|
||||
def test_pack_optional(self):
|
||||
class MyCallback1(CallbackData, prefix="test1"):
|
||||
foo: str
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue