mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Modified the ".as_" method in the magic filter class to correctly handle values that are interpreted as `False` such as `0`. Previously, the method incorrectly dismissed these valid values. The issue was identified and fixed to ensure correct handling of all valid data inputs.
This commit is contained in:
parent
bff2ed0a86
commit
ee8e457c5f
3 changed files with 17 additions and 2 deletions
1
CHANGES/1281.bugfix.rst
Normal file
1
CHANGES/1281.bugfix.rst
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Fixed magic :code:`.as_(...)` operation for values that can be interpreted as `False` (e.g. `0`).
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from typing import Any
|
from typing import Any, Iterable
|
||||||
|
|
||||||
from magic_filter import MagicFilter as _MagicFilter
|
from magic_filter import MagicFilter as _MagicFilter
|
||||||
from magic_filter import MagicT as _MagicT
|
from magic_filter import MagicT as _MagicT
|
||||||
|
|
@ -12,7 +12,7 @@ class AsFilterResultOperation(BaseOperation):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def resolve(self, value: Any, initial_value: Any) -> Any:
|
def resolve(self, value: Any, initial_value: Any) -> Any:
|
||||||
if not value:
|
if value is None or (isinstance(value, Iterable) and not value):
|
||||||
return None
|
return None
|
||||||
return {self.name: value}
|
return {self.name: value}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,3 +19,17 @@ class TestMagicFilter:
|
||||||
result = magic.resolve(MyObject(text="123"))
|
result = magic.resolve(MyObject(text="123"))
|
||||||
assert isinstance(result, dict)
|
assert isinstance(result, dict)
|
||||||
assert isinstance(result["match"], Match)
|
assert isinstance(result["match"], Match)
|
||||||
|
|
||||||
|
def test_operation_as_not_none(self):
|
||||||
|
# Issue: https://github.com/aiogram/aiogram/issues/1281
|
||||||
|
magic = F.cast(int).as_("value")
|
||||||
|
|
||||||
|
result = magic.resolve("0")
|
||||||
|
assert result == {"value": 0}
|
||||||
|
|
||||||
|
def test_operation_as_not_none_iterable(self):
|
||||||
|
# Issue: https://github.com/aiogram/aiogram/issues/1281
|
||||||
|
magic = F.as_("value")
|
||||||
|
|
||||||
|
result = magic.resolve([])
|
||||||
|
assert result is None
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue