Source code for mini_arcade_core.utils.deprecated_decorator
"""
Deprecated utilities for the mini-arcade-core package.
"""
from __future__ import annotations
import functools
from mini_arcade_core.utils.logging import logger
[docs]
def deprecated(
reason: str | None = None,
version: str | None = None,
alternative: str | None = None,
):
"""
Mark a function as deprecated.
:param reason: Optional reason for deprecation
:type reason: str | None
:param version: Optional version when it will be removed
:type version: str | None
:param alternative: Optional alternative function to use
:type alternative: str | None
"""
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
message = f"The function {func.__name__} is deprecated"
if version:
message += f" and will be removed in version {version}"
if reason:
message += f". {reason}"
if alternative:
message += f" Use {alternative} instead."
logger.warning(message)
return func(*args, **kwargs)
return wrapper
return decorator