mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 18:19:34 +00:00
Add check for owner class in Item
This commit is contained in:
parent
45cfa5b3c9
commit
4298406bd2
2 changed files with 10 additions and 4 deletions
|
|
@ -13,6 +13,7 @@ Example:
|
||||||
>>> print(MyHelper.all())
|
>>> print(MyHelper.all())
|
||||||
<<< ['barItem', 'bazItem', 'fooItem', 'lorem']
|
<<< ['barItem', 'bazItem', 'fooItem', 'lorem']
|
||||||
"""
|
"""
|
||||||
|
import inspect
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
Callable,
|
Callable,
|
||||||
|
|
@ -152,9 +153,9 @@ class _BaseItem:
|
||||||
if not name.isupper():
|
if not name.isupper():
|
||||||
raise NameError("Name for helper item must be in uppercase!")
|
raise NameError("Name for helper item must be in uppercase!")
|
||||||
if not self._value:
|
if not self._value:
|
||||||
# TODO: а если не имеет?
|
if not inspect.isclass(owner) or not issubclass(owner, Helper):
|
||||||
if hasattr(owner, "mode"):
|
raise RuntimeError("Instances of Item can be used only as Helper attributes")
|
||||||
self._value = HelperMode.apply(name, getattr(owner, "mode"))
|
self._value = HelperMode.apply(name, owner.mode)
|
||||||
|
|
||||||
|
|
||||||
class Item(_BaseItem):
|
class Item(_BaseItem):
|
||||||
|
|
@ -224,7 +225,7 @@ class OrderedHelperMeta(type):
|
||||||
return cast(OrderedHelperMeta, cls)
|
return cast(OrderedHelperMeta, cls)
|
||||||
|
|
||||||
|
|
||||||
class OrderedHelper(metaclass=OrderedHelperMeta):
|
class OrderedHelper(Helper, metaclass=OrderedHelperMeta):
|
||||||
mode = ""
|
mode = ""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,11 @@ class TestHelper:
|
||||||
class MyHelper(Helper):
|
class MyHelper(Helper):
|
||||||
kaboom = Item()
|
kaboom = Item()
|
||||||
|
|
||||||
|
def test_not_a_helper_subclass(self):
|
||||||
|
with pytest.raises(RuntimeError):
|
||||||
|
|
||||||
|
class NotAHelperSubclass:
|
||||||
|
A = Item()
|
||||||
|
|
||||||
class TestHelperMode:
|
class TestHelperMode:
|
||||||
def test_helper_mode_all(self):
|
def test_helper_mode_all(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue