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())
|
||||
<<< ['barItem', 'bazItem', 'fooItem', 'lorem']
|
||||
"""
|
||||
import inspect
|
||||
from typing import (
|
||||
Any,
|
||||
Callable,
|
||||
|
|
@ -152,9 +153,9 @@ class _BaseItem:
|
|||
if not name.isupper():
|
||||
raise NameError("Name for helper item must be in uppercase!")
|
||||
if not self._value:
|
||||
# TODO: а если не имеет?
|
||||
if hasattr(owner, "mode"):
|
||||
self._value = HelperMode.apply(name, getattr(owner, "mode"))
|
||||
if not inspect.isclass(owner) or not issubclass(owner, Helper):
|
||||
raise RuntimeError("Instances of Item can be used only as Helper attributes")
|
||||
self._value = HelperMode.apply(name, owner.mode)
|
||||
|
||||
|
||||
class Item(_BaseItem):
|
||||
|
|
@ -224,7 +225,7 @@ class OrderedHelperMeta(type):
|
|||
return cast(OrderedHelperMeta, cls)
|
||||
|
||||
|
||||
class OrderedHelper(metaclass=OrderedHelperMeta):
|
||||
class OrderedHelper(Helper, metaclass=OrderedHelperMeta):
|
||||
mode = ""
|
||||
|
||||
@classmethod
|
||||
|
|
|
|||
|
|
@ -40,6 +40,11 @@ class TestHelper:
|
|||
class MyHelper(Helper):
|
||||
kaboom = Item()
|
||||
|
||||
def test_not_a_helper_subclass(self):
|
||||
with pytest.raises(RuntimeError):
|
||||
|
||||
class NotAHelperSubclass:
|
||||
A = Item()
|
||||
|
||||
class TestHelperMode:
|
||||
def test_helper_mode_all(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue