From b8893c0971a94a6b602c5abc7213f6d35506d0d2 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 26 Jun 2022 01:36:45 +0300 Subject: [PATCH] #944 Rename "extract()" to "extract_from()" for entities (#945) * #944 Rename "extract()" to "extract_from()" for entities --- CHANGES/944.misc.rst | 1 + aiogram/types/message_entity.py | 11 ++++++++++- tests/test_api/test_types/test_message_entity.py | 8 +++++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 CHANGES/944.misc.rst diff --git a/CHANGES/944.misc.rst b/CHANGES/944.misc.rst new file mode 100644 index 00000000..1dc64aaa --- /dev/null +++ b/CHANGES/944.misc.rst @@ -0,0 +1 @@ +`MessageEntity` method `get_text` was removed and `extract` was renamed to `extract_from` diff --git a/aiogram/types/message_entity.py b/aiogram/types/message_entity.py index 7d090134..fa6aea41 100644 --- a/aiogram/types/message_entity.py +++ b/aiogram/types/message_entity.py @@ -1,5 +1,6 @@ from __future__ import annotations +import warnings from typing import TYPE_CHECKING, Optional from ..utils.text_decorations import add_surrogates, remove_surrogates @@ -29,7 +30,15 @@ class MessageEntity(MutableTelegramObject): language: Optional[str] = None """*Optional*. For 'pre' only, the programming language of the entity text""" - def extract(self, text: str) -> str: + def extract_from(self, text: str) -> str: return remove_surrogates( add_surrogates(text)[self.offset * 2 : (self.offset + self.length) * 2] ) + + def extract(self, text: str) -> str: + warnings.warn( + "Method `MessageEntity.extract(...)` deprecated and will be removed in 3.0b5.\n" + " Use `MessageEntity.extract_from(...)` instead.", + DeprecationWarning, + ) + return self.extract_from(text=text) diff --git a/tests/test_api/test_types/test_message_entity.py b/tests/test_api/test_types/test_message_entity.py index 572dbcb6..8dc4c0ea 100644 --- a/tests/test_api/test_types/test_message_entity.py +++ b/tests/test_api/test_types/test_message_entity.py @@ -1,7 +1,13 @@ from aiogram.types import MessageEntity +from tests.deprecated import check_deprecated class TestMessageEntity: + def test_extract_from(self): + entity = MessageEntity(type="hashtag", length=4, offset=5) + assert entity.extract_from("#foo #bar #baz") == "#bar" + def test_extract(self): entity = MessageEntity(type="hashtag", length=4, offset=5) - assert entity.extract("#foo #bar #baz") == "#bar" + with check_deprecated("3.0b5", exception=AttributeError): + assert entity.extract("#foo #bar #baz") == "#bar"