Skip to content

Commit 34269f4

Browse files
committed
♻️ update deprecated usage in versioning and interactions to use typing.deprecated
1 parent 1c65fc8 commit 34269f4

File tree

3 files changed

+83
-22
lines changed

3 files changed

+83
-22
lines changed

discord/_version.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636

3737
from typing import Literal, NamedTuple
3838

39-
from .utils import deprecated
39+
from typing_extensions import deprecated
40+
41+
from .utils import deprecated_message
4042

4143
try:
4244
__version__ = version("py-cord")
@@ -84,27 +86,27 @@ def advanced(self, value: object) -> None:
8486
_advanced = value
8587

8688
@property
87-
@deprecated("releaselevel", "2.4")
89+
@deprecated(deprecated_message("release_level", "releaselevel", "2.4"))
8890
def release_level(self) -> Literal["alpha", "beta", "candidate", "final"]:
8991
return self.releaselevel
9092

9193
@property
92-
@deprecated('.advanced["serial"]', "2.4")
94+
@deprecated(deprecated_message("serial", '.advanced["serial"]', "2.4"))
9395
def serial(self) -> int:
9496
return self.advanced["serial"]
9597

9698
@property
97-
@deprecated('.advanced["build"]', "2.4")
99+
@deprecated(deprecated_message("build", '.advanced["build"]', "2.4"))
98100
def build(self) -> int | None:
99101
return self.advanced["build"]
100102

101103
@property
102-
@deprecated('.advanced["commit"]', "2.4")
104+
@deprecated(deprecated_message("commit", '.advanced["commit"]', "2.4"))
103105
def commit(self) -> str | None:
104106
return self.advanced["commit"]
105107

106108
@property
107-
@deprecated('.advanced["date"]', "2.4")
109+
@deprecated(deprecated_message("date", '.advanced["date"]', "2.4"))
108110
def date(self) -> datetime.date | None:
109111
return self.advanced["date"]
110112

discord/interactions.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import datetime
3030
from typing import TYPE_CHECKING, Any, Coroutine, Union
3131

32+
from typing_extensions import deprecated
33+
3234
from . import utils
3335
from .channel import ChannelType, PartialMessageable, _threaded_channel_factory
3436
from .enums import (
@@ -47,6 +49,7 @@
4749
from .object import Object
4850
from .permissions import Permissions
4951
from .user import User
52+
from .utils import deprecated_message
5053
from .webhook.async_ import (
5154
Webhook,
5255
WebhookMessage,
@@ -315,7 +318,10 @@ def is_component(self) -> bool:
315318
return self.type == InteractionType.component
316319

317320
@utils.cached_slot_property("_cs_channel")
318-
@utils.deprecated("Interaction.channel", "2.7", stacklevel=4)
321+
@deprecated(
322+
deprecated_message("Interaction.cached_channel", "Interaction.channel", "2.7"),
323+
stacklevel=2,
324+
)
319325
def cached_channel(self) -> InteractionChannel | None:
320326
"""The cached channel from which the interaction was sent.
321327
DM channels are not resolved. These are :class:`PartialMessageable` instead.
@@ -457,7 +463,11 @@ async def original_response(self) -> InteractionMessage:
457463
self._original_response = message
458464
return message
459465

460-
@utils.deprecated("Interaction.original_response", "2.2")
466+
@deprecated(
467+
deprecated_message(
468+
"Interaction.original_message", "Interaction.original_response", "2.2"
469+
)
470+
)
461471
async def original_message(self):
462472
"""An alias for :meth:`original_response`.
463473
@@ -584,7 +594,13 @@ async def edit_original_response(
584594

585595
return message
586596

587-
@utils.deprecated("Interaction.edit_original_response", "2.2")
597+
@deprecated(
598+
deprecated_message(
599+
"Interaction.edit_original_message",
600+
"Interaction.edit_original_response",
601+
"2.2",
602+
)
603+
)
588604
async def edit_original_message(self, **kwargs):
589605
"""An alias for :meth:`edit_original_response`.
590606
@@ -642,7 +658,13 @@ async def delete_original_response(self, *, delay: float | None = None) -> None:
642658
else:
643659
await func
644660

645-
@utils.deprecated("Interaction.delete_original_response", "2.2")
661+
@deprecated(
662+
deprecated_message(
663+
"Interaction.delete_original_message",
664+
"Interaction.delete_original_response",
665+
"2.2",
666+
)
667+
)
646668
async def delete_original_message(self, **kwargs):
647669
"""An alias for :meth:`delete_original_response`.
648670
@@ -1288,7 +1310,13 @@ async def send_modal(self, modal: Modal) -> Interaction:
12881310
self._parent._state.store_modal(modal, self._parent.user.id)
12891311
return self._parent
12901312

1291-
@utils.deprecated("a button with type ButtonType.premium", "2.6")
1313+
@deprecated(
1314+
deprecated_message(
1315+
"InteractionResponse.premium_required",
1316+
"a button with type ButtonType.premium",
1317+
"2.6",
1318+
)
1319+
)
12921320
async def premium_required(self) -> Interaction:
12931321
"""|coro|
12941322

discord/utils.py

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
__all__ = (
7676
"parse_time",
7777
"warn_deprecated",
78-
"deprecated",
78+
"deprecated_message",
7979
"oauth_url",
8080
"snowflake_time",
8181
"time_snowflake",
@@ -283,6 +283,40 @@ def decorator(overridden: T) -> T:
283283
return decorator
284284

285285

286+
def deprecated_message(
287+
name: str,
288+
instead: str | None = None,
289+
since: str | None = None,
290+
removed: str | None = None,
291+
reference: str | None = None,
292+
) -> str:
293+
"""
294+
Generates a deprecation message, with the ability to specify details about the deprecation.
295+
296+
Parameters
297+
----------
298+
name
299+
instead
300+
since
301+
removed
302+
reference
303+
304+
Returns
305+
-------
306+
"""
307+
message = f"{name} is deprecated"
308+
if since:
309+
message += f" since version {since}"
310+
if removed:
311+
message += f" and will be removed in version {removed}"
312+
if instead:
313+
message += f", consider using {instead} instead"
314+
message += "."
315+
if reference:
316+
message += f" See {reference} for more information."
317+
return message
318+
319+
286320
def warn_deprecated(
287321
name: str,
288322
instead: str | None = None,
@@ -313,16 +347,13 @@ def warn_deprecated(
313347
The stacklevel kwarg passed to :func:`warnings.warn`. Defaults to 3.
314348
"""
315349
warnings.simplefilter("always", DeprecationWarning) # turn off filter
316-
message = f"{name} is deprecated"
317-
if since:
318-
message += f" since version {since}"
319-
if removed:
320-
message += f" and will be removed in version {removed}"
321-
if instead:
322-
message += f", consider using {instead} instead"
323-
message += "."
324-
if reference:
325-
message += f" See {reference} for more information."
350+
message = deprecated_message(
351+
name=name,
352+
instead=instead,
353+
since=since,
354+
removed=removed,
355+
reference=reference,
356+
)
326357

327358
warnings.warn(message, stacklevel=stacklevel, category=DeprecationWarning)
328359
warnings.simplefilter("default", DeprecationWarning) # reset filter

0 commit comments

Comments
 (0)